SpyBara
Go Premium

Documentation 2026-05-02 18:14 UTC to 2026-05-04 22:58 UTC

99 files changed +47,322 −0. View all changes and history on the product overview
2026
Sun 31 06:39 Sat 30 06:23 Fri 29 06:38 Thu 28 06:37 Wed 27 06:42 Tue 26 06:33 Sun 24 06:25 Sat 23 06:18 Fri 22 06:33 Thu 21 06:36 Wed 20 06:35 Tue 19 06:34 Mon 18 23:59 Sun 17 01:01 Fri 15 22:58 Thu 14 17:02 Wed 13 23:01 Tue 12 22:57 Mon 11 23:00 Sun 10 23:03 Sat 9 04:57 Fri 8 22:00 Thu 7 22:59 Tue 5 23:00 Mon 4 22:58 Sat 2 18:14 Fri 1 18:19

admin-setup.md +132 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Configurer Claude Code pour votre organisation

6 

7> Une carte de décision pour les administrateurs déployant Claude Code, couvrant les fournisseurs d'API, les paramètres gérés, l'application des politiques, la surveillance de l'utilisation et la gestion des données.

8 

9Claude Code applique la politique organisationnelle par le biais de paramètres gérés qui prennent précédence sur la configuration locale des développeurs. Vous livrez ces paramètres à partir de la console d'administration Claude, de votre système de gestion des appareils mobiles (MDM) ou d'un fichier sur disque. Les paramètres contrôlent les outils, commandes, serveurs et destinations réseau que Claude peut atteindre.

10 

11Cette page vous guide à travers les décisions de déploiement dans l'ordre. Chaque ligne renvoie à la section ci-dessous et à la page de référence pour ce domaine.

12 

13<Note>

14 SSO, l'approvisionnement SCIM et l'attribution de sièges sont configurés au niveau du compte Claude. Consultez le [Guide de l'administrateur Claude Enterprise](https://claude.com/resources/tutorials/claude-enterprise-administrator-guide) et [l'attribution de sièges](https://support.claude.com/en/articles/11845131-use-claude-code-with-your-team-or-enterprise-plan) pour ces étapes.

15</Note>

16 

17| Décision | Ce que vous choisissez | Référence |

18| :-------------------------------------------------------------------------------------------- | :--------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------- |

19| [Choisir votre fournisseur d'API](#choose-your-api-provider) | Où Claude Code s'authentifie et comment il est facturé | [Authentification](/fr/authentication), [Bedrock](/fr/amazon-bedrock), [Vertex AI](/fr/google-vertex-ai), [Foundry](/fr/microsoft-foundry) |

20| [Décider comment les paramètres atteignent les appareils](#decide-how-settings-reach-devices) | Comment la politique gérée atteint les machines des développeurs | [Paramètres gérés par le serveur](/fr/server-managed-settings), [Fichiers de paramètres](/fr/settings#settings-files) |

21| [Décider ce qu'il faut appliquer](#decide-what-to-enforce) | Quels outils, commandes et intégrations sont autorisés | [Permissions](/fr/permissions), [Sandboxing](/fr/sandboxing) |

22| [Configurer la visibilité de l'utilisation](#set-up-usage-visibility) | Comment vous suivez les dépenses et l'adoption | [Analytique](/fr/analytics), [Surveillance](/fr/monitoring-usage), [Coûts](/fr/costs) |

23| [Examiner la gestion des données](#review-data-handling) | Rétention des données et posture de conformité | [Utilisation des données](/fr/data-usage), [Sécurité](/fr/security) |

24 

25## Choisir votre fournisseur d'API

26 

27Claude Code se connecte à Claude par l'intermédiaire de l'un de plusieurs fournisseurs d'API. Votre choix affecte la facturation, l'authentification et la posture de conformité que vous héritez.

28 

29| Fournisseur | Choisissez ceci quand |

30| :---------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------- |

31| Claude for Teams / Enterprise | Vous voulez Claude Code et claude.ai sous un seul abonnement par siège sans infrastructure à exécuter. C'est la recommandation par défaut. |

32| Claude Console | Vous êtes orienté API ou vous voulez une facturation à l'usage |

33| Amazon Bedrock | Vous voulez hériter des contrôles de conformité et de la facturation AWS existants |

34| Google Vertex AI | Vous voulez hériter des contrôles de conformité et de la facturation GCP existants |

35| Microsoft Foundry | Vous voulez hériter des contrôles de conformité et de la facturation Azure existants |

36 

37Pour la comparaison complète des fournisseurs couvrant l'authentification, les régions et la parité des fonctionnalités, consultez l'[aperçu du déploiement en entreprise](/fr/third-party-integrations). La configuration d'authentification de chaque fournisseur se trouve dans [Authentification](/fr/authentication).

38 

39Les exigences de proxy et de pare-feu dans [Configuration réseau](/fr/network-config) s'appliquent quel que soit le fournisseur. Si vous voulez un point de terminaison unique devant plusieurs fournisseurs ou une journalisation centralisée des demandes, consultez [Passerelle LLM](/fr/llm-gateway).

40 

41## Décider comment les paramètres atteignent les appareils

42 

43Les paramètres gérés définissent une politique qui prend précédence sur la configuration locale des développeurs. Claude Code les recherche dans quatre endroits et utilise le premier qu'il trouve sur un appareil donné.

44 

45| Mécanisme | Livraison | Priorité | Plateformes |

46| :--------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :---------- | :----------------- |

47| Géré par le serveur | Console d'administration Claude.ai | Très élevée | Tous |

48| Politique plist / registre | macOS : plist `com.anthropic.claudecode`<br />Windows : `HKLM\SOFTWARE\Policies\ClaudeCode` | Élevée | macOS, Windows |

49| Géré basé sur fichier | macOS : `/Library/Application Support/ClaudeCode/managed-settings.json`<br />Linux et WSL : `/etc/claude-code/managed-settings.json`<br />Windows : `C:\Program Files\ClaudeCode\managed-settings.json` | Moyenne | Tous |

50| Registre utilisateur Windows | `HKCU\SOFTWARE\Policies\ClaudeCode` | Très basse | Windows uniquement |

51 

52Les paramètres gérés par le serveur atteignent les appareils au moment de l'authentification et s'actualisent toutes les heures pendant les sessions actives, sans infrastructure de point de terminaison. Ils nécessitent un plan Claude for Teams ou Enterprise, donc les déploiements sur d'autres fournisseurs ont besoin de l'un des mécanismes basés sur fichier ou au niveau du système d'exploitation à la place.

53 

54Si votre organisation mélange les fournisseurs, configurez les [paramètres gérés par le serveur](/fr/server-managed-settings) pour les utilisateurs de Claude.ai plus un [secours basé sur fichier ou plist/registre](/fr/settings#settings-files) afin que les autres utilisateurs reçoivent toujours la politique gérée.

55 

56Les emplacements du registre plist et HKLM fonctionnent avec n'importe quel fournisseur et résistent à la falsification car ils nécessitent des privilèges d'administrateur pour écrire. Le registre utilisateur Windows à HKCU est accessible en écriture sans élévation, donc traitez-le comme une valeur par défaut pratique plutôt que comme un canal d'application.

57 

58Par défaut, WSL lit uniquement le chemin de fichier Linux à `/etc/claude-code`. Pour étendre votre registre Windows et la politique `C:\Program Files\ClaudeCode` à WSL sur la même machine, définissez [`wslInheritsWindowsSettings: true`](/fr/settings#available-settings) dans l'une de ces sources Windows réservées aux administrateurs.

59 

60Quel que soit le mécanisme que vous choisissez, les valeurs gérées prennent précédence sur les paramètres utilisateur et projet. Les paramètres de tableau tels que `permissions.allow` et `permissions.deny` fusionnent les entrées de toutes les sources, donc les développeurs peuvent étendre les listes gérées mais pas les supprimer.

61 

62Consultez [Paramètres gérés par le serveur](/fr/server-managed-settings) et [Fichiers de paramètres et précédence](/fr/settings#settings-files).

63 

64## Décider ce qu'il faut appliquer

65 

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

67 

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

69| :----------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------- |

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

71| [Verrouillage des permissions](/fr/permissions#managed-only-settings) | Seules les règles de permission gérées s'appliquent ; désactiver `--dangerously-skip-permissions` | `allowManagedPermissionRulesOnly`, `permissions.disableBypassPermissionsMode` |

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

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

74| [Contrôle du serveur MCP](/fr/mcp#managed-mcp-configuration) | Restreindre les serveurs MCP que les utilisateurs peuvent ajouter ou connecter | `allowedMcpServers`, `deniedMcpServers`, `allowManagedMcpServersOnly` |

75| [Contrôle de la place de marché des plugins](/fr/plugin-marketplaces#managed-marketplace-restrictions) | Restreindre les sources de place de marché que les utilisateurs peuvent ajouter et installer | `strictKnownMarketplaces`, `blockedMarketplaces` |

76| [Restrictions des hooks](/fr/settings#hook-configuration) | Seuls les hooks gérés se chargent ; restreindre les URL des hooks HTTP | `allowManagedHooksOnly`, `allowedHttpHookUrls` |

77| [Plancher de version](/fr/settings) | Empêcher la mise à jour automatique d'installer en dessous d'un minimum à l'échelle de l'organisation | `minimumVersion` |

78 

79Les règles de permission et le sandboxing couvrent différentes couches. Refuser WebFetch bloque l'outil fetch de Claude, mais si Bash est autorisé, `curl` et `wget` peuvent toujours atteindre n'importe quelle URL. Le sandboxing ferme cette lacune avec une liste blanche de domaines réseau appliquée au niveau du système d'exploitation.

80 

81Pour le modèle de menace que ces contrôles défendent, consultez [Sécurité](/fr/security).

82 

83## Configurer la visibilité de l'utilisation

84 

85Choisissez la surveillance en fonction de ce que vous devez signaler.

86 

87| Capacité | Ce que vous obtenez | Disponibilité | Par où commencer |

88| :---------------------------- | :----------------------------------------------------------------- | :-------------------- | :---------------------------------------------------- |

89| Surveillance de l'utilisation | Export OpenTelemetry des sessions, outils et jetons | Tous les fournisseurs | [Surveillance de l'utilisation](/fr/monitoring-usage) |

90| Tableau de bord analytique | Métriques par utilisateur, suivi des contributions, classement | Anthropic uniquement | [Analytique](/fr/analytics) |

91| Suivi des coûts | Limites de dépenses, limites de débit et attribution d'utilisation | Anthropic uniquement | [Coûts](/fr/costs) |

92 

93Les fournisseurs cloud exposent les dépenses via AWS Cost Explorer, GCP Billing ou Azure Cost Management. Les plans Claude for Teams et Enterprise incluent un tableau de bord d'utilisation sur [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code).

94 

95## Examiner la gestion des données

96 

97Sur les plans Team, Enterprise, Claude API et fournisseur cloud, Anthropic n'entraîne pas les modèles sur votre code ou vos invites. Votre fournisseur d'API détermine la rétention et la posture de conformité.

98 

99| Sujet | Ce qu'il faut savoir | Par où commencer |

100| :---------------------------------- | :--------------------------------------------------------------------------------------------------------- | :------------------------------------------------ |

101| Politique d'utilisation des données | Ce qu'Anthropic collecte, combien de temps c'est conservé, ce qui n'est jamais utilisé pour l'entraînement | [Utilisation des données](/fr/data-usage) |

102| Rétention zéro données (ZDR) | Rien n'est stocké après la fin de la demande. Disponible sur Claude for Enterprise | [Rétention zéro données](/fr/zero-data-retention) |

103| Architecture de sécurité | Modèle réseau, chiffrement, authentification, piste d'audit | [Sécurité](/fr/security) |

104 

105Si vous avez besoin d'une journalisation d'audit au niveau des demandes ou de router le trafic par sensibilité des données, placez une [passerelle LLM](/fr/llm-gateway) entre les développeurs et votre fournisseur. Pour les exigences réglementaires et les certifications, consultez [Légal et conformité](/fr/legal-and-compliance).

106 

107## Vérifier et intégrer

108 

109Après avoir configuré les paramètres gérés, demandez à un développeur d'exécuter `/status` dans Claude Code. La sortie inclut une ligne commençant par `Enterprise managed settings` suivie de la source entre parenthèses, l'une de `(remote)`, `(plist)`, `(HKLM)`, `(HKCU)` ou `(file)`. Consultez [Vérifier les paramètres actifs](/fr/settings#verify-active-settings).

110 

111Partagez ces ressources pour aider les développeurs à démarrer :

112 

113* [Démarrage rapide](/fr/quickstart) : procédure pas à pas de la première session de l'installation au travail avec un projet

114* [Flux de travail courants](/fr/common-workflows) : modèles pour les tâches quotidiennes comme l'examen du code, la refactorisation et le débogage

115* [Claude 101](https://anthropic.skilljar.com/claude-101) et [Claude Code in Action](https://anthropic.skilljar.com/claude-code-in-action) : cours d'Anthropic Academy à votre rythme

116 

117Pour les problèmes de connexion, dirigez les développeurs vers [dépannage de l'authentification](/fr/troubleshooting#login-and-authentication). Les correctifs les plus courants sont :

118 

119* Exécuter `/logout` puis `/login` pour changer de compte

120* Exécuter `claude update` si l'option d'authentification d'entreprise est manquante

121* Redémarrer le terminal après la mise à jour

122 

123Si un développeur voit « You haven't been added to your organization yet », son siège n'inclut pas l'accès à Claude Code et doit être mis à jour dans la console d'administration.

124 

125## Étapes suivantes

126 

127Avec le fournisseur et le mécanisme de livraison choisis, passez à la configuration détaillée :

128 

129* [Paramètres gérés par le serveur](/fr/server-managed-settings) : livrer la politique gérée à partir de la console d'administration Claude

130* [Référence des paramètres](/fr/settings) : chaque clé de paramètre, emplacement de fichier et règle de précédence

131* [Amazon Bedrock](/fr/amazon-bedrock), [Google Vertex AI](/fr/google-vertex-ai), [Microsoft Foundry](/fr/microsoft-foundry) : déploiement spécifique au fournisseur

132* [Guide de l'administrateur Claude Enterprise](https://claude.com/resources/tutorials/claude-enterprise-administrator-guide) : SSO, SCIM, gestion des sièges et playbook de déploiement

Details

1> ## Documentation Index

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

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

4 

5# Utiliser les fonctionnalités de Claude Code dans le SDK

6 

7> Chargez les instructions de projet, les compétences, les hooks et autres fonctionnalités de Claude Code dans vos agents SDK.

8 

9Le SDK Agent est construit sur la même base que Claude Code, ce qui signifie que vos agents SDK ont accès aux mêmes fonctionnalités basées sur le système de fichiers : instructions de projet (`CLAUDE.md` et règles), compétences, hooks, et bien plus.

10 

11Lorsque vous omettez `settingSources`, `query()` lit les mêmes paramètres du système de fichiers que l'interface de ligne de commande Claude Code : paramètres utilisateur, projet et locaux, fichiers `CLAUDE.md`, et compétences, agents et commandes `.claude/`. Pour fonctionner sans ces éléments, passez `settingSources: []`, ce qui limite l'agent à ce que vous configurez par programmation. Les paramètres de politique gérée et la configuration globale `~/.claude.json` sont lus indépendamment de cette option. Voir [Ce que settingSources ne contrôle pas](#what-settingsources-does-not-control).

12 

13Pour une vue d'ensemble conceptuelle de ce que chaque fonctionnalité fait et quand l'utiliser, voir [Étendre Claude Code](/fr/features-overview).

14 

15## Contrôler les paramètres du système de fichiers avec settingSources

16 

17L'option des sources de paramètres ([`setting_sources`](/fr/agent-sdk/python#claude-agent-options) en Python, [`settingSources`](/fr/agent-sdk/typescript#setting-source) en TypeScript) contrôle quels paramètres basés sur le système de fichiers le SDK charge. Passez une liste explicite pour accepter des sources spécifiques, ou passez un tableau vide pour désactiver les paramètres utilisateur, projet et locaux.

18 

19Cet exemple charge à la fois les paramètres au niveau utilisateur et au niveau projet en définissant `settingSources` sur `["user", "project"]` :

20 

21<CodeGroup>

22 ```python Python theme={null}

23 from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ResultMessage

24 

25 async for message in query(

26 prompt="Help me refactor the auth module",

27 options=ClaudeAgentOptions(

28 # "user" loads from ~/.claude/, "project" loads from ./.claude/ in cwd.

29 # Together they give the agent access to CLAUDE.md, skills, hooks, and

30 # permissions from both locations.

31 setting_sources=["user", "project"],

32 allowed_tools=["Read", "Edit", "Bash"],

33 ),

34 ):

35 if isinstance(message, AssistantMessage):

36 for block in message.content:

37 if hasattr(block, "text"):

38 print(block.text)

39 if isinstance(message, ResultMessage) and message.subtype == "success":

40 print(f"\nResult: {message.result}")

41 ```

42 

43 ```typescript TypeScript theme={null}

44 import { query } from "@anthropic-ai/claude-agent-sdk";

45 

46 for await (const message of query({

47 prompt: "Help me refactor the auth module",

48 options: {

49 // "user" loads from ~/.claude/, "project" loads from ./.claude/ in cwd.

50 // Together they give the agent access to CLAUDE.md, skills, hooks, and

51 // permissions from both locations.

52 settingSources: ["user", "project"],

53 allowedTools: ["Read", "Edit", "Bash"]

54 }

55 })) {

56 if (message.type === "assistant") {

57 for (const block of message.message.content) {

58 if (block.type === "text") console.log(block.text);

59 }

60 }

61 if (message.type === "result" && message.subtype === "success") {

62 console.log(`\nResult: ${message.result}`);

63 }

64 }

65 ```

66</CodeGroup>

67 

68Chaque source charge les paramètres à partir d'un emplacement spécifique, où `<cwd>` est le répertoire de travail que vous passez via l'option `cwd` (ou le répertoire courant du processus s'il n'est pas défini). Pour la définition de type complète, voir [`SettingSource`](/fr/agent-sdk/typescript#setting-source) (TypeScript) ou [`SettingSource`](/fr/agent-sdk/python#setting-source) (Python).

69 

70| Source | Ce qu'elle charge | Emplacement |

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

72| `"project"` | CLAUDE.md du projet, `.claude/rules/*.md`, compétences du projet, hooks du projet, `settings.json` du projet | `<cwd>/.claude/` et chaque répertoire parent jusqu'à la racine du système de fichiers (arrêt quand un `.claude/` est trouvé ou qu'il n'y a plus de parents) |

73| `"user"` | CLAUDE.md utilisateur, `~/.claude/rules/*.md`, compétences utilisateur, paramètres utilisateur | `~/.claude/` |

74| `"local"` | CLAUDE.local.md (ignoré par git), `.claude/settings.local.json` | `<cwd>/` |

75 

76Omettre `settingSources` équivaut à `["user", "project", "local"]`.

77 

78L'option `cwd` détermine où le SDK recherche les paramètres du projet. Si ni `cwd` ni aucun de ses répertoires parents ne contient un dossier `.claude/`, les fonctionnalités au niveau du projet ne se chargeront pas.

79 

80### Ce que settingSources ne contrôle pas

81 

82`settingSources` couvre les paramètres utilisateur, projet et locaux. Quelques entrées sont lues indépendamment de sa valeur :

83 

84| Entrée | Comportement | Pour désactiver |

85| :----------------------------------------------------------- | :----------------------------------------- | :----------------------------------------------------------------------------------------------------------- |

86| Paramètres de politique gérée | Toujours chargés quand présents sur l'hôte | Supprimez le fichier de paramètres gérés |

87| Configuration globale `~/.claude.json` | Toujours lue | Relocalisez avec `CLAUDE_CONFIG_DIR` dans `env` |

88| Mémoire automatique à `~/.claude/projects/<project>/memory/` | Chargée par défaut dans l'invite système | Définissez `autoMemoryEnabled: false` dans les paramètres, ou `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1` dans `env` |

89 

90<Warning>

91 Ne vous fiez pas aux options par défaut de `query()` pour l'isolation multi-locataire. Parce que les entrées ci-dessus sont lues indépendamment de `settingSources`, un processus SDK peut récupérer la configuration au niveau de l'hôte et la mémoire par répertoire. Pour les déploiements multi-locataires, exécutez chaque locataire dans son propre système de fichiers et définissez `settingSources: []` plus `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1` dans `env`. Voir [Déploiement sécurisé](/fr/agent-sdk/secure-deployment).

92</Warning>

93 

94## Instructions de projet (CLAUDE.md et règles)

95 

96Les fichiers `CLAUDE.md` et les fichiers `.claude/rules/*.md` donnent à votre agent un contexte persistant sur votre projet : conventions de codage, commandes de construction, décisions architecturales et instructions. Quand `settingSources` inclut `"project"` (comme dans l'exemple ci-dessus), le SDK charge ces fichiers en contexte au démarrage de la session. L'agent suit ensuite vos conventions de projet sans que vous ayez besoin de les répéter dans chaque invite.

97 

98### Emplacements de chargement de CLAUDE.md

99 

100| Niveau | Emplacement | Quand chargé |

101| :--------------------------- | :----------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------- |

102| Projet (racine) | `<cwd>/CLAUDE.md` ou `<cwd>/.claude/CLAUDE.md` | `settingSources` inclut `"project"` |

103| Règles du projet | `<cwd>/.claude/rules/*.md` | `settingSources` inclut `"project"` |

104| Projet (répertoires parents) | Fichiers `CLAUDE.md` dans les répertoires au-dessus de `cwd` | `settingSources` inclut `"project"`, chargés au démarrage de la session |

105| Projet (répertoires enfants) | Fichiers `CLAUDE.md` dans les sous-répertoires de `cwd` | `settingSources` inclut `"project"`, chargés à la demande quand l'agent lit un fichier dans ce sous-arbre |

106| Local (ignoré par git) | `<cwd>/CLAUDE.local.md` | `settingSources` inclut `"local"` |

107| Utilisateur | `~/.claude/CLAUDE.md` | `settingSources` inclut `"user"` |

108| Règles utilisateur | `~/.claude/rules/*.md` | `settingSources` inclut `"user"` |

109 

110Tous les niveaux sont additifs : si les fichiers `CLAUDE.md` du projet et de l'utilisateur existent tous les deux, l'agent voit les deux. Il n'y a pas de règle de précédence stricte entre les niveaux ; si les instructions entrent en conflit, le résultat dépend de la façon dont Claude les interprète. Écrivez des règles sans conflit, ou énoncez explicitement la précédence dans le fichier plus spécifique (« Ces instructions de projet remplacent tout défaut au niveau utilisateur en conflit »).

111 

112<Tip>

113 Vous pouvez également injecter du contexte directement via `systemPrompt` sans utiliser les fichiers `CLAUDE.md`. Voir [Modifier les invites système](/fr/agent-sdk/modifying-system-prompts). Utilisez `CLAUDE.md` quand vous voulez que le même contexte soit partagé entre les sessions Claude Code interactives et vos agents SDK.

114</Tip>

115 

116Pour savoir comment structurer et organiser le contenu de `CLAUDE.md`, voir [Gérer la mémoire de Claude](/fr/memory).

117 

118## Compétences

119 

120Les compétences sont des fichiers markdown qui donnent à votre agent des connaissances spécialisées et des flux de travail invocables. Contrairement à `CLAUDE.md` (qui se charge à chaque session), les compétences se chargent à la demande. L'agent reçoit les descriptions des compétences au démarrage et charge le contenu complet quand c'est pertinent.

121 

122Les compétences sont découvertes à partir du système de fichiers via `settingSources`. Avec les options par défaut, les compétences utilisateur et projet se chargent automatiquement. L'outil `Skill` est activé par défaut quand vous ne spécifiez pas `allowedTools`. Si vous utilisez une liste d'autorisation `allowedTools`, incluez `"Skill"` explicitement.

123 

124<CodeGroup>

125 ```python Python theme={null}

126 from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

127 

128 # Skills in .claude/skills/ are discovered automatically

129 # when settingSources includes "project"

130 async for message in query(

131 prompt="Review this PR using our code review checklist",

132 options=ClaudeAgentOptions(

133 setting_sources=["user", "project"],

134 allowed_tools=["Skill", "Read", "Grep", "Glob"],

135 ),

136 ):

137 if isinstance(message, ResultMessage) and message.subtype == "success":

138 print(message.result)

139 ```

140 

141 ```typescript TypeScript theme={null}

142 import { query } from "@anthropic-ai/claude-agent-sdk";

143 

144 // Skills in .claude/skills/ are discovered automatically

145 // when settingSources includes "project"

146 for await (const message of query({

147 prompt: "Review this PR using our code review checklist",

148 options: {

149 settingSources: ["user", "project"],

150 allowedTools: ["Skill", "Read", "Grep", "Glob"]

151 }

152 })) {

153 if (message.type === "result" && message.subtype === "success") {

154 console.log(message.result);

155 }

156 }

157 ```

158</CodeGroup>

159 

160<Note>

161 Les compétences doivent être créées en tant qu'artefacts du système de fichiers (`.claude/skills/<name>/SKILL.md`). Le SDK n'a pas d'API programmatique pour enregistrer les compétences. Voir [Agent Skills dans le SDK](/fr/agent-sdk/skills) pour les détails complets.

162</Note>

163 

164Pour en savoir plus sur la création et l'utilisation des compétences, voir [Agent Skills dans le SDK](/fr/agent-sdk/skills).

165 

166## Hooks

167 

168Le SDK supporte deux façons de définir les hooks, et ils s'exécutent côte à côte :

169 

170* **Hooks du système de fichiers :** commandes shell définies dans `settings.json`, chargées quand `settingSources` inclut la source pertinente. Ce sont les mêmes hooks que vous configureriez pour les [sessions Claude Code interactives](/fr/hooks-guide).

171* **Hooks programmatiques :** fonctions de rappel passées directement à `query()`. Celles-ci s'exécutent dans votre processus d'application et peuvent retourner des décisions structurées. Voir [Contrôler l'exécution avec les hooks](/fr/agent-sdk/hooks).

172 

173Les deux types s'exécutent pendant le même cycle de vie des hooks. Si vous avez déjà des hooks dans le `.claude/settings.json` de votre projet et que vous définissez `settingSources: ["project"]`, ces hooks s'exécutent automatiquement dans le SDK sans configuration supplémentaire.

174 

175Les rappels de hook reçoivent l'entrée de l'outil et retournent un dictionnaire de décision. Retourner `{}` (un dictionnaire vide) signifie permettre à l'outil de procéder. Retourner `{"decision": "block", "reason": "..."}` empêche l'exécution et la raison est envoyée à Claude comme résultat de l'outil. Voir le [guide des hooks](/fr/agent-sdk/hooks) pour la signature de rappel complète et les types de retour.

176 

177<CodeGroup>

178 ```python Python theme={null}

179 from claude_agent_sdk import query, ClaudeAgentOptions, HookMatcher, ResultMessage

180 

181 

182 # PreToolUse hook callback. Positional args:

183 # input_data: HookInput dict with tool_name, tool_input, hook_event_name

184 # tool_use_id: str | None, the ID of the tool call being intercepted

185 # context: HookContext, carries session metadata

186 async def audit_bash(input_data, tool_use_id, context):

187 command = input_data.get("tool_input", {}).get("command", "")

188 if "rm -rf" in command:

189 return {"decision": "block", "reason": "Destructive command blocked"}

190 return {} # Empty dict: allow the tool to proceed

191 

192 

193 # Filesystem hooks from .claude/settings.json run automatically

194 # when settingSources loads them. You can also add programmatic hooks:

195 async for message in query(

196 prompt="Refactor the auth module",

197 options=ClaudeAgentOptions(

198 setting_sources=["project"], # Loads hooks from .claude/settings.json

199 hooks={

200 "PreToolUse": [

201 HookMatcher(matcher="Bash", hooks=[audit_bash]),

202 ]

203 },

204 ),

205 ):

206 if isinstance(message, ResultMessage) and message.subtype == "success":

207 print(message.result)

208 ```

209 

210 ```typescript TypeScript theme={null}

211 import { query, type HookInput, type HookJSONOutput } from "@anthropic-ai/claude-agent-sdk";

212 

213 // PreToolUse hook callback. HookInput is a discriminated union on

214 // hook_event_name, so narrowing on it gives TypeScript the right

215 // tool_input shape for this event.

216 const auditBash = async (input: HookInput): Promise<HookJSONOutput> => {

217 if (input.hook_event_name !== "PreToolUse") return {};

218 const toolInput = input.tool_input as { command?: string };

219 if (toolInput.command?.includes("rm -rf")) {

220 return { decision: "block", reason: "Destructive command blocked" };

221 }

222 return {}; // Empty object: allow the tool to proceed

223 };

224 

225 // Filesystem hooks from .claude/settings.json run automatically

226 // when settingSources loads them. You can also add programmatic hooks:

227 for await (const message of query({

228 prompt: "Refactor the auth module",

229 options: {

230 settingSources: ["project"], // Loads hooks from .claude/settings.json

231 hooks: {

232 PreToolUse: [{ matcher: "Bash", hooks: [auditBash] }]

233 }

234 }

235 })) {

236 if (message.type === "result" && message.subtype === "success") {

237 console.log(message.result);

238 }

239 }

240 ```

241</CodeGroup>

242 

243### Quand utiliser quel type de hook

244 

245| Type de hook | Meilleur pour |

246| :------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

247| **Système de fichiers** (`settings.json`) | Partager les hooks entre les sessions CLI et SDK. Supporte `"command"` (scripts shell), `"http"` (POST à un point de terminaison), `"mcp_tool"` (appeler l'outil d'un serveur MCP connecté), `"prompt"` (l'LLM évalue une invite), et `"agent"` (génère un agent vérificateur). Ceux-ci s'exécutent dans l'agent principal et tous les sous-agents qu'il génère. |

248| **Programmatique** (rappels dans `query()`) | Logique spécifique à l'application ; retour de décisions structurées ; intégration en processus. Limité à la session principale uniquement. |

249 

250<Note>

251 Le SDK TypeScript supporte des événements de hook supplémentaires au-delà de Python, notamment `SessionStart`, `SessionEnd`, `TeammateIdle`, et `TaskCompleted`. Voir le [guide des hooks](/fr/agent-sdk/hooks) pour le tableau complet de compatibilité des événements.

252</Note>

253 

254Pour les détails complets sur les hooks programmatiques, voir [Contrôler l'exécution avec les hooks](/fr/agent-sdk/hooks). Pour la syntaxe des hooks du système de fichiers, voir [Hooks](/fr/hooks).

255 

256## Choisir la bonne fonctionnalité

257 

258Le SDK Agent vous donne accès à plusieurs façons d'étendre le comportement de votre agent. Si vous n'êtes pas sûr de celle à utiliser, ce tableau mappe les objectifs courants à la bonne approche.

259 

260| Vous voulez... | Utiliser | Surface SDK |

261| :---------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

262| Définir les conventions de projet que votre agent suit toujours | [CLAUDE.md](/fr/memory) | `settingSources: ["project"]` le charge automatiquement |

263| Donner à l'agent du matériel de référence qu'il charge quand c'est pertinent | [Compétences](/fr/agent-sdk/skills) | `settingSources` + `allowedTools: ["Skill"]` |

264| Exécuter un flux de travail réutilisable (déployer, examiner, publier) | [Compétences invocables par l'utilisateur](/fr/agent-sdk/skills) | `settingSources` + `allowedTools: ["Skill"]` |

265| Déléguer une sous-tâche isolée à un contexte frais (recherche, examen) | [Sous-agents](/fr/agent-sdk/subagents) | Paramètre `agents` + `allowedTools: ["Agent"]` |

266| Coordonner plusieurs instances de Claude Code avec des listes de tâches partagées et la messagerie directe inter-agents | [Équipes d'agents](/fr/agent-teams) | Non configuré directement via les options SDK. Les équipes d'agents sont une fonctionnalité CLI où une session agit comme le chef d'équipe, coordonnant le travail entre les coéquipiers indépendants |

267| Exécuter une logique déterministe sur les appels d'outils (audit, blocage, transformation) | [Hooks](/fr/agent-sdk/hooks) | Paramètre `hooks` avec rappels, ou scripts shell chargés via `settingSources` |

268| Donner à Claude un accès structuré aux outils pour un service externe | [MCP](/fr/agent-sdk/mcp) | Paramètre `mcpServers` |

269 

270<Tip>

271 **Sous-agents versus équipes d'agents :** Les sous-agents sont éphémères et isolés : conversation fraîche, une tâche, résumé retourné au parent. Les équipes d'agents coordonnent plusieurs instances indépendantes de Claude Code qui partagent une liste de tâches et se envoient des messages directement. Les équipes d'agents sont une fonctionnalité CLI. Voir [Ce que les sous-agents héritent](/fr/agent-sdk/subagents#what-subagents-inherit) et la [comparaison des équipes d'agents](/fr/agent-teams#compare-with-subagents) pour les détails.

272</Tip>

273 

274Chaque fonctionnalité que vous activez ajoute à la fenêtre de contexte de votre agent. Pour les coûts par fonctionnalité et comment ces fonctionnalités se superposent, voir [Étendre Claude Code](/fr/features-overview#understand-context-costs).

275 

276## Ressources connexes

277 

278* [Étendre Claude Code](/fr/features-overview) : Vue d'ensemble conceptuelle de toutes les fonctionnalités d'extension, avec tableaux de comparaison et analyse des coûts de contexte

279* [Compétences dans le SDK](/fr/agent-sdk/skills) : Guide complet pour utiliser les compétences par programmation

280* [Sous-agents](/fr/agent-sdk/subagents) : Définir et invoquer les sous-agents pour les sous-tâches isolées

281* [Hooks](/fr/agent-sdk/hooks) : Intercepter et contrôler le comportement de l'agent aux points d'exécution clés

282* [Permissions](/fr/agent-sdk/permissions) : Contrôler l'accès aux outils avec les modes, les règles et les rappels

283* [Invites système](/fr/agent-sdk/modifying-system-prompts) : Injecter du contexte sans fichiers CLAUDE.md

agent-sdk/cost-tracking.md +263 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Suivre les coûts et l'utilisation

6 

7> Découvrez comment suivre l'utilisation des tokens, estimer les coûts et configurer la mise en cache des invites avec le Claude Agent SDK.

8 

9Le Claude Agent SDK fournit des informations détaillées sur l'utilisation des tokens pour chaque interaction avec Claude. Ce guide explique comment suivre correctement l'utilisation et comprendre les rapports de coûts, en particulier lorsqu'il s'agit d'utiliser des outils en parallèle et de conversations multi-étapes.

10 

11Pour la documentation complète de l'API, consultez la [référence du SDK TypeScript](/fr/agent-sdk/typescript) et la [référence du SDK Python](/fr/agent-sdk/python).

12 

13<Warning>

14 Les champs `total_cost_usd` et `costUSD` sont des estimations côté client, pas des données de facturation faisant autorité. Le SDK les calcule localement à partir d'une table de prix intégrée au moment de la compilation, ils peuvent donc diverger de ce que vous êtes réellement facturé lorsque :

15 

16 * les prix changent

17 * la version du SDK installée ne reconnaît pas un modèle

18 * des règles de facturation s'appliquent que le client ne peut pas modéliser

19 

20 Utilisez ces champs pour obtenir des informations de développement et un budget approximatif. Pour une facturation faisant autorité, utilisez l'[API d'utilisation et de coûts](https://platform.claude.com/docs/en/build-with-claude/usage-cost-api) ou la page Utilisation dans la [Console Claude](https://platform.claude.com/usage). Ne facturez pas les utilisateurs finaux et ne déclenchez pas de décisions financières à partir de ces champs.

21</Warning>

22 

23## Comprendre l'utilisation des tokens

24 

25Les SDK TypeScript et Python exposent les mêmes données d'utilisation avec des noms de champs différents :

26 

27* **TypeScript** fournit des ventilations de tokens par étape sur chaque message d'assistant (`message.message.id`, `message.message.usage`), le coût par modèle via `modelUsage` sur le message de résultat, et un total cumulatif sur le message de résultat.

28* **Python** fournit des ventilations de tokens par étape sur chaque message d'assistant (`message.usage`, `message.message_id`), le coût par modèle via `model_usage` sur le message de résultat, et le total accumulé sur le message de résultat (`total_cost_usd` et dictionnaire `usage`).

29 

30Les deux SDK utilisent le même modèle de coûts sous-jacent et exposent la même granularité. La différence réside dans la dénomination des champs et dans l'endroit où l'utilisation par étape est imbriquée.

31 

32Le suivi des coûts dépend de la compréhension de la façon dont le SDK délimite les données d'utilisation :

33 

34* **Appel `query()` :** une invocation de la fonction `query()` du SDK. Un seul appel peut impliquer plusieurs étapes (Claude répond, utilise des outils, obtient des résultats, répond à nouveau). Chaque appel produit un message [`result`](/fr/agent-sdk/typescript#sdk-result-message) à la fin.

35* **Étape :** un seul cycle requête/réponse dans un appel `query()`. Chaque étape produit des messages d'assistant avec l'utilisation des tokens.

36* **Session :** une série d'appels `query()` liés par un ID de session (en utilisant l'option `resume`). Chaque appel `query()` dans une session rapporte son propre coût indépendamment.

37 

38Le diagramme suivant montre le flux de messages d'un seul appel `query()`, avec l'utilisation des tokens rapportée à chaque étape et l'estimation cumulative à la fin :

39 

40<img src="https://mintcdn.com/claude-code/Dujg43sxTkuhSELI/images/agent-sdk/message-usage-flow.svg?fit=max&auto=format&n=Dujg43sxTkuhSELI&q=85&s=c542f51ff58547ef9c0e57b16d03f33c" alt="Diagramme montrant une requête produisant deux étapes de messages. L'étape 1 a quatre messages d'assistant partageant le même ID et l'utilisation (compter une fois), l'étape 2 a un message d'assistant avec un nouvel ID, et le message de résultat final affiche le total_cost_usd estimé." width="760" height="520" data-path="images/agent-sdk/message-usage-flow.svg" />

41 

42<Steps>

43 <Step title="Chaque étape produit des messages d'assistant">

44 Lorsque Claude répond, il envoie un ou plusieurs messages d'assistant. Dans TypeScript, chaque message d'assistant contient un `BetaMessage` imbriqué (accessible via `message.message`) avec un `id` et un objet [`usage`](https://platform.claude.com/docs/en/api/messages) avec des comptages de tokens (`input_tokens`, `output_tokens`). En Python, la classe de données `AssistantMessage` expose les mêmes données directement via `message.usage` et `message.message_id`. Lorsque Claude utilise plusieurs outils en un seul tour, tous les messages de ce tour partagent le même ID, donc dédupliquez par ID pour éviter le double comptage.

45 </Step>

46 

47 <Step title="Le message de résultat fournit l'estimation cumulative">

48 Lorsque l'appel `query()` se termine, le SDK émet un message de résultat avec `total_cost_usd` et `usage` cumulatif. Ceci est disponible à la fois dans TypeScript ([`SDKResultMessage`](/fr/agent-sdk/typescript#sdk-result-message)) et Python ([`ResultMessage`](/fr/agent-sdk/python#result-message)). Si vous effectuez plusieurs appels `query()` (par exemple, dans une session multi-tours), chaque résultat ne reflète que le coût de cet appel individuel. Si vous avez seulement besoin du total estimé, vous pouvez ignorer l'utilisation par étape et lire cette valeur unique.

49 </Step>

50</Steps>

51 

52## Obtenir le coût total d'une requête

53 

54Le message de résultat ([TypeScript](/fr/agent-sdk/typescript#sdk-result-message), [Python](/fr/agent-sdk/python#result-message)) marque la fin de la boucle d'agent pour un appel `query()`. Il inclut `total_cost_usd`, le coût estimé cumulatif sur toutes les étapes de cet appel. Cela fonctionne à la fois pour les résultats de succès et d'erreur. Si vous utilisez des sessions pour effectuer plusieurs appels `query()`, chaque résultat ne reflète que le coût de cet appel individuel.

55 

56Les exemples suivants itèrent sur le flux de messages d'un appel `query()` et impriment le coût total lorsque le message `result` arrive :

57 

58<CodeGroup>

59 ```typescript TypeScript theme={null}

60 import { query } from "@anthropic-ai/claude-agent-sdk";

61 

62 for await (const message of query({ prompt: "Summarize this project" })) {

63 if (message.type === "result") {

64 console.log(`Total cost: $${message.total_cost_usd}`);

65 }

66 }

67 ```

68 

69 ```python Python theme={null}

70 from claude_agent_sdk import query, ResultMessage

71 import asyncio

72 

73 

74 async def main():

75 async for message in query(prompt="Summarize this project"):

76 if isinstance(message, ResultMessage):

77 print(f"Total cost: ${message.total_cost_usd or 0}")

78 

79 

80 asyncio.run(main())

81 ```

82</CodeGroup>

83 

84## Suivre l'utilisation par étape et par modèle

85 

86Les exemples de cette section utilisent les noms de champs TypeScript. En Python, les champs équivalents sont [`AssistantMessage.usage`](/fr/agent-sdk/python#assistant-message) et `AssistantMessage.message_id` pour l'utilisation par étape, et [`ResultMessage.model_usage`](/fr/agent-sdk/python#result-message) pour les ventilations par modèle.

87 

88### Suivre l'utilisation par étape

89 

90Chaque message d'assistant contient un `BetaMessage` imbriqué (accessible via `message.message`) avec un `id` et un objet `usage` avec des comptages de tokens. Lorsque Claude utilise des outils en parallèle, plusieurs messages partagent le même `id` avec des données d'utilisation identiques. Suivez les ID que vous avez déjà comptés et ignorez les doublons pour éviter des totaux gonflés.

91 

92<Warning>

93 Les appels d'outils parallèles produisent plusieurs messages d'assistant dont le `BetaMessage` imbriqué partage le même `id` et l'utilisation identique. Dédupliquez toujours par ID pour obtenir des comptages de tokens précis par étape.

94</Warning>

95 

96L'exemple suivant accumule les tokens d'entrée et de sortie sur toutes les étapes, en comptant chaque ID de message unique une seule fois :

97 

98```typescript theme={null}

99import { query } from "@anthropic-ai/claude-agent-sdk";

100 

101const seenIds = new Set<string>();

102let totalInputTokens = 0;

103let totalOutputTokens = 0;

104 

105for await (const message of query({ prompt: "Summarize this project" })) {

106 if (message.type === "assistant") {

107 const msgId = message.message.id;

108 

109 // Parallel tool calls share the same ID, only count once

110 if (!seenIds.has(msgId)) {

111 seenIds.add(msgId);

112 totalInputTokens += message.message.usage.input_tokens;

113 totalOutputTokens += message.message.usage.output_tokens;

114 }

115 }

116}

117 

118console.log(`Steps: ${seenIds.size}`);

119console.log(`Input tokens: ${totalInputTokens}`);

120console.log(`Output tokens: ${totalOutputTokens}`);

121```

122 

123### Ventiler l'utilisation par modèle

124 

125Le message de résultat inclut [`modelUsage`](/fr/agent-sdk/typescript#model-usage), une carte du nom du modèle aux comptages de tokens et coûts par modèle. Ceci est utile lorsque vous exécutez plusieurs modèles (par exemple, Haiku pour les sous-agents et Opus pour l'agent principal) et que vous souhaitez voir où vont les tokens.

126 

127L'exemple suivant exécute une requête et imprime le coût et la ventilation des tokens pour chaque modèle utilisé :

128 

129```typescript theme={null}

130import { query } from "@anthropic-ai/claude-agent-sdk";

131 

132for await (const message of query({ prompt: "Summarize this project" })) {

133 if (message.type !== "result") continue;

134 

135 for (const [modelName, usage] of Object.entries(message.modelUsage)) {

136 console.log(`${modelName}: $${usage.costUSD.toFixed(4)}`);

137 console.log(` Input tokens: ${usage.inputTokens}`);

138 console.log(` Output tokens: ${usage.outputTokens}`);

139 console.log(` Cache read: ${usage.cacheReadInputTokens}`);

140 console.log(` Cache creation: ${usage.cacheCreationInputTokens}`);

141 }

142}

143```

144 

145## Accumuler les coûts sur plusieurs appels

146 

147Chaque appel `query()` retourne son propre `total_cost_usd`. Le SDK ne fournit pas de total au niveau de la session, donc si votre application effectue plusieurs appels `query()` (par exemple, dans une session multi-tours ou entre différents utilisateurs), accumulez les totaux vous-même.

148 

149Les exemples suivants exécutent deux appels `query()` séquentiellement, ajoutent le `total_cost_usd` de chaque appel à un total cumulatif, et impriment à la fois le coût par appel et le coût combiné :

150 

151<CodeGroup>

152 ```typescript TypeScript theme={null}

153 import { query } from "@anthropic-ai/claude-agent-sdk";

154 

155 // Track cumulative cost across multiple query() calls

156 let totalSpend = 0;

157 

158 const prompts = [

159 "Read the files in src/ and summarize the architecture",

160 "List all exported functions in src/auth.ts"

161 ];

162 

163 for (const prompt of prompts) {

164 for await (const message of query({ prompt })) {

165 if (message.type === "result") {

166 totalSpend += message.total_cost_usd;

167 console.log(`This call: $${message.total_cost_usd}`);

168 }

169 }

170 }

171 

172 console.log(`Total spend: $${totalSpend.toFixed(4)}`);

173 ```

174 

175 ```python Python theme={null}

176 from claude_agent_sdk import query, ResultMessage

177 import asyncio

178 

179 

180 async def main():

181 # Track cumulative cost across multiple query() calls

182 total_spend = 0.0

183 

184 prompts = [

185 "Read the files in src/ and summarize the architecture",

186 "List all exported functions in src/auth.ts",

187 ]

188 

189 for prompt in prompts:

190 async for message in query(prompt=prompt):

191 if isinstance(message, ResultMessage):

192 cost = message.total_cost_usd or 0

193 total_spend += cost

194 print(f"This call: ${cost}")

195 

196 print(f"Total spend: ${total_spend:.4f}")

197 

198 

199 asyncio.run(main())

200 ```

201</CodeGroup>

202 

203## Gérer les erreurs, la mise en cache et les divergences de tokens

204 

205Pour un suivi précis des coûts, tenez compte des conversations échouées, de la tarification des tokens en cache et des incohérences occasionnelles de rapports.

206 

207### Résoudre les divergences de tokens de sortie

208 

209Dans de rares cas, vous pourriez observer différentes valeurs `output_tokens` pour les messages avec le même ID. Lorsque cela se produit :

210 

2111. **Utilisez la valeur la plus élevée :** le message final d'un groupe contient généralement le total exact.

2122. **Préférez le message de résultat :** le `total_cost_usd` dans le message de résultat reflète l'estimation accumulée du SDK sur toutes les étapes, il est donc plus fiable que de sommer les valeurs par étape vous-même. C'est toujours une estimation et peut différer de votre facture réelle.

2133. **Signalez les incohérences :** déposez des problèmes sur le [référentiel GitHub Claude Code](https://github.com/anthropics/claude-code/issues).

214 

215### Suivre les coûts sur les conversations échouées

216 

217Les messages de résultat de succès et d'erreur incluent `usage` et `total_cost_usd`. Si une conversation échoue à mi-chemin, vous avez toujours consommé des tokens jusqu'au point d'échec. Lisez toujours les données de coûts du message de résultat quel que soit son `subtype`.

218 

219### Suivre les tokens en cache

220 

221Le Agent SDK utilise automatiquement la [mise en cache des invites](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) pour réduire les coûts sur le contenu répété. Vous n'avez pas besoin de configurer la mise en cache vous-même. L'objet d'utilisation inclut deux champs supplémentaires pour le suivi du cache :

222 

223* `cache_creation_input_tokens` : tokens utilisés pour créer de nouvelles entrées de cache (facturés à un taux plus élevé que les tokens d'entrée standard).

224* `cache_read_input_tokens` : tokens lus à partir des entrées de cache existantes (facturés à un taux réduit).

225 

226Suivez-les séparément de `input_tokens` pour comprendre les économies de mise en cache. Dans TypeScript, ces champs sont typés sur l'objet [`Usage`](/fr/agent-sdk/typescript#usage). En Python, ils apparaissent comme des clés dans le dictionnaire [`ResultMessage.usage`](/fr/agent-sdk/python#result-message) (par exemple, `message.usage.get("cache_read_input_tokens", 0)`).

227 

228### Prolonger le TTL du cache d'invite à une heure

229 

230Les entrées de cache écrites par le SDK utilisent un TTL de 5 minutes par défaut lorsque vous vous authentifiez avec une clé API ou que vous exécutez sur Amazon Bedrock, Google Cloud Vertex AI ou Microsoft Foundry. Si votre charge de travail exécute de nombreuses sessions courtes contre le même système d'invite et le même contexte avec des écarts plus longs que 5 minutes entre elles, le cache expire entre les sessions et chaque nouvelle session paie le prix d'entrée complet.

231 

232Pour demander un TTL d'une heure sur les écritures de cache, définissez la variable d'environnement [`ENABLE_PROMPT_CACHING_1H`](/fr/env-vars). Vous pouvez l'exporter dans votre environnement shell ou conteneur, ou la transmettre via `options.env`.

233 

234L'exemple suivant active le TTL d'une heure pour un agent s'exécutant sur Bedrock :

235 

236<CodeGroup>

237 ```python Python theme={null}

238 options = ClaudeAgentOptions(

239 env={

240 "CLAUDE_CODE_USE_BEDROCK": "1",

241 "ENABLE_PROMPT_CACHING_1H": "1",

242 },

243 )

244 ```

245 

246 ```typescript TypeScript theme={null}

247 const options = {

248 env: {

249 ...process.env,

250 CLAUDE_CODE_USE_BEDROCK: "1",

251 ENABLE_PROMPT_CACHING_1H: "1",

252 },

253 };

254 ```

255</CodeGroup>

256 

257Les écritures de cache avec un TTL d'une heure sont facturées à un taux plus élevé que les écritures de 5 minutes, donc l'activation de ceci échange un coût d'écriture plus élevé pour plus de lectures de cache. Consultez la [tarification de la mise en cache des invites](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) pour plus de détails. Les utilisateurs d'abonnement Claude reçoivent déjà automatiquement un TTL d'une heure et n'ont pas besoin de définir cette variable.

258 

259## Documentation connexe

260 

261* [Référence du SDK TypeScript](/fr/agent-sdk/typescript) - Documentation complète de l'API

262* [Aperçu du SDK](/fr/agent-sdk/overview) - Prise en main du SDK

263* [Permissions du SDK](/fr/agent-sdk/permissions) - Gestion des permissions des outils

agent-sdk/hooks.md +819 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Intercepter et contrôler le comportement des agents avec des hooks

6 

7> Interceptez et personnalisez le comportement des agents aux points d'exécution clés avec des hooks

8 

9Les hooks sont des fonctions de rappel qui exécutent votre code en réponse à des événements d'agent, comme un outil appelé, une session démarrée ou l'exécution arrêtée. Avec les hooks, vous pouvez :

10 

11* **Bloquer les opérations dangereuses** avant leur exécution, comme les commandes shell destructrices ou l'accès non autorisé aux fichiers

12* **Enregistrer et auditer** chaque appel d'outil pour la conformité, le débogage ou l'analyse

13* **Transformer les entrées et les sorties** pour nettoyer les données, injecter des identifiants ou rediriger les chemins de fichiers

14* **Exiger une approbation humaine** pour les actions sensibles comme les écritures de base de données ou les appels API

15* **Suivre le cycle de vie de la session** pour gérer l'état, nettoyer les ressources ou envoyer des notifications

16 

17Ce guide couvre le fonctionnement des hooks, comment les configurer et fournit des exemples pour les modèles courants comme bloquer les outils, modifier les entrées et transférer les notifications.

18 

19## Fonctionnement des hooks

20 

21<Steps>

22 <Step title="Un événement se déclenche">

23 Quelque chose se produit lors de l'exécution de l'agent et le SDK déclenche un événement : un outil est sur le point d'être appelé (`PreToolUse`), un outil a renvoyé un résultat (`PostToolUse`), un sous-agent a démarré ou s'est arrêté, l'agent est inactif ou l'exécution s'est terminée. Consultez la [liste complète des événements](#available-hooks).

24 </Step>

25 

26 <Step title="Le SDK collecte les hooks enregistrés">

27 Le SDK vérifie les hooks enregistrés pour ce type d'événement. Cela inclut les hooks de rappel que vous transmettez dans `options.hooks` et les hooks de commande shell à partir des fichiers de paramètres lorsque l'entrée [`settingSources`](/fr/agent-sdk/typescript#setting-source) ou [`setting_sources`](/fr/agent-sdk/python#setting-source) correspondante est activée, ce qui est le cas pour les options `query()` par défaut.

28 </Step>

29 

30 <Step title="Les matchers filtrent les hooks qui s'exécutent">

31 Si un hook a un motif [`matcher`](#matchers) (comme `"Write|Edit"`), le SDK le teste par rapport à la cible de l'événement (par exemple, le nom de l'outil). Les hooks sans matcher s'exécutent pour chaque événement de ce type.

32 </Step>

33 

34 <Step title="Les fonctions de rappel s'exécutent">

35 Chaque [fonction de rappel](#callback-functions) du hook correspondant reçoit des informations sur ce qui se passe : le nom de l'outil, ses arguments, l'ID de session et d'autres détails spécifiques à l'événement.

36 </Step>

37 

38 <Step title="Votre rappel retourne une décision">

39 Après avoir effectué toute opération (enregistrement, appels API, validation), votre rappel retourne un [objet de sortie](#outputs) qui indique à l'agent quoi faire : autoriser l'opération, la bloquer, modifier l'entrée ou injecter du contexte dans la conversation.

40 </Step>

41</Steps>

42 

43L'exemple suivant réunit ces étapes. Il enregistre un hook `PreToolUse` (étape 1) avec un matcher `"Write|Edit"` (étape 3) afin que le rappel ne se déclenche que pour les outils d'écriture de fichiers. Lorsqu'il est déclenché, le rappel reçoit l'entrée de l'outil (étape 4), vérifie si le chemin du fichier cible un fichier `.env` et retourne `permissionDecision: "deny"` pour bloquer l'opération (étape 5) :

44 

45<CodeGroup>

46 ```python Python theme={null}

47 import asyncio

48 from claude_agent_sdk import (

49 AssistantMessage,

50 ClaudeSDKClient,

51 ClaudeAgentOptions,

52 HookMatcher,

53 ResultMessage,

54 )

55 

56 

57 # Define a hook callback that receives tool call details

58 async def protect_env_files(input_data, tool_use_id, context):

59 # Extract the file path from the tool's input arguments

60 file_path = input_data["tool_input"].get("file_path", "")

61 file_name = file_path.split("/")[-1]

62 

63 # Block the operation if targeting a .env file

64 if file_name == ".env":

65 return {

66 "hookSpecificOutput": {

67 "hookEventName": input_data["hook_event_name"],

68 "permissionDecision": "deny",

69 "permissionDecisionReason": "Cannot modify .env files",

70 }

71 }

72 

73 # Return empty object to allow the operation

74 return {}

75 

76 

77 async def main():

78 options = ClaudeAgentOptions(

79 hooks={

80 # Register the hook for PreToolUse events

81 # The matcher filters to only Write and Edit tool calls

82 "PreToolUse": [HookMatcher(matcher="Write|Edit", hooks=[protect_env_files])]

83 }

84 )

85 

86 async with ClaudeSDKClient(options=options) as client:

87 await client.query("Update the database configuration")

88 async for message in client.receive_response():

89 # Filter for assistant and result messages

90 if isinstance(message, (AssistantMessage, ResultMessage)):

91 print(message)

92 

93 

94 asyncio.run(main())

95 ```

96 

97 ```typescript TypeScript theme={null}

98 import { query, HookCallback, PreToolUseHookInput } from "@anthropic-ai/claude-agent-sdk";

99 

100 // Define a hook callback with the HookCallback type

101 const protectEnvFiles: HookCallback = async (input, toolUseID, { signal }) => {

102 // Cast input to the specific hook type for type safety

103 const preInput = input as PreToolUseHookInput;

104 

105 // Cast tool_input to access its properties (typed as unknown in the SDK)

106 const toolInput = preInput.tool_input as Record<string, unknown>;

107 const filePath = toolInput?.file_path as string;

108 const fileName = filePath?.split("/").pop();

109 

110 // Block the operation if targeting a .env file

111 if (fileName === ".env") {

112 return {

113 hookSpecificOutput: {

114 hookEventName: preInput.hook_event_name,

115 permissionDecision: "deny",

116 permissionDecisionReason: "Cannot modify .env files"

117 }

118 };

119 }

120 

121 // Return empty object to allow the operation

122 return {};

123 };

124 

125 for await (const message of query({

126 prompt: "Update the database configuration",

127 options: {

128 hooks: {

129 // Register the hook for PreToolUse events

130 // The matcher filters to only Write and Edit tool calls

131 PreToolUse: [{ matcher: "Write|Edit", hooks: [protectEnvFiles] }]

132 }

133 }

134 })) {

135 // Filter for assistant and result messages

136 if (message.type === "assistant" || message.type === "result") {

137 console.log(message);

138 }

139 }

140 ```

141</CodeGroup>

142 

143## Hooks disponibles

144 

145Le SDK fournit des hooks pour différentes étapes de l'exécution de l'agent. Certains hooks sont disponibles dans les deux SDK, tandis que d'autres sont réservés à TypeScript.

146 

147| Événement Hook | SDK Python | SDK TypeScript | Ce qui le déclenche | Cas d'usage exemple |

148| -------------------- | ---------- | -------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |

149| `PreToolUse` | Oui | Oui | Demande d'appel d'outil (peut bloquer ou modifier) | Bloquer les commandes shell dangereuses |

150| `PostToolUse` | Oui | Oui | Résultat de l'exécution de l'outil | Enregistrer tous les changements de fichiers dans la piste d'audit |

151| `PostToolUseFailure` | Oui | Oui | Échec de l'exécution de l'outil | Gérer ou enregistrer les erreurs d'outil |

152| `PostToolBatch` | Non | Oui | Un lot complet d'appels d'outil se résout, une fois par lot avant l'appel du modèle suivant | Injecter des conventions une fois pour tout le lot |

153| `UserPromptSubmit` | Oui | Oui | Soumission d'invite utilisateur | Injecter du contexte supplémentaire dans les invites |

154| `Stop` | Oui | Oui | Arrêt de l'exécution de l'agent | Enregistrer l'état de la session avant la sortie |

155| `SubagentStart` | Oui | Oui | Initialisation du sous-agent | Suivre le lancement des tâches parallèles |

156| `SubagentStop` | Oui | Oui | Achèvement du sous-agent | Agréger les résultats des tâches parallèles |

157| `PreCompact` | Oui | Oui | Demande de compaction de conversation | Archiver la transcription complète avant le résumé |

158| `PermissionRequest` | Oui | Oui | La boîte de dialogue de permission s'afficherait | Gestion des permissions personnalisée |

159| `SessionStart` | Non | Oui | Initialisation de la session | Initialiser la journalisation et la télémétrie |

160| `SessionEnd` | Non | Oui | Arrêt de la session | Nettoyer les ressources temporaires |

161| `Notification` | Oui | Oui | Messages d'état de l'agent | Envoyer les mises à jour d'état de l'agent à Slack ou PagerDuty |

162| `Setup` | Non | Oui | Configuration/maintenance de la session | Exécuter les tâches d'initialisation |

163| `TeammateIdle` | Non | Oui | Le coéquipier devient inactif | Réassigner le travail ou notifier |

164| `TaskCompleted` | Non | Oui | La tâche de fond se termine | Agréger les résultats des tâches parallèles |

165| `ConfigChange` | Non | Oui | Le fichier de configuration change | Recharger les paramètres dynamiquement |

166| `WorktreeCreate` | Non | Oui | Git worktree créé | Suivre les espaces de travail isolés |

167| `WorktreeRemove` | Non | Oui | Git worktree supprimé | Nettoyer les ressources de l'espace de travail |

168 

169## Configurer les hooks

170 

171Pour configurer un hook, transmettez-le dans le champ `hooks` de vos options d'agent (`ClaudeAgentOptions` en Python, l'objet `options` en TypeScript) :

172 

173<CodeGroup>

174 ```python Python theme={null}

175 options = ClaudeAgentOptions(

176 hooks={"PreToolUse": [HookMatcher(matcher="Bash", hooks=[my_callback])]}

177 )

178 

179 async with ClaudeSDKClient(options=options) as client:

180 await client.query("Your prompt")

181 async for message in client.receive_response():

182 print(message)

183 ```

184 

185 ```typescript TypeScript theme={null}

186 for await (const message of query({

187 prompt: "Your prompt",

188 options: {

189 hooks: {

190 PreToolUse: [{ matcher: "Bash", hooks: [myCallback] }]

191 }

192 }

193 })) {

194 console.log(message);

195 }

196 ```

197</CodeGroup>

198 

199L'option `hooks` est un dictionnaire (Python) ou un objet (TypeScript) où :

200 

201* **Les clés** sont [les noms d'événements hook](#available-hooks) (par exemple, `'PreToolUse'`, `'PostToolUse'`, `'Stop'`)

202* **Les valeurs** sont des tableaux de [matchers](#matchers), chacun contenant un motif de filtre optionnel et vos [fonctions de rappel](#callback-functions)

203 

204### Matchers

205 

206Utilisez les matchers pour filtrer quand vos rappels se déclenchent. Le champ `matcher` est une chaîne regex qui correspond à une valeur différente selon le type d'événement hook. Par exemple, les hooks basés sur les outils correspondent au nom de l'outil, tandis que les hooks `Notification` correspondent au type de notification. Consultez la [référence des hooks Claude Code](/fr/hooks#matcher-patterns) pour la liste complète des valeurs de matcher pour chaque type d'événement.

207 

208| Option | Type | Par défaut | Description |

209| --------- | ---------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

210| `matcher` | `string` | `undefined` | Motif regex mis en correspondance avec le champ de filtre de l'événement. Pour les hooks d'outils, c'est le nom de l'outil. Les outils intégrés incluent `Bash`, `Read`, `Write`, `Edit`, `Glob`, `Grep`, `WebFetch`, `Agent` et d'autres (consultez [Types d'entrée d'outil](/fr/agent-sdk/typescript#tool-input-types) pour la liste complète). Les outils MCP utilisent le motif `mcp__<server>__<action>`. |

211| `hooks` | `HookCallback[]` | - | Requis. Tableau de fonctions de rappel à exécuter lorsque le motif correspond |

212| `timeout` | `number` | `60` | Délai d'expiration en secondes |

213 

214Utilisez le motif `matcher` pour cibler des outils spécifiques chaque fois que possible. Un matcher avec `'Bash'` s'exécute uniquement pour les commandes Bash, tandis que l'omission du motif exécute vos rappels pour chaque occurrence de l'événement. Notez que pour les hooks basés sur les outils, les matchers ne filtrent que par **nom d'outil**, pas par chemins de fichiers ou d'autres arguments. Pour filtrer par chemin de fichier, vérifiez `tool_input.file_path` à l'intérieur de votre rappel.

215 

216<Tip>

217 **Découvrir les noms d'outils :** Consultez [Types d'entrée d'outil](/fr/agent-sdk/typescript#tool-input-types) pour la liste complète des noms d'outils intégrés, ou ajoutez un hook sans matcher pour enregistrer tous les appels d'outils que votre session effectue.

218 

219 **Nommage des outils MCP :** Les outils MCP commencent toujours par `mcp__` suivi du nom du serveur et de l'action : `mcp__<server>__<action>`. Par exemple, si vous configurez un serveur nommé `playwright`, ses outils seront nommés `mcp__playwright__browser_screenshot`, `mcp__playwright__browser_click`, etc. Le nom du serveur provient de la clé que vous utilisez dans la configuration `mcpServers`.

220</Tip>

221 

222### Fonctions de rappel

223 

224#### Entrées

225 

226Chaque rappel hook reçoit trois arguments :

227 

228* **Données d'entrée :** un objet typé contenant les détails de l'événement. Chaque type de hook a sa propre forme d'entrée (par exemple, `PreToolUseHookInput` inclut `tool_name` et `tool_input`, tandis que `NotificationHookInput` inclut `message`). Consultez les définitions de type complètes dans les références du SDK [TypeScript](/fr/agent-sdk/typescript#hook-input) et [Python](/fr/agent-sdk/python#hook-input).

229 * Toutes les entrées de hook partagent `session_id`, `cwd` et `hook_event_name`.

230 * `agent_id` et `agent_type` sont remplis lorsque le hook se déclenche à l'intérieur d'un sous-agent. En TypeScript, ceux-ci se trouvent sur l'entrée de hook de base et sont disponibles pour tous les types de hook. En Python, ils se trouvent uniquement sur `PreToolUse`, `PostToolUse` et `PostToolUseFailure`.

231* **ID d'utilisation d'outil** (`str | None` / `string | undefined`) : met en corrélation les événements `PreToolUse` et `PostToolUse` pour le même appel d'outil.

232* **Contexte :** en TypeScript, contient une propriété `signal` (`AbortSignal`) pour l'annulation. En Python, cet argument est réservé pour une utilisation future.

233 

234#### Sorties

235 

236Votre rappel retourne un objet avec deux catégories de champs :

237 

238* **Champs de niveau supérieur** contrôlent la conversation : `systemMessage` injecte un message dans la conversation visible au modèle, et `continue` (`continue_` en Python) détermine si l'agent continue à s'exécuter après ce hook.

239* **`hookSpecificOutput`** contrôle l'opération actuelle. Les champs à l'intérieur dépendent du type d'événement hook. Pour les hooks `PreToolUse`, c'est là que vous définissez `permissionDecision` (`"allow"`, `"deny"` ou `"ask"`), `permissionDecisionReason` et `updatedInput`. Dans le SDK TypeScript, `permissionDecision` accepte également `"defer"` pour terminer la requête et [reprendre plus tard](/fr/hooks#defer-a-tool-call-for-later) ; cette valeur n'est pas disponible dans le SDK Python. Pour les hooks `PostToolUse`, vous pouvez définir `additionalContext` pour ajouter des informations au résultat de l'outil.

240 

241Retournez `{}` pour autoriser l'opération sans modifications. Les hooks de rappel du SDK utilisent le même format de sortie JSON que les [hooks de commande shell Claude Code](/fr/hooks#json-output), qui documente chaque champ et option spécifique à l'événement. Pour les définitions de type du SDK, consultez les références du SDK [TypeScript](/fr/agent-sdk/typescript#sync-hook-json-output) et [Python](/fr/agent-sdk/python#sync-hook-json-output).

242 

243<Note>

244 Lorsque plusieurs hooks ou règles de permission s'appliquent, **deny** a priorité sur **defer**, qui a priorité sur **ask**, qui a priorité sur **allow**. Si un hook retourne `deny`, l'opération est bloquée indépendamment des autres hooks.

245</Note>

246 

247#### Sortie asynchrone

248 

249Par défaut, l'agent attend que votre hook retourne avant de continuer. Si votre hook effectue un effet secondaire (enregistrement, envoi d'un webhook) et n'a pas besoin d'influencer le comportement de l'agent, vous pouvez retourner une sortie asynchrone à la place. Cela indique à l'agent de continuer immédiatement sans attendre la fin du hook :

250 

251<CodeGroup>

252 ```python Python theme={null}

253 async def async_hook(input_data, tool_use_id, context):

254 # Start a background task, then return immediately

255 asyncio.create_task(send_to_logging_service(input_data))

256 return {"async_": True, "asyncTimeout": 30000}

257 ```

258 

259 ```typescript TypeScript theme={null}

260 const asyncHook: HookCallback = async (input, toolUseID, { signal }) => {

261 // Start a background task, then return immediately

262 sendToLoggingService(input).catch(console.error);

263 return { async: true, asyncTimeout: 30000 };

264 };

265 ```

266</CodeGroup>

267 

268| Champ | Type | Description |

269| -------------- | -------- | ------------------------------------------------------------------------------------------------------------------------ |

270| `async` | `true` | Signale le mode asynchrone. L'agent continue sans attendre. En Python, utilisez `async_` pour éviter le mot-clé réservé. |

271| `asyncTimeout` | `number` | Délai d'expiration optionnel en millisecondes pour l'opération de fond |

272 

273<Note>

274 Les sorties asynchrones ne peuvent pas bloquer, modifier ou injecter du contexte dans l'opération puisque l'agent a déjà avancé. Utilisez-les uniquement pour les effets secondaires comme la journalisation, les métriques ou les notifications.

275</Note>

276 

277## Exemples

278 

279### Modifier l'entrée de l'outil

280 

281Cet exemple intercepte les appels d'outil Write et réécrit l'argument `file_path` pour ajouter `/sandbox`, redirigeant toutes les écritures de fichiers vers un répertoire en sandbox. Le rappel retourne `updatedInput` avec le chemin modifié et `permissionDecision: 'allow'` pour approuver automatiquement l'opération réécrite :

282 

283<CodeGroup>

284 ```python Python theme={null}

285 async def redirect_to_sandbox(input_data, tool_use_id, context):

286 if input_data["hook_event_name"] != "PreToolUse":

287 return {}

288 

289 if input_data["tool_name"] == "Write":

290 original_path = input_data["tool_input"].get("file_path", "")

291 return {

292 "hookSpecificOutput": {

293 "hookEventName": input_data["hook_event_name"],

294 "permissionDecision": "allow",

295 "updatedInput": {

296 **input_data["tool_input"],

297 "file_path": f"/sandbox{original_path}",

298 },

299 }

300 }

301 return {}

302 ```

303 

304 ```typescript TypeScript theme={null}

305 const redirectToSandbox: HookCallback = async (input, toolUseID, { signal }) => {

306 if (input.hook_event_name !== "PreToolUse") return {};

307 

308 const preInput = input as PreToolUseHookInput;

309 const toolInput = preInput.tool_input as Record<string, unknown>;

310 if (preInput.tool_name === "Write") {

311 const originalPath = toolInput.file_path as string;

312 return {

313 hookSpecificOutput: {

314 hookEventName: preInput.hook_event_name,

315 permissionDecision: "allow",

316 updatedInput: {

317 ...toolInput,

318 file_path: `/sandbox${originalPath}`

319 }

320 }

321 };

322 }

323 return {};

324 };

325 ```

326</CodeGroup>

327 

328<Note>

329 Lors de l'utilisation de `updatedInput`, vous devez également inclure `permissionDecision: 'allow'`. Retournez toujours un nouvel objet plutôt que de muter le `tool_input` original.

330</Note>

331 

332### Ajouter du contexte et bloquer un outil

333 

334Cet exemple bloque toute tentative d'écriture dans le répertoire `/etc` et utilise deux champs de sortie ensemble : `permissionDecision: 'deny'` arrête l'appel d'outil, tandis que `systemMessage` injecte un rappel dans la conversation afin que l'agent reçoive le contexte sur la raison du blocage de l'opération et évite de la réessayer :

335 

336<CodeGroup>

337 ```python Python theme={null}

338 async def block_etc_writes(input_data, tool_use_id, context):

339 file_path = input_data["tool_input"].get("file_path", "")

340 

341 if file_path.startswith("/etc"):

342 return {

343 # Top-level field: inject guidance into the conversation

344 "systemMessage": "Remember: system directories like /etc are protected.",

345 # hookSpecificOutput: block the operation

346 "hookSpecificOutput": {

347 "hookEventName": input_data["hook_event_name"],

348 "permissionDecision": "deny",

349 "permissionDecisionReason": "Writing to /etc is not allowed",

350 },

351 }

352 return {}

353 ```

354 

355 ```typescript TypeScript theme={null}

356 const blockEtcWrites: HookCallback = async (input, toolUseID, { signal }) => {

357 const preInput = input as PreToolUseHookInput;

358 const toolInput = preInput.tool_input as Record<string, unknown>;

359 const filePath = toolInput?.file_path as string;

360 

361 if (filePath?.startsWith("/etc")) {

362 return {

363 // Top-level field: inject guidance into the conversation

364 systemMessage: "Remember: system directories like /etc are protected.",

365 // hookSpecificOutput: block the operation

366 hookSpecificOutput: {

367 hookEventName: preInput.hook_event_name,

368 permissionDecision: "deny",

369 permissionDecisionReason: "Writing to /etc is not allowed"

370 }

371 };

372 }

373 return {};

374 };

375 ```

376</CodeGroup>

377 

378### Approuver automatiquement des outils spécifiques

379 

380Par défaut, l'agent peut demander une permission avant d'utiliser certains outils. Cet exemple approuve automatiquement les outils de système de fichiers en lecture seule (Read, Glob, Grep) en retournant `permissionDecision: 'allow'`, les laissant s'exécuter sans confirmation de l'utilisateur tout en laissant tous les autres outils soumis aux vérifications de permission normales :

381 

382<CodeGroup>

383 ```python Python theme={null}

384 async def auto_approve_read_only(input_data, tool_use_id, context):

385 if input_data["hook_event_name"] != "PreToolUse":

386 return {}

387 

388 read_only_tools = ["Read", "Glob", "Grep"]

389 if input_data["tool_name"] in read_only_tools:

390 return {

391 "hookSpecificOutput": {

392 "hookEventName": input_data["hook_event_name"],

393 "permissionDecision": "allow",

394 "permissionDecisionReason": "Read-only tool auto-approved",

395 }

396 }

397 return {}

398 ```

399 

400 ```typescript TypeScript theme={null}

401 const autoApproveReadOnly: HookCallback = async (input, toolUseID, { signal }) => {

402 if (input.hook_event_name !== "PreToolUse") return {};

403 

404 const preInput = input as PreToolUseHookInput;

405 const readOnlyTools = ["Read", "Glob", "Grep"];

406 if (readOnlyTools.includes(preInput.tool_name)) {

407 return {

408 hookSpecificOutput: {

409 hookEventName: preInput.hook_event_name,

410 permissionDecision: "allow",

411 permissionDecisionReason: "Read-only tool auto-approved"

412 }

413 };

414 }

415 return {};

416 };

417 ```

418</CodeGroup>

419 

420### Chaîner plusieurs hooks

421 

422Les hooks s'exécutent dans l'ordre dans lequel ils apparaissent dans le tableau. Gardez chaque hook concentré sur une seule responsabilité et chaînez plusieurs hooks pour une logique complexe :

423 

424<CodeGroup>

425 ```python Python theme={null}

426 options = ClaudeAgentOptions(

427 hooks={

428 "PreToolUse": [

429 HookMatcher(hooks=[rate_limiter]), # First: check rate limits

430 HookMatcher(hooks=[authorization_check]), # Second: verify permissions

431 HookMatcher(hooks=[input_sanitizer]), # Third: sanitize inputs

432 HookMatcher(hooks=[audit_logger]), # Last: log the action

433 ]

434 }

435 )

436 ```

437 

438 ```typescript TypeScript theme={null}

439 const options = {

440 hooks: {

441 PreToolUse: [

442 { hooks: [rateLimiter] }, // First: check rate limits

443 { hooks: [authorizationCheck] }, // Second: verify permissions

444 { hooks: [inputSanitizer] }, // Third: sanitize inputs

445 { hooks: [auditLogger] } // Last: log the action

446 ]

447 }

448 };

449 ```

450</CodeGroup>

451 

452### Filtrer avec des matchers regex

453 

454Utilisez des motifs regex pour correspondre à plusieurs outils. Cet exemple enregistre trois matchers avec des portées différentes : le premier déclenche `file_security_hook` uniquement pour les outils de modification de fichiers, le second déclenche `mcp_audit_hook` pour tout outil MCP (outils dont les noms commencent par `mcp__`), et le troisième déclenche `global_logger` pour chaque appel d'outil indépendamment du nom :

455 

456<CodeGroup>

457 ```python Python theme={null}

458 options = ClaudeAgentOptions(

459 hooks={

460 "PreToolUse": [

461 # Match file modification tools

462 HookMatcher(matcher="Write|Edit|Delete", hooks=[file_security_hook]),

463 # Match all MCP tools

464 HookMatcher(matcher="^mcp__", hooks=[mcp_audit_hook]),

465 # Match everything (no matcher)

466 HookMatcher(hooks=[global_logger]),

467 ]

468 }

469 )

470 ```

471 

472 ```typescript TypeScript theme={null}

473 const options = {

474 hooks: {

475 PreToolUse: [

476 // Match file modification tools

477 { matcher: "Write|Edit|Delete", hooks: [fileSecurityHook] },

478 

479 // Match all MCP tools

480 { matcher: "^mcp__", hooks: [mcpAuditHook] },

481 

482 // Match everything (no matcher)

483 { hooks: [globalLogger] }

484 ]

485 }

486 };

487 ```

488</CodeGroup>

489 

490### Suivre l'activité des sous-agents

491 

492Utilisez les hooks `SubagentStop` pour surveiller quand les sous-agents terminent leur travail. Consultez le type d'entrée complet dans les références du SDK [TypeScript](/fr/agent-sdk/typescript#hook-input) et [Python](/fr/agent-sdk/python#hook-input). Cet exemple enregistre un résumé chaque fois qu'un sous-agent se termine :

493 

494<CodeGroup>

495 ```python Python theme={null}

496 async def subagent_tracker(input_data, tool_use_id, context):

497 # Log subagent details when it finishes

498 print(f"[SUBAGENT] Completed: {input_data['agent_id']}")

499 print(f" Transcript: {input_data['agent_transcript_path']}")

500 print(f" Tool use ID: {tool_use_id}")

501 print(f" Stop hook active: {input_data.get('stop_hook_active')}")

502 return {}

503 

504 

505 options = ClaudeAgentOptions(

506 hooks={"SubagentStop": [HookMatcher(hooks=[subagent_tracker])]}

507 )

508 ```

509 

510 ```typescript TypeScript theme={null}

511 import { HookCallback, SubagentStopHookInput } from "@anthropic-ai/claude-agent-sdk";

512 

513 const subagentTracker: HookCallback = async (input, toolUseID, { signal }) => {

514 // Cast to SubagentStopHookInput to access subagent-specific fields

515 const subInput = input as SubagentStopHookInput;

516 

517 // Log subagent details when it finishes

518 console.log(`[SUBAGENT] Completed: ${subInput.agent_id}`);

519 console.log(` Transcript: ${subInput.agent_transcript_path}`);

520 console.log(` Tool use ID: ${toolUseID}`);

521 console.log(` Stop hook active: ${subInput.stop_hook_active}`);

522 return {};

523 };

524 

525 const options = {

526 hooks: {

527 SubagentStop: [{ hooks: [subagentTracker] }]

528 }

529 };

530 ```

531</CodeGroup>

532 

533### Effectuer des requêtes HTTP à partir des hooks

534 

535Les hooks peuvent effectuer des opérations asynchrones comme les requêtes HTTP. Capturez les erreurs à l'intérieur de votre hook au lieu de les laisser se propager, car une exception non gérée peut interrompre l'agent.

536 

537Cet exemple envoie un webhook après chaque exécution d'outil, enregistrant quel outil a été exécuté et quand. Le hook capture les erreurs afin qu'un webhook échoué n'interrompe pas l'agent :

538 

539<CodeGroup>

540 ```python Python theme={null}

541 import asyncio

542 import json

543 import urllib.request

544 from datetime import datetime

545 

546 

547 def _send_webhook(tool_name):

548 """Synchronous helper that POSTs tool usage data to an external webhook."""

549 data = json.dumps(

550 {

551 "tool": tool_name,

552 "timestamp": datetime.now().isoformat(),

553 }

554 ).encode()

555 req = urllib.request.Request(

556 "https://api.example.com/webhook",

557 data=data,

558 headers={"Content-Type": "application/json"},

559 method="POST",

560 )

561 urllib.request.urlopen(req)

562 

563 

564 async def webhook_notifier(input_data, tool_use_id, context):

565 # Only fire after a tool completes (PostToolUse), not before

566 if input_data["hook_event_name"] != "PostToolUse":

567 return {}

568 

569 try:

570 # Run the blocking HTTP call in a thread to avoid blocking the event loop

571 await asyncio.to_thread(_send_webhook, input_data["tool_name"])

572 except Exception as e:

573 # Log the error but don't raise. A failed webhook shouldn't stop the agent

574 print(f"Webhook request failed: {e}")

575 

576 return {}

577 ```

578 

579 ```typescript TypeScript theme={null}

580 import { query, HookCallback, PostToolUseHookInput } from "@anthropic-ai/claude-agent-sdk";

581 

582 const webhookNotifier: HookCallback = async (input, toolUseID, { signal }) => {

583 // Only fire after a tool completes (PostToolUse), not before

584 if (input.hook_event_name !== "PostToolUse") return {};

585 

586 try {

587 await fetch("https://api.example.com/webhook", {

588 method: "POST",

589 headers: { "Content-Type": "application/json" },

590 body: JSON.stringify({

591 tool: (input as PostToolUseHookInput).tool_name,

592 timestamp: new Date().toISOString()

593 }),

594 // Pass signal so the request cancels if the hook times out

595 signal

596 });

597 } catch (error) {

598 // Handle cancellation separately from other errors

599 if (error instanceof Error && error.name === "AbortError") {

600 console.log("Webhook request cancelled");

601 }

602 // Don't re-throw. A failed webhook shouldn't stop the agent

603 }

604 

605 return {};

606 };

607 

608 // Register as a PostToolUse hook

609 for await (const message of query({

610 prompt: "Refactor the auth module",

611 options: {

612 hooks: {

613 PostToolUse: [{ hooks: [webhookNotifier] }]

614 }

615 }

616 })) {

617 console.log(message);

618 }

619 ```

620</CodeGroup>

621 

622### Transférer les notifications à Slack

623 

624Utilisez les hooks `Notification` pour recevoir les notifications système de l'agent et les transférer vers des services externes. Les notifications se déclenchent pour des types d'événements spécifiques : `permission_prompt` (Claude a besoin d'une permission), `idle_prompt` (Claude attend une entrée), `auth_success` (authentification terminée) et `elicitation_dialog` (Claude invite l'utilisateur). Chaque notification inclut un champ `message` avec une description lisible par l'homme et optionnellement un `title`.

625 

626Cet exemple transfère chaque notification à un canal Slack. Il nécessite une [URL de webhook entrant Slack](https://api.slack.com/messaging/webhooks), que vous créez en ajoutant une application à votre espace de travail Slack et en activant les webhooks entrants :

627 

628<CodeGroup>

629 ```python Python theme={null}

630 import asyncio

631 import json

632 import urllib.request

633 

634 from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions, HookMatcher

635 

636 

637 def _send_slack_notification(message):

638 """Synchronous helper that sends a message to Slack via incoming webhook."""

639 data = json.dumps({"text": f"Agent status: {message}"}).encode()

640 req = urllib.request.Request(

641 "https://hooks.slack.com/services/YOUR/WEBHOOK/URL",

642 data=data,

643 headers={"Content-Type": "application/json"},

644 method="POST",

645 )

646 urllib.request.urlopen(req)

647 

648 

649 async def notification_handler(input_data, tool_use_id, context):

650 try:

651 # Run the blocking HTTP call in a thread to avoid blocking the event loop

652 await asyncio.to_thread(_send_slack_notification, input_data.get("message", ""))

653 except Exception as e:

654 print(f"Failed to send notification: {e}")

655 

656 # Return empty object. Notification hooks don't modify agent behavior

657 return {}

658 

659 

660 async def main():

661 options = ClaudeAgentOptions(

662 hooks={

663 # Register the hook for Notification events (no matcher needed)

664 "Notification": [HookMatcher(hooks=[notification_handler])],

665 },

666 )

667 

668 async with ClaudeSDKClient(options=options) as client:

669 await client.query("Analyze this codebase")

670 async for message in client.receive_response():

671 print(message)

672 

673 

674 asyncio.run(main())

675 ```

676 

677 ```typescript TypeScript theme={null}

678 import { query, HookCallback, NotificationHookInput } from "@anthropic-ai/claude-agent-sdk";

679 

680 // Define a hook callback that sends notifications to Slack

681 const notificationHandler: HookCallback = async (input, toolUseID, { signal }) => {

682 // Cast to NotificationHookInput to access the message field

683 const notification = input as NotificationHookInput;

684 

685 try {

686 // POST the notification message to a Slack incoming webhook

687 await fetch("https://hooks.slack.com/services/YOUR/WEBHOOK/URL", {

688 method: "POST",

689 headers: { "Content-Type": "application/json" },

690 body: JSON.stringify({

691 text: `Agent status: ${notification.message}`

692 }),

693 // Pass signal so the request cancels if the hook times out

694 signal

695 });

696 } catch (error) {

697 if (error instanceof Error && error.name === "AbortError") {

698 console.log("Notification cancelled");

699 } else {

700 console.error("Failed to send notification:", error);

701 }

702 }

703 

704 // Return empty object. Notification hooks don't modify agent behavior

705 return {};

706 };

707 

708 // Register the hook for Notification events (no matcher needed)

709 for await (const message of query({

710 prompt: "Analyze this codebase",

711 options: {

712 hooks: {

713 Notification: [{ hooks: [notificationHandler] }]

714 }

715 }

716 })) {

717 console.log(message);

718 }

719 ```

720</CodeGroup>

721 

722## Corriger les problèmes courants

723 

724### Hook ne se déclenche pas

725 

726* Vérifiez que le nom de l'événement hook est correct et sensible à la casse (`PreToolUse`, pas `preToolUse`)

727* Vérifiez que votre motif matcher correspond exactement au nom de l'outil

728* Assurez-vous que le hook se trouve sous le type d'événement correct dans `options.hooks`

729* Pour les hooks non basés sur les outils comme `Stop` et `SubagentStop`, les matchers correspondent à des champs différents (consultez [motifs matcher](/fr/hooks#matcher-patterns))

730* Les hooks peuvent ne pas se déclencher lorsque l'agent atteint la limite [`max_turns`](/fr/agent-sdk/python#claude-agent-options) car la session se termine avant que les hooks puissent s'exécuter

731 

732### Matcher ne filtre pas comme prévu

733 

734Les matchers ne correspondent qu'aux **noms d'outils**, pas aux chemins de fichiers ou à d'autres arguments. Pour filtrer par chemin de fichier, vérifiez `tool_input.file_path` à l'intérieur de votre hook :

735 

736```typescript theme={null}

737const myHook: HookCallback = async (input, toolUseID, { signal }) => {

738 const preInput = input as PreToolUseHookInput;

739 const toolInput = preInput.tool_input as Record<string, unknown>;

740 const filePath = toolInput?.file_path as string;

741 if (!filePath?.endsWith(".md")) return {}; // Skip non-markdown files

742 // Process markdown files...

743 return {};

744};

745```

746 

747### Délai d'expiration du hook

748 

749* Augmentez la valeur `timeout` dans la configuration `HookMatcher`

750* Utilisez le `AbortSignal` du troisième argument de rappel pour gérer l'annulation correctement en TypeScript

751 

752### Outil bloqué de manière inattendue

753 

754* Vérifiez tous les hooks `PreToolUse` pour les retours `permissionDecision: 'deny'`

755* Ajoutez la journalisation à vos hooks pour voir quel `permissionDecisionReason` ils retournent

756* Vérifiez que les motifs matcher ne sont pas trop larges (un matcher vide correspond à tous les outils)

757 

758### Entrée modifiée non appliquée

759 

760* Assurez-vous que `updatedInput` se trouve à l'intérieur de `hookSpecificOutput`, pas au niveau supérieur :

761 

762 ```typescript theme={null}

763 return {

764 hookSpecificOutput: {

765 hookEventName: "PreToolUse",

766 permissionDecision: "allow",

767 updatedInput: { command: "new command" }

768 }

769 };

770 ```

771 

772* Vous devez également retourner `permissionDecision: 'allow'` pour que la modification d'entrée prenne effet

773 

774* Incluez `hookEventName` dans `hookSpecificOutput` pour identifier le type de hook pour lequel la sortie est destinée

775 

776### Hooks de session non disponibles en Python

777 

778`SessionStart` et `SessionEnd` peuvent être enregistrés en tant que hooks de rappel du SDK en TypeScript, mais ne sont pas disponibles dans le SDK Python (`HookEvent` les omet). En Python, ils ne sont disponibles que comme [hooks de commande shell](/fr/hooks#hook-events) définis dans les fichiers de paramètres (par exemple, `.claude/settings.json`). Pour charger les hooks de commande shell à partir de votre application SDK, incluez la source de paramètre appropriée avec [`setting_sources`](/fr/agent-sdk/python#setting-source) ou [`settingSources`](/fr/agent-sdk/typescript#setting-source) :

779 

780<CodeGroup>

781 ```python Python theme={null}

782 options = ClaudeAgentOptions(

783 setting_sources=["project"], # Loads .claude/settings.json including hooks

784 )

785 ```

786 

787 ```typescript TypeScript theme={null}

788 const options = {

789 settingSources: ["project"] // Loads .claude/settings.json including hooks

790 };

791 ```

792</CodeGroup>

793 

794Pour exécuter la logique d'initialisation en tant que rappel du SDK Python à la place, utilisez le premier message de `client.receive_response()` comme déclencheur.

795 

796### Les invites de permission des sous-agents se multiplient

797 

798Lors du lancement de plusieurs sous-agents, chacun peut demander des permissions séparément. Les sous-agents n'héritent pas automatiquement des permissions de l'agent parent. Pour éviter les invites répétées, utilisez les hooks `PreToolUse` pour approuver automatiquement des outils spécifiques, ou configurez des règles de permission qui s'appliquent aux sessions de sous-agent.

799 

800### Boucles de hook récursives avec des sous-agents

801 

802Un hook `UserPromptSubmit` qui lance des sous-agents peut créer des boucles infinies si ces sous-agents déclenchent le même hook. Pour éviter cela :

803 

804* Vérifiez un indicateur de sous-agent dans l'entrée du hook avant de lancer

805* Utilisez une variable partagée ou un état de session pour suivre si vous êtes déjà à l'intérieur d'un sous-agent

806* Limitez les hooks pour qu'ils s'exécutent uniquement pour la session d'agent de niveau supérieur

807 

808### systemMessage n'apparaît pas dans la sortie

809 

810Le champ `systemMessage` ajoute du contexte à la conversation que le modèle voit, mais il peut ne pas apparaître dans tous les modes de sortie du SDK. Si vous avez besoin de faire apparaître les décisions de hook à votre application, enregistrez-les séparément ou utilisez un canal de sortie dédié.

811 

812## Ressources connexes

813 

814* [Référence des hooks Claude Code](/fr/hooks) : schémas JSON d'entrée/sortie complets, documentation des événements et motifs matcher

815* [Guide des hooks Claude Code](/fr/hooks-guide) : exemples de hooks de commande shell et procédures pas à pas

816* [Référence du SDK TypeScript](/fr/agent-sdk/typescript) : types de hook, définitions d'entrée/sortie et options de configuration

817* [Référence du SDK Python](/fr/agent-sdk/python) : types de hook, définitions d'entrée/sortie et options de configuration

818* [Permissions](/fr/agent-sdk/permissions) : contrôlez ce que votre agent peut faire

819* [Outils personnalisés](/fr/agent-sdk/custom-tools) : créez des outils pour étendre les capacités de l'agent

agent-sdk/hosting.md +142 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Héberger l'Agent SDK

6 

7> Déployer et héberger Claude Agent SDK dans des environnements de production

8 

9Le Claude Agent SDK diffère des API LLM sans état traditionnelles en ce qu'il maintient l'état conversationnel et exécute des commandes dans un environnement persistant. Ce guide couvre l'architecture, les considérations d'hébergement et les meilleures pratiques pour déployer des agents basés sur le SDK en production.

10 

11<Info>

12 Pour le renforcement de la sécurité au-delà du sandboxing basique (y compris les contrôles réseau, la gestion des identifiants et les options d'isolation), voir [Déploiement sécurisé](/fr/agent-sdk/secure-deployment).

13</Info>

14 

15## Exigences d'hébergement

16 

17### Sandboxing basé sur des conteneurs

18 

19Pour la sécurité et l'isolation, le SDK doit s'exécuter dans un environnement de conteneur en sandbox. Cela fournit l'isolation des processus, les limites de ressources, le contrôle réseau et les systèmes de fichiers éphémères.

20 

21Le SDK prend également en charge la [configuration de sandbox programmatique](/fr/agent-sdk/typescript#sandbox-settings) pour l'exécution de commandes.

22 

23### Configuration requise du système

24 

25Chaque instance du SDK nécessite :

26 

27* **Dépendances d'exécution**

28 * Python 3.10+ pour le SDK Python, ou Node.js 18+ pour le SDK TypeScript

29 * Les deux packages SDK incluent un binaire Claude Code natif pour la plateforme hôte, donc aucune installation séparée de Claude Code ou Node.js n'est nécessaire pour le CLI généré

30 

31* **Allocation de ressources**

32 * Recommandé : 1 GiB de RAM, 5 GiB de disque et 1 CPU (ajustez cela en fonction de votre tâche selon les besoins)

33 

34* **Accès réseau**

35 * HTTPS sortant vers `api.anthropic.com`

36 * Optionnel : Accès aux serveurs MCP ou aux outils externes

37 

38## Comprendre l'architecture du SDK

39 

40Contrairement aux appels API sans état, le Claude Agent SDK fonctionne comme un **processus de longue durée** qui :

41 

42* **Exécute des commandes** dans un environnement shell persistant

43* **Gère les opérations de fichiers** dans un répertoire de travail

44* **Gère l'exécution des outils** avec le contexte des interactions précédentes

45 

46## Options de fournisseur de sandbox

47 

48Plusieurs fournisseurs se spécialisent dans les environnements de conteneurs sécurisés pour l'exécution de code IA :

49 

50* **[Modal Sandbox](https://modal.com/docs/guide/sandbox)** - [implémentation de démonstration](https://modal.com/docs/examples/claude-slack-gif-creator)

51* **[Cloudflare Sandboxes](https://github.com/cloudflare/sandbox-sdk)**

52* **[Daytona](https://www.daytona.io/)**

53* **[E2B](https://e2b.dev/)**

54* **[Fly Machines](https://fly.io/docs/machines/)**

55* **[Vercel Sandbox](https://vercel.com/docs/functions/sandbox)**

56 

57Pour les options auto-hébergées (Docker, gVisor, Firecracker) et la configuration détaillée de l'isolation, voir [Technologies d'isolation](/fr/agent-sdk/secure-deployment#isolation-technologies).

58 

59## Modèles de déploiement en production

60 

61### Modèle 1 : Sessions éphémères

62 

63Créez un nouveau conteneur pour chaque tâche utilisateur, puis détruisez-le une fois terminé.

64 

65Idéal pour les tâches ponctuelles, l'utilisateur peut toujours interagir avec l'IA pendant que la tâche se termine, mais une fois terminée, le conteneur est détruit.

66 

67**Exemples :**

68 

69* Enquête et correction de bogues : Déboguer et résoudre un problème spécifique avec le contexte pertinent

70* Traitement des factures : Extraire et structurer les données des reçus/factures pour les systèmes comptables

71* Tâches de traduction : Traduire des documents ou des lots de contenu entre les langues

72* Traitement d'images/vidéos : Appliquer des transformations, des optimisations ou extraire des métadonnées à partir de fichiers médias

73 

74### Modèle 2 : Sessions de longue durée

75 

76Maintenir des instances de conteneurs persistantes pour les tâches de longue durée. Souvent, exécuter *plusieurs* processus Claude Agent à l'intérieur du conteneur en fonction de la demande.

77 

78Idéal pour les agents proactifs qui agissent sans l'entrée de l'utilisateur, les agents qui servent du contenu ou les agents qui traitent de grandes quantités de messages.

79 

80**Exemples :**

81 

82* Agent de messagerie : Surveille les e-mails entrants et trie, répond ou prend des mesures de manière autonome en fonction du contenu

83* Générateur de sites : Héberge des sites Web personnalisés par utilisateur avec des capacités d'édition en direct servies via les ports du conteneur

84* Chatbots haute fréquence : Gère les flux de messages continus à partir de plateformes comme Slack où les temps de réponse rapides sont critiques

85 

86### Modèle 3 : Sessions hybrides

87 

88Conteneurs éphémères qui sont hydratés avec l'historique et l'état, possiblement à partir d'une base de données ou des fonctionnalités de reprise de session du SDK.

89 

90Idéal pour les conteneurs avec une interaction intermittente de l'utilisateur qui lance le travail et s'arrête lorsque le travail est terminé mais peut être continué.

91 

92**Exemples :**

93 

94* Gestionnaire de projets personnels : Aide à gérer les projets en cours avec des vérifications intermittentes, maintient le contexte des tâches, des décisions et de la progression

95* Recherche approfondie : Mène des tâches de recherche de plusieurs heures, enregistre les résultats et reprend l'enquête lorsque l'utilisateur revient

96* Agent d'assistance client : Gère les tickets d'assistance qui s'étendent sur plusieurs interactions, charge l'historique des tickets et le contexte client

97 

98### Modèle 4 : Conteneurs uniques

99 

100Exécutez plusieurs processus Claude Agent SDK dans un conteneur global unique.

101 

102Idéal pour les agents qui doivent collaborer étroitement ensemble. C'est probablement le modèle le moins populaire car vous devrez empêcher les agents de se réécrire mutuellement.

103 

104**Exemples :**

105 

106* **Simulations** : Agents qui interagissent les uns avec les autres dans des simulations telles que des jeux vidéo.

107 

108## FAQ

109 

110### Comment communiquer avec mes sandboxes ?

111 

112Lors de l'hébergement dans des conteneurs, exposez les ports pour communiquer avec vos instances SDK. Votre application peut exposer des points de terminaison HTTP/WebSocket pour les clients externes tandis que le SDK s'exécute en interne dans le conteneur.

113 

114### Quel est le coût d'hébergement d'un conteneur ?

115 

116Le coût dominant de la fourniture d'agents est les jetons ; les conteneurs varient en fonction de ce que vous provisionnez, mais un coût minimum est d'environ 5 cents par heure d'exécution.

117 

118### Quand dois-je arrêter les conteneurs inactifs par rapport à les garder actifs ?

119 

120Cela dépend probablement du fournisseur, différents fournisseurs de sandbox vous permettront de définir différents critères pour les délais d'inactivité après lesquels un sandbox pourrait s'arrêter.

121Vous voudrez ajuster ce délai d'expiration en fonction de la fréquence à laquelle vous pensez que la réponse de l'utilisateur pourrait se produire.

122 

123### À quelle fréquence dois-je mettre à jour le CLI Claude Code ?

124 

125Le CLI Claude Code est versionné avec semver, donc tout changement de rupture sera versionné.

126 

127### Comment surveiller la santé des conteneurs et les performances des agents ?

128 

129Puisque les conteneurs sont juste des serveurs, la même infrastructure de journalisation que vous utilisez pour le backend fonctionnera pour les conteneurs.

130 

131### Combien de temps une session d'agent peut-elle s'exécuter avant expiration ?

132 

133Une session d'agent n'expirera pas, mais envisagez de définir une propriété « maxTurns » pour empêcher Claude de se retrouver bloqué dans une boucle.

134 

135## Étapes suivantes

136 

137* [Déploiement sécurisé](/fr/agent-sdk/secure-deployment) - Contrôles réseau, gestion des identifiants et renforcement de l'isolation

138* [SDK TypeScript - Paramètres de sandbox](/fr/agent-sdk/typescript#sandbox-settings) - Configurer le sandbox par programmation

139* [Guide des sessions](/fr/agent-sdk/sessions) - En savoir plus sur la gestion des sessions

140* [Permissions](/fr/agent-sdk/permissions) - Configurer les permissions des outils

141* [Suivi des coûts](/fr/agent-sdk/cost-tracking) - Surveiller l'utilisation de l'API

142* [Intégration MCP](/fr/agent-sdk/mcp) - Étendre avec des outils personnalisés

agent-sdk/overview.md +607 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Présentation du SDK Agent

6 

7> Créez des agents IA de production avec Claude Code en tant que bibliothèque

8 

9<Note>

10 Le SDK Claude Code a été renommé en SDK Claude Agent. Si vous migrez depuis l'ancien SDK, consultez le [Guide de migration](/fr/agent-sdk/migration-guide).

11</Note>

12 

13Créez des agents IA qui lisent autonomement les fichiers, exécutent des commandes, recherchent sur le web, modifient le code, et bien plus. Le SDK Agent vous offre les mêmes outils, boucle d'agent et gestion du contexte qui alimentent Claude Code, programmables en Python et TypeScript.

14 

15<Note>

16 Opus 4.7 (`claude-opus-4-7`) nécessite le SDK Agent v0.2.111 ou ultérieur. Si vous voyez une erreur API `thinking.type.enabled`, consultez [Dépannage](/fr/agent-sdk/quickstart#troubleshooting).

17</Note>

18 

19<CodeGroup>

20 ```python Python theme={null}

21 import asyncio

22 from claude_agent_sdk import query, ClaudeAgentOptions

23 

24 

25 async def main():

26 async for message in query(

27 prompt="Find and fix the bug in auth.py",

28 options=ClaudeAgentOptions(allowed_tools=["Read", "Edit", "Bash"]),

29 ):

30 print(message) # Claude reads the file, finds the bug, edits it

31 

32 

33 asyncio.run(main())

34 ```

35 

36 ```typescript TypeScript theme={null}

37 import { query } from "@anthropic-ai/claude-agent-sdk";

38 

39 for await (const message of query({

40 prompt: "Find and fix the bug in auth.ts",

41 options: { allowedTools: ["Read", "Edit", "Bash"] }

42 })) {

43 console.log(message); // Claude reads the file, finds the bug, edits it

44 }

45 ```

46</CodeGroup>

47 

48Le SDK Agent inclut des outils intégrés pour lire les fichiers, exécuter des commandes et modifier le code, afin que votre agent puisse commencer à travailler immédiatement sans que vous ayez besoin d'implémenter l'exécution des outils. Plongez dans le guide de démarrage rapide ou explorez des agents réels construits avec le SDK :

49 

50<CardGroup cols={2}>

51 <Card title="Guide de démarrage rapide" icon="play" href="/fr/agent-sdk/quickstart">

52 Créez un agent de correction de bugs en quelques minutes

53 </Card>

54 

55 <Card title="Agents d'exemple" icon="star" href="https://github.com/anthropics/claude-agent-sdk-demos">

56 Assistant e-mail, agent de recherche, et bien plus

57 </Card>

58</CardGroup>

59 

60## Commencer

61 

62<Steps>

63 <Step title="Installer le SDK">

64 <Tabs>

65 <Tab title="TypeScript">

66 ```bash theme={null}

67 npm install @anthropic-ai/claude-agent-sdk

68 ```

69 </Tab>

70 

71 <Tab title="Python">

72 ```bash theme={null}

73 pip install claude-agent-sdk

74 ```

75 </Tab>

76 </Tabs>

77 

78 <Note>

79 Le SDK TypeScript regroupe un binaire Claude Code natif pour votre plateforme en tant que dépendance optionnelle, vous n'avez donc pas besoin d'installer Claude Code séparément.

80 </Note>

81 </Step>

82 

83 <Step title="Définir votre clé API">

84 Obtenez une clé API à partir de la [Console](https://platform.claude.com/), puis définissez-la comme variable d'environnement :

85 

86 ```bash theme={null}

87 export ANTHROPIC_API_KEY=your-api-key

88 ```

89 

90 Le SDK prend également en charge l'authentification via des fournisseurs d'API tiers :

91 

92 * **Amazon Bedrock** : définissez la variable d'environnement `CLAUDE_CODE_USE_BEDROCK=1` et configurez les identifiants AWS

93 * **Google Vertex AI** : définissez la variable d'environnement `CLAUDE_CODE_USE_VERTEX=1` et configurez les identifiants Google Cloud

94 * **Microsoft Azure** : définissez la variable d'environnement `CLAUDE_CODE_USE_FOUNDRY=1` et configurez les identifiants Azure

95 

96 Consultez les guides de configuration pour [Bedrock](/fr/amazon-bedrock), [Vertex AI](/fr/google-vertex-ai), ou [Azure AI Foundry](/fr/microsoft-foundry) pour plus de détails.

97 

98 <Note>

99 Sauf approbation préalable, Anthropic n'autorise pas les développeurs tiers à proposer la connexion claude.ai ou les limites de débit pour leurs produits, y compris les agents construits sur le SDK Claude Agent. Veuillez utiliser les méthodes d'authentification par clé API décrites dans ce document à la place.

100 </Note>

101 </Step>

102 

103 <Step title="Exécuter votre premier agent">

104 Cet exemple crée un agent qui liste les fichiers de votre répertoire courant en utilisant les outils intégrés.

105 

106 <CodeGroup>

107 ```python Python theme={null}

108 import asyncio

109 from claude_agent_sdk import query, ClaudeAgentOptions

110 

111 

112 async def main():

113 async for message in query(

114 prompt="What files are in this directory?",

115 options=ClaudeAgentOptions(allowed_tools=["Bash", "Glob"]),

116 ):

117 if hasattr(message, "result"):

118 print(message.result)

119 

120 

121 asyncio.run(main())

122 ```

123 

124 ```typescript TypeScript theme={null}

125 import { query } from "@anthropic-ai/claude-agent-sdk";

126 

127 for await (const message of query({

128 prompt: "What files are in this directory?",

129 options: { allowedTools: ["Bash", "Glob"] }

130 })) {

131 if ("result" in message) console.log(message.result);

132 }

133 ```

134 </CodeGroup>

135 </Step>

136</Steps>

137 

138**Prêt à construire ?** Suivez le [Guide de démarrage rapide](/fr/agent-sdk/quickstart) pour créer un agent qui trouve et corrige les bugs en quelques minutes.

139 

140## Capacités

141 

142Tout ce qui rend Claude Code puissant est disponible dans le SDK :

143 

144<Tabs>

145 <Tab title="Outils intégrés">

146 Votre agent peut lire des fichiers, exécuter des commandes et rechercher dans les bases de code dès le départ. Les outils clés incluent :

147 

148 | Outil | Ce qu'il fait |

149 | --------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |

150 | **Read** | Lire n'importe quel fichier du répertoire de travail |

151 | **Write** | Créer de nouveaux fichiers |

152 | **Edit** | Effectuer des modifications précises aux fichiers existants |

153 | **Bash** | Exécuter des commandes de terminal, des scripts, des opérations git |

154 | **Monitor** | Surveiller un script en arrière-plan et réagir à chaque ligne de sortie en tant qu'événement |

155 | **Glob** | Trouver des fichiers par motif (`**/*.ts`, `src/**/*.py`) |

156 | **Grep** | Rechercher le contenu des fichiers avec regex |

157 | **WebSearch** | Rechercher sur le web pour obtenir des informations actuelles |

158 | **WebFetch** | Récupérer et analyser le contenu des pages web |

159 | **[AskUserQuestion](/fr/agent-sdk/user-input#handle-clarifying-questions)** | Poser à l'utilisateur des questions de clarification avec des options à choix multiples |

160 

161 Cet exemple crée un agent qui recherche les commentaires TODO dans votre base de code :

162 

163 <CodeGroup>

164 ```python Python theme={null}

165 import asyncio

166 from claude_agent_sdk import query, ClaudeAgentOptions

167 

168 

169 async def main():

170 async for message in query(

171 prompt="Find all TODO comments and create a summary",

172 options=ClaudeAgentOptions(allowed_tools=["Read", "Glob", "Grep"]),

173 ):

174 if hasattr(message, "result"):

175 print(message.result)

176 

177 

178 asyncio.run(main())

179 ```

180 

181 ```typescript TypeScript theme={null}

182 import { query } from "@anthropic-ai/claude-agent-sdk";

183 

184 for await (const message of query({

185 prompt: "Find all TODO comments and create a summary",

186 options: { allowedTools: ["Read", "Glob", "Grep"] }

187 })) {

188 if ("result" in message) console.log(message.result);

189 }

190 ```

191 </CodeGroup>

192 </Tab>

193 

194 <Tab title="Hooks">

195 Exécutez du code personnalisé à des points clés du cycle de vie de l'agent. Les hooks du SDK utilisent des fonctions de rappel pour valider, enregistrer, bloquer ou transformer le comportement de l'agent.

196 

197 **Hooks disponibles :** `PreToolUse`, `PostToolUse`, `Stop`, `SessionStart`, `SessionEnd`, `UserPromptSubmit`, et bien d'autres.

198 

199 Cet exemple enregistre tous les changements de fichiers dans un fichier d'audit :

200 

201 <CodeGroup>

202 ```python Python theme={null}

203 import asyncio

204 from datetime import datetime

205 from claude_agent_sdk import query, ClaudeAgentOptions, HookMatcher

206 

207 

208 async def log_file_change(input_data, tool_use_id, context):

209 file_path = input_data.get("tool_input", {}).get("file_path", "unknown")

210 with open("./audit.log", "a") as f:

211 f.write(f"{datetime.now()}: modified {file_path}\n")

212 return {}

213 

214 

215 async def main():

216 async for message in query(

217 prompt="Refactor utils.py to improve readability",

218 options=ClaudeAgentOptions(

219 permission_mode="acceptEdits",

220 hooks={

221 "PostToolUse": [

222 HookMatcher(matcher="Edit|Write", hooks=[log_file_change])

223 ]

224 },

225 ),

226 ):

227 if hasattr(message, "result"):

228 print(message.result)

229 

230 

231 asyncio.run(main())

232 ```

233 

234 ```typescript TypeScript theme={null}

235 import { query, HookCallback } from "@anthropic-ai/claude-agent-sdk";

236 import { appendFile } from "fs/promises";

237 

238 const logFileChange: HookCallback = async (input) => {

239 const filePath = (input as any).tool_input?.file_path ?? "unknown";

240 await appendFile("./audit.log", `${new Date().toISOString()}: modified ${filePath}\n`);

241 return {};

242 };

243 

244 for await (const message of query({

245 prompt: "Refactor utils.py to improve readability",

246 options: {

247 permissionMode: "acceptEdits",

248 hooks: {

249 PostToolUse: [{ matcher: "Edit|Write", hooks: [logFileChange] }]

250 }

251 }

252 })) {

253 if ("result" in message) console.log(message.result);

254 }

255 ```

256 </CodeGroup>

257 

258 [En savoir plus sur les hooks →](/fr/agent-sdk/hooks)

259 </Tab>

260 

261 <Tab title="Sous-agents">

262 Générez des agents spécialisés pour gérer des sous-tâches ciblées. Votre agent principal délègue le travail, et les sous-agents rapportent les résultats.

263 

264 Définissez des agents personnalisés avec des instructions spécialisées. Incluez `Agent` dans `allowedTools` puisque les sous-agents sont invoqués via l'outil Agent :

265 

266 <CodeGroup>

267 ```python Python theme={null}

268 import asyncio

269 from claude_agent_sdk import query, ClaudeAgentOptions, AgentDefinition

270 

271 

272 async def main():

273 async for message in query(

274 prompt="Use the code-reviewer agent to review this codebase",

275 options=ClaudeAgentOptions(

276 allowed_tools=["Read", "Glob", "Grep", "Agent"],

277 agents={

278 "code-reviewer": AgentDefinition(

279 description="Expert code reviewer for quality and security reviews.",

280 prompt="Analyze code quality and suggest improvements.",

281 tools=["Read", "Glob", "Grep"],

282 )

283 },

284 ),

285 ):

286 if hasattr(message, "result"):

287 print(message.result)

288 

289 

290 asyncio.run(main())

291 ```

292 

293 ```typescript TypeScript theme={null}

294 import { query } from "@anthropic-ai/claude-agent-sdk";

295 

296 for await (const message of query({

297 prompt: "Use the code-reviewer agent to review this codebase",

298 options: {

299 allowedTools: ["Read", "Glob", "Grep", "Agent"],

300 agents: {

301 "code-reviewer": {

302 description: "Expert code reviewer for quality and security reviews.",

303 prompt: "Analyze code quality and suggest improvements.",

304 tools: ["Read", "Glob", "Grep"]

305 }

306 }

307 }

308 })) {

309 if ("result" in message) console.log(message.result);

310 }

311 ```

312 </CodeGroup>

313 

314 Les messages provenant du contexte d'un sous-agent incluent un champ `parent_tool_use_id`, ce qui vous permet de suivre les messages appartenant à l'exécution de quel sous-agent.

315 

316 [En savoir plus sur les sous-agents →](/fr/agent-sdk/subagents)

317 </Tab>

318 

319 <Tab title="MCP">

320 Connectez-vous à des systèmes externes via le Model Context Protocol : bases de données, navigateurs, API, et [des centaines d'autres](https://github.com/modelcontextprotocol/servers).

321 

322 Cet exemple connecte le [serveur Playwright MCP](https://github.com/microsoft/playwright-mcp) pour donner à votre agent des capacités d'automatisation de navigateur :

323 

324 <CodeGroup>

325 ```python Python theme={null}

326 import asyncio

327 from claude_agent_sdk import query, ClaudeAgentOptions

328 

329 

330 async def main():

331 async for message in query(

332 prompt="Open example.com and describe what you see",

333 options=ClaudeAgentOptions(

334 mcp_servers={

335 "playwright": {"command": "npx", "args": ["@playwright/mcp@latest"]}

336 }

337 ),

338 ):

339 if hasattr(message, "result"):

340 print(message.result)

341 

342 

343 asyncio.run(main())

344 ```

345 

346 ```typescript TypeScript theme={null}

347 import { query } from "@anthropic-ai/claude-agent-sdk";

348 

349 for await (const message of query({

350 prompt: "Open example.com and describe what you see",

351 options: {

352 mcpServers: {

353 playwright: { command: "npx", args: ["@playwright/mcp@latest"] }

354 }

355 }

356 })) {

357 if ("result" in message) console.log(message.result);

358 }

359 ```

360 </CodeGroup>

361 

362 [En savoir plus sur MCP →](/fr/agent-sdk/mcp)

363 </Tab>

364 

365 <Tab title="Permissions">

366 Contrôlez exactement quels outils votre agent peut utiliser. Autorisez les opérations sûres, bloquez les opérations dangereuses, ou exigez une approbation pour les actions sensibles.

367 

368 <Note>

369 Pour les invites d'approbation interactives et l'outil `AskUserQuestion`, consultez [Gérer les approbations et l'entrée utilisateur](/fr/agent-sdk/user-input).

370 </Note>

371 

372 Cet exemple crée un agent en lecture seule qui peut analyser mais pas modifier le code. `allowed_tools` pré-approuve `Read`, `Glob`, et `Grep`.

373 

374 <CodeGroup>

375 ```python Python theme={null}

376 import asyncio

377 from claude_agent_sdk import query, ClaudeAgentOptions

378 

379 

380 async def main():

381 async for message in query(

382 prompt="Review this code for best practices",

383 options=ClaudeAgentOptions(

384 allowed_tools=["Read", "Glob", "Grep"],

385 ),

386 ):

387 if hasattr(message, "result"):

388 print(message.result)

389 

390 

391 asyncio.run(main())

392 ```

393 

394 ```typescript TypeScript theme={null}

395 import { query } from "@anthropic-ai/claude-agent-sdk";

396 

397 for await (const message of query({

398 prompt: "Review this code for best practices",

399 options: {

400 allowedTools: ["Read", "Glob", "Grep"]

401 }

402 })) {

403 if ("result" in message) console.log(message.result);

404 }

405 ```

406 </CodeGroup>

407 

408 [En savoir plus sur les permissions →](/fr/agent-sdk/permissions)

409 </Tab>

410 

411 <Tab title="Sessions">

412 Maintenez le contexte sur plusieurs échanges. Claude se souvient des fichiers lus, de l'analyse effectuée et de l'historique de la conversation. Reprenez les sessions plus tard, ou divisez-les pour explorer différentes approches.

413 

414 Cet exemple capture l'ID de session de la première requête, puis reprend pour continuer avec le contexte complet :

415 

416 <CodeGroup>

417 ```python Python theme={null}

418 import asyncio

419 from claude_agent_sdk import query, ClaudeAgentOptions, SystemMessage, ResultMessage

420 

421 

422 async def main():

423 session_id = None

424 

425 # First query: capture the session ID

426 async for message in query(

427 prompt="Read the authentication module",

428 options=ClaudeAgentOptions(allowed_tools=["Read", "Glob"]),

429 ):

430 if isinstance(message, SystemMessage) and message.subtype == "init":

431 session_id = message.data["session_id"]

432 

433 # Resume with full context from the first query

434 async for message in query(

435 prompt="Now find all places that call it", # "it" = auth module

436 options=ClaudeAgentOptions(resume=session_id),

437 ):

438 if isinstance(message, ResultMessage):

439 print(message.result)

440 

441 

442 asyncio.run(main())

443 ```

444 

445 ```typescript TypeScript theme={null}

446 import { query } from "@anthropic-ai/claude-agent-sdk";

447 

448 let sessionId: string | undefined;

449 

450 // First query: capture the session ID

451 for await (const message of query({

452 prompt: "Read the authentication module",

453 options: { allowedTools: ["Read", "Glob"] }

454 })) {

455 if (message.type === "system" && message.subtype === "init") {

456 sessionId = message.session_id;

457 }

458 }

459 

460 // Resume with full context from the first query

461 for await (const message of query({

462 prompt: "Now find all places that call it", // "it" = auth module

463 options: { resume: sessionId }

464 })) {

465 if ("result" in message) console.log(message.result);

466 }

467 ```

468 </CodeGroup>

469 

470 [En savoir plus sur les sessions →](/fr/agent-sdk/sessions)

471 </Tab>

472</Tabs>

473 

474### Fonctionnalités de Claude Code

475 

476Le SDK prend également en charge la configuration basée sur le système de fichiers de Claude Code. Avec les options par défaut, le SDK les charge à partir de `.claude/` dans votre répertoire de travail et `~/.claude/`. Pour restreindre les sources qui se chargent, définissez `setting_sources` (Python) ou `settingSources` (TypeScript) dans vos options.

477 

478| Fonctionnalité | Description | Emplacement |

479| ------------------------------------------------ | ------------------------------------------------------------------------- | ------------------------------------- |

480| [Skills](/fr/agent-sdk/skills) | Capacités spécialisées définies en Markdown | `.claude/skills/*/SKILL.md` |

481| [Slash commands](/fr/agent-sdk/slash-commands) | Commandes personnalisées pour les tâches courantes | `.claude/commands/*.md` |

482| [Memory](/fr/agent-sdk/modifying-system-prompts) | Contexte du projet et instructions | `CLAUDE.md` ou `.claude/CLAUDE.md` |

483| [Plugins](/fr/agent-sdk/plugins) | Étendre avec des commandes personnalisées, des agents et des serveurs MCP | Programmatique via l'option `plugins` |

484 

485## Comparer le SDK Agent à d'autres outils Claude

486 

487La plateforme Claude offre plusieurs façons de construire avec Claude. Voici comment le SDK Agent s'intègre :

488 

489<Tabs>

490 <Tab title="SDK Agent vs SDK Client">

491 Le [SDK Client Anthropic](https://platform.claude.com/docs/fr/api/client-sdks) vous donne un accès direct à l'API : vous envoyez des invites et implémentez vous-même l'exécution des outils. Le **SDK Agent** vous donne Claude avec l'exécution des outils intégrée.

492 

493 Avec le SDK Client, vous implémentez une boucle d'outils. Avec le SDK Agent, Claude la gère :

494 

495 <CodeGroup>

496 ```python Python theme={null}

497 # Client SDK: You implement the tool loop

498 response = client.messages.create(...)

499 while response.stop_reason == "tool_use":

500 result = your_tool_executor(response.tool_use)

501 response = client.messages.create(tool_result=result, **params)

502 

503 # Agent SDK: Claude handles tools autonomously

504 async for message in query(prompt="Fix the bug in auth.py"):

505 print(message)

506 ```

507 

508 ```typescript TypeScript theme={null}

509 // Client SDK: You implement the tool loop

510 let response = await client.messages.create({ ...params });

511 while (response.stop_reason === "tool_use") {

512 const result = yourToolExecutor(response.tool_use);

513 response = await client.messages.create({ tool_result: result, ...params });

514 }

515 

516 // Agent SDK: Claude handles tools autonomously

517 for await (const message of query({ prompt: "Fix the bug in auth.ts" })) {

518 console.log(message);

519 }

520 ```

521 </CodeGroup>

522 </Tab>

523 

524 <Tab title="SDK Agent vs CLI Claude Code">

525 Mêmes capacités, interface différente :

526 

527 | Cas d'usage | Meilleur choix |

528 | ---------------------------- | -------------- |

529 | Développement interactif | CLI |

530 | Pipelines CI/CD | SDK |

531 | Applications personnalisées | SDK |

532 | Tâches ponctuelles | CLI |

533 | Automatisation de production | SDK |

534 

535 De nombreuses équipes utilisent les deux : CLI pour le développement quotidien, SDK pour la production. Les flux de travail se traduisent directement entre eux.

536 </Tab>

537 

538 <Tab title="SDK Agent vs Agents gérés">

539 [Agents gérés](https://platform.claude.com/docs/fr/managed-agents/overview) est une API REST hébergée : Anthropic exécute l'agent et le sandbox, et votre application envoie des événements et reçoit les résultats en streaming. Le **SDK Agent** est une bibliothèque qui exécute la boucle d'agent à l'intérieur de votre propre processus.

540 

541 | | SDK Agent | Agents gérés |

542 | ------------------------- | --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |

543 | **S'exécute dans** | Votre processus, votre infrastructure | Infrastructure gérée par Anthropic |

544 | **Interface** | Bibliothèque Python ou TypeScript | API REST |

545 | **L'agent travaille sur** | Fichiers sur votre infrastructure | Un sandbox géré par session |

546 | **État de la session** | JSONL sur votre système de fichiers | Journal des événements hébergé par Anthropic |

547 | **Outils personnalisés** | Fonctions Python ou TypeScript en processus | Claude déclenche l'outil ; vous exécutez et retournez les résultats |

548 | **Idéal pour** | Prototypage local, agents qui travaillent directement sur votre système de fichiers et vos services | Agents de production sans gérer l'infrastructure du sandbox ou de la session, sessions longues et asynchrones |

549 

550 Un chemin courant est de prototyper avec le SDK Agent localement, puis de passer aux Agents gérés pour la production.

551 </Tab>

552</Tabs>

553 

554## Journal des modifications

555 

556Consultez le journal des modifications complet pour les mises à jour du SDK, les corrections de bugs et les nouvelles fonctionnalités :

557 

558* **SDK TypeScript** : [voir CHANGELOG.md](https://github.com/anthropics/claude-agent-sdk-typescript/blob/main/CHANGELOG.md)

559* **SDK Python** : [voir CHANGELOG.md](https://github.com/anthropics/claude-agent-sdk-python/blob/main/CHANGELOG.md)

560 

561## Signaler les bugs

562 

563Si vous rencontrez des bugs ou des problèmes avec le SDK Agent :

564 

565* **SDK TypeScript** : [signaler les problèmes sur GitHub](https://github.com/anthropics/claude-agent-sdk-typescript/issues)

566* **SDK Python** : [signaler les problèmes sur GitHub](https://github.com/anthropics/claude-agent-sdk-python/issues)

567 

568## Directives de marque

569 

570Pour les partenaires intégrant le SDK Claude Agent, l'utilisation de la marque Claude est facultative. Lorsque vous référencez Claude dans votre produit :

571 

572**Autorisé :**

573 

574* ' Claude Agent ' (préféré pour les menus déroulants)

575* ' Claude ' (lorsque vous êtes déjà dans un menu étiqueté ' Agents ')

576* ' {YourAgentName} Powered by Claude ' (si vous avez un nom d'agent existant)

577 

578**Non autorisé :**

579 

580* ' Claude Code ' ou ' Claude Code Agent '

581* Art ASCII ou éléments visuels de marque Claude Code qui imitent Claude Code

582 

583Votre produit doit conserver sa propre marque et ne pas sembler être Claude Code ou un produit Anthropic. Pour des questions sur la conformité de la marque, contactez l'équipe [ventes](https://www.anthropic.com/contact-sales) d'Anthropic.

584 

585## Licence et conditions

586 

587L'utilisation du SDK Claude Agent est régie par les [Conditions commerciales d'Anthropic](https://www.anthropic.com/legal/commercial-terms), y compris lorsque vous l'utilisez pour alimenter des produits et services que vous mettez à disposition de vos propres clients et utilisateurs finaux, sauf dans la mesure où un composant ou une dépendance spécifique est couvert par une licence différente comme indiqué dans le fichier LICENSE de ce composant.

588 

589## Prochaines étapes

590 

591<CardGroup cols={2}>

592 <Card title="Guide de démarrage rapide" icon="play" href="/fr/agent-sdk/quickstart">

593 Créez un agent qui trouve et corrige les bugs en quelques minutes

594 </Card>

595 

596 <Card title="Agents d'exemple" icon="star" href="https://github.com/anthropics/claude-agent-sdk-demos">

597 Assistant e-mail, agent de recherche, et bien plus

598 </Card>

599 

600 <Card title="SDK TypeScript" icon="code" href="/fr/agent-sdk/typescript">

601 Référence API TypeScript complète et exemples

602 </Card>

603 

604 <Card title="SDK Python" icon="code" href="/fr/agent-sdk/python">

605 Référence API Python complète et exemples

606 </Card>

607</CardGroup>

agent-sdk/plugins.md +342 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Plugins dans le SDK

6 

7> Chargez des plugins personnalisés pour étendre Claude Code avec des commandes, des agents, des skills et des hooks via le SDK Agent

8 

9Les plugins vous permettent d'étendre Claude Code avec des fonctionnalités personnalisées qui peuvent être partagées entre les projets. Via le SDK Agent, vous pouvez charger programmatiquement des plugins à partir de répertoires locaux pour ajouter des slash commands personnalisées, des agents, des skills, des hooks et des serveurs MCP à vos sessions d'agent.

10 

11## Que sont les plugins ?

12 

13Les plugins sont des packages d'extensions Claude Code qui peuvent inclure :

14 

15* **Skills** : Capacités invoquées par le modèle que Claude utilise de manière autonome (peuvent également être invoquées avec `/skill-name`)

16* **Agents** : Sous-agents spécialisés pour des tâches spécifiques

17* **Hooks** : Gestionnaires d'événements qui répondent à l'utilisation d'outils et à d'autres événements

18* **Serveurs MCP** : Intégrations d'outils externes via Model Context Protocol

19 

20<Note>

21 Le répertoire `commands/` est un format hérité. Utilisez `skills/` pour les nouveaux plugins. Claude Code continue de supporter les deux formats pour la compatibilité rétroactive.

22</Note>

23 

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

25 

26## Chargement des plugins

27 

28Chargez les plugins en fournissant leurs chemins du système de fichiers local dans votre configuration d'options. Le champ `type` doit être `"local"`, la seule valeur que le SDK accepte. Pour utiliser un plugin distribué via une [marketplace](/fr/plugin-marketplaces) ou un référentiel distant, téléchargez-le d'abord et fournissez le chemin du répertoire local. Le SDK supporte le chargement de plusieurs plugins à partir de différents emplacements.

29 

30<CodeGroup>

31 ```typescript TypeScript theme={null}

32 import { query } from "@anthropic-ai/claude-agent-sdk";

33 

34 for await (const message of query({

35 prompt: "Hello",

36 options: {

37 plugins: [

38 { type: "local", path: "./my-plugin" },

39 { type: "local", path: "/absolute/path/to/another-plugin" }

40 ]

41 }

42 })) {

43 // Plugin commands, agents, and other features are now available

44 }

45 ```

46 

47 ```python Python theme={null}

48 import asyncio

49 from claude_agent_sdk import query

50 

51 

52 async def main():

53 async for message in query(

54 prompt="Hello",

55 options={

56 "plugins": [

57 {"type": "local", "path": "./my-plugin"},

58 {"type": "local", "path": "/absolute/path/to/another-plugin"},

59 ]

60 },

61 ):

62 # Plugin commands, agents, and other features are now available

63 pass

64 

65 

66 asyncio.run(main())

67 ```

68</CodeGroup>

69 

70### Spécifications des chemins

71 

72Les chemins des plugins peuvent être :

73 

74* **Chemins relatifs** : Résolus par rapport à votre répertoire de travail actuel (par exemple, `"./plugins/my-plugin"`)

75* **Chemins absolus** : Chemins complets du système de fichiers (par exemple, `"/home/user/plugins/my-plugin"`)

76 

77<Note>

78 Le chemin doit pointer vers le répertoire racine du plugin (le répertoire contenant `.claude-plugin/plugin.json`).

79</Note>

80 

81## Vérification de l'installation du plugin

82 

83Lorsque les plugins se chargent avec succès, ils apparaissent dans le message d'initialisation du système. Vous pouvez vérifier que vos plugins sont disponibles :

84 

85<CodeGroup>

86 ```typescript TypeScript theme={null}

87 import { query } from "@anthropic-ai/claude-agent-sdk";

88 

89 for await (const message of query({

90 prompt: "Hello",

91 options: {

92 plugins: [{ type: "local", path: "./my-plugin" }]

93 }

94 })) {

95 if (message.type === "system" && message.subtype === "init") {

96 // Check loaded plugins

97 console.log("Plugins:", message.plugins);

98 // Example: [{ name: "my-plugin", path: "./my-plugin" }]

99 

100 // Check available commands from plugins

101 console.log("Commands:", message.slash_commands);

102 // Example: ["/help", "/compact", "my-plugin:custom-command"]

103 }

104 }

105 ```

106 

107 ```python Python theme={null}

108 import asyncio

109 from claude_agent_sdk import query

110 

111 

112 async def main():

113 async for message in query(

114 prompt="Hello", options={"plugins": [{"type": "local", "path": "./my-plugin"}]}

115 ):

116 if message.type == "system" and message.subtype == "init":

117 # Check loaded plugins

118 print("Plugins:", message.data.get("plugins"))

119 # Example: [{"name": "my-plugin", "path": "./my-plugin"}]

120 

121 # Check available commands from plugins

122 print("Commands:", message.data.get("slash_commands"))

123 # Example: ["/help", "/compact", "my-plugin:custom-command"]

124 

125 

126 asyncio.run(main())

127 ```

128</CodeGroup>

129 

130## Utilisation des skills des plugins

131 

132Les skills des plugins sont automatiquement espacés de noms avec le nom du plugin pour éviter les conflits. Lorsqu'ils sont invoqués en tant que slash commands, le format est `plugin-name:skill-name`.

133 

134<CodeGroup>

135 ```typescript TypeScript theme={null}

136 import { query } from "@anthropic-ai/claude-agent-sdk";

137 

138 // Load a plugin with a custom /greet skill

139 for await (const message of query({

140 prompt: "/my-plugin:greet", // Use plugin skill with namespace

141 options: {

142 plugins: [{ type: "local", path: "./my-plugin" }]

143 }

144 })) {

145 // Claude executes the custom greeting skill from the plugin

146 if (message.type === "assistant") {

147 console.log(message.message.content);

148 }

149 }

150 ```

151 

152 ```python Python theme={null}

153 import asyncio

154 from claude_agent_sdk import query, AssistantMessage, TextBlock

155 

156 

157 async def main():

158 # Load a plugin with a custom /greet skill

159 async for message in query(

160 prompt="/demo-plugin:greet", # Use plugin skill with namespace

161 options={"plugins": [{"type": "local", "path": "./plugins/demo-plugin"}]},

162 ):

163 # Claude executes the custom greeting skill from the plugin

164 if isinstance(message, AssistantMessage):

165 for block in message.content:

166 if isinstance(block, TextBlock):

167 print(f"Claude: {block.text}")

168 

169 

170 asyncio.run(main())

171 ```

172</CodeGroup>

173 

174<Note>

175 Si vous avez installé un plugin via la CLI (par exemple, `/plugin install my-plugin@marketplace`), vous pouvez toujours l'utiliser dans le SDK en fournissant son chemin d'installation. Vérifiez `~/.claude/plugins/` pour les plugins installés via la CLI.

176</Note>

177 

178## Exemple complet

179 

180Voici un exemple complet démontrant le chargement et l'utilisation des plugins :

181 

182<CodeGroup>

183 ```typescript TypeScript theme={null}

184 import { query } from "@anthropic-ai/claude-agent-sdk";

185 import * as path from "path";

186 

187 async function runWithPlugin() {

188 const pluginPath = path.join(__dirname, "plugins", "my-plugin");

189 

190 console.log("Loading plugin from:", pluginPath);

191 

192 for await (const message of query({

193 prompt: "What custom commands do you have available?",

194 options: {

195 plugins: [{ type: "local", path: pluginPath }],

196 maxTurns: 3

197 }

198 })) {

199 if (message.type === "system" && message.subtype === "init") {

200 console.log("Loaded plugins:", message.plugins);

201 console.log("Available commands:", message.slash_commands);

202 }

203 

204 if (message.type === "assistant") {

205 console.log("Assistant:", message.message.content);

206 }

207 }

208 }

209 

210 runWithPlugin().catch(console.error);

211 ```

212 

213 ```python Python theme={null}

214 #!/usr/bin/env python3

215 """Example demonstrating how to use plugins with the Agent SDK."""

216 

217 from pathlib import Path

218 import anyio

219 from claude_agent_sdk import (

220 AssistantMessage,

221 ClaudeAgentOptions,

222 TextBlock,

223 query,

224 )

225 

226 

227 async def run_with_plugin():

228 """Example using a custom plugin."""

229 plugin_path = Path(__file__).parent / "plugins" / "demo-plugin"

230 

231 print(f"Loading plugin from: {plugin_path}")

232 

233 options = ClaudeAgentOptions(

234 plugins=[{"type": "local", "path": str(plugin_path)}],

235 max_turns=3,

236 )

237 

238 async for message in query(

239 prompt="What custom commands do you have available?", options=options

240 ):

241 if message.type == "system" and message.subtype == "init":

242 print(f"Loaded plugins: {message.data.get('plugins')}")

243 print(f"Available commands: {message.data.get('slash_commands')}")

244 

245 if isinstance(message, AssistantMessage):

246 for block in message.content:

247 if isinstance(block, TextBlock):

248 print(f"Assistant: {block.text}")

249 

250 

251 if __name__ == "__main__":

252 anyio.run(run_with_plugin)

253 ```

254</CodeGroup>

255 

256## Référence de la structure des plugins

257 

258Un répertoire de plugin doit contenir un fichier manifeste `.claude-plugin/plugin.json`. Il peut optionnellement inclure :

259 

260```text theme={null}

261my-plugin/

262├── .claude-plugin/

263│ └── plugin.json # Required: plugin manifest

264├── skills/ # Agent Skills (invoked autonomously or via /skill-name)

265│ └── my-skill/

266│ └── SKILL.md

267├── commands/ # Legacy: use skills/ instead

268│ └── custom-cmd.md

269├── agents/ # Custom agents

270│ └── specialist.md

271├── hooks/ # Event handlers

272│ └── hooks.json

273└── .mcp.json # MCP server definitions

274```

275 

276Pour des informations détaillées sur la création de plugins, consultez :

277 

278* [Plugins](/fr/plugins) - Guide complet de développement de plugins

279* [Référence des plugins](/fr/plugins-reference) - Spécifications techniques et schémas

280 

281## Cas d'usage courants

282 

283### Développement et test

284 

285Chargez les plugins pendant le développement sans les installer globalement :

286 

287```typescript theme={null}

288plugins: [{ type: "local", path: "./dev-plugins/my-plugin" }];

289```

290 

291### Extensions spécifiques au projet

292 

293Incluez les plugins dans votre référentiel de projet pour la cohérence à l'échelle de l'équipe :

294 

295```typescript theme={null}

296plugins: [{ type: "local", path: "./project-plugins/team-workflows" }];

297```

298 

299### Plusieurs sources de plugins

300 

301Combinez les plugins de différents emplacements :

302 

303```typescript theme={null}

304plugins: [

305 { type: "local", path: "./local-plugin" },

306 { type: "local", path: "~/.claude/custom-plugins/shared-plugin" }

307];

308```

309 

310## Dépannage

311 

312### Plugin ne se charge pas

313 

314Si votre plugin n'apparaît pas dans le message d'initialisation :

315 

3161. **Vérifiez le chemin** : Assurez-vous que le chemin pointe vers le répertoire racine du plugin (contenant `.claude-plugin/`)

3172. **Validez plugin.json** : Assurez-vous que votre fichier manifeste a une syntaxe JSON valide

3183. **Vérifiez les permissions de fichier** : Assurez-vous que le répertoire du plugin est lisible

319 

320### Les skills n'apparaissent pas

321 

322Si les skills des plugins ne fonctionnent pas :

323 

3241. **Utilisez l'espace de noms** : Les skills des plugins nécessitent le format `plugin-name:skill-name` lorsqu'ils sont invoqués en tant que slash commands

3252. **Vérifiez le message d'initialisation** : Vérifiez que le skill apparaît dans `slash_commands` avec l'espace de noms correct

3263. **Validez les fichiers de skill** : Assurez-vous que chaque skill a un fichier `SKILL.md` dans son propre sous-répertoire sous `skills/` (par exemple, `skills/my-skill/SKILL.md`)

327 

328### Problèmes de résolution de chemin

329 

330Si les chemins relatifs ne fonctionnent pas :

331 

3321. **Vérifiez le répertoire de travail** : Les chemins relatifs sont résolus à partir de votre répertoire de travail actuel

3332. **Utilisez des chemins absolus** : Pour la fiabilité, envisagez d'utiliser des chemins absolus

3343. **Normalisez les chemins** : Utilisez les utilitaires de chemin pour construire les chemins correctement

335 

336## Voir aussi

337 

338* [Plugins](/fr/plugins) - Guide complet de développement de plugins

339* [Référence des plugins](/fr/plugins-reference) - Spécifications techniques

340* [Slash Commands](/fr/agent-sdk/slash-commands) - Utilisation des slash commands dans le SDK

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

342* [Skills](/fr/agent-sdk/skills) - Utilisation des Agent Skills

agent-sdk/python.md +3274 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Référence du SDK Agent - Python

6 

7> Référence API complète du SDK Agent Python, incluant toutes les fonctions, types et classes.

8 

9## Installation

10 

11```bash theme={null}

12pip install claude-agent-sdk

13```

14 

15## Choisir entre `query()` et `ClaudeSDKClient`

16 

17Le SDK Python offre deux façons d'interagir avec Claude Code :

18 

19### Comparaison rapide

20 

21| Fonctionnalité | `query()` | `ClaudeSDKClient` |

22| :---------------------------- | :-------------------------------------- | :--------------------------------------- |

23| **Session** | Crée une nouvelle session à chaque fois | Réutilise la même session |

24| **Conversation** | Échange unique | Plusieurs échanges dans le même contexte |

25| **Connexion** | Gérée automatiquement | Contrôle manuel |

26| **Entrée en streaming** | ✅ Supportée | ✅ Supportée |

27| **Interruptions** | ❌ Non supportées | ✅ Supportées |

28| **Hooks** | ✅ Supportés | ✅ Supportés |

29| **Outils personnalisés** | ✅ Supportés | ✅ Supportés |

30| **Continuer la conversation** | ❌ Nouvelle session à chaque fois | ✅ Maintient la conversation |

31| **Cas d'usage** | Tâches ponctuelles | Conversations continues |

32 

33### Quand utiliser `query()` (nouvelle session à chaque fois)

34 

35**Idéal pour :**

36 

37* Les questions ponctuelles où vous n'avez pas besoin d'historique de conversation

38* Les tâches indépendantes qui ne nécessitent pas de contexte des échanges précédents

39* Les scripts d'automatisation simples

40* Quand vous voulez un nouveau départ à chaque fois

41 

42### Quand utiliser `ClaudeSDKClient` (conversation continue)

43 

44**Idéal pour :**

45 

46* **Continuer les conversations** - Quand vous avez besoin que Claude se souvienne du contexte

47* **Questions de suivi** - S'appuyer sur les réponses précédentes

48* **Applications interactives** - Interfaces de chat, REPLs

49* **Logique basée sur les réponses** - Quand l'action suivante dépend de la réponse de Claude

50* **Contrôle de session** - Gérer explicitement le cycle de vie de la conversation

51 

52## Fonctions

53 

54### `query()`

55 

56Crée une nouvelle session pour chaque interaction avec Claude Code. Retourne un itérateur asynchrone qui produit les messages au fur et à mesure qu'ils arrivent. Chaque appel à `query()` recommence à zéro sans mémoire des interactions précédentes.

57 

58```python theme={null}

59async def query(

60 *,

61 prompt: str | AsyncIterable[dict[str, Any]],

62 options: ClaudeAgentOptions | None = None,

63 transport: Transport | None = None

64) -> AsyncIterator[Message]

65```

66 

67#### Paramètres

68 

69| Paramètre | Type | Description |

70| :---------- | :--------------------------- | :-------------------------------------------------------------------------------------- |

71| `prompt` | `str \| AsyncIterable[dict]` | Le prompt d'entrée sous forme de chaîne ou d'itérable asynchrone pour le mode streaming |

72| `options` | `ClaudeAgentOptions \| None` | Objet de configuration optionnel (par défaut `ClaudeAgentOptions()` si None) |

73| `transport` | `Transport \| None` | Transport personnalisé optionnel pour communiquer avec le processus CLI |

74 

75#### Retours

76 

77Retourne un `AsyncIterator[Message]` qui produit les messages de la conversation.

78 

79#### Exemple - Avec options

80 

81```python theme={null}

82import asyncio

83from claude_agent_sdk import query, ClaudeAgentOptions

84 

85 

86async def main():

87 options = ClaudeAgentOptions(

88 system_prompt="You are an expert Python developer",

89 permission_mode="acceptEdits",

90 cwd="/home/user/project",

91 )

92 

93 async for message in query(prompt="Create a Python web server", options=options):

94 print(message)

95 

96 

97asyncio.run(main())

98```

99 

100### `tool()`

101 

102Décorateur pour définir des outils MCP avec sécurité des types.

103 

104```python theme={null}

105def tool(

106 name: str,

107 description: str,

108 input_schema: type | dict[str, Any],

109 annotations: ToolAnnotations | None = None

110) -> Callable[[Callable[[Any], Awaitable[dict[str, Any]]]], SdkMcpTool[Any]]

111```

112 

113#### Paramètres

114 

115| Paramètre | Type | Description |

116| :------------- | :----------------------------------------------- | :------------------------------------------------------------------------------- |

117| `name` | `str` | Identifiant unique pour l'outil |

118| `description` | `str` | Description lisible de ce que fait l'outil |

119| `input_schema` | `type \| dict[str, Any]` | Schéma définissant les paramètres d'entrée de l'outil (voir ci-dessous) |

120| `annotations` | [`ToolAnnotations`](#tool-annotations)` \| None` | Annotations MCP optionnelles fournissant des indices comportementaux aux clients |

121 

122#### Options de schéma d'entrée

123 

1241. **Mappage de type simple** (recommandé) :

125 

126 ```python theme={null}

127 {"text": str, "count": int, "enabled": bool}

128 ```

129 

1302. **Format JSON Schema** (pour la validation complexe) :

131 ```python theme={null}

132 {

133 "type": "object",

134 "properties": {

135 "text": {"type": "string"},

136 "count": {"type": "integer", "minimum": 0},

137 },

138 "required": ["text"],

139 }

140 ```

141 

142#### Retours

143 

144Une fonction décorateur qui enveloppe l'implémentation de l'outil et retourne une instance `SdkMcpTool`.

145 

146#### Exemple

147 

148```python theme={null}

149from claude_agent_sdk import tool

150from typing import Any

151 

152 

153@tool("greet", "Greet a user", {"name": str})

154async def greet(args: dict[str, Any]) -> dict[str, Any]:

155 return {"content": [{"type": "text", "text": f"Hello, {args['name']}!"}]}

156```

157 

158#### `ToolAnnotations`

159 

160Réexportée depuis `mcp.types` (également disponible via `from claude_agent_sdk import ToolAnnotations`). Tous les champs sont des indices optionnels ; les clients ne doivent pas s'y fier pour les décisions de sécurité.

161 

162| Champ | Type | Par défaut | Description |

163| :---------------- | :------------- | :--------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

164| `title` | `str \| None` | `None` | Titre lisible pour l'outil |

165| `readOnlyHint` | `bool \| None` | `False` | Si `True`, l'outil ne modifie pas son environnement |

166| `destructiveHint` | `bool \| None` | `True` | Si `True`, l'outil peut effectuer des mises à jour destructrices (uniquement significatif quand `readOnlyHint` est `False`) |

167| `idempotentHint` | `bool \| None` | `False` | Si `True`, les appels répétés avec les mêmes arguments n'ont pas d'effet supplémentaire (uniquement significatif quand `readOnlyHint` est `False`) |

168| `openWorldHint` | `bool \| None` | `True` | Si `True`, l'outil interagit avec des entités externes (par exemple, recherche web). Si `False`, le domaine de l'outil est fermé (par exemple, un outil de mémoire) |

169 

170```python theme={null}

171from claude_agent_sdk import tool, ToolAnnotations

172from typing import Any

173 

174 

175@tool(

176 "search",

177 "Search the web",

178 {"query": str},

179 annotations=ToolAnnotations(readOnlyHint=True, openWorldHint=True),

180)

181async def search(args: dict[str, Any]) -> dict[str, Any]:

182 return {"content": [{"type": "text", "text": f"Results for: {args['query']}"}]}

183```

184 

185### `create_sdk_mcp_server()`

186 

187Crée un serveur MCP en processus qui s'exécute dans votre application Python.

188 

189```python theme={null}

190def create_sdk_mcp_server(

191 name: str,

192 version: str = "1.0.0",

193 tools: list[SdkMcpTool[Any]] | None = None

194) -> McpSdkServerConfig

195```

196 

197#### Paramètres

198 

199| Paramètre | Type | Par défaut | Description |

200| :-------- | :------------------------------ | :--------- | :------------------------------------------------------------ |

201| `name` | `str` | - | Identifiant unique pour le serveur |

202| `version` | `str` | `"1.0.0"` | Chaîne de version du serveur |

203| `tools` | `list[SdkMcpTool[Any]] \| None` | `None` | Liste des fonctions d'outil créées avec le décorateur `@tool` |

204 

205#### Retours

206 

207Retourne un objet `McpSdkServerConfig` qui peut être passé à `ClaudeAgentOptions.mcp_servers`.

208 

209#### Exemple

210 

211```python theme={null}

212from claude_agent_sdk import tool, create_sdk_mcp_server

213 

214 

215@tool("add", "Add two numbers", {"a": float, "b": float})

216async def add(args):

217 return {"content": [{"type": "text", "text": f"Sum: {args['a'] + args['b']}"}]}

218 

219 

220@tool("multiply", "Multiply two numbers", {"a": float, "b": float})

221async def multiply(args):

222 return {"content": [{"type": "text", "text": f"Product: {args['a'] * args['b']}"}]}

223 

224 

225calculator = create_sdk_mcp_server(

226 name="calculator",

227 version="2.0.0",

228 tools=[add, multiply], # Pass decorated functions

229)

230 

231# Use with Claude

232options = ClaudeAgentOptions(

233 mcp_servers={"calc": calculator},

234 allowed_tools=["mcp__calc__add", "mcp__calc__multiply"],

235)

236```

237 

238### `list_sessions()`

239 

240Liste les sessions passées avec métadonnées. Filtrez par répertoire de projet ou listez les sessions dans tous les projets. Synchrone ; retourne immédiatement.

241 

242```python theme={null}

243def list_sessions(

244 directory: str | None = None,

245 limit: int | None = None,

246 include_worktrees: bool = True

247) -> list[SDKSessionInfo]

248```

249 

250#### Paramètres

251 

252| Paramètre | Type | Par défaut | Description |

253| :------------------ | :------------ | :--------- | :---------------------------------------------------------------------------------------------------- |

254| `directory` | `str \| None` | `None` | Répertoire pour lequel lister les sessions. Quand omis, retourne les sessions dans tous les projets |

255| `limit` | `int \| None` | `None` | Nombre maximum de sessions à retourner |

256| `include_worktrees` | `bool` | `True` | Quand `directory` est à l'intérieur d'un dépôt git, inclure les sessions de tous les chemins worktree |

257 

258#### Type de retour : `SDKSessionInfo`

259 

260| Propriété | Type | Description |

261| :-------------- | :------------ | :--------------------------------------------------------------------------------------- |

262| `session_id` | `str` | Identifiant de session unique |

263| `summary` | `str` | Titre d'affichage : titre personnalisé, résumé généré automatiquement, ou premier prompt |

264| `last_modified` | `int` | Heure de dernière modification en millisecondes depuis l'époque |

265| `file_size` | `int \| None` | Taille du fichier de session en octets (`None` pour les backends de stockage distant) |

266| `custom_title` | `str \| None` | Titre de session défini par l'utilisateur |

267| `first_prompt` | `str \| None` | Premier prompt utilisateur significatif dans la session |

268| `git_branch` | `str \| None` | Branche git à la fin de la session |

269| `cwd` | `str \| None` | Répertoire de travail pour la session |

270| `tag` | `str \| None` | Étiquette de session définie par l'utilisateur (voir [`tag_session()`](#tag-session)) |

271| `created_at` | `int \| None` | Heure de création de la session en millisecondes depuis l'époque |

272 

273#### Exemple

274 

275Affiche les 10 sessions les plus récentes pour un projet. Les résultats sont triés par `last_modified` décroissant, donc le premier élément est le plus récent. Omettez `directory` pour rechercher dans tous les projets.

276 

277```python theme={null}

278from claude_agent_sdk import list_sessions

279 

280for session in list_sessions(directory="/path/to/project", limit=10):

281 print(f"{session.summary} ({session.session_id})")

282```

283 

284### `get_session_messages()`

285 

286Récupère les messages d'une session passée. Synchrone ; retourne immédiatement.

287 

288```python theme={null}

289def get_session_messages(

290 session_id: str,

291 directory: str | None = None,

292 limit: int | None = None,

293 offset: int = 0

294) -> list[SessionMessage]

295```

296 

297#### Paramètres

298 

299| Paramètre | Type | Par défaut | Description |

300| :----------- | :------------ | :--------- | :--------------------------------------------------------------------------- |

301| `session_id` | `str` | requis | L'ID de session pour lequel récupérer les messages |

302| `directory` | `str \| None` | `None` | Répertoire de projet à regarder. Quand omis, recherche dans tous les projets |

303| `limit` | `int \| None` | `None` | Nombre maximum de messages à retourner |

304| `offset` | `int` | `0` | Nombre de messages à ignorer depuis le début |

305 

306#### Type de retour : `SessionMessage`

307 

308| Propriété | Type | Description |

309| :------------------- | :----------------------------- | :---------------------------- |

310| `type` | `Literal["user", "assistant"]` | Rôle du message |

311| `uuid` | `str` | Identifiant de message unique |

312| `session_id` | `str` | Identifiant de session |

313| `message` | `Any` | Contenu du message brut |

314| `parent_tool_use_id` | `None` | Réservé pour un usage futur |

315 

316#### Exemple

317 

318```python theme={null}

319from claude_agent_sdk import list_sessions, get_session_messages

320 

321sessions = list_sessions(limit=1)

322if sessions:

323 messages = get_session_messages(sessions[0].session_id)

324 for msg in messages:

325 print(f"[{msg.type}] {msg.uuid}")

326```

327 

328### `get_session_info()`

329 

330Lit les métadonnées d'une seule session par ID sans scanner le répertoire de projet complet. Synchrone ; retourne immédiatement.

331 

332```python theme={null}

333def get_session_info(

334 session_id: str,

335 directory: str | None = None,

336) -> SDKSessionInfo | None

337```

338 

339#### Paramètres

340 

341| Paramètre | Type | Par défaut | Description |

342| :----------- | :------------ | :--------- | :---------------------------------------------------------------------------------------- |

343| `session_id` | `str` | requis | UUID de la session à rechercher |

344| `directory` | `str \| None` | `None` | Chemin du répertoire de projet. Quand omis, recherche dans tous les répertoires de projet |

345 

346Retourne [`SDKSessionInfo`](#return-type-sdk-session-info), ou `None` si la session n'est pas trouvée.

347 

348#### Exemple

349 

350Recherchez les métadonnées d'une seule session sans scanner le répertoire de projet. Utile quand vous avez déjà un ID de session d'une exécution précédente.

351 

352```python theme={null}

353from claude_agent_sdk import get_session_info

354 

355info = get_session_info("550e8400-e29b-41d4-a716-446655440000")

356if info:

357 print(f"{info.summary} (branch: {info.git_branch}, tag: {info.tag})")

358```

359 

360### `rename_session()`

361 

362Renomme une session en ajoutant une entrée de titre personnalisé. Les appels répétés sont sûrs ; le titre le plus récent gagne. Synchrone.

363 

364```python theme={null}

365def rename_session(

366 session_id: str,

367 title: str,

368 directory: str | None = None,

369) -> None

370```

371 

372#### Paramètres

373 

374| Paramètre | Type | Par défaut | Description |

375| :----------- | :------------ | :--------- | :---------------------------------------------------------------------------------------- |

376| `session_id` | `str` | requis | UUID de la session à renommer |

377| `title` | `str` | requis | Nouveau titre. Doit être non-vide après suppression des espaces |

378| `directory` | `str \| None` | `None` | Chemin du répertoire de projet. Quand omis, recherche dans tous les répertoires de projet |

379 

380Lève `ValueError` si `session_id` n'est pas un UUID valide ou si `title` est vide ; `FileNotFoundError` si la session ne peut pas être trouvée.

381 

382#### Exemple

383 

384Renommez la session la plus récente pour qu'elle soit plus facile à trouver plus tard. Le nouveau titre apparaît dans [`SDKSessionInfo.custom_title`](#return-type-sdk-session-info) lors des lectures ultérieures.

385 

386```python theme={null}

387from claude_agent_sdk import list_sessions, rename_session

388 

389sessions = list_sessions(directory="/path/to/project", limit=1)

390if sessions:

391 rename_session(sessions[0].session_id, "Refactor auth module")

392```

393 

394### `tag_session()`

395 

396Étiquette une session. Passez `None` pour effacer l'étiquette. Les appels répétés sont sûrs ; l'étiquette la plus récente gagne. Synchrone.

397 

398```python theme={null}

399def tag_session(

400 session_id: str,

401 tag: str | None,

402 directory: str | None = None,

403) -> None

404```

405 

406#### Paramètres

407 

408| Paramètre | Type | Par défaut | Description |

409| :----------- | :------------ | :--------- | :---------------------------------------------------------------------------------------- |

410| `session_id` | `str` | requis | UUID de la session à étiqueter |

411| `tag` | `str \| None` | requis | Chaîne d'étiquette, ou `None` pour effacer. Nettoyée Unicode avant stockage |

412| `directory` | `str \| None` | `None` | Chemin du répertoire de projet. Quand omis, recherche dans tous les répertoires de projet |

413 

414Lève `ValueError` si `session_id` n'est pas un UUID valide ou si `tag` est vide après nettoyage ; `FileNotFoundError` si la session ne peut pas être trouvée.

415 

416#### Exemple

417 

418Étiquetez une session, puis filtrez par cette étiquette lors d'une lecture ultérieure. Passez `None` pour effacer une étiquette existante.

419 

420```python theme={null}

421from claude_agent_sdk import list_sessions, tag_session

422 

423# Tag a session

424tag_session("550e8400-e29b-41d4-a716-446655440000", "needs-review")

425 

426# Later: find all sessions with that tag

427for session in list_sessions(directory="/path/to/project"):

428 if session.tag == "needs-review":

429 print(session.summary)

430```

431 

432## Classes

433 

434### `ClaudeSDKClient`

435 

436**Maintient une session de conversation sur plusieurs échanges.** C'est l'équivalent Python de la façon dont la fonction `query()` du SDK TypeScript fonctionne en interne - elle crée un objet client qui peut continuer les conversations.

437 

438#### Fonctionnalités clés

439 

440* **Continuité de session** : Maintient le contexte de conversation sur plusieurs appels `query()`

441* **Même conversation** : La session conserve les messages précédents

442* **Support des interruptions** : Peut arrêter l'exécution en cours de tâche

443* **Cycle de vie explicite** : Vous contrôlez quand la session commence et se termine

444* **Flux basé sur les réponses** : Peut réagir aux réponses et envoyer des suivis

445* **Outils personnalisés et hooks** : Supporte les outils personnalisés (créés avec le décorateur `@tool`) et les hooks

446 

447```python theme={null}

448class ClaudeSDKClient:

449 def __init__(self, options: ClaudeAgentOptions | None = None, transport: Transport | None = None)

450 async def connect(self, prompt: str | AsyncIterable[dict] | None = None) -> None

451 async def query(self, prompt: str | AsyncIterable[dict], session_id: str = "default") -> None

452 async def receive_messages(self) -> AsyncIterator[Message]

453 async def receive_response(self) -> AsyncIterator[Message]

454 async def interrupt(self) -> None

455 async def set_permission_mode(self, mode: str) -> None

456 async def set_model(self, model: str | None = None) -> None

457 async def rewind_files(self, user_message_id: str) -> None

458 async def get_mcp_status(self) -> McpStatusResponse

459 async def reconnect_mcp_server(self, server_name: str) -> None

460 async def toggle_mcp_server(self, server_name: str, enabled: bool) -> None

461 async def stop_task(self, task_id: str) -> None

462 async def get_server_info(self) -> dict[str, Any] | None

463 async def disconnect(self) -> None

464```

465 

466#### Méthodes

467 

468| Méthode | Description |

469| :---------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

470| `__init__(options)` | Initialise le client avec une configuration optionnelle |

471| `connect(prompt)` | Se connecte à Claude avec un prompt initial optionnel ou un flux de messages |

472| `query(prompt, session_id)` | Envoie une nouvelle requête en mode streaming |

473| `receive_messages()` | Reçoit tous les messages de Claude comme un itérateur asynchrone |

474| `receive_response()` | Reçoit les messages jusqu'à et incluant un ResultMessage |

475| `interrupt()` | Envoie un signal d'interruption (fonctionne uniquement en mode streaming) |

476| `set_permission_mode(mode)` | Change le mode de permission pour la session actuelle |

477| `set_model(model)` | Change le modèle pour la session actuelle. Passez `None` pour réinitialiser à la valeur par défaut |

478| `rewind_files(user_message_id)` | Restaure les fichiers à leur état au message utilisateur spécifié. Nécessite `enable_file_checkpointing=True`. Voir [File checkpointing](/fr/agent-sdk/file-checkpointing) |

479| `get_mcp_status()` | Obtient le statut de tous les serveurs MCP configurés. Retourne [`McpStatusResponse`](#mcp-status-response) |

480| `reconnect_mcp_server(server_name)` | Réessaye de se connecter à un serveur MCP qui a échoué ou a été déconnecté |

481| `toggle_mcp_server(server_name, enabled)` | Active ou désactive un serveur MCP en cours de session. La désactivation supprime ses outils |

482| `stop_task(task_id)` | Arrête une tâche de fond en cours d'exécution. Un [`TaskNotificationMessage`](#task-notification-message) avec le statut `"stopped"` suit dans le flux de messages |

483| `get_server_info()` | Obtient les informations du serveur incluant l'ID de session et les capacités |

484| `disconnect()` | Se déconnecte de Claude |

485 

486#### Support du gestionnaire de contexte

487 

488Le client peut être utilisé comme un gestionnaire de contexte asynchrone pour la gestion automatique de la connexion :

489 

490```python theme={null}

491async with ClaudeSDKClient() as client:

492 await client.query("Hello Claude")

493 async for message in client.receive_response():

494 print(message)

495```

496 

497> **Important :** Lors de l'itération sur les messages, évitez d'utiliser `break` pour quitter tôt car cela peut causer des problèmes de nettoyage asyncio. À la place, laissez l'itération se terminer naturellement ou utilisez des drapeaux pour suivre quand vous avez trouvé ce que vous cherchiez.

498 

499#### Exemple - Continuer une conversation

500 

501```python theme={null}

502import asyncio

503from claude_agent_sdk import ClaudeSDKClient, AssistantMessage, TextBlock, ResultMessage

504 

505 

506async def main():

507 async with ClaudeSDKClient() as client:

508 # First question

509 await client.query("What's the capital of France?")

510 

511 # Process response

512 async for message in client.receive_response():

513 if isinstance(message, AssistantMessage):

514 for block in message.content:

515 if isinstance(block, TextBlock):

516 print(f"Claude: {block.text}")

517 

518 # Follow-up question - the session retains the previous context

519 await client.query("What's the population of that city?")

520 

521 async for message in client.receive_response():

522 if isinstance(message, AssistantMessage):

523 for block in message.content:

524 if isinstance(block, TextBlock):

525 print(f"Claude: {block.text}")

526 

527 # Another follow-up - still in the same conversation

528 await client.query("What are some famous landmarks there?")

529 

530 async for message in client.receive_response():

531 if isinstance(message, AssistantMessage):

532 for block in message.content:

533 if isinstance(block, TextBlock):

534 print(f"Claude: {block.text}")

535 

536 

537asyncio.run(main())

538```

539 

540#### Exemple - Entrée en streaming avec ClaudeSDKClient

541 

542```python theme={null}

543import asyncio

544from claude_agent_sdk import ClaudeSDKClient

545 

546 

547async def message_stream():

548 """Generate messages dynamically."""

549 yield {

550 "type": "user",

551 "message": {"role": "user", "content": "Analyze the following data:"},

552 }

553 await asyncio.sleep(0.5)

554 yield {

555 "type": "user",

556 "message": {"role": "user", "content": "Temperature: 25°C, Humidity: 60%"},

557 }

558 await asyncio.sleep(0.5)

559 yield {

560 "type": "user",

561 "message": {"role": "user", "content": "What patterns do you see?"},

562 }

563 

564 

565async def main():

566 async with ClaudeSDKClient() as client:

567 # Stream input to Claude

568 await client.query(message_stream())

569 

570 # Process response

571 async for message in client.receive_response():

572 print(message)

573 

574 # Follow-up in same session

575 await client.query("Should we be concerned about these readings?")

576 

577 async for message in client.receive_response():

578 print(message)

579 

580 

581asyncio.run(main())

582```

583 

584#### Exemple - Utiliser les interruptions

585 

586```python theme={null}

587import asyncio

588from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions, ResultMessage

589 

590 

591async def interruptible_task():

592 options = ClaudeAgentOptions(allowed_tools=["Bash"], permission_mode="acceptEdits")

593 

594 async with ClaudeSDKClient(options=options) as client:

595 # Start a long-running task

596 await client.query("Count from 1 to 100 slowly, using the bash sleep command")

597 

598 # Let it run for a bit

599 await asyncio.sleep(2)

600 

601 # Interrupt the task

602 await client.interrupt()

603 print("Task interrupted!")

604 

605 # Drain the interrupted task's messages (including its ResultMessage)

606 async for message in client.receive_response():

607 if isinstance(message, ResultMessage):

608 print(f"Interrupted task finished with subtype={message.subtype!r}")

609 # subtype is "error_during_execution" for interrupted tasks

610 

611 # Send a new command

612 await client.query("Just say hello instead")

613 

614 # Now receive the new response

615 async for message in client.receive_response():

616 if isinstance(message, ResultMessage) and message.subtype == "success":

617 print(f"New result: {message.result}")

618 

619 

620asyncio.run(interruptible_task())

621```

622 

623<Note>

624 **Comportement du buffer après interruption :** `interrupt()` envoie un signal d'arrêt mais ne vide pas le buffer de messages. Les messages déjà produits par la tâche interrompue, incluant son `ResultMessage` (avec `subtype="error_during_execution"`), restent dans le flux. Vous devez les vider avec `receive_response()` avant de lire la réponse à une nouvelle requête. Si vous envoyez une nouvelle requête immédiatement après `interrupt()` et appelez `receive_response()` une seule fois, vous recevrez les messages de la tâche interrompue, pas la réponse de la nouvelle requête.

625</Note>

626 

627#### Exemple - Contrôle avancé des permissions

628 

629```python theme={null}

630from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions

631from claude_agent_sdk.types import (

632 PermissionResultAllow,

633 PermissionResultDeny,

634 ToolPermissionContext,

635)

636 

637 

638async def custom_permission_handler(

639 tool_name: str, input_data: dict, context: ToolPermissionContext

640) -> PermissionResultAllow | PermissionResultDeny:

641 """Custom logic for tool permissions."""

642 

643 # Block writes to system directories

644 if tool_name == "Write" and input_data.get("file_path", "").startswith("/system/"):

645 return PermissionResultDeny(

646 message="System directory write not allowed", interrupt=True

647 )

648 

649 # Redirect sensitive file operations

650 if tool_name in ["Write", "Edit"] and "config" in input_data.get("file_path", ""):

651 safe_path = f"./sandbox/{input_data['file_path']}"

652 return PermissionResultAllow(

653 updated_input={**input_data, "file_path": safe_path}

654 )

655 

656 # Allow everything else

657 return PermissionResultAllow(updated_input=input_data)

658 

659 

660async def main():

661 options = ClaudeAgentOptions(

662 can_use_tool=custom_permission_handler, allowed_tools=["Read", "Write", "Edit"]

663 )

664 

665 async with ClaudeSDKClient(options=options) as client:

666 await client.query("Update the system config file")

667 

668 async for message in client.receive_response():

669 # Will use sandbox path instead

670 print(message)

671 

672 

673asyncio.run(main())

674```

675 

676## Types

677 

678<Note>

679 **`@dataclass` vs `TypedDict` :** Ce SDK utilise deux types de types. Les classes décorées avec `@dataclass` (telles que `ResultMessage`, `AgentDefinition`, `TextBlock`) sont des instances d'objet à l'exécution et supportent l'accès par attribut : `msg.result`. Les classes définies avec `TypedDict` (telles que `ThinkingConfigEnabled`, `McpStdioServerConfig`, `SyncHookJSONOutput`) sont **des dicts simples à l'exécution** et nécessitent l'accès par clé : `config["budget_tokens"]`, pas `config.budget_tokens`. La syntaxe d'appel `ClassName(field=value)` fonctionne pour les deux, mais seules les dataclasses produisent des objets avec des attributs.

680</Note>

681 

682### `SdkMcpTool`

683 

684Définition pour un outil MCP SDK créé avec le décorateur `@tool`.

685 

686```python theme={null}

687@dataclass

688class SdkMcpTool(Generic[T]):

689 name: str

690 description: str

691 input_schema: type[T] | dict[str, Any]

692 handler: Callable[[T], Awaitable[dict[str, Any]]]

693 annotations: ToolAnnotations | None = None

694```

695 

696| Propriété | Type | Description |

697| :------------- | :----------------------------------------- | :------------------------------------------------------------------------------------------------------------- |

698| `name` | `str` | Identifiant unique pour l'outil |

699| `description` | `str` | Description lisible |

700| `input_schema` | `type[T] \| dict[str, Any]` | Schéma pour la validation d'entrée |

701| `handler` | `Callable[[T], Awaitable[dict[str, Any]]]` | Fonction asynchrone qui gère l'exécution de l'outil |

702| `annotations` | `ToolAnnotations \| None` | Annotations MCP optionnelles (par exemple, `readOnlyHint`, `destructiveHint`, `openWorldHint`). De `mcp.types` |

703 

704### `Transport`

705 

706Classe de base abstraite pour les implémentations de transport personnalisées. Utilisez ceci pour communiquer avec le processus Claude sur un canal personnalisé (par exemple, une connexion distante au lieu d'un sous-processus local).

707 

708<Warning>

709 C'est une API interne de bas niveau. L'interface peut changer dans les versions futures. Les implémentations personnalisées doivent être mises à jour pour correspondre à tout changement d'interface.

710</Warning>

711 

712```python theme={null}

713from abc import ABC, abstractmethod

714from collections.abc import AsyncIterator

715from typing import Any

716 

717 

718class Transport(ABC):

719 @abstractmethod

720 async def connect(self) -> None: ...

721 

722 @abstractmethod

723 async def write(self, data: str) -> None: ...

724 

725 @abstractmethod

726 def read_messages(self) -> AsyncIterator[dict[str, Any]]: ...

727 

728 @abstractmethod

729 async def close(self) -> None: ...

730 

731 @abstractmethod

732 def is_ready(self) -> bool: ...

733 

734 @abstractmethod

735 async def end_input(self) -> None: ...

736```

737 

738| Méthode | Description |

739| :---------------- | :--------------------------------------------------------------------------------------- |

740| `connect()` | Connecte le transport et prépare la communication |

741| `write(data)` | Écrit les données brutes (JSON + nouvelle ligne) dans le transport |

742| `read_messages()` | Itérateur asynchrone qui produit les messages JSON analysés |

743| `close()` | Ferme la connexion et nettoie les ressources |

744| `is_ready()` | Retourne `True` si le transport peut envoyer et recevoir |

745| `end_input()` | Ferme le flux d'entrée (par exemple, fermer stdin pour les transports de sous-processus) |

746 

747Importation : `from claude_agent_sdk import Transport`

748 

749### `ClaudeAgentOptions`

750 

751Dataclass de configuration pour les requêtes Claude Code.

752 

753```python theme={null}

754@dataclass

755class ClaudeAgentOptions:

756 tools: list[str] | ToolsPreset | None = None

757 allowed_tools: list[str] = field(default_factory=list)

758 system_prompt: str | SystemPromptPreset | None = None

759 mcp_servers: dict[str, McpServerConfig] | str | Path = field(default_factory=dict)

760 permission_mode: PermissionMode | None = None

761 continue_conversation: bool = False

762 resume: str | None = None

763 max_turns: int | None = None

764 max_budget_usd: float | None = None

765 disallowed_tools: list[str] = field(default_factory=list)

766 model: str | None = None

767 fallback_model: str | None = None

768 betas: list[SdkBeta] = field(default_factory=list)

769 output_format: dict[str, Any] | None = None

770 permission_prompt_tool_name: str | None = None

771 cwd: str | Path | None = None

772 cli_path: str | Path | None = None

773 settings: str | None = None

774 add_dirs: list[str | Path] = field(default_factory=list)

775 env: dict[str, str] = field(default_factory=dict)

776 extra_args: dict[str, str | None] = field(default_factory=dict)

777 max_buffer_size: int | None = None

778 debug_stderr: Any = sys.stderr # Deprecated

779 stderr: Callable[[str], None] | None = None

780 can_use_tool: CanUseTool | None = None

781 hooks: dict[HookEvent, list[HookMatcher]] | None = None

782 user: str | None = None

783 include_partial_messages: bool = False

784 fork_session: bool = False

785 agents: dict[str, AgentDefinition] | None = None

786 setting_sources: list[SettingSource] | None = None

787 sandbox: SandboxSettings | None = None

788 plugins: list[SdkPluginConfig] = field(default_factory=list)

789 max_thinking_tokens: int | None = None # Deprecated: use thinking instead

790 thinking: ThinkingConfig | None = None

791 effort: Literal["low", "medium", "high", "max"] | None = None

792 enable_file_checkpointing: bool = False

793 session_store: SessionStore | None = None

794```

795 

796| Propriété | Type | Par défaut | Description |

797| :---------------------------- | :------------------------------------------------------------------------------------- | :--------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

798| `tools` | `list[str] \| ToolsPreset \| None` | `None` | Configuration des outils. Utilisez `{"type": "preset", "preset": "claude_code"}` pour les outils par défaut de Claude Code |

799| `allowed_tools` | `list[str]` | `[]` | Outils à approuver automatiquement sans demander. Ceci ne restreint pas Claude à seulement ces outils ; les outils non listés passent par `permission_mode` et `can_use_tool`. Utilisez `disallowed_tools` pour bloquer les outils. Voir [Permissions](/fr/agent-sdk/permissions#allow-and-deny-rules) |

800| `system_prompt` | `str \| SystemPromptPreset \| None` | `None` | Configuration du prompt système. Passez une chaîne pour un prompt personnalisé, ou utilisez `{"type": "preset", "preset": "claude_code"}` pour le prompt système de Claude Code. Ajoutez `"append"` pour étendre le preset |

801| `mcp_servers` | `dict[str, McpServerConfig] \| str \| Path` | `{}` | Configurations de serveur MCP ou chemin vers le fichier de configuration |

802| `permission_mode` | `PermissionMode \| None` | `None` | Mode de permission pour l'utilisation des outils |

803| `continue_conversation` | `bool` | `False` | Continuer la conversation la plus récente |

804| `resume` | `str \| None` | `None` | ID de session à reprendre |

805| `max_turns` | `int \| None` | `None` | Nombre maximum de tours agentiques (allers-retours d'utilisation d'outils) |

806| `max_budget_usd` | `float \| None` | `None` | Arrêtez la requête quand l'estimation du coût côté client atteint cette valeur USD. Comparé à la même estimation que `total_cost_usd` ; voir [Suivi du coût et de l'utilisation](/fr/agent-sdk/cost-tracking) pour les avertissements de précision |

807| `disallowed_tools` | `list[str]` | `[]` | Outils à toujours refuser. Les règles de refus sont vérifiées en premier et remplacent `allowed_tools` et `permission_mode` (incluant `bypassPermissions`) |

808| `enable_file_checkpointing` | `bool` | `False` | Activez le suivi des modifications de fichiers pour le rembobinage. Voir [Sauvegarde de points de contrôle de fichiers](/fr/agent-sdk/file-checkpointing) |

809| `model` | `str \| None` | `None` | Modèle Claude à utiliser |

810| `fallback_model` | `str \| None` | `None` | Modèle de secours à utiliser si le modèle principal échoue |

811| `betas` | `list[SdkBeta]` | `[]` | Fonctionnalités bêta à activer. Voir [`SdkBeta`](#sdk-beta) pour les options disponibles |

812| `output_format` | `dict[str, Any] \| None` | `None` | Format de sortie pour les réponses structurées (par exemple, `{"type": "json_schema", "schema": {...}}`). Voir [Sorties structurées](/fr/agent-sdk/structured-outputs) pour les détails |

813| `permission_prompt_tool_name` | `str \| None` | `None` | Nom de l'outil MCP pour les prompts de permission |

814| `cwd` | `str \| Path \| None` | `None` | Répertoire de travail actuel |

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

816| `settings` | `str \| None` | `None` | Chemin vers le fichier de paramètres |

817| `add_dirs` | `list[str \| Path]` | `[]` | Répertoires supplémentaires auxquels Claude peut accéder |

818| `env` | `dict[str, str]` | `{}` | Variables d'environnement fusionnées au-dessus de l'environnement de processus hérité. Voir [Variables d'environnement](/fr/env-vars) pour les variables que le CLI sous-jacent lit |

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

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

821| `debug_stderr` | `Any` | `sys.stderr` | *Déprécié* - Objet de type fichier pour la sortie de débogage. Utilisez plutôt le callback `stderr` |

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

823| `can_use_tool` | [`CanUseTool`](#can-use-tool) ` \| None` | `None` | Fonction de callback de permission d'outil. Voir [Types de permission](#can-use-tool) pour les détails |

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

825| `user` | `str \| None` | `None` | Identifiant utilisateur |

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

827| `fork_session` | `bool` | `False` | Quand reprendre avec `resume`, bifurquer vers un nouvel ID de session au lieu de continuer la session originale |

828| `agents` | `dict[str, AgentDefinition] \| None` | `None` | Sous-agents définis programmatiquement |

829| `plugins` | `list[SdkPluginConfig]` | `[]` | Charger les plugins personnalisés à partir de chemins locaux. Voir [Plugins](/fr/agent-sdk/plugins) pour les détails |

830| `sandbox` | [`SandboxSettings`](#sandbox-settings) ` \| None` | `None` | Configurez le comportement du sandbox programmatiquement. Voir [Paramètres du sandbox](#sandbox-settings) pour les détails |

831| `setting_sources` | `list[SettingSource] \| None` | `None` (CLI defaults: all sources) | Contrôlez quels paramètres du système de fichiers charger. Passez `[]` pour désactiver les paramètres utilisateur, projet et locaux. Les paramètres de politique gérée se chargent indépendamment. Voir [Utiliser les fonctionnalités de Claude Code](/fr/agent-sdk/claude-code-features#what-settingsources-does-not-control) |

832| `max_thinking_tokens` | `int \| None` | `None` | *Déprécié* - Tokens maximum pour les blocs de réflexion. Utilisez `thinking` à la place |

833| `thinking` | [`ThinkingConfig`](#thinking-config) ` \| None` | `None` | Contrôle le comportement de la réflexion étendue. Prend la priorité sur `max_thinking_tokens` |

834| `effort` | `Literal["low", "medium", "high", "max"] \| None` | `None` | Niveau d'effort pour la profondeur de réflexion |

835| `session_store` | [`SessionStore`](/fr/agent-sdk/session-storage#the-session-store-interface) ` \| None` | `None` | Miroir les transcriptions de session vers un backend externe pour que n'importe quel hôte puisse les reprendre. Voir [Persister les sessions vers un stockage externe](/fr/agent-sdk/session-storage) |

836 

837### `OutputFormat`

838 

839Configuration pour la validation de sortie structurée. Passez ceci comme un `dict` au champ `output_format` sur `ClaudeAgentOptions` :

840 

841```python theme={null}

842# Expected dict shape for output_format

843{

844 "type": "json_schema",

845 "schema": {...}, # Your JSON Schema definition

846}

847```

848 

849| Champ | Requis | Description |

850| :------- | :----- | :------------------------------------------------------- |

851| `type` | Oui | Doit être `"json_schema"` pour la validation JSON Schema |

852| `schema` | Oui | Définition JSON Schema pour la validation de sortie |

853 

854### `SystemPromptPreset`

855 

856Configuration pour utiliser le preset de prompt système de Claude Code avec des ajouts optionnels.

857 

858```python theme={null}

859class SystemPromptPreset(TypedDict):

860 type: Literal["preset"]

861 preset: Literal["claude_code"]

862 append: NotRequired[str]

863 exclude_dynamic_sections: NotRequired[bool]

864```

865 

866| Champ | Requis | Description |

867| :------------------------- | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

868| `type` | Oui | Doit être `"preset"` pour utiliser un preset de prompt système |

869| `preset` | Oui | Doit être `"claude_code"` pour utiliser le prompt système de Claude Code |

870| `append` | Non | Instructions supplémentaires à ajouter au preset de prompt système |

871| `exclude_dynamic_sections` | Non | Déplacez le contexte par session comme le répertoire de travail, le statut git et les chemins de mémoire du prompt système vers le premier message utilisateur. Améliore la réutilisation du cache de prompt entre les utilisateurs et les machines. Voir [Modifier les prompts système](/fr/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) |

872 

873### `SettingSource`

874 

875Contrôle quelles sources de configuration basées sur le système de fichiers le SDK charge les paramètres à partir de.

876 

877```python theme={null}

878SettingSource = Literal["user", "project", "local"]

879```

880 

881| Valeur | Description | Emplacement |

882| :---------- | :-------------------------------------------------- | :---------------------------- |

883| `"user"` | Paramètres utilisateur globaux | `~/.claude/settings.json` |

884| `"project"` | Paramètres de projet partagés (contrôle de version) | `.claude/settings.json` |

885| `"local"` | Paramètres de projet locaux (gitignored) | `.claude/settings.local.json` |

886 

887#### Comportement par défaut

888 

889Quand `setting_sources` est omis ou `None`, `query()` charge les mêmes paramètres du système de fichiers que le CLI Claude Code : utilisateur, projet et local. Les paramètres de politique gérée sont chargés dans tous les cas. Voir [Ce que settingSources ne contrôle pas](/fr/agent-sdk/claude-code-features#what-settingsources-does-not-control) pour les entrées qui sont lues indépendamment de cette option, et comment les désactiver.

890 

891#### Pourquoi utiliser setting\_sources

892 

893**Désactiver les paramètres du système de fichiers :**

894 

895```python theme={null}

896# Do not load user, project, or local settings from disk

897from claude_agent_sdk import query, ClaudeAgentOptions

898 

899async for message in query(

900 prompt="Analyze this code",

901 options=ClaudeAgentOptions(

902 setting_sources=[]

903 ),

904):

905 print(message)

906```

907 

908<Note>

909 Dans le SDK Python 0.1.59 et antérieur, une liste vide était traitée de la même manière que l'omission de l'option, donc `setting_sources=[]` n'a pas désactivé les paramètres du système de fichiers. Mettez à niveau vers une version plus récente si vous avez besoin qu'une liste vide prenne effet. Le SDK TypeScript n'est pas affecté.

910</Note>

911 

912**Charger tous les paramètres du système de fichiers explicitement :**

913 

914```python theme={null}

915from claude_agent_sdk import query, ClaudeAgentOptions

916 

917async for message in query(

918 prompt="Analyze this code",

919 options=ClaudeAgentOptions(

920 setting_sources=["user", "project", "local"]

921 ),

922):

923 print(message)

924```

925 

926**Charger uniquement des sources de paramètres spécifiques :**

927 

928```python theme={null}

929# Load only project settings, ignore user and local

930async for message in query(

931 prompt="Run CI checks",

932 options=ClaudeAgentOptions(

933 setting_sources=["project"] # Only .claude/settings.json

934 ),

935):

936 print(message)

937```

938 

939**Environnements de test et CI :**

940 

941```python theme={null}

942# Ensure consistent behavior in CI by excluding local settings

943async for message in query(

944 prompt="Run tests",

945 options=ClaudeAgentOptions(

946 setting_sources=["project"], # Only team-shared settings

947 permission_mode="bypassPermissions",

948 ),

949):

950 print(message)

951```

952 

953**Applications SDK uniquement :**

954 

955```python theme={null}

956# Define everything programmatically.

957# Pass [] to opt out of filesystem setting sources.

958async for message in query(

959 prompt="Review this PR",

960 options=ClaudeAgentOptions(

961 setting_sources=[],

962 agents={...},

963 mcp_servers={...},

964 allowed_tools=["Read", "Grep", "Glob"],

965 ),

966):

967 print(message)

968```

969 

970**Chargement des instructions de projet CLAUDE.md :**

971 

972```python theme={null}

973# Load project settings to include CLAUDE.md files

974async for message in query(

975 prompt="Add a new feature following project conventions",

976 options=ClaudeAgentOptions(

977 system_prompt={

978 "type": "preset",

979 "preset": "claude_code", # Use Claude Code's system prompt

980 },

981 setting_sources=["project"], # Loads CLAUDE.md from project

982 allowed_tools=["Read", "Write", "Edit"],

983 ),

984):

985 print(message)

986```

987 

988#### Précédence des paramètres

989 

990Quand plusieurs sources sont chargées, les paramètres sont fusionnés avec cette précédence (la plus haute à la plus basse) :

991 

9921. Paramètres locaux (`.claude/settings.local.json`)

9932. Paramètres de projet (`.claude/settings.json`)

9943. Paramètres utilisateur (`~/.claude/settings.json`)

995 

996Les options programmatiques telles que `agents` et `allowed_tools` remplacent les paramètres du système de fichiers utilisateur, projet et local. Les paramètres de politique gérée prennent la priorité sur les options programmatiques.

997 

998### `AgentDefinition`

999 

1000Configuration pour un sous-agent défini programmatiquement.

1001 

1002```python theme={null}

1003@dataclass

1004class AgentDefinition:

1005 description: str

1006 prompt: str

1007 tools: list[str] | None = None

1008 disallowedTools: list[str] | None = None

1009 model: str | None = None

1010 skills: list[str] | None = None

1011 memory: Literal["user", "project", "local"] | None = None

1012 mcpServers: list[str | dict[str, Any]] | None = None

1013 initialPrompt: str | None = None

1014 maxTurns: int | None = None

1015 background: bool | None = None

1016 effort: Literal["low", "medium", "high", "max"] | int | None = None

1017 permissionMode: PermissionMode | None = None

1018```

1019 

1020| Champ | Requis | Description |

1021| :---------------- | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1022| `description` | Oui | Description en langage naturel de quand utiliser cet agent |

1023| `prompt` | Oui | Le prompt système de l'agent |

1024| `tools` | Non | Tableau des noms d'outils autorisés. Si omis, hérite de tous les outils |

1025| `disallowedTools` | Non | Tableau des noms d'outils à supprimer de l'ensemble d'outils de l'agent |

1026| `model` | Non | Remplacement de modèle pour cet agent. Accepte un alias tel que `"sonnet"`, `"opus"`, `"haiku"`, ou `"inherit"`, ou un ID de modèle complet. Si omis, utilise le modèle principal |

1027| `skills` | Non | Liste des noms de compétences disponibles pour cet agent |

1028| `memory` | Non | Source de mémoire pour cet agent : `"user"`, `"project"`, ou `"local"` |

1029| `mcpServers` | Non | Serveurs MCP disponibles pour cet agent. Chaque entrée est un nom de serveur ou un dict `{name: config}` en ligne |

1030| `initialPrompt` | Non | Auto-soumis comme le premier tour utilisateur quand cet agent s'exécute comme l'agent du fil principal |

1031| `maxTurns` | Non | Nombre maximum de tours agentiques avant que l'agent s'arrête |

1032| `background` | Non | Exécutez cet agent comme une tâche de fond non-bloquante quand invoqué |

1033| `effort` | Non | Niveau d'effort de raisonnement pour cet agent. Accepte un niveau nommé ou un entier |

1034| `permissionMode` | Non | Mode de permission pour l'exécution des outils dans cet agent. Voir [`PermissionMode`](#permission-mode) |

1035 

1036<Note>

1037 Les noms de champs `AgentDefinition` utilisent camelCase, tels que `disallowedTools`, `permissionMode`, et `maxTurns`. Ces noms correspondent directement au format de fil partagé avec le SDK TypeScript. Ceci diffère de `ClaudeAgentOptions`, qui utilise Python snake\_case pour les champs de niveau supérieur équivalents tels que `disallowed_tools` et `permission_mode`. Parce que `AgentDefinition` est une dataclass, passer un mot-clé snake\_case lève une `TypeError` au moment de la construction.

1038</Note>

1039 

1040### `PermissionMode`

1041 

1042Modes de permission pour contrôler l'exécution des outils.

1043 

1044```python theme={null}

1045PermissionMode = Literal[

1046 "default", # Standard permission behavior

1047 "acceptEdits", # Auto-accept file edits

1048 "plan", # Planning mode - no execution

1049 "dontAsk", # Deny anything not pre-approved instead of prompting

1050 "bypassPermissions", # Bypass all permission checks (use with caution)

1051]

1052```

1053 

1054### `CanUseTool`

1055 

1056Alias de type pour les fonctions de callback de permission d'outil.

1057 

1058```python theme={null}

1059CanUseTool = Callable[

1060 [str, dict[str, Any], ToolPermissionContext], Awaitable[PermissionResult]

1061]

1062```

1063 

1064Le callback reçoit :

1065 

1066* `tool_name` : Nom de l'outil en cours d'appel

1067* `input_data` : Les paramètres d'entrée de l'outil

1068* `context` : Un `ToolPermissionContext` avec des informations supplémentaires

1069 

1070Retourne un `PermissionResult` (soit `PermissionResultAllow` soit `PermissionResultDeny`).

1071 

1072### `ToolPermissionContext`

1073 

1074Informations de contexte passées aux callbacks de permission d'outil.

1075 

1076```python theme={null}

1077@dataclass

1078class ToolPermissionContext:

1079 signal: Any | None = None # Future: abort signal support

1080 suggestions: list[PermissionUpdate] = field(default_factory=list)

1081```

1082 

1083| Champ | Type | Description |

1084| :------------ | :----------------------- | :------------------------------------------------ |

1085| `signal` | `Any \| None` | Réservé pour le support futur du signal d'abandon |

1086| `suggestions` | `list[PermissionUpdate]` | Suggestions de mise à jour de permission du CLI |

1087 

1088### `PermissionResult`

1089 

1090Type union pour les résultats de callback de permission.

1091 

1092```python theme={null}

1093PermissionResult = PermissionResultAllow | PermissionResultDeny

1094```

1095 

1096### `PermissionResultAllow`

1097 

1098Résultat indiquant que l'appel d'outil doit être autorisé.

1099 

1100```python theme={null}

1101@dataclass

1102class PermissionResultAllow:

1103 behavior: Literal["allow"] = "allow"

1104 updated_input: dict[str, Any] | None = None

1105 updated_permissions: list[PermissionUpdate] | None = None

1106```

1107 

1108| Champ | Type | Par défaut | Description |

1109| :-------------------- | :------------------------------- | :--------- | :-------------------------------------------------- |

1110| `behavior` | `Literal["allow"]` | `"allow"` | Doit être « allow » |

1111| `updated_input` | `dict[str, Any] \| None` | `None` | Entrée modifiée à utiliser à la place de l'original |

1112| `updated_permissions` | `list[PermissionUpdate] \| None` | `None` | Mises à jour de permission à appliquer |

1113 

1114### `PermissionResultDeny`

1115 

1116Résultat indiquant que l'appel d'outil doit être refusé.

1117 

1118```python theme={null}

1119@dataclass

1120class PermissionResultDeny:

1121 behavior: Literal["deny"] = "deny"

1122 message: str = ""

1123 interrupt: bool = False

1124```

1125 

1126| Champ | Type | Par défaut | Description |

1127| :---------- | :---------------- | :--------- | :----------------------------------------------- |

1128| `behavior` | `Literal["deny"]` | `"deny"` | Doit être « deny » |

1129| `message` | `str` | `""` | Message expliquant pourquoi l'outil a été refusé |

1130| `interrupt` | `bool` | `False` | S'il faut interrompre l'exécution actuelle |

1131 

1132### `PermissionUpdate`

1133 

1134Configuration pour mettre à jour les permissions programmatiquement.

1135 

1136```python theme={null}

1137@dataclass

1138class PermissionUpdate:

1139 type: Literal[

1140 "addRules",

1141 "replaceRules",

1142 "removeRules",

1143 "setMode",

1144 "addDirectories",

1145 "removeDirectories",

1146 ]

1147 rules: list[PermissionRuleValue] | None = None

1148 behavior: Literal["allow", "deny", "ask"] | None = None

1149 mode: PermissionMode | None = None

1150 directories: list[str] | None = None

1151 destination: (

1152 Literal["userSettings", "projectSettings", "localSettings", "session"] | None

1153 ) = None

1154```

1155 

1156| Champ | Type | Description |

1157| :------------ | :---------------------------------------- | :---------------------------------------------------------------- |

1158| `type` | `Literal[...]` | Le type d'opération de mise à jour de permission |

1159| `rules` | `list[PermissionRuleValue] \| None` | Règles pour les opérations d'ajout/remplacement/suppression |

1160| `behavior` | `Literal["allow", "deny", "ask"] \| None` | Comportement pour les opérations basées sur les règles |

1161| `mode` | `PermissionMode \| None` | Mode pour l'opération setMode |

1162| `directories` | `list[str] \| None` | Répertoires pour les opérations d'ajout/suppression de répertoire |

1163| `destination` | `Literal[...] \| None` | Où appliquer la mise à jour de permission |

1164 

1165### `PermissionRuleValue`

1166 

1167Une règle à ajouter, remplacer ou supprimer dans une mise à jour de permission.

1168 

1169```python theme={null}

1170@dataclass

1171class PermissionRuleValue:

1172 tool_name: str

1173 rule_content: str | None = None

1174```

1175 

1176### `ToolsPreset`

1177 

1178Configuration des outils preset pour utiliser l'ensemble d'outils par défaut de Claude Code.

1179 

1180```python theme={null}

1181class ToolsPreset(TypedDict):

1182 type: Literal["preset"]

1183 preset: Literal["claude_code"]

1184```

1185 

1186### `ThinkingConfig`

1187 

1188Contrôle le comportement de la réflexion étendue. Une union de trois configurations :

1189 

1190```python theme={null}

1191class ThinkingConfigAdaptive(TypedDict):

1192 type: Literal["adaptive"]

1193 

1194 

1195class ThinkingConfigEnabled(TypedDict):

1196 type: Literal["enabled"]

1197 budget_tokens: int

1198 

1199 

1200class ThinkingConfigDisabled(TypedDict):

1201 type: Literal["disabled"]

1202 

1203 

1204ThinkingConfig = ThinkingConfigAdaptive | ThinkingConfigEnabled | ThinkingConfigDisabled

1205```

1206 

1207| Variante | Champs | Description |

1208| :--------- | :---------------------- | :------------------------------------------------------- |

1209| `adaptive` | `type` | Claude décide de manière adaptative quand réfléchir |

1210| `enabled` | `type`, `budget_tokens` | Activez la réflexion avec un budget de tokens spécifique |

1211| `disabled` | `type` | Désactivez la réflexion |

1212 

1213Parce que ce sont des classes `TypedDict`, ce sont des dicts simples à l'exécution. Construisez-les soit comme des littéraux dict soit appelez la classe comme un constructeur ; les deux produisent un `dict`. Accédez aux champs avec `config["budget_tokens"]`, pas `config.budget_tokens` :

1214 

1215```python theme={null}

1216from claude_agent_sdk import ClaudeAgentOptions, ThinkingConfigEnabled

1217 

1218# Option 1: dict literal (recommended, no import needed)

1219options = ClaudeAgentOptions(thinking={"type": "enabled", "budget_tokens": 20000})

1220 

1221# Option 2: constructor-style (returns a plain dict)

1222config = ThinkingConfigEnabled(type="enabled", budget_tokens=20000)

1223print(config["budget_tokens"]) # 20000

1224# config.budget_tokens would raise AttributeError

1225```

1226 

1227### `SdkBeta`

1228 

1229Type littéral pour les fonctionnalités bêta du SDK.

1230 

1231```python theme={null}

1232SdkBeta = Literal["context-1m-2025-08-07"]

1233```

1234 

1235Utilisez avec le champ `betas` dans `ClaudeAgentOptions` pour activer les fonctionnalités bêta.

1236 

1237<Warning>

1238 La bêta `context-1m-2025-08-07` est retirée à partir du 30 avril 2026. Passer cet en-tête avec Claude Sonnet 4.5 ou Sonnet 4 n'a aucun effet, et les requêtes qui dépassent la fenêtre de contexte standard de 200k tokens retournent une erreur. Pour utiliser une fenêtre de contexte de 1M tokens, migrez vers [Claude Sonnet 4.6, Claude Opus 4.6, ou Claude Opus 4.7](https://platform.claude.com/docs/en/about-claude/models/overview), qui incluent 1M de contexte à prix standard sans en-tête bêta requis.

1239</Warning>

1240 

1241### `McpSdkServerConfig`

1242 

1243Configuration pour les serveurs MCP SDK créés avec `create_sdk_mcp_server()`.

1244 

1245```python theme={null}

1246class McpSdkServerConfig(TypedDict):

1247 type: Literal["sdk"]

1248 name: str

1249 instance: Any # MCP Server instance

1250```

1251 

1252### `McpServerConfig`

1253 

1254Type union pour les configurations de serveur MCP.

1255 

1256```python theme={null}

1257McpServerConfig = (

1258 McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig

1259)

1260```

1261 

1262#### `McpStdioServerConfig`

1263 

1264```python theme={null}

1265class McpStdioServerConfig(TypedDict):

1266 type: NotRequired[Literal["stdio"]] # Optional for backwards compatibility

1267 command: str

1268 args: NotRequired[list[str]]

1269 env: NotRequired[dict[str, str]]

1270```

1271 

1272#### `McpSSEServerConfig`

1273 

1274```python theme={null}

1275class McpSSEServerConfig(TypedDict):

1276 type: Literal["sse"]

1277 url: str

1278 headers: NotRequired[dict[str, str]]

1279```

1280 

1281#### `McpHttpServerConfig`

1282 

1283```python theme={null}

1284class McpHttpServerConfig(TypedDict):

1285 type: Literal["http"]

1286 url: str

1287 headers: NotRequired[dict[str, str]]

1288```

1289 

1290### `McpServerStatusConfig`

1291 

1292La configuration d'un serveur MCP telle que rapportée par [`get_mcp_status()`](#methods). C'est l'union de toutes les variantes de transport [`McpServerConfig`](#mcp-server-config) plus une variante de sortie uniquement `claudeai-proxy` pour les serveurs proxifiés via claude.ai.

1293 

1294```python theme={null}

1295McpServerStatusConfig = (

1296 McpStdioServerConfig

1297 | McpSSEServerConfig

1298 | McpHttpServerConfig

1299 | McpSdkServerConfigStatus

1300 | McpClaudeAIProxyServerConfig

1301)

1302```

1303 

1304`McpSdkServerConfigStatus` est la forme sérialisable de [`McpSdkServerConfig`](#mcp-sdk-server-config) avec seulement les champs `type` (`"sdk"`) et `name` (`str`) ; l'`instance` en processus est omise. `McpClaudeAIProxyServerConfig` a les champs `type` (`"claudeai-proxy"`), `url` (`str`), et `id` (`str`).

1305 

1306### `McpStatusResponse`

1307 

1308Réponse de [`ClaudeSDKClient.get_mcp_status()`](#methods). Enveloppe la liste des statuts de serveur sous la clé `mcpServers`.

1309 

1310```python theme={null}

1311class McpStatusResponse(TypedDict):

1312 mcpServers: list[McpServerStatus]

1313```

1314 

1315### `McpServerStatus`

1316 

1317Statut d'un serveur MCP connecté, contenu dans [`McpStatusResponse`](#mcp-status-response).

1318 

1319```python theme={null}

1320class McpServerStatus(TypedDict):

1321 name: str

1322 status: McpServerConnectionStatus # "connected" | "failed" | "needs-auth" | "pending" | "disabled"

1323 serverInfo: NotRequired[McpServerInfo]

1324 error: NotRequired[str]

1325 config: NotRequired[McpServerStatusConfig]

1326 scope: NotRequired[str]

1327 tools: NotRequired[list[McpToolInfo]]

1328```

1329 

1330| Champ | Type | Description |

1331| :----------- | :--------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1332| `name` | `str` | Nom du serveur |

1333| `status` | `str` | L'un de `"connected"`, `"failed"`, `"needs-auth"`, `"pending"`, ou `"disabled"` |

1334| `serverInfo` | `dict` (optionnel) | Nom et version du serveur (`{"name": str, "version": str}`) |

1335| `error` | `str` (optionnel) | Message d'erreur si le serveur n'a pas pu se connecter |

1336| `config` | [`McpServerStatusConfig`](#mcp-server-status-config) (optionnel) | Configuration du serveur. Même forme que [`McpServerConfig`](#mcp-server-config) (stdio, SSE, HTTP, ou SDK), plus une variante `claudeai-proxy` pour les serveurs connectés via claude.ai |

1337| `scope` | `str` (optionnel) | Portée de la configuration |

1338| `tools` | `list` (optionnel) | Outils fournis par ce serveur, chacun avec les champs `name`, `description`, et `annotations` |

1339 

1340### `SdkPluginConfig`

1341 

1342Configuration pour charger les plugins dans le SDK.

1343 

1344```python theme={null}

1345class SdkPluginConfig(TypedDict):

1346 type: Literal["local"]

1347 path: str

1348```

1349 

1350| Champ | Type | Description |

1351| :----- | :----------------- | :------------------------------------------------------------------------- |

1352| `type` | `Literal["local"]` | Doit être `"local"` (seuls les plugins locaux sont actuellement supportés) |

1353| `path` | `str` | Chemin absolu ou relatif vers le répertoire du plugin |

1354 

1355**Exemple :**

1356 

1357```python theme={null}

1358plugins = [

1359 {"type": "local", "path": "./my-plugin"},

1360 {"type": "local", "path": "/absolute/path/to/plugin"},

1361]

1362```

1363 

1364Pour des informations complètes sur la création et l'utilisation de plugins, voir [Plugins](/fr/agent-sdk/plugins).

1365 

1366## Types de messages

1367 

1368### `Message`

1369 

1370Type union de tous les messages possibles.

1371 

1372```python theme={null}

1373Message = (

1374 UserMessage

1375 | AssistantMessage

1376 | SystemMessage

1377 | ResultMessage

1378 | StreamEvent

1379 | RateLimitEvent

1380)

1381```

1382 

1383### `UserMessage`

1384 

1385Message d'entrée utilisateur.

1386 

1387```python theme={null}

1388@dataclass

1389class UserMessage:

1390 content: str | list[ContentBlock]

1391 uuid: str | None = None

1392 parent_tool_use_id: str | None = None

1393 tool_use_result: dict[str, Any] | None = None

1394```

1395 

1396| Champ | Type | Description |

1397| :------------------- | :-------------------------- | :------------------------------------------------------------------------- |

1398| `content` | `str \| list[ContentBlock]` | Contenu du message sous forme de texte ou de blocs de contenu |

1399| `uuid` | `str \| None` | Identifiant de message unique |

1400| `parent_tool_use_id` | `str \| None` | ID d'utilisation d'outil si ce message est une réponse de résultat d'outil |

1401| `tool_use_result` | `dict[str, Any] \| None` | Données de résultat d'outil si applicable |

1402 

1403### `AssistantMessage`

1404 

1405Message de réponse d'assistant avec blocs de contenu.

1406 

1407```python theme={null}

1408@dataclass

1409class AssistantMessage:

1410 content: list[ContentBlock]

1411 model: str

1412 parent_tool_use_id: str | None = None

1413 error: AssistantMessageError | None = None

1414 usage: dict[str, Any] | None = None

1415 message_id: str | None = None

1416```

1417 

1418| Champ | Type | Description |

1419| :------------------- | :------------------------------------------------------------- | :------------------------------------------------------------------------------------------ |

1420| `content` | `list[ContentBlock]` | Liste des blocs de contenu dans la réponse |

1421| `model` | `str` | Modèle qui a généré la réponse |

1422| `parent_tool_use_id` | `str \| None` | ID d'utilisation d'outil si c'est une réponse imbriquée |

1423| `error` | [`AssistantMessageError`](#assistant-message-error) ` \| None` | Type d'erreur si la réponse a rencontré une erreur |

1424| `usage` | `dict[str, Any] \| None` | Utilisation de tokens par message (mêmes clés que [`ResultMessage.usage`](#result-message)) |

1425| `message_id` | `str \| None` | ID de message API. Plusieurs messages d'un tour partagent le même ID |

1426 

1427### `AssistantMessageError`

1428 

1429Types d'erreur possibles pour les messages d'assistant.

1430 

1431```python theme={null}

1432AssistantMessageError = Literal[

1433 "authentication_failed",

1434 "billing_error",

1435 "rate_limit",

1436 "invalid_request",

1437 "server_error",

1438 "max_output_tokens",

1439 "unknown",

1440]

1441```

1442 

1443### `SystemMessage`

1444 

1445Message système avec métadonnées.

1446 

1447```python theme={null}

1448@dataclass

1449class SystemMessage:

1450 subtype: str

1451 data: dict[str, Any]

1452```

1453 

1454### `ResultMessage`

1455 

1456Message de résultat final avec informations de coût et d'utilisation.

1457 

1458```python theme={null}

1459@dataclass

1460class ResultMessage:

1461 subtype: str

1462 duration_ms: int

1463 duration_api_ms: int

1464 is_error: bool

1465 num_turns: int

1466 session_id: str

1467 total_cost_usd: float | None = None

1468 usage: dict[str, Any] | None = None

1469 result: str | None = None

1470 stop_reason: str | None = None

1471 structured_output: Any = None

1472 model_usage: dict[str, Any] | None = None

1473```

1474 

1475Le dict `usage` contient les clés suivantes quand présentes :

1476 

1477| Clé | Type | Description |

1478| ----------------------------- | ----- | --------------------------------------------------------- |

1479| `input_tokens` | `int` | Tokens d'entrée totaux consommés. |

1480| `output_tokens` | `int` | Tokens de sortie totaux générés. |

1481| `cache_creation_input_tokens` | `int` | Tokens utilisés pour créer de nouvelles entrées de cache. |

1482| `cache_read_input_tokens` | `int` | Tokens lus à partir des entrées de cache existantes. |

1483 

1484Le dict `model_usage` mappe les noms de modèles à l'utilisation par modèle. Les clés du dict interne utilisent camelCase parce que la valeur est passée inchangée du processus CLI sous-jacent, correspondant au type TypeScript [`ModelUsage`](/fr/agent-sdk/typescript#model-usage) :

1485 

1486| Clé | Type | Description |

1487| -------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |

1488| `inputTokens` | `int` | Tokens d'entrée pour ce modèle. |

1489| `outputTokens` | `int` | Tokens de sortie pour ce modèle. |

1490| `cacheReadInputTokens` | `int` | Tokens de lecture de cache pour ce modèle. |

1491| `cacheCreationInputTokens` | `int` | Tokens de création de cache pour ce modèle. |

1492| `webSearchRequests` | `int` | Requêtes de recherche web effectuées par ce modèle. |

1493| `costUSD` | `float` | Coût estimé en USD pour ce modèle, calculé côté client. Voir [Track cost and usage](/fr/agent-sdk/cost-tracking) pour les avertissements de facturation. |

1494| `contextWindow` | `int` | Taille de la fenêtre de contexte pour ce modèle. |

1495| `maxOutputTokens` | `int` | Limite de tokens de sortie maximum pour ce modèle. |

1496 

1497### `StreamEvent`

1498 

1499Événement de flux pour les mises à jour de messages partiels pendant le streaming. Reçu uniquement quand `include_partial_messages=True` dans `ClaudeAgentOptions`. Importez via `from claude_agent_sdk.types import StreamEvent`.

1500 

1501```python theme={null}

1502@dataclass

1503class StreamEvent:

1504 uuid: str

1505 session_id: str

1506 event: dict[str, Any] # The raw Claude API stream event

1507 parent_tool_use_id: str | None = None

1508```

1509 

1510| Champ | Type | Description |

1511| :------------------- | :--------------- | :------------------------------------------------------------------------ |

1512| `uuid` | `str` | Identifiant unique pour cet événement |

1513| `session_id` | `str` | Identifiant de session |

1514| `event` | `dict[str, Any]` | Les données d'événement de flux Claude API brutes |

1515| `parent_tool_use_id` | `str \| None` | ID d'utilisation d'outil parent si cet événement provient d'un sous-agent |

1516 

1517### `RateLimitEvent`

1518 

1519Émis quand le statut de limite de débit change (par exemple, de `"allowed"` à `"allowed_warning"`). Utilisez ceci pour avertir les utilisateurs avant qu'ils ne frappent une limite dure, ou pour reculer quand le statut est `"rejected"`.

1520 

1521```python theme={null}

1522@dataclass

1523class RateLimitEvent:

1524 rate_limit_info: RateLimitInfo

1525 uuid: str

1526 session_id: str

1527```

1528 

1529| Champ | Type | Description |

1530| :---------------- | :---------------------------------- | :-------------------------------- |

1531| `rate_limit_info` | [`RateLimitInfo`](#rate-limit-info) | État actuel de la limite de débit |

1532| `uuid` | `str` | Identifiant d'événement unique |

1533| `session_id` | `str` | Identifiant de session |

1534 

1535### `RateLimitInfo`

1536 

1537État de limite de débit porté par [`RateLimitEvent`](#rate-limit-event).

1538 

1539```python theme={null}

1540RateLimitStatus = Literal["allowed", "allowed_warning", "rejected"]

1541RateLimitType = Literal[

1542 "five_hour", "seven_day", "seven_day_opus", "seven_day_sonnet", "overage"

1543]

1544 

1545 

1546@dataclass

1547class RateLimitInfo:

1548 status: RateLimitStatus

1549 resets_at: int | None = None

1550 rate_limit_type: RateLimitType | None = None

1551 utilization: float | None = None

1552 overage_status: RateLimitStatus | None = None

1553 overage_resets_at: int | None = None

1554 overage_disabled_reason: str | None = None

1555 raw: dict[str, Any] = field(default_factory=dict)

1556```

1557 

1558| Champ | Type | Description |

1559| :------------------------ | :------------------------ | :------------------------------------------------------------------------------------------------------------------- |

1560| `status` | `RateLimitStatus` | Statut actuel. `"allowed_warning"` signifie approcher la limite ; `"rejected"` signifie que la limite a été atteinte |

1561| `resets_at` | `int \| None` | Timestamp Unix quand la fenêtre de limite de débit se réinitialise |

1562| `rate_limit_type` | `RateLimitType \| None` | Quelle fenêtre de limite de débit s'applique |

1563| `utilization` | `float \| None` | Fraction de la limite de débit consommée (0.0 à 1.0) |

1564| `overage_status` | `RateLimitStatus \| None` | Statut de l'utilisation de dépassement à l'usage, si applicable |

1565| `overage_resets_at` | `int \| None` | Timestamp Unix quand la fenêtre de dépassement se réinitialise |

1566| `overage_disabled_reason` | `str \| None` | Pourquoi le dépassement est indisponible, si le statut est `"rejected"` |

1567| `raw` | `dict[str, Any]` | Dict brut complet du CLI, incluant les champs non modélisés ci-dessus |

1568 

1569### `TaskStartedMessage`

1570 

1571Émis quand une tâche de fond démarre. Une tâche de fond est tout ce qui est suivi en dehors du tour principal : une commande Bash en arrière-plan, une montre [Monitor](#monitor), un sous-agent généré via l'outil Agent, ou un agent distant. Le champ `task_type` vous dit lequel. Ce nommage n'est pas lié au renommage de l'outil `Task`-à-`Agent`.

1572 

1573```python theme={null}

1574@dataclass

1575class TaskStartedMessage(SystemMessage):

1576 task_id: str

1577 description: str

1578 uuid: str

1579 session_id: str

1580 tool_use_id: str | None = None

1581 task_type: str | None = None

1582```

1583 

1584| Champ | Type | Description |

1585| :------------ | :------------ | :--------------------------------------------------------------------------------------------------------------------------------- |

1586| `task_id` | `str` | Identifiant unique pour la tâche |

1587| `description` | `str` | Description de la tâche |

1588| `uuid` | `str` | Identifiant de message unique |

1589| `session_id` | `str` | Identifiant de session |

1590| `tool_use_id` | `str \| None` | ID d'utilisation d'outil associé |

1591| `task_type` | `str \| None` | Quel type de tâche de fond : `"local_bash"` pour Bash en arrière-plan et les montres Monitor, `"local_agent"`, ou `"remote_agent"` |

1592 

1593### `TaskUsage`

1594 

1595Données de tokens et de timing pour une tâche de fond.

1596 

1597```python theme={null}

1598class TaskUsage(TypedDict):

1599 total_tokens: int

1600 tool_uses: int

1601 duration_ms: int

1602```

1603 

1604### `TaskProgressMessage`

1605 

1606Émis périodiquement avec les mises à jour de progression pour une tâche de fond en cours d'exécution.

1607 

1608```python theme={null}

1609@dataclass

1610class TaskProgressMessage(SystemMessage):

1611 task_id: str

1612 description: str

1613 usage: TaskUsage

1614 uuid: str

1615 session_id: str

1616 tool_use_id: str | None = None

1617 last_tool_name: str | None = None

1618```

1619 

1620| Champ | Type | Description |

1621| :--------------- | :------------ | :----------------------------------------------------- |

1622| `task_id` | `str` | Identifiant unique pour la tâche |

1623| `description` | `str` | Description du statut actuel |

1624| `usage` | `TaskUsage` | Utilisation de tokens pour cette tâche jusqu'à présent |

1625| `uuid` | `str` | Identifiant de message unique |

1626| `session_id` | `str` | Identifiant de session |

1627| `tool_use_id` | `str \| None` | ID d'utilisation d'outil associé |

1628| `last_tool_name` | `str \| None` | Nom du dernier outil utilisé par la tâche |

1629 

1630### `TaskNotificationMessage`

1631 

1632Émis quand une tâche de fond se termine, échoue, ou est arrêtée. Les tâches de fond incluent les commandes Bash `run_in_background`, les montres Monitor, et les sous-agents en arrière-plan.

1633 

1634```python theme={null}

1635@dataclass

1636class TaskNotificationMessage(SystemMessage):

1637 task_id: str

1638 status: TaskNotificationStatus # "completed" | "failed" | "stopped"

1639 output_file: str

1640 summary: str

1641 uuid: str

1642 session_id: str

1643 tool_use_id: str | None = None

1644 usage: TaskUsage | None = None

1645```

1646 

1647| Champ | Type | Description |

1648| :------------ | :----------------------- | :------------------------------------------------ |

1649| `task_id` | `str` | Identifiant unique pour la tâche |

1650| `status` | `TaskNotificationStatus` | L'un de `"completed"`, `"failed"`, ou `"stopped"` |

1651| `output_file` | `str` | Chemin vers le fichier de sortie de la tâche |

1652| `summary` | `str` | Résumé du résultat de la tâche |

1653| `uuid` | `str` | Identifiant de message unique |

1654| `session_id` | `str` | Identifiant de session |

1655| `tool_use_id` | `str \| None` | ID d'utilisation d'outil associé |

1656| `usage` | `TaskUsage \| None` | Utilisation de tokens finale pour la tâche |

1657 

1658## Types de blocs de contenu

1659 

1660### `ContentBlock`

1661 

1662Type union de tous les blocs de contenu.

1663 

1664```python theme={null}

1665ContentBlock = TextBlock | ThinkingBlock | ToolUseBlock | ToolResultBlock

1666```

1667 

1668### `TextBlock`

1669 

1670Bloc de contenu texte.

1671 

1672```python theme={null}

1673@dataclass

1674class TextBlock:

1675 text: str

1676```

1677 

1678### `ThinkingBlock`

1679 

1680Bloc de contenu de réflexion (pour les modèles avec capacité de réflexion).

1681 

1682```python theme={null}

1683@dataclass

1684class ThinkingBlock:

1685 thinking: str

1686 signature: str

1687```

1688 

1689### `ToolUseBlock`

1690 

1691Bloc de requête d'utilisation d'outil.

1692 

1693```python theme={null}

1694@dataclass

1695class ToolUseBlock:

1696 id: str

1697 name: str

1698 input: dict[str, Any]

1699```

1700 

1701### `ToolResultBlock`

1702 

1703Bloc de résultat d'exécution d'outil.

1704 

1705```python theme={null}

1706@dataclass

1707class ToolResultBlock:

1708 tool_use_id: str

1709 content: str | list[dict[str, Any]] | None = None

1710 is_error: bool | None = None

1711```

1712 

1713## Types d'erreur

1714 

1715### `ClaudeSDKError`

1716 

1717Classe d'exception de base pour toutes les erreurs du SDK.

1718 

1719```python theme={null}

1720class ClaudeSDKError(Exception):

1721 """Base error for Claude SDK."""

1722```

1723 

1724### `CLINotFoundError`

1725 

1726Levée quand Claude Code CLI n'est pas installé ou introuvable.

1727 

1728```python theme={null}

1729class CLINotFoundError(CLIConnectionError):

1730 def __init__(

1731 self, message: str = "Claude Code not found", cli_path: str | None = None

1732 ):

1733 """

1734 Args:

1735 message: Error message (default: "Claude Code not found")

1736 cli_path: Optional path to the CLI that was not found

1737 """

1738```

1739 

1740### `CLIConnectionError`

1741 

1742Levée quand la connexion à Claude Code échoue.

1743 

1744```python theme={null}

1745class CLIConnectionError(ClaudeSDKError):

1746 """Failed to connect to Claude Code."""

1747```

1748 

1749### `ProcessError`

1750 

1751Levée quand le processus Claude Code échoue.

1752 

1753```python theme={null}

1754class ProcessError(ClaudeSDKError):

1755 def __init__(

1756 self, message: str, exit_code: int | None = None, stderr: str | None = None

1757 ):

1758 self.exit_code = exit_code

1759 self.stderr = stderr

1760```

1761 

1762### `CLIJSONDecodeError`

1763 

1764Levée quand l'analyse JSON échoue.

1765 

1766```python theme={null}

1767class CLIJSONDecodeError(ClaudeSDKError):

1768 def __init__(self, line: str, original_error: Exception):

1769 """

1770 Args:

1771 line: The line that failed to parse

1772 original_error: The original JSON decode exception

1773 """

1774 self.line = line

1775 self.original_error = original_error

1776```

1777 

1778## Types de hooks

1779 

1780Pour un guide complet sur l'utilisation des hooks avec des exemples et des modèles courants, voir le [guide Hooks](/fr/agent-sdk/hooks).

1781 

1782### `HookEvent`

1783 

1784Types d'événements de hook supportés.

1785 

1786```python theme={null}

1787HookEvent = Literal[

1788 "PreToolUse", # Called before tool execution

1789 "PostToolUse", # Called after tool execution

1790 "PostToolUseFailure", # Called when a tool execution fails

1791 "UserPromptSubmit", # Called when user submits a prompt

1792 "Stop", # Called when stopping execution

1793 "SubagentStop", # Called when a subagent stops

1794 "PreCompact", # Called before message compaction

1795 "Notification", # Called for notification events

1796 "SubagentStart", # Called when a subagent starts

1797 "PermissionRequest", # Called when a permission decision is needed

1798]

1799```

1800 

1801<Note>

1802 Le SDK TypeScript supporte des événements de hook supplémentaires non encore disponibles en Python : `SessionStart`, `SessionEnd`, `Setup`, `TeammateIdle`, `TaskCompleted`, `ConfigChange`, `WorktreeCreate`, `WorktreeRemove`, et `PostToolBatch`.

1803</Note>

1804 

1805### `HookCallback`

1806 

1807Définition de type pour les fonctions de callback de hook.

1808 

1809```python theme={null}

1810HookCallback = Callable[[HookInput, str | None, HookContext], Awaitable[HookJSONOutput]]

1811```

1812 

1813Paramètres :

1814 

1815* `input` : Entrée de hook fortement typée avec unions discriminées basées sur `hook_event_name` (voir [`HookInput`](#hook-input))

1816* `tool_use_id` : Identifiant d'utilisation d'outil optionnel (pour les hooks liés aux outils)

1817* `context` : Contexte de hook avec des informations supplémentaires

1818 

1819Retourne un [`HookJSONOutput`](#hook-json-output) qui peut contenir :

1820 

1821* `decision` : `"block"` pour bloquer l'action

1822* `systemMessage` : Message système à ajouter à la transcription

1823* `hookSpecificOutput` : Données de sortie spécifiques au hook

1824 

1825### `HookContext`

1826 

1827Informations de contexte passées aux callbacks de hook.

1828 

1829```python theme={null}

1830class HookContext(TypedDict):

1831 signal: Any | None # Future: abort signal support

1832```

1833 

1834### `HookMatcher`

1835 

1836Configuration pour faire correspondre les hooks à des événements ou des outils spécifiques.

1837 

1838```python theme={null}

1839@dataclass

1840class HookMatcher:

1841 matcher: str | None = (

1842 None # Tool name or pattern to match (e.g., "Bash", "Write|Edit")

1843 )

1844 hooks: list[HookCallback] = field(

1845 default_factory=list

1846 ) # List of callbacks to execute

1847 timeout: float | None = (

1848 None # Timeout in seconds for all hooks in this matcher (default: 60)

1849 )

1850```

1851 

1852### `HookInput`

1853 

1854Type union de tous les types d'entrée de hook. Le type réel dépend du champ `hook_event_name`.

1855 

1856```python theme={null}

1857HookInput = (

1858 PreToolUseHookInput

1859 | PostToolUseHookInput

1860 | PostToolUseFailureHookInput

1861 | UserPromptSubmitHookInput

1862 | StopHookInput

1863 | SubagentStopHookInput

1864 | PreCompactHookInput

1865 | NotificationHookInput

1866 | SubagentStartHookInput

1867 | PermissionRequestHookInput

1868)

1869```

1870 

1871### `BaseHookInput`

1872 

1873Champs de base présents dans tous les types d'entrée de hook.

1874 

1875```python theme={null}

1876class BaseHookInput(TypedDict):

1877 session_id: str

1878 transcript_path: str

1879 cwd: str

1880 permission_mode: NotRequired[str]

1881```

1882 

1883| Champ | Type | Description |

1884| :---------------- | :---------------- | :------------------------------------------------- |

1885| `session_id` | `str` | Identifiant de session actuel |

1886| `transcript_path` | `str` | Chemin vers le fichier de transcription de session |

1887| `cwd` | `str` | Répertoire de travail actuel |

1888| `permission_mode` | `str` (optionnel) | Mode de permission actuel |

1889 

1890### `PreToolUseHookInput`

1891 

1892Données d'entrée pour les événements de hook `PreToolUse`.

1893 

1894```python theme={null}

1895class PreToolUseHookInput(BaseHookInput):

1896 hook_event_name: Literal["PreToolUse"]

1897 tool_name: str

1898 tool_input: dict[str, Any]

1899 tool_use_id: str

1900 agent_id: NotRequired[str]

1901 agent_type: NotRequired[str]

1902```

1903 

1904| Champ | Type | Description |

1905| :---------------- | :---------------------- | :------------------------------------------------------------------------------------------ |

1906| `hook_event_name` | `Literal["PreToolUse"]` | Toujours « PreToolUse » |

1907| `tool_name` | `str` | Nom de l'outil sur le point d'être exécuté |

1908| `tool_input` | `dict[str, Any]` | Paramètres d'entrée pour l'outil |

1909| `tool_use_id` | `str` | Identifiant unique pour cette utilisation d'outil |

1910| `agent_id` | `str` (optionnel) | Identifiant de sous-agent, présent quand le hook se déclenche à l'intérieur d'un sous-agent |

1911| `agent_type` | `str` (optionnel) | Type de sous-agent, présent quand le hook se déclenche à l'intérieur d'un sous-agent |

1912 

1913### `PostToolUseHookInput`

1914 

1915Données d'entrée pour les événements de hook `PostToolUse`.

1916 

1917```python theme={null}

1918class PostToolUseHookInput(BaseHookInput):

1919 hook_event_name: Literal["PostToolUse"]

1920 tool_name: str

1921 tool_input: dict[str, Any]

1922 tool_response: Any

1923 tool_use_id: str

1924 agent_id: NotRequired[str]

1925 agent_type: NotRequired[str]

1926```

1927 

1928| Champ | Type | Description |

1929| :---------------- | :----------------------- | :------------------------------------------------------------------------------------------ |

1930| `hook_event_name` | `Literal["PostToolUse"]` | Toujours « PostToolUse » |

1931| `tool_name` | `str` | Nom de l'outil qui a été exécuté |

1932| `tool_input` | `dict[str, Any]` | Paramètres d'entrée qui ont été utilisés |

1933| `tool_response` | `Any` | Réponse de l'exécution de l'outil |

1934| `tool_use_id` | `str` | Identifiant unique pour cette utilisation d'outil |

1935| `agent_id` | `str` (optionnel) | Identifiant de sous-agent, présent quand le hook se déclenche à l'intérieur d'un sous-agent |

1936| `agent_type` | `str` (optionnel) | Type de sous-agent, présent quand le hook se déclenche à l'intérieur d'un sous-agent |

1937 

1938### `PostToolUseFailureHookInput`

1939 

1940Données d'entrée pour les événements de hook `PostToolUseFailure`. Appelé quand l'exécution d'un outil échoue.

1941 

1942```python theme={null}

1943class PostToolUseFailureHookInput(BaseHookInput):

1944 hook_event_name: Literal["PostToolUseFailure"]

1945 tool_name: str

1946 tool_input: dict[str, Any]

1947 tool_use_id: str

1948 error: str

1949 is_interrupt: NotRequired[bool]

1950 agent_id: NotRequired[str]

1951 agent_type: NotRequired[str]

1952```

1953 

1954| Champ | Type | Description |

1955| :---------------- | :------------------------------ | :------------------------------------------------------------------------------------------ |

1956| `hook_event_name` | `Literal["PostToolUseFailure"]` | Toujours « PostToolUseFailure » |

1957| `tool_name` | `str` | Nom de l'outil qui a échoué |

1958| `tool_input` | `dict[str, Any]` | Paramètres d'entrée qui ont été utilisés |

1959| `tool_use_id` | `str` | Identifiant unique pour cette utilisation d'outil |

1960| `error` | `str` | Message d'erreur de l'exécution échouée |

1961| `is_interrupt` | `bool` (optionnel) | Si l'échec a été causé par une interruption |

1962| `agent_id` | `str` (optionnel) | Identifiant de sous-agent, présent quand le hook se déclenche à l'intérieur d'un sous-agent |

1963| `agent_type` | `str` (optionnel) | Type de sous-agent, présent quand le hook se déclenche à l'intérieur d'un sous-agent |

1964 

1965### `UserPromptSubmitHookInput`

1966 

1967Données d'entrée pour les événements de hook `UserPromptSubmit`.

1968 

1969```python theme={null}

1970class UserPromptSubmitHookInput(BaseHookInput):

1971 hook_event_name: Literal["UserPromptSubmit"]

1972 prompt: str

1973```

1974 

1975| Champ | Type | Description |

1976| :---------------- | :---------------------------- | :--------------------------------- |

1977| `hook_event_name` | `Literal["UserPromptSubmit"]` | Toujours « UserPromptSubmit » |

1978| `prompt` | `str` | Le prompt soumis par l'utilisateur |

1979 

1980### `StopHookInput`

1981 

1982Données d'entrée pour les événements de hook `Stop`.

1983 

1984```python theme={null}

1985class StopHookInput(BaseHookInput):

1986 hook_event_name: Literal["Stop"]

1987 stop_hook_active: bool

1988```

1989 

1990| Champ | Type | Description |

1991| :----------------- | :---------------- | :--------------------------- |

1992| `hook_event_name` | `Literal["Stop"]` | Toujours « Stop » |

1993| `stop_hook_active` | `bool` | Si le hook d'arrêt est actif |

1994 

1995### `SubagentStopHookInput`

1996 

1997Données d'entrée pour les événements de hook `SubagentStop`.

1998 

1999```python theme={null}

2000class SubagentStopHookInput(BaseHookInput):

2001 hook_event_name: Literal["SubagentStop"]

2002 stop_hook_active: bool

2003 agent_id: str

2004 agent_transcript_path: str

2005 agent_type: str

2006```

2007 

2008| Champ | Type | Description |

2009| :---------------------- | :------------------------ | :---------------------------------------------------- |

2010| `hook_event_name` | `Literal["SubagentStop"]` | Toujours « SubagentStop » |

2011| `stop_hook_active` | `bool` | Si le hook d'arrêt est actif |

2012| `agent_id` | `str` | Identifiant unique pour le sous-agent |

2013| `agent_transcript_path` | `str` | Chemin vers le fichier de transcription du sous-agent |

2014| `agent_type` | `str` | Type du sous-agent |

2015 

2016### `PreCompactHookInput`

2017 

2018Données d'entrée pour les événements de hook `PreCompact`.

2019 

2020```python theme={null}

2021class PreCompactHookInput(BaseHookInput):

2022 hook_event_name: Literal["PreCompact"]

2023 trigger: Literal["manual", "auto"]

2024 custom_instructions: str | None

2025```

2026 

2027| Champ | Type | Description |

2028| :-------------------- | :-------------------------- | :--------------------------------------------- |

2029| `hook_event_name` | `Literal["PreCompact"]` | Toujours « PreCompact » |

2030| `trigger` | `Literal["manual", "auto"]` | Ce qui a déclenché la compaction |

2031| `custom_instructions` | `str \| None` | Instructions personnalisées pour la compaction |

2032 

2033### `NotificationHookInput`

2034 

2035Données d'entrée pour les événements de hook `Notification`.

2036 

2037```python theme={null}

2038class NotificationHookInput(BaseHookInput):

2039 hook_event_name: Literal["Notification"]

2040 message: str

2041 title: NotRequired[str]

2042 notification_type: str

2043```

2044 

2045| Champ | Type | Description |

2046| :------------------ | :------------------------ | :--------------------------------- |

2047| `hook_event_name` | `Literal["Notification"]` | Toujours « Notification » |

2048| `message` | `str` | Contenu du message de notification |

2049| `title` | `str` (optionnel) | Titre de la notification |

2050| `notification_type` | `str` | Type de notification |

2051 

2052### `SubagentStartHookInput`

2053 

2054Données d'entrée pour les événements de hook `SubagentStart`.

2055 

2056```python theme={null}

2057class SubagentStartHookInput(BaseHookInput):

2058 hook_event_name: Literal["SubagentStart"]

2059 agent_id: str

2060 agent_type: str

2061```

2062 

2063| Champ | Type | Description |

2064| :---------------- | :------------------------- | :------------------------------------ |

2065| `hook_event_name` | `Literal["SubagentStart"]` | Toujours « SubagentStart » |

2066| `agent_id` | `str` | Identifiant unique pour le sous-agent |

2067| `agent_type` | `str` | Type du sous-agent |

2068 

2069### `PermissionRequestHookInput`

2070 

2071Données d'entrée pour les événements de hook `PermissionRequest`. Permet aux hooks de gérer les décisions de permission programmatiquement.

2072 

2073```python theme={null}

2074class PermissionRequestHookInput(BaseHookInput):

2075 hook_event_name: Literal["PermissionRequest"]

2076 tool_name: str

2077 tool_input: dict[str, Any]

2078 permission_suggestions: NotRequired[list[Any]]

2079```

2080 

2081| Champ | Type | Description |

2082| :----------------------- | :----------------------------- | :------------------------------------------ |

2083| `hook_event_name` | `Literal["PermissionRequest"]` | Toujours « PermissionRequest » |

2084| `tool_name` | `str` | Nom de l'outil demandant la permission |

2085| `tool_input` | `dict[str, Any]` | Paramètres d'entrée pour l'outil |

2086| `permission_suggestions` | `list[Any]` (optionnel) | Mises à jour de permission suggérées du CLI |

2087 

2088### `HookJSONOutput`

2089 

2090Type union pour les valeurs de retour de callback de hook.

2091 

2092```python theme={null}

2093HookJSONOutput = AsyncHookJSONOutput | SyncHookJSONOutput

2094```

2095 

2096#### `SyncHookJSONOutput`

2097 

2098Sortie de hook synchrone avec champs de contrôle et de décision.

2099 

2100```python theme={null}

2101class SyncHookJSONOutput(TypedDict):

2102 # Control fields

2103 continue_: NotRequired[bool] # Whether to proceed (default: True)

2104 suppressOutput: NotRequired[bool] # Hide stdout from transcript

2105 stopReason: NotRequired[str] # Message when continue is False

2106 

2107 # Decision fields

2108 decision: NotRequired[Literal["block"]]

2109 systemMessage: NotRequired[str] # Warning message for user

2110 reason: NotRequired[str] # Feedback for Claude

2111 

2112 # Hook-specific output

2113 hookSpecificOutput: NotRequired[HookSpecificOutput]

2114```

2115 

2116<Note>

2117 Utilisez `continue_` (avec trait de soulignement) dans le code Python. Il est automatiquement converti en `continue` quand envoyé au CLI.

2118</Note>

2119 

2120#### `HookSpecificOutput`

2121 

2122Un `TypedDict` contenant le nom d'événement de hook et les champs spécifiques à l'événement. La forme dépend de la valeur `hookEventName`. Pour les détails complets sur les champs disponibles par événement de hook, voir [Control execution with hooks](/fr/agent-sdk/hooks#outputs).

2123 

2124Une union discriminée de types de sortie spécifiques à l'événement. Le champ `hookEventName` détermine quels champs sont valides.

2125 

2126```python theme={null}

2127class PreToolUseHookSpecificOutput(TypedDict):

2128 hookEventName: Literal["PreToolUse"]

2129 permissionDecision: NotRequired[Literal["allow", "deny", "ask"]]

2130 permissionDecisionReason: NotRequired[str]

2131 updatedInput: NotRequired[dict[str, Any]]

2132 additionalContext: NotRequired[str]

2133 

2134 

2135class PostToolUseHookSpecificOutput(TypedDict):

2136 hookEventName: Literal["PostToolUse"]

2137 additionalContext: NotRequired[str]

2138 updatedMCPToolOutput: NotRequired[Any]

2139 

2140 

2141class PostToolUseFailureHookSpecificOutput(TypedDict):

2142 hookEventName: Literal["PostToolUseFailure"]

2143 additionalContext: NotRequired[str]

2144 

2145 

2146class UserPromptSubmitHookSpecificOutput(TypedDict):

2147 hookEventName: Literal["UserPromptSubmit"]

2148 additionalContext: NotRequired[str]

2149 

2150 

2151class NotificationHookSpecificOutput(TypedDict):

2152 hookEventName: Literal["Notification"]

2153 additionalContext: NotRequired[str]

2154 

2155 

2156class SubagentStartHookSpecificOutput(TypedDict):

2157 hookEventName: Literal["SubagentStart"]

2158 additionalContext: NotRequired[str]

2159 

2160 

2161class PermissionRequestHookSpecificOutput(TypedDict):

2162 hookEventName: Literal["PermissionRequest"]

2163 decision: dict[str, Any]

2164 

2165 

2166HookSpecificOutput = (

2167 PreToolUseHookSpecificOutput

2168 | PostToolUseHookSpecificOutput

2169 | PostToolUseFailureHookSpecificOutput

2170 | UserPromptSubmitHookSpecificOutput

2171 | NotificationHookSpecificOutput

2172 | SubagentStartHookSpecificOutput

2173 | PermissionRequestHookSpecificOutput

2174)

2175```

2176 

2177#### `AsyncHookJSONOutput`

2178 

2179Sortie de hook asynchrone qui diffère l'exécution du hook.

2180 

2181```python theme={null}

2182class AsyncHookJSONOutput(TypedDict):

2183 async_: Literal[True] # Set to True to defer execution

2184 asyncTimeout: NotRequired[int] # Timeout in milliseconds

2185```

2186 

2187<Note>

2188 Utilisez `async_` (avec trait de soulignement) dans le code Python. Il est automatiquement converti en `async` quand envoyé au CLI.

2189</Note>

2190 

2191### Exemple d'utilisation de hook

2192 

2193Cet exemple enregistre deux hooks : l'un qui bloque les commandes bash dangereuses comme `rm -rf /`, et un autre qui enregistre toute l'utilisation d'outils pour l'audit. Le hook de sécurité s'exécute uniquement sur les commandes Bash (via le `matcher`), tandis que le hook de journalisation s'exécute sur tous les outils.

2194 

2195```python theme={null}

2196from claude_agent_sdk import query, ClaudeAgentOptions, HookMatcher, HookContext

2197from typing import Any

2198 

2199 

2200async def validate_bash_command(

2201 input_data: dict[str, Any], tool_use_id: str | None, context: HookContext

2202) -> dict[str, Any]:

2203 """Validate and potentially block dangerous bash commands."""

2204 if input_data["tool_name"] == "Bash":

2205 command = input_data["tool_input"].get("command", "")

2206 if "rm -rf /" in command:

2207 return {

2208 "hookSpecificOutput": {

2209 "hookEventName": "PreToolUse",

2210 "permissionDecision": "deny",

2211 "permissionDecisionReason": "Dangerous command blocked",

2212 }

2213 }

2214 return {}

2215 

2216 

2217async def log_tool_use(

2218 input_data: dict[str, Any], tool_use_id: str | None, context: HookContext

2219) -> dict[str, Any]:

2220 """Log all tool usage for auditing."""

2221 print(f"Tool used: {input_data.get('tool_name')}")

2222 return {}

2223 

2224 

2225options = ClaudeAgentOptions(

2226 hooks={

2227 "PreToolUse": [

2228 HookMatcher(

2229 matcher="Bash", hooks=[validate_bash_command], timeout=120

2230 ), # 2 min for validation

2231 HookMatcher(

2232 hooks=[log_tool_use]

2233 ), # Applies to all tools (default 60s timeout)

2234 ],

2235 "PostToolUse": [HookMatcher(hooks=[log_tool_use])],

2236 }

2237)

2238 

2239async for message in query(prompt="Analyze this codebase", options=options):

2240 print(message)

2241```

2242 

2243## Types d'entrée/sortie d'outil

2244 

2245Documentation des schémas d'entrée/sortie pour tous les outils Claude Code intégrés. Bien que le SDK Python n'exporte pas ceux-ci en tant que types, ils représentent la structure des entrées et sorties d'outils dans les messages.

2246 

2247### Agent

2248 

2249**Nom de l'outil :** `Agent` (précédemment `Task`, qui est toujours accepté comme alias)

2250 

2251**Entrée :**

2252 

2253```python theme={null}

2254{

2255 "description": str, # A short (3-5 word) description of the task

2256 "prompt": str, # The task for the agent to perform

2257 "subagent_type": str, # The type of specialized agent to use

2258}

2259```

2260 

2261**Sortie :**

2262 

2263```python theme={null}

2264{

2265 "result": str, # Final result from the subagent

2266 "usage": dict | None, # Token usage statistics

2267 "total_cost_usd": float | None, # Estimated total cost in USD

2268 "duration_ms": int | None, # Execution duration in milliseconds

2269}

2270```

2271 

2272### AskUserQuestion

2273 

2274**Nom de l'outil :** `AskUserQuestion`

2275 

2276Pose des questions de clarification à l'utilisateur pendant l'exécution. Voir [Handle approvals and user input](/fr/agent-sdk/user-input#handle-clarifying-questions) pour les détails d'utilisation.

2277 

2278**Entrée :**

2279 

2280```python theme={null}

2281{

2282 "questions": [ # Questions to ask the user (1-4 questions)

2283 {

2284 "question": str, # The complete question to ask the user

2285 "header": str, # Very short label displayed as a chip/tag (max 12 chars)

2286 "options": [ # The available choices (2-4 options)

2287 {

2288 "label": str, # Display text for this option (1-5 words)

2289 "description": str, # Explanation of what this option means

2290 }

2291 ],

2292 "multiSelect": bool, # Set to true to allow multiple selections

2293 }

2294 ],

2295 "answers": dict | None, # User answers populated by the permission system

2296}

2297```

2298 

2299**Sortie :**

2300 

2301```python theme={null}

2302{

2303 "questions": [ # The questions that were asked

2304 {

2305 "question": str,

2306 "header": str,

2307 "options": [{"label": str, "description": str}],

2308 "multiSelect": bool,

2309 }

2310 ],

2311 "answers": dict[str, str], # Maps question text to answer string

2312 # Multi-select answers are comma-separated

2313}

2314```

2315 

2316### Bash

2317 

2318**Nom de l'outil :** `Bash`

2319 

2320**Entrée :**

2321 

2322```python theme={null}

2323{

2324 "command": str, # The command to execute

2325 "timeout": int | None, # Optional timeout in milliseconds (max 600000)

2326 "description": str | None, # Clear, concise description (5-10 words)

2327 "run_in_background": bool | None, # Set to true to run in background

2328}

2329```

2330 

2331**Sortie :**

2332 

2333```python theme={null}

2334{

2335 "output": str, # Combined stdout and stderr output

2336 "exitCode": int, # Exit code of the command

2337 "killed": bool | None, # Whether command was killed due to timeout

2338 "shellId": str | None, # Shell ID for background processes

2339}

2340```

2341 

2342### Monitor

2343 

2344**Nom de l'outil :** `Monitor`

2345 

2346Exécute un script de fond et livre chaque ligne stdout à Claude comme un événement pour qu'il puisse réagir sans interrogation. Monitor suit les mêmes règles de permission que Bash. Voir la [référence de l'outil Monitor](/fr/tools-reference#monitor-tool) pour le comportement et la disponibilité du fournisseur.

2347 

2348**Entrée :**

2349 

2350```python theme={null}

2351{

2352 "command": str, # Shell script; each stdout line is an event, exit ends the watch

2353 "description": str, # Short description shown in notifications

2354 "timeout_ms": int | None, # Kill after this deadline (default 300000, max 3600000)

2355 "persistent": bool | None, # Run for the lifetime of the session; stop with TaskStop

2356}

2357```

2358 

2359**Sortie :**

2360 

2361```python theme={null}

2362{

2363 "taskId": str, # ID of the background monitor task

2364 "timeoutMs": int, # Timeout deadline in milliseconds (0 when persistent)

2365 "persistent": bool | None, # True when running until TaskStop or session end

2366}

2367```

2368 

2369### Edit

2370 

2371**Nom de l'outil :** `Edit`

2372 

2373**Entrée :**

2374 

2375```python theme={null}

2376{

2377 "file_path": str, # The absolute path to the file to modify

2378 "old_string": str, # The text to replace

2379 "new_string": str, # The text to replace it with

2380 "replace_all": bool | None, # Replace all occurrences (default False)

2381}

2382```

2383 

2384**Sortie :**

2385 

2386```python theme={null}

2387{

2388 "message": str, # Confirmation message

2389 "replacements": int, # Number of replacements made

2390 "file_path": str, # File path that was edited

2391}

2392```

2393 

2394### Read

2395 

2396**Nom de l'outil :** `Read`

2397 

2398**Entrée :**

2399 

2400```python theme={null}

2401{

2402 "file_path": str, # The absolute path to the file to read

2403 "offset": int | None, # The line number to start reading from

2404 "limit": int | None, # The number of lines to read

2405}

2406```

2407 

2408**Sortie (fichiers texte) :**

2409 

2410```python theme={null}

2411{

2412 "content": str, # File contents with line numbers

2413 "total_lines": int, # Total number of lines in file

2414 "lines_returned": int, # Lines actually returned

2415}

2416```

2417 

2418**Sortie (images) :**

2419 

2420```python theme={null}

2421{

2422 "image": str, # Base64 encoded image data

2423 "mime_type": str, # Image MIME type

2424 "file_size": int, # File size in bytes

2425}

2426```

2427 

2428### Write

2429 

2430**Nom de l'outil :** `Write`

2431 

2432**Entrée :**

2433 

2434```python theme={null}

2435{

2436 "file_path": str, # The absolute path to the file to write

2437 "content": str, # The content to write to the file

2438}

2439```

2440 

2441**Sortie :**

2442 

2443```python theme={null}

2444{

2445 "message": str, # Success message

2446 "bytes_written": int, # Number of bytes written

2447 "file_path": str, # File path that was written

2448}

2449```

2450 

2451### Glob

2452 

2453**Nom de l'outil :** `Glob`

2454 

2455**Entrée :**

2456 

2457```python theme={null}

2458{

2459 "pattern": str, # The glob pattern to match files against

2460 "path": str | None, # The directory to search in (defaults to cwd)

2461}

2462```

2463 

2464**Sortie :**

2465 

2466```python theme={null}

2467{

2468 "matches": list[str], # Array of matching file paths

2469 "count": int, # Number of matches found

2470 "search_path": str, # Search directory used

2471}

2472```

2473 

2474### Grep

2475 

2476**Nom de l'outil :** `Grep`

2477 

2478**Entrée :**

2479 

2480```python theme={null}

2481{

2482 "pattern": str, # The regular expression pattern

2483 "path": str | None, # File or directory to search in

2484 "glob": str | None, # Glob pattern to filter files

2485 "type": str | None, # File type to search

2486 "output_mode": str | None, # "content", "files_with_matches", or "count"

2487 "-i": bool | None, # Case insensitive search

2488 "-n": bool | None, # Show line numbers

2489 "-B": int | None, # Lines to show before each match

2490 "-A": int | None, # Lines to show after each match

2491 "-C": int | None, # Lines to show before and after

2492 "head_limit": int | None, # Limit output to first N lines/entries

2493 "multiline": bool | None, # Enable multiline mode

2494}

2495```

2496 

2497**Sortie (mode contenu) :**

2498 

2499```python theme={null}

2500{

2501 "matches": [

2502 {

2503 "file": str,

2504 "line_number": int | None,

2505 "line": str,

2506 "before_context": list[str] | None,

2507 "after_context": list[str] | None,

2508 }

2509 ],

2510 "total_matches": int,

2511}

2512```

2513 

2514**Sortie (mode fichiers\_avec\_correspondances) :**

2515 

2516```python theme={null}

2517{

2518 "files": list[str], # Files containing matches

2519 "count": int, # Number of files with matches

2520}

2521```

2522 

2523### NotebookEdit

2524 

2525**Nom de l'outil :** `NotebookEdit`

2526 

2527**Entrée :**

2528 

2529```python theme={null}

2530{

2531 "notebook_path": str, # Absolute path to the Jupyter notebook

2532 "cell_id": str | None, # The ID of the cell to edit

2533 "new_source": str, # The new source for the cell

2534 "cell_type": "code" | "markdown" | None, # The type of the cell

2535 "edit_mode": "replace" | "insert" | "delete" | None, # Edit operation type

2536}

2537```

2538 

2539**Sortie :**

2540 

2541```python theme={null}

2542{

2543 "message": str, # Success message

2544 "edit_type": "replaced" | "inserted" | "deleted", # Type of edit performed

2545 "cell_id": str | None, # Cell ID that was affected

2546 "total_cells": int, # Total cells in notebook after edit

2547}

2548```

2549 

2550### WebFetch

2551 

2552**Nom de l'outil :** `WebFetch`

2553 

2554**Entrée :**

2555 

2556```python theme={null}

2557{

2558 "url": str, # The URL to fetch content from

2559 "prompt": str, # The prompt to run on the fetched content

2560}

2561```

2562 

2563**Sortie :**

2564 

2565```python theme={null}

2566{

2567 "response": str, # AI model's response to the prompt

2568 "url": str, # URL that was fetched

2569 "final_url": str | None, # Final URL after redirects

2570 "status_code": int | None, # HTTP status code

2571}

2572```

2573 

2574### WebSearch

2575 

2576**Nom de l'outil :** `WebSearch`

2577 

2578**Entrée :**

2579 

2580```python theme={null}

2581{

2582 "query": str, # The search query to use

2583 "allowed_domains": list[str] | None, # Only include results from these domains

2584 "blocked_domains": list[str] | None, # Never include results from these domains

2585}

2586```

2587 

2588**Sortie :**

2589 

2590```python theme={null}

2591{

2592 "results": [{"title": str, "url": str, "snippet": str, "metadata": dict | None}],

2593 "total_results": int,

2594 "query": str,

2595}

2596```

2597 

2598### TodoWrite

2599 

2600**Nom de l'outil :** `TodoWrite`

2601 

2602**Entrée :**

2603 

2604```python theme={null}

2605{

2606 "todos": [

2607 {

2608 "content": str, # The task description

2609 "status": "pending" | "in_progress" | "completed", # Task status

2610 "activeForm": str, # Active form of the description

2611 }

2612 ]

2613}

2614```

2615 

2616**Sortie :**

2617 

2618```python theme={null}

2619{

2620 "message": str, # Success message

2621 "stats": {"total": int, "pending": int, "in_progress": int, "completed": int},

2622}

2623```

2624 

2625### BashOutput

2626 

2627**Nom de l'outil :** `BashOutput`

2628 

2629**Entrée :**

2630 

2631```python theme={null}

2632{

2633 "bash_id": str, # The ID of the background shell

2634 "filter": str | None, # Optional regex to filter output lines

2635}

2636```

2637 

2638**Sortie :**

2639 

2640```python theme={null}

2641{

2642 "output": str, # New output since last check

2643 "status": "running" | "completed" | "failed", # Current shell status

2644 "exitCode": int | None, # Exit code when completed

2645}

2646```

2647 

2648### KillBash

2649 

2650**Nom de l'outil :** `KillBash`

2651 

2652**Entrée :**

2653 

2654```python theme={null}

2655{

2656 "shell_id": str # The ID of the background shell to kill

2657}

2658```

2659 

2660**Sortie :**

2661 

2662```python theme={null}

2663{

2664 "message": str, # Success message

2665 "shell_id": str, # ID of the killed shell

2666}

2667```

2668 

2669### ExitPlanMode

2670 

2671**Nom de l'outil :** `ExitPlanMode`

2672 

2673**Entrée :**

2674 

2675```python theme={null}

2676{

2677 "plan": str # The plan to run by the user for approval

2678}

2679```

2680 

2681**Sortie :**

2682 

2683```python theme={null}

2684{

2685 "message": str, # Confirmation message

2686 "approved": bool | None, # Whether user approved the plan

2687}

2688```

2689 

2690### ListMcpResources

2691 

2692**Nom de l'outil :** `ListMcpResources`

2693 

2694**Entrée :**

2695 

2696```python theme={null}

2697{

2698 "server": str | None # Optional server name to filter resources by

2699}

2700```

2701 

2702**Sortie :**

2703 

2704```python theme={null}

2705{

2706 "resources": [

2707 {

2708 "uri": str,

2709 "name": str,

2710 "description": str | None,

2711 "mimeType": str | None,

2712 "server": str,

2713 }

2714 ],

2715 "total": int,

2716}

2717```

2718 

2719### ReadMcpResource

2720 

2721**Nom de l'outil :** `ReadMcpResource`

2722 

2723**Entrée :**

2724 

2725```python theme={null}

2726{

2727 "server": str, # The MCP server name

2728 "uri": str, # The resource URI to read

2729}

2730```

2731 

2732**Sortie :**

2733 

2734```python theme={null}

2735{

2736 "contents": [

2737 {"uri": str, "mimeType": str | None, "text": str | None, "blob": str | None}

2738 ],

2739 "server": str,

2740}

2741```

2742 

2743## Fonctionnalités avancées avec ClaudeSDKClient

2744 

2745### Construire une interface de conversation continue

2746 

2747```python theme={null}

2748from claude_agent_sdk import (

2749 ClaudeSDKClient,

2750 ClaudeAgentOptions,

2751 AssistantMessage,

2752 TextBlock,

2753)

2754import asyncio

2755 

2756 

2757class ConversationSession:

2758 """Maintains a single conversation session with Claude."""

2759 

2760 def __init__(self, options: ClaudeAgentOptions | None = None):

2761 self.client = ClaudeSDKClient(options)

2762 self.turn_count = 0

2763 

2764 async def start(self):

2765 await self.client.connect()

2766 print("Starting conversation session. Claude will remember context.")

2767 print(

2768 "Commands: 'exit' to quit, 'interrupt' to stop current task, 'new' for new session"

2769 )

2770 

2771 while True:

2772 user_input = input(f"\n[Turn {self.turn_count + 1}] You: ")

2773 

2774 if user_input.lower() == "exit":

2775 break

2776 elif user_input.lower() == "interrupt":

2777 await self.client.interrupt()

2778 print("Task interrupted!")

2779 continue

2780 elif user_input.lower() == "new":

2781 # Disconnect and reconnect for a fresh session

2782 await self.client.disconnect()

2783 await self.client.connect()

2784 self.turn_count = 0

2785 print("Started new conversation session (previous context cleared)")

2786 continue

2787 

2788 # Send message - the session retains all previous messages

2789 await self.client.query(user_input)

2790 self.turn_count += 1

2791 

2792 # Process response

2793 print(f"[Turn {self.turn_count}] Claude: ", end="")

2794 async for message in self.client.receive_response():

2795 if isinstance(message, AssistantMessage):

2796 for block in message.content:

2797 if isinstance(block, TextBlock):

2798 print(block.text, end="")

2799 print() # New line after response

2800 

2801 await self.client.disconnect()

2802 print(f"Conversation ended after {self.turn_count} turns.")

2803 

2804 

2805async def main():

2806 options = ClaudeAgentOptions(

2807 allowed_tools=["Read", "Write", "Bash"], permission_mode="acceptEdits"

2808 )

2809 session = ConversationSession(options)

2810 await session.start()

2811 

2812 

2813# Example conversation:

2814# Turn 1 - You: "Create a file called hello.py"

2815# Turn 1 - Claude: "I'll create a hello.py file for you..."

2816# Turn 2 - You: "What's in that file?"

2817# Turn 2 - Claude: "The hello.py file I just created contains..." (remembers!)

2818# Turn 3 - You: "Add a main function to it"

2819# Turn 3 - Claude: "I'll add a main function to hello.py..." (knows which file!)

2820 

2821asyncio.run(main())

2822```

2823 

2824### Utiliser les hooks pour la modification du comportement

2825 

2826```python theme={null}

2827from claude_agent_sdk import (

2828 ClaudeSDKClient,

2829 ClaudeAgentOptions,

2830 HookMatcher,

2831 HookContext,

2832)

2833import asyncio

2834from typing import Any

2835 

2836 

2837async def pre_tool_logger(

2838 input_data: dict[str, Any], tool_use_id: str | None, context: HookContext

2839) -> dict[str, Any]:

2840 """Log all tool usage before execution."""

2841 tool_name = input_data.get("tool_name", "unknown")

2842 print(f"[PRE-TOOL] About to use: {tool_name}")

2843 

2844 # You can modify or block the tool execution here

2845 if tool_name == "Bash" and "rm -rf" in str(input_data.get("tool_input", {})):

2846 return {

2847 "hookSpecificOutput": {

2848 "hookEventName": "PreToolUse",

2849 "permissionDecision": "deny",

2850 "permissionDecisionReason": "Dangerous command blocked",

2851 }

2852 }

2853 return {}

2854 

2855 

2856async def post_tool_logger(

2857 input_data: dict[str, Any], tool_use_id: str | None, context: HookContext

2858) -> dict[str, Any]:

2859 """Log results after tool execution."""

2860 tool_name = input_data.get("tool_name", "unknown")

2861 print(f"[POST-TOOL] Completed: {tool_name}")

2862 return {}

2863 

2864 

2865async def user_prompt_modifier(

2866 input_data: dict[str, Any], tool_use_id: str | None, context: HookContext

2867) -> dict[str, Any]:

2868 """Add context to user prompts."""

2869 original_prompt = input_data.get("prompt", "")

2870 

2871 # Add a timestamp as additional context for Claude to see

2872 from datetime import datetime

2873 

2874 timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

2875 

2876 return {

2877 "hookSpecificOutput": {

2878 "hookEventName": "UserPromptSubmit",

2879 "additionalContext": f"[Submitted at {timestamp}] Original prompt: {original_prompt}",

2880 }

2881 }

2882 

2883 

2884async def main():

2885 options = ClaudeAgentOptions(

2886 hooks={

2887 "PreToolUse": [

2888 HookMatcher(hooks=[pre_tool_logger]),

2889 HookMatcher(matcher="Bash", hooks=[pre_tool_logger]),

2890 ],

2891 "PostToolUse": [HookMatcher(hooks=[post_tool_logger])],

2892 "UserPromptSubmit": [HookMatcher(hooks=[user_prompt_modifier])],

2893 },

2894 allowed_tools=["Read", "Write", "Bash"],

2895 )

2896 

2897 async with ClaudeSDKClient(options=options) as client:

2898 await client.query("List files in current directory")

2899 

2900 async for message in client.receive_response():

2901 # Hooks will automatically log tool usage

2902 pass

2903 

2904 

2905asyncio.run(main())

2906```

2907 

2908### Surveillance de la progression en temps réel

2909 

2910```python theme={null}

2911from claude_agent_sdk import (

2912 ClaudeSDKClient,

2913 ClaudeAgentOptions,

2914 AssistantMessage,

2915 ToolUseBlock,

2916 ToolResultBlock,

2917 TextBlock,

2918)

2919import asyncio

2920 

2921 

2922async def monitor_progress():

2923 options = ClaudeAgentOptions(

2924 allowed_tools=["Write", "Bash"], permission_mode="acceptEdits"

2925 )

2926 

2927 async with ClaudeSDKClient(options=options) as client:

2928 await client.query("Create 5 Python files with different sorting algorithms")

2929 

2930 # Monitor progress in real-time

2931 async for message in client.receive_response():

2932 if isinstance(message, AssistantMessage):

2933 for block in message.content:

2934 if isinstance(block, ToolUseBlock):

2935 if block.name == "Write":

2936 file_path = block.input.get("file_path", "")

2937 print(f"Creating: {file_path}")

2938 elif isinstance(block, ToolResultBlock):

2939 print("Completed tool execution")

2940 elif isinstance(block, TextBlock):

2941 print(f"Claude says: {block.text[:100]}...")

2942 

2943 print("Task completed!")

2944 

2945 

2946asyncio.run(monitor_progress())

2947```

2948 

2949## Exemple d'utilisation

2950 

2951### Opérations de fichiers de base (utilisant query)

2952 

2953```python theme={null}

2954from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ToolUseBlock

2955import asyncio

2956 

2957 

2958async def create_project():

2959 options = ClaudeAgentOptions(

2960 allowed_tools=["Read", "Write", "Bash"],

2961 permission_mode="acceptEdits",

2962 cwd="/home/user/project",

2963 )

2964 

2965 async for message in query(

2966 prompt="Create a Python project structure with setup.py", options=options

2967 ):

2968 if isinstance(message, AssistantMessage):

2969 for block in message.content:

2970 if isinstance(block, ToolUseBlock):

2971 print(f"Using tool: {block.name}")

2972 

2973 

2974asyncio.run(create_project())

2975```

2976 

2977### Gestion des erreurs

2978 

2979```python theme={null}

2980from claude_agent_sdk import query, CLINotFoundError, ProcessError, CLIJSONDecodeError

2981 

2982try:

2983 async for message in query(prompt="Hello"):

2984 print(message)

2985except CLINotFoundError:

2986 print(

2987 "Claude Code CLI not found. Try reinstalling: pip install --force-reinstall claude-agent-sdk"

2988 )

2989except ProcessError as e:

2990 print(f"Process failed with exit code: {e.exit_code}")

2991except CLIJSONDecodeError as e:

2992 print(f"Failed to parse response: {e}")

2993```

2994 

2995### Mode streaming avec client

2996 

2997```python theme={null}

2998from claude_agent_sdk import ClaudeSDKClient

2999import asyncio

3000 

3001 

3002async def interactive_session():

3003 async with ClaudeSDKClient() as client:

3004 # Send initial message

3005 await client.query("What's the weather like?")

3006 

3007 # Process responses

3008 async for msg in client.receive_response():

3009 print(msg)

3010 

3011 # Send follow-up

3012 await client.query("Tell me more about that")

3013 

3014 # Process follow-up response

3015 async for msg in client.receive_response():

3016 print(msg)

3017 

3018 

3019asyncio.run(interactive_session())

3020```

3021 

3022### Utiliser les outils personnalisés avec ClaudeSDKClient

3023 

3024```python theme={null}

3025from claude_agent_sdk import (

3026 ClaudeSDKClient,

3027 ClaudeAgentOptions,

3028 tool,

3029 create_sdk_mcp_server,

3030 AssistantMessage,

3031 TextBlock,

3032)

3033import asyncio

3034from typing import Any

3035 

3036 

3037# Define custom tools with @tool decorator

3038@tool("calculate", "Perform mathematical calculations", {"expression": str})

3039async def calculate(args: dict[str, Any]) -> dict[str, Any]:

3040 try:

3041 result = eval(args["expression"], {"__builtins__": {}})

3042 return {"content": [{"type": "text", "text": f"Result: {result}"}]}

3043 except Exception as e:

3044 return {

3045 "content": [{"type": "text", "text": f"Error: {str(e)}"}],

3046 "is_error": True,

3047 }

3048 

3049 

3050@tool("get_time", "Get current time", {})

3051async def get_time(args: dict[str, Any]) -> dict[str, Any]:

3052 from datetime import datetime

3053 

3054 current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

3055 return {"content": [{"type": "text", "text": f"Current time: {current_time}"}]}

3056 

3057 

3058async def main():

3059 # Create SDK MCP server with custom tools

3060 my_server = create_sdk_mcp_server(

3061 name="utilities", version="1.0.0", tools=[calculate, get_time]

3062 )

3063 

3064 # Configure options with the server

3065 options = ClaudeAgentOptions(

3066 mcp_servers={"utils": my_server},

3067 allowed_tools=["mcp__utils__calculate", "mcp__utils__get_time"],

3068 )

3069 

3070 # Use ClaudeSDKClient for interactive tool usage

3071 async with ClaudeSDKClient(options=options) as client:

3072 await client.query("What's 123 * 456?")

3073 

3074 # Process calculation response

3075 async for message in client.receive_response():

3076 if isinstance(message, AssistantMessage):

3077 for block in message.content:

3078 if isinstance(block, TextBlock):

3079 print(f"Calculation: {block.text}")

3080 

3081 # Follow up with time query

3082 await client.query("What time is it now?")

3083 

3084 async for message in client.receive_response():

3085 if isinstance(message, AssistantMessage):

3086 for block in message.content:

3087 if isinstance(block, TextBlock):

3088 print(f"Time: {block.text}")

3089 

3090 

3091asyncio.run(main())

3092```

3093 

3094## Configuration du sandbox

3095 

3096### `SandboxSettings`

3097 

3098Configuration pour le comportement du sandbox. Utilisez ceci pour activer le sandboxing des commandes et configurer les restrictions réseau programmatiquement.

3099 

3100```python theme={null}

3101class SandboxSettings(TypedDict, total=False):

3102 enabled: bool

3103 autoAllowBashIfSandboxed: bool

3104 excludedCommands: list[str]

3105 allowUnsandboxedCommands: bool

3106 network: SandboxNetworkConfig

3107 ignoreViolations: SandboxIgnoreViolations

3108 enableWeakerNestedSandbox: bool

3109```

3110 

3111| Propriété | Type | Par défaut | Description |

3112| :-------------------------- | :------------------------------------------------------ | :--------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

3113| `enabled` | `bool` | `False` | Activez le mode sandbox pour l'exécution des commandes |

3114| `autoAllowBashIfSandboxed` | `bool` | `True` | Approuvez automatiquement les commandes bash quand le sandbox est activé |

3115| `excludedCommands` | `list[str]` | `[]` | Commandes qui contournent toujours les restrictions du sandbox (par exemple, `["docker"]`). Celles-ci s'exécutent sans sandbox automatiquement sans implication du modèle |

3116| `allowUnsandboxedCommands` | `bool` | `True` | Permettez au modèle de demander l'exécution de commandes en dehors du sandbox. Quand `True`, le modèle peut définir `dangerouslyDisableSandbox` dans l'entrée d'outil, qui revient au [système de permissions](#permissions-fallback-for-unsandboxed-commands) |

3117| `network` | [`SandboxNetworkConfig`](#sandbox-network-config) | `None` | Configuration de sandbox spécifique au réseau |

3118| `ignoreViolations` | [`SandboxIgnoreViolations`](#sandbox-ignore-violations) | `None` | Configurez quelles violations de sandbox ignorer |

3119| `enableWeakerNestedSandbox` | `bool` | `False` | Activez un sandbox imbriqué plus faible pour la compatibilité |

3120 

3121#### Exemple d'utilisation

3122 

3123```python theme={null}

3124from claude_agent_sdk import query, ClaudeAgentOptions, SandboxSettings

3125 

3126sandbox_settings: SandboxSettings = {

3127 "enabled": True,

3128 "autoAllowBashIfSandboxed": True,

3129 "network": {"allowLocalBinding": True},

3130}

3131 

3132async for message in query(

3133 prompt="Build and test my project",

3134 options=ClaudeAgentOptions(sandbox=sandbox_settings),

3135):

3136 print(message)

3137```

3138 

3139<Warning>

3140 **Sécurité des sockets Unix** : L'option `allowUnixSockets` peut accorder l'accès à des services système puissants. Par exemple, permettre `/var/run/docker.sock` accorde effectivement un accès complet au système hôte via l'API Docker, contournant l'isolation du sandbox. Autorisez uniquement les sockets Unix strictement nécessaires et comprenez les implications de sécurité de chacun.

3141</Warning>

3142 

3143### `SandboxNetworkConfig`

3144 

3145Configuration spécifique au réseau pour le mode sandbox.

3146 

3147```python theme={null}

3148class SandboxNetworkConfig(TypedDict, total=False):

3149 allowedDomains: list[str]

3150 deniedDomains: list[str]

3151 allowManagedDomainsOnly: bool

3152 allowUnixSockets: list[str]

3153 allowAllUnixSockets: bool

3154 allowLocalBinding: bool

3155 allowMachLookup: list[str]

3156 httpProxyPort: int

3157 socksProxyPort: int

3158```

3159 

3160| Propriété | Type | Par défaut | Description |

3161| :------------------------ | :---------- | :--------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

3162| `allowedDomains` | `list[str]` | `[]` | Noms de domaine auxquels les processus en sandbox peuvent accéder |

3163| `deniedDomains` | `list[str]` | `[]` | Noms de domaine auxquels les processus en sandbox ne peuvent pas accéder. Prend la priorité sur `allowedDomains` |

3164| `allowManagedDomainsOnly` | `bool` | `False` | Paramètres gérés uniquement : quand défini dans les paramètres gérés, ignorez `allowedDomains` des sources de paramètres non gérées. N'a aucun effet quand défini via les options SDK |

3165| `allowUnixSockets` | `list[str]` | `[]` | Chemins de socket Unix auxquels les processus peuvent accéder (par exemple, socket Docker) |

3166| `allowAllUnixSockets` | `bool` | `False` | Permettez l'accès à tous les sockets Unix |

3167| `allowLocalBinding` | `bool` | `False` | Permettez aux processus de se lier aux ports locaux (par exemple, pour les serveurs de développement) |

3168| `allowMachLookup` | `list[str]` | `[]` | macOS uniquement : noms de services XPC/Mach à autoriser. Supporte un caractère générique à la fin |

3169| `httpProxyPort` | `int` | `None` | Port du proxy HTTP pour les requêtes réseau |

3170| `socksProxyPort` | `int` | `None` | Port du proxy SOCKS pour les requêtes réseau |

3171 

3172<Note>

3173 Le proxy sandbox intégré applique la liste blanche réseau en fonction du nom d'hôte demandé et ne termine pas ou n'inspecte pas le trafic TLS, donc des techniques telles que le [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting) peuvent potentiellement le contourner. Voir [Limitations de sécurité du sandboxing](/fr/sandboxing#security-limitations) pour les détails et [Déploiement sécurisé](/fr/agent-sdk/secure-deployment#traffic-forwarding) pour configurer un proxy qui termine TLS.

3174</Note>

3175 

3176### `SandboxIgnoreViolations`

3177 

3178Configuration pour ignorer les violations de sandbox spécifiques.

3179 

3180```python theme={null}

3181class SandboxIgnoreViolations(TypedDict, total=False):

3182 file: list[str]

3183 network: list[str]

3184```

3185 

3186| Propriété | Type | Par défaut | Description |

3187| :-------- | :---------- | :--------- | :------------------------------------------------------- |

3188| `file` | `list[str]` | `[]` | Modèles de chemin de fichier pour ignorer les violations |

3189| `network` | `list[str]` | `[]` | Modèles réseau pour ignorer les violations |

3190 

3191### Fallback de permissions pour les commandes sans sandbox

3192 

3193Quand `allowUnsandboxedCommands` est activé, le modèle peut demander l'exécution de commandes en dehors du sandbox en définissant `dangerouslyDisableSandbox: True` dans l'entrée d'outil. Ces requêtes reviennent au système de permissions existant, ce qui signifie que votre gestionnaire `can_use_tool` sera invoqué, vous permettant d'implémenter une logique d'autorisation personnalisée.

3194 

3195<Note>

3196 **`excludedCommands` vs `allowUnsandboxedCommands` :**

3197 

3198 * `excludedCommands` : Une liste statique de commandes qui contournent toujours le sandbox automatiquement (par exemple, `["docker"]`). Le modèle n'a aucun contrôle sur ceci.

3199 * `allowUnsandboxedCommands` : Permet au modèle de décider à l'exécution s'il faut demander l'exécution sans sandbox en définissant `dangerouslyDisableSandbox: True` dans l'entrée d'outil.

3200</Note>

3201 

3202```python theme={null}

3203from claude_agent_sdk import (

3204 query,

3205 ClaudeAgentOptions,

3206 HookMatcher,

3207 PermissionResultAllow,

3208 PermissionResultDeny,

3209 ToolPermissionContext,

3210)

3211 

3212 

3213async def can_use_tool(

3214 tool: str, input: dict, context: ToolPermissionContext

3215) -> PermissionResultAllow | PermissionResultDeny:

3216 # Check if the model is requesting to bypass the sandbox

3217 if tool == "Bash" and input.get("dangerouslyDisableSandbox"):

3218 # The model is requesting to run this command outside the sandbox

3219 print(f"Unsandboxed command requested: {input.get('command')}")

3220 

3221 if is_command_authorized(input.get("command")):

3222 return PermissionResultAllow()

3223 return PermissionResultDeny(

3224 message="Command not authorized for unsandboxed execution"

3225 )

3226 return PermissionResultAllow()

3227 

3228 

3229# Required: dummy hook keeps the stream open for can_use_tool

3230async def dummy_hook(input_data, tool_use_id, context):

3231 return {"continue_": True}

3232 

3233 

3234async def prompt_stream():

3235 yield {

3236 "type": "user",

3237 "message": {"role": "user", "content": "Deploy my application"},

3238 }

3239 

3240 

3241async def main():

3242 async for message in query(

3243 prompt=prompt_stream(),

3244 options=ClaudeAgentOptions(

3245 sandbox={

3246 "enabled": True,

3247 "allowUnsandboxedCommands": True, # Model can request unsandboxed execution

3248 },

3249 permission_mode="default",

3250 can_use_tool=can_use_tool,

3251 hooks={"PreToolUse": [HookMatcher(matcher=None, hooks=[dummy_hook])]},

3252 ),

3253 ):

3254 print(message)

3255```

3256 

3257Ce modèle vous permet de :

3258 

3259* **Auditer les requêtes du modèle** : Enregistrez quand le modèle demande l'exécution sans sandbox

3260* **Implémenter des listes blanches** : Autorisez uniquement des commandes spécifiques à s'exécuter sans sandbox

3261* **Ajouter des flux d'approbation** : Nécessitez une autorisation explicite pour les opérations privilégiées

3262 

3263<Warning>

3264 Les commandes s'exécutant avec `dangerouslyDisableSandbox: True` ont un accès complet au système. Assurez-vous que votre gestionnaire `can_use_tool` valide ces requêtes avec soin.

3265 

3266 Si `permission_mode` est défini sur `bypassPermissions` et `allow_unsandboxed_commands` est activé, le modèle peut exécuter de manière autonome des commandes en dehors du sandbox sans aucun prompt d'approbation. Cette combinaison permet effectivement au modèle d'échapper à l'isolation du sandbox silencieusement.

3267</Warning>

3268 

3269## Voir aussi

3270 

3271* [Vue d'ensemble du SDK](/fr/agent-sdk/overview) - Concepts généraux du SDK

3272* [Référence du SDK TypeScript](/fr/agent-sdk/typescript) - Documentation du SDK TypeScript

3273* [Référence CLI](/fr/cli-reference) - Interface de ligne de commande

3274* [Flux de travail courants](/fr/common-workflows) - Guides étape par étape

agent-sdk/quickstart.md +333 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Démarrage rapide

6 

7> Commencez avec le SDK Agent Python ou TypeScript pour créer des agents IA qui fonctionnent de manière autonome

8 

9Utilisez le SDK Agent pour créer un agent IA qui lit votre code, trouve les bugs et les corrige, tout sans intervention manuelle.

10 

11**Ce que vous allez faire :**

12 

131. Configurer un projet avec le SDK Agent

142. Créer un fichier avec du code contenant des bugs

153. Exécuter un agent qui trouve et corrige les bugs automatiquement

16 

17## Prérequis

18 

19* **Node.js 18+** ou **Python 3.10+**

20* Un **compte Anthropic** ([s'inscrire ici](https://platform.claude.com/))

21 

22## Configuration

23 

24<Steps>

25 <Step title="Créer un dossier de projet">

26 Créez un nouveau répertoire pour ce démarrage rapide :

27 

28 ```bash theme={null}

29 mkdir my-agent && cd my-agent

30 ```

31 

32 Pour vos propres projets, vous pouvez exécuter le SDK à partir de n'importe quel dossier ; il aura accès aux fichiers de ce répertoire et de ses sous-répertoires par défaut.

33 </Step>

34 

35 <Step title="Installer le SDK">

36 Installez le package du SDK Agent pour votre langage :

37 

38 <Tabs>

39 <Tab title="TypeScript">

40 ```bash theme={null}

41 npm install @anthropic-ai/claude-agent-sdk

42 ```

43 </Tab>

44 

45 <Tab title="Python (uv)">

46 [uv Python package manager](https://docs.astral.sh/uv/) est un gestionnaire de paquets Python rapide qui gère automatiquement les environnements virtuels :

47 

48 ```bash theme={null}

49 uv init && uv add claude-agent-sdk

50 ```

51 </Tab>

52 

53 <Tab title="Python (pip)">

54 Créez d'abord un environnement virtuel, puis installez :

55 

56 ```bash theme={null}

57 python3 -m venv .venv && source .venv/bin/activate

58 pip3 install claude-agent-sdk

59 ```

60 </Tab>

61 </Tabs>

62 

63 <Note>

64 Le SDK TypeScript regroupe un binaire Claude Code natif pour votre plateforme en tant que dépendance optionnelle, vous n'avez donc pas besoin d'installer Claude Code séparément.

65 </Note>

66 </Step>

67 

68 <Step title="Définir votre clé API">

69 Obtenez une clé API à partir de la [Console Claude](https://platform.claude.com/), puis créez un fichier `.env` dans votre répertoire de projet :

70 

71 ```bash theme={null}

72 ANTHROPIC_API_KEY=your-api-key

73 ```

74 

75 Le SDK prend également en charge l'authentification via des fournisseurs d'API tiers :

76 

77 * **Amazon Bedrock** : définissez la variable d'environnement `CLAUDE_CODE_USE_BEDROCK=1` et configurez les identifiants AWS

78 * **Google Vertex AI** : définissez la variable d'environnement `CLAUDE_CODE_USE_VERTEX=1` et configurez les identifiants Google Cloud

79 * **Microsoft Azure** : définissez la variable d'environnement `CLAUDE_CODE_USE_FOUNDRY=1` et configurez les identifiants Azure

80 

81 Consultez les guides de configuration pour [Bedrock](/fr/amazon-bedrock), [Vertex AI](/fr/google-vertex-ai) ou [Azure AI Foundry](/fr/microsoft-foundry) pour plus de détails.

82 

83 <Note>

84 Sauf approbation préalable, Anthropic n'autorise pas les développeurs tiers à proposer la connexion claude.ai ou les limites de débit pour leurs produits, y compris les agents construits sur le SDK Agent Claude. Veuillez utiliser les méthodes d'authentification par clé API décrites dans ce document à la place.

85 </Note>

86 </Step>

87</Steps>

88 

89## Créer un fichier avec des bugs

90 

91Ce démarrage rapide vous guide dans la création d'un agent capable de trouver et corriger les bugs dans le code. D'abord, vous avez besoin d'un fichier avec quelques bugs intentionnels pour que l'agent les corrige. Créez `utils.py` dans le répertoire `my-agent` et collez le code suivant :

92 

93```python theme={null}

94def calculate_average(numbers):

95 total = 0

96 for num in numbers:

97 total += num

98 return total / len(numbers)

99 

100 

101def get_user_name(user):

102 return user["name"].upper()

103```

104 

105Ce code a deux bugs :

106 

1071. `calculate_average([])` plante avec une division par zéro

1082. `get_user_name(None)` plante avec une TypeError

109 

110## Créer un agent qui trouve et corrige les bugs

111 

112Créez `agent.py` si vous utilisez le SDK Python, ou `agent.ts` pour TypeScript :

113 

114<CodeGroup>

115 ```python Python theme={null}

116 import asyncio

117 from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ResultMessage

118 

119 

120 async def main():

121 # Agentic loop: streams messages as Claude works

122 async for message in query(

123 prompt="Review utils.py for bugs that would cause crashes. Fix any issues you find.",

124 options=ClaudeAgentOptions(

125 allowed_tools=["Read", "Edit", "Glob"], # Tools Claude can use

126 permission_mode="acceptEdits", # Auto-approve file edits

127 ),

128 ):

129 # Print human-readable output

130 if isinstance(message, AssistantMessage):

131 for block in message.content:

132 if hasattr(block, "text"):

133 print(block.text) # Claude's reasoning

134 elif hasattr(block, "name"):

135 print(f"Tool: {block.name}") # Tool being called

136 elif isinstance(message, ResultMessage):

137 print(f"Done: {message.subtype}") # Final result

138 

139 

140 asyncio.run(main())

141 ```

142 

143 ```typescript TypeScript theme={null}

144 import { query } from "@anthropic-ai/claude-agent-sdk";

145 

146 // Agentic loop: streams messages as Claude works

147 for await (const message of query({

148 prompt: "Review utils.py for bugs that would cause crashes. Fix any issues you find.",

149 options: {

150 allowedTools: ["Read", "Edit", "Glob"], // Tools Claude can use

151 permissionMode: "acceptEdits" // Auto-approve file edits

152 }

153 })) {

154 // Print human-readable output

155 if (message.type === "assistant" && message.message?.content) {

156 for (const block of message.message.content) {

157 if ("text" in block) {

158 console.log(block.text); // Claude's reasoning

159 } else if ("name" in block) {

160 console.log(`Tool: ${block.name}`); // Tool being called

161 }

162 }

163 } else if (message.type === "result") {

164 console.log(`Done: ${message.subtype}`); // Final result

165 }

166 }

167 ```

168</CodeGroup>

169 

170Ce code a trois parties principales :

171 

1721. **`query`** : le point d'entrée principal qui crée la boucle agentique. Il retourne un itérateur asynchrone, vous utilisez donc `async for` pour diffuser les messages au fur et à mesure que Claude travaille. Consultez l'API complète dans la référence du SDK [Python](/fr/agent-sdk/python#query) ou [TypeScript](/fr/agent-sdk/typescript#query).

173 

1742. **`prompt`** : ce que vous voulez que Claude fasse. Claude détermine les outils à utiliser en fonction de la tâche.

175 

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

177 

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

179 

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

181 

182<Note>

183 Cet exemple utilise la diffusion en continu pour afficher la progression en temps réel. Si vous n'avez pas besoin de sortie en direct (par exemple, pour les tâches en arrière-plan ou les pipelines CI), vous pouvez collecter tous les messages à la fois. Consultez [Mode diffusion en continu vs. mode à tour unique](/fr/agent-sdk/streaming-vs-single-mode) pour plus de détails.

184</Note>

185 

186### Exécuter votre agent

187 

188Votre agent est prêt. Exécutez-le avec la commande suivante :

189 

190<Tabs>

191 <Tab title="Python">

192 ```bash theme={null}

193 python3 agent.py

194 ```

195 </Tab>

196 

197 <Tab title="TypeScript">

198 ```bash theme={null}

199 npx tsx agent.ts

200 ```

201 </Tab>

202</Tabs>

203 

204Après l'exécution, vérifiez `utils.py`. Vous verrez du code défensif gérant les listes vides et les utilisateurs nuls. Votre agent a autonomement :

205 

2061. **Lu** `utils.py` pour comprendre le code

2072. **Analysé** la logique et identifié les cas limites qui causeraient un plantage

2083. **Modifié** le fichier pour ajouter une gestion d'erreur appropriée

209 

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

211 

212<Note>

213 Si vous voyez « API key not found », assurez-vous d'avoir défini la variable d'environnement `ANTHROPIC_API_KEY` dans votre fichier `.env` ou votre environnement shell. Consultez le [guide de dépannage complet](/fr/troubleshooting) pour plus d'aide.

214</Note>

215 

216### Essayer d'autres invites

217 

218Maintenant que votre agent est configuré, essayez quelques invites différentes :

219 

220* `"Add docstrings to all functions in utils.py"`

221* `"Add type hints to all functions in utils.py"`

222* `"Create a README.md documenting the functions in utils.py"`

223 

224### Personnaliser votre agent

225 

226Vous pouvez modifier le comportement de votre agent en changeant les options. Voici quelques exemples :

227 

228**Ajouter la capacité de recherche web :**

229 

230<CodeGroup>

231 ```python Python theme={null}

232 options = ClaudeAgentOptions(

233 allowed_tools=["Read", "Edit", "Glob", "WebSearch"], permission_mode="acceptEdits"

234 )

235 ```

236 

237 ```typescript TypeScript hidelines={1,-1} theme={null}

238 const _ = {

239 options: {

240 allowedTools: ["Read", "Edit", "Glob", "WebSearch"],

241 permissionMode: "acceptEdits"

242 }

243 };

244 ```

245</CodeGroup>

246 

247**Donner à Claude une invite système personnalisée :**

248 

249<CodeGroup>

250 ```python Python theme={null}

251 options = ClaudeAgentOptions(

252 allowed_tools=["Read", "Edit", "Glob"],

253 permission_mode="acceptEdits",

254 system_prompt="You are a senior Python developer. Always follow PEP 8 style guidelines.",

255 )

256 ```

257 

258 ```typescript TypeScript hidelines={1,-1} theme={null}

259 const _ = {

260 options: {

261 allowedTools: ["Read", "Edit", "Glob"],

262 permissionMode: "acceptEdits",

263 systemPrompt: "You are a senior Python developer. Always follow PEP 8 style guidelines."

264 }

265 };

266 ```

267</CodeGroup>

268 

269**Exécuter des commandes dans le terminal :**

270 

271<CodeGroup>

272 ```python Python theme={null}

273 options = ClaudeAgentOptions(

274 allowed_tools=["Read", "Edit", "Glob", "Bash"], permission_mode="acceptEdits"

275 )

276 ```

277 

278 ```typescript TypeScript hidelines={1,-1} theme={null}

279 const _ = {

280 options: {

281 allowedTools: ["Read", "Edit", "Glob", "Bash"],

282 permissionMode: "acceptEdits"

283 }

284 };

285 ```

286</CodeGroup>

287 

288Avec `Bash` activé, essayez : `"Write unit tests for utils.py, run them, and fix any failures"`

289 

290## Concepts clés

291 

292**Les outils** contrôlent ce que votre agent peut faire :

293 

294| Outils | Ce que l'agent peut faire |

295| -------------------------------------- | ---------------------------- |

296| `Read`, `Glob`, `Grep` | Analyse en lecture seule |

297| `Read`, `Edit`, `Glob` | Analyser et modifier le code |

298| `Read`, `Edit`, `Bash`, `Glob`, `Grep` | Automatisation complète |

299 

300**Les modes de permission** contrôlent le niveau de surveillance humaine que vous souhaitez :

301 

302| Mode | Comportement | Cas d'usage |

303| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------- |

304| `acceptEdits` | Approuve automatiquement les modifications de fichiers et les commandes courantes du système de fichiers, demande les autres actions | Flux de travail de développement de confiance |

305| `dontAsk` | Refuse tout ce qui n'est pas dans `allowedTools` | Agents sans tête verrouillés |

306| `auto` (TypeScript uniquement) | Un classificateur de modèle approuve ou refuse chaque appel d'outil | Agents autonomes avec garde-fous de sécurité |

307| `bypassPermissions` | Exécute chaque outil sans invites | CI en bac à sable, environnements entièrement de confiance |

308| `default` | Nécessite un rappel `canUseTool` pour gérer l'approbation | Flux d'approbation personnalisés |

309 

310L'exemple ci-dessus utilise le mode `acceptEdits`, qui approuve automatiquement les opérations de fichiers afin que l'agent puisse s'exécuter sans invites interactives. Si vous souhaitez inviter les utilisateurs à approuver, utilisez le mode `default` et fournissez un rappel [`canUseTool`](/fr/agent-sdk/user-input) qui collecte l'entrée de l'utilisateur. Pour plus de contrôle, consultez [Permissions](/fr/agent-sdk/permissions).

311 

312## Dépannage

313 

314### Erreur API `thinking.type.enabled` n'est pas pris en charge pour ce modèle

315 

316Claude Opus 4.7 remplace `thinking.type.enabled` par `thinking.type.adaptive`. Les versions plus anciennes du SDK Agent échouent avec l'erreur API suivante lorsque vous sélectionnez `claude-opus-4-7` :

317 

318```text theme={null}

319API Error: 400 {"type":"invalid_request_error","message":"\"thinking.type.enabled\" is not supported for this model. Use \"thinking.type.adaptive\" and \"output_config.effort\" to control thinking behavior."}

320```

321 

322Mettez à niveau vers le SDK Agent v0.2.111 ou version ultérieure pour utiliser Opus 4.7.

323 

324## Étapes suivantes

325 

326Maintenant que vous avez créé votre premier agent, apprenez à étendre ses capacités et à l'adapter à votre cas d'usage :

327 

328* **[Permissions](/fr/agent-sdk/permissions)** : contrôlez ce que votre agent peut faire et quand il a besoin d'approbation

329* **[Hooks](/fr/agent-sdk/hooks)** : exécutez du code personnalisé avant ou après les appels d'outils

330* **[Sessions](/fr/agent-sdk/sessions)** : créez des agents multi-tours qui maintiennent le contexte

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

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

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

agent-sdk/slash-commands.md +444 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Slash Commands dans le SDK

6 

7> Apprenez à utiliser les slash commands pour contrôler les sessions Claude Code via le SDK

8 

9Les slash commands offrent un moyen de contrôler les sessions Claude Code avec des commandes spéciales commençant par `/`. Ces commandes peuvent être envoyées via le SDK pour effectuer des actions comme compacter le contexte, lister l'utilisation du contexte ou invoquer des commandes personnalisées. Seules les commandes qui fonctionnent sans terminal interactif peuvent être envoyées via le SDK ; le message `system/init` liste celles disponibles dans votre session.

10 

11## Découvrir les Slash Commands Disponibles

12 

13Le Claude Agent SDK fournit des informations sur les slash commands disponibles dans le message d'initialisation du système. Accédez à ces informations au démarrage de votre session :

14 

15<CodeGroup>

16 ```typescript TypeScript theme={null}

17 import { query } from "@anthropic-ai/claude-agent-sdk";

18 

19 for await (const message of query({

20 prompt: "Hello Claude",

21 options: { maxTurns: 1 }

22 })) {

23 if (message.type === "system" && message.subtype === "init") {

24 console.log("Available slash commands:", message.slash_commands);

25 // Example output: ["/compact", "/context", "/usage"]

26 }

27 }

28 ```

29 

30 ```python Python theme={null}

31 import asyncio

32 from claude_agent_sdk import query, ClaudeAgentOptions, SystemMessage

33 

34 

35 async def main():

36 async for message in query(prompt="Hello Claude", options=ClaudeAgentOptions(max_turns=1)):

37 if isinstance(message, SystemMessage) and message.subtype == "init":

38 print("Available slash commands:", message.data["slash_commands"])

39 # Example output: ["/compact", "/context", "/usage"]

40 

41 

42 asyncio.run(main())

43 ```

44</CodeGroup>

45 

46## Envoyer des Slash Commands

47 

48Envoyez des slash commands en les incluant dans votre chaîne de prompt, comme du texte ordinaire :

49 

50<CodeGroup>

51 ```typescript TypeScript theme={null}

52 import { query } from "@anthropic-ai/claude-agent-sdk";

53 

54 // Send a slash command

55 for await (const message of query({

56 prompt: "/compact",

57 options: { maxTurns: 1 }

58 })) {

59 if (message.type === "result") {

60 console.log("Command executed:", message.result);

61 }

62 }

63 ```

64 

65 ```python Python theme={null}

66 import asyncio

67 from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

68 

69 

70 async def main():

71 # Send a slash command

72 async for message in query(prompt="/compact", options=ClaudeAgentOptions(max_turns=1)):

73 if isinstance(message, ResultMessage):

74 print("Command executed:", message.result)

75 

76 

77 asyncio.run(main())

78 ```

79</CodeGroup>

80 

81## Slash Commands Courants

82 

83### `/compact` - Compacter l'Historique de Conversation

84 

85La commande `/compact` réduit la taille de votre historique de conversation en résumant les messages plus anciens tout en préservant le contexte important :

86 

87<CodeGroup>

88 ```typescript TypeScript theme={null}

89 import { query } from "@anthropic-ai/claude-agent-sdk";

90 

91 for await (const message of query({

92 prompt: "/compact",

93 options: { maxTurns: 1 }

94 })) {

95 if (message.type === "system" && message.subtype === "compact_boundary") {

96 console.log("Compaction completed");

97 console.log("Pre-compaction tokens:", message.compact_metadata.pre_tokens);

98 console.log("Trigger:", message.compact_metadata.trigger);

99 }

100 }

101 ```

102 

103 ```python Python theme={null}

104 import asyncio

105 from claude_agent_sdk import query, ClaudeAgentOptions, SystemMessage

106 

107 

108 async def main():

109 async for message in query(prompt="/compact", options=ClaudeAgentOptions(max_turns=1)):

110 if isinstance(message, SystemMessage) and message.subtype == "compact_boundary":

111 print("Compaction completed")

112 print("Pre-compaction tokens:", message.data["compact_metadata"]["pre_tokens"])

113 print("Trigger:", message.data["compact_metadata"]["trigger"])

114 

115 

116 asyncio.run(main())

117 ```

118</CodeGroup>

119 

120### Effacer la conversation

121 

122La commande interactive `/clear` n'est pas disponible dans le SDK. Chaque appel `query()` démarre déjà une conversation nouvelle, donc pour effacer le contexte, terminez le `query()` actuel et démarrez-en un nouveau. La conversation précédente reste sur le disque et peut être reprise en passant son ID de session à l'[option `resume`](/fr/agent-sdk/sessions#resume-by-id).

123 

124## Créer des Slash Commands Personnalisés

125 

126En plus d'utiliser les slash commands intégrés, vous pouvez créer vos propres commandes personnalisées disponibles via le SDK. Les commandes personnalisées sont définies comme des fichiers markdown dans des répertoires spécifiques, de la même manière que les subagents sont configurés.

127 

128<Note>

129 Le répertoire `.claude/commands/` est le format hérité. Le format recommandé est `.claude/skills/<name>/SKILL.md`, qui supporte la même invocation slash-command (`/name`) plus l'invocation autonome par Claude. Voir [Skills](/fr/agent-sdk/skills) pour le format actuel. Le CLI continue de supporter les deux formats, et les exemples ci-dessous restent exacts pour `.claude/commands/`.

130</Note>

131 

132### Emplacements des Fichiers

133 

134Les slash commands personnalisés sont stockés dans des répertoires désignés selon leur portée :

135 

136* **Commandes de projet** : `.claude/commands/` - Disponibles uniquement dans le projet actuel (hérité ; préférez `.claude/skills/`)

137* **Commandes personnelles** : `~/.claude/commands/` - Disponibles dans tous vos projets (hérité ; préférez `~/.claude/skills/`)

138 

139### Format du Fichier

140 

141Chaque commande personnalisée est un fichier markdown où :

142 

143* Le nom du fichier (sans extension `.md`) devient le nom de la commande

144* Le contenu du fichier définit ce que la commande fait

145* Un frontmatter YAML optionnel fournit la configuration

146 

147#### Exemple Basique

148 

149Créez `.claude/commands/refactor.md` :

150 

151```markdown theme={null}

152Refactor the selected code to improve readability and maintainability.

153Focus on clean code principles and best practices.

154```

155 

156Cela crée la commande `/refactor` que vous pouvez utiliser via le SDK.

157 

158#### Avec Frontmatter

159 

160Créez `.claude/commands/security-check.md` :

161 

162```markdown theme={null}

163---

164allowed-tools: Read, Grep, Glob

165description: Run security vulnerability scan

166model: claude-opus-4-7

167---

168 

169Analyze the codebase for security vulnerabilities including:

170- SQL injection risks

171- XSS vulnerabilities

172- Exposed credentials

173- Insecure configurations

174```

175 

176### Utiliser des Commandes Personnalisées dans le SDK

177 

178Une fois définies dans le système de fichiers, les commandes personnalisées sont automatiquement disponibles via le SDK :

179 

180<CodeGroup>

181 ```typescript TypeScript theme={null}

182 import { query } from "@anthropic-ai/claude-agent-sdk";

183 

184 // Use a custom command

185 for await (const message of query({

186 prompt: "/refactor src/auth/login.ts",

187 options: { maxTurns: 3 }

188 })) {

189 if (message.type === "assistant") {

190 console.log("Refactoring suggestions:", message.message);

191 }

192 }

193 

194 // Custom commands appear in the slash_commands list

195 for await (const message of query({

196 prompt: "Hello",

197 options: { maxTurns: 1 }

198 })) {

199 if (message.type === "system" && message.subtype === "init") {

200 // Will include both built-in and custom commands

201 console.log("Available commands:", message.slash_commands);

202 // Example: ["/compact", "/context", "/usage", "/refactor", "/security-check"]

203 }

204 }

205 ```

206 

207 ```python Python theme={null}

208 import asyncio

209 from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, SystemMessage

210 

211 

212 async def main():

213 # Use a custom command

214 async for message in query(

215 prompt="/refactor src/auth/login.py", options=ClaudeAgentOptions(max_turns=3)

216 ):

217 if isinstance(message, AssistantMessage):

218 for block in message.content:

219 if hasattr(block, "text"):

220 print("Refactoring suggestions:", block.text)

221 

222 # Custom commands appear in the slash_commands list

223 async for message in query(prompt="Hello", options=ClaudeAgentOptions(max_turns=1)):

224 if isinstance(message, SystemMessage) and message.subtype == "init":

225 # Will include both built-in and custom commands

226 print("Available commands:", message.data["slash_commands"])

227 # Example: ["/compact", "/context", "/usage", "/refactor", "/security-check"]

228 

229 

230 asyncio.run(main())

231 ```

232</CodeGroup>

233 

234### Fonctionnalités Avancées

235 

236#### Arguments et Placeholders

237 

238Les commandes personnalisées supportent les arguments dynamiques en utilisant des placeholders :

239 

240Créez `.claude/commands/fix-issue.md` :

241 

242```markdown theme={null}

243---

244argument-hint: [issue-number] [priority]

245description: Fix a GitHub issue

246---

247 

248Fix issue #$1 with priority $2.

249Check the issue description and implement the necessary changes.

250```

251 

252Utilisez dans le SDK :

253 

254<CodeGroup>

255 ```typescript TypeScript theme={null}

256 import { query } from "@anthropic-ai/claude-agent-sdk";

257 

258 // Pass arguments to custom command

259 for await (const message of query({

260 prompt: "/fix-issue 123 high",

261 options: { maxTurns: 5 }

262 })) {

263 // Command will process with $1="123" and $2="high"

264 if (message.type === "result") {

265 console.log("Issue fixed:", message.result);

266 }

267 }

268 ```

269 

270 ```python Python theme={null}

271 import asyncio

272 from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

273 

274 

275 async def main():

276 # Pass arguments to custom command

277 async for message in query(prompt="/fix-issue 123 high", options=ClaudeAgentOptions(max_turns=5)):

278 # Command will process with $1="123" and $2="high"

279 if isinstance(message, ResultMessage):

280 print("Issue fixed:", message.result)

281 

282 

283 asyncio.run(main())

284 ```

285</CodeGroup>

286 

287#### Exécution de Commandes Bash

288 

289Les commandes personnalisées peuvent exécuter des commandes bash et inclure leur sortie :

290 

291Créez `.claude/commands/git-commit.md` :

292 

293```markdown theme={null}

294---

295allowed-tools: Bash(git add *), Bash(git status *), Bash(git commit *)

296description: Create a git commit

297---

298 

299## Context

300 

301- Current status: !`git status`

302- Current diff: !`git diff HEAD`

303 

304## Task

305 

306Create a git commit with appropriate message based on the changes.

307```

308 

309#### Références de Fichiers

310 

311Incluez le contenu des fichiers en utilisant le préfixe `@` :

312 

313Créez `.claude/commands/review-config.md` :

314 

315```markdown theme={null}

316---

317description: Review configuration files

318---

319 

320Review the following configuration files for issues:

321- Package config: @package.json

322- TypeScript config: @tsconfig.json

323- Environment config: @.env

324 

325Check for security issues, outdated dependencies, and misconfigurations.

326```

327 

328### Organisation avec Namespacing

329 

330Organisez les commandes dans des sous-répertoires pour une meilleure structure :

331 

332```bash theme={null}

333.claude/commands/

334├── frontend/

335│ ├── component.md # Creates /component (project:frontend)

336│ └── style-check.md # Creates /style-check (project:frontend)

337├── backend/

338│ ├── api-test.md # Creates /api-test (project:backend)

339│ └── db-migrate.md # Creates /db-migrate (project:backend)

340└── review.md # Creates /review (project)

341```

342 

343Le sous-répertoire apparaît dans la description de la commande mais n'affecte pas le nom de la commande lui-même.

344 

345### Exemples Pratiques

346 

347#### Commande de Révision de Code

348 

349Créez `.claude/commands/code-review.md` :

350 

351```markdown theme={null}

352---

353allowed-tools: Read, Grep, Glob, Bash(git diff *)

354description: Comprehensive code review

355---

356 

357## Changed Files

358!`git diff --name-only HEAD~1`

359 

360## Detailed Changes

361!`git diff HEAD~1`

362 

363## Review Checklist

364 

365Review the above changes for:

3661. Code quality and readability

3672. Security vulnerabilities

3683. Performance implications

3694. Test coverage

3705. Documentation completeness

371 

372Provide specific, actionable feedback organized by priority.

373```

374 

375#### Commande Test Runner

376 

377Créez `.claude/commands/test.md` :

378 

379```markdown theme={null}

380---

381allowed-tools: Bash, Read, Edit

382argument-hint: [test-pattern]

383description: Run tests with optional pattern

384---

385 

386Run tests matching pattern: $ARGUMENTS

387 

3881. Detect the test framework (Jest, pytest, etc.)

3892. Run tests with the provided pattern

3903. If tests fail, analyze and fix them

3914. Re-run to verify fixes

392```

393 

394Utilisez ces commandes via le SDK :

395 

396<CodeGroup>

397 ```typescript TypeScript theme={null}

398 import { query } from "@anthropic-ai/claude-agent-sdk";

399 

400 // Run code review

401 for await (const message of query({

402 prompt: "/code-review",

403 options: { maxTurns: 3 }

404 })) {

405 // Process review feedback

406 }

407 

408 // Run specific tests

409 for await (const message of query({

410 prompt: "/test auth",

411 options: { maxTurns: 5 }

412 })) {

413 // Handle test results

414 }

415 ```

416 

417 ```python Python theme={null}

418 import asyncio

419 from claude_agent_sdk import query, ClaudeAgentOptions

420 

421 

422 async def main():

423 # Run code review

424 async for message in query(prompt="/code-review", options=ClaudeAgentOptions(max_turns=3)):

425 # Process review feedback

426 pass

427 

428 # Run specific tests

429 async for message in query(prompt="/test auth", options=ClaudeAgentOptions(max_turns=5)):

430 # Handle test results

431 pass

432 

433 

434 asyncio.run(main())

435 ```

436</CodeGroup>

437 

438## Voir Aussi

439 

440* [Slash Commands](/fr/skills) - Documentation complète des slash commands

441* [Subagents dans le SDK](/fr/agent-sdk/subagents) - Configuration similaire basée sur le système de fichiers pour les subagents

442* [Référence TypeScript SDK](/fr/agent-sdk/typescript) - Documentation complète de l'API

443* [Aperçu du SDK](/fr/agent-sdk/overview) - Concepts généraux du SDK

444* [Référence CLI](/fr/cli-reference) - Interface de ligne de commande

agent-sdk/typescript.md +2975 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Référence du SDK Agent - TypeScript

6 

7> Référence API complète du SDK Agent TypeScript, incluant toutes les fonctions, types et interfaces.

8 

9<script src="/components/typescript-sdk-type-links.js" defer />

10 

11<Note>

12 **Essayez la nouvelle interface V2 (aperçu) :** Une interface simplifiée avec les modèles `send()` et `stream()` est maintenant disponible, ce qui facilite les conversations multi-tours. [En savoir plus sur l'aperçu TypeScript V2](/fr/agent-sdk/typescript-v2-preview)

13</Note>

14 

15## Installation

16 

17```bash theme={null}

18npm install @anthropic-ai/claude-agent-sdk

19```

20 

21<Note>

22 Le SDK regroupe un binaire Claude Code natif pour votre plateforme en tant que dépendance optionnelle telle que `@anthropic-ai/claude-agent-sdk-darwin-arm64`. Vous n'avez pas besoin d'installer Claude Code séparément. Si votre gestionnaire de paquets ignore les dépendances optionnelles, le SDK lève `Native CLI binary for <platform> not found` ; définissez [`pathToClaudeCodeExecutable`](#options) sur un binaire `claude` installé séparément à la place.

23</Note>

24 

25## Fonctions

26 

27### `query()`

28 

29La fonction principale pour interagir avec Claude Code. Crée un générateur asynchrone qui diffuse les messages au fur et à mesure de leur arrivée.

30 

31```typescript theme={null}

32function query({

33 prompt,

34 options

35}: {

36 prompt: string | AsyncIterable<SDKUserMessage>;

37 options?: Options;

38}): Query;

39```

40 

41#### Paramètres

42 

43| Paramètre | Type | Description |

44| :-------- | :---------------------------------------------------------------- | :---------------------------------------------------------------------------------------- |

45| `prompt` | `string \| AsyncIterable<`[`SDKUserMessage`](#sdkuser-message)`>` | L'invite d'entrée sous forme de chaîne ou d'itérable asynchrone pour le mode de diffusion |

46| `options` | [`Options`](#options) | Objet de configuration optionnel (voir le type Options ci-dessous) |

47 

48#### Retours

49 

50Retourne un objet [`Query`](#query-object) qui étend `AsyncGenerator<`[`SDKMessage`](#sdk-message)`, void>` avec des méthodes supplémentaires.

51 

52### `startup()`

53 

54Préconfigure le sous-processus CLI en le générant et en complétant la poignée de main d'initialisation avant qu'une invite soit disponible. Le handle [`WarmQuery`](#warm-query) retourné accepte une invite plus tard et l'écrit dans un processus déjà prêt, de sorte que le premier appel `query()` se résout sans payer le coût de génération et d'initialisation du sous-processus en ligne.

55 

56```typescript theme={null}

57function startup(params?: {

58 options?: Options;

59 initializeTimeoutMs?: number;

60}): Promise<WarmQuery>;

61```

62 

63#### Paramètres

64 

65| Paramètre | Type | Description |

66| :-------------------- | :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

67| `options` | [`Options`](#options) | Objet de configuration optionnel. Identique au paramètre `options` de `query()` |

68| `initializeTimeoutMs` | `number` | Temps maximum en millisecondes à attendre pour l'initialisation du sous-processus. Par défaut `60000`. Si l'initialisation ne se termine pas à temps, la promesse est rejetée avec une erreur de délai d'expiration |

69 

70#### Retours

71 

72Retourne une `Promise<`[`WarmQuery`](#warm-query)`>` qui se résout une fois que le sous-processus a été généré et a complété sa poignée de main d'initialisation.

73 

74#### Exemple

75 

76Appelez `startup()` tôt, par exemple au démarrage de l'application, puis appelez `.query()` sur le handle retourné une fois qu'une invite est prête. Cela déplace la génération du sous-processus et l'initialisation en dehors du chemin critique.

77 

78```typescript theme={null}

79import { startup } from "@anthropic-ai/claude-agent-sdk";

80 

81// Payez le coût de démarrage à l'avance

82const warm = await startup({ options: { maxTurns: 3 } });

83 

84// Plus tard, quand une invite est prête, c'est immédiat

85for await (const message of warm.query("What files are here?")) {

86 console.log(message);

87}

88```

89 

90### `tool()`

91 

92Crée une définition d'outil MCP type-safe pour une utilisation avec les serveurs MCP du SDK.

93 

94```typescript theme={null}

95function tool<Schema extends AnyZodRawShape>(

96 name: string,

97 description: string,

98 inputSchema: Schema,

99 handler: (args: InferShape<Schema>, extra: unknown) => Promise<CallToolResult>,

100 extras?: { annotations?: ToolAnnotations }

101): SdkMcpToolDefinition<Schema>;

102```

103 

104#### Paramètres

105 

106| Paramètre | Type | Description |

107| :------------ | :------------------------------------------------------------------ | :---------------------------------------------------------------------------------- |

108| `name` | `string` | Le nom de l'outil |

109| `description` | `string` | Une description de ce que fait l'outil |

110| `inputSchema` | `Schema extends AnyZodRawShape` | Schéma Zod définissant les paramètres d'entrée de l'outil (supporte Zod 3 et Zod 4) |

111| `handler` | `(args, extra) => Promise<`[`CallToolResult`](#call-tool-result)`>` | Fonction asynchrone qui exécute la logique de l'outil |

112| `extras` | `{ annotations?: `[`ToolAnnotations`](#tool-annotations)` }` | Annotations MCP optionnelles fournissant des indices comportementaux aux clients |

113 

114#### `ToolAnnotations`

115 

116Réexportée depuis `@modelcontextprotocol/sdk/types.js`. Tous les champs sont des indices optionnels ; les clients ne doivent pas s'y fier pour les décisions de sécurité.

117 

118| Champ | Type | Par défaut | Description |

119| :---------------- | :-------- | :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

120| `title` | `string` | `undefined` | Titre lisible par l'homme pour l'outil |

121| `readOnlyHint` | `boolean` | `false` | Si `true`, l'outil ne modifie pas son environnement |

122| `destructiveHint` | `boolean` | `true` | Si `true`, l'outil peut effectuer des mises à jour destructrices (uniquement significatif quand `readOnlyHint` est `false`) |

123| `idempotentHint` | `boolean` | `false` | Si `true`, les appels répétés avec les mêmes arguments n'ont aucun effet supplémentaire (uniquement significatif quand `readOnlyHint` est `false`) |

124| `openWorldHint` | `boolean` | `true` | Si `true`, l'outil interagit avec des entités externes (par exemple, recherche web). Si `false`, le domaine de l'outil est fermé (par exemple, un outil de mémoire) |

125 

126```typescript theme={null}

127import { tool } from "@anthropic-ai/claude-agent-sdk";

128import { z } from "zod";

129 

130const searchTool = tool(

131 "search",

132 "Search the web",

133 { query: z.string() },

134 async ({ query }) => {

135 return { content: [{ type: "text", text: `Results for: ${query}` }] };

136 },

137 { annotations: { readOnlyHint: true, openWorldHint: true } }

138);

139```

140 

141### `createSdkMcpServer()`

142 

143Crée une instance de serveur MCP qui s'exécute dans le même processus que votre application.

144 

145```typescript theme={null}

146function createSdkMcpServer(options: {

147 name: string;

148 version?: string;

149 tools?: Array<SdkMcpToolDefinition<any>>;

150}): McpSdkServerConfigWithInstance;

151```

152 

153#### Paramètres

154 

155| Paramètre | Type | Description |

156| :---------------- | :---------------------------- | :------------------------------------------------------------ |

157| `options.name` | `string` | Le nom du serveur MCP |

158| `options.version` | `string` | Chaîne de version optionnelle |

159| `options.tools` | `Array<SdkMcpToolDefinition>` | Tableau de définitions d'outils créées avec [`tool()`](#tool) |

160 

161### `listSessions()`

162 

163Découvre et répertorie les sessions passées avec des métadonnées légères. Filtrez par répertoire de projet ou répertoriez les sessions dans tous les projets.

164 

165```typescript theme={null}

166function listSessions(options?: ListSessionsOptions): Promise<SDKSessionInfo[]>;

167```

168 

169#### Paramètres

170 

171| Paramètre | Type | Par défaut | Description |

172| :------------------------- | :-------- | :---------- | :--------------------------------------------------------------------------------------------------------------- |

173| `options.dir` | `string` | `undefined` | Répertoire pour lequel répertorier les sessions. Lorsqu'il est omis, retourne les sessions dans tous les projets |

174| `options.limit` | `number` | `undefined` | Nombre maximum de sessions à retourner |

175| `options.includeWorktrees` | `boolean` | `true` | Quand `dir` est à l'intérieur d'un référentiel git, inclure les sessions de tous les chemins worktree |

176 

177#### Type de retour : `SDKSessionInfo`

178 

179| Propriété | Type | Description |

180| :------------- | :-------------------- | :------------------------------------------------------------------------------------------------- |

181| `sessionId` | `string` | Identifiant de session unique (UUID) |

182| `summary` | `string` | Titre d'affichage : titre personnalisé, résumé généré automatiquement ou première invite |

183| `lastModified` | `number` | Heure de dernière modification en millisecondes depuis l'époque |

184| `fileSize` | `number \| undefined` | Taille du fichier de session en octets. Rempli uniquement pour le stockage JSONL local |

185| `customTitle` | `string \| undefined` | Titre de session défini par l'utilisateur (via `/rename`) |

186| `firstPrompt` | `string \| undefined` | Première invite utilisateur significative dans la session |

187| `gitBranch` | `string \| undefined` | Branche Git à la fin de la session |

188| `cwd` | `string \| undefined` | Répertoire de travail pour la session |

189| `tag` | `string \| undefined` | Étiquette de session définie par l'utilisateur (voir [`tagSession()`](#tag-session)) |

190| `createdAt` | `number \| undefined` | Heure de création en millisecondes depuis l'époque, à partir de l'horodatage de la première entrée |

191 

192#### Exemple

193 

194Imprimez les 10 sessions les plus récentes pour un projet. Les résultats sont triés par `lastModified` décroissant, donc le premier élément est le plus récent. Omettez `dir` pour rechercher dans tous les projets.

195 

196```typescript theme={null}

197import { listSessions } from "@anthropic-ai/claude-agent-sdk";

198 

199const sessions = await listSessions({ dir: "/path/to/project", limit: 10 });

200 

201for (const session of sessions) {

202 console.log(`${session.summary} (${session.sessionId})`);

203}

204```

205 

206### `getSessionMessages()`

207 

208Lit les messages utilisateur et assistant à partir d'une transcription de session passée.

209 

210```typescript theme={null}

211function getSessionMessages(

212 sessionId: string,

213 options?: GetSessionMessagesOptions

214): Promise<SessionMessage[]>;

215```

216 

217#### Paramètres

218 

219| Paramètre | Type | Par défaut | Description |

220| :--------------- | :------- | :---------- | :------------------------------------------------------------------------------------------------ |

221| `sessionId` | `string` | requis | UUID de session à lire (voir `listSessions()`) |

222| `options.dir` | `string` | `undefined` | Répertoire de projet pour trouver la session. Lorsqu'il est omis, recherche dans tous les projets |

223| `options.limit` | `number` | `undefined` | Nombre maximum de messages à retourner |

224| `options.offset` | `number` | `undefined` | Nombre de messages à ignorer à partir du début |

225 

226#### Type de retour : `SessionMessage`

227 

228| Propriété | Type | Description |

229| :------------------- | :---------------------- | :------------------------------------------------ |

230| `type` | `"user" \| "assistant"` | Rôle du message |

231| `uuid` | `string` | Identifiant de message unique |

232| `session_id` | `string` | Session à laquelle ce message appartient |

233| `message` | `unknown` | Charge utile de message brute de la transcription |

234| `parent_tool_use_id` | `null` | Réservé |

235 

236#### Exemple

237 

238```typescript theme={null}

239import { listSessions, getSessionMessages } from "@anthropic-ai/claude-agent-sdk";

240 

241const [latest] = await listSessions({ dir: "/path/to/project", limit: 1 });

242 

243if (latest) {

244 const messages = await getSessionMessages(latest.sessionId, {

245 dir: "/path/to/project",

246 limit: 20

247 });

248 

249 for (const msg of messages) {

250 console.log(`[${msg.type}] ${msg.uuid}`);

251 }

252}

253```

254 

255### `getSessionInfo()`

256 

257Lit les métadonnées d'une seule session par ID sans analyser le répertoire de projet complet.

258 

259```typescript theme={null}

260function getSessionInfo(

261 sessionId: string,

262 options?: GetSessionInfoOptions

263): Promise<SDKSessionInfo | undefined>;

264```

265 

266#### Paramètres

267 

268| Paramètre | Type | Par défaut | Description |

269| :------------ | :------- | :---------- | :------------------------------------------------------------------------------------------------ |

270| `sessionId` | `string` | requis | UUID de la session à rechercher |

271| `options.dir` | `string` | `undefined` | Chemin du répertoire de projet. Lorsqu'il est omis, recherche dans tous les répertoires de projet |

272 

273Retourne [`SDKSessionInfo`](#return-type-sdk-session-info), ou `undefined` si la session n'est pas trouvée.

274 

275### `renameSession()`

276 

277Renomme une session en ajoutant une entrée de titre personnalisé. Les appels répétés sont sûrs ; le titre le plus récent gagne.

278 

279```typescript theme={null}

280function renameSession(

281 sessionId: string,

282 title: string,

283 options?: SessionMutationOptions

284): Promise<void>;

285```

286 

287#### Paramètres

288 

289| Paramètre | Type | Par défaut | Description |

290| :------------ | :------- | :---------- | :------------------------------------------------------------------------------------------------ |

291| `sessionId` | `string` | requis | UUID de la session à renommer |

292| `title` | `string` | requis | Nouveau titre. Doit être non vide après suppression des espaces blancs |

293| `options.dir` | `string` | `undefined` | Chemin du répertoire de projet. Lorsqu'il est omis, recherche dans tous les répertoires de projet |

294 

295### `tagSession()`

296 

297Étiquette une session. Passez `null` pour effacer l'étiquette. Les appels répétés sont sûrs ; l'étiquette la plus récente gagne.

298 

299```typescript theme={null}

300function tagSession(

301 sessionId: string,

302 tag: string | null,

303 options?: SessionMutationOptions

304): Promise<void>;

305```

306 

307#### Paramètres

308 

309| Paramètre | Type | Par défaut | Description |

310| :------------ | :--------------- | :---------- | :------------------------------------------------------------------------------------------------ |

311| `sessionId` | `string` | requis | UUID de la session à étiqueter |

312| `tag` | `string \| null` | requis | Chaîne d'étiquette, ou `null` pour effacer |

313| `options.dir` | `string` | `undefined` | Chemin du répertoire de projet. Lorsqu'il est omis, recherche dans tous les répertoires de projet |

314 

315## Types

316 

317### `Options`

318 

319Objet de configuration pour la fonction `query()`.

320 

321| Propriété | Type | Par défaut | Description |

322| :-------------------------------- | :------------------------------------------------------------------------------------------------------- | :------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

323| `abortController` | `AbortController` | `new AbortController()` | Contrôleur pour annuler les opérations |

324| `additionalDirectories` | `string[]` | `[]` | Répertoires supplémentaires auxquels Claude peut accéder |

325| `agent` | `string` | `undefined` | Nom de l'agent pour le thread principal. L'agent doit être défini dans l'option `agents` ou dans les paramètres |

326| `agents` | `Record<string, [`AgentDefinition`](#agent-definition)>` | `undefined` | Définir programmatiquement les sous-agents |

327| `allowDangerouslySkipPermissions` | `boolean` | `false` | Activer le contournement des permissions. Requis lors de l'utilisation de `permissionMode: 'bypassPermissions'` |

328| `allowedTools` | `string[]` | `[]` | Outils à approuver automatiquement sans demander. Cela ne restreint pas Claude à seulement ces outils ; les outils non répertoriés passent à `permissionMode` et `canUseTool`. Utilisez `disallowedTools` pour bloquer les outils. Voir [Permissions](/fr/agent-sdk/permissions#allow-and-deny-rules) |

329| `betas` | [`SdkBeta`](#sdk-beta)`[]` | `[]` | Activer les fonctionnalités bêta |

330| `canUseTool` | [`CanUseTool`](#can-use-tool) | `undefined` | Fonction de permission personnalisée pour l'utilisation des outils |

331| `continue` | `boolean` | `false` | Continuer la conversation la plus récente |

332| `cwd` | `string` | `process.cwd()` | Répertoire de travail actuel |

333| `debug` | `boolean` | `false` | Activer le mode débogage pour le processus Claude Code |

334| `debugFile` | `string` | `undefined` | Écrire les journaux de débogage dans un chemin de fichier spécifique. Active implicitement le mode débogage |

335| `disallowedTools` | `string[]` | `[]` | Outils à toujours refuser. Les règles de refus sont vérifiées en premier et remplacent `allowedTools` et `permissionMode` (y compris `bypassPermissions`) |

336| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | `'high'` | Contrôle l'effort que Claude met dans sa réponse. Fonctionne avec la réflexion adaptative pour guider la profondeur de réflexion |

337| `enableFileCheckpointing` | `boolean` | `false` | Activer le suivi des modifications de fichiers pour le rembobinage. Voir [Sauvegarde de fichiers](/fr/agent-sdk/file-checkpointing) |

338| `env` | `Record<string, string \| undefined>` | `process.env` | Variables d'environnement. Voir [Variables d'environnement](/fr/env-vars) pour les variables que la CLI sous-jacente lit. Définissez `CLAUDE_AGENT_SDK_CLIENT_APP` pour identifier votre application dans l'en-tête User-Agent |

339| `executable` | `'bun' \| 'deno' \| 'node'` | Détection automatique | Runtime JavaScript à utiliser |

340| `executableArgs` | `string[]` | `[]` | Arguments à passer à l'exécutable |

341| `extraArgs` | `Record<string, string \| null>` | `{}` | Arguments supplémentaires |

342| `fallbackModel` | `string` | `undefined` | Modèle à utiliser si le principal échoue |

343| `forkSession` | `boolean` | `false` | Lors de la reprise avec `resume`, bifurquer vers un nouvel ID de session au lieu de continuer la session d'origine |

344| `hooks` | `Partial<Record<`[`HookEvent`](#hook-event)`, `[`HookCallbackMatcher`](#hook-callback-matcher)`[]>>` | `{}` | Rappels de hook pour les événements |

345| `includePartialMessages` | `boolean` | `false` | Inclure les événements de message partiel |

346| `maxBudgetUsd` | `number` | `undefined` | Arrêter la requête quand l'estimation du coût côté client atteint cette valeur en USD. Comparé à la même estimation que `total_cost_usd` ; voir [Suivi des coûts et de l'utilisation](/fr/agent-sdk/cost-tracking) pour les avertissements de précision |

347| `maxThinkingTokens` | `number` | `undefined` | *Déprécié :* Utilisez `thinking` à la place. Tokens maximum pour le processus de réflexion |

348| `maxTurns` | `number` | `undefined` | Tours agentiques maximum (allers-retours d'utilisation d'outils) |

349| `mcpServers` | `Record<string, [`McpServerConfig`](#mcp-server-config)>` | `{}` | Configurations de serveur MCP |

350| `model` | `string` | Par défaut de CLI | Modèle Claude à utiliser |

351| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | Définir le format de sortie pour les résultats de l'agent. Voir [Sorties structurées](/fr/agent-sdk/structured-outputs) pour les détails |

352| `pathToClaudeCodeExecutable` | `string` | Résolu automatiquement à partir du binaire natif groupé | Chemin vers l'exécutable Claude Code. Nécessaire uniquement si les dépendances optionnelles ont été ignorées lors de l'installation ou si votre plateforme ne figure pas dans l'ensemble pris en charge |

353| `permissionMode` | [`PermissionMode`](#permission-mode) | `'default'` | Mode de permission pour la session |

354| `permissionPromptToolName` | `string` | `undefined` | Nom de l'outil MCP pour les invites de permission |

355| `persistSession` | `boolean` | `true` | Quand `false`, désactive la persistance de session sur disque. Les sessions ne peuvent pas être reprises plus tard |

356| `plugins` | [`SdkPluginConfig`](#sdk-plugin-config)`[]` | `[]` | Charger les plugins personnalisés à partir de chemins locaux. Voir [Plugins](/fr/agent-sdk/plugins) pour les détails |

357| `promptSuggestions` | `boolean` | `false` | Activer les suggestions d'invite. Émet un message `prompt_suggestion` après chaque tour avec une invite utilisateur suivante prédite |

358| `resume` | `string` | `undefined` | ID de session à reprendre |

359| `resumeSessionAt` | `string` | `undefined` | Reprendre la session à un UUID de message spécifique |

360| `sandbox` | [`SandboxSettings`](#sandbox-settings) | `undefined` | Configurer le comportement du sandbox par programmation. Voir [Paramètres du sandbox](#sandbox-settings) pour les détails |

361| `sessionId` | `string` | Généré automatiquement | Utiliser un UUID spécifique pour la session au lieu d'en générer un automatiquement |

362| `sessionStore` | [`SessionStore`](/fr/agent-sdk/session-storage#the-session-store-interface) | `undefined` | Refléter les transcriptions de session vers un backend externe pour que n'importe quel hôte puisse les reprendre. Voir [Persister les sessions vers un stockage externe](/fr/agent-sdk/session-storage) |

363| `settingSources` | [`SettingSource`](#setting-source)`[]` | Paramètres par défaut de CLI (toutes les sources) | Contrôler les paramètres du système de fichiers à charger. Passez `[]` pour désactiver les paramètres utilisateur, projet et locaux. Les paramètres de politique gérée se chargent indépendamment. Voir [Utiliser les fonctionnalités Claude Code](/fr/agent-sdk/claude-code-features#what-settingsources-does-not-control) |

364| `spawnClaudeCodeProcess` | `(options: SpawnOptions) => SpawnedProcess` | `undefined` | Fonction personnalisée pour générer le processus Claude Code. Utilisez pour exécuter Claude Code dans des VM, des conteneurs ou des environnements distants |

365| `stderr` | `(data: string) => void` | `undefined` | Rappel pour la sortie stderr |

366| `strictMcpConfig` | `boolean` | `false` | Appliquer la validation MCP stricte |

367| `systemPrompt` | `string \| { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean }` | `undefined` (invite minimale) | Configuration de l'invite système. Passez une chaîne pour une invite personnalisée, ou `{ type: 'preset', preset: 'claude_code' }` pour utiliser l'invite système de Claude Code. Lors de l'utilisation de la forme d'objet prédéfini, ajoutez `append` pour l'étendre avec des instructions supplémentaires, et définissez `excludeDynamicSections: true` pour déplacer le contexte par session dans le premier message utilisateur pour une [meilleure réutilisation du cache d'invite sur les machines](/fr/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) |

368| `thinking` | [`ThinkingConfig`](#thinking-config) | `{ type: 'adaptive' }` pour les modèles pris en charge | Contrôle le comportement de réflexion/raisonnement de Claude. Voir [`ThinkingConfig`](#thinking-config) pour les options |

369| `toolConfig` | [`ToolConfig`](#tool-config) | `undefined` | Configuration pour le comportement des outils intégrés. Voir [`ToolConfig`](#tool-config) pour les détails |

370| `tools` | `string[] \| { type: 'preset'; preset: 'claude_code' }` | `undefined` | Configuration des outils. Passez un tableau de noms d'outils ou utilisez le prédéfini pour obtenir les outils par défaut de Claude Code |

371 

372### Objet `Query`

373 

374Interface retournée par la fonction `query()`.

375 

376```typescript theme={null}

377interface Query extends AsyncGenerator<SDKMessage, void> {

378 interrupt(): Promise<void>;

379 rewindFiles(

380 userMessageId: string,

381 options?: { dryRun?: boolean }

382 ): Promise<RewindFilesResult>;

383 setPermissionMode(mode: PermissionMode): Promise<void>;

384 setModel(model?: string): Promise<void>;

385 setMaxThinkingTokens(maxThinkingTokens: number | null): Promise<void>;

386 initializationResult(): Promise<SDKControlInitializeResponse>;

387 supportedCommands(): Promise<SlashCommand[]>;

388 supportedModels(): Promise<ModelInfo[]>;

389 supportedAgents(): Promise<AgentInfo[]>;

390 mcpServerStatus(): Promise<McpServerStatus[]>;

391 accountInfo(): Promise<AccountInfo>;

392 reconnectMcpServer(serverName: string): Promise<void>;

393 toggleMcpServer(serverName: string, enabled: boolean): Promise<void>;

394 setMcpServers(servers: Record<string, McpServerConfig>): Promise<McpSetServersResult>;

395 streamInput(stream: AsyncIterable<SDKUserMessage>): Promise<void>;

396 stopTask(taskId: string): Promise<void>;

397 close(): void;

398}

399```

400 

401#### Méthodes

402 

403| Méthode | Description |

404| :------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

405| `interrupt()` | Interrompt la requête (disponible uniquement en mode d'entrée en diffusion) |

406| `rewindFiles(userMessageId, options?)` | Restaure les fichiers à leur état au message utilisateur spécifié. Passez `{ dryRun: true }` pour prévisualiser les modifications. Nécessite `enableFileCheckpointing: true`. Voir [Sauvegarde de fichiers](/fr/agent-sdk/file-checkpointing) |

407| `setPermissionMode()` | Change le mode de permission (disponible uniquement en mode d'entrée en diffusion) |

408| `setModel()` | Change le modèle (disponible uniquement en mode d'entrée en diffusion) |

409| `setMaxThinkingTokens()` | *Déprécié :* Utilisez l'option `thinking` à la place. Change les tokens de réflexion maximum |

410| `initializationResult()` | Retourne le résultat d'initialisation complet incluant les commandes prises en charge, les modèles, les informations de compte et la configuration du style de sortie |

411| `supportedCommands()` | Retourne les commandes slash disponibles |

412| `supportedModels()` | Retourne les modèles disponibles avec les informations d'affichage |

413| `supportedAgents()` | Retourne les sous-agents disponibles en tant que [`AgentInfo`](#agent-info)`[]` |

414| `mcpServerStatus()` | Retourne l'état des serveurs MCP connectés |

415| `accountInfo()` | Retourne les informations de compte |

416| `reconnectMcpServer(serverName)` | Reconnecter un serveur MCP par nom |

417| `toggleMcpServer(serverName, enabled)` | Activer ou désactiver un serveur MCP par nom |

418| `setMcpServers(servers)` | Remplacer dynamiquement l'ensemble des serveurs MCP pour cette session. Retourne des informations sur les serveurs ajoutés, supprimés et les erreurs |

419| `streamInput(stream)` | Diffuser les messages d'entrée vers la requête pour les conversations multi-tours |

420| `stopTask(taskId)` | Arrêter une tâche de fond en cours d'exécution par ID |

421| `close()` | Fermer la requête et terminer le processus sous-jacent. Termine de force la requête et nettoie toutes les ressources |

422 

423### `WarmQuery`

424 

425Handle retourné par [`startup()`](#startup). Le sous-processus est déjà généré et initialisé, donc appeler `query()` sur ce handle écrit l'invite directement dans un processus prêt sans latence de démarrage.

426 

427```typescript theme={null}

428interface WarmQuery extends AsyncDisposable {

429 query(prompt: string | AsyncIterable<SDKUserMessage>): Query;

430 close(): void;

431}

432```

433 

434#### Méthodes

435 

436| Méthode | Description |

437| :-------------- | :----------------------------------------------------------------------------------------------------------------------------------------- |

438| `query(prompt)` | Envoyer une invite au sous-processus préchauffé et retourner une [`Query`](#query-object). Ne peut être appelé qu'une fois par `WarmQuery` |

439| `close()` | Fermer le sous-processus sans envoyer d'invite. Utilisez ceci pour abandonner une requête chaude qui n'est plus nécessaire |

440 

441`WarmQuery` implémente `AsyncDisposable`, il peut donc être utilisé avec `await using` pour le nettoyage automatique.

442 

443### `SDKControlInitializeResponse`

444 

445Type de retour de `initializationResult()`. Contient les données d'initialisation de session.

446 

447```typescript theme={null}

448type SDKControlInitializeResponse = {

449 commands: SlashCommand[];

450 agents: AgentInfo[];

451 output_style: string;

452 available_output_styles: string[];

453 models: ModelInfo[];

454 account: AccountInfo;

455 fast_mode_state?: "off" | "cooldown" | "on";

456};

457```

458 

459### `AgentDefinition`

460 

461Configuration pour un sous-agent défini par programmation.

462 

463```typescript theme={null}

464type AgentDefinition = {

465 description: string;

466 tools?: string[];

467 disallowedTools?: string[];

468 prompt: string;

469 model?: string;

470 mcpServers?: AgentMcpServerSpec[];

471 skills?: string[];

472 initialPrompt?: string;

473 maxTurns?: number;

474 background?: boolean;

475 memory?: "user" | "project" | "local";

476 effort?: "low" | "medium" | "high" | "xhigh" | "max" | number;

477 permissionMode?: PermissionMode;

478 criticalSystemReminder_EXPERIMENTAL?: string;

479};

480```

481 

482| Champ | Requis | Description |

483| :------------------------------------ | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

484| `description` | Oui | Description en langage naturel de quand utiliser cet agent |

485| `tools` | Non | Tableau de noms d'outils autorisés. S'il est omis, hérite tous les outils du parent |

486| `disallowedTools` | Non | Tableau de noms d'outils à explicitement interdire pour cet agent |

487| `prompt` | Oui | L'invite système de l'agent |

488| `model` | Non | Remplacement de modèle pour cet agent. Accepte un alias tel que `'sonnet'`, `'opus'`, `'haiku'`, `'inherit'`, ou un ID de modèle complet. S'il est omis ou `'inherit'`, utilise le modèle principal |

489| `mcpServers` | Non | Spécifications de serveur MCP pour cet agent |

490| `skills` | Non | Tableau de noms de compétences à précharger dans le contexte de l'agent |

491| `initialPrompt` | Non | Auto-soumis comme le premier tour utilisateur quand cet agent s'exécute en tant qu'agent du thread principal |

492| `maxTurns` | Non | Nombre maximum de tours agentiques (allers-retours API) avant arrêt |

493| `background` | Non | Exécuter cet agent en tant que tâche de fond non-bloquante quand invoqué |

494| `memory` | Non | Source de mémoire pour cet agent : `'user'`, `'project'`, ou `'local'` |

495| `effort` | Non | Niveau d'effort de raisonnement pour cet agent. Accepte un niveau nommé ou un entier |

496| `permissionMode` | Non | Mode de permission pour l'exécution des outils dans cet agent. Voir [`PermissionMode`](#permission-mode) |

497| `criticalSystemReminder_EXPERIMENTAL` | Non | Expérimental : Rappel critique ajouté à l'invite système |

498 

499### `AgentMcpServerSpec`

500 

501Spécifie les serveurs MCP disponibles pour un sous-agent. Peut être un nom de serveur (chaîne référençant un serveur de la configuration `mcpServers` du parent) ou une configuration de serveur en ligne enregistrant les noms de serveur aux configurations.

502 

503```typescript theme={null}

504type AgentMcpServerSpec = string | Record<string, McpServerConfigForProcessTransport>;

505```

506 

507Où `McpServerConfigForProcessTransport` est `McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig`.

508 

509### `SettingSource`

510 

511Contrôle les sources de configuration basées sur le système de fichiers que le SDK charge les paramètres à partir de.

512 

513```typescript theme={null}

514type SettingSource = "user" | "project" | "local";

515```

516 

517| Valeur | Description | Emplacement |

518| :---------- | :-------------------------------------------------- | :---------------------------- |

519| `'user'` | Paramètres utilisateur globaux | `~/.claude/settings.json` |

520| `'project'` | Paramètres de projet partagés (contrôle de version) | `.claude/settings.json` |

521| `'local'` | Paramètres de projet locaux (gitignorés) | `.claude/settings.local.json` |

522 

523#### Comportement par défaut

524 

525Quand `settingSources` est omis ou `undefined`, `query()` charge les mêmes paramètres du système de fichiers que la CLI Claude Code : utilisateur, projet et local. Les paramètres de politique gérée sont chargés dans tous les cas. Voir [Ce que settingSources ne contrôle pas](/fr/agent-sdk/claude-code-features#what-settingsources-does-not-control) pour les entrées qui sont lues indépendamment de cette option, et comment les désactiver.

526 

527#### Pourquoi utiliser settingSources

528 

529**Désactiver les paramètres du système de fichiers :**

530 

531```typescript theme={null}

532// Ne pas charger les paramètres utilisateur, projet ou locaux à partir du disque

533const result = query({

534 prompt: "Analyze this code",

535 options: { settingSources: [] }

536});

537```

538 

539**Charger tous les paramètres du système de fichiers explicitement :**

540 

541```typescript theme={null}

542const result = query({

543 prompt: "Analyze this code",

544 options: {

545 settingSources: ["user", "project", "local"] // Charger tous les paramètres

546 }

547});

548```

549 

550**Charger uniquement des sources de paramètres spécifiques :**

551 

552```typescript theme={null}

553// Charger uniquement les paramètres de projet, ignorer utilisateur et local

554const result = query({

555 prompt: "Run CI checks",

556 options: {

557 settingSources: ["project"] // Uniquement .claude/settings.json

558 }

559});

560```

561 

562**Environnements de test et CI :**

563 

564```typescript theme={null}

565// Assurer un comportement cohérent en CI en excluant les paramètres locaux

566const result = query({

567 prompt: "Run tests",

568 options: {

569 settingSources: ["project"], // Uniquement les paramètres partagés par l'équipe

570 permissionMode: "bypassPermissions"

571 }

572});

573```

574 

575**Applications SDK uniquement :**

576 

577```typescript theme={null}

578// Définir tout par programmation.

579// Passez [] pour refuser les sources de paramètres du système de fichiers.

580const result = query({

581 prompt: "Review this PR",

582 options: {

583 settingSources: [],

584 agents: {

585 /* ... */

586 },

587 mcpServers: {

588 /* ... */

589 },

590 allowedTools: ["Read", "Grep", "Glob"]

591 }

592});

593```

594 

595**Chargement des instructions de projet CLAUDE.md :**

596 

597```typescript theme={null}

598// Charger les paramètres de projet pour inclure les fichiers CLAUDE.md

599const result = query({

600 prompt: "Add a new feature following project conventions",

601 options: {

602 systemPrompt: {

603 type: "preset",

604 preset: "claude_code" // Utiliser l'invite système de Claude Code

605 },

606 settingSources: ["project"], // Charge CLAUDE.md du répertoire de projet

607 allowedTools: ["Read", "Write", "Edit"]

608 }

609});

610```

611 

612#### Précédence des paramètres

613 

614Quand plusieurs sources sont chargées, les paramètres sont fusionnés avec cette précédence (la plus haute à la plus basse) :

615 

6161. Paramètres locaux (`.claude/settings.local.json`)

6172. Paramètres de projet (`.claude/settings.json`)

6183. Paramètres utilisateur (`~/.claude/settings.json`)

619 

620Les options programmatiques telles que `agents` et `allowedTools` remplacent les paramètres du système de fichiers utilisateur, projet et local. Les paramètres de politique gérée ont la priorité sur les options programmatiques.

621 

622### `PermissionMode`

623 

624```typescript theme={null}

625type PermissionMode =

626 | "default" // Comportement de permission standard

627 | "acceptEdits" // Accepter automatiquement les modifications de fichiers

628 | "bypassPermissions" // Contourner tous les contrôles de permission

629 | "plan" // Mode de planification - pas d'exécution

630 | "dontAsk" // Ne pas demander les permissions, refuser si non pré-approuvé

631 | "auto"; // Utiliser un classificateur de modèle pour approuver ou refuser chaque appel d'outil

632```

633 

634### `CanUseTool`

635 

636Type de fonction de permission personnalisée pour contrôler l'utilisation des outils.

637 

638```typescript theme={null}

639type CanUseTool = (

640 toolName: string,

641 input: Record<string, unknown>,

642 options: {

643 signal: AbortSignal;

644 suggestions?: PermissionUpdate[];

645 blockedPath?: string;

646 decisionReason?: string;

647 toolUseID: string;

648 agentID?: string;

649 }

650) => Promise<PermissionResult>;

651```

652 

653| Option | Type | Description |

654| :--------------- | :------------------------------------------- | :------------------------------------------------------------------------------------------------------ |

655| `signal` | `AbortSignal` | Signalé si l'opération doit être abandonnée |

656| `suggestions` | [`PermissionUpdate`](#permission-update)`[]` | Mises à jour de permission suggérées pour que l'utilisateur ne soit pas invité à nouveau pour cet outil |

657| `blockedPath` | `string` | Le chemin de fichier qui a déclenché la demande de permission, le cas échéant |

658| `decisionReason` | `string` | Explique pourquoi cette demande de permission a été déclenchée |

659| `toolUseID` | `string` | Identifiant unique pour cet appel d'outil spécifique dans le message assistant |

660| `agentID` | `string` | Si exécuté dans un sous-agent, l'ID du sous-agent |

661 

662### `PermissionResult`

663 

664Résultat d'une vérification de permission.

665 

666```typescript theme={null}

667type PermissionResult =

668 | {

669 behavior: "allow";

670 updatedInput?: Record<string, unknown>;

671 updatedPermissions?: PermissionUpdate[];

672 toolUseID?: string;

673 }

674 | {

675 behavior: "deny";

676 message: string;

677 interrupt?: boolean;

678 toolUseID?: string;

679 };

680```

681 

682### `ToolConfig`

683 

684Configuration pour le comportement des outils intégrés.

685 

686```typescript theme={null}

687type ToolConfig = {

688 askUserQuestion?: {

689 previewFormat?: "markdown" | "html";

690 };

691};

692```

693 

694| Champ | Type | Description |

695| :------------------------------ | :--------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

696| `askUserQuestion.previewFormat` | `'markdown' \| 'html'` | Accepte le champ `preview` sur les options [`AskUserQuestion`](/fr/agent-sdk/user-input#question-format) et définit son format de contenu. Lorsqu'il n'est pas défini, Claude n'émet pas de prévisualisations |

697 

698### `McpServerConfig`

699 

700Configuration pour les serveurs MCP.

701 

702```typescript theme={null}

703type McpServerConfig =

704 | McpStdioServerConfig

705 | McpSSEServerConfig

706 | McpHttpServerConfig

707 | McpSdkServerConfigWithInstance;

708```

709 

710#### `McpStdioServerConfig`

711 

712```typescript theme={null}

713type McpStdioServerConfig = {

714 type?: "stdio";

715 command: string;

716 args?: string[];

717 env?: Record<string, string>;

718};

719```

720 

721#### `McpSSEServerConfig`

722 

723```typescript theme={null}

724type McpSSEServerConfig = {

725 type: "sse";

726 url: string;

727 headers?: Record<string, string>;

728};

729```

730 

731#### `McpHttpServerConfig`

732 

733```typescript theme={null}

734type McpHttpServerConfig = {

735 type: "http";

736 url: string;

737 headers?: Record<string, string>;

738};

739```

740 

741#### `McpSdkServerConfigWithInstance`

742 

743```typescript theme={null}

744type McpSdkServerConfigWithInstance = {

745 type: "sdk";

746 name: string;

747 instance: McpServer;

748};

749```

750 

751#### `McpClaudeAIProxyServerConfig`

752 

753```typescript theme={null}

754type McpClaudeAIProxyServerConfig = {

755 type: "claudeai-proxy";

756 url: string;

757 id: string;

758};

759```

760 

761### `SdkPluginConfig`

762 

763Configuration pour charger les plugins dans le SDK.

764 

765```typescript theme={null}

766type SdkPluginConfig = {

767 type: "local";

768 path: string;

769};

770```

771 

772| Champ | Type | Description |

773| :----- | :-------- | :------------------------------------------------------------------------------ |

774| `type` | `'local'` | Doit être `'local'` (seuls les plugins locaux sont actuellement pris en charge) |

775| `path` | `string` | Chemin absolu ou relatif au répertoire du plugin |

776 

777**Exemple :**

778 

779```typescript theme={null}

780plugins: [

781 { type: "local", path: "./my-plugin" },

782 { type: "local", path: "/absolute/path/to/plugin" }

783];

784```

785 

786Pour des informations complètes sur la création et l'utilisation de plugins, voir [Plugins](/fr/agent-sdk/plugins).

787 

788## Types de messages

789 

790### `SDKMessage`

791 

792Type union de tous les messages possibles retournés par la requête.

793 

794```typescript theme={null}

795type SDKMessage =

796 | SDKAssistantMessage

797 | SDKUserMessage

798 | SDKUserMessageReplay

799 | SDKResultMessage

800 | SDKSystemMessage

801 | SDKPartialAssistantMessage

802 | SDKCompactBoundaryMessage

803 | SDKStatusMessage

804 | SDKLocalCommandOutputMessage

805 | SDKHookStartedMessage

806 | SDKHookProgressMessage

807 | SDKHookResponseMessage

808 | SDKPluginInstallMessage

809 | SDKToolProgressMessage

810 | SDKAuthStatusMessage

811 | SDKTaskNotificationMessage

812 | SDKTaskStartedMessage

813 | SDKTaskProgressMessage

814 | SDKTaskUpdatedMessage

815 | SDKFilesPersistedEvent

816 | SDKToolUseSummaryMessage

817 | SDKRateLimitEvent

818 | SDKPromptSuggestionMessage;

819```

820 

821### `SDKAssistantMessage`

822 

823Message de réponse assistant.

824 

825```typescript theme={null}

826type SDKAssistantMessage = {

827 type: "assistant";

828 uuid: UUID;

829 session_id: string;

830 message: BetaMessage; // Du SDK Anthropic

831 parent_tool_use_id: string | null;

832 error?: SDKAssistantMessageError;

833};

834```

835 

836Le champ `message` est un [`BetaMessage`](https://platform.claude.com/docs/fr/api/messages/create) du SDK Anthropic. Il inclut des champs comme `id`, `content`, `model`, `stop_reason` et `usage`.

837 

838`SDKAssistantMessageError` est l'un de : `'authentication_failed'`, `'oauth_org_not_allowed'`, `'billing_error'`, `'rate_limit'`, `'invalid_request'`, `'server_error'`, `'max_output_tokens'` ou `'unknown'`.

839 

840### `SDKUserMessage`

841 

842Message d'entrée utilisateur.

843 

844```typescript theme={null}

845type SDKUserMessage = {

846 type: "user";

847 uuid?: UUID;

848 session_id: string;

849 message: MessageParam; // Du SDK Anthropic

850 parent_tool_use_id: string | null;

851 isSynthetic?: boolean;

852 shouldQuery?: boolean;

853 tool_use_result?: unknown;

854 origin?: SDKMessageOrigin;

855};

856```

857 

858Définissez `shouldQuery` sur `false` pour ajouter le message à la transcription sans déclencher un tour assistant. Le message est conservé et fusionné dans le prochain message utilisateur qui déclenche un tour. Utilisez ceci pour injecter du contexte, comme la sortie d'une commande que vous avez exécutée en dehors de la bande, sans dépenser un appel de modèle.

859 

860### `SDKUserMessageReplay`

861 

862Message utilisateur rejoué avec UUID requis.

863 

864```typescript theme={null}

865type SDKUserMessageReplay = {

866 type: "user";

867 uuid: UUID;

868 session_id: string;

869 message: MessageParam;

870 parent_tool_use_id: string | null;

871 isSynthetic?: boolean;

872 tool_use_result?: unknown;

873 origin?: SDKMessageOrigin;

874 isReplay: true;

875};

876```

877 

878### `SDKResultMessage`

879 

880Message de résultat final.

881 

882```typescript theme={null}

883type SDKResultMessage =

884 | {

885 type: "result";

886 subtype: "success";

887 uuid: UUID;

888 session_id: string;

889 duration_ms: number;

890 duration_api_ms: number;

891 is_error: boolean;

892 num_turns: number;

893 result: string;

894 stop_reason: string | null;

895 total_cost_usd: number;

896 usage: NonNullableUsage;

897 modelUsage: { [modelName: string]: ModelUsage };

898 permission_denials: SDKPermissionDenial[];

899 structured_output?: unknown;

900 deferred_tool_use?: { id: string; name: string; input: Record<string, unknown> };

901 origin?: SDKMessageOrigin;

902 }

903 | {

904 type: "result";

905 subtype:

906 | "error_max_turns"

907 | "error_during_execution"

908 | "error_max_budget_usd"

909 | "error_max_structured_output_retries";

910 uuid: UUID;

911 session_id: string;

912 duration_ms: number;

913 duration_api_ms: number;

914 is_error: boolean;

915 num_turns: number;

916 stop_reason: string | null;

917 total_cost_usd: number;

918 usage: NonNullableUsage;

919 modelUsage: { [modelName: string]: ModelUsage };

920 permission_denials: SDKPermissionDenial[];

921 errors: string[];

922 origin?: SDKMessageOrigin;

923 };

924```

925 

926Le champ `origin` transmet le [`SDKMessageOrigin`](#sdkmessageorigin) du message utilisateur qui a déclenché ce résultat. Quand une tâche de fond se termine et que le SDK injecte un tour de suivi synthétique, le `SDKResultMessage` résultant porte `origin: { kind: "task-notification" }`. Vérifiez ce champ pour distinguer les résultats qui répondent à votre invite des résultats émis pour les suivis de tâches de fond, afin que vous puissiez acheminer ou supprimer ces derniers. Le champ est absent pour les résultats émis avant tout tour utilisateur, comme les erreurs de démarrage.

927 

928Quand un hook `PreToolUse` retourne `permissionDecision: "defer"`, le résultat a `stop_reason: "tool_deferred"` et `deferred_tool_use` porte l'`id`, le `name` et l'`input` de l'outil en attente. Lisez ce champ pour afficher la demande dans votre propre interface utilisateur, puis reprenez avec le même `session_id` pour continuer. Consultez [Différer un appel d'outil pour plus tard](/fr/hooks#defer-a-tool-call-for-later) pour le trajet complet.

929 

930### `SDKSystemMessage`

931 

932Message d'initialisation système.

933 

934```typescript theme={null}

935type SDKSystemMessage = {

936 type: "system";

937 subtype: "init";

938 uuid: UUID;

939 session_id: string;

940 agents?: string[];

941 apiKeySource: ApiKeySource;

942 betas?: string[];

943 claude_code_version: string;

944 cwd: string;

945 tools: string[];

946 mcp_servers: {

947 name: string;

948 status: string;

949 }[];

950 model: string;

951 permissionMode: PermissionMode;

952 slash_commands: string[];

953 output_style: string;

954 skills: string[];

955 plugins: { name: string; path: string }[];

956};

957```

958 

959### `SDKPartialAssistantMessage`

960 

961Message partiel en diffusion (uniquement quand `includePartialMessages` est true).

962 

963```typescript theme={null}

964type SDKPartialAssistantMessage = {

965 type: "stream_event";

966 event: BetaRawMessageStreamEvent; // Du SDK Anthropic

967 parent_tool_use_id: string | null;

968 uuid: UUID;

969 session_id: string;

970};

971```

972 

973### `SDKCompactBoundaryMessage`

974 

975Message indiquant une limite de compaction de conversation.

976 

977```typescript theme={null}

978type SDKCompactBoundaryMessage = {

979 type: "system";

980 subtype: "compact_boundary";

981 uuid: UUID;

982 session_id: string;

983 compact_metadata: {

984 trigger: "manual" | "auto";

985 pre_tokens: number;

986 };

987};

988```

989 

990### `SDKPluginInstallMessage`

991 

992Événement de progression d'installation de plugin. Émis quand [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/fr/env-vars) est défini, pour que votre application Agent SDK puisse suivre l'installation du plugin de marketplace avant le premier tour. Les statuts `started` et `completed` encadrent l'installation globale. Les statuts `installed` et `failed` rapportent les marchés individuels et incluent `name`.

993 

994```typescript theme={null}

995type SDKPluginInstallMessage = {

996 type: "system";

997 subtype: "plugin_install";

998 status: "started" | "installed" | "failed" | "completed";

999 name?: string;

1000 error?: string;

1001 uuid: UUID;

1002 session_id: string;

1003};

1004```

1005 

1006### `SDKPermissionDenial`

1007 

1008Informations sur une utilisation d'outil refusée.

1009 

1010```typescript theme={null}

1011type SDKPermissionDenial = {

1012 tool_name: string;

1013 tool_use_id: string;

1014 tool_input: Record<string, unknown>;

1015};

1016```

1017 

1018### `SDKMessageOrigin`

1019 

1020Provenance d'un message de rôle utilisateur. Ceci apparaît comme `origin` sur [`SDKUserMessage`](#sdkusermessage) et est transmis au [`SDKResultMessage`](#sdkresultmessage) correspondant afin que vous puissiez dire ce qui a déclenché un tour donné.

1021 

1022```typescript theme={null}

1023type SDKMessageOrigin =

1024 | { kind: "human" }

1025 | { kind: "channel"; server: string }

1026 | { kind: "peer"; from: string; name?: string }

1027 | { kind: "task-notification" }

1028 | { kind: "coordinator" };

1029```

1030 

1031| `kind` | Signification |

1032| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1033| `human` | Entrée directe de l'utilisateur final. Sur les messages utilisateur, une `origin` absente signifie également une entrée humaine. |

1034| `channel` | Message arrivant sur un [canal](/fr/channels). `server` est le nom du serveur MCP source. |

1035| `peer` | Message d'une autre session d'agent via `SendMessage`. `from` est l'adresse de l'expéditeur ; `name` est le nom d'affichage de l'expéditeur quand disponible. |

1036| `task-notification` | Tour synthétique injecté après la fin d'une tâche de fond. Voir [`SDKTaskNotificationMessage`](#sdktasknotificationmessage). |

1037| `coordinator` | Message d'un coordinateur d'équipe dans une [équipe d'agents](/fr/agent-teams). |

1038 

1039## Types de hook

1040 

1041Pour un guide complet sur l'utilisation des hooks avec des exemples et des modèles courants, voir le [guide des hooks](/fr/agent-sdk/hooks).

1042 

1043### `HookEvent`

1044 

1045Événements de hook disponibles.

1046 

1047```typescript theme={null}

1048type HookEvent =

1049 | "PreToolUse"

1050 | "PostToolUse"

1051 | "PostToolUseFailure"

1052 | "PostToolBatch"

1053 | "Notification"

1054 | "UserPromptSubmit"

1055 | "SessionStart"

1056 | "SessionEnd"

1057 | "Stop"

1058 | "SubagentStart"

1059 | "SubagentStop"

1060 | "PreCompact"

1061 | "PermissionRequest"

1062 | "Setup"

1063 | "TeammateIdle"

1064 | "TaskCompleted"

1065 | "ConfigChange"

1066 | "WorktreeCreate"

1067 | "WorktreeRemove";

1068```

1069 

1070### `HookCallback`

1071 

1072Type de fonction de rappel de hook.

1073 

1074```typescript theme={null}

1075type HookCallback = (

1076 input: HookInput, // Union de tous les types d'entrée de hook

1077 toolUseID: string | undefined,

1078 options: { signal: AbortSignal }

1079) => Promise<HookJSONOutput>;

1080```

1081 

1082### `HookCallbackMatcher`

1083 

1084Configuration de hook avec matcher optionnel.

1085 

1086```typescript theme={null}

1087interface HookCallbackMatcher {

1088 matcher?: string;

1089 hooks: HookCallback[];

1090 timeout?: number; // Délai d'expiration en secondes pour tous les hooks dans ce matcher

1091}

1092```

1093 

1094### `HookInput`

1095 

1096Type union de tous les types d'entrée de hook.

1097 

1098```typescript theme={null}

1099type HookInput =

1100 | PreToolUseHookInput

1101 | PostToolUseHookInput

1102 | PostToolUseFailureHookInput

1103 | PostToolBatchHookInput

1104 | NotificationHookInput

1105 | UserPromptSubmitHookInput

1106 | SessionStartHookInput

1107 | SessionEndHookInput

1108 | StopHookInput

1109 | SubagentStartHookInput

1110 | SubagentStopHookInput

1111 | PreCompactHookInput

1112 | PermissionRequestHookInput

1113 | SetupHookInput

1114 | TeammateIdleHookInput

1115 | TaskCompletedHookInput

1116 | ConfigChangeHookInput

1117 | WorktreeCreateHookInput

1118 | WorktreeRemoveHookInput;

1119```

1120 

1121### `BaseHookInput`

1122 

1123Interface de base que tous les types d'entrée de hook étendent.

1124 

1125```typescript theme={null}

1126type BaseHookInput = {

1127 session_id: string;

1128 transcript_path: string;

1129 cwd: string;

1130 permission_mode?: string;

1131 agent_id?: string;

1132 agent_type?: string;

1133};

1134```

1135 

1136#### `PreToolUseHookInput`

1137 

1138```typescript theme={null}

1139type PreToolUseHookInput = BaseHookInput & {

1140 hook_event_name: "PreToolUse";

1141 tool_name: string;

1142 tool_input: unknown;

1143 tool_use_id: string;

1144};

1145```

1146 

1147#### `PostToolUseHookInput`

1148 

1149```typescript theme={null}

1150type PostToolUseHookInput = BaseHookInput & {

1151 hook_event_name: "PostToolUse";

1152 tool_name: string;

1153 tool_input: unknown;

1154 tool_response: unknown;

1155 tool_use_id: string;

1156 duration_ms?: number;

1157};

1158```

1159 

1160#### `PostToolUseFailureHookInput`

1161 

1162```typescript theme={null}

1163type PostToolUseFailureHookInput = BaseHookInput & {

1164 hook_event_name: "PostToolUseFailure";

1165 tool_name: string;

1166 tool_input: unknown;

1167 tool_use_id: string;

1168 error: string;

1169 is_interrupt?: boolean;

1170 duration_ms?: number;

1171};

1172```

1173 

1174#### `PostToolBatchHookInput`

1175 

1176S'exécute une fois après que chaque appel d'outil dans un lot ait été résolu, avant la prochaine demande de modèle. `tool_response` porte le contenu `tool_result` sérialisé que le modèle voit ; la forme diffère de l'objet `Output` structuré de `PostToolUseHookInput`.

1177 

1178```typescript theme={null}

1179type PostToolBatchHookInput = BaseHookInput & {

1180 hook_event_name: "PostToolBatch";

1181 tool_calls: PostToolBatchToolCall[];

1182};

1183 

1184type PostToolBatchToolCall = {

1185 tool_name: string;

1186 tool_input: unknown;

1187 tool_use_id: string;

1188 tool_response?: unknown;

1189};

1190```

1191 

1192#### `NotificationHookInput`

1193 

1194```typescript theme={null}

1195type NotificationHookInput = BaseHookInput & {

1196 hook_event_name: "Notification";

1197 message: string;

1198 title?: string;

1199 notification_type: string;

1200};

1201```

1202 

1203#### `UserPromptSubmitHookInput`

1204 

1205```typescript theme={null}

1206type UserPromptSubmitHookInput = BaseHookInput & {

1207 hook_event_name: "UserPromptSubmit";

1208 prompt: string;

1209};

1210```

1211 

1212#### `SessionStartHookInput`

1213 

1214```typescript theme={null}

1215type SessionStartHookInput = BaseHookInput & {

1216 hook_event_name: "SessionStart";

1217 source: "startup" | "resume" | "clear" | "compact";

1218 agent_type?: string;

1219 model?: string;

1220};

1221```

1222 

1223#### `SessionEndHookInput`

1224 

1225```typescript theme={null}

1226type SessionEndHookInput = BaseHookInput & {

1227 hook_event_name: "SessionEnd";

1228 reason: ExitReason; // Chaîne du tableau EXIT_REASONS

1229};

1230```

1231 

1232#### `StopHookInput`

1233 

1234```typescript theme={null}

1235type StopHookInput = BaseHookInput & {

1236 hook_event_name: "Stop";

1237 stop_hook_active: boolean;

1238 last_assistant_message?: string;

1239};

1240```

1241 

1242#### `SubagentStartHookInput`

1243 

1244```typescript theme={null}

1245type SubagentStartHookInput = BaseHookInput & {

1246 hook_event_name: "SubagentStart";

1247 agent_id: string;

1248 agent_type: string;

1249};

1250```

1251 

1252#### `SubagentStopHookInput`

1253 

1254```typescript theme={null}

1255type SubagentStopHookInput = BaseHookInput & {

1256 hook_event_name: "SubagentStop";

1257 stop_hook_active: boolean;

1258 agent_id: string;

1259 agent_transcript_path: string;

1260 agent_type: string;

1261 last_assistant_message?: string;

1262};

1263```

1264 

1265#### `PreCompactHookInput`

1266 

1267```typescript theme={null}

1268type PreCompactHookInput = BaseHookInput & {

1269 hook_event_name: "PreCompact";

1270 trigger: "manual" | "auto";

1271 custom_instructions: string | null;

1272};

1273```

1274 

1275#### `PermissionRequestHookInput`

1276 

1277```typescript theme={null}

1278type PermissionRequestHookInput = BaseHookInput & {

1279 hook_event_name: "PermissionRequest";

1280 tool_name: string;

1281 tool_input: unknown;

1282 permission_suggestions?: PermissionUpdate[];

1283};

1284```

1285 

1286#### `SetupHookInput`

1287 

1288```typescript theme={null}

1289type SetupHookInput = BaseHookInput & {

1290 hook_event_name: "Setup";

1291 trigger: "init" | "maintenance";

1292};

1293```

1294 

1295#### `TeammateIdleHookInput`

1296 

1297```typescript theme={null}

1298type TeammateIdleHookInput = BaseHookInput & {

1299 hook_event_name: "TeammateIdle";

1300 teammate_name: string;

1301 team_name: string;

1302};

1303```

1304 

1305#### `TaskCompletedHookInput`

1306 

1307```typescript theme={null}

1308type TaskCompletedHookInput = BaseHookInput & {

1309 hook_event_name: "TaskCompleted";

1310 task_id: string;

1311 task_subject: string;

1312 task_description?: string;

1313 teammate_name?: string;

1314 team_name?: string;

1315};

1316```

1317 

1318#### `ConfigChangeHookInput`

1319 

1320```typescript theme={null}

1321type ConfigChangeHookInput = BaseHookInput & {

1322 hook_event_name: "ConfigChange";

1323 source:

1324 | "user_settings"

1325 | "project_settings"

1326 | "local_settings"

1327 | "policy_settings"

1328 | "skills";

1329 file_path?: string;

1330};

1331```

1332 

1333#### `WorktreeCreateHookInput`

1334 

1335```typescript theme={null}

1336type WorktreeCreateHookInput = BaseHookInput & {

1337 hook_event_name: "WorktreeCreate";

1338 name: string;

1339};

1340```

1341 

1342#### `WorktreeRemoveHookInput`

1343 

1344```typescript theme={null}

1345type WorktreeRemoveHookInput = BaseHookInput & {

1346 hook_event_name: "WorktreeRemove";

1347 worktree_path: string;

1348};

1349```

1350 

1351### `HookJSONOutput`

1352 

1353Valeur de retour du hook.

1354 

1355```typescript theme={null}

1356type HookJSONOutput = AsyncHookJSONOutput | SyncHookJSONOutput;

1357```

1358 

1359#### `AsyncHookJSONOutput`

1360 

1361```typescript theme={null}

1362type AsyncHookJSONOutput = {

1363 async: true;

1364 asyncTimeout?: number;

1365};

1366```

1367 

1368#### `SyncHookJSONOutput`

1369 

1370```typescript theme={null}

1371type SyncHookJSONOutput = {

1372 continue?: boolean;

1373 suppressOutput?: boolean;

1374 stopReason?: string;

1375 decision?: "approve" | "block";

1376 systemMessage?: string;

1377 reason?: string;

1378 hookSpecificOutput?:

1379 | {

1380 hookEventName: "PreToolUse";

1381 permissionDecision?: "allow" | "deny" | "ask" | "defer";

1382 permissionDecisionReason?: string;

1383 updatedInput?: Record<string, unknown>;

1384 additionalContext?: string;

1385 }

1386 | {

1387 hookEventName: "UserPromptSubmit";

1388 additionalContext?: string;

1389 }

1390 | {

1391 hookEventName: "SessionStart";

1392 additionalContext?: string;

1393 }

1394 | {

1395 hookEventName: "Setup";

1396 additionalContext?: string;

1397 }

1398 | {

1399 hookEventName: "SubagentStart";

1400 additionalContext?: string;

1401 }

1402 | {

1403 hookEventName: "PostToolUse";

1404 additionalContext?: string;

1405 updatedToolOutput?: unknown;

1406 /** @deprecated Utilisez `updatedToolOutput`, qui fonctionne pour tous les outils. */

1407 updatedMCPToolOutput?: unknown;

1408 }

1409 | {

1410 hookEventName: "PostToolUseFailure";

1411 additionalContext?: string;

1412 }

1413 | {

1414 hookEventName: "PostToolBatch";

1415 additionalContext?: string;

1416 }

1417 | {

1418 hookEventName: "Notification";

1419 additionalContext?: string;

1420 }

1421 | {

1422 hookEventName: "PermissionRequest";

1423 decision:

1424 | {

1425 behavior: "allow";

1426 updatedInput?: Record<string, unknown>;

1427 updatedPermissions?: PermissionUpdate[];

1428 }

1429 | {

1430 behavior: "deny";

1431 message?: string;

1432 interrupt?: boolean;

1433 };

1434 };

1435};

1436```

1437 

1438## Types d'entrée d'outil

1439 

1440Documentation des schémas d'entrée pour tous les outils Claude Code intégrés. Ces types sont exportés depuis `@anthropic-ai/claude-agent-sdk` et peuvent être utilisés pour les interactions d'outils type-safe.

1441 

1442### `ToolInputSchemas`

1443 

1444Union de tous les types d'entrée d'outil, exportée depuis `@anthropic-ai/claude-agent-sdk`.

1445 

1446```typescript theme={null}

1447type ToolInputSchemas =

1448 | AgentInput

1449 | AskUserQuestionInput

1450 | BashInput

1451 | TaskOutputInput

1452 | EnterWorktreeInput

1453 | ExitPlanModeInput

1454 | FileEditInput

1455 | FileReadInput

1456 | FileWriteInput

1457 | GlobInput

1458 | GrepInput

1459 | ListMcpResourcesInput

1460 | McpInput

1461 | MonitorInput

1462 | NotebookEditInput

1463 | ReadMcpResourceInput

1464 | SubscribeMcpResourceInput

1465 | SubscribePollingInput

1466 | TaskStopInput

1467 | TodoWriteInput

1468 | UnsubscribeMcpResourceInput

1469 | UnsubscribePollingInput

1470 | WebFetchInput

1471 | WebSearchInput;

1472```

1473 

1474### Agent

1475 

1476**Nom de l'outil :** `Agent` (précédemment `Task`, qui est toujours accepté comme alias)

1477 

1478```typescript theme={null}

1479type AgentInput = {

1480 description: string;

1481 prompt: string;

1482 subagent_type: string;

1483 model?: "sonnet" | "opus" | "haiku";

1484 resume?: string;

1485 run_in_background?: boolean;

1486 max_turns?: number;

1487 name?: string;

1488 team_name?: string;

1489 mode?: "acceptEdits" | "bypassPermissions" | "default" | "dontAsk" | "plan";

1490 isolation?: "worktree";

1491};

1492```

1493 

1494Lance un nouvel agent pour gérer les tâches complexes et multi-étapes de manière autonome.

1495 

1496### AskUserQuestion

1497 

1498**Nom de l'outil :** `AskUserQuestion`

1499 

1500```typescript theme={null}

1501type AskUserQuestionInput = {

1502 questions: Array<{

1503 question: string;

1504 header: string;

1505 options: Array<{ label: string; description: string; preview?: string }>;

1506 multiSelect: boolean;

1507 }>;

1508};

1509```

1510 

1511Pose des questions de clarification à l'utilisateur pendant l'exécution. Voir [Gérer les approbations et l'entrée utilisateur](/fr/agent-sdk/user-input#handle-clarifying-questions) pour les détails d'utilisation.

1512 

1513### Bash

1514 

1515**Nom de l'outil :** `Bash`

1516 

1517```typescript theme={null}

1518type BashInput = {

1519 command: string;

1520 timeout?: number;

1521 description?: string;

1522 run_in_background?: boolean;

1523 dangerouslyDisableSandbox?: boolean;

1524};

1525```

1526 

1527Exécute les commandes bash dans une session shell persistante avec délai d'expiration optionnel et exécution en arrière-plan.

1528 

1529### Monitor

1530 

1531**Nom de l'outil :** `Monitor`

1532 

1533```typescript theme={null}

1534type MonitorInput = {

1535 command: string;

1536 description: string;

1537 timeout_ms?: number;

1538 persistent?: boolean;

1539};

1540```

1541 

1542Exécute un script de fond et livre chaque ligne stdout à Claude en tant qu'événement pour qu'il puisse réagir sans interrogation. Définissez `persistent: true` pour les montres de longueur de session telles que les queues de journal. Monitor suit les mêmes règles de permission que Bash. Voir la [référence de l'outil Monitor](/fr/tools-reference#monitor-tool) pour le comportement et la disponibilité du fournisseur.

1543 

1544### TaskOutput

1545 

1546**Nom de l'outil :** `TaskOutput`

1547 

1548```typescript theme={null}

1549type TaskOutputInput = {

1550 task_id: string;

1551 block: boolean;

1552 timeout: number;

1553};

1554```

1555 

1556Récupère la sortie d'une tâche de fond en cours d'exécution ou terminée.

1557 

1558### Edit

1559 

1560**Nom de l'outil :** `Edit`

1561 

1562```typescript theme={null}

1563type FileEditInput = {

1564 file_path: string;

1565 old_string: string;

1566 new_string: string;

1567 replace_all?: boolean;

1568};

1569```

1570 

1571Effectue des remplacements de chaînes exacts dans les fichiers.

1572 

1573### Read

1574 

1575**Nom de l'outil :** `Read`

1576 

1577```typescript theme={null}

1578type FileReadInput = {

1579 file_path: string;

1580 offset?: number;

1581 limit?: number;

1582 pages?: string;

1583};

1584```

1585 

1586Lit les fichiers du système de fichiers local, y compris le texte, les images, les PDF et les carnets Jupyter. Utilisez `pages` pour les plages de pages PDF (par exemple, `"1-5"`).

1587 

1588### Write

1589 

1590**Nom de l'outil :** `Write`

1591 

1592```typescript theme={null}

1593type FileWriteInput = {

1594 file_path: string;

1595 content: string;

1596};

1597```

1598 

1599Écrit un fichier dans le système de fichiers local, en écrasant s'il existe.

1600 

1601### Glob

1602 

1603**Nom de l'outil :** `Glob`

1604 

1605```typescript theme={null}

1606type GlobInput = {

1607 pattern: string;

1608 path?: string;

1609};

1610```

1611 

1612Correspondance de motif de fichier rapide qui fonctionne avec n'importe quelle taille de base de code.

1613 

1614### Grep

1615 

1616**Nom de l'outil :** `Grep`

1617 

1618```typescript theme={null}

1619type GrepInput = {

1620 pattern: string;

1621 path?: string;

1622 glob?: string;

1623 type?: string;

1624 output_mode?: "content" | "files_with_matches" | "count";

1625 "-i"?: boolean;

1626 "-n"?: boolean;

1627 "-B"?: number;

1628 "-A"?: number;

1629 "-C"?: number;

1630 context?: number;

1631 head_limit?: number;

1632 offset?: number;

1633 multiline?: boolean;

1634};

1635```

1636 

1637Outil de recherche puissant construit sur ripgrep avec support regex.

1638 

1639### TaskStop

1640 

1641**Nom de l'outil :** `TaskStop`

1642 

1643```typescript theme={null}

1644type TaskStopInput = {

1645 task_id?: string;

1646 shell_id?: string; // Déprécié : utilisez task_id

1647};

1648```

1649 

1650Arrête une tâche de fond en cours d'exécution ou un shell par ID.

1651 

1652### NotebookEdit

1653 

1654**Nom de l'outil :** `NotebookEdit`

1655 

1656```typescript theme={null}

1657type NotebookEditInput = {

1658 notebook_path: string;

1659 cell_id?: string;

1660 new_source: string;

1661 cell_type?: "code" | "markdown";

1662 edit_mode?: "replace" | "insert" | "delete";

1663};

1664```

1665 

1666Édite les cellules dans les fichiers de carnet Jupyter.

1667 

1668### WebFetch

1669 

1670**Nom de l'outil :** `WebFetch`

1671 

1672```typescript theme={null}

1673type WebFetchInput = {

1674 url: string;

1675 prompt: string;

1676};

1677```

1678 

1679Récupère le contenu d'une URL et le traite avec un modèle IA.

1680 

1681### WebSearch

1682 

1683**Nom de l'outil :** `WebSearch`

1684 

1685```typescript theme={null}

1686type WebSearchInput = {

1687 query: string;

1688 allowed_domains?: string[];

1689 blocked_domains?: string[];

1690};

1691```

1692 

1693Recherche le web et retourne les résultats formatés.

1694 

1695### TodoWrite

1696 

1697**Nom de l'outil :** `TodoWrite`

1698 

1699```typescript theme={null}

1700type TodoWriteInput = {

1701 todos: Array<{

1702 content: string;

1703 status: "pending" | "in_progress" | "completed";

1704 activeForm: string;

1705 }>;

1706};

1707```

1708 

1709Crée et gère une liste de tâches structurée pour suivre la progression.

1710 

1711### ExitPlanMode

1712 

1713**Nom de l'outil :** `ExitPlanMode`

1714 

1715```typescript theme={null}

1716type ExitPlanModeInput = {

1717 allowedPrompts?: Array<{

1718 tool: "Bash";

1719 prompt: string;

1720 }>;

1721};

1722```

1723 

1724Quitte le mode de planification. Spécifie éventuellement les permissions basées sur les invites nécessaires pour implémenter le plan.

1725 

1726### ListMcpResources

1727 

1728**Nom de l'outil :** `ListMcpResources`

1729 

1730```typescript theme={null}

1731type ListMcpResourcesInput = {

1732 server?: string;

1733};

1734```

1735 

1736Répertorie les ressources MCP disponibles à partir des serveurs connectés.

1737 

1738### ReadMcpResource

1739 

1740**Nom de l'outil :** `ReadMcpResource`

1741 

1742```typescript theme={null}

1743type ReadMcpResourceInput = {

1744 server: string;

1745 uri: string;

1746};

1747```

1748 

1749Lit une ressource MCP spécifique à partir d'un serveur.

1750 

1751### EnterWorktree

1752 

1753**Nom de l'outil :** `EnterWorktree`

1754 

1755```typescript theme={null}

1756type EnterWorktreeInput = {

1757 name?: string;

1758 path?: string;

1759};

1760```

1761 

1762Crée et entre dans un worktree git temporaire pour un travail isolé. Passez `path` pour basculer dans un worktree existant du référentiel actuel au lieu d'en créer un nouveau. `name` et `path` s'excluent mutuellement.

1763 

1764## Types de sortie d'outil

1765 

1766Documentation des schémas de sortie pour tous les outils Claude Code intégrés. Ces types sont exportés depuis `@anthropic-ai/claude-agent-sdk` et représentent les données de réponse réelles retournées par chaque outil.

1767 

1768### `ToolOutputSchemas`

1769 

1770Union de tous les types de sortie d'outil.

1771 

1772```typescript theme={null}

1773type ToolOutputSchemas =

1774 | AgentOutput

1775 | AskUserQuestionOutput

1776 | BashOutput

1777 | EnterWorktreeOutput

1778 | ExitPlanModeOutput

1779 | FileEditOutput

1780 | FileReadOutput

1781 | FileWriteOutput

1782 | GlobOutput

1783 | GrepOutput

1784 | ListMcpResourcesOutput

1785 | MonitorOutput

1786 | NotebookEditOutput

1787 | ReadMcpResourceOutput

1788 | TaskStopOutput

1789 | TodoWriteOutput

1790 | WebFetchOutput

1791 | WebSearchOutput;

1792```

1793 

1794### Agent

1795 

1796**Nom de l'outil :** `Agent` (précédemment `Task`, qui est toujours accepté comme alias)

1797 

1798```typescript theme={null}

1799type AgentOutput =

1800 | {

1801 status: "completed";

1802 agentId: string;

1803 content: Array<{ type: "text"; text: string }>;

1804 totalToolUseCount: number;

1805 totalDurationMs: number;

1806 totalTokens: number;

1807 usage: {

1808 input_tokens: number;

1809 output_tokens: number;

1810 cache_creation_input_tokens: number | null;

1811 cache_read_input_tokens: number | null;

1812 server_tool_use: {

1813 web_search_requests: number;

1814 web_fetch_requests: number;

1815 } | null;

1816 service_tier: ("standard" | "priority" | "batch") | null;

1817 cache_creation: {

1818 ephemeral_1h_input_tokens: number;

1819 ephemeral_5m_input_tokens: number;

1820 } | null;

1821 };

1822 prompt: string;

1823 }

1824 | {

1825 status: "async_launched";

1826 agentId: string;

1827 description: string;

1828 prompt: string;

1829 outputFile: string;

1830 canReadOutputFile?: boolean;

1831 }

1832 | {

1833 status: "sub_agent_entered";

1834 description: string;

1835 message: string;

1836 };

1837```

1838 

1839Retourne le résultat du sous-agent. Discriminé sur le champ `status` : `"completed"` pour les tâches terminées, `"async_launched"` pour les tâches de fond et `"sub_agent_entered"` pour les sous-agents interactifs.

1840 

1841### AskUserQuestion

1842 

1843**Nom de l'outil :** `AskUserQuestion`

1844 

1845```typescript theme={null}

1846type AskUserQuestionOutput = {

1847 questions: Array<{

1848 question: string;

1849 header: string;

1850 options: Array<{ label: string; description: string; preview?: string }>;

1851 multiSelect: boolean;

1852 }>;

1853 answers: Record<string, string>;

1854};

1855```

1856 

1857Retourne les questions posées et les réponses de l'utilisateur.

1858 

1859### Bash

1860 

1861**Nom de l'outil :** `Bash`

1862 

1863```typescript theme={null}

1864type BashOutput = {

1865 stdout: string;

1866 stderr: string;

1867 rawOutputPath?: string;

1868 interrupted: boolean;

1869 isImage?: boolean;

1870 backgroundTaskId?: string;

1871 backgroundedByUser?: boolean;

1872 dangerouslyDisableSandbox?: boolean;

1873 returnCodeInterpretation?: string;

1874 structuredContent?: unknown[];

1875 persistedOutputPath?: string;

1876 persistedOutputSize?: number;

1877};

1878```

1879 

1880Retourne la sortie de la commande avec stdout/stderr séparés. Les commandes de fond incluent un `backgroundTaskId`.

1881 

1882### Monitor

1883 

1884**Nom de l'outil :** `Monitor`

1885 

1886```typescript theme={null}

1887type MonitorOutput = {

1888 taskId: string;

1889 timeoutMs: number;

1890 persistent?: boolean;

1891};

1892```

1893 

1894Retourne l'ID de tâche de fond pour le moniteur en cours d'exécution. Utilisez cet ID avec `TaskStop` pour annuler la surveillance plus tôt.

1895 

1896### Edit

1897 

1898**Nom de l'outil :** `Edit`

1899 

1900```typescript theme={null}

1901type FileEditOutput = {

1902 filePath: string;

1903 oldString: string;

1904 newString: string;

1905 originalFile: string;

1906 structuredPatch: Array<{

1907 oldStart: number;

1908 oldLines: number;

1909 newStart: number;

1910 newLines: number;

1911 lines: string[];

1912 }>;

1913 userModified: boolean;

1914 replaceAll: boolean;

1915 gitDiff?: {

1916 filename: string;

1917 status: "modified" | "added";

1918 additions: number;

1919 deletions: number;

1920 changes: number;

1921 patch: string;

1922 };

1923};

1924```

1925 

1926Retourne le diff structuré de l'opération d'édition.

1927 

1928### Read

1929 

1930**Nom de l'outil :** `Read`

1931 

1932```typescript theme={null}

1933type FileReadOutput =

1934 | {

1935 type: "text";

1936 file: {

1937 filePath: string;

1938 content: string;

1939 numLines: number;

1940 startLine: number;

1941 totalLines: number;

1942 };

1943 }

1944 | {

1945 type: "image";

1946 file: {

1947 base64: string;

1948 type: "image/jpeg" | "image/png" | "image/gif" | "image/webp";

1949 originalSize: number;

1950 dimensions?: {

1951 originalWidth?: number;

1952 originalHeight?: number;

1953 displayWidth?: number;

1954 displayHeight?: number;

1955 };

1956 };

1957 }

1958 | {

1959 type: "notebook";

1960 file: {

1961 filePath: string;

1962 cells: unknown[];

1963 };

1964 }

1965 | {

1966 type: "pdf";

1967 file: {

1968 filePath: string;

1969 base64: string;

1970 originalSize: number;

1971 };

1972 }

1973 | {

1974 type: "parts";

1975 file: {

1976 filePath: string;

1977 originalSize: number;

1978 count: number;

1979 outputDir: string;

1980 };

1981 };

1982```

1983 

1984Retourne le contenu du fichier dans un format approprié au type de fichier. Discriminé sur le champ `type`.

1985 

1986### Write

1987 

1988**Nom de l'outil :** `Write`

1989 

1990```typescript theme={null}

1991type FileWriteOutput = {

1992 type: "create" | "update";

1993 filePath: string;

1994 content: string;

1995 structuredPatch: Array<{

1996 oldStart: number;

1997 oldLines: number;

1998 newStart: number;

1999 newLines: number;

2000 lines: string[];

2001 }>;

2002 originalFile: string | null;

2003 gitDiff?: {

2004 filename: string;

2005 status: "modified" | "added";

2006 additions: number;

2007 deletions: number;

2008 changes: number;

2009 patch: string;

2010 };

2011};

2012```

2013 

2014Retourne le résultat d'écriture avec les informations de diff structuré.

2015 

2016### Glob

2017 

2018**Nom de l'outil :** `Glob`

2019 

2020```typescript theme={null}

2021type GlobOutput = {

2022 durationMs: number;

2023 numFiles: number;

2024 filenames: string[];

2025 truncated: boolean;

2026};

2027```

2028 

2029Retourne les chemins de fichiers correspondant au motif glob, triés par heure de modification.

2030 

2031### Grep

2032 

2033**Nom de l'outil :** `Grep`

2034 

2035```typescript theme={null}

2036type GrepOutput = {

2037 mode?: "content" | "files_with_matches" | "count";

2038 numFiles: number;

2039 filenames: string[];

2040 content?: string;

2041 numLines?: number;

2042 numMatches?: number;

2043 appliedLimit?: number;

2044 appliedOffset?: number;

2045};

2046```

2047 

2048Retourne les résultats de recherche. La forme varie selon `mode` : liste de fichiers, contenu avec correspondances ou comptages de correspondances.

2049 

2050### TaskStop

2051 

2052**Nom de l'outil :** `TaskStop`

2053 

2054```typescript theme={null}

2055type TaskStopOutput = {

2056 message: string;

2057 task_id: string;

2058 task_type: string;

2059 command?: string;

2060};

2061```

2062 

2063Retourne la confirmation après l'arrêt de la tâche de fond.

2064 

2065### NotebookEdit

2066 

2067**Nom de l'outil :** `NotebookEdit`

2068 

2069```typescript theme={null}

2070type NotebookEditOutput = {

2071 new_source: string;

2072 cell_id?: string;

2073 cell_type: "code" | "markdown";

2074 language: string;

2075 edit_mode: string;

2076 error?: string;

2077 notebook_path: string;

2078 original_file: string;

2079 updated_file: string;

2080};

2081```

2082 

2083Retourne le résultat de l'édition du carnet avec le contenu du fichier original et mis à jour.

2084 

2085### WebFetch

2086 

2087**Nom de l'outil :** `WebFetch`

2088 

2089```typescript theme={null}

2090type WebFetchOutput = {

2091 bytes: number;

2092 code: number;

2093 codeText: string;

2094 result: string;

2095 durationMs: number;

2096 url: string;

2097};

2098```

2099 

2100Retourne le contenu récupéré avec le statut HTTP et les métadonnées.

2101 

2102### WebSearch

2103 

2104**Nom de l'outil :** `WebSearch`

2105 

2106```typescript theme={null}

2107type WebSearchOutput = {

2108 query: string;

2109 results: Array<

2110 | {

2111 tool_use_id: string;

2112 content: Array<{ title: string; url: string }>;

2113 }

2114 | string

2115 >;

2116 durationSeconds: number;

2117};

2118```

2119 

2120Retourne les résultats de recherche du web.

2121 

2122### TodoWrite

2123 

2124**Nom de l'outil :** `TodoWrite`

2125 

2126```typescript theme={null}

2127type TodoWriteOutput = {

2128 oldTodos: Array<{

2129 content: string;

2130 status: "pending" | "in_progress" | "completed";

2131 activeForm: string;

2132 }>;

2133 newTodos: Array<{

2134 content: string;

2135 status: "pending" | "in_progress" | "completed";

2136 activeForm: string;

2137 }>;

2138};

2139```

2140 

2141Retourne les listes de tâches précédentes et mises à jour.

2142 

2143### ExitPlanMode

2144 

2145**Nom de l'outil :** `ExitPlanMode`

2146 

2147```typescript theme={null}

2148type ExitPlanModeOutput = {

2149 plan: string | null;

2150 isAgent: boolean;

2151 filePath?: string;

2152 hasTaskTool?: boolean;

2153 awaitingLeaderApproval?: boolean;

2154 requestId?: string;

2155};

2156```

2157 

2158Retourne l'état du plan après la sortie du mode de planification.

2159 

2160### ListMcpResources

2161 

2162**Nom de l'outil :** `ListMcpResources`

2163 

2164```typescript theme={null}

2165type ListMcpResourcesOutput = Array<{

2166 uri: string;

2167 name: string;

2168 mimeType?: string;

2169 description?: string;

2170 server: string;

2171}>;

2172```

2173 

2174Retourne un tableau de ressources MCP disponibles.

2175 

2176### ReadMcpResource

2177 

2178**Nom de l'outil :** `ReadMcpResource`

2179 

2180```typescript theme={null}

2181type ReadMcpResourceOutput = {

2182 contents: Array<{

2183 uri: string;

2184 mimeType?: string;

2185 text?: string;

2186 }>;

2187};

2188```

2189 

2190Retourne le contenu de la ressource MCP demandée.

2191 

2192### EnterWorktree

2193 

2194**Nom de l'outil :** `EnterWorktree`

2195 

2196```typescript theme={null}

2197type EnterWorktreeOutput = {

2198 worktreePath: string;

2199 worktreeBranch?: string;

2200 message: string;

2201};

2202```

2203 

2204Retourne les informations sur le worktree git.

2205 

2206## Types de permission

2207 

2208### `PermissionUpdate`

2209 

2210Opérations pour mettre à jour les permissions.

2211 

2212```typescript theme={null}

2213type PermissionUpdate =

2214 | {

2215 type: "addRules";

2216 rules: PermissionRuleValue[];

2217 behavior: PermissionBehavior;

2218 destination: PermissionUpdateDestination;

2219 }

2220 | {

2221 type: "replaceRules";

2222 rules: PermissionRuleValue[];

2223 behavior: PermissionBehavior;

2224 destination: PermissionUpdateDestination;

2225 }

2226 | {

2227 type: "removeRules";

2228 rules: PermissionRuleValue[];

2229 behavior: PermissionBehavior;

2230 destination: PermissionUpdateDestination;

2231 }

2232 | {

2233 type: "setMode";

2234 mode: PermissionMode;

2235 destination: PermissionUpdateDestination;

2236 }

2237 | {

2238 type: "addDirectories";

2239 directories: string[];

2240 destination: PermissionUpdateDestination;

2241 }

2242 | {

2243 type: "removeDirectories";

2244 directories: string[];

2245 destination: PermissionUpdateDestination;

2246 };

2247```

2248 

2249### `PermissionBehavior`

2250 

2251```typescript theme={null}

2252type PermissionBehavior = "allow" | "deny" | "ask";

2253```

2254 

2255### `PermissionUpdateDestination`

2256 

2257```typescript theme={null}

2258type PermissionUpdateDestination =

2259 | "userSettings" // Paramètres utilisateur globaux

2260 | "projectSettings" // Paramètres de projet par répertoire

2261 | "localSettings" // Paramètres de projet gitignorés

2262 | "session" // Session actuelle uniquement

2263 | "cliArg"; // Argument CLI

2264```

2265 

2266### `PermissionRuleValue`

2267 

2268```typescript theme={null}

2269type PermissionRuleValue = {

2270 toolName: string;

2271 ruleContent?: string;

2272};

2273```

2274 

2275## Autres types

2276 

2277### `ApiKeySource`

2278 

2279```typescript theme={null}

2280type ApiKeySource = "user" | "project" | "org" | "temporary" | "oauth";

2281```

2282 

2283### `SdkBeta`

2284 

2285Fonctionnalités bêta disponibles qui peuvent être activées via l'option `betas`. Voir [En-têtes bêta](https://platform.claude.com/docs/fr/api/beta-headers) pour plus d'informations.

2286 

2287```typescript theme={null}

2288type SdkBeta = "context-1m-2025-08-07";

2289```

2290 

2291<Warning>

2292 La bêta `context-1m-2025-08-07` est retirée à partir du 30 avril 2026. Passer cette valeur avec Claude Sonnet 4.5 ou Sonnet 4 n'a aucun effet, et les demandes qui dépassent la fenêtre de contexte standard de 200 k tokens retournent une erreur. Pour utiliser une fenêtre de contexte de 1 M tokens, migrez vers [Claude Sonnet 4.6, Claude Opus 4.6 ou Claude Opus 4.7](https://platform.claude.com/docs/fr/about-claude/models/overview), qui incluent 1 M de contexte à prix standard sans en-tête bêta requis.

2293</Warning>

2294 

2295### `SlashCommand`

2296 

2297Informations sur une commande slash disponible.

2298 

2299```typescript theme={null}

2300type SlashCommand = {

2301 name: string;

2302 description: string;

2303 argumentHint: string;

2304 aliases?: string[];

2305};

2306```

2307 

2308### `ModelInfo`

2309 

2310Informations sur un modèle disponible.

2311 

2312```typescript theme={null}

2313type ModelInfo = {

2314 value: string;

2315 displayName: string;

2316 description: string;

2317 supportsEffort?: boolean;

2318 supportedEffortLevels?: ("low" | "medium" | "high" | "xhigh" | "max")[];

2319 supportsAdaptiveThinking?: boolean;

2320 supportsFastMode?: boolean;

2321};

2322```

2323 

2324### `AgentInfo`

2325 

2326Informations sur un sous-agent disponible qui peut être invoqué via l'outil Agent.

2327 

2328```typescript theme={null}

2329type AgentInfo = {

2330 name: string;

2331 description: string;

2332 model?: string;

2333};

2334```

2335 

2336| Champ | Type | Description |

2337| :------------ | :-------------------- | :------------------------------------------------------------------------------- |

2338| `name` | `string` | Identifiant de type d'agent (par exemple, `"Explore"`, `"general-purpose"`) |

2339| `description` | `string` | Description de quand utiliser cet agent |

2340| `model` | `string \| undefined` | Alias de modèle que cet agent utilise. S'il est omis, hérite le modèle du parent |

2341 

2342### `McpServerStatus`

2343 

2344Statut d'un serveur MCP connecté.

2345 

2346```typescript theme={null}

2347type McpServerStatus = {

2348 name: string;

2349 status: "connected" | "failed" | "needs-auth" | "pending" | "disabled";

2350 serverInfo?: {

2351 name: string;

2352 version: string;

2353 };

2354 error?: string;

2355 config?: McpServerStatusConfig;

2356 scope?: string;

2357 tools?: {

2358 name: string;

2359 description?: string;

2360 annotations?: {

2361 readOnly?: boolean;

2362 destructive?: boolean;

2363 openWorld?: boolean;

2364 };

2365 }[];

2366};

2367```

2368 

2369### `McpServerStatusConfig`

2370 

2371La configuration d'un serveur MCP telle que rapportée par `mcpServerStatus()`. C'est l'union de tous les types de transport de serveur MCP.

2372 

2373```typescript theme={null}

2374type McpServerStatusConfig =

2375 | McpStdioServerConfig

2376 | McpSSEServerConfig

2377 | McpHttpServerConfig

2378 | McpSdkServerConfig

2379 | McpClaudeAIProxyServerConfig;

2380```

2381 

2382Voir [`McpServerConfig`](#mcp-server-config) pour les détails sur chaque type de transport.

2383 

2384### `AccountInfo`

2385 

2386Informations de compte pour l'utilisateur authentifié.

2387 

2388```typescript theme={null}

2389type AccountInfo = {

2390 email?: string;

2391 organization?: string;

2392 subscriptionType?: string;

2393 tokenSource?: string;

2394 apiKeySource?: string;

2395};

2396```

2397 

2398### `ModelUsage`

2399 

2400Statistiques d'utilisation par modèle retournées dans les messages de résultat. La valeur `costUSD` est une estimation côté client. Voir [Suivi des coûts et de l'utilisation](/fr/agent-sdk/cost-tracking) pour les avertissements de facturation.

2401 

2402```typescript theme={null}

2403type ModelUsage = {

2404 inputTokens: number;

2405 outputTokens: number;

2406 cacheReadInputTokens: number;

2407 cacheCreationInputTokens: number;

2408 webSearchRequests: number;

2409 costUSD: number;

2410 contextWindow: number;

2411 maxOutputTokens: number;

2412};

2413```

2414 

2415### `ConfigScope`

2416 

2417```typescript theme={null}

2418type ConfigScope = "local" | "user" | "project";

2419```

2420 

2421### `NonNullableUsage`

2422 

2423Une version de [`Usage`](#usage) avec tous les champs nullables rendus non nullables.

2424 

2425```typescript theme={null}

2426type NonNullableUsage = {

2427 [K in keyof Usage]: NonNullable<Usage[K]>;

2428};

2429```

2430 

2431### `Usage`

2432 

2433Statistiques d'utilisation des tokens (depuis `@anthropic-ai/sdk`).

2434 

2435```typescript theme={null}

2436type Usage = {

2437 input_tokens: number | null;

2438 output_tokens: number | null;

2439 cache_creation_input_tokens?: number | null;

2440 cache_read_input_tokens?: number | null;

2441};

2442```

2443 

2444### `CallToolResult`

2445 

2446Type de résultat d'outil MCP (depuis `@modelcontextprotocol/sdk/types.js`).

2447 

2448```typescript theme={null}

2449type CallToolResult = {

2450 content: Array<{

2451 type: "text" | "image" | "resource";

2452 // Les champs supplémentaires varient selon le type

2453 }>;

2454 isError?: boolean;

2455};

2456```

2457 

2458### `ThinkingConfig`

2459 

2460Contrôle le comportement de réflexion/raisonnement de Claude. Prend la priorité sur le `maxThinkingTokens` déprécié.

2461 

2462```typescript theme={null}

2463type ThinkingConfig =

2464 | { type: "adaptive" } // Le modèle détermine quand et combien raisonner (Opus 4.6+)

2465 | { type: "enabled"; budgetTokens?: number } // Budget de token de réflexion fixe

2466 | { type: "disabled" }; // Pas de réflexion étendue

2467```

2468 

2469### `SpawnedProcess`

2470 

2471Interface pour la génération de processus personnalisée (utilisée avec l'option `spawnClaudeCodeProcess`). `ChildProcess` satisfait déjà cette interface.

2472 

2473```typescript theme={null}

2474interface SpawnedProcess {

2475 stdin: Writable;

2476 stdout: Readable;

2477 readonly killed: boolean;

2478 readonly exitCode: number | null;

2479 kill(signal: NodeJS.Signals): boolean;

2480 on(

2481 event: "exit",

2482 listener: (code: number | null, signal: NodeJS.Signals | null) => void

2483 ): void;

2484 on(event: "error", listener: (error: Error) => void): void;

2485 once(

2486 event: "exit",

2487 listener: (code: number | null, signal: NodeJS.Signals | null) => void

2488 ): void;

2489 once(event: "error", listener: (error: Error) => void): void;

2490 off(

2491 event: "exit",

2492 listener: (code: number | null, signal: NodeJS.Signals | null) => void

2493 ): void;

2494 off(event: "error", listener: (error: Error) => void): void;

2495}

2496```

2497 

2498### `SpawnOptions`

2499 

2500Options passées à la fonction de génération personnalisée.

2501 

2502```typescript theme={null}

2503interface SpawnOptions {

2504 command: string;

2505 args: string[];

2506 cwd?: string;

2507 env: Record<string, string | undefined>;

2508 signal: AbortSignal;

2509}

2510```

2511 

2512### `McpSetServersResult`

2513 

2514Résultat d'une opération `setMcpServers()`.

2515 

2516```typescript theme={null}

2517type McpSetServersResult = {

2518 added: string[];

2519 removed: string[];

2520 errors: Record<string, string>;

2521};

2522```

2523 

2524### `RewindFilesResult`

2525 

2526Résultat d'une opération `rewindFiles()`.

2527 

2528```typescript theme={null}

2529type RewindFilesResult = {

2530 canRewind: boolean;

2531 error?: string;

2532 filesChanged?: string[];

2533 insertions?: number;

2534 deletions?: number;

2535};

2536```

2537 

2538### `SDKStatusMessage`

2539 

2540Message de mise à jour de statut (par exemple, compaction).

2541 

2542```typescript theme={null}

2543type SDKStatusMessage = {

2544 type: "system";

2545 subtype: "status";

2546 status: "compacting" | null;

2547 permissionMode?: PermissionMode;

2548 uuid: UUID;

2549 session_id: string;

2550};

2551```

2552 

2553### `SDKTaskNotificationMessage`

2554 

2555Notification quand une tâche de fond se termine, échoue ou est arrêtée. Les tâches de fond incluent les commandes Bash `run_in_background`, les montres [Monitor](#monitor) et les sous-agents de fond.

2556 

2557```typescript theme={null}

2558type SDKTaskNotificationMessage = {

2559 type: "system";

2560 subtype: "task_notification";

2561 task_id: string;

2562 tool_use_id?: string;

2563 status: "completed" | "failed" | "stopped";

2564 output_file: string;

2565 summary: string;

2566 usage?: {

2567 total_tokens: number;

2568 tool_uses: number;

2569 duration_ms: number;

2570 };

2571 uuid: UUID;

2572 session_id: string;

2573};

2574```

2575 

2576### `SDKToolUseSummaryMessage`

2577 

2578Résumé de l'utilisation des outils dans une conversation.

2579 

2580```typescript theme={null}

2581type SDKToolUseSummaryMessage = {

2582 type: "tool_use_summary";

2583 summary: string;

2584 preceding_tool_use_ids: string[];

2585 uuid: UUID;

2586 session_id: string;

2587};

2588```

2589 

2590### `SDKHookStartedMessage`

2591 

2592Émis quand un hook commence à s'exécuter.

2593 

2594```typescript theme={null}

2595type SDKHookStartedMessage = {

2596 type: "system";

2597 subtype: "hook_started";

2598 hook_id: string;

2599 hook_name: string;

2600 hook_event: string;

2601 uuid: UUID;

2602 session_id: string;

2603};

2604```

2605 

2606### `SDKHookProgressMessage`

2607 

2608Émis pendant qu'un hook s'exécute, avec la sortie stdout/stderr.

2609 

2610```typescript theme={null}

2611type SDKHookProgressMessage = {

2612 type: "system";

2613 subtype: "hook_progress";

2614 hook_id: string;

2615 hook_name: string;

2616 hook_event: string;

2617 stdout: string;

2618 stderr: string;

2619 output: string;

2620 uuid: UUID;

2621 session_id: string;

2622};

2623```

2624 

2625### `SDKHookResponseMessage`

2626 

2627Émis quand un hook termine l'exécution.

2628 

2629```typescript theme={null}

2630type SDKHookResponseMessage = {

2631 type: "system";

2632 subtype: "hook_response";

2633 hook_id: string;

2634 hook_name: string;

2635 hook_event: string;

2636 output: string;

2637 stdout: string;

2638 stderr: string;

2639 exit_code?: number;

2640 outcome: "success" | "error" | "cancelled";

2641 uuid: UUID;

2642 session_id: string;

2643};

2644```

2645 

2646### `SDKToolProgressMessage`

2647 

2648Émis périodiquement pendant qu'un outil s'exécute pour indiquer la progression.

2649 

2650```typescript theme={null}

2651type SDKToolProgressMessage = {

2652 type: "tool_progress";

2653 tool_use_id: string;

2654 tool_name: string;

2655 parent_tool_use_id: string | null;

2656 elapsed_time_seconds: number;

2657 task_id?: string;

2658 uuid: UUID;

2659 session_id: string;

2660};

2661```

2662 

2663### `SDKAuthStatusMessage`

2664 

2665Émis pendant les flux d'authentification.

2666 

2667```typescript theme={null}

2668type SDKAuthStatusMessage = {

2669 type: "auth_status";

2670 isAuthenticating: boolean;

2671 output: string[];

2672 error?: string;

2673 uuid: UUID;

2674 session_id: string;

2675};

2676```

2677 

2678### `SDKTaskStartedMessage`

2679 

2680Émis quand une tâche de fond commence. Le champ `task_type` est `"local_bash"` pour les commandes Bash de fond et les montres [Monitor](#monitor), `"local_agent"` pour les sous-agents ou `"remote_agent"`.

2681 

2682```typescript theme={null}

2683type SDKTaskStartedMessage = {

2684 type: "system";

2685 subtype: "task_started";

2686 task_id: string;

2687 tool_use_id?: string;

2688 description: string;

2689 task_type?: string;

2690 uuid: UUID;

2691 session_id: string;

2692};

2693```

2694 

2695### `SDKTaskProgressMessage`

2696 

2697Émis périodiquement pendant qu'une tâche de fond s'exécute.

2698 

2699```typescript theme={null}

2700type SDKTaskProgressMessage = {

2701 type: "system";

2702 subtype: "task_progress";

2703 task_id: string;

2704 tool_use_id?: string;

2705 description: string;

2706 usage: {

2707 total_tokens: number;

2708 tool_uses: number;

2709 duration_ms: number;

2710 };

2711 last_tool_name?: string;

2712 uuid: UUID;

2713 session_id: string;

2714};

2715```

2716 

2717### `SDKTaskUpdatedMessage`

2718 

2719Émis quand l'état d'une tâche de fond change, par exemple quand elle passe de `running` à `completed`. Fusionnez `patch` dans votre carte de tâches locale indexée par `task_id`. Le champ `end_time` est un timestamp Unix epoch en millisecondes, comparable avec `Date.now()`.

2720 

2721```typescript theme={null}

2722type SDKTaskUpdatedMessage = {

2723 type: "system";

2724 subtype: "task_updated";

2725 task_id: string;

2726 patch: {

2727 status?: "pending" | "running" | "completed" | "failed" | "killed";

2728 description?: string;

2729 end_time?: number;

2730 total_paused_ms?: number;

2731 error?: string;

2732 is_backgrounded?: boolean;

2733 };

2734 uuid: UUID;

2735 session_id: string;

2736};

2737```

2738 

2739### `SDKFilesPersistedEvent`

2740 

2741Émis quand les points de contrôle de fichiers sont persistés sur disque.

2742 

2743```typescript theme={null}

2744type SDKFilesPersistedEvent = {

2745 type: "system";

2746 subtype: "files_persisted";

2747 files: { filename: string; file_id: string }[];

2748 failed: { filename: string; error: string }[];

2749 processed_at: string;

2750 uuid: UUID;

2751 session_id: string;

2752};

2753```

2754 

2755### `SDKRateLimitEvent`

2756 

2757Émis quand la session rencontre une limite de débit.

2758 

2759```typescript theme={null}

2760type SDKRateLimitEvent = {

2761 type: "rate_limit_event";

2762 rate_limit_info: {

2763 status: "allowed" | "allowed_warning" | "rejected";

2764 resetsAt?: number;

2765 utilization?: number;

2766 };

2767 uuid: UUID;

2768 session_id: string;

2769};

2770```

2771 

2772### `SDKLocalCommandOutputMessage`

2773 

2774Sortie d'une commande slash locale (par exemple, `/voice` ou `/usage`). Affichée comme du texte de style assistant dans la transcription.

2775 

2776```typescript theme={null}

2777type SDKLocalCommandOutputMessage = {

2778 type: "system";

2779 subtype: "local_command_output";

2780 content: string;

2781 uuid: UUID;

2782 session_id: string;

2783};

2784```

2785 

2786### `SDKPromptSuggestionMessage`

2787 

2788Émis après chaque tour quand `promptSuggestions` est activé. Contient une invite utilisateur suivante prédite.

2789 

2790```typescript theme={null}

2791type SDKPromptSuggestionMessage = {

2792 type: "prompt_suggestion";

2793 suggestion: string;

2794 uuid: UUID;

2795 session_id: string;

2796};

2797```

2798 

2799### `AbortError`

2800 

2801Classe d'erreur personnalisée pour les opérations d'abandon.

2802 

2803```typescript theme={null}

2804class AbortError extends Error {}

2805```

2806 

2807## Configuration du sandbox

2808 

2809### `SandboxSettings`

2810 

2811Configuration pour le comportement du sandbox. Utilisez ceci pour activer le sandboxing des commandes et configurer les restrictions réseau par programmation.

2812 

2813```typescript theme={null}

2814type SandboxSettings = {

2815 enabled?: boolean;

2816 autoAllowBashIfSandboxed?: boolean;

2817 excludedCommands?: string[];

2818 allowUnsandboxedCommands?: boolean;

2819 network?: SandboxNetworkConfig;

2820 filesystem?: SandboxFilesystemConfig;

2821 ignoreViolations?: Record<string, string[]>;

2822 enableWeakerNestedSandbox?: boolean;

2823 ripgrep?: { command: string; args?: string[] };

2824};

2825```

2826 

2827| Propriété | Type | Par défaut | Description |

2828| :-------------------------- | :------------------------------------------------------ | :---------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

2829| `enabled` | `boolean` | `false` | Activer le mode sandbox pour l'exécution des commandes |

2830| `autoAllowBashIfSandboxed` | `boolean` | `true` | Approuver automatiquement les commandes bash quand le sandbox est activé |

2831| `excludedCommands` | `string[]` | `[]` | Commandes qui contournent toujours les restrictions du sandbox (par exemple, `['docker']`). Celles-ci s'exécutent sans sandbox automatiquement sans implication du modèle |

2832| `allowUnsandboxedCommands` | `boolean` | `true` | Permettre au modèle de demander l'exécution de commandes en dehors du sandbox. Quand `true`, le modèle peut définir `dangerouslyDisableSandbox` dans l'entrée de l'outil, qui revient au [système de permissions](#permissions-fallback-for-unsandboxed-commands) |

2833| `network` | [`SandboxNetworkConfig`](#sandbox-network-config) | `undefined` | Configuration du sandbox spécifique au réseau |

2834| `filesystem` | [`SandboxFilesystemConfig`](#sandbox-filesystem-config) | `undefined` | Configuration du sandbox spécifique au système de fichiers pour les restrictions de lecture/écriture |

2835| `ignoreViolations` | `Record<string, string[]>` | `undefined` | Carte des catégories de violation aux motifs à ignorer (par exemple, `{ file: ['/tmp/*'], network: ['localhost'] }`) |

2836| `enableWeakerNestedSandbox` | `boolean` | `false` | Activer un sandbox imbriqué plus faible pour la compatibilité |

2837| `ripgrep` | `{ command: string; args?: string[] }` | `undefined` | Configuration de binaire ripgrep personnalisée pour les environnements sandbox |

2838 

2839#### Exemple d'utilisation

2840 

2841```typescript theme={null}

2842import { query } from "@anthropic-ai/claude-agent-sdk";

2843 

2844for await (const message of query({

2845 prompt: "Build and test my project",

2846 options: {

2847 sandbox: {

2848 enabled: true,

2849 autoAllowBashIfSandboxed: true,

2850 network: {

2851 allowLocalBinding: true

2852 }

2853 }

2854 }

2855})) {

2856 if ("result" in message) console.log(message.result);

2857}

2858```

2859 

2860<Warning>

2861 **Sécurité des sockets Unix :** L'option `allowUnixSockets` peut accorder l'accès à des services système puissants. Par exemple, permettre `/var/run/docker.sock` accorde effectivement un accès complet au système hôte via l'API Docker, contournant l'isolation du sandbox. Autorisez uniquement les sockets Unix strictement nécessaires et comprenez les implications de sécurité de chacun.

2862</Warning>

2863 

2864### `SandboxNetworkConfig`

2865 

2866Configuration spécifique au réseau pour le mode sandbox.

2867 

2868```typescript theme={null}

2869type SandboxNetworkConfig = {

2870 allowedDomains?: string[];

2871 deniedDomains?: string[];

2872 allowManagedDomainsOnly?: boolean;

2873 allowLocalBinding?: boolean;

2874 allowUnixSockets?: string[];

2875 allowAllUnixSockets?: boolean;

2876 httpProxyPort?: number;

2877 socksProxyPort?: number;

2878};

2879```

2880 

2881| Propriété | Type | Par défaut | Description |

2882| :------------------------ | :--------- | :---------- | :-------------------------------------------------------------------------------------------------------------- |

2883| `allowedDomains` | `string[]` | `[]` | Noms de domaine auxquels les processus sandboxés peuvent accéder |

2884| `deniedDomains` | `string[]` | `[]` | Noms de domaine auxquels les processus sandboxés ne peuvent pas accéder. Prend la priorité sur `allowedDomains` |

2885| `allowManagedDomainsOnly` | `boolean` | `false` | Restreindre l'accès réseau uniquement aux domaines dans `allowedDomains` |

2886| `allowLocalBinding` | `boolean` | `false` | Permettre aux processus de se lier aux ports locaux (par exemple, pour les serveurs de développement) |

2887| `allowUnixSockets` | `string[]` | `[]` | Chemins de socket Unix auxquels les processus peuvent accéder (par exemple, socket Docker) |

2888| `allowAllUnixSockets` | `boolean` | `false` | Permettre l'accès à tous les sockets Unix |

2889| `httpProxyPort` | `number` | `undefined` | Port du proxy HTTP pour les demandes réseau |

2890| `socksProxyPort` | `number` | `undefined` | Port du proxy SOCKS pour les demandes réseau |

2891 

2892<Note>

2893 Le proxy sandbox intégré applique `allowedDomains` en fonction du nom d'hôte demandé et ne termine pas ou n'inspecte pas le trafic TLS, donc des techniques telles que le [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting) peuvent potentiellement le contourner. Voir [Limitations de sécurité du sandboxing](/fr/sandboxing#security-limitations) pour les détails et [Déploiement sécurisé](/fr/agent-sdk/secure-deployment#traffic-forwarding) pour configurer un proxy qui termine TLS.

2894</Note>

2895 

2896### `SandboxFilesystemConfig`

2897 

2898Configuration spécifique au système de fichiers pour le mode sandbox.

2899 

2900```typescript theme={null}

2901type SandboxFilesystemConfig = {

2902 allowWrite?: string[];

2903 denyWrite?: string[];

2904 denyRead?: string[];

2905};

2906```

2907 

2908| Propriété | Type | Par défaut | Description |

2909| :----------- | :--------- | :--------- | :------------------------------------------------------------- |

2910| `allowWrite` | `string[]` | `[]` | Motifs de chemin de fichier pour permettre l'accès en écriture |

2911| `denyWrite` | `string[]` | `[]` | Motifs de chemin de fichier pour refuser l'accès en écriture |

2912| `denyRead` | `string[]` | `[]` | Motifs de chemin de fichier pour refuser l'accès en lecture |

2913 

2914### Repli des permissions pour les commandes non sandboxées

2915 

2916Quand `allowUnsandboxedCommands` est activé, le modèle peut demander l'exécution de commandes en dehors du sandbox en définissant `dangerouslyDisableSandbox: true` dans l'entrée de l'outil. Ces demandes reviennent au système de permissions existant, ce qui signifie que votre gestionnaire `canUseTool` est invoqué, vous permettant d'implémenter une logique d'autorisation personnalisée.

2917 

2918<Note>

2919 **`excludedCommands` vs `allowUnsandboxedCommands` :**

2920 

2921 * `excludedCommands` : Une liste statique de commandes qui contournent toujours le sandbox automatiquement (par exemple, `['docker']`). Le modèle n'a aucun contrôle sur ceci.

2922 * `allowUnsandboxedCommands` : Permet au modèle de décider à l'exécution s'il faut demander l'exécution non sandboxée en définissant `dangerouslyDisableSandbox: true` dans l'entrée de l'outil.

2923</Note>

2924 

2925```typescript theme={null}

2926import { query } from "@anthropic-ai/claude-agent-sdk";

2927 

2928for await (const message of query({

2929 prompt: "Deploy my application",

2930 options: {

2931 sandbox: {

2932 enabled: true,

2933 allowUnsandboxedCommands: true // Le modèle peut demander l'exécution non sandboxée

2934 },

2935 permissionMode: "default",

2936 canUseTool: async (tool, input) => {

2937 // Vérifier si le modèle demande de contourner le sandbox

2938 if (tool === "Bash" && input.dangerouslyDisableSandbox) {

2939 // Le modèle demande d'exécuter cette commande en dehors du sandbox

2940 console.log(`Unsandboxed command requested: ${input.command}`);

2941 

2942 if (isCommandAuthorized(input.command)) {

2943 return { behavior: "allow" as const, updatedInput: input };

2944 }

2945 return {

2946 behavior: "deny" as const,

2947 message: "Command not authorized for unsandboxed execution"

2948 };

2949 }

2950 return { behavior: "allow" as const, updatedInput: input };

2951 }

2952 }

2953})) {

2954 if ("result" in message) console.log(message.result);

2955}

2956```

2957 

2958Ce modèle vous permet de :

2959 

2960* **Auditer les demandes du modèle :** Enregistrer quand le modèle demande l'exécution non sandboxée

2961* **Implémenter des listes blanches :** Permettre uniquement à des commandes spécifiques de s'exécuter sans sandbox

2962* **Ajouter des flux d'approbation :** Exiger une autorisation explicite pour les opérations privilégiées

2963 

2964<Warning>

2965 Les commandes s'exécutant avec `dangerouslyDisableSandbox: true` ont un accès complet au système. Assurez-vous que votre gestionnaire `canUseTool` valide ces demandes avec soin.

2966 

2967 Si `permissionMode` est défini sur `bypassPermissions` et `allowUnsandboxedCommands` est activé, le modèle peut exécuter de manière autonome des commandes en dehors du sandbox sans aucune invite d'approbation. Cette combinaison permet effectivement au modèle d'échapper à l'isolation du sandbox silencieusement.

2968</Warning>

2969 

2970## Voir aussi

2971 

2972* [Aperçu du SDK](/fr/agent-sdk/overview) - Concepts généraux du SDK

2973* [Référence du SDK Python](/fr/agent-sdk/python) - Documentation du SDK Python

2974* [Référence CLI](/fr/cli-reference) - Interface de ligne de commande

2975* [Flux de travail courants](/fr/common-workflows) - Guides étape par étape

Details

1> ## Documentation Index

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

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

4 

5# Interface TypeScript SDK V2 (aperçu)

6 

7> Aperçu du SDK Agent TypeScript V2 simplifié, avec des modèles send/stream basés sur les sessions pour les conversations multi-tours.

8 

9<Warning>

10 L'interface V2 est un **aperçu instable**. Les API peuvent changer en fonction des commentaires avant de devenir stables. Certaines fonctionnalités comme le forking de session ne sont disponibles que dans le [SDK V1](/fr/agent-sdk/typescript).

11</Warning>

12 

13Le SDK Agent TypeScript V2 de Claude supprime le besoin de générateurs asynchrones et de coordination de rendement. Cela rend les conversations multi-tours plus simples, au lieu de gérer l'état du générateur entre les tours, chaque tour est un cycle `send()`/`stream()` séparé. La surface de l'API se réduit à trois concepts :

14 

15* `createSession()` / `resumeSession()` : Démarrer ou continuer une conversation

16* `session.send()` : Envoyer un message

17* `session.stream()` : Obtenir la réponse

18 

19## Installation

20 

21L'interface V2 est incluse dans le package SDK existant :

22 

23```bash theme={null}

24npm install @anthropic-ai/claude-agent-sdk

25```

26 

27<Note>

28 Le SDK regroupe un binaire Claude Code natif pour votre plateforme en tant que dépendance optionnelle, vous n'avez donc pas besoin d'installer Claude Code séparément.

29</Note>

30 

31## Démarrage rapide

32 

33### Invite unique

34 

35Pour les requêtes simples à un seul tour où vous n'avez pas besoin de maintenir une session, utilisez `unstable_v2_prompt()`. Cet exemple envoie une question mathématique et enregistre la réponse :

36 

37```typescript theme={null}

38import { unstable_v2_prompt } from "@anthropic-ai/claude-agent-sdk";

39 

40const result = await unstable_v2_prompt("What is 2 + 2?", {

41 model: "claude-opus-4-7"

42});

43if (result.subtype === "success") {

44 console.log(result.result);

45}

46```

47 

48<details>

49 <summary>Voir la même opération en V1</summary>

50 

51 ```typescript theme={null}

52 import { query } from "@anthropic-ai/claude-agent-sdk";

53 

54 const q = query({

55 prompt: "What is 2 + 2?",

56 options: { model: "claude-opus-4-7" }

57 });

58 

59 for await (const msg of q) {

60 if (msg.type === "result" && msg.subtype === "success") {

61 console.log(msg.result);

62 }

63 }

64 ```

65</details>

66 

67### Session de base

68 

69Pour les interactions au-delà d'une seule invite, créez une session. V2 sépare l'envoi et la diffusion en étapes distinctes :

70 

71* `send()` envoie votre message

72* `stream()` diffuse la réponse

73 

74Cette séparation explicite facilite l'ajout de logique entre les tours (comme le traitement des réponses avant d'envoyer des suites).

75 

76L'exemple ci-dessous crée une session, envoie « Hello ! » à Claude et imprime la réponse textuelle. Il utilise [`await using`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-2.html#using-declarations-and-explicit-resource-management) (TypeScript 5.2+) pour fermer automatiquement la session lorsque le bloc se termine. Vous pouvez également appeler `session.close()` manuellement.

77 

78```typescript theme={null}

79import { unstable_v2_createSession } from "@anthropic-ai/claude-agent-sdk";

80 

81await using session = unstable_v2_createSession({

82 model: "claude-opus-4-7"

83});

84 

85await session.send("Hello!");

86for await (const msg of session.stream()) {

87 // Filter for assistant messages to get human-readable output

88 if (msg.type === "assistant") {

89 const text = msg.message.content

90 .filter((block) => block.type === "text")

91 .map((block) => block.text)

92 .join("");

93 console.log(text);

94 }

95}

96```

97 

98<details>

99 <summary>Voir la même opération en V1</summary>

100 

101 En V1, l'entrée et la sortie circulent toutes les deux via un seul générateur asynchrone. Pour une invite de base, cela ressemble à quelque chose de similaire, mais l'ajout de logique multi-tours nécessite une restructuration pour utiliser un générateur d'entrée.

102 

103 ```typescript theme={null}

104 import { query } from "@anthropic-ai/claude-agent-sdk";

105 

106 const q = query({

107 prompt: "Hello!",

108 options: { model: "claude-opus-4-7" }

109 });

110 

111 for await (const msg of q) {

112 if (msg.type === "assistant") {

113 const text = msg.message.content

114 .filter((block) => block.type === "text")

115 .map((block) => block.text)

116 .join("");

117 console.log(text);

118 }

119 }

120 ```

121</details>

122 

123### Conversation multi-tours

124 

125Les sessions persistent le contexte à travers plusieurs échanges. Pour continuer une conversation, appelez `send()` à nouveau sur la même session. Claude se souvient des tours précédents.

126 

127Cet exemple pose une question mathématique, puis pose une suite qui fait référence à la réponse précédente :

128 

129```typescript theme={null}

130import { unstable_v2_createSession } from "@anthropic-ai/claude-agent-sdk";

131 

132await using session = unstable_v2_createSession({

133 model: "claude-opus-4-7"

134});

135 

136// Turn 1

137await session.send("What is 5 + 3?");

138for await (const msg of session.stream()) {

139 // Filter for assistant messages to get human-readable output

140 if (msg.type === "assistant") {

141 const text = msg.message.content

142 .filter((block) => block.type === "text")

143 .map((block) => block.text)

144 .join("");

145 console.log(text);

146 }

147}

148 

149// Turn 2

150await session.send("Multiply that by 2");

151for await (const msg of session.stream()) {

152 if (msg.type === "assistant") {

153 const text = msg.message.content

154 .filter((block) => block.type === "text")

155 .map((block) => block.text)

156 .join("");

157 console.log(text);

158 }

159}

160```

161 

162<details>

163 <summary>Voir la même opération en V1</summary>

164 

165 ```typescript theme={null}

166 import { query } from "@anthropic-ai/claude-agent-sdk";

167 

168 // Must create an async iterable to feed messages

169 async function* createInputStream() {

170 yield {

171 type: "user",

172 session_id: "",

173 message: { role: "user", content: [{ type: "text", text: "What is 5 + 3?" }] },

174 parent_tool_use_id: null

175 };

176 // Must coordinate when to yield next message

177 yield {

178 type: "user",

179 session_id: "",

180 message: { role: "user", content: [{ type: "text", text: "Multiply by 2" }] },

181 parent_tool_use_id: null

182 };

183 }

184 

185 const q = query({

186 prompt: createInputStream(),

187 options: { model: "claude-opus-4-7" }

188 });

189 

190 for await (const msg of q) {

191 if (msg.type === "assistant") {

192 const text = msg.message.content

193 .filter((block) => block.type === "text")

194 .map((block) => block.text)

195 .join("");

196 console.log(text);

197 }

198 }

199 ```

200</details>

201 

202### Reprise de session

203 

204Si vous avez un ID de session d'une interaction précédente, vous pouvez le reprendre plus tard. Ceci est utile pour les flux de travail de longue durée ou lorsque vous devez persister les conversations entre les redémarrages d'application.

205 

206Cet exemple crée une session, stocke son ID, la ferme, puis reprend la conversation :

207 

208```typescript theme={null}

209import {

210 unstable_v2_createSession,

211 unstable_v2_resumeSession,

212 type SDKMessage

213} from "@anthropic-ai/claude-agent-sdk";

214 

215// Helper to extract text from assistant messages

216function getAssistantText(msg: SDKMessage): string | null {

217 if (msg.type !== "assistant") return null;

218 return msg.message.content

219 .filter((block) => block.type === "text")

220 .map((block) => block.text)

221 .join("");

222}

223 

224// Create initial session and have a conversation

225const session = unstable_v2_createSession({

226 model: "claude-opus-4-7"

227});

228 

229await session.send("Remember this number: 42");

230 

231// Get the session ID from any received message

232let sessionId: string | undefined;

233for await (const msg of session.stream()) {

234 sessionId = msg.session_id;

235 const text = getAssistantText(msg);

236 if (text) console.log("Initial response:", text);

237}

238 

239console.log("Session ID:", sessionId);

240session.close();

241 

242// Later: resume the session using the stored ID

243await using resumedSession = unstable_v2_resumeSession(sessionId!, {

244 model: "claude-opus-4-7"

245});

246 

247await resumedSession.send("What number did I ask you to remember?");

248for await (const msg of resumedSession.stream()) {

249 const text = getAssistantText(msg);

250 if (text) console.log("Resumed response:", text);

251}

252```

253 

254<details>

255 <summary>Voir la même opération en V1</summary>

256 

257 ```typescript theme={null}

258 import { query } from "@anthropic-ai/claude-agent-sdk";

259 

260 // Create initial session

261 const initialQuery = query({

262 prompt: "Remember this number: 42",

263 options: { model: "claude-opus-4-7" }

264 });

265 

266 // Get session ID from any message

267 let sessionId: string | undefined;

268 for await (const msg of initialQuery) {

269 sessionId = msg.session_id;

270 if (msg.type === "assistant") {

271 const text = msg.message.content

272 .filter((block) => block.type === "text")

273 .map((block) => block.text)

274 .join("");

275 console.log("Initial response:", text);

276 }

277 }

278 

279 console.log("Session ID:", sessionId);

280 

281 // Later: resume the session

282 const resumedQuery = query({

283 prompt: "What number did I ask you to remember?",

284 options: {

285 model: "claude-opus-4-7",

286 resume: sessionId

287 }

288 });

289 

290 for await (const msg of resumedQuery) {

291 if (msg.type === "assistant") {

292 const text = msg.message.content

293 .filter((block) => block.type === "text")

294 .map((block) => block.text)

295 .join("");

296 console.log("Resumed response:", text);

297 }

298 }

299 ```

300</details>

301 

302### Nettoyage

303 

304Les sessions peuvent être fermées manuellement ou automatiquement en utilisant [`await using`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-2.html#using-declarations-and-explicit-resource-management), une fonctionnalité TypeScript 5.2+ pour le nettoyage automatique des ressources. Si vous utilisez une version TypeScript plus ancienne ou rencontrez des problèmes de compatibilité, utilisez plutôt le nettoyage manuel.

305 

306**Nettoyage automatique (TypeScript 5.2+) :**

307 

308```typescript theme={null}

309import { unstable_v2_createSession } from "@anthropic-ai/claude-agent-sdk";

310 

311await using session = unstable_v2_createSession({

312 model: "claude-opus-4-7"

313});

314// Session closes automatically when the block exits

315```

316 

317**Nettoyage manuel :**

318 

319```typescript theme={null}

320import { unstable_v2_createSession } from "@anthropic-ai/claude-agent-sdk";

321 

322const session = unstable_v2_createSession({

323 model: "claude-opus-4-7"

324});

325// ... use the session ...

326session.close();

327```

328 

329## Référence API

330 

331### `unstable_v2_createSession()`

332 

333Crée une nouvelle session pour les conversations multi-tours.

334 

335```typescript theme={null}

336function unstable_v2_createSession(options: {

337 model: string;

338 // Additional options supported

339}): SDKSession;

340```

341 

342### `unstable_v2_resumeSession()`

343 

344Reprend une session existante par ID.

345 

346```typescript theme={null}

347function unstable_v2_resumeSession(

348 sessionId: string,

349 options: {

350 model: string;

351 // Additional options supported

352 }

353): SDKSession;

354```

355 

356### `unstable_v2_prompt()`

357 

358Fonction de commodité unique pour les requêtes à un seul tour.

359 

360```typescript theme={null}

361function unstable_v2_prompt(

362 prompt: string,

363 options: {

364 model: string;

365 // Additional options supported

366 }

367): Promise<SDKResultMessage>;

368```

369 

370### Interface SDKSession

371 

372```typescript theme={null}

373interface SDKSession {

374 readonly sessionId: string;

375 send(message: string | SDKUserMessage): Promise<void>;

376 stream(): AsyncGenerator<SDKMessage, void>;

377 close(): void;

378}

379```

380 

381## Disponibilité des fonctionnalités

382 

383Toutes les fonctionnalités V1 ne sont pas encore disponibles en V2. Les éléments suivants nécessitent l'utilisation du [SDK V1](/fr/agent-sdk/typescript) :

384 

385* Forking de session (option `forkSession`)

386* Certains modèles de flux d'entrée avancés

387 

388## Commentaires

389 

390Partagez vos commentaires sur l'interface V2 avant qu'elle ne devienne stable. Signalez les problèmes et les suggestions via [GitHub Issues](https://github.com/anthropics/claude-code/issues).

391 

392## Voir aussi

393 

394* [Référence SDK TypeScript (V1)](/fr/agent-sdk/typescript) - Documentation complète du SDK V1

395* [Aperçu SDK](/fr/agent-sdk/overview) - Concepts généraux du SDK

396* [Exemples V2 sur GitHub](https://github.com/anthropics/claude-agent-sdk-demos/tree/main/hello-world-v2) - Exemples de code fonctionnels

agent-teams.md +424 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Orchestrer des équipes de sessions Claude Code

6 

7> Coordonnez plusieurs instances Claude Code travaillant ensemble en tant qu'équipe, avec des tâches partagées, la messagerie inter-agents et la gestion centralisée.

8 

9<Warning>

10 Les équipes d'agents sont expérimentales et désactivées par défaut. Activez-les en ajoutant `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` à votre [settings.json](/fr/settings) ou à votre environnement. Les équipes d'agents ont des [limitations connues](#limitations) concernant la reprise de session, la coordination des tâches et le comportement d'arrêt.

11</Warning>

12 

13Les équipes d'agents vous permettent de coordonner plusieurs instances Claude Code travaillant ensemble. Une session agit comme chef d'équipe, coordonnant le travail, assignant des tâches et synthétisant les résultats. Les coéquipiers travaillent indépendamment, chacun dans sa propre fenêtre de contexte, et communiquent directement les uns avec les autres.

14 

15Contrairement aux [subagents](/fr/sub-agents), qui s'exécutent au sein d'une seule session et ne peuvent que rendre compte à l'agent principal, vous pouvez également interagir directement avec les coéquipiers individuels sans passer par le chef.

16 

17<Note>

18 Les équipes d'agents nécessitent Claude Code v2.1.32 ou ultérieur. Vérifiez votre version avec `claude --version`.

19</Note>

20 

21Cette page couvre :

22 

23* [Quand utiliser les équipes d'agents](#when-to-use-agent-teams), y compris les meilleurs cas d'usage et comment ils se comparent aux subagents

24* [Démarrer une équipe](#start-your-first-agent-team)

25* [Contrôler les coéquipiers](#control-your-agent-team), y compris les modes d'affichage, l'assignation de tâches et la délégation

26* [Meilleures pratiques pour le travail parallèle](#best-practices)

27 

28## Quand utiliser les équipes d'agents

29 

30Les équipes d'agents sont les plus efficaces pour les tâches où l'exploration parallèle ajoute une réelle valeur. Consultez les [exemples de cas d'usage](#use-case-examples) pour des scénarios complets. Les cas d'usage les plus solides sont :

31 

32* **Recherche et examen** : plusieurs coéquipiers peuvent enquêter sur différents aspects d'un problème simultanément, puis partager et contester les conclusions les uns des autres

33* **Nouveaux modules ou fonctionnalités** : les coéquipiers peuvent chacun posséder une partie distincte sans se marcher dessus

34* **Débogage avec hypothèses concurrentes** : les coéquipiers testent différentes théories en parallèle et convergent vers la réponse plus rapidement

35* **Coordination inter-couches** : les modifications qui s'étendent sur le frontend, le backend et les tests, chacun possédé par un coéquipier différent

36 

37Les équipes d'agents ajoutent une surcharge de coordination et utilisent considérablement plus de tokens qu'une seule session. Elles fonctionnent mieux lorsque les coéquipiers peuvent opérer indépendamment. Pour les tâches séquentielles, les modifications du même fichier ou le travail avec de nombreuses dépendances, une seule session ou les [subagents](/fr/sub-agents) sont plus efficaces.

38 

39### Comparer avec les subagents

40 

41Les équipes d'agents et les [subagents](/fr/sub-agents) vous permettent tous deux de paralléliser le travail, mais ils fonctionnent différemment. Choisissez en fonction de la nécessité pour vos travailleurs de communiquer les uns avec les autres :

42 

43<Frame caption="Les subagents ne rendent compte que des résultats à l'agent principal et ne se parlent jamais. Dans les équipes d'agents, les coéquipiers partagent une liste de tâches, revendiquent du travail et communiquent directement les uns avec les autres.">

44 <img src="https://mintcdn.com/claude-code/nsvRFSDNfpSU5nT7/images/subagents-vs-agent-teams-light.png?fit=max&auto=format&n=nsvRFSDNfpSU5nT7&q=85&s=2f8db9b4f3705dd3ab931fbe2d96e42a" className="dark:hidden" alt="Diagramme comparant les architectures des subagents et des équipes d'agents. Les subagents sont générés par l'agent principal, font du travail et rendent compte des résultats. Les équipes d'agents se coordonnent via une liste de tâches partagée, avec les coéquipiers communiquant directement les uns avec les autres." width="4245" height="1615" data-path="images/subagents-vs-agent-teams-light.png" />

45 

46 <img src="https://mintcdn.com/claude-code/nsvRFSDNfpSU5nT7/images/subagents-vs-agent-teams-dark.png?fit=max&auto=format&n=nsvRFSDNfpSU5nT7&q=85&s=d573a037540f2ada6a9ae7d8285b46fd" className="hidden dark:block" alt="Diagramme comparant les architectures des subagents et des équipes d'agents. Les subagents sont générés par l'agent principal, font du travail et rendent compte des résultats. Les équipes d'agents se coordonnent via une liste de tâches partagée, avec les coéquipiers communiquant directement les uns avec les autres." width="4245" height="1615" data-path="images/subagents-vs-agent-teams-dark.png" />

47</Frame>

48 

49| | Subagents | Équipes d'agents |

50| :----------------- | :----------------------------------------------------------------- | :-------------------------------------------------------------- |

51| **Contexte** | Fenêtre de contexte propre ; les résultats reviennent à l'appelant | Fenêtre de contexte propre ; complètement indépendant |

52| **Communication** | Rendre compte uniquement à l'agent principal | Les coéquipiers se messagent directement |

53| **Coordination** | L'agent principal gère tout le travail | Liste de tâches partagée avec auto-coordination |

54| **Meilleur pour** | Les tâches ciblées où seul le résultat compte | Le travail complexe nécessitant discussion et collaboration |

55| **Coût en tokens** | Inférieur : les résultats sont résumés au contexte principal | Supérieur : chaque coéquipier est une instance Claude distincte |

56 

57Utilisez les subagents lorsque vous avez besoin de travailleurs rapides et ciblés qui rendent compte. Utilisez les équipes d'agents lorsque les coéquipiers doivent partager les conclusions, se contester mutuellement et se coordonner de manière autonome.

58 

59## Activer les équipes d'agents

60 

61Les équipes d'agents sont désactivées par défaut. Activez-les en définissant la variable d'environnement `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` sur `1`, soit dans votre environnement shell, soit via [settings.json](/fr/settings) :

62 

63```json settings.json theme={null}

64{

65 "env": {

66 "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"

67 }

68}

69```

70 

71## Démarrer votre première équipe d'agents

72 

73Après avoir activé les équipes d'agents, demandez à Claude de créer une équipe d'agents et décrivez la tâche et la structure d'équipe que vous souhaitez en langage naturel. Claude crée l'équipe, génère les coéquipiers et coordonne le travail en fonction de votre prompt.

74 

75Cet exemple fonctionne bien car les trois rôles sont indépendants et peuvent explorer le problème sans attendre les uns les autres :

76 

77```text theme={null}

78Je conçois un outil CLI qui aide les développeurs à suivre les commentaires TODO dans

79leur base de code. Créez une équipe d'agents pour explorer cela sous différents angles : un

80coéquipier sur l'UX, un sur l'architecture technique, un jouant l'avocat du diable.

81```

82 

83À partir de là, Claude crée une équipe avec une [liste de tâches partagée](/fr/interactive-mode#task-list), génère les coéquipiers pour chaque perspective, les fait explorer le problème, synthétise les conclusions et tente de [nettoyer l'équipe](#clean-up-the-team) une fois terminée.

84 

85Le terminal du chef liste tous les coéquipiers et sur quoi ils travaillent. Utilisez Maj+Bas pour parcourir les coéquipiers et leur envoyer un message directement. Après le dernier coéquipier, Maj+Bas revient au chef.

86 

87Si vous souhaitez que chaque coéquipier soit dans son propre volet divisé, consultez [Choisir un mode d'affichage](#choose-a-display-mode).

88 

89## Contrôler votre équipe d'agents

90 

91Dites au chef ce que vous voulez en langage naturel. Il gère la coordination d'équipe, l'assignation de tâches et la délégation en fonction de vos instructions.

92 

93### Choisir un mode d'affichage

94 

95Les équipes d'agents supportent deux modes d'affichage :

96 

97* **In-process** : tous les coéquipiers s'exécutent dans votre terminal principal. Utilisez Maj+Bas pour parcourir les coéquipiers et tapez pour leur envoyer un message directement. Fonctionne dans n'importe quel terminal, aucune configuration supplémentaire requise.

98* **Volets divisés** : chaque coéquipier obtient son propre volet. Vous pouvez voir la sortie de tout le monde à la fois et cliquer dans un volet pour interagir directement. Nécessite tmux ou iTerm2.

99 

100<Note>

101 `tmux` a des limitations connues sur certains systèmes d'exploitation et fonctionne traditionnellement mieux sur macOS. L'utilisation de `tmux -CC` dans iTerm2 est le point d'entrée suggéré dans `tmux`.

102</Note>

103 

104La valeur par défaut est `"auto"`, qui utilise les volets divisés si vous êtes déjà en train de s'exécuter dans une session tmux, et in-process sinon. Le paramètre `"tmux"` active le mode volets divisés et détecte automatiquement s'il faut utiliser tmux ou iTerm2 en fonction de votre terminal. Pour remplacer, définissez [`teammateMode`](/fr/settings#available-settings) dans `~/.claude/settings.json` :

105 

106```json theme={null}

107{

108 "teammateMode": "in-process"

109}

110```

111 

112Pour forcer le mode in-process pour une seule session, passez-le en tant que drapeau :

113 

114```bash theme={null}

115claude --teammate-mode in-process

116```

117 

118Le mode volets divisés nécessite soit [tmux](https://github.com/tmux/tmux/wiki) soit iTerm2 avec le CLI [`it2`](https://github.com/mkusaka/it2). Pour installer manuellement :

119 

120* **tmux** : installez via le gestionnaire de paquets de votre système. Consultez le [wiki tmux](https://github.com/tmux/tmux/wiki/Installing) pour les instructions spécifiques à la plateforme.

121* **iTerm2** : installez le CLI [`it2`](https://github.com/mkusaka/it2), puis activez l'API Python dans **iTerm2 → Paramètres → Général → Magie → Activer l'API Python**.

122 

123### Spécifier les coéquipiers et les modèles

124 

125Claude décide du nombre de coéquipiers à générer en fonction de votre tâche, ou vous pouvez spécifier exactement ce que vous voulez :

126 

127```text theme={null}

128Créez une équipe avec 4 coéquipiers pour refactoriser ces modules en parallèle.

129Utilisez Sonnet pour chaque coéquipier.

130```

131 

132### Exiger l'approbation du plan pour les coéquipiers

133 

134Pour les tâches complexes ou risquées, vous pouvez exiger que les coéquipiers planifient avant de mettre en œuvre. Le coéquipier travaille en mode plan en lecture seule jusqu'à ce que le chef approuve son approche :

135 

136```text theme={null}

137Générez un coéquipier architecte pour refactoriser le module d'authentification.

138Exigez l'approbation du plan avant qu'il ne fasse des modifications.

139```

140 

141Lorsqu'un coéquipier termine la planification, il envoie une demande d'approbation du plan au chef. Le chef examine le plan et l'approuve ou le rejette avec des commentaires. S'il est rejeté, le coéquipier reste en mode plan, révise en fonction des commentaires et resoumis. Une fois approuvé, le coéquipier quitte le mode plan et commence la mise en œuvre.

142 

143Le chef prend les décisions d'approbation de manière autonome. Pour influencer le jugement du chef, donnez-lui des critères dans votre prompt, tels que « n'approuvez que les plans qui incluent la couverture de test » ou « rejetez les plans qui modifient le schéma de base de données ».

144 

145### Parler directement aux coéquipiers

146 

147Chaque coéquipier est une session Claude Code complète et indépendante. Vous pouvez envoyer un message à n'importe quel coéquipier directement pour donner des instructions supplémentaires, poser des questions de suivi ou rediriger son approche.

148 

149* **Mode in-process** : utilisez Maj+Bas pour parcourir les coéquipiers, puis tapez pour leur envoyer un message. Appuyez sur Entrée pour afficher la session d'un coéquipier, puis Échap pour interrompre son tour actuel. Appuyez sur Ctrl+T pour basculer la liste des tâches.

150* **Mode volets divisés** : cliquez dans le volet d'un coéquipier pour interagir directement avec sa session. Chaque coéquipier a une vue complète de son propre terminal.

151 

152### Assigner et revendiquer des tâches

153 

154La liste de tâches partagée coordonne le travail dans l'équipe. Le chef crée des tâches et les coéquipiers les accomplissent. Les tâches ont trois états : en attente, en cours et terminées. Les tâches peuvent également dépendre d'autres tâches : une tâche en attente avec des dépendances non résolues ne peut pas être revendiquée jusqu'à ce que ces dépendances soient complétées.

155 

156Le chef peut assigner des tâches explicitement, ou les coéquipiers peuvent les revendiquer eux-mêmes :

157 

158* **Le chef assigne** : dites au chef quelle tâche donner à quel coéquipier

159* **Auto-revendication** : après avoir terminé une tâche, un coéquipier choisit la prochaine tâche non assignée et non bloquée de sa propre initiative

160 

161La revendication de tâche utilise le verrouillage de fichiers pour prévenir les conditions de course lorsque plusieurs coéquipiers tentent de revendiquer la même tâche simultanément.

162 

163### Arrêter les coéquipiers

164 

165Pour terminer gracieusement la session d'un coéquipier :

166 

167```text theme={null}

168Demandez au coéquipier chercheur d'arrêter

169```

170 

171Le chef envoie une demande d'arrêt. Le coéquipier peut approuver, quittant gracieusement, ou rejeter avec une explication.

172 

173### Nettoyer l'équipe

174 

175Lorsque vous avez terminé, demandez au chef de nettoyer :

176 

177```text theme={null}

178Nettoyez l'équipe

179```

180 

181Cela supprime les ressources d'équipe partagées. Lorsque le chef exécute le nettoyage, il vérifie les coéquipiers actifs et échoue s'il y en a encore en cours d'exécution, alors arrêtez-les d'abord.

182 

183<Warning>

184 Utilisez toujours le chef pour nettoyer. Les coéquipiers ne doivent pas exécuter le nettoyage car leur contexte d'équipe peut ne pas se résoudre correctement, laissant potentiellement les ressources dans un état incohérent.

185</Warning>

186 

187### Appliquer des portes de qualité avec des hooks

188 

189Utilisez les [hooks](/fr/hooks) pour appliquer des règles lorsque les coéquipiers terminent le travail ou que les tâches sont créées ou complétées :

190 

191* [`TeammateIdle`](/fr/hooks#teammateidle) : s'exécute lorsqu'un coéquipier est sur le point de devenir inactif. Quittez avec le code 2 pour envoyer des commentaires et garder le coéquipier au travail.

192* [`TaskCreated`](/fr/hooks#taskcreated) : s'exécute lorsqu'une tâche est en cours de création. Quittez avec le code 2 pour empêcher la création et envoyer des commentaires.

193* [`TaskCompleted`](/fr/hooks#taskcompleted) : s'exécute lorsqu'une tâche est marquée comme complète. Quittez avec le code 2 pour empêcher la complétion et envoyer des commentaires.

194 

195## Comment fonctionnent les équipes d'agents

196 

197Cette section couvre l'architecture et la mécanique derrière les équipes d'agents. Si vous souhaitez commencer à les utiliser, consultez [Contrôler votre équipe d'agents](#control-your-agent-team) ci-dessus.

198 

199### Comment Claude démarre les équipes d'agents

200 

201Il y a deux façons de démarrer les équipes d'agents :

202 

203* **Vous demandez une équipe** : donnez à Claude une tâche qui bénéficie du travail parallèle et demandez explicitement une équipe d'agents. Claude en crée une en fonction de vos instructions.

204* **Claude propose une équipe** : si Claude détermine que votre tâche bénéficierait du travail parallèle, il peut suggérer de créer une équipe. Vous confirmez avant qu'il ne procède.

205 

206Dans les deux cas, vous restez maître. Claude ne créera pas d'équipe sans votre approbation.

207 

208### Architecture

209 

210Une équipe d'agents se compose de :

211 

212| Composant | Rôle |

213| :-------------------- | :-------------------------------------------------------------------------------------------------- |

214| **Chef d'équipe** | La session Claude Code principale qui crée l'équipe, génère les coéquipiers et coordonne le travail |

215| **Coéquipiers** | Des instances Claude Code distinctes qui travaillent chacune sur des tâches assignées |

216| **Liste de tâches** | Liste partagée d'éléments de travail que les coéquipiers revendiquent et complètent |

217| **Boîte aux lettres** | Système de messagerie pour la communication entre agents |

218 

219Consultez [Choisir un mode d'affichage](#choose-a-display-mode) pour les options de configuration d'affichage. Les messages des coéquipiers arrivent au chef automatiquement.

220 

221Le système gère automatiquement les dépendances de tâches. Lorsqu'un coéquipier complète une tâche dont d'autres tâches dépendent, les tâches bloquées se débloquent sans intervention manuelle.

222 

223Les équipes et les tâches sont stockées localement :

224 

225* **Configuration d'équipe** : `~/.claude/teams/{team-name}/config.json`

226* **Liste de tâches** : `~/.claude/tasks/{team-name}/`

227 

228Claude Code génère automatiquement ces deux éléments lorsque vous créez une équipe et les met à jour à mesure que les coéquipiers rejoignent, deviennent inactifs ou partent. La configuration d'équipe contient l'état d'exécution tel que les ID de session et les ID de volet tmux, donc ne l'éditez pas à la main ou ne la pré-créez pas : vos modifications sont écrasées lors de la prochaine mise à jour d'état.

229 

230Pour définir des rôles de coéquipiers réutilisables, utilisez plutôt les [définitions de subagents](#use-subagent-definitions-for-teammates).

231 

232La configuration d'équipe contient un tableau `members` avec le nom de chaque coéquipier, l'ID d'agent et le type d'agent. Les coéquipiers peuvent lire ce fichier pour découvrir les autres membres de l'équipe.

233 

234Il n'y a pas d'équivalent au niveau du projet de la configuration d'équipe. Un fichier comme `.claude/teams/teams.json` dans votre répertoire de projet n'est pas reconnu comme configuration ; Claude le traite comme un fichier ordinaire.

235 

236### Utiliser les définitions de subagents pour les coéquipiers

237 

238Lors de la génération d'un coéquipier, vous pouvez référencer un type de [subagent](/fr/sub-agents) de n'importe quelle [portée de subagent](/fr/sub-agents#choose-the-subagent-scope) : projet, utilisateur, plugin ou défini par CLI. Cela vous permet de définir un rôle une fois, comme un examinateur de sécurité ou un exécuteur de tests, et de le réutiliser à la fois comme subagent délégué et comme coéquipier d'équipe d'agents.

239 

240Pour utiliser une définition de subagent, mentionnez-la par nom lorsque vous demandez à Claude de générer le coéquipier :

241 

242```text theme={null}

243Générez un coéquipier utilisant le type d'agent security-reviewer pour auditer le module d'authentification.

244```

245 

246Le coéquipier honore les restrictions de la liste d'outils de cette définition et le modèle, et le corps de la définition est ajouté au prompt système du coéquipier en tant qu'instructions supplémentaires plutôt que de le remplacer. Les outils de coordination d'équipe tels que `SendMessage` et les outils de gestion des tâches sont toujours disponibles pour un coéquipier même lorsque `tools` restreint d'autres outils.

247 

248<Note>

249 Les champs frontmatter `skills` et `mcpServers` dans une définition de subagent ne sont pas appliqués lorsque cette définition s'exécute en tant que coéquipier. Les coéquipiers chargent les skills et les serveurs MCP à partir de vos paramètres de projet et d'utilisateur, comme une session régulière.

250</Note>

251 

252### Permissions

253 

254Les coéquipiers commencent avec les paramètres de permission du chef. Si le chef s'exécute avec `--dangerously-skip-permissions`, tous les coéquipiers le font aussi. Après la génération, vous pouvez modifier les modes de coéquipiers individuels, mais vous ne pouvez pas définir les modes par coéquipier au moment de la génération.

255 

256### Contexte et communication

257 

258Chaque coéquipier a sa propre fenêtre de contexte. Lorsqu'il est généré, un coéquipier charge le même contexte de projet qu'une session régulière : CLAUDE.md, serveurs MCP et skills. Il reçoit également le prompt de génération du chef. L'historique de conversation du chef ne se transporte pas.

259 

260**Comment les coéquipiers partagent les informations :**

261 

262* **Livraison automatique de messages** : lorsque les coéquipiers envoient des messages, ils sont livrés automatiquement aux destinataires. Le chef n'a pas besoin d'interroger les mises à jour.

263* **Notifications d'inactivité** : lorsqu'un coéquipier termine et s'arrête, il notifie automatiquement le chef.

264* **Liste de tâches partagée** : tous les agents peuvent voir l'état des tâches et revendiquer le travail disponible.

265* **Messagerie des coéquipiers** : envoyer un message à un coéquipier spécifique par son nom. Pour atteindre tout le monde, envoyez un message par destinataire.

266 

267Le chef assigne à chaque coéquipier un nom lorsqu'il le génère, et n'importe quel coéquipier peut envoyer un message à n'importe quel autre par ce nom. Pour obtenir des noms prévisibles que vous pouvez référencer dans les prompts ultérieurs, dites au chef comment appeler chaque coéquipier dans votre instruction de génération.

268 

269### Utilisation des tokens

270 

271Les équipes d'agents utilisent considérablement plus de tokens qu'une seule session. Chaque coéquipier a sa propre fenêtre de contexte, et l'utilisation des tokens augmente avec le nombre de coéquipiers actifs. Pour la recherche, l'examen et le travail sur les nouvelles fonctionnalités, les tokens supplémentaires en valent généralement la peine. Pour les tâches de routine, une seule session est plus rentable. Consultez les [coûts des tokens des équipes d'agents](/fr/costs#agent-team-token-costs) pour les conseils d'utilisation.

272 

273## Exemples de cas d'usage

274 

275Ces exemples montrent comment les équipes d'agents gèrent les tâches où l'exploration parallèle ajoute de la valeur.

276 

277### Exécuter un examen de code parallèle

278 

279Un seul examinateur tend à graviter vers un type de problème à la fois. Diviser les critères d'examen en domaines indépendants signifie que la sécurité, l'impact sur les performances et la couverture de test reçoivent tous une attention approfondie simultanément. Le prompt assigne à chaque coéquipier une lentille distincte pour qu'ils ne se chevauchent pas :

280 

281```text theme={null}

282Créez une équipe d'agents pour examiner la PR #142. Générez trois examinateurs :

283- Un axé sur les implications de sécurité

284- Un vérifiant l'impact sur les performances

285- Un validant la couverture de test

286Demandez-leur d'examiner et de signaler les conclusions.

287```

288 

289Chaque examinateur travaille à partir de la même PR mais applique un filtre différent. Le chef synthétise les conclusions de tous les trois après qu'ils aient terminé.

290 

291### Enquêter avec des hypothèses concurrentes

292 

293Lorsque la cause première est peu claire, un seul agent tend à trouver une explication plausible et s'arrête. Le prompt combat cela en rendant les coéquipiers explicitement adversaires : le travail de chacun n'est pas seulement d'enquêter sur sa propre théorie mais de contester les autres.

294 

295```text theme={null}

296Les utilisateurs signalent que l'application se ferme après un message au lieu de rester connectée.

297Générez 5 coéquipiers agents pour enquêter sur différentes hypothèses. Demandez-leur de se parler

298pour essayer de réfuter les théories les uns des autres, comme un débat

299scientifique. Mettez à jour le document des conclusions avec le consensus qui émerge.

300```

301 

302La structure du débat est le mécanisme clé ici. L'enquête séquentielle souffre de l'ancrage : une fois qu'une théorie est explorée, l'enquête ultérieure est biaisée vers elle.

303 

304Avec plusieurs enquêteurs indépendants essayant activement de réfuter les uns les autres, la théorie qui survit est beaucoup plus susceptible d'être la cause première réelle.

305 

306## Meilleures pratiques

307 

308### Donner aux coéquipiers suffisamment de contexte

309 

310Les coéquipiers chargent automatiquement le contexte du projet, y compris CLAUDE.md, serveurs MCP et skills, mais ils n'héritent pas de l'historique de conversation du chef. Consultez [Contexte et communication](#context-and-communication) pour les détails. Incluez les détails spécifiques à la tâche dans le prompt de génération :

311 

312```text theme={null}

313Générez un coéquipier examinateur de sécurité avec le prompt : « Examinez le module d'authentification

314à src/auth/ pour les vulnérabilités de sécurité. Concentrez-vous sur la gestion des tokens, la gestion

315des sessions et la validation des entrées. L'application utilise des tokens JWT stockés dans

316des cookies httpOnly. Signalez tout problème avec les évaluations de gravité. »

317```

318 

319### Choisir une taille d'équipe appropriée

320 

321Il n'y a pas de limite stricte au nombre de coéquipiers, mais des contraintes pratiques s'appliquent :

322 

323* **Les coûts des tokens augmentent linéairement** : chaque coéquipier a sa propre fenêtre de contexte et consomme des tokens indépendamment. Consultez les [coûts des tokens des équipes d'agents](/fr/costs#agent-team-token-costs) pour les détails.

324* **La surcharge de coordination augmente** : plus de coéquipiers signifie plus de communication, de coordination de tâches et de risques de conflits

325* **Rendements décroissants** : au-delà d'un certain point, les coéquipiers supplémentaires n'accélèrent pas le travail proportionnellement

326 

327Commencez avec 3 à 5 coéquipiers pour la plupart des flux de travail. Cela équilibre le travail parallèle avec une coordination gérable. Les exemples de ce guide utilisent 3 à 5 coéquipiers car cette plage fonctionne bien dans différents types de tâches.

328 

329Avoir 5 à 6 [tâches](/fr/agent-teams#architecture) par coéquipier garde tout le monde productif sans changement de contexte excessif. Si vous avez 15 tâches indépendantes, 3 coéquipiers est un bon point de départ.

330 

331Augmentez l'échelle uniquement lorsque le travail bénéficie véritablement d'avoir des coéquipiers travaillant simultanément. Trois coéquipiers ciblés surpassent souvent cinq dispersés.

332 

333### Dimensionner les tâches de manière appropriée

334 

335* **Trop petites** : la surcharge de coordination dépasse le bénéfice

336* **Trop grandes** : les coéquipiers travaillent trop longtemps sans points de contrôle, augmentant le risque d'effort gaspillé

337* **Juste bien** : des unités autonomes qui produisent un livrable clair, comme une fonction, un fichier de test ou un examen

338 

339<Tip>

340 Le chef divise le travail en tâches et les assigne aux coéquipiers automatiquement. S'il ne crée pas assez de tâches, demandez-lui de diviser le travail en morceaux plus petits. Avoir 5 à 6 tâches par coéquipier garde tout le monde productif et permet au chef de réassigner le travail si quelqu'un est bloqué.

341</Tip>

342 

343### Attendre que les coéquipiers terminent

344 

345Parfois, le chef commence à mettre en œuvre des tâches lui-même au lieu d'attendre les coéquipiers. Si vous remarquez cela :

346 

347```text theme={null}

348Attendez que vos coéquipiers complètent leurs tâches avant de procéder

349```

350 

351### Commencer par la recherche et l'examen

352 

353Si vous êtes nouveau aux équipes d'agents, commencez par des tâches qui ont des limites claires et ne nécessitent pas d'écrire du code : examiner une PR, rechercher une bibliothèque ou enquêter sur un bug. Ces tâches montrent la valeur de l'exploration parallèle sans les défis de coordination qui accompagnent la mise en œuvre parallèle.

354 

355### Éviter les conflits de fichiers

356 

357Deux coéquipiers éditant le même fichier entraîne des écrasements. Divisez le travail pour que chaque coéquipier possède un ensemble de fichiers différent.

358 

359### Surveiller et diriger

360 

361Vérifiez la progression des coéquipiers, redirigez les approches qui ne fonctionnent pas et synthétisez les conclusions au fur et à mesure qu'elles arrivent. Laisser une équipe s'exécuter sans surveillance pendant trop longtemps augmente le risque d'effort gaspillé.

362 

363## Dépannage

364 

365### Les coéquipiers n'apparaissent pas

366 

367Si les coéquipiers n'apparaissent pas après avoir demandé à Claude de créer une équipe :

368 

369* En mode in-process, les coéquipiers peuvent déjà être en cours d'exécution mais non visibles. Appuyez sur Maj+Bas pour parcourir les coéquipiers actifs.

370* Vérifiez que la tâche que vous avez donnée à Claude était suffisamment complexe pour justifier une équipe. Claude décide s'il faut générer des coéquipiers en fonction de la tâche.

371* Si vous avez explicitement demandé des volets divisés, assurez-vous que tmux est installé et disponible dans votre PATH :

372 ```bash theme={null}

373 which tmux

374 ```

375* Pour iTerm2, vérifiez que le CLI `it2` est installé et que l'API Python est activée dans les préférences d'iTerm2.

376 

377### Trop de demandes de permission

378 

379Les demandes de permission des coéquipiers remontent au chef, ce qui peut créer des frictions. Pré-approuvez les opérations courantes dans vos [paramètres de permission](/fr/permissions) avant de générer les coéquipiers pour réduire les interruptions.

380 

381### Les coéquipiers s'arrêtent sur les erreurs

382 

383Les coéquipiers peuvent s'arrêter après avoir rencontré des erreurs au lieu de se rétablir. Vérifiez leur sortie en utilisant Maj+Bas en mode in-process ou en cliquant sur le volet en mode divisé, puis :

384 

385* Donnez-leur des instructions supplémentaires directement

386* Générez un coéquipier de remplacement pour continuer le travail

387 

388### Le chef s'arrête avant que le travail ne soit terminé

389 

390Le chef peut décider que l'équipe est terminée avant que toutes les tâches ne soient réellement complètes. Si cela se produit, dites-lui de continuer. Vous pouvez également dire au chef d'attendre que les coéquipiers terminent avant de procéder s'il commence à faire du travail au lieu de déléguer.

391 

392### Sessions tmux orphelines

393 

394Si une session tmux persiste après la fin de l'équipe, elle peut ne pas avoir été complètement nettoyée. Listez les sessions et tuez celle créée par l'équipe :

395 

396```bash theme={null}

397tmux ls

398tmux kill-session -t <session-name>

399```

400 

401## Limitations

402 

403Les équipes d'agents sont expérimentales. Les limitations actuelles à connaître :

404 

405* **Pas de reprise de session avec les coéquipiers in-process** : `/resume` et `/rewind` ne restaurent pas les coéquipiers in-process. Après la reprise d'une session, le chef peut tenter de envoyer un message aux coéquipiers qui n'existent plus. Si cela se produit, dites au chef de générer de nouveaux coéquipiers.

406* **L'état des tâches peut être en retard** : les coéquipiers échouent parfois à marquer les tâches comme complètes, ce qui bloque les tâches dépendantes. Si une tâche semble bloquée, vérifiez si le travail est réellement terminé et mettez à jour l'état de la tâche manuellement ou dites au chef de pousser le coéquipier.

407* **L'arrêt peut être lent** : les coéquipiers terminent leur demande actuelle ou appel d'outil avant de s'arrêter, ce qui peut prendre du temps.

408* **Une équipe par session** : un chef ne peut gérer qu'une seule équipe à la fois. Nettoyez l'équipe actuelle avant de démarrer une nouvelle.

409* **Pas d'équipes imbriquées** : les coéquipiers ne peuvent pas générer leurs propres équipes ou coéquipiers. Seul le chef peut gérer l'équipe.

410* **Le chef est fixe** : la session qui crée l'équipe est le chef pour sa durée de vie. Vous ne pouvez pas promouvoir un coéquipier en chef ou transférer le leadership.

411* **Permissions définies au moment de la génération** : tous les coéquipiers commencent avec le mode de permission du chef. Vous pouvez modifier les modes de coéquipiers individuels après la génération, mais vous ne pouvez pas définir les modes par coéquipier au moment de la génération.

412* **Les volets divisés nécessitent tmux ou iTerm2** : le mode in-process par défaut fonctionne dans n'importe quel terminal. Le mode volets divisés n'est pas supporté dans le terminal intégré de VS Code, Windows Terminal ou Ghostty.

413 

414<Tip>

415 **`CLAUDE.md` fonctionne normalement** : les coéquipiers lisent les fichiers `CLAUDE.md` de leur répertoire de travail. Utilisez ceci pour fournir des conseils spécifiques au projet à tous les coéquipiers.

416</Tip>

417 

418## Prochaines étapes

419 

420Explorez les approches connexes pour le travail parallèle et la délégation :

421 

422* **Délégation légère** : les [subagents](/fr/sub-agents) génèrent des agents auxiliaires pour la recherche ou la vérification au sein de votre session, mieux pour les tâches qui n'ont pas besoin de coordination inter-agents

423* **Sessions parallèles manuelles** : les [Git worktrees](/fr/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees) vous permettent d'exécuter plusieurs sessions Claude Code vous-même sans coordination d'équipe automatisée

424* **Comparer les approches** : consultez la comparaison [subagent vs équipe d'agents](/fr/features-overview#compare-similar-features) pour une répartition côte à côte

amazon-bedrock.md +589 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Claude Code sur Amazon Bedrock

6 

7> Découvrez comment configurer Claude Code via Amazon Bedrock, y compris la configuration, la configuration IAM et le dépannage.

8 

9export const ContactSalesCard = ({surface}) => {

10 const utm = content => `utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content}`;

11 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

12 <line x1="5" y1="12" x2="19" y2="12" />

13 <polyline points="12 5 19 12 12 19" />

14 </svg>;

15 const STYLES = `

16.cc-cs {

17 --cs-slate: #141413;

18 --cs-clay: #d97757;

19 --cs-clay-deep: #c6613f;

20 --cs-gray-000: #ffffff;

21 --cs-gray-700: #3d3d3a;

22 --cs-border-default: rgba(31, 30, 29, 0.15);

23 font-family: inherit;

24}

25.dark .cc-cs {

26 --cs-slate: #f0eee6;

27 --cs-gray-000: #262624;

28 --cs-gray-700: #bfbdb4;

29 --cs-border-default: rgba(240, 238, 230, 0.14);

30}

31.cc-cs-card {

32 display: flex; align-items: center; justify-content: space-between;

33 gap: 16px; padding: 14px 16px; margin: 0;

34 background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default);

35 border-radius: 8px; flex-wrap: wrap;

36}

37.cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; }

38.cc-cs-text strong { font-weight: 550; color: var(--cs-slate); }

39.cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

40.cc-cs-btn-clay {

41 display: inline-flex; align-items: center; gap: 8px;

42 background: var(--cs-clay-deep); color: #fff; border: none;

43 border-radius: 8px; padding: 8px 14px;

44 font-size: 13px; font-weight: 500;

45 transition: background-color 0.15s; white-space: nowrap;

46}

47.cc-cs-btn-clay:hover { background: var(--cs-clay); }

48.cc-cs-btn-ghost {

49 display: inline-flex; align-items: center; gap: 8px;

50 background: transparent; color: var(--cs-gray-700);

51 border: 0.5px solid var(--cs-border-default);

52 border-radius: 8px; padding: 8px 14px;

53 font-size: 13px; font-weight: 500;

54}

55.cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

56.dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); }

57@media (max-width: 720px) {

58 .cc-cs-actions { width: 100%; }

59}

60`;

61 return <div className="cc-cs not-prose">

62 <style>{STYLES}</style>

63 <div className="cc-cs-card">

64 <div className="cc-cs-text">

65 <strong>Deploying Claude Code across your organization?</strong> Talk to sales about enterprise plans, SSO, and centralized billing.

66 </div>

67 <div className="cc-cs-actions">

68 <a href={`https://claude.com/pricing?${utm('view_plans')}#plans-business`} className="cc-cs-btn-ghost">

69 View plans

70 </a>

71 <a href={`https://claude.com/contact-sales?${utm('contact_sales')}`} className="cc-cs-btn-clay">

72 Contact sales {iconArrowRight()}

73 </a>

74 </div>

75 </div>

76 </div>;

77};

78 

79export const Experiment = ({flag, treatment, children}) => {

80 const VID_KEY = 'exp_vid';

81 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

82 const fnv1a = s => {

83 let h = 0x811c9dc5;

84 for (let i = 0; i < s.length; i++) {

85 h ^= s.charCodeAt(i);

86 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

87 }

88 return h >>> 0;

89 };

90 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

91 const [decision] = useState(() => {

92 const params = new URLSearchParams(location.search);

93 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

94 const force = params.get('gb-force');

95 if (force) {

96 for (const p of force.split(',')) {

97 const [k, v] = p.split(':');

98 if (k === flag) return {

99 variant: v || 'treatment',

100 track: false

101 };

102 }

103 }

104 if (navigator.globalPrivacyControl) {

105 return {

106 variant: 'control',

107 track: false

108 };

109 }

110 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

111 if (prefsMatch) {

112 try {

113 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

114 return {

115 variant: 'control',

116 track: false

117 };

118 }

119 } catch {

120 return {

121 variant: 'control',

122 track: false

123 };

124 }

125 } else {

126 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

127 if (!country || CONSENT_COUNTRIES.has(country)) {

128 return {

129 variant: 'control',

130 track: false

131 };

132 }

133 }

134 let vid;

135 try {

136 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

137 if (ajsMatch) {

138 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

139 } else {

140 vid = localStorage.getItem(VID_KEY);

141 if (!vid) {

142 vid = crypto.randomUUID();

143 }

144 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

145 }

146 try {

147 localStorage.setItem(VID_KEY, vid);

148 } catch {}

149 } catch {

150 return {

151 variant: 'control',

152 track: false

153 };

154 }

155 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

156 return {

157 variant,

158 track: true,

159 vid

160 };

161 });

162 useEffect(() => {

163 if (!decision.track) return;

164 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

165 method: 'POST',

166 headers: {

167 'Content-Type': 'application/json',

168 'x-service-name': 'claude_code_docs'

169 },

170 body: JSON.stringify({

171 events: [{

172 event_type: 'GrowthbookExperimentEvent',

173 event_data: {

174 device_id: decision.vid,

175 anonymous_id: decision.vid,

176 timestamp: new Date().toISOString(),

177 experiment_id: flag,

178 variation_id: decision.variant === 'treatment' ? 1 : 0,

179 environment: 'production'

180 }

181 }]

182 }),

183 keepalive: true

184 }).catch(() => {});

185 }, []);

186 return decision.variant === 'treatment' ? treatment : children;

187};

188 

189<Experiment flag="docs-contact-sales-cta" treatment={<ContactSalesCard surface="bedrock" />} />

190 

191## Prérequis

192 

193Avant de configurer Claude Code avec Bedrock, assurez-vous que vous disposez de :

194 

195* Un compte AWS avec accès à Bedrock activé

196* Accès aux modèles Claude souhaités (par exemple, Claude Sonnet 4.6) dans Bedrock

197* AWS CLI installé et configuré (facultatif - nécessaire uniquement si vous n'avez pas d'autre mécanisme pour obtenir les identifiants)

198* Autorisations IAM appropriées

199 

200Pour vous connecter avec vos propres identifiants Bedrock, suivez [Se connecter avec Bedrock](#sign-in-with-bedrock) ci-dessous. Pour déployer Claude Code dans une équipe, utilisez les étapes de [configuration manuelle](#set-up-manually) et [épinglez vos versions de modèle](#4-pin-model-versions) avant le déploiement.

201 

202## Se connecter avec Bedrock

203 

204Si vous disposez d'identifiants AWS et souhaitez commencer à utiliser Claude Code via Bedrock, l'assistant de connexion vous guide à travers le processus. Vous complétez les prérequis côté AWS une fois par compte ; l'assistant gère le côté Claude Code.

205 

206<Steps>

207 <Step title="Activer les modèles Anthropic dans votre compte AWS">

208 Dans la [console Amazon Bedrock](https://console.aws.amazon.com/bedrock/), ouvrez le catalogue de modèles, sélectionnez un modèle Anthropic et soumettez le formulaire de cas d'usage. L'accès est accordé immédiatement après la soumission. Voir [Soumettre les détails du cas d'usage](#1-submit-use-case-details) pour AWS Organizations et [Configuration IAM](#iam-configuration) pour les autorisations dont votre rôle a besoin.

209 </Step>

210 

211 <Step title="Démarrer Claude Code et choisir Bedrock">

212 Exécutez `claude`. À l'invite de connexion, sélectionnez **3rd-party platform**, puis **Amazon Bedrock**.

213 </Step>

214 

215 <Step title="Suivre les invites de l'assistant">

216 Choisissez comment vous vous authentifiez auprès d'AWS : un profil AWS détecté à partir de votre répertoire `~/.aws`, une clé API Bedrock, une clé d'accès et un secret, ou des identifiants déjà dans votre environnement. L'assistant récupère votre région, vérifie quels modèles Claude votre compte peut invoquer, et vous permet de les épingler. Il enregistre le résultat dans le bloc `env` de votre [fichier de paramètres utilisateur](/fr/settings), vous n'avez donc pas besoin d'exporter les variables d'environnement vous-même.

217 </Step>

218</Steps>

219 

220Après vous être connecté, exécutez `/setup-bedrock` à tout moment pour rouvrir l'assistant et modifier vos identifiants, votre région ou vos épingles de modèle.

221 

222## Configuration manuelle

223 

224Pour configurer Bedrock via des variables d'environnement au lieu de l'assistant, par exemple dans CI ou un déploiement d'entreprise scriptés, suivez les étapes ci-dessous.

225 

226### 1. Soumettre les détails du cas d'usage

227 

228Les utilisateurs pour la première fois des modèles Anthropic doivent soumettre les détails du cas d'usage avant d'invoquer un modèle. Ceci est fait une fois par compte AWS.

229 

2301. Assurez-vous que vous disposez des bonnes autorisations IAM décrites ci-dessous

2312. Accédez à la [console Amazon Bedrock](https://console.aws.amazon.com/bedrock/)

2323. Sélectionnez un modèle Anthropic dans le **catalogue de modèles**

2334. Complétez le formulaire de cas d'usage. L'accès est accordé immédiatement après la soumission.

234 

235Si vous utilisez AWS Organizations, vous pouvez soumettre le formulaire une fois à partir du compte de gestion en utilisant l'[API `PutUseCaseForModelAccess`](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_PutUseCaseForModelAccess.html). Cet appel nécessite l'autorisation IAM `bedrock:PutUseCaseForModelAccess`. L'approbation s'étend automatiquement aux comptes enfants.

236 

237### 2. Configurer les identifiants AWS

238 

239Claude Code utilise la chaîne d'identifiants par défaut du SDK AWS. Configurez vos identifiants en utilisant l'une de ces méthodes :

240 

241**Option A : Configuration AWS CLI**

242 

243```bash theme={null}

244aws configure

245```

246 

247**Option B : Variables d'environnement (clé d'accès)**

248 

249```bash theme={null}

250export AWS_ACCESS_KEY_ID=your-access-key-id

251export AWS_SECRET_ACCESS_KEY=your-secret-access-key

252export AWS_SESSION_TOKEN=your-session-token

253```

254 

255**Option C : Variables d'environnement (profil SSO)**

256 

257```bash theme={null}

258aws sso login --profile=<your-profile-name>

259 

260export AWS_PROFILE=your-profile-name

261```

262 

263**Option D : Identifiants de la console de gestion AWS**

264 

265```bash theme={null}

266aws login

267```

268 

269[En savoir plus](https://docs.aws.amazon.com/signin/latest/userguide/command-line-sign-in.html) sur `aws login`.

270 

271**Option E : Clés API Bedrock**

272 

273```bash theme={null}

274export AWS_BEARER_TOKEN_BEDROCK=your-bedrock-api-key

275```

276 

277Les clés API Bedrock offrent une méthode d'authentification plus simple sans avoir besoin d'identifiants AWS complets. [En savoir plus sur les clés API Bedrock](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/).

278 

279#### Configuration avancée des identifiants

280 

281Claude Code prend en charge l'actualisation automatique des identifiants pour AWS SSO et les fournisseurs d'identité d'entreprise. Ajoutez ces paramètres à votre fichier de paramètres Claude Code (voir [Paramètres](/fr/settings) pour les emplacements des fichiers).

282 

283Lorsque Claude Code détecte que vos identifiants AWS ont expiré (soit localement en fonction de leur horodatage, soit lorsque Bedrock retourne une erreur d'identifiants), il exécutera automatiquement vos commandes `awsAuthRefresh` et/ou `awsCredentialExport` configurées pour obtenir de nouveaux identifiants avant de réessayer la demande.

284 

285##### Exemple de configuration

286 

287```json theme={null}

288{

289 "awsAuthRefresh": "aws sso login --profile myprofile",

290 "env": {

291 "AWS_PROFILE": "myprofile"

292 }

293}

294```

295 

296##### Paramètres de configuration expliqués

297 

298**`awsAuthRefresh`** : Utilisez ceci pour les commandes qui modifient le répertoire `.aws`, comme la mise à jour des identifiants, du cache SSO ou des fichiers de configuration. La sortie de la commande s'affiche à l'utilisateur, mais l'entrée interactive n'est pas prise en charge. Cela fonctionne bien pour les flux SSO basés sur un navigateur où l'interface de ligne de commande affiche une URL ou un code et vous complétez l'authentification dans le navigateur.

299 

300**`awsCredentialExport`** : Utilisez ceci uniquement si vous ne pouvez pas modifier `.aws` et devez retourner directement les identifiants. La sortie est capturée silencieusement et non affichée à l'utilisateur. La commande doit générer du JSON dans ce format :

301 

302```json theme={null}

303{

304 "Credentials": {

305 "AccessKeyId": "value",

306 "SecretAccessKey": "value",

307 "SessionToken": "value"

308 }

309}

310```

311 

312### 3. Configurer Claude Code

313 

314Définissez les variables d'environnement suivantes pour activer Bedrock :

315 

316```bash theme={null}

317# Enable Bedrock integration

318export CLAUDE_CODE_USE_BEDROCK=1

319export AWS_REGION=us-east-1 # or your preferred region

320 

321# Optional: Override the region for the small/fast model (Haiku).

322# Also applies to Bedrock Mantle.

323export ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION=us-west-2

324 

325# Optional: Override the Bedrock endpoint URL for custom endpoints or gateways

326# export ANTHROPIC_BEDROCK_BASE_URL=https://bedrock-runtime.us-east-1.amazonaws.com

327```

328 

329Lors de l'activation de Bedrock pour Claude Code, gardez à l'esprit les points suivants :

330 

331* `AWS_REGION` est une variable d'environnement requise. Claude Code ne lit pas à partir du fichier de configuration `.aws` pour ce paramètre.

332* Lors de l'utilisation de Bedrock, les commandes `/login` et `/logout` sont désactivées car l'authentification est gérée via les identifiants AWS.

333* Vous pouvez utiliser des fichiers de paramètres pour les variables d'environnement comme `AWS_PROFILE` que vous ne voulez pas divulguer à d'autres processus. Voir [Paramètres](/fr/settings) pour plus d'informations.

334 

335### 4. Épingler les versions de modèle

336 

337<Warning>

338 Épinglez les versions de modèle spécifiques lors du déploiement pour plusieurs utilisateurs. Sans épinglage, les alias de modèle tels que `sonnet` et `opus` se résolvent à la dernière version, qui peut ne pas encore être disponible dans votre compte Bedrock lorsqu'Anthropic publie une mise à jour. Claude Code [revient](#startup-model-checks) à la version précédente au démarrage lorsque la dernière n'est pas disponible, mais l'épinglage vous permet de contrôler quand vos utilisateurs passent à un nouveau modèle.

339</Warning>

340 

341Définissez ces variables d'environnement sur des ID de modèle Bedrock spécifiques.

342 

343Sans `ANTHROPIC_DEFAULT_OPUS_MODEL`, l'alias `opus` sur Bedrock se résout à Opus 4.6. Définissez-le sur l'ID Opus 4.7 pour utiliser le dernier modèle :

344 

345```bash theme={null}

346export ANTHROPIC_DEFAULT_OPUS_MODEL='us.anthropic.claude-opus-4-7'

347export ANTHROPIC_DEFAULT_SONNET_MODEL='us.anthropic.claude-sonnet-4-6'

348export ANTHROPIC_DEFAULT_HAIKU_MODEL='us.anthropic.claude-haiku-4-5-20251001-v1:0'

349```

350 

351Ces variables utilisent des ID de profil d'inférence inter-régions (avec le préfixe `us.`). Si vous utilisez un préfixe de région différent ou des profils d'inférence d'application, ajustez en conséquence. Pour les ID de modèle actuels et hérités, voir [Aperçu des modèles](https://platform.claude.com/docs/en/about-claude/models/overview). Voir [Configuration du modèle](/fr/model-config#pin-models-for-third-party-deployments) pour la liste complète des variables d'environnement.

352 

353Claude Code utilise ces modèles par défaut lorsqu'aucune variable d'épinglage n'est définie :

354 

355| Type de modèle | Valeur par défaut |

356| :------------------ | :--------------------------------------------- |

357| Modèle principal | `us.anthropic.claude-sonnet-4-5-20250929-v1:0` |

358| Modèle petit/rapide | `us.anthropic.claude-haiku-4-5-20251001-v1:0` |

359 

360Pour personnaliser davantage les modèles, utilisez l'une de ces méthodes :

361 

362```bash theme={null}

363# Using inference profile ID

364export ANTHROPIC_MODEL='global.anthropic.claude-sonnet-4-6'

365export ANTHROPIC_DEFAULT_HAIKU_MODEL='us.anthropic.claude-haiku-4-5-20251001-v1:0'

366 

367# Using application inference profile ARN

368export ANTHROPIC_MODEL='arn:aws:bedrock:us-east-2:your-account-id:application-inference-profile/your-model-id'

369 

370# Optional: Disable prompt caching if needed

371export DISABLE_PROMPT_CACHING=1

372 

373# Optional: Request 1-hour prompt cache TTL instead of the 5-minute default

374export ENABLE_PROMPT_CACHING_1H=1

375```

376 

377<Note>[La mise en cache des invites](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) peut ne pas être disponible dans toutes les régions. Les écritures de cache avec un TTL d'une heure sont facturées à un taux plus élevé que les écritures de cinq minutes.</Note>

378 

379#### Mapper chaque version de modèle à un profil d'inférence

380 

381Les variables d'environnement `ANTHROPIC_DEFAULT_*_MODEL` configurent un profil d'inférence par famille de modèles. Si votre organisation doit exposer plusieurs versions de la même famille dans le sélecteur `/model`, chacune acheminée vers son propre ARN de profil d'inférence d'application, utilisez plutôt le paramètre `modelOverrides` dans votre [fichier de paramètres](/fr/settings#settings-files).

382 

383Cet exemple mappe quatre versions d'Opus à des ARN distincts afin que les utilisateurs puissent basculer entre elles sans contourner les profils d'inférence de votre organisation :

384 

385```json theme={null}

386{

387 "modelOverrides": {

388 "claude-opus-4-7": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-47-prod",

389 "claude-opus-4-6": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-46-prod",

390 "claude-opus-4-5-20251101": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-45-prod",

391 "claude-opus-4-1-20250805": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-41-prod"

392 }

393}

394```

395 

396Lorsqu'un utilisateur sélectionne l'une de ces versions dans `/model`, Claude Code appelle Bedrock avec l'ARN mappé. Les versions sans remplacement reviennent à l'ID de modèle Bedrock intégré ou à tout profil d'inférence correspondant découvert au démarrage. Voir [Remplacer les ID de modèle par version](/fr/model-config#override-model-ids-per-version) pour plus de détails sur la façon dont les remplacements interagissent avec `availableModels` et d'autres paramètres de modèle.

397 

398## Vérifications du modèle au démarrage

399 

400Lorsque Claude Code démarre avec Bedrock configuré, il vérifie que les modèles qu'il a l'intention d'utiliser sont accessibles dans votre compte. Cette vérification nécessite Claude Code v2.1.94 ou version ultérieure.

401 

402Si vous avez épinglé une version de modèle plus ancienne que la valeur par défaut actuelle de Claude Code, et que votre compte peut invoquer la version plus récente, Claude Code vous invite à mettre à jour l'épingle. L'acceptation écrit le nouvel ID de modèle dans votre [fichier de paramètres utilisateur](/fr/settings) et redémarre Claude Code. Le refus est mémorisé jusqu'au prochain changement de version par défaut. Les épingles qui pointent vers un [ARN de profil d'inférence d'application](#map-each-model-version-to-an-inference-profile) sont ignorées, car celles-ci sont gérées par votre administrateur.

403 

404Si vous n'avez pas épinglé un modèle et que la valeur par défaut actuelle n'est pas disponible dans votre compte, Claude Code revient à la version précédente pour la session actuelle et affiche un avis. Le retour n'est pas persistant. Activez le modèle plus récent dans votre compte Bedrock ou [épinglez une version](#4-pin-model-versions) pour rendre le choix permanent.

405 

406## Configuration IAM

407 

408Créez une politique IAM avec les autorisations requises pour Claude Code :

409 

410```json theme={null}

411{

412 "Version": "2012-10-17",

413 "Statement": [

414 {

415 "Sid": "AllowModelAndInferenceProfileAccess",

416 "Effect": "Allow",

417 "Action": [

418 "bedrock:InvokeModel",

419 "bedrock:InvokeModelWithResponseStream",

420 "bedrock:ListInferenceProfiles",

421 "bedrock:GetInferenceProfile"

422 ],

423 "Resource": [

424 "arn:aws:bedrock:*:*:inference-profile/*",

425 "arn:aws:bedrock:*:*:application-inference-profile/*",

426 "arn:aws:bedrock:*:*:foundation-model/*"

427 ]

428 },

429 {

430 "Sid": "AllowMarketplaceSubscription",

431 "Effect": "Allow",

432 "Action": [

433 "aws-marketplace:ViewSubscriptions",

434 "aws-marketplace:Subscribe"

435 ],

436 "Resource": "*",

437 "Condition": {

438 "StringEquals": {

439 "aws:CalledViaLast": "bedrock.amazonaws.com"

440 }

441 }

442 }

443 ]

444}

445```

446 

447Pour des autorisations plus restrictives, vous pouvez limiter la ressource à des ARN de profil d'inférence spécifiques.

448 

449`bedrock:GetInferenceProfile` permet à Claude Code de résoudre un [ARN de profil d'inférence d'application](#map-each-model-version-to-an-inference-profile) vers son modèle de fondation de support, qui est utilisé pour sélectionner la forme de requête correcte pour ce modèle.

450 

451Si le jeton ne dispose pas de cette autorisation, Claude Code se rétablit automatiquement en réessayant une fois avec la forme alternative, de sorte que les requêtes réussissent toujours mais chaque nouveau modèle ajoute un aller-retour supplémentaire. L'octroi de l'autorisation évite la nouvelle tentative. Cela s'applique le plus souvent aux déploiements `AWS_BEARER_TOKEN_BEDROCK`, où la politique du jeton est généralement plus étroite qu'un rôle IAM complet.

452 

453Pour plus de détails, voir [Documentation IAM Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/security-iam.html).

454 

455<Note>

456 Créez un compte AWS dédié pour Claude Code pour simplifier le suivi des coûts et le contrôle d'accès.

457</Note>

458 

459## Fenêtre de contexte de 1M de jetons

460 

461Claude Opus 4.7, Opus 4.6 et Sonnet 4.6 prennent en charge la [fenêtre de contexte de 1M de jetons](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) sur Amazon Bedrock. Claude Code active automatiquement la fenêtre de contexte étendue lorsque vous sélectionnez une variante de modèle 1M.

462 

463L'[assistant de configuration](#sign-in-with-bedrock) offre une option de contexte 1M lorsqu'il épingle les modèles. Pour l'activer pour un modèle épinglé manuellement à la place, ajoutez `[1m]` à l'ID du modèle. Voir [Épingler les modèles pour les déploiements tiers](/fr/model-config#pin-models-for-third-party-deployments) pour plus de détails.

464 

465## Garde-fous AWS

466 

467[Les garde-fous Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html) vous permettent de mettre en œuvre le filtrage du contenu pour Claude Code. Créez un garde-fou dans la [console Amazon Bedrock](https://console.aws.amazon.com/bedrock/), publiez une version, puis ajoutez les en-têtes du garde-fou à votre [fichier de paramètres](/fr/settings). Activez l'inférence inter-régions sur votre garde-fou si vous utilisez des profils d'inférence inter-régions.

468 

469Exemple de configuration :

470 

471```json theme={null}

472{

473 "env": {

474 "ANTHROPIC_CUSTOM_HEADERS": "X-Amzn-Bedrock-GuardrailIdentifier: your-guardrail-id\nX-Amzn-Bedrock-GuardrailVersion: 1"

475 }

476}

477```

478 

479## Utiliser le point de terminaison Mantle

480 

481Mantle est un point de terminaison Amazon Bedrock qui sert les modèles Claude via la forme API Anthropic native plutôt que l'API Invoke Bedrock. Il utilise les mêmes identifiants AWS, autorisations IAM et configuration `awsAuthRefresh` décrites précédemment sur cette page.

482 

483<Note>

484 Mantle nécessite Claude Code v2.1.94 ou version ultérieure. Exécutez `claude --version` pour vérifier.

485</Note>

486 

487### Activer Mantle

488 

489Avec les identifiants AWS déjà configurés, définissez `CLAUDE_CODE_USE_MANTLE` pour acheminer les demandes vers le point de terminaison Mantle :

490 

491```bash theme={null}

492export CLAUDE_CODE_USE_MANTLE=1

493export AWS_REGION=us-east-1

494```

495 

496Claude Code construit l'URL du point de terminaison à partir de `AWS_REGION`. Pour la remplacer pour un point de terminaison personnalisé ou une passerelle, définissez `ANTHROPIC_BEDROCK_MANTLE_BASE_URL`.

497 

498Exécutez `/status` dans Claude Code pour confirmer. La ligne du fournisseur affiche `Amazon Bedrock (Mantle)` lorsque Mantle est actif.

499 

500### Sélectionner un modèle Mantle

501 

502Mantle utilise des ID de modèle préfixés avec `anthropic.` et sans suffixe de version, par exemple `anthropic.claude-haiku-4-5`. Les modèles disponibles pour votre compte dépendent de ce que votre organisation a reçu ; les ID de modèle supplémentaires sont répertoriés dans vos documents d'intégration d'AWS. Contactez votre équipe de compte AWS pour demander l'accès aux modèles autorisés.

503 

504Définissez le modèle avec l'indicateur `--model` ou avec `/model` dans Claude Code :

505 

506```bash theme={null}

507claude --model anthropic.claude-haiku-4-5

508```

509 

510### Exécuter Mantle aux côtés de l'API Invoke

511 

512Les modèles disponibles pour vous sur Mantle peuvent ne pas inclure tous les modèles que vous utilisez aujourd'hui. La définition de `CLAUDE_CODE_USE_BEDROCK` et `CLAUDE_CODE_USE_MANTLE` permet à Claude Code d'appeler les deux points de terminaison à partir de la même session. Les ID de modèle qui correspondent au format Mantle sont acheminés vers Mantle, et tous les autres ID de modèle vont à l'API Invoke Bedrock.

513 

514```bash theme={null}

515export CLAUDE_CODE_USE_BEDROCK=1

516export CLAUDE_CODE_USE_MANTLE=1

517```

518 

519Pour afficher un modèle Mantle dans le sélecteur `/model`, répertoriez son ID dans `availableModels` dans votre [fichier de paramètres](/fr/settings). Ce paramètre restreint également le sélecteur aux entrées répertoriées, donc incluez chaque alias que vous souhaitez garder disponible :

520 

521```json theme={null}

522{

523 "availableModels": ["opus", "sonnet", "haiku", "anthropic.claude-haiku-4-5"]

524}

525```

526 

527Les entrées avec le préfixe `anthropic.` sont ajoutées en tant qu'options de sélecteur personnalisées et acheminées vers Mantle. Remplacez `anthropic.claude-haiku-4-5` par l'ID de modèle que votre compte a reçu. Voir [Restreindre la sélection du modèle](/fr/model-config#restrict-model-selection) pour savoir comment `availableModels` interagit avec d'autres paramètres de modèle.

528 

529Lorsque les deux fournisseurs sont actifs, `/status` affiche `Amazon Bedrock + Amazon Bedrock (Mantle)`.

530 

531### Acheminer Mantle via une passerelle

532 

533Si votre organisation achemine le trafic du modèle via une [passerelle LLM](/fr/llm-gateway) centralisée qui injecte les identifiants AWS côté serveur, désactivez l'authentification côté client afin que Claude Code envoie les demandes sans signatures SigV4 ou en-têtes `x-api-key` :

534 

535```bash theme={null}

536export CLAUDE_CODE_USE_MANTLE=1

537export CLAUDE_CODE_SKIP_MANTLE_AUTH=1

538export ANTHROPIC_BEDROCK_MANTLE_BASE_URL=https://your-gateway.example.com

539```

540 

541### Variables d'environnement Mantle

542 

543Ces variables sont spécifiques au point de terminaison Mantle. Voir [Variables d'environnement](/fr/env-vars) pour la liste complète.

544 

545| Variable | Objectif |

546| :-------------------------------------- | :---------------------------------------------------------------------------- |

547| `CLAUDE_CODE_USE_MANTLE` | Activer le point de terminaison Mantle. Définissez sur `1` ou `true`. |

548| `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` | Remplacer l'URL du point de terminaison Mantle par défaut |

549| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | Ignorer l'authentification côté client pour les configurations de proxy |

550| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | Remplacer la région AWS pour le modèle de classe Haiku (partagé avec Bedrock) |

551 

552## Dépannage

553 

554### Boucle d'authentification avec SSO et proxies d'entreprise

555 

556Si des onglets de navigateur s'ouvrent à plusieurs reprises lors de l'utilisation d'AWS SSO, supprimez le paramètre `awsAuthRefresh` de votre [fichier de paramètres](/fr/settings). Cela peut se produire lorsque les VPN d'entreprise ou les proxies d'inspection TLS interrompent le flux SSO du navigateur. Claude Code traite la connexion interrompue comme un échec d'authentification, réexécute `awsAuthRefresh` et boucle indéfiniment.

557 

558Si votre environnement réseau interfère avec les flux SSO automatiques basés sur un navigateur, utilisez `aws sso login` manuellement avant de démarrer Claude Code au lieu de vous fier à `awsAuthRefresh`.

559 

560### Problèmes de région

561 

562Si vous rencontrez des problèmes de région :

563 

564* Vérifiez la disponibilité du modèle : `aws bedrock list-inference-profiles --region your-region`

565* Basculez vers une région prise en charge : `export AWS_REGION=us-east-1`

566* Envisagez d'utiliser des profils d'inférence pour l'accès inter-régions

567 

568Si vous recevez une erreur « on-demand throughput isn't supported » :

569 

570* Spécifiez le modèle comme ID de [profil d'inférence](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-support.html)

571 

572Claude Code utilise l'API Bedrock [Invoke](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html) et ne prend pas en charge l'API Converse.

573 

574### Erreurs du point de terminaison Mantle

575 

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

577 

578Un `403` du point de terminaison Mantle avec des identifiants valides signifie que votre compte AWS n'a pas reçu l'accès au modèle que vous avez demandé. Contactez votre équipe de compte AWS pour demander l'accès.

579 

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

581 

582## Ressources supplémentaires

583 

584* [Documentation Bedrock](https://docs.aws.amazon.com/bedrock/)

585* [Tarification Bedrock](https://aws.amazon.com/bedrock/pricing/)

586* [Profils d'inférence Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-support.html)

587* [Quota de jetons Bedrock et réduction des jetons](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas-token-burndown.html)

588* [Claude Code sur Amazon Bedrock : Guide de configuration rapide](https://community.aws/content/2tXkZKrZzlrlu0KfH8gST5Dkppq/claude-code-on-amazon-bedrock-quick-setup-guide)

589* [Implémentation de la surveillance de Claude Code (Bedrock)](https://github.com/aws-solutions-library-samples/guidance-for-claude-code-with-amazon-bedrock/blob/main/assets/docs/MONITORING.md)

analytics.md +224 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Suivre l'utilisation de l'équipe avec l'analytique

6 

7> Consultez les métriques d'utilisation de Claude Code, suivez l'adoption et mesurez la vélocité d'ingénierie dans le tableau de bord analytique.

8 

9Claude Code fournit des tableaux de bord analytiques pour aider les organisations à comprendre les modèles d'utilisation des développeurs, suivre les métriques de contribution et mesurer l'impact de Claude Code sur la vélocité d'ingénierie. Accédez au tableau de bord pour votre plan :

10 

11| Plan | URL du tableau de bord | Inclut | En savoir plus |

12| ----------------------------- | -------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- |

13| Claude for Teams / Enterprise | [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code) | Métriques d'utilisation, métriques de contribution avec intégration GitHub, classement, export de données | [Détails](#access-analytics-for-teams-and-enterprise) |

14| API (Claude Console) | [platform.claude.com/claude-code](https://platform.claude.com/claude-code) | Métriques d'utilisation, suivi des dépenses, insights d'équipe | [Détails](#access-analytics-for-api-customers) |

15 

16## Accéder à l'analytique pour Teams et Enterprise

17 

18Accédez à [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code). Les administrateurs et propriétaires peuvent consulter le tableau de bord.

19 

20Le tableau de bord Teams et Enterprise inclut :

21 

22* **Métriques d'utilisation** : lignes de code acceptées, taux d'acceptation des suggestions, utilisateurs actifs quotidiens et sessions

23* **Métriques de contribution** : PRs et lignes de code livrées avec l'assistance de Claude Code, avec [intégration GitHub](#enable-contribution-metrics)

24* **Classement** : principaux contributeurs classés par utilisation de Claude Code

25* **Export de données** : téléchargez les données de contribution au format CSV pour des rapports personnalisés

26 

27### Activer les métriques de contribution

28 

29<Note>

30 Les métriques de contribution sont en bêta publique et disponibles sur les plans Claude for Teams et Claude for Enterprise. Ces métriques couvrent uniquement les utilisateurs au sein de votre organisation claude.ai. L'utilisation via l'API Claude Console ou les intégrations tierces n'est pas incluse.

31</Note>

32 

33Les données d'utilisation et d'adoption sont disponibles pour tous les comptes Claude for Teams et Claude for Enterprise. Les métriques de contribution nécessitent une configuration supplémentaire pour connecter votre organisation GitHub.

34 

35Vous devez avoir le rôle Propriétaire pour configurer les paramètres analytiques. Un administrateur GitHub doit installer l'application GitHub.

36 

37<Warning>

38 Les métriques de contribution ne sont pas disponibles pour les organisations avec [Zero Data Retention](/fr/zero-data-retention) activé. Le tableau de bord analytique affichera uniquement les métriques d'utilisation.

39</Warning>

40 

41<Steps>

42 <Step title="Installer l'application GitHub">

43 Un administrateur GitHub installe l'application Claude GitHub sur le compte GitHub de votre organisation à [github.com/apps/claude](https://github.com/apps/claude).

44 </Step>

45 

46 <Step title="Activer l'analytique Claude Code">

47 Un propriétaire Claude accède à [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) et active la fonctionnalité d'analytique Claude Code.

48 </Step>

49 

50 <Step title="Activer l'analytique GitHub">

51 Sur la même page, activez le bouton bascule ' Analytique GitHub '.

52 </Step>

53 

54 <Step title="S'authentifier avec GitHub">

55 Complétez le flux d'authentification GitHub et sélectionnez les organisations GitHub à inclure dans l'analyse.

56 </Step>

57</Steps>

58 

59Les données apparaissent généralement dans les 24 heures suivant l'activation, avec des mises à jour quotidiennes. Si aucune donnée n'apparaît, vous pouvez voir l'un de ces messages :

60 

61* **« Application GitHub requise »** : installez l'application GitHub pour consulter les métriques de contribution

62* **« Traitement des données en cours »** : revenez dans quelques jours et confirmez que l'application GitHub est installée si les données n'apparaissent pas

63 

64Les métriques de contribution prennent en charge GitHub Cloud et GitHub Enterprise Server.

65 

66### Examiner les métriques récapitulatives

67 

68<Note>

69 Ces métriques sont délibérément conservatrices et représentent une sous-estimation de l'impact réel de Claude Code. Seules les lignes et les PRs où il y a une grande confiance dans l'implication de Claude Code sont comptabilisées.

70</Note>

71 

72Le tableau de bord affiche ces métriques récapitulatives en haut :

73 

74* **PRs avec CC** : nombre total de demandes de fusion qui contiennent au moins une ligne de code écrite avec Claude Code

75* **Lignes de code avec CC** : nombre total de lignes de code dans toutes les PRs fusionnées qui ont été écrites avec l'assistance de Claude Code. Seules les « lignes effectives » sont comptabilisées : lignes avec plus de 3 caractères après normalisation, excluant les lignes vides et les lignes contenant uniquement des crochets ou une ponctuation triviale.

76* **PRs avec Claude Code (%)** : pourcentage de toutes les PRs fusionnées qui contiennent du code assisté par Claude Code

77* **Taux d'acceptation des suggestions** : pourcentage de fois où les utilisateurs acceptent les suggestions d'édition de code de Claude Code, y compris l'utilisation des outils Edit, Write et NotebookEdit

78* **Lignes de code acceptées** : nombre total de lignes de code écrites par Claude Code que les utilisateurs ont acceptées dans leurs sessions. Cela exclut les suggestions rejetées et ne suit pas les suppressions ultérieures.

79 

80### Explorer les graphiques

81 

82Le tableau de bord inclut plusieurs graphiques pour visualiser les tendances au fil du temps.

83 

84#### Suivre l'adoption

85 

86Le graphique Adoption affiche les tendances d'utilisation quotidiennes :

87 

88* **utilisateurs** : utilisateurs actifs quotidiens

89* **sessions** : nombre de sessions Claude Code actives par jour

90 

91#### Mesurer les PRs par utilisateur

92 

93Ce graphique affiche l'activité des développeurs individuels au fil du temps :

94 

95* **PRs par utilisateur** : nombre total de PRs fusionnées par jour divisé par les utilisateurs actifs quotidiens

96* **utilisateurs** : utilisateurs actifs quotidiens

97 

98Utilisez ceci pour comprendre comment la productivité individuelle change à mesure que l'adoption de Claude Code augmente.

99 

100#### Afficher la répartition des demandes de fusion

101 

102Le graphique Demandes de fusion affiche une répartition quotidienne des PRs fusionnées :

103 

104* **PRs avec CC** : demandes de fusion contenant du code assisté par Claude Code

105* **PRs sans CC** : demandes de fusion sans code assisté par Claude Code

106 

107Basculez vers la vue **Lignes de code** pour voir la même répartition par lignes de code plutôt que par nombre de PR.

108 

109#### Trouver les principaux contributeurs

110 

111Le classement affiche les 10 meilleurs utilisateurs classés par volume de contribution. Basculez entre :

112 

113* **Demandes de fusion** : affiche les PRs avec Claude Code par rapport à toutes les PRs pour chaque utilisateur

114* **Lignes de code** : affiche les lignes avec Claude Code par rapport à toutes les lignes pour chaque utilisateur

115 

116Cliquez sur **Exporter tous les utilisateurs** pour télécharger les données de contribution complètes pour tous les utilisateurs au format CSV. L'export inclut tous les utilisateurs, pas seulement les 10 premiers affichés.

117 

118### Attribution des PR

119 

120Lorsque les métriques de contribution sont activées, Claude Code analyse les demandes de fusion fusionnées pour déterminer quel code a été écrit avec l'assistance de Claude Code. Ceci est fait en mettant en correspondance l'activité de session Claude Code par rapport au code dans chaque PR.

121 

122#### Critères de balisage

123 

124Les PRs sont balisées comme « avec Claude Code » si elles contiennent au moins une ligne de code écrite lors d'une session Claude Code. Le système utilise une correspondance conservatrice : seul le code où il y a une grande confiance dans l'implication de Claude Code est compté comme assisté.

125 

126#### Processus d'attribution

127 

128Lorsqu'une demande de fusion est fusionnée :

129 

1301. Les lignes ajoutées sont extraites du diff de la PR

1312. Les sessions Claude Code qui ont modifié les fichiers correspondants dans une fenêtre de temps sont identifiées

1323. Les lignes de PR sont mises en correspondance avec la sortie de Claude Code en utilisant plusieurs stratégies

1334. Les métriques sont calculées pour les lignes assistées par l'IA et le nombre total de lignes

134 

135Avant la comparaison, les lignes sont normalisées : les espaces blancs sont supprimés, les espaces multiples sont réduits, les guillemets sont standardisés et le texte est converti en minuscules.

136 

137Les demandes de fusion fusionnées contenant des lignes assistées par Claude Code sont étiquetées comme `claude-code-assisted` dans GitHub.

138 

139#### Fenêtre de temps

140 

141Les sessions de 21 jours avant à 2 jours après la date de fusion de la PR sont considérées pour la correspondance d'attribution.

142 

143#### Fichiers exclus

144 

145Certains fichiers sont automatiquement exclus de l'analyse car ils sont générés automatiquement :

146 

147* Fichiers de verrouillage : package-lock.json, yarn.lock, Cargo.lock et similaires

148* Code généré : sorties Protobuf, artefacts de construction, fichiers minifiés

149* Répertoires de construction : dist/, build/, node\_modules/, target/

150* Fixtures de test : snapshots, cassettes, données fictives

151* Lignes de plus de 1 000 caractères, qui sont probablement minifiées ou générées

152 

153#### Notes d'attribution

154 

155Gardez ces détails supplémentaires à l'esprit lors de l'interprétation des données d'attribution :

156 

157* Le code considérablement réécrit par les développeurs, avec une différence de plus de 20 %, n'est pas attribué à Claude Code

158* Les sessions en dehors de la fenêtre de 21 jours ne sont pas considérées

159* L'algorithme ne considère pas la branche source ou destination de la PR lors de l'attribution

160 

161### Tirer le meilleur parti de l'analytique

162 

163Utilisez les métriques de contribution pour démontrer le ROI, identifier les modèles d'adoption et trouver les membres de l'équipe qui peuvent aider les autres à démarrer.

164 

165#### Surveiller l'adoption

166 

167Suivez le graphique Adoption et les nombres d'utilisateurs pour identifier :

168 

169* Les utilisateurs actifs qui peuvent partager les meilleures pratiques

170* Les tendances globales d'adoption dans votre organisation

171* Les baisses d'utilisation qui peuvent indiquer des frictions ou des problèmes

172 

173#### Mesurer le ROI

174 

175Les métriques de contribution aident à répondre à « Cet outil vaut-il l'investissement ? » avec des données de votre propre base de code :

176 

177* Suivez les changements dans les PRs par utilisateur au fil du temps à mesure que l'adoption augmente

178* Comparez les PRs et les lignes de code livrées avec et sans Claude Code

179* Utilisez aux côtés des [métriques DORA](https://dora.dev/), de la vélocité des sprints ou d'autres KPIs d'ingénierie pour comprendre les changements résultant de l'adoption de Claude Code

180 

181#### Identifier les utilisateurs avancés

182 

183Le classement vous aide à trouver les membres de l'équipe avec une adoption élevée de Claude Code qui peuvent :

184 

185* Partager les techniques de prompting et les flux de travail avec l'équipe

186* Fournir des commentaires sur ce qui fonctionne bien

187* Aider à intégrer les nouveaux utilisateurs

188 

189#### Accéder aux données par programmation

190 

191Pour interroger ces données via GitHub, recherchez les PRs étiquetées avec `claude-code-assisted`.

192 

193## Accéder à l'analytique pour les clients API

194 

195Les clients API utilisant Claude Console peuvent accéder à l'analytique à [platform.claude.com/claude-code](https://platform.claude.com/claude-code). Vous devez avoir la permission UsageView pour accéder au tableau de bord, qui est accordée aux rôles Developer, Billing, Admin, Owner et Primary Owner.

196 

197<Note>

198 Les métriques de contribution avec intégration GitHub ne sont actuellement pas disponibles pour les clients API. Le tableau de bord Console affiche uniquement les métriques d'utilisation et de dépenses.

199</Note>

200 

201Le tableau de bord Console affiche :

202 

203* **Lignes de code acceptées** : nombre total de lignes de code écrites par Claude Code que les utilisateurs ont acceptées dans leurs sessions. Cela exclut les suggestions rejetées et ne suit pas les suppressions ultérieures.

204* **Taux d'acceptation des suggestions** : pourcentage de fois où les utilisateurs acceptent l'utilisation de l'outil d'édition de code, y compris les outils Edit, Write et NotebookEdit.

205* **Activité** : utilisateurs actifs quotidiens et sessions affichés sur un graphique.

206* **Dépenses** : coûts quotidiens de l'API en dollars aux côtés du nombre d'utilisateurs.

207 

208### Afficher les insights d'équipe

209 

210Le tableau des insights d'équipe affiche les métriques par utilisateur :

211 

212* **Membres** : tous les utilisateurs qui se sont authentifiés à Claude Code. Les utilisateurs de clé API s'affichent par identifiant de clé, les utilisateurs OAuth s'affichent par adresse e-mail.

213* **Dépenses ce mois** : coûts totaux de l'API par utilisateur pour le mois en cours.

214* **Lignes ce mois** : total par utilisateur des lignes de code acceptées pour le mois en cours.

215 

216<Note>

217 Les chiffres de dépenses dans le tableau de bord Console sont des estimations à des fins analytiques. Pour les coûts réels, consultez votre page de facturation.

218</Note>

219 

220## Ressources connexes

221 

222* [Surveillance avec OpenTelemetry](/fr/monitoring-usage) : exportez les métriques et événements en temps réel vers votre pile d'observabilité

223* [Gérer les coûts efficacement](/fr/costs) : définissez les limites de dépenses et optimisez l'utilisation des tokens

224* [Permissions](/fr/permissions) : configurez les rôles et les permissions

authentication.md +155 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Authentification

6 

7> Connectez-vous à Claude Code et configurez l'authentification pour les particuliers, les équipes et les organisations.

8 

9Claude Code prend en charge plusieurs méthodes d'authentification selon votre configuration. Les utilisateurs individuels peuvent se connecter avec un compte Claude.ai, tandis que les équipes peuvent utiliser Claude for Teams ou Enterprise, la Claude Console, ou un fournisseur cloud comme Amazon Bedrock, Google Vertex AI ou Microsoft Foundry.

10 

11## Se connecter à Claude Code

12 

13Après [l'installation de Claude Code](/fr/setup#install-claude-code), exécutez `claude` dans votre terminal. Au premier lancement, Claude Code ouvre une fenêtre de navigateur pour vous permettre de vous connecter.

14 

15Si le navigateur ne s'ouvre pas automatiquement, appuyez sur `c` pour copier l'URL de connexion dans votre presse-papiers, puis collez-la dans votre navigateur.

16 

17Si votre navigateur affiche un code de connexion au lieu de vous rediriger après votre connexion, collez-le dans le terminal à l'invite `Paste code here if prompted`. Cela se produit lorsque le navigateur ne peut pas atteindre le serveur de rappel local de Claude Code, ce qui est courant dans WSL2, les sessions SSH et les conteneurs.

18 

19Vous pouvez vous authentifier avec l'un de ces types de compte :

20 

21* **Abonnement Claude Pro ou Max** : connectez-vous avec votre compte Claude.ai. Abonnez-vous sur [claude.com/pricing](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_pro_max).

22* **Claude for Teams ou Enterprise** : connectez-vous avec le compte Claude.ai que votre administrateur d'équipe vous a invité à utiliser.

23* **Claude Console** : connectez-vous avec vos identifiants Console. Votre administrateur doit vous avoir [invité](#claude-console-authentication) au préalable.

24* **Fournisseurs cloud** : si votre organisation utilise [Amazon Bedrock](/fr/amazon-bedrock), [Google Vertex AI](/fr/google-vertex-ai) ou [Microsoft Foundry](/fr/microsoft-foundry), définissez les variables d'environnement requises avant d'exécuter `claude`. Aucune connexion au navigateur n'est nécessaire.

25 

26Pour vous déconnecter et vous réauthentifier, tapez `/logout` à l'invite Claude Code.

27 

28Si vous avez des difficultés à vous connecter, consultez [dépannage de l'authentification](/fr/troubleshoot-install#login-and-authentication).

29 

30## Configurer l'authentification d'équipe

31 

32Pour les équipes et les organisations, vous pouvez configurer l'accès à Claude Code de l'une de ces façons :

33 

34* [Claude for Teams ou Enterprise](#claude-for-teams-or-enterprise), recommandé pour la plupart des équipes

35* [Claude Console](#claude-console-authentication)

36* [Amazon Bedrock](/fr/amazon-bedrock)

37* [Google Vertex AI](/fr/google-vertex-ai)

38* [Microsoft Foundry](/fr/microsoft-foundry)

39 

40### Claude for Teams ou Enterprise

41 

42[Claude for Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_teams#team-&-enterprise) et [Claude for Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_enterprise) offrent la meilleure expérience pour les organisations utilisant Claude Code. Les membres de l'équipe ont accès à la fois à Claude Code et à Claude sur le web avec facturation centralisée et gestion d'équipe.

43 

44* **Claude for Teams** : plan en libre-service avec fonctionnalités de collaboration, outils d'administration et gestion de la facturation. Idéal pour les petites équipes.

45* **Claude for Enterprise** : ajoute SSO, capture de domaine, permissions basées sur les rôles, API de conformité et paramètres de politique gérés pour les configurations Claude Code à l'échelle de l'organisation. Idéal pour les grandes organisations ayant des exigences en matière de sécurité et de conformité.

46 

47<Steps>

48 <Step title="S'abonner">

49 Abonnez-vous à [Claude for Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_teams_step#team-&-enterprise) ou contactez l'équipe commerciale pour [Claude for Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_enterprise_step).

50 </Step>

51 

52 <Step title="Inviter les membres de l'équipe">

53 Invitez les membres de l'équipe depuis le tableau de bord d'administration.

54 </Step>

55 

56 <Step title="Installer et se connecter">

57 Les membres de l'équipe installent Claude Code et se connectent avec leurs comptes Claude.ai.

58 </Step>

59</Steps>

60 

61### Authentification Claude Console

62 

63Pour les organisations qui préfèrent la facturation basée sur l'API, vous pouvez configurer l'accès via la Claude Console.

64 

65<Steps>

66 <Step title="Créer ou utiliser un compte Console">

67 Utilisez votre compte Claude Console existant ou créez-en un nouveau.

68 </Step>

69 

70 <Step title="Ajouter des utilisateurs">

71 Vous pouvez ajouter des utilisateurs par l'une ou l'autre méthode :

72 

73 * Inviter en masse des utilisateurs depuis la Console : Settings -> Members -> Invite

74 * [Configurer SSO](https://support.claude.com/en/articles/13132885-setting-up-single-sign-on-sso)

75 </Step>

76 

77 <Step title="Assigner des rôles">

78 Lors de l'invitation d'utilisateurs, assignez l'un des rôles suivants :

79 

80 * **Rôle Claude Code** : les utilisateurs ne peuvent créer que des clés API Claude Code

81 * **Rôle Developer** : les utilisateurs peuvent créer n'importe quel type de clé API

82 </Step>

83 

84 <Step title="Les utilisateurs complètent la configuration">

85 Chaque utilisateur invité doit :

86 

87 * Accepter l'invitation Console

88 * [Vérifier la configuration système](/fr/setup#system-requirements)

89 * [Installer Claude Code](/fr/setup#install-claude-code)

90 * Se connecter avec les identifiants du compte Console

91 </Step>

92</Steps>

93 

94### Authentification du fournisseur cloud

95 

96Pour les équipes utilisant Amazon Bedrock, Google Vertex AI ou Microsoft Foundry :

97 

98<Steps>

99 <Step title="Suivre la configuration du fournisseur">

100 Suivez la [documentation Bedrock](/fr/amazon-bedrock), la [documentation Vertex](/fr/google-vertex-ai) ou la [documentation Microsoft Foundry](/fr/microsoft-foundry).

101 </Step>

102 

103 <Step title="Distribuer la configuration">

104 Distribuez les variables d'environnement et les instructions pour générer les identifiants cloud à vos utilisateurs. En savoir plus sur la façon de [gérer la configuration ici](/fr/settings).

105 </Step>

106 

107 <Step title="Installer Claude Code">

108 Les utilisateurs peuvent [installer Claude Code](/fr/setup#install-claude-code).

109 </Step>

110</Steps>

111 

112## Gestion des identifiants

113 

114Claude Code gère de manière sécurisée vos identifiants d'authentification :

115 

116* **Emplacement de stockage** : sur macOS, les identifiants sont stockés dans le Keychain macOS chiffré. Sur Linux et Windows, les identifiants sont stockés dans `~/.claude/.credentials.json`, ou sous `$CLAUDE_CONFIG_DIR` si cette variable est définie. Sur Linux, le fichier est écrit avec le mode `0600` ; sur Windows, il hérite des contrôles d'accès de votre répertoire de profil utilisateur.

117* **Types d'authentification pris en charge** : identifiants Claude.ai, identifiants API Claude, Azure Auth, Bedrock Auth et Vertex Auth.

118* **Scripts d'identifiants personnalisés** : le paramètre [`apiKeyHelper`](/fr/settings#available-settings) peut être configuré pour exécuter un script shell qui retourne une clé API.

119* **Intervalles d'actualisation** : par défaut, `apiKeyHelper` est appelé après 5 minutes ou en réponse HTTP 401. Définissez la variable d'environnement `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` pour les intervalles d'actualisation personnalisés.

120* **Avis d'assistant lent** : si `apiKeyHelper` prend plus de 10 secondes pour retourner une clé, Claude Code affiche un avis d'avertissement dans la barre d'invite montrant le temps écoulé. Si vous voyez cet avis régulièrement, vérifiez si votre script d'identifiants peut être optimisé.

121 

122`apiKeyHelper`, `ANTHROPIC_API_KEY` et `ANTHROPIC_AUTH_TOKEN` s'appliquent uniquement aux sessions CLI de terminal. Claude Desktop et les sessions distantes utilisent OAuth exclusivement et n'appellent pas `apiKeyHelper` ni ne lisent les variables d'environnement de clé API.

123 

124### Ordre de priorité de l'authentification

125 

126Lorsque plusieurs identifiants sont présents, Claude Code en choisit un dans cet ordre :

127 

1281. Identifiants du fournisseur cloud, lorsque `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX` ou `CLAUDE_CODE_USE_FOUNDRY` est défini. Consultez [intégrations tierces](/fr/third-party-integrations) pour la configuration.

1292. Variable d'environnement `ANTHROPIC_AUTH_TOKEN`. Envoyée en tant qu'en-tête `Authorization: Bearer`. Utilisez ceci lors du routage via une [passerelle LLM ou proxy](/fr/llm-gateway) qui s'authentifie avec des jetons porteurs plutôt que des clés API Anthropic.

1303. Variable d'environnement `ANTHROPIC_API_KEY`. Envoyée en tant qu'en-tête `X-Api-Key`. Utilisez ceci pour l'accès direct à l'API Anthropic avec une clé de la [Claude Console](https://platform.claude.com). En mode interactif, vous êtes invité une fois à approuver ou refuser la clé, et votre choix est mémorisé. Pour le modifier ultérieurement, utilisez le bouton bascule « Use custom API key » dans `/config`. En mode non interactif (`-p`), la clé est toujours utilisée lorsqu'elle est présente.

1314. Sortie du script [`apiKeyHelper`](/fr/settings#available-settings). Utilisez ceci pour les identifiants dynamiques ou rotatifs, tels que les jetons de courte durée récupérés à partir d'un coffre-fort.

1325. Variable d'environnement `CLAUDE_CODE_OAUTH_TOKEN`. Un jeton OAuth de longue durée généré par [`claude setup-token`](#generate-a-long-lived-token). Utilisez ceci pour les pipelines CI et les scripts où la connexion au navigateur n'est pas disponible.

1336. Identifiants OAuth d'abonnement de `/login`. C'est la valeur par défaut pour les utilisateurs Claude Pro, Max, Team et Enterprise.

134 

135Si vous avez un abonnement Claude actif mais que vous avez également `ANTHROPIC_API_KEY` défini dans votre environnement, la clé API prend priorité une fois approuvée. Cela peut causer des échecs d'authentification si la clé appartient à une organisation désactivée ou expirée. Exécutez `unset ANTHROPIC_API_KEY` pour revenir à votre abonnement, et vérifiez `/status` pour confirmer quelle méthode est active.

136 

137[Claude Code sur le Web](/fr/claude-code-on-the-web) utilise toujours vos identifiants d'abonnement. `ANTHROPIC_API_KEY` et `ANTHROPIC_AUTH_TOKEN` dans l'environnement sandbox ne les remplacent pas.

138 

139### Générer un jeton de longue durée

140 

141Pour les pipelines CI, les scripts ou d'autres environnements où la connexion au navigateur interactif n'est pas disponible, générez un jeton OAuth d'un an avec `claude setup-token` :

142 

143```bash theme={null}

144claude setup-token

145```

146 

147La commande vous guide à travers l'autorisation OAuth et affiche un jeton dans le terminal. Elle ne sauvegarde le jeton nulle part ; copiez-le et définissez-le en tant que variable d'environnement `CLAUDE_CODE_OAUTH_TOKEN` partout où vous souhaitez vous authentifier :

148 

149```bash theme={null}

150export CLAUDE_CODE_OAUTH_TOKEN=your-token

151```

152 

153Ce jeton s'authentifie avec votre abonnement Claude et nécessite un plan Pro, Max, Team ou Enterprise. Il est limité à l'inférence uniquement et ne peut pas établir de sessions [Remote Control](/fr/remote-control).

154 

155[Le mode bare](/fr/headless#start-faster-with-bare-mode) ne lit pas `CLAUDE_CODE_OAUTH_TOKEN`. Si votre script passe `--bare`, authentifiez-vous avec `ANTHROPIC_API_KEY` ou un `apiKeyHelper` à la place.

auto-mode-config.md +178 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Configurer le mode auto

6 

7> Indiquez au classificateur du mode auto quels dépôts, buckets et domaines votre organisation approuve. Définissez le contexte d'environnement, remplacez les règles de blocage et d'autorisation par défaut, et inspectez votre configuration effective avec les sous-commandes CLI du mode auto.

8 

9[Le mode auto](/fr/permission-modes#eliminate-prompts-with-auto-mode) permet à Claude Code de s'exécuter sans invites de permission en acheminant chaque appel d'outil via un classificateur qui bloque tout ce qui est irréversible, destructeur ou destiné en dehors de votre environnement. Utilisez le bloc de paramètres `autoMode` pour indiquer à ce classificateur quels dépôts, buckets et domaines votre organisation approuve, afin qu'il cesse de bloquer les opérations internes courantes.

10 

11<Note>

12 Le mode auto est disponible sur les plans Max, Team, Enterprise et API via l'API Anthropic. Il n'est pas disponible sur Pro ni sur Bedrock, Vertex ou Foundry. Si Claude Code signale que le mode auto n'est pas disponible pour votre compte, consultez les [exigences complètes](/fr/permission-modes#eliminate-prompts-with-auto-mode), qui couvrent également les modèles pris en charge et l'activation par l'administrateur sur les plans Team et Enterprise.

13</Note>

14 

15Par défaut, le classificateur n'approuve que le répertoire de travail et les remotes configurées du dépôt actuel. Les actions comme pousser vers l'organisation de contrôle de source de votre entreprise ou écrire dans un bucket cloud d'équipe sont bloquées jusqu'à ce que vous les ajoutiez à `autoMode.environment`.

16 

17Pour savoir comment activer le mode auto et ce qu'il bloque par défaut, consultez [Modes de permission](/fr/permission-modes#eliminate-prompts-with-auto-mode). Cette page est la référence de configuration.

18 

19Cette page couvre comment :

20 

21* [Choisir où définir les règles](#where-the-classifier-reads-configuration) dans CLAUDE.md, les paramètres utilisateur et les paramètres gérés

22* [Définir l'infrastructure approuvée](#define-trusted-infrastructure) avec `autoMode.environment`

23* [Remplacer les règles de blocage et d'autorisation](#override-the-block-and-allow-rules) quand les valeurs par défaut ne correspondent pas à votre pipeline

24* [Inspecter votre configuration effective](#inspect-the-defaults-and-your-effective-config) avec les sous-commandes `claude auto-mode`

25* [Examiner les refus](#review-denials) pour savoir ce qu'il faut ajouter ensuite

26 

27## Où le classificateur lit la configuration

28 

29Le classificateur lit le même contenu [CLAUDE.md](/fr/memory) que Claude lui-même charge, donc une instruction comme « ne jamais forcer la poussée » dans le CLAUDE.md de votre projet guide à la fois Claude et le classificateur en même temps. Commencez par là pour les conventions de projet et les règles de comportement.

30 

31Pour les règles qui s'appliquent à plusieurs projets, comme l'infrastructure approuvée ou les règles de refus à l'échelle de l'organisation, utilisez le bloc de paramètres `autoMode`. Le classificateur lit `autoMode` à partir des portées suivantes :

32 

33| Portée | Fichier | Utiliser pour |

34| :-------------------------------- | :---------------------------------------------- | :---------------------------------------------------------- |

35| Un développeur | `~/.claude/settings.json` | Infrastructure approuvée personnelle |

36| Un projet, un développeur | `.claude/settings.local.json` | Buckets ou services approuvés par projet, gitignorés |

37| À l'échelle de l'organisation | [Paramètres gérés](/fr/server-managed-settings) | Infrastructure approuvée distribuée à tous les développeurs |

38| Drapeau `--settings` ou Agent SDK | JSON en ligne | Remplacements par invocation pour l'automatisation |

39 

40Le classificateur ne lit pas `autoMode` à partir des paramètres de projet partagés dans `.claude/settings.json`, donc un dépôt enregistré ne peut pas injecter ses propres règles d'autorisation.

41 

42Les entrées de chaque portée sont combinées. Un développeur peut étendre `environment`, `allow` et `soft_deny` avec des entrées personnelles mais ne peut pas supprimer les entrées que les paramètres gérés fournissent. Parce que les règles d'autorisation agissent comme des exceptions aux règles de blocage à l'intérieur du classificateur, une entrée `allow` ajoutée par un développeur peut remplacer une entrée `soft_deny` d'organisation : la combinaison est additive, pas une limite de politique stricte.

43 

44<Note>

45 Le classificateur est une deuxième porte qui s'exécute après le [système de permissions](/fr/permissions). Pour les actions qui ne doivent jamais s'exécuter indépendamment de l'intention de l'utilisateur ou de la configuration du classificateur, utilisez `permissions.deny` dans les paramètres gérés, qui bloque l'action avant que le classificateur ne soit consulté et ne peut pas être remplacée.

46</Note>

47 

48## Définir l'infrastructure approuvée

49 

50Pour la plupart des organisations, `autoMode.environment` est le seul champ que vous devez définir. Il indique au classificateur quels dépôts, buckets et domaines sont approuvés : le classificateur l'utilise pour décider ce que signifie « externe », donc toute destination non listée est une cible d'exfiltration potentielle.

51 

52La liste d'environnement par défaut approuve le dépôt de travail et ses remotes configurées. Pour ajouter vos propres entrées aux côtés de cette valeur par défaut, incluez la chaîne littérale `"$defaults"` dans le tableau. Les entrées par défaut sont insérées à cette position, donc vos entrées personnalisées peuvent aller avant ou après.

53 

54```json theme={null}

55{

56 "autoMode": {

57 "environment": [

58 "$defaults",

59 "Source control: github.example.com/acme-corp and all repos under it",

60 "Trusted cloud buckets: s3://acme-build-artifacts, gs://acme-ml-datasets",

61 "Trusted internal domains: *.corp.example.com, api.internal.example.com",

62 "Key internal services: Jenkins at ci.example.com, Artifactory at artifacts.example.com"

63 ]

64 }

65}

66```

67 

68Les entrées sont en prose, pas en regex ou en motifs d'outil. Le classificateur les lit comme des règles en langage naturel. Écrivez-les comme vous décririez votre infrastructure à un nouvel ingénieur. Une section d'environnement approfondie couvre :

69 

70* **Organisation** : le nom de votre entreprise et ce pour quoi Claude Code est principalement utilisé, comme le développement logiciel, l'automatisation de l'infrastructure ou l'ingénierie des données

71* **Contrôle de source** : chaque organisation GitHub, GitLab ou Bitbucket vers laquelle vos développeurs poussent

72* **Fournisseurs cloud et buckets approuvés** : noms de buckets ou préfixes que Claude devrait pouvoir lire et écrire

73* **Domaines internes approuvés** : noms d'hôtes pour les API, tableaux de bord et services à l'intérieur de votre réseau, comme `*.internal.example.com`

74* **Services internes clés** : CI, registres d'artefacts, index de packages internes, outils d'incident

75* **Contexte supplémentaire** : contraintes d'industrie réglementée, infrastructure multi-locataire ou exigences de conformité qui affectent ce que le classificateur devrait traiter comme risqué

76 

77Un modèle de démarrage utile : remplissez les champs entre crochets et supprimez les lignes qui ne s'appliquent pas.

78 

79```json theme={null}

80{

81 "autoMode": {

82 "environment": [

83 "$defaults",

84 "Organization: {COMPANY_NAME}. Primary use: {PRIMARY_USE_CASE, e.g. software development, infrastructure automation}",

85 "Source control: {SOURCE_CONTROL, e.g. GitHub org github.example.com/acme-corp}",

86 "Cloud provider(s): {CLOUD_PROVIDERS, e.g. AWS, GCP, Azure}",

87 "Trusted cloud buckets: {TRUSTED_BUCKETS, e.g. s3://acme-builds, gs://acme-datasets}",

88 "Trusted internal domains: {TRUSTED_DOMAINS, e.g. *.internal.example.com, api.example.com}",

89 "Key internal services: {SERVICES, e.g. Jenkins at ci.example.com, Artifactory at artifacts.example.com}",

90 "Additional context: {EXTRA, e.g. regulated industry, multi-tenant infrastructure, compliance requirements}"

91 ]

92 }

93}

94```

95 

96Plus le contexte que vous fournissez est spécifique, mieux le classificateur peut distinguer les opérations internes courantes des tentatives d'exfiltration.

97 

98Vous n'avez pas besoin de tout remplir à la fois. Un déploiement raisonnable : commencez par les valeurs par défaut et ajoutez votre organisation de contrôle de source et vos services internes clés, ce qui résout les faux positifs les plus courants comme pousser vers vos propres dépôts. Ajoutez ensuite les domaines approuvés et les buckets cloud. Remplissez le reste à mesure que les blocages surviennent.

99 

100## Remplacer les règles de blocage et d'autorisation

101 

102Deux champs supplémentaires vous permettent de remplacer les listes de règles intégrées du classificateur : `autoMode.soft_deny` contrôle ce qui est bloqué, et `autoMode.allow` contrôle quelles exceptions s'appliquent. Chacun est un tableau de descriptions en prose, lu comme des règles en langage naturel. Il n'y a pas de champ `autoMode.deny` ; pour bloquer dur une action indépendamment de l'intention, utilisez [`permissions.deny`](/fr/permissions), qui s'exécute avant le classificateur.

103 

104À l'intérieur du classificateur, la précédence fonctionne en trois niveaux :

105 

106* Les règles `soft_deny` bloquent d'abord

107* Les règles `allow` remplacent ensuite les blocages correspondants comme exceptions

108* L'intention explicite de l'utilisateur remplace les deux : si le message de l'utilisateur décrit directement et spécifiquement l'action exacte que Claude est sur le point de prendre, le classificateur l'autorise même quand une règle `soft_deny` correspond

109 

110Les demandes générales ne comptent pas comme une intention explicite. Demander à Claude de « nettoyer le dépôt » n'autorise pas la poussée forcée, mais demander à Claude de « forcer la poussée de cette branche » le fait.

111 

112Pour assouplir, ajoutez à `allow` quand le classificateur signale à plusieurs reprises un motif courant que les exceptions par défaut ne couvrent pas. Pour renforcer, ajoutez à `soft_deny` pour les risques spécifiques à votre environnement que les valeurs par défaut manquent. Pour conserver les règles intégrées tout en ajoutant les vôtres, incluez la chaîne littérale `"$defaults"` dans le tableau. Les règles par défaut sont insérées à cette position, donc vos règles personnalisées peuvent aller avant ou après elles, et vous continuez à hériter des mises à jour à mesure que la liste intégrée change entre les versions.

113 

114```json theme={null}

115{

116 "autoMode": {

117 "environment": [

118 "$defaults",

119 "Source control: github.example.com/acme-corp and all repos under it"

120 ],

121 "allow": [

122 "$defaults",

123 "Deploying to the staging namespace is allowed: staging is isolated from production and resets nightly",

124 "Writing to s3://acme-scratch/ is allowed: ephemeral bucket with a 7-day lifecycle policy"

125 ],

126 "soft_deny": [

127 "$defaults",

128 "Never run database migrations outside the migrations CLI, even against dev databases",

129 "Never modify files under infra/terraform/prod/: production infrastructure changes go through the review workflow"

130 ]

131 }

132}

133```

134 

135<Danger>

136 La définition de l'un de `environment`, `allow` ou `soft_deny` sans `"$defaults"` remplace la liste par défaut entière pour cette section. Si vous définissez `soft_deny` avec une seule entrée et omettez `"$defaults"`, chaque règle de blocage intégrée est rejetée : poussée forcée, exfiltration de données, `curl | bash`, déploiements en production et toutes les autres règles de blocage par défaut deviennent autorisées. Omettez `"$defaults"` uniquement quand vous avez l'intention de prendre la responsabilité complète de la liste. Dans ce cas, exécutez `claude auto-mode defaults` pour imprimer les règles intégrées, copiez-les dans votre fichier de paramètres, puis examinez chaque règle par rapport à votre propre pipeline et tolérance au risque.

137</Danger>

138 

139Chaque section est évaluée indépendamment, donc la définition de `environment` seule laisse les listes `allow` et `soft_deny` par défaut intactes.

140 

141## Inspecter les valeurs par défaut et votre configuration effective

142 

143Trois sous-commandes CLI vous aident à inspecter et valider votre configuration.

144 

145Imprimez les règles `environment`, `allow` et `soft_deny` intégrées en JSON :

146 

147```bash theme={null}

148claude auto-mode defaults

149```

150 

151Imprimez ce que le classificateur utilise réellement en JSON, avec vos paramètres appliqués où définis et les valeurs par défaut sinon :

152 

153```bash theme={null}

154claude auto-mode config

155```

156 

157Obtenez des commentaires IA sur vos règles `allow` et `soft_deny` personnalisées :

158 

159```bash theme={null}

160claude auto-mode critique

161```

162 

163Exécutez `claude auto-mode config` après avoir enregistré vos paramètres pour confirmer que les règles effectives sont ce que vous attendez, avec `"$defaults"` développé en place. Si vous avez écrit des règles personnalisées, `claude auto-mode critique` les examine et signale les entrées qui sont ambiguës, redondantes ou susceptibles de causer des faux positifs. Si vous devez supprimer ou réécrire une règle intégrée plutôt que d'en ajouter une à côté, enregistrez la sortie de `claude auto-mode defaults` dans un fichier, modifiez les listes, et collez le résultat dans votre fichier de paramètres à la place de `"$defaults"`.

164 

165## Examiner les refus

166 

167Quand le mode auto refuse un appel d'outil, le refus est enregistré dans `/permissions` sous l'onglet Récemment refusé. Appuyez sur `r` sur une action refusée pour la marquer pour réessai : quand vous quittez la boîte de dialogue, Claude Code envoie un message indiquant au modèle qu'il peut réessayer cet appel d'outil et reprend la conversation.

168 

169Les refus répétés pour la même destination signifient généralement que le classificateur manque de contexte. Ajoutez cette destination à `autoMode.environment`, puis exécutez `claude auto-mode config` pour confirmer que cela a pris effet.

170 

171Pour réagir aux refus par programmation, utilisez le [hook `PermissionDenied`](/fr/hooks#permissiondenied).

172 

173## Voir aussi

174 

175* [Modes de permission](/fr/permission-modes#eliminate-prompts-with-auto-mode) : ce qu'est le mode auto, ce qu'il bloque par défaut et comment l'activer

176* [Paramètres gérés](/fr/server-managed-settings) : déployez la configuration `autoMode` dans votre organisation

177* [Permissions](/fr/permissions) : règles d'autorisation, de demande et de refus qui s'appliquent avant l'exécution du classificateur

178* [Paramètres](/fr/settings) : la référence complète des paramètres, y compris la clé `autoMode`

best-practices.md +583 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Meilleures pratiques pour Claude Code

6 

7> Conseils et modèles pour tirer le meilleur parti de Claude Code, de la configuration de votre environnement à la mise à l'échelle sur plusieurs sessions parallèles.

8 

9Claude Code est un environnement de codage agentique. Contrairement à un chatbot qui répond aux questions et attend, Claude Code peut lire vos fichiers, exécuter des commandes, apporter des modifications et travailler de manière autonome sur les problèmes pendant que vous regardez, redirigez ou vous éloignez complètement.

10 

11Cela change votre façon de travailler. Au lieu d'écrire du code vous-même et de demander à Claude de le réviser, vous décrivez ce que vous voulez et Claude détermine comment le construire. Claude explore, planifie et implémente.

12 

13Mais cette autonomie s'accompagne toujours d'une courbe d'apprentissage. Claude fonctionne dans certaines contraintes que vous devez comprendre.

14 

15Ce guide couvre les modèles qui se sont avérés efficaces dans les équipes internes d'Anthropic et pour les ingénieurs utilisant Claude Code sur diverses bases de code, langages et environnements. Pour comprendre comment la boucle agentique fonctionne sous le capot, consultez [Comment fonctionne Claude Code](/fr/how-claude-code-works).

16 

17***

18 

19La plupart des meilleures pratiques sont basées sur une contrainte : la fenêtre de contexte de Claude se remplit rapidement et les performances se dégradent à mesure qu'elle se remplit.

20 

21La fenêtre de contexte de Claude contient l'intégralité de votre conversation, y compris chaque message, chaque fichier que Claude lit et chaque sortie de commande. Cependant, cela peut se remplir rapidement. Une seule session de débogage ou exploration de base de code peut générer et consommer des dizaines de milliers de tokens.

22 

23Cela importe car les performances des LLM se dégradent à mesure que le contexte se remplit. Lorsque la fenêtre de contexte est presque pleine, Claude peut commencer à « oublier » les instructions antérieures ou faire plus d'erreurs. La fenêtre de contexte est la ressource la plus importante à gérer. Pour voir comment une session se remplit en pratique, [regardez une démonstration interactive](/fr/context-window) de ce qui se charge au démarrage et ce que chaque lecture de fichier coûte. Suivez l'utilisation du contexte en continu avec une [ligne d'état personnalisée](/fr/statusline), et consultez [Réduire l'utilisation des tokens](/fr/costs#reduce-token-usage) pour des stratégies de réduction de l'utilisation des tokens.

24 

25***

26 

27## Donnez à Claude un moyen de vérifier son travail

28 

29<Tip>

30 Incluez des tests, des captures d'écran ou des résultats attendus pour que Claude puisse se vérifier lui-même. C'est la chose la plus importante que vous puissiez faire.

31</Tip>

32 

33Claude fonctionne beaucoup mieux lorsqu'il peut vérifier son propre travail, comme exécuter des tests, comparer des captures d'écran et valider les résultats.

34 

35Sans critères de succès clairs, il pourrait produire quelque chose qui semble correct mais qui ne fonctionne pas réellement. Vous devenez la seule boucle de rétroaction, et chaque erreur nécessite votre attention.

36 

37| Stratégie | Avant | Après |

38| ---------------------------------------------------------------------- | ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

39| **Fournir des critères de vérification** | *« implémenter une fonction qui valide les adresses e-mail »* | *« écrire une fonction validateEmail. exemples de cas de test : [user@example.com](mailto:user@example.com) est vrai, invalid est faux, [user@.com](mailto:user@.com) est faux. exécuter les tests après l'implémentation »* |

40| **Vérifier les modifications de l'interface utilisateur visuellement** | *« rendre le tableau de bord plus beau »* | *« \[coller la capture d'écran] implémenter cette conception. prendre une capture d'écran du résultat et la comparer à l'original. lister les différences et les corriger »* |

41| **Traiter les causes profondes, pas les symptômes** | *« la compilation échoue »* | *« la compilation échoue avec cette erreur : \[coller l'erreur]. la corriger et vérifier que la compilation réussit. traiter la cause profonde, ne pas supprimer l'erreur »* |

42 

43Les modifications de l'interface utilisateur peuvent être vérifiées à l'aide de l'[extension Claude dans Chrome](/fr/chrome). Elle ouvre de nouveaux onglets dans votre navigateur, teste l'interface utilisateur et itère jusqu'à ce que le code fonctionne.

44 

45Votre vérification peut également être une suite de tests, un linter ou une commande Bash qui vérifie la sortie. Investissez pour rendre votre vérification solide.

46 

47***

48 

49## Explorez d'abord, puis planifiez, puis codez

50 

51<Tip>

52 Séparez la recherche et la planification de l'implémentation pour éviter de résoudre le mauvais problème.

53</Tip>

54 

55Laisser Claude sauter directement au codage peut produire du code qui résout le mauvais problème. Utilisez [Plan Mode](/fr/common-workflows#use-plan-mode-for-safe-code-analysis) pour séparer l'exploration de l'exécution.

56 

57Le flux de travail recommandé comporte quatre phases :

58 

59<Steps>

60 <Step title="Explorez">

61 Entrez en Plan Mode. Claude lit les fichiers et répond aux questions sans apporter de modifications.

62 

63 ```txt claude (Plan Mode) theme={null}

64 read /src/auth and understand how we handle sessions and login.

65 also look at how we manage environment variables for secrets.

66 ```

67 </Step>

68 

69 <Step title="Planifiez">

70 Demandez à Claude de créer un plan d'implémentation détaillé.

71 

72 ```txt claude (Plan Mode) theme={null}

73 I want to add Google OAuth. What files need to change?

74 What's the session flow? Create a plan.

75 ```

76 

77 Appuyez sur `Ctrl+G` pour ouvrir le plan dans votre éditeur de texte pour une édition directe avant que Claude ne procède.

78 </Step>

79 

80 <Step title="Implémentez">

81 Revenez au Mode Normal et laissez Claude coder, en vérifiant par rapport à son plan.

82 

83 ```txt claude (Normal Mode) theme={null}

84 implement the OAuth flow from your plan. write tests for the

85 callback handler, run the test suite and fix any failures.

86 ```

87 </Step>

88 

89 <Step title="Validez">

90 Demandez à Claude de valider avec un message descriptif et de créer une PR.

91 

92 ```txt claude (Normal Mode) theme={null}

93 commit with a descriptive message and open a PR

94 ```

95 </Step>

96</Steps>

97 

98<Callout>

99 Plan Mode est utile, mais ajoute également des frais généraux.

100 

101 Pour les tâches où la portée est claire et la correction est petite (comme corriger une faute de frappe, ajouter une ligne de journal ou renommer une variable), demandez à Claude de le faire directement.

102 

103 La planification est plus utile lorsque vous êtes incertain de l'approche, lorsque la modification modifie plusieurs fichiers ou lorsque vous n'êtes pas familier avec le code en cours de modification. Si vous pouviez décrire le diff en une phrase, ignorez le plan.

104</Callout>

105 

106***

107 

108## Fournissez un contexte spécifique dans vos invites

109 

110<Tip>

111 Plus vos instructions sont précises, moins vous aurez besoin de corrections.

112</Tip>

113 

114Claude peut déduire l'intention, mais il ne peut pas lire dans vos pensées. Référencez des fichiers spécifiques, mentionnez les contraintes et pointez vers des modèles d'exemple.

115 

116| Stratégie | Avant | Après |

117| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

118| **Délimitez la tâche.** Spécifiez quel fichier, quel scénario et les préférences de test. | *« ajouter des tests pour foo.py »* | *« écrire un test pour foo.py couvrant le cas limite où l'utilisateur est déconnecté. éviter les mocks. »* |

119| **Pointez vers les sources.** Dirigez Claude vers la source qui peut répondre à une question. | *« pourquoi ExecutionFactory a-t-il une API aussi bizarre ? »* | *« parcourir l'historique git d'ExecutionFactory et résumer comment son API en est venue à être »* |

120| **Référencez les modèles existants.** Pointez Claude vers les modèles de votre base de code. | *« ajouter un widget calendrier »* | *« regarder comment les widgets existants sont implémentés sur la page d'accueil pour comprendre les modèles. HotDogWidget.php est un bon exemple. suivre le modèle pour implémenter un nouveau widget calendrier qui permet à l'utilisateur de sélectionner un mois et de paginer vers l'avant/l'arrière pour choisir une année. construire à partir de zéro sans bibliothèques autres que celles déjà utilisées dans la base de code. »* |

121| **Décrivez le symptôme.** Fournissez le symptôme, l'emplacement probable et ce que « corrigé » signifie. | *« corriger le bug de connexion »* | *« les utilisateurs signalent que la connexion échoue après l'expiration de la session. vérifier le flux d'authentification dans src/auth/, en particulier l'actualisation des tokens. écrire un test défaillant qui reproduit le problème, puis le corriger »* |

122 

123Les invites vagues peuvent être utiles lorsque vous explorez et que vous pouvez vous permettre de corriger la trajectoire. Une invite comme `« qu'amélioreriez-vous dans ce fichier ? »` peut révéler des choses auxquelles vous n'auriez pas pensé à demander.

124 

125### Fournissez du contenu riche

126 

127<Tip>

128 Utilisez `@` pour référencer des fichiers, coller des captures d'écran/images ou canaliser les données directement.

129</Tip>

130 

131Vous pouvez fournir des données riches à Claude de plusieurs façons :

132 

133* **Référencez les fichiers avec `@`** au lieu de décrire où le code se trouve. Claude lit le fichier avant de répondre.

134* **Collez les images directement**. Copiez/collez ou glissez-déposez les images dans l'invite.

135* **Donnez des URL** pour la documentation et les références API. Utilisez `/permissions` pour autoriser les domaines fréquemment utilisés.

136* **Canalisez les données** en exécutant `cat error.log | claude` pour envoyer le contenu du fichier directement.

137* **Laissez Claude récupérer ce dont il a besoin**. Dites à Claude de tirer le contexte lui-même en utilisant des commandes Bash, des outils MCP ou en lisant des fichiers.

138 

139***

140 

141## Configurez votre environnement

142 

143Quelques étapes de configuration rendent Claude Code beaucoup plus efficace dans toutes vos sessions. Pour un aperçu complet des fonctionnalités d'extension et du moment d'utiliser chacune, consultez [Étendre Claude Code](/fr/features-overview).

144 

145### Écrivez un CLAUDE.md efficace

146 

147<Tip>

148 Exécutez `/init` pour générer un fichier CLAUDE.md de démarrage basé sur la structure actuelle de votre projet, puis affinez au fil du temps.

149</Tip>

150 

151CLAUDE.md est un fichier spécial que Claude lit au début de chaque conversation. Incluez des commandes Bash, le style de code et les règles de flux de travail. Cela donne à Claude un contexte persistant qu'il ne peut pas déduire du code seul.

152 

153La commande `/init` analyse votre base de code pour détecter les systèmes de construction, les frameworks de test et les modèles de code, vous donnant une base solide à affiner.

154 

155Il n'y a pas de format requis pour les fichiers CLAUDE.md, mais gardez-le court et lisible par l'homme. Par exemple :

156 

157```markdown CLAUDE.md theme={null}

158# Code style

159- Use ES modules (import/export) syntax, not CommonJS (require)

160- Destructure imports when possible (eg. import { foo } from 'bar')

161 

162# Workflow

163- Be sure to typecheck when you're done making a series of code changes

164- Prefer running single tests, and not the whole test suite, for performance

165```

166 

167CLAUDE.md est chargé à chaque session, donc incluez uniquement les choses qui s'appliquent largement. Pour les connaissances de domaine ou les flux de travail qui ne sont pertinents que parfois, utilisez [skills](/fr/skills) à la place. Claude les charge à la demande sans surcharger chaque conversation.

168 

169Gardez-le concis. Pour chaque ligne, demandez-vous : *« Supprimer cela causerait-il à Claude de faire des erreurs ? »* Si non, supprimez-le. Les fichiers CLAUDE.md gonflés font que Claude ignore vos instructions réelles !

170 

171| ✅ Inclure | ❌ Exclure |

172| ----------------------------------------------------------------------------- | ----------------------------------------------------------- |

173| Commandes Bash que Claude ne peut pas deviner | Tout ce que Claude peut déduire en lisant le code |

174| Règles de style de code qui diffèrent des valeurs par défaut | Conventions de langage standard que Claude connaît déjà |

175| Instructions de test et exécuteurs de test préférés | Documentation API détaillée (lien vers les docs à la place) |

176| Étiquette du référentiel (nommage des branches, conventions PR) | Informations qui changent fréquemment |

177| Décisions architecturales spécifiques à votre projet | Explications longues ou tutoriels |

178| Particularités de l'environnement de développement (variables d'env requises) | Pratiques évidentes comme « écrire du code propre » |

179| Pièges courants ou comportements non évidents | Descriptions du code fichier par fichier |

180 

181Si Claude continue à faire quelque chose que vous ne voulez pas malgré une règle contre cela, le fichier est probablement trop long et la règle se perd. Si Claude vous pose des questions qui sont répondues dans CLAUDE.md, la formulation pourrait être ambiguë. Traitez CLAUDE.md comme du code : révisez-le lorsque les choses vont mal, élaguez-le régulièrement et testez les modifications en observant si le comportement de Claude change réellement.

182 

183Vous pouvez affiner les instructions en ajoutant de l'emphase (par exemple, « IMPORTANT » ou « VOUS DEVEZ ») pour améliorer l'adhérence. Vérifiez CLAUDE.md dans git pour que votre équipe puisse contribuer. Le fichier augmente en valeur au fil du temps.

184 

185Les fichiers CLAUDE.md peuvent importer des fichiers supplémentaires en utilisant la syntaxe `@path/to/import` :

186 

187```markdown CLAUDE.md theme={null}

188See @README.md for project overview and @package.json for available npm commands.

189 

190# Additional Instructions

191- Git workflow: @docs/git-instructions.md

192- Personal overrides: @~/.claude/my-project-instructions.md

193```

194 

195Vous pouvez placer les fichiers CLAUDE.md dans plusieurs emplacements :

196 

197* **Dossier personnel (`~/.claude/CLAUDE.md`)** : s'applique à toutes les sessions Claude

198* **Racine du projet (`./CLAUDE.md`)** : vérifier dans git pour partager avec votre équipe

199* **Racine du projet (`./CLAUDE.local.md`)** : notes personnelles spécifiques au projet ; ajoutez ce fichier à votre `.gitignore` pour qu'il ne soit pas partagé avec votre équipe

200* **Répertoires parents** : utile pour les monorepos où `root/CLAUDE.md` et `root/foo/CLAUDE.md` sont extraits automatiquement

201* **Répertoires enfants** : Claude extrait les fichiers CLAUDE.md enfants à la demande lorsqu'il travaille avec des fichiers dans ces répertoires

202 

203### Configurez les permissions

204 

205<Tip>

206 Utilisez [mode auto](/fr/permission-modes#eliminate-prompts-with-auto-mode) pour laisser un classificateur gérer les approbations, `/permissions` pour autoriser les commandes spécifiques, ou `/sandbox` pour l'isolation au niveau du système d'exploitation. Chacun réduit les interruptions tout en vous gardant en contrôle.

207</Tip>

208 

209Par défaut, Claude Code demande une permission pour les actions qui pourraient modifier votre système : écritures de fichiers, commandes Bash, outils MCP, etc. C'est sûr mais fastidieux. Après la dixième approbation, vous ne révisez vraiment plus, vous cliquez simplement. Il y a trois façons de réduire ces interruptions :

210 

211* **Mode auto** : un modèle classificateur séparé examine les commandes et bloque uniquement ce qui semble risqué : escalade de portée, infrastructure inconnue ou actions motivées par du contenu hostile. Meilleur lorsque vous faites confiance à la direction générale d'une tâche mais que vous ne voulez pas cliquer à chaque étape

212* **Listes blanches de permissions** : permettre des outils spécifiques que vous savez être sûrs, comme `npm run lint` ou `git commit`

213* **Sandboxing** : activer l'isolation au niveau du système d'exploitation qui restreint l'accès au système de fichiers et au réseau, permettant à Claude de travailler plus librement dans des limites définies

214 

215Lisez plus sur [les modes de permission](/fr/permission-modes), [les règles de permission](/fr/permissions) et [le sandboxing](/fr/sandboxing).

216 

217### Utilisez les outils CLI

218 

219<Tip>

220 Dites à Claude Code d'utiliser les outils CLI comme `gh`, `aws`, `gcloud` et `sentry-cli` lors de l'interaction avec les services externes.

221</Tip>

222 

223Les outils CLI sont le moyen le plus efficace en contexte d'interagir avec les services externes. Si vous utilisez GitHub, installez le CLI `gh`. Claude sait comment l'utiliser pour créer des problèmes, ouvrir des demandes de tirage et lire les commentaires. Sans `gh`, Claude peut toujours utiliser l'API GitHub, mais les demandes non authentifiées atteignent souvent les limites de débit.

224 

225Claude est également efficace pour apprendre les outils CLI qu'il ne connaît pas déjà. Essayez des invites comme `Utilisez 'foo-cli-tool --help' pour en savoir plus sur l'outil foo, puis utilisez-le pour résoudre A, B, C.`

226 

227### Connectez les serveurs MCP

228 

229<Tip>

230 Exécutez `claude mcp add` pour connecter les outils externes comme Notion, Figma ou votre base de données.

231</Tip>

232 

233Avec les [serveurs MCP](/fr/mcp), vous pouvez demander à Claude d'implémenter des fonctionnalités à partir de suivi de problèmes, interroger des bases de données, analyser les données de surveillance, intégrer les conceptions de Figma et automatiser les flux de travail.

234 

235### Configurez les hooks

236 

237<Tip>

238 Utilisez les hooks pour les actions qui doivent se produire à chaque fois sans exception.

239</Tip>

240 

241Les [hooks](/fr/hooks-guide) exécutent automatiquement les scripts à des points spécifiques du flux de travail de Claude. Contrairement aux instructions CLAUDE.md qui sont consultatives, les hooks sont déterministes et garantissent que l'action se produit.

242 

243Claude peut écrire des hooks pour vous. Essayez des invites comme *« Écrire un hook qui exécute eslint après chaque édition de fichier »* ou *« Écrire un hook qui bloque les écritures dans le dossier migrations. »* Modifiez `.claude/settings.json` directement pour configurer les hooks à la main, et exécutez `/hooks` pour parcourir ce qui est configuré.

244 

245### Créez des skills

246 

247<Tip>

248 Créez des fichiers `SKILL.md` dans `.claude/skills/` pour donner à Claude des connaissances de domaine et des flux de travail réutilisables.

249</Tip>

250 

251Les [skills](/fr/skills) étendent les connaissances de Claude avec des informations spécifiques à votre projet, équipe ou domaine. Claude les applique automatiquement lorsqu'elles sont pertinentes, ou vous pouvez les invoquer directement avec `/skill-name`.

252 

253Créez une skill en ajoutant un répertoire avec un `SKILL.md` à `.claude/skills/` :

254 

255```markdown .claude/skills/api-conventions/SKILL.md theme={null}

256---

257name: api-conventions

258description: REST API design conventions for our services

259---

260# API Conventions

261- Use kebab-case for URL paths

262- Use camelCase for JSON properties

263- Always include pagination for list endpoints

264- Version APIs in the URL path (/v1/, /v2/)

265```

266 

267Les skills peuvent également définir des flux de travail réutilisables que vous invoquez directement :

268 

269```markdown .claude/skills/fix-issue/SKILL.md theme={null}

270---

271name: fix-issue

272description: Fix a GitHub issue

273disable-model-invocation: true

274---

275Analyze and fix the GitHub issue: $ARGUMENTS.

276 

2771. Use `gh issue view` to get the issue details

2782. Understand the problem described in the issue

2793. Search the codebase for relevant files

2804. Implement the necessary changes to fix the issue

2815. Write and run tests to verify the fix

2826. Ensure code passes linting and type checking

2837. Create a descriptive commit message

2848. Push and create a PR

285```

286 

287Exécutez `/fix-issue 1234` pour l'invoquer. Utilisez `disable-model-invocation: true` pour les flux de travail avec des effets secondaires que vous souhaitez déclencher manuellement.

288 

289### Créez des subagents personnalisés

290 

291<Tip>

292 Définissez des assistants spécialisés dans `.claude/agents/` que Claude peut déléguer pour les tâches isolées.

293</Tip>

294 

295Les [subagents](/fr/sub-agents) s'exécutent dans leur propre contexte avec leur propre ensemble d'outils autorisés. Ils sont utiles pour les tâches qui lisent de nombreux fichiers ou qui ont besoin d'une attention spécialisée sans encombrer votre conversation principale.

296 

297```markdown .claude/agents/security-reviewer.md theme={null}

298---

299name: security-reviewer

300description: Reviews code for security vulnerabilities

301tools: Read, Grep, Glob, Bash

302model: opus

303---

304You are a senior security engineer. Review code for:

305- Injection vulnerabilities (SQL, XSS, command injection)

306- Authentication and authorization flaws

307- Secrets or credentials in code

308- Insecure data handling

309 

310Provide specific line references and suggested fixes.

311```

312 

313Dites à Claude d'utiliser les subagents explicitement : *« Utilisez un subagent pour réviser ce code pour les problèmes de sécurité. »*

314 

315### Installez les plugins

316 

317<Tip>

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

319</Tip>

320 

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

322 

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

324 

325***

326 

327## Communiquez efficacement

328 

329La façon dont vous communiquez avec Claude Code a un impact significatif sur la qualité des résultats.

330 

331### Posez des questions sur la base de code

332 

333<Tip>

334 Posez à Claude les questions que vous poseriez à un ingénieur senior.

335</Tip>

336 

337Lors de l'intégration à une nouvelle base de code, utilisez Claude Code pour l'apprentissage et l'exploration. Vous pouvez poser à Claude les mêmes types de questions que vous poseriez à un autre ingénieur :

338 

339* Comment fonctionne la journalisation ?

340* Comment créer un nouveau point de terminaison API ?

341* Que fait `async move { ... }` à la ligne 134 de `foo.rs` ?

342* Quels cas limites `CustomerOnboardingFlowImpl` gère-t-il ?

343* Pourquoi ce code appelle-t-il `foo()` au lieu de `bar()` à la ligne 333 ?

344 

345Utiliser Claude Code de cette façon est un flux de travail d'intégration efficace, améliorant le temps de montée en charge et réduisant la charge sur les autres ingénieurs. Aucune invite spéciale requise : posez les questions directement.

346 

347### Laissez Claude vous interviewer

348 

349<Tip>

350 Pour les fonctionnalités plus grandes, laissez Claude vous interviewer d'abord. Commencez par une invite minimale et demandez à Claude de vous interviewer en utilisant l'outil `AskUserQuestion`.

351</Tip>

352 

353Claude pose des questions sur les choses que vous n'auriez peut-être pas considérées, y compris l'implémentation technique, l'interface utilisateur/UX, les cas limites et les compromis.

354 

355```text theme={null}

356I want to build [brief description]. Interview me in detail using the AskUserQuestion tool.

357 

358Ask about technical implementation, UI/UX, edge cases, concerns, and tradeoffs. Don't ask obvious questions, dig into the hard parts I might not have considered.

359 

360Keep interviewing until we've covered everything, then write a complete spec to SPEC.md.

361```

362 

363Une fois la spécification complète, démarrez une nouvelle session pour l'exécuter. La nouvelle session a un contexte propre entièrement axé sur l'implémentation, et vous avez une spécification écrite à référencer.

364 

365***

366 

367## Gérez votre session

368 

369Les conversations sont persistantes et réversibles. Utilisez cela à votre avantage !

370 

371### Corrigez la trajectoire tôt et souvent

372 

373<Tip>

374 Corrigez Claude dès que vous remarquez qu'il s'écarte de la bonne voie.

375</Tip>

376 

377Les meilleurs résultats proviennent de boucles de rétroaction serrées. Bien que Claude résolve occasionnellement les problèmes parfaitement à la première tentative, le corriger rapidement produit généralement de meilleures solutions plus rapidement.

378 

379* **`Esc`** : arrêtez Claude en pleine action avec la touche `Esc`. Le contexte est préservé, vous pouvez donc rediriger.

380* **`Esc + Esc` ou `/rewind`** : appuyez sur `Esc` deux fois ou exécutez `/rewind` pour ouvrir le menu de rembobinage et restaurer la conversation et l'état du code précédents, ou résumer à partir d'un message sélectionné.

381* **`« Annuler cela »`** : demandez à Claude d'annuler ses modifications.

382* **`/clear`** : réinitialiser le contexte entre les tâches non liées. Les sessions longues avec un contexte non pertinent peuvent réduire les performances.

383 

384Si vous avez corrigé Claude plus de deux fois sur le même problème dans une session, le contexte est encombré d'approches échouées. Exécutez `/clear` et recommencez avec une invite plus spécifique qui incorpore ce que vous avez appris. Une session propre avec une meilleure invite surpasse presque toujours une session longue avec des corrections accumulées.

385 

386### Gérez le contexte agressivement

387 

388<Tip>

389 Exécutez `/clear` entre les tâches non liées pour réinitialiser le contexte.

390</Tip>

391 

392Claude Code compacte automatiquement l'historique de conversation lorsque vous approchez des limites de contexte, ce qui préserve le code et les décisions importants tout en libérant de l'espace.

393 

394Pendant les sessions longues, la fenêtre de contexte de Claude peut se remplir de conversations non pertinentes, de contenu de fichiers et de commandes. Cela peut réduire les performances et parfois distraire Claude.

395 

396* Utilisez `/clear` fréquemment entre les tâches pour réinitialiser complètement la fenêtre de contexte

397* Lorsque le compactage automatique se déclenche, Claude résume ce qui importe le plus, y compris les modèles de code, les états de fichiers et les décisions clés

398* Pour plus de contrôle, exécutez `/compact <instructions>`, comme `/compact Focus on the API changes`

399* Pour compacter uniquement une partie de la conversation, utilisez `Esc + Esc` ou `/rewind`, sélectionnez un point de contrôle de message et choisissez **Summarize from here**. Cela condense les messages à partir de ce point tout en gardant le contexte antérieur intact.

400* Personnalisez le comportement de compactage dans CLAUDE.md avec des instructions comme `« Lors du compactage, toujours préserver la liste complète des fichiers modifiés et toutes les commandes de test »` pour assurer que le contexte critique survit à la résumé

401* Pour les questions rapides qui n'ont pas besoin de rester en contexte, utilisez [`/btw`](/fr/interactive-mode#side-questions-with-btw). La réponse apparaît dans une superposition rejetable et n'entre jamais dans l'historique de conversation, vous pouvez donc vérifier un détail sans augmenter le contexte.

402 

403### Utilisez les subagents pour l'investigation

404 

405<Tip>

406 Déléguez la recherche avec `« utiliser les subagents pour enquêter sur X »`. Ils explorent dans un contexte séparé, gardant votre conversation principale propre pour l'implémentation.

407</Tip>

408 

409Puisque le contexte est votre contrainte fondamentale, les subagents sont l'un des outils les plus puissants disponibles. Lorsque Claude enquête sur une base de code, il lit de nombreux fichiers, qui consomment tous votre contexte. Les subagents s'exécutent dans des fenêtres de contexte séparées et rapportent les résumés :

410 

411```text theme={null}

412Use subagents to investigate how our authentication system handles token

413refresh, and whether we have any existing OAuth utilities I should reuse.

414```

415 

416Le subagent explore la base de code, lit les fichiers pertinents et rapporte les résultats, tout sans encombrer votre conversation principale.

417 

418Vous pouvez également utiliser les subagents pour la vérification après que Claude implémente quelque chose :

419 

420```text theme={null}

421use a subagent to review this code for edge cases

422```

423 

424### Rembobinez avec des points de contrôle

425 

426<Tip>

427 Chaque action que Claude fait crée un point de contrôle. Vous pouvez restaurer la conversation, le code ou les deux à n'importe quel point de contrôle précédent.

428</Tip>

429 

430Claude crée automatiquement des points de contrôle avant les modifications. Appuyez deux fois sur `Escape` ou exécutez `/rewind` pour ouvrir le menu de rembobinage. Vous pouvez restaurer la conversation uniquement, restaurer le code uniquement, restaurer les deux ou résumer à partir d'un message sélectionné. Consultez [Checkpointing](/fr/checkpointing) pour plus de détails.

431 

432Au lieu de planifier soigneusement chaque mouvement, vous pouvez dire à Claude d'essayer quelque chose de risqué. Si cela ne fonctionne pas, rembobinez et essayez une approche différente. Les points de contrôle persistent entre les sessions, vous pouvez donc fermer votre terminal et toujours rembobiner plus tard.

433 

434<Warning>

435 Les points de contrôle ne suivent que les modifications apportées *par Claude*, pas les processus externes. Ce n'est pas un remplacement pour git.

436</Warning>

437 

438### Reprenez les conversations

439 

440<Tip>

441 Exécutez `claude --continue` pour reprendre là où vous vous êtes arrêté, ou `--resume` pour choisir parmi les sessions récentes.

442</Tip>

443 

444Claude Code enregistre les conversations localement. Lorsqu'une tâche s'étend sur plusieurs sessions, vous n'avez pas à réexpliquer le contexte :

445 

446```bash theme={null}

447claude --continue # Resume the most recent conversation

448claude --resume # Select from recent conversations

449```

450 

451Utilisez `/rename` pour donner aux sessions des noms descriptifs comme `« oauth-migration »` ou `« debugging-memory-leak »` pour pouvoir les trouver plus tard. Traitez les sessions comme des branches : différents flux de travail peuvent avoir des contextes séparés et persistants.

452 

453***

454 

455## Automatisez et mettez à l'échelle

456 

457Une fois que vous êtes efficace avec un Claude, multipliez votre production avec des sessions parallèles, le mode non interactif et les modèles de fan-out.

458 

459Tout ce qui précède suppose un humain, un Claude et une conversation. Mais Claude Code se met à l'échelle horizontalement. Les techniques de cette section montrent comment vous pouvez en faire plus.

460 

461### Exécutez le mode non interactif

462 

463<Tip>

464 Utilisez `claude -p "prompt"` dans CI, les hooks de pré-commit ou les scripts. Ajoutez `--output-format stream-json` pour la sortie JSON en streaming.

465</Tip>

466 

467Avec `claude -p "your prompt"`, vous pouvez exécuter Claude de manière non interactive, sans session. Le mode non interactif est la façon dont vous intégrez Claude dans les pipelines CI, les hooks de pré-commit ou tout flux de travail automatisé. Les formats de sortie vous permettent d'analyser les résultats par programmation : texte brut, JSON ou JSON en streaming.

468 

469```bash theme={null}

470# One-off queries

471claude -p "Explain what this project does"

472 

473# Structured output for scripts

474claude -p "List all API endpoints" --output-format json

475 

476# Streaming for real-time processing

477claude -p "Analyze this log file" --output-format stream-json

478```

479 

480### Exécutez plusieurs sessions Claude

481 

482<Tip>

483 Exécutez plusieurs sessions Claude en parallèle pour accélérer le développement, exécuter des expériences isolées ou démarrer des flux de travail complexes.

484</Tip>

485 

486Il y a trois façons principales d'exécuter des sessions parallèles :

487 

488* [Application de bureau Claude Code](/fr/desktop#work-in-parallel-with-sessions) : Gérez visuellement plusieurs sessions locales. Chaque session obtient son propre worktree isolé.

489* [Claude Code sur le web](/fr/claude-code-on-the-web) : Exécutez sur l'infrastructure cloud sécurisée d'Anthropic dans des VM isolées.

490* [Équipes d'agents](/fr/agent-teams) : Coordination automatisée de plusieurs sessions avec des tâches partagées, la messagerie et un chef d'équipe.

491 

492Au-delà de la parallélisation du travail, plusieurs sessions permettent des flux de travail axés sur la qualité. Un contexte frais améliore la révision de code puisque Claude ne sera pas biaisé vers le code qu'il vient d'écrire.

493 

494Par exemple, utilisez un modèle Writer/Reviewer :

495 

496| Session A (Writer) | Session B (Reviewer) |

497| ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

498| `Implement a rate limiter for our API endpoints` | |

499| | `Review the rate limiter implementation in @src/middleware/rateLimiter.ts. Look for edge cases, race conditions, and consistency with our existing middleware patterns.` |

500| `Here's the review feedback: [Session B output]. Address these issues.` | |

501 

502Vous pouvez faire quelque chose de similaire avec les tests : avoir un Claude écrire des tests, puis un autre écrire du code pour les réussir.

503 

504### Fan out sur les fichiers

505 

506<Tip>

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

508</Tip>

509 

510Pour les migrations ou analyses à grande échelle, vous pouvez distribuer le travail sur de nombreuses invocations Claude parallèles :

511 

512<Steps>

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

514 Demandez à Claude de lister tous les fichiers qui doivent être migrés (par exemple, `list all 2,000 Python files that need migrating`)

515 </Step>

516 

517 <Step title="Écrivez un script pour boucler à travers la liste">

518 ```bash theme={null}

519 for file in $(cat files.txt); do

520 claude -p "Migrate $file from React to Vue. Return OK or FAIL." \

521 --allowedTools "Edit,Bash(git commit *)"

522 done

523 ```

524 </Step>

525 

526 <Step title="Testez sur quelques fichiers, puis exécutez à l'échelle">

527 Affinez votre invite en fonction de ce qui se passe mal avec les 2-3 premiers fichiers, puis exécutez sur l'ensemble complet. L'indicateur `--allowedTools` restreint ce que Claude peut faire, ce qui importe lorsque vous exécutez sans surveillance.

528 </Step>

529</Steps>

530 

531Vous pouvez également intégrer Claude dans les pipelines de données/traitement existants :

532 

533```bash theme={null}

534claude -p "<your prompt>" --output-format json | your_command

535```

536 

537Utilisez `--verbose` pour le débogage pendant le développement, et désactivez-le en production.

538 

539### Exécutez de manière autonome avec le mode auto

540 

541Pour une exécution ininterrompue avec des vérifications de sécurité en arrière-plan, utilisez [mode auto](/fr/permission-modes#eliminate-prompts-with-auto-mode). Un modèle classificateur examine les commandes avant qu'elles ne s'exécutent, bloquant l'escalade de portée, l'infrastructure inconnue et les actions motivées par du contenu hostile tout en laissant le travail de routine se dérouler sans invites.

542 

543```bash theme={null}

544claude --permission-mode auto -p "fix all lint errors"

545```

546 

547Pour les exécutions non interactives avec l'indicateur `-p`, le mode auto abandonne si le classificateur bloque à plusieurs reprises les actions, puisqu'il n'y a pas d'utilisateur pour se replier. Consultez [quand le mode auto se replie](/fr/permission-modes#when-auto-mode-falls-back) pour les seuils.

548 

549***

550 

551## Évitez les modèles d'échec courants

552 

553Ce sont des erreurs courantes. Les reconnaître tôt économise du temps :

554 

555* **La session fourre-tout.** Vous commencez par une tâche, puis demandez à Claude quelque chose d'autre, puis revenez à la première tâche. Le contexte est plein d'informations non pertinentes.

556 > **Correction** : `/clear` entre les tâches non liées.

557* **Corriger encore et encore.** Claude fait quelque chose de mal, vous le corrigez, c'est toujours mal, vous corrigez à nouveau. Le contexte est pollué par des approches échouées.

558 > **Correction** : Après deux corrections échouées, `/clear` et écrivez une meilleure invite initiale incorporant ce que vous avez appris.

559* **Le CLAUDE.md sur-spécifié.** Si votre CLAUDE.md est trop long, Claude ignore la moitié car les règles importantes se perdent dans le bruit.

560 > **Correction** : Élaguez impitoyablement. Si Claude fait déjà quelque chose correctement sans l'instruction, supprimez-le ou convertissez-le en hook.

561* **L'écart de confiance-puis-vérification.** Claude produit une implémentation plausible qui ne gère pas les cas limites.

562 > **Correction** : Fournissez toujours une vérification (tests, scripts, captures d'écran). Si vous ne pouvez pas la vérifier, ne la déployez pas.

563* **L'exploration infinie.** Vous demandez à Claude d'« enquêter » sur quelque chose sans le délimiter. Claude lit des centaines de fichiers, remplissant le contexte.

564 > **Correction** : Délimitez les enquêtes étroitement ou utilisez les subagents pour que l'exploration ne consomme pas votre contexte principal.

565 

566***

567 

568## Développez votre intuition

569 

570Les modèles de ce guide ne sont pas gravés dans le marbre. Ce sont des points de départ qui fonctionnent bien en général, mais pourraient ne pas être optimaux pour chaque situation.

571 

572Parfois, vous *devriez* laisser le contexte s'accumuler parce que vous êtes profondément dans un problème complexe et l'historique est précieux. Parfois, vous devriez ignorer la planification et laisser Claude le découvrir parce que la tâche est exploratoire. Parfois, une invite vague est exactement ce qu'il faut parce que vous voulez voir comment Claude interprète le problème avant de le contraindre.

573 

574Faites attention à ce qui fonctionne. Lorsque Claude produit une excellente sortie, remarquez ce que vous avez fait : la structure de l'invite, le contexte que vous avez fourni, le mode dans lequel vous étiez. Lorsque Claude lutte, demandez-vous pourquoi. Le contexte était-il trop bruyant ? L'invite trop vague ? La tâche trop grande pour une seule passe ?

575 

576Au fil du temps, vous développerez une intuition qu'aucun guide ne peut capturer. Vous saurez quand être spécifique et quand être ouvert, quand planifier et quand explorer, quand effacer le contexte et quand le laisser s'accumuler.

577 

578## Ressources connexes

579 

580* [Comment fonctionne Claude Code](/fr/how-claude-code-works) : la boucle agentique, les outils et la gestion du contexte

581* [Étendre Claude Code](/fr/features-overview) : skills, hooks, MCP, subagents et plugins

582* [Flux de travail courants](/fr/common-workflows) : recettes étape par étape pour le débogage, les tests, les PR et plus

583* [CLAUDE.md](/fr/memory) : stocker les conventions de projet et le contexte persistant

champion-kit.md +195 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Kit du champion

6 

7> Un guide pratique pour les ingénieurs qui défendent Claude Code en interne : quoi partager, comment répondre aux questions et comment augmenter l'adoption dans votre équipe.

8 

9Cette page s'adresse aux ingénieurs individuels qui utilisent déjà Claude Code et qui souhaitent aider leur équipe à l'adopter. Elle couvre quoi partager, comment répondre aux questions que vous recevrez, un guide de trente jours et des réponses aux préoccupations courantes.

10 

11L'adoption d'un outil de développement se fait rarement à cause d'une annonce de déploiement. Elle se produit parce que quelqu'un dans l'équipe commence à utiliser l'outil correctement, en parle ouvertement et facilite l'adoption pour les autres. Le travail que vous faites en tant que champion a un effet disproportionné : chaque exemple que vous partagez raccourcit la courbe d'apprentissage pour les ingénieurs qui vous suivent, et chaque question que vous répondez publiquement transforme l'expérience d'une personne en quelque chose que toute l'équipe peut exploiter. Vous agissez comme un multiplicateur pour votre équipe, pas comme un support technique, et ce guide est structuré pour maintenir le rôle durable selon ces termes.

12 

13## Le rôle de champion

14 

15Le rôle consiste en trois comportements qui se renforcent mutuellement.

16 

17| Comportement | À quoi cela ressemble en pratique | Pourquoi c'est important |

18| ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

19| Partagez ce que vous découvrez | Publiez les prompts, les captures d'écran et les petites victoires de votre propre travail dans les endroits que votre équipe lit déjà, comme un canal d'ingénierie, un fil de standup ou une description de pull request. | Les exemples tirés de votre propre codebase sont plus convaincants que n'importe quelle documentation externe, car les collègues peuvent voir exactement comment l'outil s'applique aux problèmes qu'ils partagent avec vous. |

20| Soyez la personne que les gens demandent | Quand un collègue vous demande comment vous avez réalisé quelque chose, répondez avec le prompt réel que vous avez utilisé pour qu'il puisse l'appliquer directement à sa propre tâche. | Un exemple concret et exécutable supprime l'écart entre la curiosité et une première utilisation réussie, ce qui est l'endroit où la plupart des efforts d'adoption s'arrêtent. |

21| Agrandissez le cercle | Établissez un petit nombre d'habitudes légères et récurrentes, comme un canal dédié ou un fil hebdomadaire, afin que l'élan continue même quand votre attention est ailleurs. | L'adoption qui dépend d'une seule personne est fragile. L'adoption qui est portée par des habitudes partagées continue à se composer d'elle-même. |

22 

23La plupart de cela s'inscrit naturellement dans le travail que vous faites déjà. La différence est une petite quantité d'intention supplémentaire sur l'endroit où vos découvertes sont publiées et comment vos réponses se propagent.

24 

25### Ce que cela devrait vous coûter

26 

27Fixez des attentes avec vous-même et avec votre responsable. Les activités ci-dessous sont destinées à s'adapter à une semaine de travail normale, et le rôle devrait rester un multiplicateur de votre travail existant plutôt qu'une responsabilité de support supplémentaire.

28 

29| Activité | Temps par semaine | Conseils |

30| -------------------------------------------- | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------- |

31| Publier des victoires et des prompts | Environ 15 minutes | Capturez-les au moment avec une capture d'écran et une ou deux phrases ; évitez de les transformer en rédactions formelles. |

32| Répondre aux questions dans un canal partagé | Environ 20 minutes | Répondez publiquement une fois, puis créez un lien vers cette réponse quand la question revient. |

33| Animer un fil de démonstration hebdomadaire | Environ 5 minutes | Vous publiez le prompt d'ouverture ; l'équipe fournit le contenu. |

34| Appairage ou démonstrations optionnels | 0 à 30 minutes | Réservez cela aux collègues qui sont vraiment bloqués, et offrez le lien [Quickstart](/fr/quickstart) avant de planifier du temps. |

35 

36## Partagez ce que vous découvrez

37 

38Votre propre expérience est le matériel le plus convaincant que vos collègues rencontreront, car il est spécifique à la codebase, aux flux de travail et aux problèmes que vous partagez tous. La documentation dit aux gens ce qui est possible ; vos publications leur montrent ce qui fonctionne réellement dans votre environnement.

39 

40### Ce qui vaut la peine d'être partagé

41 

42Les publications les plus utiles décrivent une technique qu'un collègue peut réutiliser demain plutôt qu'un résultat qui est déjà complet. Les techniques se composent à mesure qu'elles se propagent dans une équipe ; les mises à jour de statut ne le font pas.

43 

44Exemples de techniques réutilisables :

45 

46* « J'ai appris que @-mentionner un répertoire fonctionne. En le pointant vers `@src/components/` et en demandant lesquels manquaient de tests, j'ai découvert deux que j'avais oubliés. »

47* « Le mode Plan (`Maj+Tab`) montre exactement quels fichiers seront touchés avant toute modification, c'est pourquoi je suis à l'aise de l'utiliser sur du code partagé. »

48* « J'ai configuré un hook Stop pour recevoir une notification de bureau quand une tâche longue se termine. La configuration est dans le fil. »

49* « L'exécution de `/init` génère un `CLAUDE.md` à partir du référentiel afin que l'assistant arrête de redemander nos conventions. »

50 

51### Où le partager

52 

53Publiez partout où votre équipe lit déjà. L'objectif est de placer les exemples dans le chemin du travail normal plutôt que de créer une destination.

54 

55| Emplacement | Mieux adapté pour | Format recommandé |

56| ------------------------------------------------ | ---------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |

57| Un canal `#claude-code` ou d'ingénierie générale | Découvertes, prompts et moments « aujourd'hui j'ai appris » | Une capture d'écran accompagnée d'une ou deux phrases de contexte |

58| Descriptions de pull request | Démontrer l'approche sur du code réel que les relecteurs lisent déjà | Une seule ligne comme « Claude et moi avons fait cette refonte ; heureux de parcourir l'approche. » |

59| Standups ou mises à jour écrites hebdomadaires | Normaliser l'utilisation avec les responsables et les managers de niveau supérieur | Une phrase décrivant un résultat concret |

60| Wiki d'équipe ou documentation interne | Modèles durables, compétences personnalisées et exemples `CLAUDE.md` | Une courte page, liée depuis le sujet du canal pour qu'elle reste découvrable |

61 

62### Le format qui fonctionne

63 

64Une capture d'écran accompagnée d'une seule ligne de contexte, ou une brève description avant-après, est généralement le bon niveau de détail. Gardez chaque publication assez courte pour que quelqu'un qui la parcourt absorbe toujours le point. Une longue rédaction tend à être sauvegardée pour plus tard et oubliée, tandis qu'une courte publication avec une capture d'écran tend à être copiée et essayée.

65 

66Les exemples de publications ci-dessous illustrent le ton et la longueur ; adaptez-les plutôt que de les copier textuellement.

67 

68```text theme={null}

69Appris aujourd'hui que @-mentionner un répertoire fonctionne. Je l'ai pointé vers

70@src/components/ et j'ai demandé quels composants manquaient de tests, et cela

71a découvert deux que j'avais oubliés.

72```

73 

74```text theme={null}

75J'ai configuré un hook Stop pour recevoir une notification de bureau quand une tâche longue

76se termine. J'ai commencé une refonte, je me suis éloigné, et j'ai été notifié quand

77c'était terminé. La configuration est dans le fil.

78```

79 

80```text theme={null}

81Le mode Plan est la raison pour laquelle je suis à l'aise d'utiliser ceci sur du code qui compte.

82Appuyez sur Maj+Tab jusqu'à ce que vous voyiez « plan » ; cela énumère exactement quels fichiers

83il a l'intention de toucher avant de changer quoi que ce soit.

84```

85 

86## Soyez la personne que les gens demandent

87 

88Une fois que vous avez partagé quelques exemples, les questions suivront. C'est là que le rôle de champion a le plus grand effet de levier, car une bonne réponse à une personne déverrouille souvent plusieurs autres qui regardent le même canal.

89 

90### Répondez avec un prompt plutôt qu'une explication

91 

92Quand un collègue vous demande comment vous avez réalisé quelque chose, la réponse la plus utile est le prompt que vous avez réellement utilisé. Ils apprendront plus en exécutant ce prompt contre leur propre problème que de n'importe quelle description que vous pourriez écrire, et cela leur donne quelque chose sur lequel ils peuvent agir immédiatement.

93 

94```text theme={null}

95Collègue : Comment avez-vous réussi à trouver cette condition de course ?

96 

97Champion : J'ai demandé, « Le test dans @tests/scheduler.test.ts est instable, découvrez

98pourquoi, » et il a tracé deux promesses non jointes dans le planificateur. Essayez la

99même formulation sur votre test.

100```

101 

102### Pointez vers la fonctionnalité plutôt que vers la documentation

103 

104Une réponse comme « Essayez le mode plan, appuyez sur `Maj+Tab` jusqu'à ce que vous le voyiez » est plus utile au moment que un lien vers la documentation. Si la personne a besoin de plus de profondeur plus tard, elle la trouvera d'elle-même ; en ce moment, elle a besoin de la seule chose qui la déverrouille.

105 

106### Questions que vous êtes susceptible d'entendre

107 

108| Question | Réponse suggérée | Ressource de suivi |

109| -------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |

110| « Sur quoi devrais-je d'abord l'essayer ? » | Recommandez une tâche réelle mais contenue, idéalement un bug ou une tâche que la personne a reportée parce qu'elle est fastidieuse plutôt que difficile. | [Flux de travail courants](/fr/common-workflows) |

111| « Comment puis-je lui faire confiance avec mon code ? » | Présentez le mode plan : appuyer sur `Maj+Tab` le bascule, Claude propose exactement ce qu'il a l'intention de changer, et rien n'est modifié jusqu'à ce que l'utilisateur approuve. | [Permissions](/fr/permissions) |

112| « L'installation en vaut-elle la peine ? » | L'installation prend environ deux minutes, s'exécute dans le terminal et ne nécessite aucune extension IDE. L'exécution de `/init` une fois suffit pour commencer à travailler. | [Quickstart](/fr/quickstart) |

113| « Il a produit un résultat incorrect. » | Encouragez-les à fournir l'échec à Claude. Coller le message d'erreur ou le test échoué est beaucoup plus efficace que de reformuler la demande originale. | [Flux de travail courants](/fr/common-workflows) |

114| « Il ne comprend pas les conventions de notre codebase. » | Suggérez d'exécuter `/init` pour générer un fichier `CLAUDE.md`, puis d'ajouter les conventions de l'équipe, les commandes de test et tous les répertoires qui doivent être évités. | [Memory](/fr/memory) |

115| « N'est-ce que de l'autocomplétion ? » | Offrez une brève démonstration dans laquelle Claude explique un fichier inconnu, trace un bug entre les services ou rédige un plan de migration. Ces tâches nécessitent un raisonnement dans le référentiel plutôt que de compléter une seule ligne. | Une démonstration en direct de deux minutes |

116| « Qu'en est-il de la sécurité et de la gestion des données ? » | Référez cette question à votre administrateur. La politique de déploiement et de gestion des données de votre organisation est déjà configurée, et les champions ne doivent pas improviser cette réponse. | [Security](/fr/security) · [Data usage](/fr/data-usage) |

117 

118## Agrandissez le cercle

119 

120L'objectif n'est pas de construire un programme ou de posséder un déploiement. C'est d'établir un petit nombre d'habitudes légères qui permettent à l'élan de continuer après que vous ayez arrêté de le conduire activement. Quand les questions dans le canal sont répondues par des personnes autres que vous, le rôle a fait son travail.

121 

122### Modèles qui tendent à fonctionner

123 

124| Modèle | Comment l'exécuter | Effort requis |

125| ---------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |

126| Un canal dédié | Créez un canal `#claude-code` (ou un fil récurrent dans un existant), épinglez le lien [Quickstart](/fr/quickstart) et un exemple fort, et répondez aux questions publiquement pour que chaque réponse bénéficie à tous ceux qui regardent. | Environ cinq minutes pour configurer, puis ambiant |

127| Un fil de démonstration hebdomadaire | Chaque vendredi, publiez « Avec quoi Claude vous a-t-il aidé cette semaine ? » Aucune préparation, diapositives ou réunion ne sont requises ; les captures d'écran et les brèves descriptions suffisent. | Environ deux minutes par semaine |

128| Partagez une compétence personnalisée | Publiez votre fichier `.claude/skills/<name>/SKILL.md` le plus utile, par exemple une compétence `/ship` qui exécute les tests et lint avant de valider, avec une description d'une ligne. Parce que les compétences sont du Markdown simple, les collègues peuvent les adopter immédiatement. | Environ cinq minutes par compétence |

129| Générez un guide de configuration à partir de votre propre utilisation | Exécutez `/team-onboarding` dans un projet dans lequel vous avez passé du temps réel. Claude analyse vos sessions récentes, commandes et serveurs MCP, puis produit un guide qu'un nouveau coéquipier peut coller comme son premier message pour rejouer votre configuration. Épinglez-le dans le canal. | Environ deux minutes |

130| Appairez-vous sur une première tâche | Offrez une seule session d'appairage de quinze minutes à quiconque commence. Un résultat réussi sur leur propre code est plus convaincant que n'importe quelle présentation. | Environ quinze minutes par personne |

131| Identifiez le prochain champion | Le collègue qui vous pose le plus de questions est généralement prêt à assumer ce rôle. Transmettez-lui cette page et divisez les responsabilités du canal entre vous. | Négligeable |

132 

133### Guide de trente jours

134 

135Si un plan vague est utile, la séquence ci-dessous reflète ce qui tend à fonctionner dans la plupart des équipes. Ajustez librement pour adapter à votre contexte.

136 

137<Steps>

138 <Step title="Semaine 1 : Ensemencez le canal">

139 Créez le canal, épinglez le [Quickstart](/fr/quickstart) et publiez deux ou trois de vos propres exemples avec les prompts inclus.

140 

141 **Signal que cela fonctionne :** quelques collègues réagissent ou répondent, et au moins une question est posée dans le canal.

142 </Step>

143 

144 <Step title="Semaine 2 : Commencez le rythme">

145 Commencez le fil de démonstration hebdomadaire, répondez à chaque question publiquement et partagez une compétence personnalisée ou un extrait `CLAUDE.md`.

146 

147 **Signal que cela fonctionne :** quelqu'un d'autre que vous publie un exemple du sien.

148 </Step>

149 

150 <Step title="Semaine 3 : Appairez et consolidez">

151 Offrez deux ou trois courtes sessions d'appairage et consolidez les questions et réponses les plus courantes dans un message FAQ épinglé.

152 

153 **Signal que cela fonctionne :** vous voyez une utilisation répétée, avec les mêmes collègues revenant plutôt que d'essayer une fois et d'arrêter.

154 </Step>

155 

156 <Step title="Semaine 4 : Transmettez">

157 Identifiez un deuxième champion et partagez un bref résumé de ce qui fonctionne et ce qui ne fonctionne pas avec votre responsable ou administrateur.

158 

159 **Signal que cela fonctionne :** les questions dans le canal sont répondues par des personnes autres que vous.

160 </Step>

161</Steps>

162 

163### Quand quelqu'un veut aller plus loin

164 

165Vous êtes l'introduction chaleureuse plutôt que le programme d'intégration. Quand un collègue passe de « devrais-je essayer ceci » à « comment devenir efficace avec ceci », pointez-le vers les pages [Quickstart](/fr/quickstart) et [Flux de travail courants](/fr/common-workflows). Elles contiennent de courtes sections couvrant les fonctionnalités qui sont véritablement utiles mais difficiles à découvrir par soi-même.

166 

167## Répondez aux préoccupations courantes

168 

169Le scepticisme sain est attendu ; les ingénieurs doivent être prudents face aux outils qui touchent leur code. La réponse la plus efficace est rarement d'argumenter le cas général. Au lieu de cela, reconnaissez la préoccupation, offrez un bref reframe et proposez une démonstration concrète sur le propre code de la personne. La plupart des préoccupations sont résolues par une seule expérience réussie.

170 

171| Préoccupation | Réponse suggérée | Preuve à offrir |

172| ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |

173| « Je suis plus rapide sans cela. » | C'est probablement vrai pour le code que la personne écrit régulièrement. Suggérez de l'essayer sur le travail qu'ils ont tendance à éviter : fichiers hérités, services inconnus ou échafaudage de test, où l'effet de levier est le plus élevé. | Chronométrez une tâche fastidieuse des deux façons et comparez. |

174| « Je ne fais pas confiance à l'IA pour toucher le code de production. » | Acceptez qu'aucune modification ne devrait être fusionnée sans être lue. Le mode plan combiné à l'examen diff normal signifie que rien n'est appliqué que l'ingénieur n'a pas inspecté, la même norme que n'importe quelle pull request. | Démontrez le mode plan sur un fichier réel. |

175| « Cela rendra les ingénieurs juniors plus faibles. » | Utilisé correctement, c'est un expliquant efficace. Encouragez les ingénieurs juniors à demander à Claude d'expliquer un fichier et ses sites d'appel avant de lui demander de changer quoi que ce soit. | Exécutez « Expliquez @file et où il est appelé depuis » ensemble. |

176| « J'ai essayé une fois et cela a hallucié. » | C'est généralement un problème de contexte plutôt qu'un problème de modèle. @-mentionner les fichiers pertinents, exécuter `/init` et fournir la sortie d'erreur réelle résout généralement cela. | Réexécutez leur prompt original avec le contexte `@` approprié. |

177| « Nous n'avons pas le temps d'apprendre un autre outil. » | Claude Code est une commande de terminal plutôt qu'une plateforme. S'il ne retourne pas de valeur dans la première session, il est raisonnable de le mettre de côté. | Une installation de deux minutes suivie d'un bug réel. |

178 

179## Feuille de référence rapide

180 

181Les techniques ci-dessous sont celles qui déplacent le plus fiablement quelqu'un d'un premier essai à une utilisation quotidienne. Épinglez ce tableau dans un canal ou partagez-le seul.

182 

183| Technique | Comment l'appliquer |

184| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

185| Fournissez le bon contexte | Utilisez les références `@file` ou `@directory/`, ou collez directement la sortie d'erreur ou de journal. Fournir un contexte pertinent est plus efficace qu'une formulation élaborée. |

186| Examinez le plan avant la modification | Appuyez sur `Maj+Tab` pour entrer en mode plan. Claude décrira les modifications prévues pour votre approbation avant de les exécuter. |

187| Enseignez-lui votre référentiel | Exécutez `/init` pour générer un fichier `CLAUDE.md`, puis ajoutez vos conventions, commandes de test et tous les répertoires qui ne doivent pas être modifiés. Voir [Memory](/fr/memory). |

188| Réutilisez un flux de travail | Enregistrez un fichier `SKILL.md` dans `.claude/skills/<name>/` pour créer une compétence `/name` que toute l'équipe peut utiliser. Voir [Skills](/fr/skills). |

189| Restez informé pendant les tâches longues | Configurez un hook Stop pour recevoir une notification de bureau quand une tâche longue se termine. Voir [Hooks](/fr/hooks-guide). |

190| Récupérez d'un résultat incorrect | Plutôt que de reformuler la demande, collez le test échoué ou la trace de pile à Claude et demandez-lui de traiter cet échec spécifique. |

191| Gardez les modifications chirurgicales | Demandez un diff, ou spécifiez « ne changez que X ». Claude respecte la portée quand la portée est énoncée. |

192 

193<Tip>

194 Claude Code est mis à jour fréquemment. Vérifiez les détails spécifiques à la version par rapport à la [page d'accueil de la documentation](/fr/overview) avant de distribuer ce matériel en interne.

195</Tip>

channels.md +357 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Envoyer des événements dans une session active avec les canaux

6 

7> Utilisez les canaux pour envoyer des messages, des alertes et des webhooks dans votre session Claude Code à partir d'un serveur MCP. Transférez les résultats CI, les messages de chat et les événements de surveillance pour que Claude puisse réagir en votre absence.

8 

9<Note>

10 Les canaux sont en [aperçu de recherche](#research-preview) et nécessitent Claude Code v2.1.80 ou version ultérieure. Ils nécessitent une connexion claude.ai. L'authentification par console et clé API n'est pas prise en charge. Les organisations Team et Enterprise doivent [les activer explicitement](#enterprise-controls).

11</Note>

12 

13Un canal est un serveur MCP qui envoie des événements dans votre session Claude Code active, afin que Claude puisse réagir aux choses qui se produisent lorsque vous n'êtes pas au terminal. Les canaux peuvent être bidirectionnels : Claude lit l'événement et répond via le même canal, comme un pont de chat. Les événements n'arrivent que lorsque la session est ouverte, donc pour une configuration toujours active, vous exécutez Claude dans un processus d'arrière-plan ou un terminal persistant.

14 

15Contrairement aux intégrations qui lancent une nouvelle session cloud ou attendent d'être interrogées, l'événement arrive dans la session que vous avez déjà ouverte : voir [comment les canaux se comparent](#how-channels-compare).

16 

17Vous installez un canal en tant que plugin et le configurez avec vos propres identifiants. Telegram, Discord et iMessage sont inclus dans l'aperçu de recherche.

18 

19Lorsque Claude répond via un canal, vous voyez le message entrant dans votre terminal mais pas le texte de la réponse. Le terminal affiche l'appel d'outil et une confirmation (comme « envoyé »), et la réponse réelle apparaît sur l'autre plateforme.

20 

21Cette page couvre :

22 

23* [Canaux pris en charge](#supported-channels) : configuration de Telegram, Discord et iMessage

24* [Installer et exécuter un canal](#quickstart) avec fakechat, une démo localhost

25* [Qui peut envoyer des messages](#security) : listes blanches d'expéditeurs et comment vous appairez

26* [Activer les canaux pour votre organisation](#enterprise-controls) sur Team et Enterprise

27* [Comment les canaux se comparent](#how-channels-compare) aux sessions web, Slack, MCP et Remote Control

28 

29Pour créer votre propre canal, consultez la [référence Canaux](/fr/channels-reference).

30 

31## Canaux pris en charge

32 

33Chaque canal pris en charge est un plugin qui nécessite [Bun](https://bun.sh). Pour une démonstration pratique du flux de plugin avant de connecter une plateforme réelle, essayez le [démarrage rapide fakechat](#quickstart).

34 

35<Tabs>

36 <Tab title="Telegram">

37 Consultez la [source complète du plugin Telegram](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/telegram).

38 

39 <Steps>

40 <Step title="Créer un bot Telegram">

41 Ouvrez [BotFather](https://t.me/BotFather) dans Telegram et envoyez `/newbot`. Donnez-lui un nom d'affichage et un nom d'utilisateur unique se terminant par `bot`. Copiez le jeton que BotFather retourne.

42 </Step>

43 

44 <Step title="Installer le plugin">

45 Dans Claude Code, exécutez :

46 

47 ```

48 /plugin install telegram@claude-plugins-official

49 ```

50 

51 Si Claude Code signale que le plugin n'est trouvé dans aucune marketplace, votre marketplace est soit manquante, soit obsolète. Exécutez `/plugin marketplace update claude-plugins-official` pour l'actualiser, ou `/plugin marketplace add anthropics/claude-plugins-official` si vous ne l'avez pas encore ajoutée. Ensuite, réessayez l'installation.

52 

53 Après l'installation, exécutez `/reload-plugins` pour activer la commande de configuration du plugin.

54 </Step>

55 

56 <Step title="Configurer votre jeton">

57 Exécutez la commande de configuration avec le jeton de BotFather :

58 

59 ```

60 /telegram:configure <token>

61 ```

62 

63 Cela l'enregistre dans `~/.claude/channels/telegram/.env`. Vous pouvez également définir `TELEGRAM_BOT_TOKEN` dans votre environnement shell avant de lancer Claude Code.

64 </Step>

65 

66 <Step title="Redémarrer avec les canaux activés">

67 Quittez Claude Code et redémarrez avec l'indicateur de canal. Cela démarre le plugin Telegram, qui commence à interroger les messages de votre bot :

68 

69 ```bash theme={null}

70 claude --channels plugin:telegram@claude-plugins-official

71 ```

72 </Step>

73 

74 <Step title="Appairer votre compte">

75 Ouvrez Telegram et envoyez n'importe quel message à votre bot. Le bot répond avec un code d'appairage.

76 

77 <Note>Si votre bot ne répond pas, assurez-vous que Claude Code s'exécute avec `--channels` à partir de l'étape précédente. Le bot ne peut répondre que lorsque le canal est actif.</Note>

78 

79 De retour dans Claude Code, exécutez :

80 

81 ```

82 /telegram:access pair <code>

83 ```

84 

85 Ensuite, verrouillez l'accès pour que seul votre compte puisse envoyer des messages :

86 

87 ```

88 /telegram:access policy allowlist

89 ```

90 </Step>

91 </Steps>

92 </Tab>

93 

94 <Tab title="Discord">

95 Consultez la [source complète du plugin Discord](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/discord).

96 

97 <Steps>

98 <Step title="Créer un bot Discord">

99 Allez au [Portail des développeurs Discord](https://discord.com/developers/applications), cliquez sur **New Application** et nommez-le. Dans la section **Bot**, créez un nom d'utilisateur, puis cliquez sur **Reset Token** et copiez le jeton.

100 </Step>

101 

102 <Step title="Activer Message Content Intent">

103 Dans les paramètres de votre bot, faites défiler jusqu'à **Privileged Gateway Intents** et activez **Message Content Intent**.

104 </Step>

105 

106 <Step title="Inviter le bot à votre serveur">

107 Allez à **OAuth2 > URL Generator**. Sélectionnez la portée `bot` et activez ces permissions :

108 

109 * View Channels

110 * Send Messages

111 * Send Messages in Threads

112 * Read Message History

113 * Attach Files

114 * Add Reactions

115 

116 Ouvrez l'URL générée pour ajouter le bot à votre serveur.

117 </Step>

118 

119 <Step title="Installer le plugin">

120 Dans Claude Code, exécutez :

121 

122 ```

123 /plugin install discord@claude-plugins-official

124 ```

125 

126 Si Claude Code signale que le plugin n'est trouvé dans aucune marketplace, votre marketplace est soit manquante, soit obsolète. Exécutez `/plugin marketplace update claude-plugins-official` pour l'actualiser, ou `/plugin marketplace add anthropics/claude-plugins-official` si vous ne l'avez pas encore ajoutée. Ensuite, réessayez l'installation.

127 

128 Après l'installation, exécutez `/reload-plugins` pour activer la commande de configuration du plugin.

129 </Step>

130 

131 <Step title="Configurer votre jeton">

132 Exécutez la commande de configuration avec le jeton du bot que vous avez copié :

133 

134 ```

135 /discord:configure <token>

136 ```

137 

138 Cela l'enregistre dans `~/.claude/channels/discord/.env`. Vous pouvez également définir `DISCORD_BOT_TOKEN` dans votre environnement shell avant de lancer Claude Code.

139 </Step>

140 

141 <Step title="Redémarrer avec les canaux activés">

142 Quittez Claude Code et redémarrez avec l'indicateur de canal. Cela connecte le plugin Discord pour que votre bot puisse recevoir et répondre aux messages :

143 

144 ```bash theme={null}

145 claude --channels plugin:discord@claude-plugins-official

146 ```

147 </Step>

148 

149 <Step title="Appairer votre compte">

150 Envoyez un DM à votre bot sur Discord. Le bot répond avec un code d'appairage.

151 

152 <Note>Si votre bot ne répond pas, assurez-vous que Claude Code s'exécute avec `--channels` à partir de l'étape précédente. Le bot ne peut répondre que lorsque le canal est actif.</Note>

153 

154 De retour dans Claude Code, exécutez :

155 

156 ```

157 /discord:access pair <code>

158 ```

159 

160 Ensuite, verrouillez l'accès pour que seul votre compte puisse envoyer des messages :

161 

162 ```

163 /discord:access policy allowlist

164 ```

165 </Step>

166 </Steps>

167 </Tab>

168 

169 <Tab title="iMessage">

170 Consultez la [source complète du plugin iMessage](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/imessage).

171 

172 Le canal iMessage lit votre base de données Messages directement et envoie les réponses via AppleScript. Il nécessite macOS et n'a besoin d'aucun jeton de bot ou service externe.

173 

174 <Steps>

175 <Step title="Accorder l'accès complet au disque">

176 La base de données Messages à `~/Library/Messages/chat.db` est protégée par macOS. La première fois que le serveur la lit, macOS demande l'accès : cliquez sur **Allow**. L'invite nomme l'application qui a lancé Bun, comme Terminal, iTerm ou votre IDE.

177 

178 Si l'invite n'apparaît pas ou si vous avez cliqué sur Don't Allow, accordez l'accès manuellement sous **System Settings > Privacy & Security > Full Disk Access** et ajoutez votre terminal. Sans cela, le serveur se ferme immédiatement avec `authorization denied`.

179 </Step>

180 

181 <Step title="Installer le plugin">

182 Dans Claude Code, exécutez :

183 

184 ```

185 /plugin install imessage@claude-plugins-official

186 ```

187 

188 Si Claude Code signale que le plugin n'est trouvé dans aucune marketplace, votre marketplace est soit manquante, soit obsolète. Exécutez `/plugin marketplace update claude-plugins-official` pour l'actualiser, ou `/plugin marketplace add anthropics/claude-plugins-official` si vous ne l'avez pas encore ajoutée. Ensuite, réessayez l'installation.

189 </Step>

190 

191 <Step title="Redémarrer avec les canaux activés">

192 Quittez Claude Code et redémarrez avec l'indicateur de canal :

193 

194 ```bash theme={null}

195 claude --channels plugin:imessage@claude-plugins-official

196 ```

197 </Step>

198 

199 <Step title="Vous envoyer un message">

200 Ouvrez Messages sur n'importe quel appareil connecté à votre Apple ID et envoyez-vous un message. Il atteint Claude immédiatement : l'auto-chat contourne le contrôle d'accès sans configuration.

201 

202 <Note>La première réponse que Claude envoie déclenche une invite d'automatisation macOS demandant si votre terminal peut contrôler Messages. Cliquez sur **OK**.</Note>

203 </Step>

204 

205 <Step title="Autoriser d'autres expéditeurs">

206 Par défaut, seuls vos propres messages passent. Pour laisser un autre contact atteindre Claude, ajoutez son identifiant :

207 

208 ```

209 /imessage:access allow +15551234567

210 ```

211 

212 Les identifiants sont des numéros de téléphone au format `+country` ou des e-mails Apple ID comme `user@example.com`.

213 </Step>

214 </Steps>

215 </Tab>

216</Tabs>

217 

218Vous pouvez également [créer votre propre canal](/fr/channels-reference) pour les systèmes qui n'ont pas encore de plugin.

219 

220## Démarrage rapide

221 

222Fakechat est un canal de démonstration officiellement pris en charge qui exécute une interface de chat sur localhost, sans rien à authentifier et aucun service externe à configurer.

223 

224Une fois que vous installez et activez fakechat, vous pouvez taper dans le navigateur et le message arrive dans votre session Claude Code. Claude répond, et la réponse réapparaît dans le navigateur. Après avoir testé l'interface fakechat, essayez [Telegram](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/telegram), [Discord](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/discord) ou [iMessage](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/imessage).

225 

226Pour essayer la démo fakechat, vous aurez besoin de :

227 

228* Claude Code [installé et authentifié](/fr/quickstart#step-1-install-claude-code) avec un compte claude.ai

229* [Bun](https://bun.sh) installé. Les plugins de canal pré-construits sont des scripts Bun. Vérifiez avec `bun --version` ; si cela échoue, [installez Bun](https://bun.sh/docs/installation).

230* **Utilisateurs Team/Enterprise** : votre administrateur d'organisation doit [activer les canaux](#enterprise-controls) dans les paramètres gérés

231 

232<Steps>

233 <Step title="Installer le plugin de canal fakechat">

234 Démarrez une session Claude Code et exécutez la commande d'installation :

235 

236 ```text theme={null}

237 /plugin install fakechat@claude-plugins-official

238 ```

239 

240 Si Claude Code signale que le plugin n'est trouvé dans aucune marketplace, votre marketplace est soit manquante, soit obsolète. Exécutez `/plugin marketplace update claude-plugins-official` pour l'actualiser, ou `/plugin marketplace add anthropics/claude-plugins-official` si vous ne l'avez pas encore ajoutée. Ensuite, réessayez l'installation.

241 </Step>

242 

243 <Step title="Redémarrer avec le canal activé">

244 Quittez Claude Code, puis redémarrez avec `--channels` et passez le plugin fakechat que vous avez installé :

245 

246 ```bash theme={null}

247 claude --channels plugin:fakechat@claude-plugins-official

248 ```

249 

250 Le serveur fakechat démarre automatiquement.

251 

252 <Tip>

253 Vous pouvez passer plusieurs plugins à `--channels`, séparés par des espaces.

254 </Tip>

255 </Step>

256 

257 <Step title="Envoyer un message">

258 Ouvrez l'interface fakechat à [http://localhost:8787](http://localhost:8787) et tapez un message :

259 

260 ```text theme={null}

261 hey, what's in my working directory?

262 ```

263 

264 Le message arrive dans votre session Claude Code en tant qu'événement `<channel source="fakechat">`. Claude le lit, fait le travail et appelle l'outil `reply` de fakechat. La réponse s'affiche dans l'interface de chat.

265 </Step>

266</Steps>

267 

268Si Claude rencontre une invite de permission alors que vous êtes loin du terminal, la session s'interrompt jusqu'à ce que vous répondiez. Les serveurs de canaux qui déclarent la [capacité de relais de permission](/fr/channels-reference#relay-permission-prompts) peuvent vous transférer ces invites pour que vous puissiez approuver ou refuser à distance. Pour une utilisation sans surveillance, [`--dangerously-skip-permissions`](/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) contourne complètement les invites, mais utilisez-le uniquement dans les environnements auxquels vous faites confiance.

269 

270## Sécurité

271 

272Chaque plugin de canal approuvé maintient une liste blanche d'expéditeurs : seuls les identifiants que vous avez ajoutés peuvent envoyer des messages, et tous les autres sont silencieusement supprimés.

273 

274Telegram et Discord amorçent la liste par appairage :

275 

2761. Trouvez votre bot dans Telegram ou Discord et envoyez-lui n'importe quel message

2772. Le bot répond avec un code d'appairage

2783. Dans votre session Claude Code, approuvez le code lorsque vous y êtes invité

2794. Votre identifiant d'expéditeur est ajouté à la liste blanche

280 

281iMessage fonctionne différemment : vous envoyer un message contourne automatiquement la barrière, et vous ajoutez d'autres contacts par identifiant avec `/imessage:access allow`.

282 

283En plus de cela, vous contrôlez quels serveurs sont activés à chaque session avec `--channels`, et sur les plans Team et Enterprise, votre organisation contrôle la disponibilité avec [`channelsEnabled`](#enterprise-controls).

284 

285Être dans `.mcp.json` ne suffit pas pour envoyer des messages : un serveur doit également être nommé dans `--channels`.

286 

287La liste blanche contrôle également le [relais de permission](/fr/channels-reference#relay-permission-prompts) si le canal le déclare. Quiconque peut répondre via le canal peut approuver ou refuser l'utilisation d'outils dans votre session, donc n'ajoutez à la liste blanche que les expéditeurs auxquels vous faites confiance avec cette autorité.

288 

289## Contrôles d'entreprise

290 

291Sur les plans Team et Enterprise, les canaux sont désactivés par défaut. Les administrateurs contrôlent la disponibilité via deux [paramètres gérés](/fr/settings) que les utilisateurs ne peuvent pas modifier :

292 

293| Paramètre | Objectif | Lorsque non configuré |

294| :---------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------- |

295| `channelsEnabled` | Commutateur maître. Doit être `true` pour que tout canal puisse livrer des messages. Défini via le bouton bascule de la [console Admin claude.ai](https://claude.ai/admin-settings/claude-code) ou directement dans les paramètres gérés. Bloque tous les canaux, y compris l'indicateur de développement lorsqu'il est désactivé. | Canaux bloqués |

296| `allowedChannelPlugins` | Quels plugins peuvent s'enregistrer une fois les canaux activés. Remplace la liste maintenue par Anthropic lorsqu'elle est définie. S'applique uniquement lorsque `channelsEnabled` est `true`. | La liste par défaut d'Anthropic s'applique |

297 

298Les utilisateurs Pro et Max sans organisation ignorent complètement ces vérifications : les canaux sont disponibles et les utilisateurs optent pour chaque session avec `--channels`.

299 

300### Activer les canaux pour votre organisation

301 

302Les administrateurs peuvent activer les canaux à partir de [**claude.ai → Admin settings → Claude Code → Channels**](https://claude.ai/admin-settings/claude-code), ou en définissant `channelsEnabled` sur `true` dans les paramètres gérés.

303 

304Une fois activés, les utilisateurs de votre organisation peuvent utiliser `--channels` pour opter pour les serveurs de canaux dans les sessions individuelles. Si le paramètre est désactivé ou non défini, le serveur MCP se connecte toujours et ses outils fonctionnent, mais les messages de canal n'arriveront pas. Un avertissement au démarrage indique à l'utilisateur de demander à un administrateur d'activer le paramètre.

305 

306### Restreindre les plugins de canal qui peuvent s'exécuter

307 

308Par défaut, tout plugin sur la liste blanche maintenue par Anthropic peut s'enregistrer en tant que canal. Les administrateurs sur les plans Team et Enterprise peuvent remplacer cette liste blanche par la leur en définissant `allowedChannelPlugins` dans les paramètres gérés. Utilisez ceci pour restreindre les plugins officiels autorisés, approuver les canaux de votre propre marketplace interne, ou les deux. Chaque entrée nomme un plugin et la marketplace d'où il provient :

309 

310```json theme={null}

311{

312 "channelsEnabled": true,

313 "allowedChannelPlugins": [

314 { "marketplace": "claude-plugins-official", "plugin": "telegram" },

315 { "marketplace": "claude-plugins-official", "plugin": "discord" },

316 { "marketplace": "acme-corp-plugins", "plugin": "internal-alerts" }

317 ]

318}

319```

320 

321Lorsque `allowedChannelPlugins` est défini, il remplace complètement la liste blanche d'Anthropic : seuls les plugins listés peuvent s'enregistrer. Laissez-le non défini pour revenir à la liste blanche par défaut d'Anthropic. Un tableau vide bloque tous les plugins de canal de la liste blanche, mais `--dangerously-load-development-channels` peut toujours le contourner pour les tests locaux. Pour bloquer complètement les canaux, y compris l'indicateur de développement, laissez plutôt `channelsEnabled` non défini.

322 

323Ce paramètre nécessite `channelsEnabled: true`. Si un utilisateur transmet un plugin à `--channels` qui ne figure pas sur votre liste, Claude Code démarre normalement mais le canal ne s'enregistre pas, et l'avis de démarrage explique que le plugin ne figure pas sur la liste approuvée de l'organisation.

324 

325## Aperçu de recherche

326 

327Les canaux sont une fonctionnalité d'aperçu de recherche. La disponibilité est déployée progressivement, et la syntaxe de l'indicateur `--channels` et le contrat de protocole peuvent changer en fonction des commentaires.

328 

329Pendant l'aperçu, `--channels` n'accepte que les plugins d'une liste blanche maintenue par Anthropic, ou de la liste blanche de votre organisation si un administrateur a défini [`allowedChannelPlugins`](#restrict-which-channel-plugins-can-run). Les plugins de canal dans [claude-plugins-official](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins) sont l'ensemble approuvé par défaut. Si vous passez quelque chose qui ne figure pas sur la liste blanche effective, Claude Code démarre normalement mais le canal ne s'enregistre pas, et l'avis de démarrage vous indique pourquoi.

330 

331Pour tester un canal que vous créez, utilisez `--dangerously-load-development-channels`. Consultez [Test during the research preview](/fr/channels-reference#test-during-the-research-preview) pour des informations sur le test des canaux personnalisés que vous créez.

332 

333Signalez les problèmes ou les commentaires sur le [référentiel GitHub Claude Code](https://github.com/anthropics/claude-code/issues).

334 

335## Comment les canaux se comparent

336 

337Plusieurs fonctionnalités de Claude Code se connectent à des systèmes en dehors du terminal, chacune adaptée à un type de travail différent :

338 

339| Fonctionnalité | Ce qu'elle fait | Bonne pour |

340| ---------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |

341| [Claude Code sur le web](/fr/claude-code-on-the-web) | Exécute les tâches dans un nouveau bac à sable cloud, cloné à partir de GitHub | Déléguer le travail asynchrone autonome que vous vérifiez plus tard |

342| [Claude dans Slack](/fr/slack) | Lance une session web à partir d'une mention `@Claude` dans un canal ou un fil | Démarrer les tâches directement à partir du contexte de conversation d'équipe |

343| [Serveur MCP](/fr/mcp) standard | Claude l'interroge pendant une tâche ; rien n'est envoyé à la session | Donner à Claude un accès à la demande pour lire ou interroger un système |

344| [Remote Control](/fr/remote-control) | Vous pilotez votre session locale à partir de claude.ai ou de l'application mobile Claude | Diriger une session en cours pendant que vous êtes loin de votre bureau |

345 

346Les canaux comblent le vide dans cette liste en envoyant des événements de sources non-Claude dans votre session locale déjà active.

347 

348* **Pont de chat** : posez une question à Claude à partir de votre téléphone via Telegram, Discord ou iMessage, et la réponse revient dans le même chat pendant que le travail s'exécute sur votre machine par rapport à vos fichiers réels.

349* **[Récepteur webhook](/fr/channels-reference#example-build-a-webhook-receiver)** : un webhook de CI, votre suivi d'erreurs, un pipeline de déploiement ou un autre service externe arrive où Claude a déjà vos fichiers ouverts et se souvient de ce que vous déboguiez.

350 

351## Étapes suivantes

352 

353Une fois que vous avez un canal en cours d'exécution, explorez ces fonctionnalités connexes :

354 

355* [Créer votre propre canal](/fr/channels-reference) pour les systèmes qui n'ont pas encore de plugins

356* [Remote Control](/fr/remote-control) pour piloter une session locale à partir de votre téléphone au lieu de transférer des événements dans celle-ci

357* [Tâches planifiées](/fr/scheduled-tasks) pour interroger selon un minuteur au lieu de réagir aux événements envoyés

channels-reference.md +749 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Référence des canaux

6 

7> Créez un serveur MCP qui envoie des webhooks, des alertes et des messages de chat dans une session Claude Code. Référence du contrat de canal : déclaration de capacité, événements de notification, outils de réponse, contrôle de l'expéditeur et relais de permission.

8 

9<Note>

10 Les canaux sont en [aperçu de recherche](/fr/channels#research-preview) et nécessitent Claude Code v2.1.80 ou ultérieur. Ils nécessitent une connexion claude.ai. L'authentification par console et clé API n'est pas prise en charge. Les organisations Team et Enterprise doivent [les activer explicitement](/fr/channels#enterprise-controls).

11</Note>

12 

13Un canal est un serveur MCP qui envoie des événements dans une session Claude Code afin que Claude puisse réagir aux choses qui se produisent en dehors du terminal.

14 

15Vous pouvez créer un canal unidirectionnel ou bidirectionnel. Les canaux unidirectionnels transmettent les alertes, webhooks ou événements de surveillance pour que Claude agisse. Les canaux bidirectionnels comme les passerelles de chat [exposent également un outil de réponse](#expose-a-reply-tool) afin que Claude puisse renvoyer des messages. Un canal avec un chemin d'expéditeur de confiance peut également opter pour [relayer les invites de permission](#relay-permission-prompts) afin que vous puissiez approuver ou refuser l'utilisation d'outils à distance.

16 

17Cette page couvre :

18 

19* [Aperçu](#overview) : comment fonctionnent les canaux

20* [Ce dont vous avez besoin](#what-you-need) : exigences et étapes générales

21* [Exemple : créer un récepteur de webhook](#example-build-a-webhook-receiver) : une procédure pas à pas unidirectionnelle minimale

22* [Options du serveur](#server-options) : les champs du constructeur

23* [Format de notification](#notification-format) : la charge utile de l'événement

24* [Exposer un outil de réponse](#expose-a-reply-tool) : permettre à Claude d'envoyer des messages en retour

25* [Contrôler les messages entrants](#gate-inbound-messages) : vérifications de l'expéditeur pour prévenir l'injection de requête

26* [Relayer les invites de permission](#relay-permission-prompts) : transmettre les invites d'approbation d'outils aux canaux distants

27 

28Pour utiliser un canal existant au lieu d'en créer un, consultez [Canaux](/fr/channels). Telegram, Discord, iMessage et fakechat sont inclus dans l'aperçu de recherche.

29 

30## Aperçu

31 

32Un canal est un serveur [MCP](https://modelcontextprotocol.io) qui s'exécute sur la même machine que Claude Code. Claude Code le lance en tant que sous-processus et communique via stdio. Votre serveur de canal est le pont entre les systèmes externes et la session Claude Code :

33 

34* **Plateformes de chat** (Telegram, Discord) : votre plugin s'exécute localement et interroge l'API de la plateforme pour les nouveaux messages. Quand quelqu'un envoie un message direct à votre bot, le plugin reçoit le message et le transmet à Claude. Aucune URL à exposer.

35* **Webhooks** (CI, surveillance) : votre serveur écoute sur un port HTTP local. Les systèmes externes envoient des POST à ce port, et votre serveur envoie la charge utile à Claude.

36 

37<img src="https://mintlify.s3.us-west-1.amazonaws.com/claude-code/fr/images/channel-architecture.svg" alt="Diagramme d'architecture montrant les systèmes externes se connectant à votre serveur de canal local, qui communique avec Claude Code via stdio" />

38 

39## Ce dont vous avez besoin

40 

41La seule exigence stricte est le package [`@modelcontextprotocol/sdk`](https://www.npmjs.com/package/@modelcontextprotocol/sdk) et un runtime compatible Node.js. [Bun](https://bun.sh), [Node](https://nodejs.org) et [Deno](https://deno.com) fonctionnent tous. Les plugins pré-construits dans l'aperçu de recherche utilisent Bun, mais votre canal n'a pas besoin de le faire.

42 

43Votre serveur doit :

44 

451. Déclarer la capacité `claude/channel` afin que Claude Code enregistre un écouteur de notification

462. Émettre des événements `notifications/claude/channel` quand quelque chose se produit

473. Se connecter via [transport stdio](https://modelcontextprotocol.io/docs/concepts/transports#standard-io) (Claude Code lance votre serveur en tant que sous-processus)

48 

49Les sections [Options du serveur](#server-options) et [Format de notification](#notification-format) couvrent chacune de ces points en détail. Consultez [Exemple : créer un récepteur de webhook](#example-build-a-webhook-receiver) pour une procédure pas à pas complète.

50 

51Pendant l'aperçu de recherche, les canaux personnalisés ne sont pas sur la [liste d'approbation](/fr/channels#supported-channels). Utilisez `--dangerously-load-development-channels` pour tester localement. Consultez [Tester pendant l'aperçu de recherche](#test-during-the-research-preview) pour plus de détails.

52 

53## Exemple : créer un récepteur de webhook

54 

55Cette procédure pas à pas crée un serveur d'un seul fichier qui écoute les requêtes HTTP et les transmet dans votre session Claude Code. À la fin, tout ce qui peut envoyer un HTTP POST, comme un pipeline CI, une alerte de surveillance ou une commande `curl`, peut envoyer des événements à Claude.

56 

57Cet exemple utilise [Bun](https://bun.sh) comme runtime pour son serveur HTTP intégré et son support TypeScript. Vous pouvez utiliser [Node](https://nodejs.org) ou [Deno](https://deno.com) à la place ; la seule exigence est le [SDK MCP](https://www.npmjs.com/package/@modelcontextprotocol/sdk).

58 

59<Steps>

60 <Step title="Créer le projet">

61 Créez un nouveau répertoire et installez le SDK MCP :

62 

63 ```bash theme={null}

64 mkdir webhook-channel && cd webhook-channel

65 bun add @modelcontextprotocol/sdk

66 ```

67 </Step>

68 

69 <Step title="Écrire le serveur de canal">

70 Créez un fichier appelé `webhook.ts`. C'est votre serveur de canal entier : il se connecte à Claude Code via stdio, et il écoute les POST HTTP sur le port 8788. Quand une requête arrive, il envoie le corps à Claude en tant qu'événement de canal.

71 

72 ```ts title="webhook.ts" theme={null}

73 #!/usr/bin/env bun

74 import { Server } from '@modelcontextprotocol/sdk/server/index.js'

75 import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'

76 

77 // Créer le serveur MCP et le déclarer comme canal

78 const mcp = new Server(

79 { name: 'webhook', version: '0.0.1' },

80 {

81 // cette clé est ce qui en fait un canal — Claude Code enregistre un écouteur pour elle

82 capabilities: { experimental: { 'claude/channel': {} } },

83 // ajouté à l'invite système de Claude afin qu'il sache comment gérer ces événements

84 instructions: 'Les événements du canal webhook arrivent sous la forme <channel source="webhook" ...>. Ils sont unidirectionnels : lisez-les et agissez, aucune réponse attendue.',

85 },

86 )

87 

88 // Se connecter à Claude Code via stdio (Claude Code lance ce processus)

89 await mcp.connect(new StdioServerTransport())

90 

91 // Démarrer un serveur HTTP qui transmet chaque POST à Claude

92 Bun.serve({

93 port: 8788, // n'importe quel port ouvert fonctionne

94 // localhost uniquement : rien en dehors de cette machine ne peut envoyer de POST

95 hostname: '127.0.0.1',

96 async fetch(req) {

97 const body = await req.text()

98 await mcp.notification({

99 method: 'notifications/claude/channel',

100 params: {

101 content: body, // devient le corps de la balise <channel>

102 // chaque clé devient un attribut de balise, par ex. <channel path="/" method="POST">

103 meta: { path: new URL(req.url).pathname, method: req.method },

104 },

105 })

106 return new Response('ok')

107 },

108 })

109 ```

110 

111 Le fichier fait trois choses dans l'ordre :

112 

113 * **Configuration du serveur** : crée le serveur MCP avec `claude/channel` dans ses capacités, ce qui indique à Claude Code que c'est un canal. La chaîne [`instructions`](#server-options) va dans l'invite système de Claude : dites à Claude quels événements attendre, s'il faut répondre et comment router les réponses si c'est le cas.

114 * **Connexion stdio** : se connecte à Claude Code via stdin/stdout. C'est standard pour tout [serveur MCP](https://modelcontextprotocol.io/docs/concepts/transports#standard-io) : Claude Code le lance en tant que sous-processus.

115 * **Écouteur HTTP** : démarre un serveur web local sur le port 8788. Chaque corps POST est transmis à Claude en tant qu'événement de canal via `mcp.notification()`. Le `content` devient le corps de l'événement, et chaque entrée `meta` devient un attribut sur la balise `<channel>`. L'écouteur a besoin d'accès à l'instance `mcp`, donc il s'exécute dans le même processus. Vous pourriez le diviser en modules séparés pour un projet plus grand.

116 </Step>

117 

118 <Step title="Enregistrer votre serveur avec Claude Code">

119 Ajoutez le serveur à votre configuration MCP afin que Claude Code sache comment le démarrer. Pour un `.mcp.json` au niveau du projet dans le même répertoire, utilisez un chemin relatif. Pour la configuration au niveau de l'utilisateur dans `~/.claude.json`, utilisez le chemin absolu complet afin que le serveur puisse être trouvé à partir de n'importe quel projet :

120 

121 ```json title=".mcp.json" theme={null}

122 {

123 "mcpServers": {

124 "webhook": { "command": "bun", "args": ["./webhook.ts"] }

125 }

126 }

127 ```

128 

129 Claude Code lit votre configuration MCP au démarrage et lance chaque serveur en tant que sous-processus.

130 </Step>

131 

132 <Step title="Le tester">

133 Pendant l'aperçu de recherche, les canaux personnalisés ne sont pas sur la liste d'approbation, donc démarrez Claude Code avec le drapeau de développement :

134 

135 ```bash theme={null}

136 claude --dangerously-load-development-channels server:webhook

137 ```

138 

139 Quand Claude Code démarre, il lit votre configuration MCP, lance votre `webhook.ts` en tant que sous-processus, et l'écouteur HTTP démarre automatiquement sur le port que vous avez configuré (8788 dans cet exemple). Vous n'avez pas besoin de lancer le serveur vous-même.

140 

141 Si vous voyez ' bloqué par la politique de l'organisation ', votre administrateur Team ou Enterprise doit d'abord [activer les canaux](/fr/channels#enterprise-controls).

142 

143 Dans un terminal séparé, simulez un webhook en envoyant un HTTP POST avec un message à votre serveur. Cet exemple envoie une alerte d'échec CI au port 8788 (ou quel que soit le port que vous avez configuré) :

144 

145 ```bash theme={null}

146 curl -X POST localhost:8788 -d "build failed on main: https://ci.example.com/run/1234"

147 ```

148 

149 La charge utile arrive dans votre session Claude Code en tant que balise `<channel>` :

150 

151 ```text theme={null}

152 <channel source="webhook" path="/" method="POST">build failed on main: https://ci.example.com/run/1234</channel>

153 ```

154 

155 Dans votre terminal Claude Code, vous verrez Claude recevoir le message et commencer à répondre : lire des fichiers, exécuter des commandes ou tout ce que le message demande. C'est un canal unidirectionnel, donc Claude agit dans votre session mais ne renvoie rien via le webhook. Pour ajouter des réponses, consultez [Exposer un outil de réponse](#expose-a-reply-tool).

156 

157 Si l'événement n'arrive pas, le diagnostic dépend de ce que `curl` a retourné :

158 

159 * **`curl` réussit mais rien n'atteint Claude** : exécutez `/mcp` dans votre session pour vérifier l'état du serveur. « Impossible de se connecter » signifie généralement une erreur de dépendance ou d'importation dans votre fichier serveur ; vérifiez le journal de débogage à `~/.claude/debug/<session-id>.txt` pour la trace stderr.

160 * **`curl` échoue avec « connexion refusée »** : le port n'est pas encore lié ou un processus obsolète d'une exécution antérieure le maintient. `lsof -i :<port>` montre ce qui écoute ; `kill` le processus obsolète avant de redémarrer votre session.

161 </Step>

162</Steps>

163 

164Le [serveur fakechat](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/fakechat) étend ce modèle avec une interface web, des pièces jointes et un outil de réponse pour le chat bidirectionnel.

165 

166## Tester pendant l'aperçu de recherche

167 

168Pendant l'aperçu de recherche, chaque canal doit être sur la [liste d'approbation](/fr/channels#research-preview) pour s'enregistrer. Le drapeau de développement contourne la liste d'approbation pour des entrées spécifiques après une invite de confirmation. Cet exemple montre les deux types d'entrée :

169 

170```bash theme={null}

171# Tester un plugin que vous développez

172claude --dangerously-load-development-channels plugin:yourplugin@yourmarketplace

173 

174# Tester un serveur .mcp.json nu (pas encore d'enveloppe de plugin)

175claude --dangerously-load-development-channels server:webhook

176```

177 

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

179 

180<Note>

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

182</Note>

183 

184## Options du serveur

185 

186Un canal définit ces options dans le constructeur [`Server`](https://modelcontextprotocol.io/docs/concepts/servers). Les champs `instructions` et `capabilities.tools` sont [MCP standard](https://modelcontextprotocol.io/docs/concepts/servers) ; `capabilities.experimental['claude/channel']` et `capabilities.experimental['claude/channel/permission']` sont les ajouts spécifiques au canal :

187 

188| Champ | Type | Description |

189| :------------------------------------------------------- | :------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

190| `capabilities.experimental['claude/channel']` | `object` | Requis. Toujours `{}`. La présence enregistre l'écouteur de notification. |

191| `capabilities.experimental['claude/channel/permission']` | `object` | Optionnel. Toujours `{}`. Déclare que ce canal peut recevoir des demandes de relais de permission. Quand déclaré, Claude Code transmet les invites d'approbation d'outils à votre canal afin que vous puissiez les approuver ou les refuser à distance. Consultez [Relayer les invites de permission](#relay-permission-prompts). |

192| `capabilities.tools` | `object` | Bidirectionnel uniquement. Toujours `{}`. Capacité d'outil MCP standard. Consultez [Exposer un outil de réponse](#expose-a-reply-tool). |

193| `instructions` | `string` | Recommandé. Ajouté à l'invite système de Claude. Dites à Claude quels événements attendre, ce que les attributs de la balise `<channel>` signifient, s'il faut répondre et, le cas échéant, quel outil utiliser et quel attribut repasser (comme `chat_id`). |

194 

195Pour créer un canal unidirectionnel, omettez `capabilities.tools`. Cet exemple montre une configuration bidirectionnelle avec la capacité de canal, les outils et les instructions définis :

196 

197```ts theme={null}

198import { Server } from '@modelcontextprotocol/sdk/server/index.js'

199 

200const mcp = new Server(

201 { name: 'your-channel', version: '0.0.1' },

202 {

203 capabilities: {

204 experimental: { 'claude/channel': {} }, // enregistre l'écouteur de canal

205 tools: {}, // omettez pour les canaux unidirectionnels

206 },

207 // ajouté à l'invite système de Claude afin qu'il sache comment gérer vos événements

208 instructions: 'Les messages arrivent sous la forme <channel source="your-channel" ...>. Répondez avec l'outil de réponse.',

209 },

210)

211```

212 

213Pour envoyer un événement, appelez `mcp.notification()` avec la méthode `notifications/claude/channel`. Les paramètres sont dans la section suivante.

214 

215## Format de notification

216 

217Votre serveur émet `notifications/claude/channel` avec deux paramètres :

218 

219| Champ | Type | Description |

220| :-------- | :----------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

221| `content` | `string` | Le corps de l'événement. Livré en tant que corps de la balise `<channel>`. |

222| `meta` | `Record<string, string>` | Optionnel. Chaque entrée devient un attribut sur la balise `<channel>` pour le contexte de routage comme l'ID de chat, le nom de l'expéditeur ou la gravité de l'alerte. Les clés doivent être des identifiants : lettres, chiffres et traits de soulignement uniquement. Les clés contenant des tirets ou d'autres caractères sont silencieusement supprimées. |

223 

224Votre serveur envoie des événements en appelant `mcp.notification()` sur l'instance `Server`. Cet exemple envoie une alerte d'échec CI avec deux clés meta :

225 

226```ts theme={null}

227await mcp.notification({

228 method: 'notifications/claude/channel',

229 params: {

230 content: 'build failed on main: https://ci.example.com/run/1234',

231 meta: { severity: 'high', run_id: '1234' },

232 },

233})

234```

235 

236L'événement arrive dans le contexte de Claude enveloppé dans une balise `<channel>`. L'attribut `source` est défini automatiquement à partir du nom configuré de votre serveur :

237 

238```text theme={null}

239<channel source="your-channel" severity="high" run_id="1234">

240build failed on main: https://ci.example.com/run/1234

241</channel>

242```

243 

244## Exposer un outil de réponse

245 

246Si votre canal est bidirectionnel, comme une passerelle de chat plutôt qu'un transmetteur d'alerte, exposez un [outil MCP](https://modelcontextprotocol.io/docs/concepts/tools) standard que Claude peut appeler pour envoyer des messages en retour. Rien dans l'enregistrement de l'outil n'est spécifique au canal. Un outil de réponse a trois composants :

247 

2481. Une entrée `tools: {}` dans les capacités du constructeur `Server` afin que Claude Code découvre l'outil

2492. Des gestionnaires d'outils qui définissent le schéma de l'outil et implémentent la logique d'envoi

2503. Une chaîne `instructions` dans le constructeur `Server` qui indique à Claude quand et comment appeler l'outil

251 

252Pour ajouter ceux-ci au [récepteur de webhook ci-dessus](#example-build-a-webhook-receiver) :

253 

254<Steps>

255 <Step title="Activer la découverte d'outils">

256 Dans votre constructeur `Server` dans `webhook.ts`, ajoutez `tools: {}` aux capacités afin que Claude Code sache que votre serveur offre des outils :

257 

258 ```ts theme={null}

259 capabilities: {

260 experimental: { 'claude/channel': {} },

261 tools: {}, // active la découverte d'outils

262 },

263 ```

264 </Step>

265 

266 <Step title="Enregistrer l'outil de réponse">

267 Ajoutez ce qui suit à `webhook.ts`. L'`import` va en haut du fichier avec vos autres imports ; les deux gestionnaires vont entre le constructeur `Server` et `mcp.connect()`. Cela enregistre un outil `reply` que Claude peut appeler avec un `chat_id` et un `text` :

268 

269 ```ts theme={null}

270 // Ajoutez cet import en haut de webhook.ts

271 import { ListToolsRequestSchema, CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js'

272 

273 // Claude interroge ceci au démarrage pour découvrir quels outils votre serveur offre

274 mcp.setRequestHandler(ListToolsRequestSchema, async () => ({

275 tools: [{

276 name: 'reply',

277 description: 'Envoyer un message en retour sur ce canal',

278 // inputSchema indique à Claude quels arguments passer

279 inputSchema: {

280 type: 'object',

281 properties: {

282 chat_id: { type: 'string', description: 'La conversation dans laquelle répondre' },

283 text: { type: 'string', description: 'Le message à envoyer' },

284 },

285 required: ['chat_id', 'text'],

286 },

287 }],

288 }))

289 

290 // Claude appelle ceci quand il veut invoquer un outil

291 mcp.setRequestHandler(CallToolRequestSchema, async req => {

292 if (req.params.name === 'reply') {

293 const { chat_id, text } = req.params.arguments as { chat_id: string; text: string }

294 // send() est votre sortie : POST à votre plateforme de chat, ou pour les tests locaux

295 // la diffusion SSE montrée dans l'exemple complet ci-dessous.

296 send(`Reply to ${chat_id}: ${text}`)

297 return { content: [{ type: 'text', text: 'sent' }] }

298 }

299 throw new Error(`unknown tool: ${req.params.name}`)

300 })

301 ```

302 </Step>

303 

304 <Step title="Mettre à jour les instructions">

305 Mettez à jour la chaîne `instructions` dans votre constructeur `Server` afin que Claude sache router les réponses via l'outil. Cet exemple indique à Claude de passer `chat_id` à partir de la balise entrante :

306 

307 ```ts theme={null}

308 instructions: 'Les messages arrivent sous la forme <channel source="webhook" chat_id="...">. Répondez avec l'outil de réponse, en passant le chat_id de la balise.'

309 ```

310 </Step>

311</Steps>

312 

313Voici le `webhook.ts` complet avec support bidirectionnel. Les réponses sortantes se diffusent via `GET /events` en utilisant [Server-Sent Events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events) (SSE), donc `curl -N localhost:8788/events` peut les regarder en direct ; le chat entrant arrive sur `POST /` :

314 

315```ts title="webhook.ts complet avec outil de réponse' expandable theme={null}

316#!/usr/bin/env bun

317import { Server } from '@modelcontextprotocol/sdk/server/index.js'

318import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'

319import { ListToolsRequestSchema, CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js'

320 

321// --- Sortant : écrire à n'importe quel écouteur curl -N sur /events ---

322// Un vrai pont enverrait un POST à votre plateforme de chat à la place.

323const listeners = new Set<(chunk: string) => void>()

324function send(text: string) {

325 const chunk = text.split('\n').map(l => `data: ${l}\n`).join('') + '\n'

326 for (const emit of listeners) emit(chunk)

327}

328 

329const mcp = new Server(

330 { name: 'webhook', version: '0.0.1' },

331 {

332 capabilities: {

333 experimental: { 'claude/channel': {} },

334 tools: {},

335 },

336 instructions: 'Les messages arrivent sous la forme <channel source="webhook" chat_id="...">. Répondez avec l'outil de réponse, en passant le chat_id de la balise.',

337 },

338)

339 

340mcp.setRequestHandler(ListToolsRequestSchema, async () => ({

341 tools: [{

342 name: 'reply',

343 description: 'Envoyer un message en retour sur ce canal',

344 inputSchema: {

345 type: 'object',

346 properties: {

347 chat_id: { type: 'string', description: 'La conversation dans laquelle répondre' },

348 text: { type: 'string', description: 'Le message à envoyer' },

349 },

350 required: ['chat_id', 'text'],

351 },

352 }],

353}))

354 

355mcp.setRequestHandler(CallToolRequestSchema, async req => {

356 if (req.params.name === 'reply') {

357 const { chat_id, text } = req.params.arguments as { chat_id: string; text: string }

358 send(`Reply to ${chat_id}: ${text}`)

359 return { content: [{ type: 'text', text: 'sent' }] }

360 }

361 throw new Error(`unknown tool: ${req.params.name}`)

362})

363 

364await mcp.connect(new StdioServerTransport())

365 

366let nextId = 1

367Bun.serve({

368 port: 8788,

369 hostname: '127.0.0.1',

370 idleTimeout: 0, // ne pas fermer les flux SSE inactifs

371 async fetch(req) {

372 const url = new URL(req.url)

373 

374 // GET /events : flux SSE afin que curl -N puisse regarder les réponses de Claude en direct

375 if (req.method === 'GET' && url.pathname === '/events') {

376 const stream = new ReadableStream({

377 start(ctrl) {

378 ctrl.enqueue(': connected\n\n') // afin que curl affiche quelque chose immédiatement

379 const emit = (chunk: string) => ctrl.enqueue(chunk)

380 listeners.add(emit)

381 req.signal.addEventListener('abort', () => listeners.delete(emit))

382 },

383 })

384 return new Response(stream, {

385 headers: { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache' },

386 })

387 }

388 

389 // POST : transmettre à Claude en tant qu'événement de canal

390 const body = await req.text()

391 const chat_id = String(nextId++)

392 await mcp.notification({

393 method: 'notifications/claude/channel',

394 params: {

395 content: body,

396 meta: { chat_id, path: url.pathname, method: req.method },

397 },

398 })

399 return new Response('ok')

400 },

401})

402```

403 

404Le [serveur fakechat](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/fakechat) montre un exemple plus complet avec pièces jointes et édition de messages.

405 

406## Contrôler les messages entrants

407 

408Un canal non contrôlé est un vecteur d'injection de requête. Quiconque peut atteindre votre point de terminaison peut mettre du texte devant Claude. Un canal écoutant une plateforme de chat ou un point de terminaison public a besoin d'une vérification d'expéditeur réelle avant d'émettre quoi que ce soit.

409 

410Vérifiez l'expéditeur par rapport à une liste d'approbation avant d'appeler `mcp.notification()`. Cet exemple supprime tout message d'un expéditeur qui n'est pas dans l'ensemble :

411 

412```ts theme={null}

413const allowed = new Set(loadAllowlist()) // à partir de votre access.json ou équivalent

414 

415// à l'intérieur de votre gestionnaire de messages, avant d'émettre :

416if (!allowed.has(message.from.id)) { // expéditeur, pas salle

417 return // supprimer silencieusement

418}

419await mcp.notification({ ... })

420```

421 

422Contrôlez sur l'identité de l'expéditeur, pas l'identité du chat ou de la salle : `message.from.id` dans l'exemple, pas `message.chat.id`. Dans les chats de groupe, ceux-ci diffèrent, et contrôler sur la salle laisserait quiconque dans un groupe approuvé injecter des messages dans la session.

423 

424Les canaux [Telegram](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/telegram) et [Discord](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/discord) contrôlent sur une liste d'approbation d'expéditeur de la même manière. Ils amorçent la liste par appairage : l'utilisateur envoie un message direct au bot, le bot répond avec un code d'appairage, l'utilisateur l'approuve dans sa session Claude Code, et son ID de plateforme est ajouté. Consultez l'une ou l'autre implémentation pour le flux d'appairage complet. Le canal [iMessage](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/imessage) adopte une approche différente : il détecte les propres adresses de l'utilisateur à partir de la base de données Messages au démarrage et les laisse passer automatiquement, avec d'autres expéditeurs ajoutés par poignée.

425 

426## Relayer les invites de permission

427 

428<Note>

429 Le relais de permission nécessite Claude Code v2.1.81 ou ultérieur. Les versions antérieures ignorent la capacité `claude/channel/permission`.

430</Note>

431 

432Quand Claude appelle un outil qui a besoin d'approbation, la boîte de dialogue du terminal local s'ouvre et la session attend. Un canal bidirectionnel peut opter pour recevoir la même invite en parallèle et la relayer vers vous sur un autre appareil. Les deux restent actifs : vous pouvez répondre dans le terminal ou sur votre téléphone, et Claude Code applique la réponse qui arrive en premier et ferme l'autre.

433 

434Le relais couvre les approbations d'utilisation d'outils comme `Bash`, `Write` et `Edit`. La confiance du projet et les boîtes de dialogue de consentement du serveur MCP ne relaient pas ; celles-ci n'apparaissent que dans le terminal local.

435 

436### Comment fonctionne le relais

437 

438Quand une invite de permission s'ouvre, la boucle de relais a quatre étapes :

439 

4401. Claude Code génère un court ID de demande et notifie votre serveur

4412. Votre serveur transmet l'invite et l'ID à votre application de chat

4423. L'utilisateur distant répond par oui ou non et cet ID

4434. Votre gestionnaire entrant analyse la réponse en un verdict, et Claude Code l'applique uniquement si l'ID correspond à une demande ouverte

444 

445La boîte de dialogue du terminal local reste ouverte pendant tout cela. Si quelqu'un au terminal répond avant l'arrivée du verdict distant, cette réponse est appliquée à la place et la demande distante en attente est supprimée.

446 

447<img src="https://mintlify.s3.us-west-1.amazonaws.com/claude-code/fr/images/channel-permission-relay.svg" alt="Diagramme de séquence : Claude Code envoie une notification permission_request au serveur de canal, le serveur formate et envoie l'invite à l'application de chat, l'humain répond avec un verdict, et le serveur analyse cette réponse en une notification de permission vers Claude Code" />

448 

449### Champs de demande de permission

450 

451La notification sortante de Claude Code est `notifications/claude/channel/permission_request`. Comme la [notification de canal](#notification-format), le transport est MCP standard mais la méthode et le schéma sont des extensions Claude Code. L'objet `params` a quatre champs de chaîne que votre serveur formate dans l'invite sortante :

452 

453| Champ | Description |

454| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

455| `request_id` | Cinq lettres minuscules tirées de `a`-`z` sans `l`, donc cela ne se lit jamais comme un `1` ou un `I` quand tapé sur un téléphone. Incluez-le dans votre invite sortante afin qu'il puisse être répété dans la réponse. Claude Code n'accepte un verdict que s'il porte un ID qu'il a émis. La boîte de dialogue du terminal local n'affiche pas cet ID, donc votre gestionnaire sortant est le seul moyen de l'apprendre. |

456| `tool_name` | Nom de l'outil que Claude veut utiliser, par exemple `Bash` ou `Write`. |

457| `description` | Résumé lisible par l'homme de ce que cet appel d'outil spécifique fait, le même texte que la boîte de dialogue du terminal local affiche. Pour un appel Bash c'est la description de Claude de la commande, ou la commande elle-même si aucune n'a été donnée. |

458| `input_preview` | Les arguments de l'outil sous forme de chaîne JSON, tronqués à 200 caractères. Pour Bash c'est la commande ; pour Write c'est le chemin du fichier et un préfixe du contenu. Omettez-le de votre invite si vous n'avez de la place que pour un message d'une ligne. Votre serveur décide ce qu'il faut afficher. |

459 

460Le verdict que votre serveur renvoie est `notifications/claude/channel/permission` avec deux champs : `request_id` répétant l'ID ci-dessus, et `behavior` défini sur `'allow'` ou `'deny'`. Allow laisse l'appel d'outil procéder ; deny le rejette, comme répondre Non dans la boîte de dialogue locale. Aucun verdict n'affecte les appels futurs.

461 

462### Ajouter le relais à une passerelle de chat

463 

464Ajouter le relais de permission à un canal bidirectionnel prend trois composants :

465 

4661. Une entrée `claude/channel/permission: {}` sous les capacités `experimental` dans votre constructeur `Server` afin que Claude Code sache transmettre les invites

4672. Un gestionnaire de notification pour `notifications/claude/channel/permission_request` qui formate l'invite et l'envoie via votre API de plateforme

4683. Une vérification dans votre gestionnaire de message entrant qui reconnaît `yes <id>` ou `no <id>` et émet une notification de verdict `notifications/claude/channel/permission` au lieu de transmettre le texte à Claude

469 

470Déclarez uniquement la capacité si votre canal [authentifie l'expéditeur](#gate-inbound-messages), car quiconque peut répondre via votre canal peut approuver ou refuser l'utilisation d'outils dans votre session.

471 

472Pour ajouter ceux-ci à une passerelle de chat bidirectionnelle comme celle assemblée dans [Exposer un outil de réponse](#expose-a-reply-tool) :

473 

474<Steps>

475 <Step title="Déclarer la capacité de permission">

476 Dans votre constructeur `Server`, ajoutez `claude/channel/permission: {}` à côté de `claude/channel` sous `experimental` :

477 

478 ```ts theme={null}

479 capabilities: {

480 experimental: {

481 'claude/channel': {},

482 'claude/channel/permission': {}, // opter pour le relais de permission

483 },

484 tools: {},

485 },

486 ```

487 </Step>

488 

489 <Step title="Gérer la demande entrante">

490 Enregistrez un gestionnaire de notification entre votre constructeur `Server` et `mcp.connect()`. Claude Code l'appelle avec les [quatre champs de demande](#permission-request-fields) quand une boîte de dialogue de permission s'ouvre. Votre gestionnaire formate l'invite pour votre plateforme et inclut des instructions pour répondre avec l'ID :

491 

492 ```ts theme={null}

493 import { z } from 'zod'

494 

495 // setNotificationHandler route par z.literal sur le champ method,

496 // donc ce schéma est à la fois le validateur et la clé de dispatch

497 const PermissionRequestSchema = z.object({

498 method: z.literal('notifications/claude/channel/permission_request'),

499 params: z.object({

500 request_id: z.string(), // cinq lettres minuscules, inclure verbatim dans votre invite

501 tool_name: z.string(), // par ex. "Bash", "Write"

502 description: z.string(), // résumé lisible par l'homme de cet appel

503 input_preview: z.string(), // arguments d'outil en JSON, tronqués à ~200 caractères

504 }),

505 })

506 

507 mcp.setNotificationHandler(PermissionRequestSchema, async ({ params }) => {

508 // send() est votre sortie : POST à votre plateforme de chat, ou pour les tests locaux

509 // la diffusion SSE montrée dans l'exemple complet ci-dessous.

510 send(

511 `Claude wants to run ${params.tool_name}: ${params.description}\n\n` +

512 // l'ID dans l'instruction est ce que votre gestionnaire entrant analyse à l'étape 3

513 `Reply "yes ${params.request_id}" or "no ${params.request_id}"`,

514 )

515 })

516 ```

517 </Step>

518 

519 <Step title="Intercepter le verdict dans votre gestionnaire entrant">

520 Votre gestionnaire entrant est la boucle ou le rappel qui reçoit les messages de votre plateforme : le même endroit où vous [contrôlez sur l'expéditeur](#gate-inbound-messages) et émettez `notifications/claude/channel` pour transmettre le chat à Claude. Ajoutez une vérification avant l'appel de transmission de chat qui reconnaît le format du verdict et émet la notification de permission à la place.

521 

522 La regex correspond au format d'ID que Claude Code génère : cinq lettres, jamais `l`. Le drapeau `/i` tolère la correction automatique du téléphone en mettant en majuscules la réponse ; mettez en minuscules l'ID capturé avant de le renvoyer.

523 

524 ```ts theme={null}

525 // correspond à "y abcde", "yes abcde", "n abcde", "no abcde"

526 // [a-km-z] est l'alphabet d'ID que Claude Code utilise (minuscules, ignore 'l')

527 // /i tolère la correction automatique du téléphone ; mettez en minuscules la capture avant d'envoyer

528 const PERMISSION_REPLY_RE = /^\s*(y|yes|n|no)\s+([a-km-z]{5})\s*$/i

529 

530 async function onInbound(message: PlatformMessage) {

531 if (!allowed.has(message.from.id)) return // contrôler sur l'expéditeur d'abord

532 

533 const m = PERMISSION_REPLY_RE.exec(message.text)

534 if (m) {

535 // m[1] est le mot du verdict, m[2] est l'ID de demande

536 // émettre la notification du verdict vers Claude Code au lieu du chat

537 await mcp.notification({

538 method: 'notifications/claude/channel/permission',

539 params: {

540 request_id: m[2].toLowerCase(), // normaliser en cas de majuscules de correction automatique

541 behavior: m[1].toLowerCase().startsWith('y') ? 'allow' : 'deny',

542 },

543 })

544 return // géré comme verdict, ne pas aussi transmettre comme chat

545 }

546 

547 // ne correspondait pas au format du verdict : passer au chemin de chat normal

548 await mcp.notification({

549 method: 'notifications/claude/channel',

550 params: { content: message.text, meta: { chat_id: String(message.chat.id) } },

551 })

552 }

553 ```

554 </Step>

555</Steps>

556 

557Claude Code garde également la boîte de dialogue du terminal local ouverte, donc vous pouvez répondre dans l'un ou l'autre endroit, et la première réponse à arriver est appliquée. Une réponse distante qui ne correspond pas exactement au format attendu échoue de l'une de deux façons, et dans les deux cas la boîte de dialogue reste ouverte :

558 

559* **Format différent** : la regex de votre gestionnaire entrant ne correspond pas, donc du texte comme `approve it` ou `yes` sans ID tombe comme un message normal à Claude.

560* **Format correct, ID incorrect** : votre serveur émet un verdict, mais Claude Code ne trouve aucune demande ouverte avec cet ID et le supprime silencieusement.

561 

562### Exemple complet

563 

564Le `webhook.ts` assemblé ci-dessous combine les trois extensions de cette page : l'outil de réponse, le contrôle de l'expéditeur et le relais de permission. Si vous commencez ici, vous aurez également besoin de la [configuration du projet et de l'entrée `.mcp.json`](#example-build-a-webhook-receiver) de la procédure pas à pas initiale.

565 

566Pour rendre les deux directions testables à partir de curl, l'écouteur HTTP sert deux chemins :

567 

568* **`GET /events`** : maintient un flux SSE ouvert et envoie chaque message sortant en tant que ligne `data:`, donc `curl -N` peut regarder les réponses et les invites de permission de Claude arriver en direct.

569* **`POST /`** : le côté entrant, le même gestionnaire qu'avant, maintenant avec la vérification du format du verdict insérée avant la branche de transmission de chat.

570 

571```ts title="webhook.ts complet avec relais de permission' expandable theme={null}

572#!/usr/bin/env bun

573import { Server } from '@modelcontextprotocol/sdk/server/index.js'

574import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'

575import { ListToolsRequestSchema, CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js'

576import { z } from 'zod'

577 

578// --- Sortant : écrire à n'importe quel écouteur curl -N sur /events ---

579// Un vrai pont enverrait un POST à votre plateforme de chat à la place.

580const listeners = new Set<(chunk: string) => void>()

581function send(text: string) {

582 const chunk = text.split('\n').map(l => `data: ${l}\n`).join('') + '\n'

583 for (const emit of listeners) emit(chunk)

584}

585 

586// Liste d'approbation de l'expéditeur. Pour la procédure pas à pas locale nous faisons confiance à la valeur d'en-tête X-Sender unique

587// "dev" ; un vrai pont vérifierait l'ID utilisateur de la plateforme.

588const allowed = new Set(['dev'])

589 

590const mcp = new Server(

591 { name: 'webhook', version: '0.0.1' },

592 {

593 capabilities: {

594 experimental: {

595 'claude/channel': {},

596 'claude/channel/permission': {}, // opter pour le relais de permission

597 },

598 tools: {},

599 },

600 instructions:

601 'Les messages arrivent sous la forme <channel source="webhook" chat_id="...">. ' +

602 'Répondez avec l'outil de réponse, en passant le chat_id de la balise.',

603 },

604)

605 

606// --- outil de réponse : Claude appelle ceci pour envoyer un message en retour ---

607mcp.setRequestHandler(ListToolsRequestSchema, async () => ({

608 tools: [{

609 name: 'reply',

610 description: 'Envoyer un message en retour sur ce canal',

611 inputSchema: {

612 type: 'object',

613 properties: {

614 chat_id: { type: 'string', description: 'La conversation dans laquelle répondre' },

615 text: { type: 'string', description: 'Le message à envoyer' },

616 },

617 required: ['chat_id', 'text'],

618 },

619 }],

620}))

621 

622mcp.setRequestHandler(CallToolRequestSchema, async req => {

623 if (req.params.name === 'reply') {

624 const { chat_id, text } = req.params.arguments as { chat_id: string; text: string }

625 send(`Reply to ${chat_id}: ${text}`)

626 return { content: [{ type: 'text', text: 'sent' }] }

627 }

628 throw new Error(`unknown tool: ${req.params.name}`)

629})

630 

631// --- relais de permission : Claude Code (pas Claude) appelle ceci quand une boîte de dialogue s'ouvre

632const PermissionRequestSchema = z.object({

633 method: z.literal('notifications/claude/channel/permission_request'),

634 params: z.object({

635 request_id: z.string(),

636 tool_name: z.string(),

637 description: z.string(),

638 input_preview: z.string(),

639 }),

640})

641 

642mcp.setNotificationHandler(PermissionRequestSchema, async ({ params }) => {

643 send(

644 `Claude wants to run ${params.tool_name}: ${params.description}\n\n` +

645 `Reply "yes ${params.request_id}" or "no ${params.request_id}"`,

646 )

647})

648 

649await mcp.connect(new StdioServerTransport())

650 

651// --- HTTP sur :8788 : GET /events diffuse la sortie, POST route l'entrée ---

652const PERMISSION_REPLY_RE = /^\s*(y|yes|n|no)\s+([a-km-z]{5})\s*$/i

653let nextId = 1

654 

655Bun.serve({

656 port: 8788,

657 hostname: '127.0.0.1',

658 idleTimeout: 0, // ne pas fermer les flux SSE inactifs

659 async fetch(req) {

660 const url = new URL(req.url)

661 

662 // GET /events : flux SSE afin que curl -N puisse regarder les réponses et les invites en direct

663 if (req.method === 'GET' && url.pathname === '/events') {

664 const stream = new ReadableStream({

665 start(ctrl) {

666 ctrl.enqueue(': connected\n\n') // afin que curl affiche quelque chose immédiatement

667 const emit = (chunk: string) => ctrl.enqueue(chunk)

668 listeners.add(emit)

669 req.signal.addEventListener('abort', () => listeners.delete(emit))

670 },

671 })

672 return new Response(stream, {

673 headers: { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache' },

674 })

675 }

676 

677 // tout le reste est entrant : contrôler sur l'expéditeur d'abord

678 const body = await req.text()

679 const sender = req.headers.get('X-Sender') ?? ''

680 if (!allowed.has(sender)) return new Response('forbidden', { status: 403 })

681 

682 // vérifier le format du verdict avant de traiter comme chat

683 const m = PERMISSION_REPLY_RE.exec(body)

684 if (m) {

685 await mcp.notification({

686 method: 'notifications/claude/channel/permission',

687 params: {

688 request_id: m[2].toLowerCase(),

689 behavior: m[1].toLowerCase().startsWith('y') ? 'allow' : 'deny',

690 },

691 })

692 return new Response('verdict recorded')

693 }

694 

695 // chat normal : transmettre à Claude en tant qu'événement de canal

696 const chat_id = String(nextId++)

697 await mcp.notification({

698 method: 'notifications/claude/channel',

699 params: { content: body, meta: { chat_id, path: url.pathname } },

700 })

701 return new Response('ok')

702 },

703})

704```

705 

706Testez le chemin du verdict dans trois terminaux. Le premier est votre session Claude Code, démarrée avec le [drapeau de développement](#test-during-the-research-preview) afin qu'elle lance `webhook.ts` :

707 

708```bash theme={null}

709claude --dangerously-load-development-channels server:webhook

710```

711 

712Dans le second, diffusez le côté sortant afin que vous puissiez voir les réponses de Claude et toutes les invites de permission au fur et à mesure qu'elles se déclenchent :

713 

714```bash theme={null}

715curl -N localhost:8788/events

716```

717 

718Dans le troisième, envoyez un message qui fera que Claude essaiera d'exécuter une commande :

719 

720```bash theme={null}

721curl -d "list the files in this directory" -H "X-Sender: dev" localhost:8788

722```

723 

724La boîte de dialogue de permission locale s'ouvre dans votre terminal Claude Code. Un moment plus tard, l'invite apparaît dans le flux `/events`, y compris l'ID à cinq lettres. Approuvez-le du côté distant :

725 

726```bash theme={null}

727curl -d "yes <id>" -H "X-Sender: dev" localhost:8788

728```

729 

730La boîte de dialogue locale se ferme et l'outil s'exécute. La réponse de Claude revient via l'outil `reply` et atterrit aussi dans le flux.

731 

732Les trois pièces spécifiques au canal dans ce fichier :

733 

734* **Capacités** dans le constructeur `Server` : `claude/channel` enregistre l'écouteur de notification, `claude/channel/permission` opte pour le relais de permission, `tools` laisse Claude découvrir l'outil de réponse.

735* **Chemins sortants** : le gestionnaire de l'outil `reply` est ce que Claude appelle pour les réponses conversationnelles ; le gestionnaire de notification `PermissionRequestSchema` est ce que Claude Code appelle quand une boîte de dialogue de permission s'ouvre. Les deux appellent `send()` pour diffuser sur `/events`, mais ils sont déclenchés par différentes parties du système.

736* **Gestionnaire HTTP** : `GET /events` maintient un flux SSE ouvert afin que curl puisse regarder la sortie en direct ; `POST` est entrant, contrôlé sur l'en-tête `X-Sender`. Un corps `yes <id>` ou `no <id>` va à Claude Code en tant que notification de verdict et n'atteint jamais Claude ; tout le reste est transmis à Claude en tant qu'événement de canal.

737 

738## Empaqueter en tant que plugin

739 

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

741 

742Un canal publié sur votre propre marketplace a toujours besoin de `--dangerously-load-development-channels` pour s'exécuter, car il n'est pas sur la [liste d'approbation](/fr/channels#supported-channels). Pour le faire ajouter, [soumettez-le au marketplace officiel](/fr/plugins#submit-your-plugin-to-the-official-marketplace). Les plugins de canal passent par un examen de sécurité avant d'être approuvés. Sur les plans Team et Enterprise, un administrateur peut plutôt inclure votre plugin dans la liste [`allowedChannelPlugins`](/fr/channels#restrict-which-channel-plugins-can-run) de l'organisation, qui remplace la liste d'approbation Anthropic par défaut.

743 

744## Voir aussi

745 

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

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

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

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

checkpointing.md +89 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Checkpointing

6 

7> Suivez, rembobinez et résumez les modifications et la conversation de Claude pour gérer l'état de la session.

8 

9Claude Code suit automatiquement les modifications de fichiers effectuées par Claude au fur et à mesure que vous travaillez, ce qui vous permet d'annuler rapidement les modifications et de revenir à des états antérieurs si quelque chose s'écarte de la trajectoire.

10 

11## Comment fonctionne le checkpointing

12 

13Au fur et à mesure que vous travaillez avec Claude, le checkpointing capture automatiquement l'état de votre code avant chaque modification. Ce filet de sécurité vous permet de poursuivre des tâches ambitieuses et à grande échelle en sachant que vous pouvez toujours revenir à un état de code antérieur.

14 

15### Suivi automatique

16 

17Claude Code suit toutes les modifications apportées par ses outils d'édition de fichiers :

18 

19* Chaque invite utilisateur crée un nouveau checkpoint

20* Les checkpoints persistent entre les sessions, vous pouvez donc y accéder dans les conversations reprises

21* Nettoyés automatiquement avec les sessions après 30 jours (configurable)

22 

23### Rembobiner et résumer

24 

25Appuyez sur `Esc` deux fois (`Esc` + `Esc`) ou utilisez la commande `/rewind` pour ouvrir le menu de rembobinage. Une liste déroulante affiche chacune de vos invites de la session. Sélectionnez le point sur lequel vous souhaitez agir, puis choisissez une action :

26 

27* **Restaurer le code et la conversation** : revenir au code et à la conversation à ce moment

28* **Restaurer la conversation** : rembobiner jusqu'à ce message tout en conservant le code actuel

29* **Restaurer le code** : annuler les modifications de fichiers tout en conservant la conversation

30* **Résumer à partir d'ici** : compresser la conversation à partir de ce moment en avant dans un résumé, libérant de l'espace de context window

31* **Annuler** : revenir à la liste des messages sans apporter de modifications

32 

33Après la restauration de la conversation ou la résumé, l'invite originale du message sélectionné est restaurée dans le champ de saisie afin que vous puissiez la renvoyer ou la modifier.

34 

35#### Restaurer vs. résumer

36 

37Les trois options de restauration annulent l'état : elles annulent les modifications de code, l'historique de conversation, ou les deux. « Résumer à partir d'ici » fonctionne différemment :

38 

39* Les messages avant le message sélectionné restent intacts

40* Le message sélectionné et tous les messages suivants sont remplacés par un résumé compact généré par l'IA

41* Aucun fichier sur le disque n'est modifié

42* Les messages originaux sont conservés dans la transcription de session, afin que Claude puisse référencer les détails si nécessaire

43 

44C'est similaire à `/compact`, mais ciblé : au lieu de résumer l'ensemble de la conversation, vous conservez le contexte initial en détail complet et ne compressez que les parties qui utilisent de l'espace. Vous pouvez taper des instructions optionnelles pour guider sur quoi le résumé se concentre.

45 

46<Note>

47 Résumer vous garde dans la même session et compresse le contexte. Si vous souhaitez vous brancher et essayer une approche différente tout en préservant la session originale intacte, utilisez plutôt [fork](/fr/how-claude-code-works#resume-or-fork-sessions) (`claude --continue --fork-session`).

48</Note>

49 

50## Cas d'usage courants

51 

52Les checkpoints sont particulièrement utiles quand :

53 

54* **Explorer les alternatives** : essayez différentes approches d'implémentation sans perdre votre point de départ

55* **Récupérer des erreurs** : annulez rapidement les modifications qui ont introduit des bugs ou cassé des fonctionnalités

56* **Itérer sur les fonctionnalités** : expérimentez des variations en sachant que vous pouvez revenir à des états fonctionnels

57* **Libérer de l'espace de contexte** : résumez une session de débogage verbeuse à partir du point médian en avant, en conservant vos instructions initiales intactes

58 

59## Limitations

60 

61### Les modifications de commandes Bash ne sont pas suivies

62 

63Le checkpointing ne suit pas les fichiers modifiés par les commandes bash. Par exemple, si Claude Code exécute :

64 

65```bash theme={null}

66rm file.txt

67mv old.txt new.txt

68cp source.txt dest.txt

69```

70 

71Ces modifications de fichiers ne peuvent pas être annulées via le rembobinage. Seules les modifications de fichiers directs effectuées via les outils d'édition de fichiers de Claude sont suivies.

72 

73### Les modifications externes ne sont pas suivies

74 

75Le checkpointing suit uniquement les fichiers qui ont été modifiés au cours de la session actuelle. Les modifications manuelles que vous apportez aux fichiers en dehors de Claude Code et les modifications d'autres sessions concurrentes ne sont normalement pas capturées, sauf si elles modifient par hasard les mêmes fichiers que la session actuelle.

76 

77### Pas un remplacement du contrôle de version

78 

79Les checkpoints sont conçus pour une récupération rapide au niveau de la session. Pour un historique de version permanent et la collaboration :

80 

81* Continuez à utiliser le contrôle de version (ex. Git) pour les commits, les branches et l'historique à long terme

82* Les checkpoints complètent mais ne remplacent pas le contrôle de version approprié

83* Pensez aux checkpoints comme « annulation locale » et à Git comme « historique permanent »

84 

85## Voir aussi

86 

87* [Mode interactif](/fr/interactive-mode) - Raccourcis clavier et contrôles de session

88* [Commandes intégrées](/fr/commands) - Accès aux checkpoints en utilisant `/rewind`

89* [Référence CLI](/fr/cli-reference) - Options de ligne de commande

chrome.md +231 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Utiliser Claude Code avec Chrome (bêta)

6 

7> Connectez Claude Code à votre navigateur Chrome pour tester des applications web, déboguer avec les journaux de console, automatiser le remplissage de formulaires et extraire des données des pages web.

8 

9Claude Code s'intègre à l'[extension Claude in Chrome du navigateur](https://chromewebstore.google.com/detail/claude/fcoeoabgfenejglbffodgkkbkcdhcgfn) pour vous offrir des capacités d'automatisation du navigateur depuis la CLI ou l'[extension VS Code](/fr/vs-code#automate-browser-tasks-with-chrome). Créez votre code, puis testez et déboguez dans le navigateur sans changer de contexte.

10 

11Claude ouvre de nouveaux onglets pour les tâches du navigateur et partage l'état de connexion de votre navigateur, ce qui lui permet d'accéder à n'importe quel site auquel vous êtes déjà connecté. Les actions du navigateur s'exécutent en temps réel dans une fenêtre Chrome visible. Lorsque Claude rencontre une page de connexion ou un CAPTCHA, il s'arrête et vous demande de le gérer manuellement.

12 

13<Note>

14 L'intégration Chrome est en bêta et fonctionne actuellement avec Google Chrome et Microsoft Edge. Elle n'est pas encore prise en charge sur Brave, Arc ou d'autres navigateurs basés sur Chromium. WSL (Windows Subsystem for Linux) n'est pas non plus pris en charge.

15</Note>

16 

17## Capacités

18 

19Avec Chrome connecté, vous pouvez enchaîner les actions du navigateur avec les tâches de codage dans un seul flux de travail :

20 

21* **Débogage en direct** : lisez les erreurs de console et l'état du DOM directement, puis corrigez le code qui les a causées

22* **Vérification de la conception** : créez une interface utilisateur à partir d'une maquette Figma, puis ouvrez-la dans le navigateur pour vérifier qu'elle correspond

23* **Test d'application web** : testez la validation des formulaires, vérifiez les régressions visuelles ou vérifiez les flux utilisateur

24* **Applications web authentifiées** : interagissez avec Google Docs, Gmail, Notion ou n'importe quelle application à laquelle vous êtes connecté sans connecteurs API

25* **Extraction de données** : extrayez des informations structurées des pages web et enregistrez-les localement

26* **Automatisation des tâches** : automatisez les tâches répétitives du navigateur comme la saisie de données, le remplissage de formulaires ou les flux multi-sites

27* **Enregistrement de session** : enregistrez les interactions du navigateur sous forme de GIF pour documenter ou partager ce qui s'est passé

28 

29## Prérequis

30 

31Avant d'utiliser Claude Code avec Chrome, vous avez besoin de :

32 

33* Navigateur [Google Chrome](https://www.google.com/chrome/) ou [Microsoft Edge](https://www.microsoft.com/edge)

34* Extension [Claude in Chrome](https://chromewebstore.google.com/detail/claude/fcoeoabgfenejglbffodgkkbkcdhcgfn) version 1.0.36 ou supérieure, disponible dans le Chrome Web Store pour les deux navigateurs

35* [Claude Code](/fr/quickstart#step-1-install-claude-code) version 2.0.73 ou supérieure

36* Un plan Anthropic direct (Pro, Max, Team ou Enterprise)

37 

38<Note>

39 L'intégration Chrome n'est pas disponible via des fournisseurs tiers comme Amazon Bedrock, Google Cloud Vertex AI ou Microsoft Foundry. Si vous accédez à Claude exclusivement via un fournisseur tiers, vous avez besoin d'un compte claude.ai séparé pour utiliser cette fonctionnalité.

40</Note>

41 

42## Démarrer dans la CLI

43 

44<Steps>

45 <Step title="Lancer Claude Code avec Chrome">

46 Démarrez Claude Code avec le drapeau `--chrome` :

47 

48 ```bash theme={null}

49 claude --chrome

50 ```

51 

52 Vous pouvez également activer Chrome au sein d'une session existante en exécutant `/chrome`.

53 </Step>

54 

55 <Step title="Demander à Claude d'utiliser le navigateur">

56 Cet exemple accède à une page, interagit avec elle et rapporte ce qu'il trouve, le tout depuis votre terminal ou éditeur :

57 

58 ```text theme={null}

59 Go to code.claude.com/docs, click on the search box,

60 type "hooks", and tell me what results appear

61 ```

62 </Step>

63</Steps>

64 

65Exécutez `/chrome` à tout moment pour vérifier l'état de la connexion, gérer les autorisations ou reconnecter l'extension.

66 

67Pour VS Code, consultez [l'automatisation du navigateur dans VS Code](/fr/vs-code#automate-browser-tasks-with-chrome).

68 

69### Activer Chrome par défaut

70 

71Pour éviter de passer `--chrome` à chaque session, exécutez `/chrome` et sélectionnez « Enabled by default ».

72 

73Dans l'[extension VS Code](/fr/vs-code#automate-browser-tasks-with-chrome), Chrome est disponible chaque fois que l'extension Chrome est installée. Aucun drapeau supplémentaire n'est nécessaire.

74 

75<Note>

76 L'activation de Chrome par défaut dans la CLI augmente l'utilisation du contexte puisque les outils du navigateur sont toujours chargés. Si vous remarquez une augmentation de la consommation de contexte, désactivez ce paramètre et utilisez `--chrome` uniquement si nécessaire.

77</Note>

78 

79### Gérer les autorisations du site

80 

81Les autorisations au niveau du site sont héritées de l'extension Chrome. Gérez les autorisations dans les paramètres de l'extension Chrome pour contrôler les sites que Claude peut parcourir, cliquer et taper.

82 

83## Exemples de flux de travail

84 

85Ces exemples montrent les façons courantes de combiner les actions du navigateur avec les tâches de codage. Exécutez `/mcp` et sélectionnez `claude-in-chrome` pour voir la liste complète des outils de navigateur disponibles.

86 

87### Tester une application web locale

88 

89Lors du développement d'une application web, demandez à Claude de vérifier que vos modifications fonctionnent correctement :

90 

91```text theme={null}

92I just updated the login form validation. Can you open localhost:3000,

93try submitting the form with invalid data, and check if the error

94messages appear correctly?

95```

96 

97Claude accède à votre serveur local, interagit avec le formulaire et rapporte ce qu'il observe.

98 

99### Déboguer avec les journaux de console

100 

101Claude peut lire la sortie de la console pour aider à diagnostiquer les problèmes. Dites à Claude quels modèles rechercher plutôt que de demander toute la sortie de la console, car les journaux peuvent être verbeux :

102 

103```text theme={null}

104Open the dashboard page and check the console for any errors when

105the page loads.

106```

107 

108Claude lit les messages de la console et peut filtrer les modèles ou types d'erreurs spécifiques.

109 

110### Automatiser le remplissage de formulaires

111 

112Accélérez les tâches répétitives de saisie de données :

113 

114```text theme={null}

115I have a spreadsheet of customer contacts in contacts.csv. For each row,

116go to the CRM at crm.example.com, click "Add Contact", and fill in the

117name, email, and phone fields.

118```

119 

120Claude lit votre fichier local, navigue dans l'interface web et saisit les données pour chaque enregistrement.

121 

122### Rédiger du contenu dans Google Docs

123 

124Utilisez Claude pour écrire directement dans vos documents sans configuration d'API :

125 

126```text theme={null}

127Draft a project update based on the recent commits and add it to my

128Google Doc at docs.google.com/document/d/abc123

129```

130 

131Claude ouvre le document, clique dans l'éditeur et tape le contenu. Cela fonctionne avec n'importe quelle application web à laquelle vous êtes connecté : Gmail, Notion, Sheets, et plus.

132 

133### Extraire des données des pages web

134 

135Extrayez des informations structurées des sites web :

136 

137```text theme={null}

138Go to the product listings page and extract the name, price, and

139availability for each item. Save the results as a CSV file.

140```

141 

142Claude accède à la page, lit le contenu et compile les données dans un format structuré.

143 

144### Exécuter des flux de travail multi-sites

145 

146Coordonnez les tâches sur plusieurs sites web :

147 

148```text theme={null}

149Check my calendar for meetings tomorrow, then for each meeting with

150an external attendee, look up their company website and add a note

151about what they do.

152```

153 

154Claude travaille sur plusieurs onglets pour rassembler les informations et terminer le flux de travail.

155 

156### Enregistrer un GIF de démonstration

157 

158Créez des enregistrements partageables des interactions du navigateur :

159 

160```text theme={null}

161Record a GIF showing how to complete the checkout flow, from adding

162an item to the cart through to the confirmation page.

163```

164 

165Claude enregistre la séquence d'interaction et l'enregistre sous forme de fichier GIF.

166 

167## Dépannage

168 

169### Extension non détectée

170 

171Si Claude Code affiche « Chrome extension not detected » :

172 

1731. Vérifiez que l'extension Chrome est installée et activée dans `chrome://extensions`

1742. Vérifiez que Claude Code est à jour en exécutant `claude --version`

1753. Vérifiez que Chrome est en cours d'exécution

1764. Exécutez `/chrome` et sélectionnez « Reconnect extension » pour rétablir la connexion

1775. Si le problème persiste, redémarrez Claude Code et Chrome

178 

179La première fois que vous activez l'intégration Chrome, Claude Code installe un fichier de configuration d'hôte de messagerie native. Chrome lit ce fichier au démarrage, donc si l'extension n'est pas détectée à votre première tentative, redémarrez Chrome pour récupérer la nouvelle configuration.

180 

181Si la connexion échoue toujours, vérifiez que le fichier de configuration d'hôte existe à :

182 

183Pour Chrome :

184 

185* **macOS** : `~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json`

186* **Linux** : `~/.config/google-chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json`

187* **Windows** : vérifiez `HKCU\Software\Google\Chrome\NativeMessagingHosts\` dans le Registre Windows

188 

189Pour Edge :

190 

191* **macOS** : `~/Library/Application Support/Microsoft Edge/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json`

192* **Linux** : `~/.config/microsoft-edge/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json`

193* **Windows** : vérifiez `HKCU\Software\Microsoft\Edge\NativeMessagingHosts\` dans le Registre Windows

194 

195### Le navigateur ne répond pas

196 

197Si les commandes du navigateur de Claude cessent de fonctionner :

198 

1991. Vérifiez si une boîte de dialogue modale (alerte, confirmation, invite) bloque la page. Les boîtes de dialogue JavaScript bloquent les événements du navigateur et empêchent Claude de recevoir des commandes. Fermez la boîte de dialogue manuellement, puis demandez à Claude de continuer.

2002. Demandez à Claude de créer un nouvel onglet et réessayez

2013. Redémarrez l'extension Chrome en la désactivant et en la réactivant dans `chrome://extensions`

202 

203### La connexion s'interrompt lors de longues sessions

204 

205Le service worker de l'extension Chrome peut devenir inactif lors de sessions prolongées, ce qui rompt la connexion. Si les outils du navigateur cessent de fonctionner après une période d'inactivité, exécutez `/chrome` et sélectionnez « Reconnect extension ».

206 

207### Problèmes spécifiques à Windows

208 

209Sous Windows, vous pouvez rencontrer :

210 

211* **Conflits de tuyau nommé (EADDRINUSE)** : si un autre processus utilise le même tuyau nommé, redémarrez Claude Code. Fermez toute autre session Claude Code qui pourrait utiliser Chrome.

212* **Erreurs d'hôte de messagerie native** : si l'hôte de messagerie native plante au démarrage, essayez de réinstaller Claude Code pour régénérer la configuration d'hôte.

213 

214### Messages d'erreur courants

215 

216Ce sont les erreurs les plus fréquemment rencontrées et comment les résoudre :

217 

218| Erreur | Cause | Solution |

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

220| « Browser extension is not connected » | L'hôte de messagerie native ne peut pas atteindre l'extension | Redémarrez Chrome et Claude Code, puis exécutez `/chrome` pour reconnecter |

221| « Extension not detected » | L'extension Chrome n'est pas installée ou est désactivée | Installez ou activez l'extension dans `chrome://extensions` |

222| « No tab available » | Claude a tenté d'agir avant qu'un onglet soit prêt | Demandez à Claude de créer un nouvel onglet et réessayez |

223| « Receiving end does not exist » | Le service worker de l'extension est devenu inactif | Exécutez `/chrome` et sélectionnez « Reconnect extension » |

224 

225## Voir aussi

226 

227* [Utiliser Claude Code dans VS Code](/fr/vs-code#automate-browser-tasks-with-chrome) : automatisation du navigateur dans l'extension VS Code

228* [Référence CLI](/fr/cli-reference) : drapeaux de ligne de commande incluant `--chrome`

229* [Flux de travail courants](/fr/common-workflows) : plus de façons d'utiliser Claude Code

230* [Données et confidentialité](/fr/data-usage) : comment Claude Code gère vos données

231* [Démarrer avec Claude in Chrome](https://support.claude.com/en/articles/12012173-getting-started-with-claude-in-chrome) : documentation complète pour l'extension Chrome, incluant les raccourcis, la planification et les autorisations

claude-code-on-the-web.md +773 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Utiliser Claude Code sur le web

6 

7> Configurez les environnements cloud, les scripts de configuration, l'accès réseau et Docker dans le sandbox d'Anthropic. Déplacez les sessions entre le web et le terminal avec `--remote` et `--teleport`.

8 

9<Note>

10 Claude Code sur le web est en aperçu de recherche pour les utilisateurs Pro, Max et Team, ainsi que pour les utilisateurs Enterprise disposant de sièges premium ou de sièges Chat + Claude Code.

11</Note>

12 

13Claude Code sur le web exécute les tâches sur l'infrastructure cloud gérée par Anthropic à [claude.ai/code](https://claude.ai/code). Les sessions persistent même si vous fermez votre navigateur, et vous pouvez les surveiller depuis l'application mobile Claude.

14 

15<Tip>

16 Nouveau sur Claude Code sur le web ? Commencez par [Démarrer](/fr/web-quickstart) pour connecter votre compte GitHub et soumettre votre première tâche.

17</Tip>

18 

19Cette page couvre :

20 

21* [Options d'authentification GitHub](#github-authentication-options) : deux façons de connecter GitHub

22* [L'environnement cloud](#the-cloud-environment) : quelle configuration est transférée, quels outils sont installés et comment configurer les environnements

23* [Scripts de configuration](#setup-scripts) et gestion des dépendances

24* [Accès réseau](#network-access) : niveaux, proxies et liste d'autorisation par défaut

25* [Déplacer les tâches entre le web et le terminal](#move-tasks-between-web-and-terminal) avec `--remote` et `--teleport`

26* [Travailler avec les sessions](#work-with-sessions) : examiner, partager, archiver, supprimer

27* [Correction automatique des demandes de tirage](#auto-fix-pull-requests) : répondre automatiquement aux défaillances CI et aux commentaires d'examen

28* [Sécurité et isolation](#security-and-isolation) : comment les sessions sont isolées

29* [Limitations](#limitations) : limites de débit et restrictions de plateforme

30 

31## Options d'authentification GitHub

32 

33Les sessions cloud ont besoin d'accès à vos référentiels GitHub pour cloner le code et pousser les branches. Vous pouvez accorder l'accès de deux façons :

34 

35| Méthode | Comment ça marche | Idéal pour |

36| :--------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------- |

37| **Application GitHub** | Installez l'application Claude GitHub sur des référentiels spécifiques lors de [l'intégration web](/fr/web-quickstart). L'accès est limité par référentiel. | Les équipes qui veulent une autorisation explicite par référentiel |

38| **`/web-setup`** | Exécutez `/web-setup` dans votre terminal pour synchroniser votre jeton CLI `gh` local vers votre compte Claude. L'accès correspond à ce que votre jeton `gh` peut voir. | Les développeurs individuels qui utilisent déjà `gh` |

39 

40L'une ou l'autre méthode fonctionne. [`/schedule`](/fr/routines) vérifie l'une ou l'autre forme d'accès et vous invite à exécuter `/web-setup` si aucune n'est configurée. Consultez [Connecter depuis votre terminal](/fr/web-quickstart#connect-from-your-terminal) pour la procédure pas à pas de `/web-setup`.

41 

42L'application GitHub est requise pour [Auto-fix](#auto-fix-pull-requests), qui utilise l'application pour recevoir les webhooks PR. Si vous vous connectez avec `/web-setup` et souhaitez ultérieurement Auto-fix, installez l'application sur ces référentiels.

43 

44Les administrateurs Team et Enterprise peuvent désactiver `/web-setup` avec le bouton bascule Quick web setup sur [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).

45 

46<Note>

47 Les organisations avec [Zéro rétention de données](/fr/zero-data-retention) activée ne peuvent pas utiliser `/web-setup` ou d'autres fonctionnalités de session cloud.

48</Note>

49 

50## L'environnement cloud

51 

52Chaque session s'exécute dans une VM fraîche gérée par Anthropic avec votre référentiel cloné. Cette section couvre ce qui est disponible au démarrage d'une session et comment la personnaliser.

53 

54### Ce qui est disponible dans les sessions cloud

55 

56Les sessions cloud commencent par un clone frais de votre référentiel. Tout ce qui est validé dans le référentiel est disponible. Tout ce que vous avez installé ou configuré uniquement sur votre propre machine ne l'est pas.

57 

58| | Disponible dans les sessions cloud | Pourquoi |

59| :----------------------------------------------------------------------------- | :--------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

60| Votre `CLAUDE.md` du référentiel | Oui | Fait partie du clone |

61| Vos hooks `.claude/settings.json` du référentiel | Oui | Fait partie du clone |

62| Vos serveurs MCP `.mcp.json` du référentiel | Oui | Fait partie du clone |

63| Votre `.claude/rules/` du référentiel | Oui | Fait partie du clone |

64| Votre `.claude/skills/`, `.claude/agents/`, `.claude/commands/` du référentiel | Oui | Fait partie du clone |

65| Plugins déclarés dans `.claude/settings.json` | Oui | Installés au démarrage de la session à partir de la [marketplace](/fr/plugin-marketplaces) que vous avez déclarée. Nécessite un accès réseau pour atteindre la source de la marketplace |

66| Votre `~/.claude/CLAUDE.md` utilisateur | Non | Vit sur votre machine, pas dans le référentiel |

67| Plugins activés uniquement dans vos paramètres utilisateur | Non | Les `enabledPlugins` limités à l'utilisateur vivent dans `~/.claude/settings.json`. Déclarez-les plutôt dans le `.claude/settings.json` du référentiel |

68| Serveurs MCP que vous avez ajoutés avec `claude mcp add` | Non | Ceux-ci écrivent dans votre configuration utilisateur locale, pas dans le référentiel. Déclarez le serveur dans [`.mcp.json`](/fr/mcp#project-scope) à la place |

69| Jetons API statiques et identifiants | Non | Aucun magasin de secrets dédié n'existe encore. Voir ci-dessous |

70| Authentification interactive comme AWS SSO | Non | Non pris en charge. SSO nécessite une connexion basée sur le navigateur qui ne peut pas s'exécuter dans une session cloud |

71 

72Pour rendre la configuration disponible dans les sessions cloud, validez-la dans le référentiel. Un magasin de secrets dédié n'est pas encore disponible. Les variables d'environnement et les scripts de configuration sont stockés dans la configuration de l'environnement, visibles à quiconque peut modifier cet environnement. Si vous avez besoin de secrets dans une session cloud, ajoutez-les comme variables d'environnement en gardant cette visibilité à l'esprit.

73 

74### Outils installés

75 

76Les sessions cloud sont livrées avec des runtimes de langage courants, des outils de construction et des bases de données pré-installés. Le tableau ci-dessous résume ce qui est inclus par catégorie.

77 

78| Catégorie | Inclus |

79| :------------------- | :------------------------------------------------------------------------------- |

80| **Python** | Python 3.x avec pip, poetry, uv, black, mypy, pytest, ruff |

81| **Node.js** | 20, 21 et 22 via nvm, avec npm, yarn, pnpm, bun¹, eslint, prettier, chromedriver |

82| **Ruby** | 3.1, 3.2, 3.3 avec gem, bundler, rbenv |

83| **PHP** | 8.4 avec Composer |

84| **Java** | OpenJDK 21 avec Maven et Gradle |

85| **Go** | dernière version stable avec support des modules |

86| **Rust** | rustc et cargo |

87| **C/C++** | GCC, Clang, cmake, ninja, conan |

88| **Docker** | docker, dockerd, docker compose |

89| **Bases de données** | PostgreSQL 16, Redis 7.0 |

90| **Utilitaires** | git, jq, yq, ripgrep, tmux, vim, nano |

91 

92¹ Bun est installé mais a des [problèmes de compatibilité proxy](#install-dependencies-with-a-sessionstart-hook) connus pour la récupération de paquets.

93 

94Pour les versions exactes, demandez à Claude d'exécuter `check-tools` dans une session cloud. Cette commande n'existe que dans les sessions cloud.

95 

96### Travailler avec les problèmes et demandes de tirage GitHub

97 

98Les sessions cloud incluent des outils GitHub intégrés qui permettent à Claude de lire les problèmes, de lister les demandes de tirage, de récupérer les diffs et de publier des commentaires sans aucune configuration. Ces outils s'authentifient via le [proxy GitHub](#github-proxy) en utilisant la méthode que vous avez configurée sous [Options d'authentification GitHub](#github-authentication-options), donc votre jeton n'entre jamais dans le conteneur.

99 

100Le CLI `gh` n'est pas pré-installé. Si vous avez besoin d'une commande `gh` que les outils intégrés ne couvrent pas, comme `gh release` ou `gh workflow run`, installez et authentifiez-la vous-même :

101 

102<Steps>

103 <Step title="Installer gh dans votre script de configuration">

104 Ajoutez `apt update && apt install -y gh` à votre [script de configuration](#setup-scripts).

105 </Step>

106 

107 <Step title="Fournir un jeton">

108 Ajoutez une variable d'environnement `GH_TOKEN` à vos [paramètres d'environnement](#configure-your-environment) avec un jeton d'accès personnel GitHub. `gh` lit `GH_TOKEN` automatiquement, donc aucune étape `gh auth login` n'est nécessaire.

109 </Step>

110</Steps>

111 

112### Lier les artefacts à la session

113 

114Chaque session cloud a une URL de transcription sur claude.ai, et la session peut lire son propre ID à partir de la variable d'environnement `CLAUDE_CODE_REMOTE_SESSION_ID`. Utilisez ceci pour mettre un lien traçable dans les corps PR, les messages de commit, les publications Slack ou les rapports générés afin qu'un examinateur puisse ouvrir l'exécution qui les a produits.

115 

116Demandez à Claude de construire le lien à partir de la variable d'environnement. La commande suivante imprime l'URL :

117 

118```bash theme={null}

119echo "https://claude.ai/code/${CLAUDE_CODE_REMOTE_SESSION_ID}"

120```

121 

122### Exécuter les tests, démarrer les services et ajouter des paquets

123 

124Claude exécute les tests dans le cadre du travail sur une tâche. Demandez-le dans votre invite, comme « corriger les tests échoués dans `tests/` » ou « exécuter pytest après chaque modification ». Les exécuteurs de tests comme pytest, jest et cargo test fonctionnent directement puisqu'ils sont pré-installés.

125 

126PostgreSQL et Redis sont pré-installés mais ne s'exécutent pas par défaut. Demandez à Claude de démarrer chacun pendant la session :

127 

128```bash theme={null}

129service postgresql start

130```

131 

132```bash theme={null}

133service redis-server start

134```

135 

136Docker est disponible pour exécuter les services conteneurisés. Demandez à Claude d'exécuter `docker compose up` pour démarrer les services de votre projet. L'accès réseau pour extraire les images suit le [niveau d'accès](#access-levels) de votre environnement, et les [valeurs par défaut de confiance](#default-allowed-domains) incluent Docker Hub et d'autres registres courants.

137 

138Si vos images sont volumineuses ou lentes à extraire, ajoutez `docker compose pull` ou `docker compose build` à votre [script de configuration](#setup-scripts). Les images extraites sont sauvegardées dans l'[environnement en cache](#environment-caching), donc chaque nouvelle session les a sur le disque. Le cache stocke uniquement les fichiers, pas les processus en cours d'exécution, donc Claude démarre toujours les conteneurs à chaque session.

139 

140Pour ajouter des paquets qui ne sont pas pré-installés, utilisez un [script de configuration](#setup-scripts). La sortie du script est [mise en cache](#environment-caching), donc les paquets que vous installez là sont disponibles au démarrage de chaque session sans réinstallation à chaque fois. Vous pouvez également demander à Claude d'installer des paquets pendant la session, mais ces installations ne persistent pas entre les sessions.

141 

142### Limites de ressources

143 

144Les sessions cloud s'exécutent avec des plafonds de ressources approximatifs qui peuvent changer au fil du temps :

145 

146* 4 vCPU

147* 16 Go de RAM

148* 30 Go de disque

149 

150Les tâches nécessitant beaucoup plus de mémoire, comme les gros travaux de construction ou les tests gourmands en mémoire, peuvent échouer ou être terminées. Pour les charges de travail au-delà de ces limites, utilisez [Contrôle à distance](/fr/remote-control) pour exécuter Claude Code sur votre propre matériel.

151 

152### Configurer votre environnement

153 

154Les environnements contrôlent [l'accès réseau](#network-access), les variables d'environnement et le [script de configuration](#setup-scripts) qui s'exécute avant le démarrage d'une session. Consultez [Outils installés](#installed-tools) pour ce qui est disponible sans aucune configuration. Vous pouvez gérer les environnements à partir de l'interface web ou du terminal :

155 

156| Action | Comment |

157| :------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

158| Ajouter un environnement | Sélectionnez l'environnement actuel pour ouvrir le sélecteur, puis sélectionnez **Ajouter un environnement**. La boîte de dialogue inclut le nom, le niveau d'accès réseau, les variables d'environnement et le script de configuration. |

159| Modifier un environnement | Sélectionnez l'icône des paramètres à droite du nom de l'environnement. |

160| Archiver un environnement | Ouvrez l'environnement pour le modifier et sélectionnez **Archiver**. Les environnements archivés sont masqués du sélecteur mais les sessions existantes continuent de s'exécuter. |

161| Définir la valeur par défaut pour `--remote` | Exécutez `/remote-env` dans votre terminal. Si vous avez un seul environnement, cette commande affiche votre configuration actuelle. `/remote-env` sélectionne uniquement la valeur par défaut ; ajoutez, modifiez et archivez les environnements à partir de l'interface web. |

162 

163Les variables d'environnement utilisent le format `.env` avec une paire `KEY=value` par ligne. N'enveloppez pas les valeurs entre guillemets, car les guillemets sont stockés comme faisant partie de la valeur.

164 

165```text theme={null}

166NODE_ENV=development

167LOG_LEVEL=debug

168DATABASE_URL=postgres://localhost:5432/myapp

169```

170 

171## Scripts de configuration

172 

173Un script de configuration est un script Bash qui s'exécute au démarrage d'une nouvelle session cloud, avant le lancement de Claude Code. Utilisez les scripts de configuration pour installer les dépendances, configurer les outils ou récupérer tout ce dont la session a besoin et qui n'est pas pré-installé.

174 

175Les scripts s'exécutent en tant que root sur Ubuntu 24.04, donc `apt install` et la plupart des gestionnaires de paquets de langage fonctionnent.

176 

177Pour ajouter un script de configuration, ouvrez la boîte de dialogue des paramètres d'environnement et entrez votre script dans le champ **Script de configuration**.

178 

179Cet exemple installe le CLI `gh`, qui n'est pas pré-installé :

180 

181```bash theme={null}

182#!/bin/bash

183apt update && apt install -y gh

184```

185 

186Si le script se termine avec un code non nul, la session ne démarre pas. Ajoutez `|| true` aux commandes non critiques pour éviter de bloquer la session sur une défaillance d'installation intermittente.

187 

188<Note>

189 Les scripts de configuration qui installent des paquets ont besoin d'un accès réseau pour atteindre les registres. L'accès réseau **Trusted** par défaut permet les connexions aux [domaines de paquets courants](#default-allowed-domains) y compris npm, PyPI, RubyGems et crates.io. Les scripts échoueront à installer les paquets si votre environnement utilise l'accès réseau **None**.

190</Note>

191 

192### Mise en cache de l'environnement

193 

194Le script de configuration s'exécute la première fois que vous démarrez une session dans un environnement. Après son achèvement, Anthropic crée un snapshot du système de fichiers et réutilise ce snapshot comme point de départ pour les sessions ultérieures. Les nouvelles sessions commencent avec vos dépendances, outils et images Docker déjà sur le disque, et l'étape du script de configuration est ignorée. Cela maintient le démarrage rapide même lorsque le script installe de grandes chaînes d'outils ou extrait des images de conteneur.

195 

196Le cache capture les fichiers, pas les processus en cours d'exécution. Tout ce que le script de configuration écrit sur le disque est transféré. Les services ou conteneurs qu'il démarre ne le sont pas, donc démarrez-les par session en demandant à Claude ou avec un [hook SessionStart](#setup-scripts-vs-sessionstart-hooks).

197 

198Le script de configuration s'exécute à nouveau pour reconstruire le cache lorsque vous modifiez le script de configuration de l'environnement ou les hôtes réseau autorisés, et lorsque le cache atteint son expiration après environ sept jours. La reprise d'une session existante ne réexécute jamais le script de configuration.

199 

200Vous n'avez pas besoin d'activer la mise en cache ou de gérer les snapshots vous-même.

201 

202### Scripts de configuration vs. hooks SessionStart

203 

204Utilisez un script de configuration pour installer les choses dont le cloud a besoin mais que votre ordinateur portable a déjà, comme un runtime de langage ou un outil CLI. Utilisez un hook [SessionStart](/fr/hooks#sessionstart) pour la configuration du projet qui devrait s'exécuter partout, cloud et local, comme `npm install`.

205 

206Les deux s'exécutent au démarrage d'une session, mais ils appartiennent à des endroits différents :

207 

208| | Scripts de configuration | Hooks SessionStart |

209| -------------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |

210| Attaché à | L'environnement cloud | Votre référentiel |

211| Configuré dans | Interface utilisateur de l'environnement cloud | `.claude/settings.json` dans votre référentiel |

212| S'exécute | Avant le lancement de Claude Code, lorsqu'aucun [environnement en cache](#environment-caching) n'est disponible | Après le lancement de Claude Code, sur chaque session y compris les sessions reprises |

213| Portée | Environnements cloud uniquement | Local et cloud |

214 

215Les hooks SessionStart peuvent également être définis dans votre `~/.claude/settings.json` au niveau de l'utilisateur localement, mais les paramètres au niveau de l'utilisateur ne sont pas transférés aux sessions cloud. Dans le cloud, seuls les hooks validés dans le référentiel s'exécutent.

216 

217### Installer les dépendances avec un hook SessionStart

218 

219Pour installer les dépendances uniquement dans les sessions cloud, ajoutez un hook SessionStart au `.claude/settings.json` de votre référentiel :

220 

221```json theme={null}

222{

223 "hooks": {

224 "SessionStart": [

225 {

226 "matcher": "startup|resume",

227 "hooks": [

228 {

229 "type": "command",

230 "command": "\"$CLAUDE_PROJECT_DIR\"/scripts/install_pkgs.sh"

231 }

232 ]

233 }

234 ]

235 }

236}

237```

238 

239Créez le script à `scripts/install_pkgs.sh` et rendez-le exécutable avec `chmod +x`. La variable d'environnement `CLAUDE_CODE_REMOTE` est définie sur `true` dans les sessions cloud, vous pouvez donc l'utiliser pour ignorer l'exécution locale :

240 

241```bash theme={null}

242#!/bin/bash

243 

244if [ "$CLAUDE_CODE_REMOTE" != "true" ]; then

245 exit 0

246fi

247 

248npm install

249pip install -r requirements.txt

250exit 0

251```

252 

253Les hooks SessionStart ont certaines limitations dans les sessions cloud :

254 

255* **Pas de portée cloud uniquement** : les hooks s'exécutent dans les sessions locales et cloud. Pour ignorer l'exécution locale, vérifiez la variable d'environnement `CLAUDE_CODE_REMOTE` comme indiqué ci-dessus.

256* **Nécessite un accès réseau** : les commandes d'installation ont besoin d'atteindre les registres de paquets. Si votre environnement utilise l'accès réseau **None**, ces hooks échouent. La [liste d'autorisation par défaut](#default-allowed-domains) sous **Trusted** couvre npm, PyPI, RubyGems et crates.io.

257* **Compatibilité du proxy** : tout le trafic sortant passe par un [proxy de sécurité](#security-proxy). Certains gestionnaires de paquets ne fonctionnent pas correctement avec ce proxy. Bun est un exemple connu.

258* **Ajoute une latence de démarrage** : les hooks s'exécutent chaque fois qu'une session démarre ou reprend, contrairement aux scripts de configuration qui bénéficient de la [mise en cache de l'environnement](#environment-caching). Gardez les scripts d'installation rapides en vérifiant si les dépendances sont déjà présentes avant de les réinstaller.

259 

260Pour persister les variables d'environnement pour les commandes Bash suivantes, écrivez dans le fichier à `$CLAUDE_ENV_FILE`. Consultez [Hooks SessionStart](/fr/hooks#sessionstart) pour plus de détails.

261 

262Remplacer l'image de base par votre propre image Docker n'est pas encore pris en charge. Utilisez un script de configuration pour installer ce dont vous avez besoin en haut de l'[image fournie](#installed-tools), ou exécutez votre image en tant que conteneur aux côtés de Claude avec `docker compose`.

263 

264## Accès réseau

265 

266L'accès réseau contrôle les connexions sortantes de l'environnement cloud. Chaque environnement spécifie un niveau d'accès, et vous pouvez l'étendre avec des domaines autorisés personnalisés. La valeur par défaut est **Trusted**, qui permet les registres de paquets et autres [domaines autorisés](#default-allowed-domains).

267 

268### Niveaux d'accès

269 

270Choisissez un niveau d'accès lorsque vous créez ou modifiez un environnement :

271 

272| Niveau | Connexions sortantes |

273| :---------- | :-------------------------------------------------------------------------------------------------- |

274| **None** | Aucun accès réseau sortant |

275| **Trusted** | [Domaines autorisés](#default-allowed-domains) uniquement : registres de paquets, GitHub, SDK cloud |

276| **Full** | N'importe quel domaine |

277| **Custom** | Votre propre liste d'autorisation, incluant optionnellement les valeurs par défaut |

278 

279Les opérations GitHub utilisent un [proxy séparé](#github-proxy) qui est indépendant de ce paramètre.

280 

281### Autoriser des domaines spécifiques

282 

283Pour autoriser les domaines qui ne figurent pas dans la liste Trusted, sélectionnez **Custom** dans les paramètres d'accès réseau de l'environnement. Un champ **Allowed domains** apparaît. Entrez un domaine par ligne :

284 

285```text theme={null}

286api.example.com

287*.internal.example.com

288registry.example.com

289```

290 

291Utilisez `*.` pour la correspondance de sous-domaine générique. Cochez **Also include default list of common package managers** pour conserver les [domaines Trusted](#default-allowed-domains) aux côtés de vos entrées personnalisées, ou laissez-le décoché pour autoriser uniquement ce que vous listez.

292 

293### Proxy GitHub

294 

295Pour la sécurité, toutes les opérations GitHub passent par un service proxy dédié qui gère de manière transparente toutes les interactions git. À l'intérieur du sandbox, le client git s'authentifie à l'aide d'une identité personnalisée limitée. Ce proxy :

296 

297* Gère l'authentification GitHub de manière sécurisée : le client git utilise une identité limitée à l'intérieur du sandbox, que le proxy vérifie et traduit en votre jeton d'authentification GitHub réel

298* Restreint les opérations de poussée git à la branche de travail actuelle pour la sécurité

299* Permet le clonage, la récupération et les opérations PR tout en maintenant les limites de sécurité

300 

301### Proxy de sécurité

302 

303Les environnements s'exécutent derrière un proxy réseau HTTP/HTTPS pour la sécurité et la prévention des abus. Tout le trafic Internet sortant passe par ce proxy, qui fournit :

304 

305* Protection contre les demandes malveillantes

306* Limitation de débit et prévention des abus

307* Filtrage de contenu pour une sécurité renforcée

308 

309### Domaines autorisés par défaut

310 

311Lors de l'utilisation de l'accès réseau **Trusted**, les domaines suivants sont autorisés par défaut. Les domaines marqués avec `*` indiquent une correspondance de sous-domaine générique, donc `*.gcr.io` autorise n'importe quel sous-domaine de `gcr.io`.

312 

313<AccordionGroup>

314 <Accordion title="Services Anthropic">

315 * api.anthropic.com

316 * statsig.anthropic.com

317 * docs.claude.com

318 * platform.claude.com

319 * code.claude.com

320 * claude.ai

321 </Accordion>

322 

323 <Accordion title="Contrôle de version">

324 * github.com

325 * [www.github.com](http://www.github.com)

326 * api.github.com

327 * npm.pkg.github.com

328 * raw\.githubusercontent.com

329 * pkg-npm.githubusercontent.com

330 * objects.githubusercontent.com

331 * release-assets.githubusercontent.com

332 * codeload.github.com

333 * avatars.githubusercontent.com

334 * camo.githubusercontent.com

335 * gist.github.com

336 * gitlab.com

337 * [www.gitlab.com](http://www.gitlab.com)

338 * registry.gitlab.com

339 * bitbucket.org

340 * [www.bitbucket.org](http://www.bitbucket.org)

341 * api.bitbucket.org

342 </Accordion>

343 

344 <Accordion title="Registres de conteneurs">

345 * registry-1.docker.io

346 * auth.docker.io

347 * index.docker.io

348 * hub.docker.com

349 * [www.docker.com](http://www.docker.com)

350 * production.cloudflare.docker.com

351 * download.docker.com

352 * gcr.io

353 * \*.gcr.io

354 * ghcr.io

355 * mcr.microsoft.com

356 * \*.data.mcr.microsoft.com

357 * public.ecr.aws

358 </Accordion>

359 

360 <Accordion title="Plateformes cloud">

361 * cloud.google.com

362 * accounts.google.com

363 * gcloud.google.com

364 * \*.googleapis.com

365 * storage.googleapis.com

366 * compute.googleapis.com

367 * container.googleapis.com

368 * azure.com

369 * portal.azure.com

370 * microsoft.com

371 * [www.microsoft.com](http://www.microsoft.com)

372 * \*.microsoftonline.com

373 * packages.microsoft.com

374 * dotnet.microsoft.com

375 * dot.net

376 * visualstudio.com

377 * dev.azure.com

378 * \*.amazonaws.com

379 * \*.api.aws

380 * oracle.com

381 * [www.oracle.com](http://www.oracle.com)

382 * java.com

383 * [www.java.com](http://www.java.com)

384 * java.net

385 * [www.java.net](http://www.java.net)

386 * download.oracle.com

387 * yum.oracle.com

388 </Accordion>

389 

390 <Accordion title="Gestionnaires de paquets JavaScript et Node">

391 * registry.npmjs.org

392 * [www.npmjs.com](http://www.npmjs.com)

393 * [www.npmjs.org](http://www.npmjs.org)

394 * npmjs.com

395 * npmjs.org

396 * yarnpkg.com

397 * registry.yarnpkg.com

398 </Accordion>

399 

400 <Accordion title="Gestionnaires de paquets Python">

401 * pypi.org

402 * [www.pypi.org](http://www.pypi.org)

403 * files.pythonhosted.org

404 * pythonhosted.org

405 * test.pypi.org

406 * pypi.python.org

407 * pypa.io

408 * [www.pypa.io](http://www.pypa.io)

409 </Accordion>

410 

411 <Accordion title="Gestionnaires de paquets Ruby">

412 * rubygems.org

413 * [www.rubygems.org](http://www.rubygems.org)

414 * api.rubygems.org

415 * index.rubygems.org

416 * ruby-lang.org

417 * [www.ruby-lang.org](http://www.ruby-lang.org)

418 * rubyforge.org

419 * [www.rubyforge.org](http://www.rubyforge.org)

420 * rubyonrails.org

421 * [www.rubyonrails.org](http://www.rubyonrails.org)

422 * rvm.io

423 * get.rvm.io

424 </Accordion>

425 

426 <Accordion title="Gestionnaires de paquets Rust">

427 * crates.io

428 * [www.crates.io](http://www.crates.io)

429 * index.crates.io

430 * static.crates.io

431 * rustup.rs

432 * static.rust-lang.org

433 * [www.rust-lang.org](http://www.rust-lang.org)

434 </Accordion>

435 

436 <Accordion title="Gestionnaires de paquets Go">

437 * proxy.golang.org

438 * sum.golang.org

439 * index.golang.org

440 * golang.org

441 * [www.golang.org](http://www.golang.org)

442 * goproxy.io

443 * pkg.go.dev

444 </Accordion>

445 

446 <Accordion title="Gestionnaires de paquets JVM">

447 * maven.org

448 * repo.maven.org

449 * central.maven.org

450 * repo1.maven.org

451 * repo.maven.apache.org

452 * jcenter.bintray.com

453 * gradle.org

454 * [www.gradle.org](http://www.gradle.org)

455 * services.gradle.org

456 * plugins.gradle.org

457 * kotlinlang.org

458 * [www.kotlinlang.org](http://www.kotlinlang.org)

459 * spring.io

460 * repo.spring.io

461 </Accordion>

462 

463 <Accordion title="Autres gestionnaires de paquets">

464 * packagist.org (PHP Composer)

465 * [www.packagist.org](http://www.packagist.org)

466 * repo.packagist.org

467 * nuget.org (.NET NuGet)

468 * [www.nuget.org](http://www.nuget.org)

469 * api.nuget.org

470 * pub.dev (Dart/Flutter)

471 * api.pub.dev

472 * hex.pm (Elixir/Erlang)

473 * [www.hex.pm](http://www.hex.pm)

474 * cpan.org (Perl CPAN)

475 * [www.cpan.org](http://www.cpan.org)

476 * metacpan.org

477 * [www.metacpan.org](http://www.metacpan.org)

478 * api.metacpan.org

479 * cocoapods.org (iOS/macOS)

480 * [www.cocoapods.org](http://www.cocoapods.org)

481 * cdn.cocoapods.org

482 * haskell.org

483 * [www.haskell.org](http://www.haskell.org)

484 * hackage.haskell.org

485 * swift.org

486 * [www.swift.org](http://www.swift.org)

487 </Accordion>

488 

489 <Accordion title="Distributions Linux">

490 * archive.ubuntu.com

491 * security.ubuntu.com

492 * ubuntu.com

493 * [www.ubuntu.com](http://www.ubuntu.com)

494 * \*.ubuntu.com

495 * ppa.launchpad.net

496 * launchpad.net

497 * [www.launchpad.net](http://www.launchpad.net)

498 * \*.nixos.org

499 </Accordion>

500 

501 <Accordion title="Outils de développement et plateformes">

502 * dl.k8s.io (Kubernetes)

503 * pkgs.k8s.io

504 * k8s.io

505 * [www.k8s.io](http://www.k8s.io)

506 * releases.hashicorp.com (HashiCorp)

507 * apt.releases.hashicorp.com

508 * rpm.releases.hashicorp.com

509 * archive.releases.hashicorp.com

510 * hashicorp.com

511 * [www.hashicorp.com](http://www.hashicorp.com)

512 * repo.anaconda.com (Anaconda/Conda)

513 * conda.anaconda.org

514 * anaconda.org

515 * [www.anaconda.com](http://www.anaconda.com)

516 * anaconda.com

517 * continuum.io

518 * apache.org (Apache)

519 * [www.apache.org](http://www.apache.org)

520 * archive.apache.org

521 * downloads.apache.org

522 * eclipse.org (Eclipse)

523 * [www.eclipse.org](http://www.eclipse.org)

524 * download.eclipse.org

525 * nodejs.org (Node.js)

526 * [www.nodejs.org](http://www.nodejs.org)

527 * developer.apple.com

528 * developer.android.com

529 * pkg.stainless.com

530 * binaries.prisma.sh

531 </Accordion>

532 

533 <Accordion title="Services cloud et surveillance">

534 * statsig.com

535 * [www.statsig.com](http://www.statsig.com)

536 * api.statsig.com

537 * sentry.io

538 * \*.sentry.io

539 * downloads.sentry-cdn.com

540 * http-intake.logs.datadoghq.com

541 * \*.datadoghq.com

542 * \*.datadoghq.eu

543 * api.honeycomb.io

544 </Accordion>

545 

546 <Accordion title="Livraison de contenu et miroirs">

547 * sourceforge.net

548 * \*.sourceforge.net

549 * packagecloud.io

550 * \*.packagecloud.io

551 * fonts.googleapis.com

552 * fonts.gstatic.com

553 </Accordion>

554 

555 <Accordion title="Schéma et configuration">

556 * json-schema.org

557 * [www.json-schema.org](http://www.json-schema.org)

558 * json.schemastore.org

559 * [www.schemastore.org](http://www.schemastore.org)

560 </Accordion>

561 

562 <Accordion title="Model Context Protocol">

563 * \*.modelcontextprotocol.io

564 </Accordion>

565</AccordionGroup>

566 

567## Déplacer les tâches entre le web et le terminal

568 

569Ces flux de travail nécessitent le [CLI Claude Code](/fr/quickstart) connecté au même compte claude.ai. Vous pouvez démarrer de nouvelles sessions cloud à partir de votre terminal, ou extraire les sessions cloud dans votre terminal pour continuer localement. Les sessions cloud persistent même si vous fermez votre ordinateur portable, et vous pouvez les surveiller de n'importe où, y compris depuis l'application mobile Claude.

570 

571<Note>

572 À partir du CLI, le transfert de session est unidirectionnel : vous pouvez extraire les sessions cloud dans votre terminal avec `--teleport`, mais vous ne pouvez pas pousser une session de terminal existante vers le web. L'indicateur `--remote` crée une nouvelle session cloud pour votre référentiel actuel. L'[application Desktop](/fr/desktop#continue-in-another-surface) fournit un menu Continue in qui peut envoyer une session locale vers le web.

573</Note>

574 

575### Du terminal au web

576 

577Démarrez une session cloud à partir de la ligne de commande avec l'indicateur `--remote` :

578 

579```bash theme={null}

580claude --remote "Fix the authentication bug in src/auth/login.ts"

581```

582 

583Cela crée une nouvelle session cloud sur claude.ai. La session clone votre répertoire courant du serveur distant GitHub à votre branche actuelle, donc poussez d'abord si vous avez des commits locaux, puisque la VM clone depuis GitHub plutôt que depuis votre machine. `--remote` fonctionne avec un seul référentiel à la fois. La tâche s'exécute dans le cloud tandis que vous continuez à travailler localement.

584 

585<Note>

586 `--remote` crée des sessions cloud. `--remote-control` n'est pas lié : il expose une session CLI locale pour la surveillance depuis le web. Consultez [Contrôle à distance](/fr/remote-control).

587</Note>

588 

589Utilisez `/tasks` dans le CLI Claude Code pour vérifier la progression, ou ouvrez la session sur claude.ai ou l'application mobile Claude pour interagir directement. De là, vous pouvez diriger Claude, fournir des commentaires ou répondre à des questions comme dans n'importe quelle autre conversation.

590 

591#### Conseils pour les tâches cloud

592 

593**Planifiez localement, exécutez à distance** : pour les tâches complexes, démarrez Claude en mode plan pour collaborer sur l'approche, puis envoyez le travail vers le cloud :

594 

595```bash theme={null}

596claude --permission-mode plan

597```

598 

599En mode plan, Claude lit les fichiers, exécute les commandes pour explorer et propose un plan sans modifier le code source. Une fois que vous êtes satisfait, enregistrez le plan dans le référentiel, validez et poussez afin que la VM cloud puisse le cloner. Ensuite, démarrez une session cloud pour l'exécution autonome :

600 

601```bash theme={null}

602claude --remote "Execute the migration plan in docs/migration-plan.md"

603```

604 

605Ce modèle vous donne le contrôle sur la stratégie tout en permettant à Claude d'exécuter de manière autonome dans le cloud.

606 

607**Planifiez dans le cloud avec ultraplan** : pour rédiger et examiner le plan lui-même dans une session web, utilisez [ultraplan](/fr/ultraplan). Claude génère le plan sur Claude Code sur le web tandis que vous continuez à travailler, puis vous commentez les sections dans votre navigateur et choisissez d'exécuter à distance ou d'envoyer le plan vers votre terminal.

608 

609**Exécutez les tâches en parallèle** : chaque commande `--remote` crée sa propre session cloud qui s'exécute indépendamment. Vous pouvez lancer plusieurs tâches et elles s'exécuteront toutes simultanément dans des sessions séparées :

610 

611```bash theme={null}

612claude --remote "Fix the flaky test in auth.spec.ts"

613claude --remote "Update the API documentation"

614claude --remote "Refactor the logger to use structured output"

615```

616 

617Surveillez toutes les sessions avec `/tasks` dans le CLI Claude Code. Lorsqu'une session se termine, vous pouvez créer une PR à partir de l'interface web ou [téléporter](#from-web-to-terminal) la session vers votre terminal pour continuer à travailler.

618 

619#### Envoyer les référentiels locaux sans GitHub

620 

621Lorsque vous exécutez `claude --remote` à partir d'un référentiel qui n'est pas connecté à GitHub, Claude Code regroupe votre référentiel local et le télécharge directement vers la session cloud. Le paquet inclut votre historique de référentiel complet sur toutes les branches, plus toute modification non validée des fichiers suivis.

622 

623Ce repli s'active automatiquement lorsque l'accès à GitHub n'est pas disponible. Pour le forcer même lorsque GitHub est connecté, définissez `CCR_FORCE_BUNDLE=1` :

624 

625```bash theme={null}

626CCR_FORCE_BUNDLE=1 claude --remote "Run the test suite and fix any failures"

627```

628 

629Les référentiels regroupés doivent respecter ces limites :

630 

631* Le répertoire doit être un référentiel git avec au moins un commit

632* Le référentiel regroupé doit être inférieur à 100 Mo. Les référentiels plus grands reviennent à regrouper uniquement la branche actuelle, puis à un snapshot unique aplati de l'arborescence de travail, et échouent uniquement si le snapshot est toujours trop volumineux

633* Les fichiers non suivis ne sont pas inclus ; exécutez `git add` sur les fichiers que vous souhaitez que la session cloud voie

634* Les sessions créées à partir d'un paquet ne peuvent pas pousser vers un serveur distant à moins que vous ayez également [authentification GitHub](#github-authentication-options) configurée

635 

636### Du web au terminal

637 

638Extrayez une session cloud dans votre terminal en utilisant l'une de ces options :

639 

640* **Utilisation de `--teleport`** : à partir de la ligne de commande, exécutez `claude --teleport` pour un sélecteur de session interactif, ou `claude --teleport <session-id>` pour reprendre une session spécifique directement. Si vous avez des modifications non validées, vous serez invité à les ranger d'abord.

641* **Utilisation de `/teleport`** : à l'intérieur d'une session CLI existante, exécutez `/teleport` (ou `/tp`) pour ouvrir le même sélecteur de session sans redémarrer Claude Code.

642* **À partir de `/tasks`** : exécutez `/tasks` pour voir vos sessions en arrière-plan, puis appuyez sur `t` pour vous téléporter dans l'une d'elles

643* **À partir de l'interface web** : sélectionnez **Open in CLI** pour copier une commande que vous pouvez coller dans votre terminal

644 

645Lorsque vous téléportez une session, Claude vérifie que vous êtes dans le bon référentiel, récupère et extrait la branche de la session cloud, et charge l'historique complet de la conversation dans votre terminal.

646 

647`--teleport` est distinct de `--resume`. `--resume` rouvre une conversation à partir de l'historique local de cette machine et ne liste pas les sessions cloud ; `--teleport` extrait une session cloud et sa branche.

648 

649#### Exigences de téléportation

650 

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

652 

653| Exigence | Détails |

654| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |

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

656| Référentiel correct | Vous devez exécuter `--teleport` à partir d'une extraction du même référentiel, pas d'une fourche. |

657| Branche disponible | La branche de la session cloud doit avoir été poussée vers le serveur distant. La téléportation la récupère et l'extrait automatiquement. |

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

659 

660#### `--teleport` n'est pas disponible

661 

662La téléportation nécessite l'authentification par abonnement claude.ai. Si vous êtes authentifié via clé API, Bedrock, Vertex AI ou Microsoft Foundry, exécutez `/login` pour vous connecter avec votre compte claude.ai à la place. Si vous êtes déjà connecté via claude.ai et `--teleport` n'est toujours pas disponible, votre organisation a peut-être désactivé les sessions cloud.

663 

664## Travailler avec les sessions

665 

666Les sessions apparaissent dans la barre latérale à claude.ai/code. De là, vous pouvez examiner les modifications, partager avec les coéquipiers, archiver le travail terminé ou supprimer les sessions définitivement.

667 

668### Gérer le contexte

669 

670Les sessions cloud prennent en charge les [commandes intégrées](/fr/commands) qui produisent une sortie textuelle. Les commandes qui ouvrent un sélecteur de terminal interactif, comme `/model` ou `/config`, ne sont pas disponibles.

671 

672Pour la gestion du contexte spécifiquement :

673 

674| Commande | Fonctionne dans les sessions cloud | Notes |

675| :--------- | :--------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------ |

676| `/compact` | Oui | Résume la conversation pour libérer du contexte. Accepte les instructions de focus optionnelles comme `/compact keep the test output` |

677| `/context` | Oui | Affiche ce qui est actuellement dans la fenêtre de contexte |

678| `/clear` | Non | Démarrez une nouvelle session à partir de la barre latérale à la place |

679 

680La compaction automatique s'exécute automatiquement lorsque la fenêtre de contexte approche de la capacité, comme dans le CLI. Pour la déclencher plus tôt, définissez [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/fr/env-vars) dans vos [variables d'environnement](#configure-your-environment). Par exemple, `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=70` compacte à 70 % de capacité au lieu de la valeur par défaut \~95 %. Pour modifier la taille de fenêtre effective pour les calculs de compaction, utilisez [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/fr/env-vars).

681 

682Les [sous-agents](/fr/sub-agents) fonctionnent de la même manière qu'en local. Claude peut les générer avec l'outil Task pour décharger la recherche ou le travail parallèle dans une fenêtre de contexte séparée, gardant la conversation principale plus légère. Les sous-agents définis dans votre `.claude/agents/` du référentiel sont récupérés automatiquement. Les [équipes d'agents](/fr/agent-teams) sont désactivées par défaut mais peuvent être activées en ajoutant `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` à vos [variables d'environnement](#configure-your-environment).

683 

684### Examiner les modifications

685 

686Chaque session affiche un indicateur de diff avec les lignes ajoutées et supprimées, comme `+42 -18`. Sélectionnez-le pour ouvrir la vue diff, laissez des commentaires en ligne sur des lignes spécifiques et envoyez-les à Claude avec votre message suivant. Consultez [Examiner et itérer](/fr/web-quickstart#review-and-iterate) pour la procédure pas à pas complète incluant la création de PR. Pour que Claude surveille la PR pour les défaillances CI et les commentaires d'examen automatiquement, consultez [Correction automatique des demandes de tirage](#auto-fix-pull-requests).

687 

688### Partager les sessions

689 

690Pour partager une session, basculez sa visibilité selon les types de compte ci-dessous. Après cela, partagez le lien de session tel quel. Les destinataires voient l'état le plus récent lorsqu'ils ouvrent le lien, mais leur vue ne se met pas à jour en temps réel.

691 

692#### Partage à partir d'un compte Enterprise ou Team

693 

694Pour les comptes Enterprise et Team, les deux options de visibilité sont **Private** et **Team**. La visibilité Team rend la session visible aux autres membres de votre organisation claude.ai. La vérification de l'accès au référentiel est activée par défaut, en fonction du compte GitHub connecté au compte du destinataire. Le nom d'affichage de votre compte est visible à tous les destinataires ayant accès. Les sessions [Claude dans Slack](/fr/slack) sont automatiquement partagées avec la visibilité Team.

695 

696#### Partage à partir d'un compte Max ou Pro

697 

698Pour les comptes Max et Pro, les deux options de visibilité sont **Private** et **Public**. La visibilité Public rend la session visible à tout utilisateur connecté à claude.ai.

699 

700Vérifiez votre session pour le contenu sensible avant de la partager. Les sessions peuvent contenir du code et des identifiants provenant de référentiels GitHub privés. La vérification de l'accès au référentiel n'est pas activée par défaut.

701 

702Pour exiger que les destinataires aient accès au référentiel, ou pour masquer votre nom des sessions partagées, allez à Paramètres > Claude Code > Paramètres de partage.

703 

704### Archiver les sessions

705 

706Vous pouvez archiver les sessions pour garder votre liste de sessions organisée. Les sessions archivées sont masquées de la liste de sessions par défaut mais peuvent être affichées en filtrant les sessions archivées.

707 

708Pour archiver une session, survolez la session dans la barre latérale et sélectionnez l'icône d'archivage.

709 

710### Supprimer les sessions

711 

712La suppression d'une session supprime définitivement la session et ses données. Cette action ne peut pas être annulée. Vous pouvez supprimer une session de deux façons :

713 

714* **À partir de la barre latérale** : filtrez les sessions archivées, puis survolez la session que vous souhaitez supprimer et sélectionnez l'icône de suppression

715* **À partir du menu de session** : ouvrez une session, sélectionnez la liste déroulante à côté du titre de la session et sélectionnez **Delete**

716 

717Vous serez invité à confirmer avant la suppression d'une session.

718 

719## Correction automatique des demandes de tirage

720 

721Claude peut surveiller une demande de tirage et répondre automatiquement aux défaillances CI et aux commentaires d'examen. Claude s'abonne aux événements GitHub sur la PR, et lorsqu'une vérification échoue ou qu'un examinateur laisse un commentaire, Claude enquête et pousse une correction si elle est claire.

722 

723<Note>

724 Auto-fix nécessite que l'application Claude GitHub soit installée sur votre référentiel. Si vous ne l'avez pas déjà fait, installez-la à partir de la [page de l'application GitHub](https://github.com/apps/claude) ou lorsque vous y êtes invité lors de la [configuration](/fr/web-quickstart#connect-github-and-create-an-environment).

725</Note>

726 

727Il existe plusieurs façons d'activer auto-fix selon d'où provient la PR et quel appareil vous utilisez :

728 

729* **PR créées dans Claude Code sur le web** : ouvrez la barre d'état CI et sélectionnez **Auto-fix**

730* **À partir de votre terminal** : exécutez [`/autofix-pr`](/fr/commands) sur la branche de la PR. Claude Code détecte la PR ouverte avec `gh`, génère une session web et active auto-fix en une seule étape

731* **À partir de l'application mobile** : dites à Claude de corriger automatiquement la PR, par exemple « regardez cette PR et corrigez les défaillances CI ou les commentaires d'examen »

732* **N'importe quelle PR existante** : collez l'URL de la PR dans une session et dites à Claude de la corriger automatiquement

733 

734### Comment Claude répond à l'activité PR

735 

736Lorsque auto-fix est actif, Claude reçoit les événements GitHub pour la PR, y compris les nouveaux commentaires d'examen et les défaillances de vérification CI. Pour chaque événement, Claude enquête et décide comment procéder :

737 

738* **Corrections claires** : si Claude est confiant dans une correction et qu'elle n'entre pas en conflit avec les instructions antérieures, Claude apporte la modification, la pousse et explique ce qui a été fait dans la session

739* **Demandes ambiguës** : si le commentaire d'un examinateur peut être interprété de plusieurs façons ou implique quelque chose d'architecturalement significatif, Claude vous demande avant d'agir

740* **Événements en double ou sans action** : si un événement est un doublon ou ne nécessite aucune modification, Claude le note dans la session et continue

741 

742Claude peut répondre aux fils de commentaires d'examen sur GitHub dans le cadre de leur résolution. Ces réponses sont publiées en utilisant votre compte GitHub, elles apparaissent donc sous votre nom d'utilisateur, mais chaque réponse est étiquetée comme provenant de Claude Code pour que les examinateurs sachent qu'elle a été écrite par l'agent et non par vous directement.

743 

744<Warning>

745 Si votre référentiel utilise une automatisation déclenchée par commentaire comme Atlantis, Terraform Cloud ou des GitHub Actions personnalisées qui s'exécutent sur les événements `issue_comment`, sachez que Claude peut répondre en votre nom, ce qui peut déclencher ces flux de travail. Examinez l'automatisation de votre référentiel avant d'activer auto-fix et envisagez de désactiver auto-fix pour les référentiels où un commentaire PR peut déployer une infrastructure ou exécuter des opérations privilégiées.

746</Warning>

747 

748## Sécurité et isolation

749 

750Chaque session cloud est séparée de votre machine et des autres sessions par plusieurs couches :

751 

752* **Machines virtuelles isolées** : chaque session s'exécute dans une VM isolée gérée par Anthropic

753* **Contrôles d'accès réseau** : l'accès réseau est limité par défaut et peut être désactivé. Lors de l'exécution avec l'accès réseau désactivé, Claude Code peut toujours communiquer avec l'API Anthropic, ce qui peut permettre aux données de quitter la VM.

754* **Protection des identifiants** : les identifiants sensibles tels que les identifiants git ou les clés de signature ne sont jamais à l'intérieur du sandbox avec Claude Code. L'authentification est gérée via un proxy sécurisé utilisant des identifiants limités.

755* **Analyse sécurisée** : le code est analysé et modifié dans des VM isolées avant la création de PR

756 

757## Limitations

758 

759Avant de compter sur les sessions cloud pour un flux de travail, tenez compte de ces contraintes :

760 

761* **Limites de débit** : Claude Code sur le web partage les limites de débit avec tous les autres usages de Claude et Claude Code au sein de votre compte. L'exécution de plusieurs tâches en parallèle consomme proportionnellement plus de limites de débit. Il n'y a pas de frais de calcul séparé pour la VM cloud.

762* **Authentification du référentiel** : vous ne pouvez déplacer les sessions du web vers le local que lorsque vous êtes authentifié au même compte

763* **Restrictions de plateforme** : le clonage du référentiel et la création de demandes de tirage nécessitent GitHub. Les instances [GitHub Enterprise Server](/fr/github-enterprise-server) auto-hébergées sont prises en charge pour les plans Team et Enterprise. GitLab, Bitbucket et les autres référentiels non-GitHub peuvent être envoyés aux sessions cloud en tant que [paquet local](#send-local-repositories-without-github), mais la session ne peut pas pousser les résultats vers le serveur distant

764 

765## Ressources connexes

766 

767* [Ultraplan](/fr/ultraplan) : rédigez un plan dans une session cloud et examinez-le dans votre navigateur

768* [Ultrareview](/fr/ultrareview) : exécutez un examen de code multi-agent approfondi dans un sandbox cloud

769* [Routines](/fr/routines) : automatisez le travail selon un calendrier, via un appel API ou en réponse aux événements GitHub

770* [Configuration des hooks](/fr/hooks) : exécutez les scripts aux événements du cycle de vie de la session

771* [Référence des paramètres](/fr/settings) : toutes les options de configuration

772* [Sécurité](/fr/security) : garanties d'isolation et gestion des données

773* [Utilisation des données](/fr/data-usage) : ce qu'Anthropic conserve des sessions cloud

claude-directory.md +1583 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Explorez le répertoire .claude

6 

7> Où Claude Code lit CLAUDE.md, settings.json, hooks, skills, commands, subagents, rules et auto memory. Explorez le répertoire .claude dans votre projet et ~/.claude dans votre répertoire personnel.

8 

9export const ClaudeExplorer = () => {

10 const A = useMemo(() => ({href, children}) => <a href={href} style={{

11 color: 'var(--ce-accent)',

12 textDecoration: 'none',

13 borderBottom: '1px dotted var(--ce-accent)'

14 }}>{children}</a>, []);

15 const C = useMemo(() => ({children}) => <code style={{

16 fontFamily: 'var(--ce-mono)',

17 fontSize: '0.92em',

18 padding: '1px 4px',

19 borderRadius: '3px',

20 background: 'var(--ce-surface)',

21 border: '0.5px solid var(--ce-border-subtle)'

22 }}>{children}</code>, []);

23 const commandsNote = useMemo(() => <>Commands and skills are now the same mechanism. For new workflows, use <A href="/en/skills">skills/</A> instead: same <C>/name</C> invocation, plus you can bundle supporting files.</>, []);

24 const FILE_TREE = useMemo(() => ({

25 project: {

26 label: 'your-project/',

27 children: [{

28 id: 'claude-md',

29 label: 'CLAUDE.md',

30 type: 'file',

31 icon: 'md',

32 color: '#6A9BCC',

33 badge: 'committed',

34 oneLiner: 'Project instructions Claude reads every session',

35 when: 'Loaded into context at the start of every session',

36 description: 'Project-specific instructions that shape how Claude works in this repository. Put your conventions, common commands, and architectural context here so Claude operates with the same assumptions your team does.',

37 tips: ['Target under 200 lines. Longer files still load in full but may reduce adherence', <>CLAUDE.md loads into every session. If something only matters for specific tasks, move it to a <A href="/en/skills">skill</A> or a path-scoped <A href="/en/memory#organize-rules-with-claude/rules/">rule</A> so it loads only when needed</>, 'List the commands you run most, like build, test, and format, so Claude knows them without you spelling them out each time', <>Run <C>/memory</C> to open and edit CLAUDE.md from within a session</>, <>Also works at <C>.claude/CLAUDE.md</C> if you prefer to keep the project root clean</>],

38 exampleIntro: 'This example is for a TypeScript and React project. It lists the build and test commands, the framework conventions Claude should follow, and project-specific rules like export style and file layout.',

39 example: `# Project conventions

40 

41## Commands

42- Build: \`npm run build\`

43- Test: \`npm test\`

44- Lint: \`npm run lint\`

45 

46## Stack

47- TypeScript with strict mode

48- React 19, functional components only

49 

50## Rules

51- Named exports, never default exports

52- Tests live next to source: \`foo.ts\` -> \`foo.test.ts\`

53- All API routes return \`{ data, error }\` shape`,

54 docsLink: '/en/memory'

55 }, {

56 id: 'mcp-json',

57 label: '.mcp.json',

58 type: 'file',

59 icon: 'json',

60 color: '#9B7BC4',

61 badge: 'committed',

62 oneLiner: 'Project-scoped MCP servers, shared with your team',

63 when: <>Servers connect when the session begins. Tool schemas are deferred by default and load on demand via <A href="/en/mcp#scale-with-mcp-tool-search">tool search</A></>,

64 description: <>Configures Model Context Protocol (MCP) servers that give Claude access to external tools: databases, APIs, browsers, and more. This file holds the project-scoped servers your whole team uses. Personal servers you want to keep to yourself go in <C>~/.claude.json</C> instead.</>,

65 tips: [<>Use environment variable references for secrets: <C>{'${GITHUB_TOKEN}'}</C></>, <>Lives at the project root, not inside <C>.claude/</C></>, <>For servers only you need, run <C>claude mcp add --scope user</C>. This writes to <C>~/.claude.json</C> instead of <C>.mcp.json</C></>],

66 exampleIntro: <>This example configures the GitHub MCP server so Claude can read issues and open pull requests. The <C>{'${GITHUB_TOKEN}'}</C> reference is read from your shell environment when Claude Code starts the server, so the token never lands in the file.</>,

67 example: `{

68 "mcpServers": {

69 "github": {

70 "command": "npx",

71 "args": ["-y", "@modelcontextprotocol/server-github"],

72 "env": {

73 "GITHUB_TOKEN": "\${GITHUB_TOKEN}"

74 }

75 }

76 }

77}`,

78 docsLink: '/en/mcp'

79 }, {

80 id: 'worktreeinclude',

81 label: '.worktreeinclude',

82 type: 'file',

83 icon: 'md',

84 color: '#8FA876',

85 badge: 'committed',

86 oneLiner: 'Gitignored files to copy into new worktrees',

87 when: <>Read when Claude creates a git worktree via <C>--worktree</C>, the <C>EnterWorktree</C> tool, or subagent <C>isolation: worktree</C></>,

88 description: <>Lists gitignored files to copy from your main repository into each new worktree. Worktrees are fresh checkouts, so untracked files like <C>.env</C> are missing by default. Patterns here use <C>.gitignore</C> syntax. Only files that match a pattern and are also gitignored get copied, so tracked files are never duplicated.</>,

89 tips: [<>Lives at the project root, not inside <C>.claude/</C></>, <>Git-only: if you configure a <A href="/en/hooks#worktreecreate">WorktreeCreate hook</A> for a different VCS, this file is not read. Copy files inside your hook script instead</>, <>Also applies to parallel sessions in the <A href="/en/desktop#work-in-parallel-with-sessions">desktop app</A></>],

90 exampleIntro: 'This example copies your local environment files and a secrets config into every worktree Claude creates. Comments start with # and blank lines are ignored, same as .gitignore.',

91 example: `# Local environment

92.env

93.env.local

94 

95# API credentials

96config/secrets.json`,

97 docsLink: '/en/worktrees#copy-gitignored-files-into-worktrees'

98 }, {

99 id: 'dot-claude',

100 label: '.claude/',

101 type: 'folder',

102 icon: 'folder',

103 color: 'var(--ce-accent)',

104 oneLiner: 'Project-level configuration, rules, and extensions',

105 description: 'Everything Claude Code reads that is specific to this project. If you use git, commit most files here so your team shares them; a few, like settings.local.json, are automatically gitignored. Each file badge shows which.',

106 children: [{

107 id: 'settings-json',

108 label: 'settings.json',

109 type: 'file',

110 icon: 'json',

111 color: 'var(--ce-text-3)',

112 badge: 'committed',

113 oneLiner: 'Permissions, hooks, and configuration',

114 when: <>Overrides global <C>~/.claude/settings.json</C>. Local settings, CLI flags, and managed settings override this</>,

115 description: 'Settings that Claude Code applies directly. Permissions control which commands and tools Claude can use; hooks run your scripts at specific points in a session. Unlike CLAUDE.md, which Claude reads as guidance, these are enforced whether Claude follows them or not.',

116 contains: [<><A href="/en/permissions">permissions</A>: allow, deny, or prompt before Claude uses specific tools or commands</>, <><A href="/en/hooks">hooks</A>: run your own scripts on events like before a tool call or after a file edit</>, <><A href="/en/statusline">statusLine</A>: customize the line shown at the bottom while Claude works</>, <><A href="/en/settings#available-settings">model</A>: pick a default model for this project</>, <><A href="/en/settings#environment-variables">env</A>: environment variables set in every session</>, <><A href="/en/output-styles">outputStyle</A>: select a custom system-prompt style from output-styles/</>],

117 tips: [<>Bash permission patterns support wildcards: <C>Bash(npm test *)</C> matches any command starting with <C>npm test</C></>, <>Array settings like <C>permissions.allow</C> combine across all scopes; scalar settings like <C>model</C> use the most specific value</>],

118 exampleIntro: <>This example allows <C>npm test</C> and <C>npm run</C> commands without prompting, blocks <C>rm -rf</C>, and runs Prettier on files after Claude edits or writes them.</>,

119 example: `{

120 "permissions": {

121 "allow": [

122 "Bash(npm test *)",

123 "Bash(npm run *)"

124 ],

125 "deny": [

126 "Bash(rm -rf *)"

127 ]

128 },

129 "hooks": {

130 "PostToolUse": [{

131 "matcher": "Edit|Write",

132 "hooks": [{

133 "type": "command",

134 "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"

135 }]

136 }]

137 }

138}`,

139 docsLink: '/en/settings'

140 }, {

141 id: 'settings-local-json',

142 label: 'settings.local.json',

143 type: 'file',

144 icon: 'json',

145 color: 'var(--ce-text-3)',

146 badge: 'gitignored',

147 oneLiner: 'Your personal settings overrides for this project',

148 when: 'Highest of the user-editable settings files; CLI flags and managed settings still take precedence',

149 description: 'Personal settings that take precedence over the project defaults. Same JSON format as settings.json, but not committed. Use this when you need different permissions or defaults than the team config.',

150 tips: [<>Same schema as settings.json. Array settings like <C>permissions.allow</C> combine across scopes; scalar settings like <C>model</C> use the local value</>, <>Claude Code adds this file to <C>~/.config/git/ignore</C> the first time it writes one. If you use a custom <C>core.excludesFile</C>, add the pattern there too. To share the ignore rule with your team, also add it to the project <C>.gitignore</C></>],

151 exampleIntro: 'This example adds Docker permissions on top of whatever the team settings.json allows.',

152 example: `{

153 "permissions": {

154 "allow": [

155 "Bash(docker *)"

156 ]

157 }

158}`,

159 docsLink: '/en/settings'

160 }, {

161 id: 'rules',

162 label: 'rules/',

163 type: 'folder',

164 icon: 'folder',

165 color: '#9B7BC4',

166 oneLiner: 'Topic-scoped instructions, optionally gated by file paths',

167 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when a matching file enters context</>,

168 description: [<>Project instructions split into topic files that can load conditionally based on file paths. A rule without <C>paths:</C> frontmatter loads at session start like CLAUDE.md; a rule with <C>paths:</C> loads only when Claude reads a matching file.</>, <>Like CLAUDE.md, rules are guidance Claude reads, not configuration Claude Code enforces. For guaranteed behavior use <A href="/en/hooks">hooks</A> or <A href="/en/permissions">permissions</A>.</>],

169 tips: [<>Use <C>paths:</C> frontmatter with globs to scope rules to directories or file types</>, <>Subdirectories work: <C>.claude/rules/frontend/react.md</C> is discovered automatically</>, 'When CLAUDE.md approaches 200 lines, start splitting into rules'],

170 docsLink: '/en/memory#organize-rules-with-claude/rules/',

171 children: [{

172 id: 'rule-testing',

173 label: 'testing.md',

174 type: 'file',

175 icon: 'md',

176 color: '#9B7BC4',

177 badge: 'committed',

178 oneLiner: 'Test conventions scoped to test files',

179 when: <>Loaded when Claude reads a file matching the <C>paths:</C> globs below</>,

180 description: <>An example rule that only loads when Claude is working on test files. The <C>paths:</C> globs in the frontmatter define which files trigger it; here, anything ending in .test.ts or .test.tsx. For other files, this rule is not loaded into context.</>,

181 example: `---

182paths:

183 - "**/*.test.ts"

184 - "**/*.test.tsx"

185---

186 

187# Testing Rules

188 

189- Use descriptive test names: "should [expected] when [condition]"

190- Mock external dependencies, not internal modules

191- Clean up side effects in afterEach`

192 }, {

193 id: 'rule-api',

194 label: 'api-design.md',

195 type: 'file',

196 icon: 'md',

197 color: '#9B7BC4',

198 badge: 'committed',

199 oneLiner: 'API conventions scoped to backend code',

200 when: <>Loaded when Claude reads a file matching the <C>paths:</C> glob below</>,

201 description: <>A second example showing a rule scoped to backend code. The <C>paths:</C> glob matches files under src/api/, so these conventions load only when Claude is editing API routes.</>,

202 example: `---

203paths:

204 - "src/api/**/*.ts"

205---

206 

207# API Design Rules

208 

209- All endpoints must validate input with Zod schemas

210- Return shape: { data: T } | { error: string }

211- Rate limit all public endpoints`

212 }]

213 }, {

214 id: 'skills',

215 label: 'skills/',

216 type: 'folder',

217 icon: 'folder',

218 color: '#D4A843',

219 oneLiner: 'Reusable prompts you or Claude invoke by name',

220 when: <>Invoked with <C>/skill-name</C> or when Claude matches the task to a skill</>,

221 description: <>Each skill is a folder with a SKILL.md file plus any supporting files it needs. By default, both you and Claude can invoke a skill. Use frontmatter to control that: <C>disable-model-invocation: true</C> for user-only workflows like <C>/deploy</C>, or <C>user-invocable: false</C> to hide from the <C>/</C> menu while Claude can still invoke it.</>,

222 tips: [<>Skills accept arguments: <C>/deploy staging</C> passes "staging" as <C>$ARGUMENTS</C>. Use <C>$0</C>, <C>$1</C>, and so on for positional access</>, <>The <C>description</C> frontmatter determines when Claude auto-invokes the skill</>, 'Bundle reference docs alongside SKILL.md. Claude knows the skill directory path and can read supporting files when you mention them'],

223 docsLink: '/en/skills',

224 children: [{

225 id: 'skill-review',

226 label: 'security-review/',

227 type: 'folder',

228 icon: 'folder',

229 color: '#D4A843',

230 oneLiner: 'A skill bundling SKILL.md with supporting files',

231 children: [{

232 id: 'skill-review-md',

233 label: 'SKILL.md',

234 type: 'file',

235 icon: 'md',

236 color: '#D4A843',

237 badge: 'committed',

238 oneLiner: 'Entrypoint: trigger, invocability, instructions',

239 when: <>User types <C>/security-review &lt;target&gt;</C>; Claude cannot auto-invoke this skill</>,

240 description: [<>This skill uses <C>disable-model-invocation: true</C> so only you can trigger it; Claude never invokes it on its own.</>, <>The <C>!`...`</C> line runs a shell command and injects its output into the prompt. <C>$ARGUMENTS</C> substitutes whatever you typed after the skill name. Claude sees the skill directory path, so mentioning a bundled file like checklist.md lets Claude read it.</>],

241 example: `---

242description: Reviews code changes for security vulnerabilities, authentication gaps, and injection risks

243disable-model-invocation: true

244argument-hint: <branch-or-path>

245---

246 

247## Diff to review

248 

249!\`git diff $ARGUMENTS\`

250 

251Audit the changes above for:

252 

2531. Injection vulnerabilities (SQL, XSS, command)

2542. Authentication and authorization gaps

2553. Hardcoded secrets or credentials

256 

257Use checklist.md in this skill directory for the full review checklist.

258 

259Report findings with severity ratings and remediation steps.`

260 }, {

261 id: 'skill-checklist',

262 label: 'checklist.md',

263 type: 'file',

264 icon: 'md',

265 color: '#D4A843',

266 badge: 'committed',

267 oneLiner: 'Supporting file bundled with the skill',

268 when: 'Claude reads it on demand while running the skill',

269 description: <>Skills can bundle any supporting files: reference docs, templates, scripts. The skill directory path is prepended to SKILL.md, so Claude can read bundled files by name. For scripts in bash injection commands, use the <C>{'${CLAUDE_SKILL_DIR}'}</C> placeholder.</>,

270 example: `# Security Review Checklist

271 

272## Input Validation

273- [ ] All user input sanitized before DB queries

274- [ ] File upload MIME types validated

275- [ ] Path traversal prevented on file operations

276 

277## Authentication

278- [ ] JWT tokens expire after 24 hours

279- [ ] API keys stored in environment variables

280- [ ] Passwords hashed with bcrypt or argon2`

281 }]

282 }]

283 }, {

284 id: 'commands',

285 label: 'commands/',

286 type: 'folder',

287 icon: 'folder',

288 color: '#788C5D',

289 oneLiner: <>Single-file prompts invoked with <C>/name</C></>,

290 note: commandsNote,

291 when: <>User types <C>/command-name</C></>,

292 description: <>A file at <C>commands/deploy.md</C> creates <C>/deploy</C> the same way a skill at <C>skills/deploy/SKILL.md</C> does, and both can be auto-invoked by Claude. Skills use a directory with SKILL.md, letting you bundle reference docs, templates, or scripts alongside the prompt.</>,

293 tips: [<>Use <C>$ARGUMENTS</C> in the file to accept parameters: <C>/fix-issue 123</C></>, 'If a skill and command share a name, the skill takes precedence', 'New commands should usually be skills instead; commands remain supported'],

294 docsLink: '/en/skills',

295 children: [{

296 id: 'cmd-example',

297 label: 'fix-issue.md',

298 type: 'file',

299 icon: 'md',

300 color: '#788C5D',

301 badge: 'committed',

302 oneLiner: <>Invoked as <C>/fix-issue &lt;number&gt;</C></>,

303 note: commandsNote,

304 description: [<>An example command for fixing a GitHub issue. Type <C>/fix-issue 123</C> and the <C>!`...`</C> line runs <C>gh issue view 123</C> in your shell, injecting the output into the prompt before Claude sees it.</>, <><C>$ARGUMENTS</C> substitutes whatever you typed after the command name. For positional access, use <C>$0</C> <C>$1</C> and so on.</>],

305 example: `---

306argument-hint: <issue-number>

307---

308 

309!\`gh issue view $ARGUMENTS\`

310 

311Investigate and fix the issue above.

312 

3131. Trace the bug to its root cause

3142. Implement the fix

3153. Write or update tests

3164. Summarize what you changed and why`

317 }]

318 }, {

319 id: 'output-styles',

320 label: 'output-styles/',

321 type: 'folder',

322 icon: 'folder',

323 color: '#5AA7A7',

324 oneLiner: 'Project-scoped output styles, if your team shares any',

325 when: 'Applied at session start when selected via the outputStyle setting',

326 description: <>Output styles are usually personal, so most live in <C>~/.claude/output-styles/</C>. Put one here if your team shares a style, like a review mode everyone uses. See <A href="#ce-global-output-styles">the Global tab</A> for the full explanation and example.</>,

327 docsLink: '/en/output-styles',

328 children: []

329 }, {

330 id: 'agents',

331 label: 'agents/',

332 type: 'folder',

333 icon: 'folder',

334 color: '#C46686',

335 oneLiner: 'Specialized subagents with their own context window',

336 when: 'Runs in its own context window when you or Claude invoke it',

337 description: 'Each markdown file defines a subagent with its own system prompt, tool access, and optionally its own model. Subagents run in a fresh context window, keeping the main conversation clean. Useful for parallel work or isolated tasks.',

338 tips: ['Each agent gets a fresh context window, separate from your main session', <>Restrict tool access per agent with the <C>tools:</C> frontmatter field</>, 'Type @ and pick an agent from the autocomplete to delegate directly'],

339 docsLink: '/en/sub-agents',

340 children: [{

341 id: 'agent-reviewer',

342 label: 'code-reviewer.md',

343 type: 'file',

344 icon: 'md',

345 color: '#C46686',

346 badge: 'committed',

347 oneLiner: 'Subagent for isolated code review',

348 when: 'Claude spawns it for review tasks, or you @-mention it from the autocomplete',

349 description: <>An example subagent restricted to read-only tools. The <C>description</C> frontmatter tells Claude when to delegate to it automatically; <C>tools:</C> limits it to Read, Grep, and Glob so it can inspect code but never edit. The body becomes the subagent's system prompt.</>,

350 example: `---

351name: code-reviewer

352description: Reviews code for correctness, security, and maintainability

353tools: Read, Grep, Glob

354---

355 

356You are a senior code reviewer. Review for:

357 

3581. Correctness: logic errors, edge cases, null handling

3592. Security: injection, auth bypass, data exposure

3603. Maintainability: naming, complexity, duplication

361 

362Every finding must include a concrete fix.`

363 }]

364 }, {

365 id: 'agent-memory',

366 label: 'agent-memory/',

367 type: 'folder',

368 icon: 'folder',

369 color: '#C46686',

370 badge: 'committed',

371 autogen: true,

372 oneLiner: 'Subagent persistent memory, separate from your main session auto memory',

373 when: 'First 200 lines (capped at 25KB) of MEMORY.md loaded into the subagent system prompt when it runs',

374 description: <>Subagents with <C>memory: project</C> in their frontmatter get a dedicated memory directory here. This is distinct from your <A href="/en/memory#auto-memory">main session auto memory</A> at <C>~/.claude/projects/</C>: each subagent reads and writes its own MEMORY.md, not yours.</>,

375 tips: [<>Only created for subagents that set the <C>memory:</C> frontmatter field</>, <>This directory holds project-scoped subagent memory, meant to be shared with your team. To keep memory out of version control use <C>memory: local</C>, which writes to <C>.claude/agent-memory-local/</C> instead. For cross-project memory use <C>memory: user</C>, which writes to <C>~/.claude/agent-memory/</C></>, <>The main session auto memory is a different feature; see <C>~/.claude/projects/</C> in the Global tab</>],

376 docsLink: '/en/sub-agents#enable-persistent-memory',

377 children: [{

378 id: 'agent-memory-sub',

379 label: '<agent-name>/',

380 type: 'folder',

381 icon: 'folder',

382 color: '#C46686',

383 autogen: true,

384 children: [{

385 id: 'agent-memory-md',

386 label: 'MEMORY.md',

387 type: 'file',

388 icon: 'md',

389 color: '#C46686',

390 badge: 'committed',

391 autogen: true,

392 oneLiner: 'The subagent writes and maintains this file automatically',

393 when: 'Loaded into the subagent system prompt when the subagent starts',

394 description: <>Works the same as your <A href="/en/memory#auto-memory">main auto memory</A>: the subagent creates and updates this file itself. You do not write it. The subagent reads it at the start of each task and writes back what it learns.</>,

395 example: `# code-reviewer memory

396 

397## Patterns seen

398- Project uses custom Result<T, E> type, not exceptions

399- Auth middleware expects Bearer token in Authorization header

400- Tests use factory functions in test/factories/

401 

402## Recurring issues

403- Missing null checks on API responses (src/api/*)

404- Unhandled promise rejections in background jobs`

405 }]

406 }]

407 }]

408 }]

409 },

410 global: {

411 label: '~/',

412 children: [{

413 id: 'claude-json',

414 label: '.claude.json',

415 type: 'file',

416 icon: 'json',

417 color: 'var(--ce-text-3)',

418 badge: 'local',

419 oneLiner: 'App state and UI preferences',

420 when: <>Read at session start for your preferences and MCP servers. Claude Code writes back to it when you change settings in <C>/config</C> or approve trust prompts</>,

421 description: <>Holds state that does not belong in settings.json: theme, OAuth session, per-project trust decisions, your personal MCP servers, and UI toggles. Mostly managed through <C>/config</C> rather than editing directly.</>,

422 tips: [<>IDE toggles like <C>autoConnectIde</C> and <C>externalEditorContext</C> live here, not in settings.json</>, <>The <C>projects</C> key tracks per-project state like trust-dialog acceptance and last-session metrics. Permission rules you approve in-session go to <C>.claude/settings.local.json</C> instead</>, <>MCP servers here are yours only: user scope applies across all projects, local scope is per-project but not committed. Team-shared servers go in <C>.mcp.json</C> at the project root instead</>],

423 example: `{

424 "autoConnectIde": true,

425 "externalEditorContext": true,

426 "mcpServers": {

427 "my-tools": {

428 "command": "npx",

429 "args": ["-y", "@example/mcp-server"]

430 }

431 }

432}`,

433 docsLink: '/en/settings#global-config-settings'

434 }, {

435 id: 'global-dot-claude',

436 label: '.claude/',

437 type: 'folder',

438 icon: 'folder',

439 color: 'var(--ce-accent)',

440 oneLiner: 'Your personal configuration across all projects',

441 description: 'The global counterpart to your project .claude/ directory. Files here apply to every project you work in and are never committed to any repository.',

442 children: [{

443 id: 'global-claude-md',

444 label: 'CLAUDE.md',

445 type: 'file',

446 icon: 'md',

447 color: '#6A9BCC',

448 badge: 'local',

449 oneLiner: 'Personal preferences across every project',

450 when: 'Loaded at the start of every session, in every project',

451 description: 'Your global instruction file. Loaded alongside the project CLAUDE.md at session start, so both are in context together. When instructions conflict, project-level instructions take priority. Keep this to preferences that apply everywhere: response style, commit format, personal conventions.',

452 tips: ['Keep it short since it loads into context for every project, alongside that project\'s own CLAUDE.md', 'Good for response style, commit format, and personal conventions'],

453 example: `# Global preferences

454 

455- Keep explanations concise

456- Use conventional commit format

457- Show the terminal command to verify changes

458- Prefer composition over inheritance`,

459 docsLink: '/en/memory'

460 }, {

461 id: 'global-settings',

462 label: 'settings.json',

463 type: 'file',

464 icon: 'json',

465 color: 'var(--ce-text-3)',

466 badge: 'local',

467 oneLiner: 'Default settings for all projects',

468 when: 'Your defaults. Project and local settings.json override any keys you also set there',

469 description: [<>Same keys as project <C>settings.json</C>: permissions, hooks, model, environment variables, and the rest. Put settings here that you want in every project, like permissions you always allow, a preferred model, or a notification hook that runs regardless of which project you're in.</>, <>Settings follow a precedence order: project <C>settings.json</C> overrides any matching keys you set here. This is different from CLAUDE.md, where global and project files are both loaded into context rather than merged key by key.</>],

470 example: `{

471 "permissions": {

472 "allow": [

473 "Bash(git log *)",

474 "Bash(git diff *)"

475 ]

476 }

477}`,

478 docsLink: '/en/settings'

479 }, {

480 id: 'keybindings',

481 label: 'keybindings.json',

482 type: 'file',

483 icon: 'json',

484 color: 'var(--ce-text-3)',

485 badge: 'local',

486 oneLiner: 'Custom keyboard shortcuts',

487 when: 'Read at session start and hot-reloaded when you edit the file',

488 description: <>Rebind keyboard shortcuts in the interactive CLI. Run <C>/keybindings</C> to create or open this file with a schema reference. Ctrl+C, Ctrl+D, Ctrl+M, and Caps Lock are reserved and cannot be rebound.</>,

489 exampleIntro: <>This example binds <C>Ctrl+E</C> to open your external editor and unbinds <C>Ctrl+U</C> by setting it to <C>null</C>. The <C>context</C> field scopes bindings to a specific part of the CLI, here the main chat input.</>,

490 example: `{

491 "$schema": "https://www.schemastore.org/claude-code-keybindings.json",

492 "$docs": "https://code.claude.com/docs/en/keybindings",

493 "bindings": [

494 {

495 "context": "Chat",

496 "bindings": {

497 "ctrl+e": "chat:externalEditor",

498 "ctrl+u": null

499 }

500 }

501 ]

502}`,

503 docsLink: '/en/keybindings'

504 }, {

505 id: 'themes',

506 label: 'themes/',

507 type: 'folder',

508 icon: 'folder',

509 color: '#5AA7A7',

510 oneLiner: 'Custom color themes',

511 when: <>Read at session start and hot-reloaded when files change. Listed in <C>/theme</C></>,

512 description: <>Each <C>.json</C> file defines a custom color theme: a built-in <C>base</C> preset plus an <C>overrides</C> map of color tokens. Create one interactively with <C>/theme</C> or write the JSON by hand. Selecting a custom theme stores <C>custom:&lt;slug&gt;</C> as your theme preference.</>,

513 example: `{

514 "name": "Dracula",

515 "base": "dark",

516 "overrides": {

517 "claude": "#bd93f9",

518 "error": "#ff5555",

519 "success": "#50fa7b"

520 }

521}`,

522 docsLink: '/en/terminal-config#create-a-custom-theme',

523 children: []

524 }, {

525 id: 'global-projects',

526 label: 'projects/',

527 type: 'folder',

528 icon: 'folder',

529 color: '#E8A45C',

530 autogen: true,

531 oneLiner: "Auto memory: Claude's notes to itself, per project",

532 when: 'MEMORY.md loaded at session start; topic files read on demand',

533 description: 'Auto memory lets Claude accumulate knowledge across sessions without you writing anything. Claude saves notes as it works: build commands, debugging insights, architecture notes. Each project gets its own memory directory keyed by the repository path.',

534 tips: [<>On by default. Toggle with <C>/memory</C> or <C>autoMemoryEnabled</C> in settings</>, 'MEMORY.md is the index loaded each session. The first 200 lines, or 25KB, whichever comes first, are read', 'Topic files like debugging.md are read on demand, not at startup', 'These are plain markdown. Edit or delete them anytime'],

535 docsLink: '/en/memory#auto-memory',

536 children: [{

537 id: 'memory-dir',

538 label: '<project>/memory/',

539 type: 'folder',

540 icon: 'folder',

541 color: '#E8A45C',

542 autogen: true,

543 oneLiner: "Claude's accumulated knowledge for one project",

544 children: [{

545 id: 'memory-md',

546 label: 'MEMORY.md',

547 type: 'file',

548 icon: 'md',

549 color: '#E8A45C',

550 badge: 'local',

551 autogen: true,

552 oneLiner: 'Claude writes and maintains this file automatically',

553 when: 'First 200 lines (capped at 25KB) loaded at session start',

554 description: 'Claude creates and updates this file as it works; you do not write it yourself. It acts as an index that Claude reads at the start of every session, pointing to topic files for detail. You can edit or delete it, but Claude will keep updating it.',

555 example: `# Memory Index

556 

557## Project

558- [build-and-test.md](build-and-test.md): npm run build (~45s), Vitest, dev server on 3001

559- [architecture.md](architecture.md): API client singleton, refresh-token auth

560 

561## Reference

562- [debugging.md](debugging.md): auth token rotation and DB connection troubleshooting`,

563 docsLink: '/en/memory'

564 }, {

565 id: 'memory-topic',

566 label: 'debugging.md',

567 type: 'file',

568 icon: 'md',

569 color: '#E8A45C',

570 badge: 'local',

571 autogen: true,

572 oneLiner: 'Topic notes Claude writes when MEMORY.md gets long',

573 when: 'Claude reads this when a related task comes up',

574 description: 'An example of a topic file Claude creates when MEMORY.md grows too long. Claude picks the filename based on what it splits out: debugging.md, architecture.md, build-commands.md, or similar. You never create these yourself. Claude reads a topic file back only when the current task relates to it.',

575 example: `---

576name: Debugging patterns

577description: Auth token rotation and database connection troubleshooting for this project

578type: reference

579---

580 

581## Auth Token Issues

582- Refresh token rotation: old token invalidated immediately

583- If 401 after refresh: check clock skew between client and server

584 

585## Database Connection Drops

586- Connection pool: max 10 in dev, 50 in prod

587- Always check \`docker compose ps\` first`

588 }]

589 }]

590 }, {

591 id: 'global-rules',

592 label: 'rules/',

593 type: 'folder',

594 icon: 'folder',

595 color: '#9B7BC4',

596 oneLiner: 'User-level rules that apply to every project',

597 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when a matching file enters context</>,

598 description: 'Same as project .claude/rules/ but applies everywhere. Use this for conventions you want across all your work, like personal code style or commit message format.',

599 docsLink: '/en/memory#organize-rules-with-claude/rules/',

600 children: []

601 }, {

602 id: 'global-skills',

603 label: 'skills/',

604 type: 'folder',

605 icon: 'folder',

606 color: '#D4A843',

607 oneLiner: 'Personal skills available in every project',

608 when: <>Invoked with <C>/skill-name</C> in any project</>,

609 description: 'Skills you built for yourself that work everywhere. Same structure as project skills: each is a folder with SKILL.md, scoped to your user account instead of a single project.',

610 docsLink: '/en/skills',

611 children: []

612 }, {

613 id: 'global-commands',

614 label: 'commands/',

615 type: 'folder',

616 icon: 'folder',

617 color: '#788C5D',

618 oneLiner: 'Personal single-file commands available in every project',

619 note: commandsNote,

620 when: <>User types <C>/command-name</C> in any project</>,

621 description: 'Same as project commands/ but scoped to your user account. Each markdown file becomes a command available everywhere.',

622 docsLink: '/en/skills',

623 children: []

624 }, {

625 id: 'global-output-styles',

626 label: 'output-styles/',

627 type: 'folder',

628 icon: 'folder',

629 color: '#5AA7A7',

630 oneLiner: 'Custom system-prompt sections that adjust how Claude works',

631 when: 'Applied at session start when selected via the outputStyle setting',

632 description: [<>Each markdown file defines an output style: a section appended to the system prompt that, by default, also drops the built-in software-engineering task instructions. Use this to adapt Claude Code for uses beyond coding, or to add teaching or review modes.</>, <>Select a built-in or custom style with <C>/config</C> or the <C>outputStyle</C> key in settings. Styles here are available in every project; project-level styles with the same name take precedence.</>],

633 tips: ['Built-in styles Explanatory and Learning are included with Claude Code; custom styles go here', <>Set <C>keep-coding-instructions: true</C> in frontmatter to keep the default task instructions alongside your additions</>, 'Changes take effect on the next session since the system prompt is fixed at startup for caching'],

634 docsLink: '/en/output-styles',

635 children: [{

636 id: 'output-style-example',

637 label: 'teaching.md',

638 type: 'file',

639 icon: 'md',

640 color: '#5AA7A7',

641 badge: 'local',

642 oneLiner: 'Example style that adds explanations and leaves small changes for you',

643 when: <>Active when <C>outputStyle</C> in settings is set to <C>teaching</C></>,

644 description: <>This style appends instructions to the system prompt: Claude adds a "Why this approach" note after each task and leaves TODO(human) markers for changes under 10 lines instead of writing them itself. Select it by setting <C>outputStyle</C> to the filename without .md, or to the <C>name</C> field if you set one in frontmatter.</>,

645 example: `---

646description: Explains reasoning and asks you to implement small pieces

647keep-coding-instructions: true

648---

649 

650After completing each task, add a brief "Why this approach" note

651explaining the key design decision.

652 

653When a change is under 10 lines, ask the user to implement it

654themselves by leaving a TODO(human) marker instead of writing it.`

655 }]

656 }, {

657 id: 'global-agents',

658 label: 'agents/',

659 type: 'folder',

660 icon: 'folder',

661 color: '#C46686',

662 oneLiner: 'Personal subagents available in every project',

663 when: 'Claude delegates or you @-mention in any project',

664 description: 'Subagents defined here are available across all your projects. Same format as project agents.',

665 docsLink: '/en/sub-agents',

666 children: []

667 }, {

668 id: 'global-agent-memory',

669 label: 'agent-memory/',

670 type: 'folder',

671 icon: 'folder',

672 color: '#C46686',

673 autogen: true,

674 oneLiner: <>Persistent memory for subagents with <C>memory: user</C></>,

675 when: 'Loaded into the subagent system prompt when the subagent starts',

676 description: <>Subagents with <C>memory: user</C> in their frontmatter store knowledge here that persists across all projects. For project-scoped subagent memory, see <C>.claude/agent-memory/</C> instead.</>,

677 docsLink: '/en/sub-agents#enable-persistent-memory',

678 children: []

679 }]

680 }]

681 }

682 }), []);

683 const BADGE_STYLES = useMemo(() => ({

684 committed: {

685 bg: 'rgba(85,138,66,0.08)',

686 color: 'var(--ce-badge-committed)',

687 border: 'rgba(85,138,66,0.15)',

688 label: 'committed'

689 },

690 gitignored: {

691 bg: 'rgba(217,119,87,0.06)',

692 color: 'var(--ce-badge-gitignored)',

693 border: 'rgba(217,119,87,0.15)',

694 label: 'gitignored'

695 },

696 local: {

697 bg: 'rgba(115,114,108,0.06)',

698 color: 'var(--ce-badge-local)',

699 border: 'rgba(115,114,108,0.12)',

700 label: 'local only'

701 },

702 autogen: {

703 bg: 'rgba(232,164,92,0.1)',

704 color: 'var(--ce-badge-autogen)',

705 border: 'rgba(232,164,92,0.2)',

706 label: 'Claude writes'

707 }

708 }), []);

709 const allNodes = useMemo(() => {

710 const flatten = (nodes, acc, path, parentId) => {

711 for (const node of nodes) {

712 const nextPath = [...path, node.label];

713 acc[node.id] = {

714 ...node,

715 path: nextPath,

716 parentId

717 };

718 if (node.children) flatten(node.children, acc, nextPath, node.id);

719 }

720 return acc;

721 };

722 const project = flatten(FILE_TREE.project.children, {}, [FILE_TREE.project.label]);

723 const global = flatten(FILE_TREE.global.children, {}, [FILE_TREE.global.label]);

724 for (const id in project) project[id].root = 'project';

725 for (const id in global) global[id].root = 'global';

726 return {

727 ...project,

728 ...global

729 };

730 }, [FILE_TREE]);

731 const allFolderIds = useMemo(() => Object.keys(allNodes).filter(id => allNodes[id].type === 'folder'), [allNodes]);

732 const DEFAULT_EXPANDED = ['dot-claude', 'rules', 'skills', 'skill-review', 'commands', 'agents', 'agent-memory', 'agent-memory-sub', 'global-dot-claude', 'global-output-styles', 'global-projects', 'memory-dir'];

733 const [mounted, setMounted] = useState(false);

734 const [activeRoot, setActiveRoot] = useState('project');

735 const [selectedId, setSelectedId] = useState('claude-md');

736 const [expandedFolders, setExpandedFolders] = useState(() => new Set(DEFAULT_EXPANDED));

737 const [forceMobile, setForceMobile] = useState(false);

738 const [copiedId, setCopiedId] = useState(null);

739 const [isFullscreen, setIsFullscreen] = useState(false);

740 const copyTimeoutRef = useRef(null);

741 const rootRef = useRef(null);

742 useEffect(() => {

743 setMounted(true);

744 const applyHash = scroll => {

745 const hash = window.location.hash.slice(1);

746 if (!hash.startsWith('ce-')) return;

747 const id = hash.slice(3);

748 const node = allNodes[id];

749 if (!node) return;

750 setActiveRoot(node.root);

751 setSelectedId(id);

752 setExpandedFolders(new Set(allFolderIds));

753 if (scroll && rootRef.current) rootRef.current.scrollIntoView({

754 behavior: 'smooth',

755 block: 'start'

756 });

757 };

758 applyHash(false);

759 const onHashChange = () => applyHash(true);

760 const onFsChange = () => setIsFullscreen(!!document.fullscreenElement);

761 window.addEventListener('hashchange', onHashChange);

762 document.addEventListener('fullscreenchange', onFsChange);

763 return () => {

764 if (copyTimeoutRef.current) clearTimeout(copyTimeoutRef.current);

765 window.removeEventListener('hashchange', onHashChange);

766 document.removeEventListener('fullscreenchange', onFsChange);

767 };

768 }, []);

769 useEffect(() => {

770 if (!mounted || !rootRef.current) return;

771 const hash = window.location.hash.slice(1);

772 if (hash.startsWith('ce-') && allNodes[hash.slice(3)]) {

773 rootRef.current.scrollIntoView({

774 behavior: 'smooth',

775 block: 'start'

776 });

777 }

778 }, [mounted]);

779 if (!mounted) return null;

780 const selected = allNodes[selectedId];

781 const tree = FILE_TREE[activeRoot];

782 const isCopied = copiedId === selected.id;

783 const toggleFolder = id => {

784 const next = new Set(expandedFolders);

785 next.has(id) ? next.delete(id) : next.add(id);

786 setExpandedFolders(next);

787 };

788 const switchRoot = root => {

789 if (root === activeRoot) return;

790 setActiveRoot(root);

791 const firstId = FILE_TREE[root].children[0].id;

792 setSelectedId(firstId);

793 try {

794 history.replaceState(null, '', '#ce-' + firstId);

795 } catch (e) {}

796 };

797 const toggleFullscreen = () => {

798 if (!rootRef.current) return;

799 if (document.fullscreenElement) document.exitFullscreen(); else rootRef.current.requestFullscreen().catch(() => {});

800 };

801 const selectNode = n => {

802 setSelectedId(n.id);

803 if (n.type === 'folder' && !expandedFolders.has(n.id)) toggleFolder(n.id);

804 try {

805 history.replaceState(null, '', '#ce-' + n.id);

806 } catch (e) {}

807 };

808 const iconBtn = {

809 width: 28,

810 flexShrink: 0,

811 borderRadius: '6px',

812 border: 'none',

813 cursor: 'pointer',

814 background: 'transparent',

815 color: 'var(--ce-text-4)',

816 display: 'flex',

817 alignItems: 'center',

818 justifyContent: 'center'

819 };

820 const visibleFolderIds = allFolderIds.filter(id => allNodes[id].root === activeRoot);

821 const allExpanded = visibleFolderIds.every(id => expandedFolders.has(id));

822 const toggleAllFolders = () => {

823 const next = new Set(expandedFolders);

824 visibleFolderIds.forEach(id => allExpanded ? next.delete(id) : next.add(id));

825 setExpandedFolders(next);

826 };

827 const onTreeKeyDown = e => {

828 if (!['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft'].includes(e.key)) return;

829 const visible = [];

830 const walk = nodes => {

831 for (const n of nodes) {

832 visible.push(n.id);

833 if (n.children && expandedFolders.has(n.id)) walk(n.children);

834 }

835 };

836 walk(tree.children);

837 const i = visible.indexOf(selectedId);

838 if (i === -1) return;

839 e.preventDefault();

840 if (e.key === 'ArrowDown' && i < visible.length - 1) selectNode(allNodes[visible[i + 1]]); else if (e.key === 'ArrowUp' && i > 0) selectNode(allNodes[visible[i - 1]]); else if (e.key === 'ArrowRight' && selected.type === 'folder') {

841 if (!expandedFolders.has(selectedId)) toggleFolder(selectedId); else if (selected.children && selected.children.length) selectNode(allNodes[selected.children[0].id]);

842 } else if (e.key === 'ArrowLeft') {

843 if (selected.type === 'folder' && expandedFolders.has(selectedId)) toggleFolder(selectedId); else if (selected.parentId) selectNode(allNodes[selected.parentId]);

844 }

845 };

846 const copyExample = (id, text) => {

847 const done = () => {

848 setCopiedId(id);

849 if (copyTimeoutRef.current) clearTimeout(copyTimeoutRef.current);

850 copyTimeoutRef.current = setTimeout(() => setCopiedId(null), 2000);

851 };

852 const fallback = () => {

853 const ta = document.createElement('textarea');

854 ta.value = text;

855 ta.style.position = 'fixed';

856 ta.style.opacity = '0';

857 document.body.appendChild(ta);

858 ta.select();

859 try {

860 if (document.execCommand('copy')) done();

861 } catch (e) {}

862 document.body.removeChild(ta);

863 };

864 if (navigator.clipboard) {

865 navigator.clipboard.writeText(text).then(done, fallback);

866 } else {

867 fallback();

868 }

869 };

870 const renderIcon = (icon, color, size) => {

871 const sz = size || 14;

872 if (icon === 'folder') {

873 return <svg width={sz} height={sz} viewBox="0 0 14 14" fill="none">

874 <path d="M1.5 3.5a1 1 0 0 1 1-1h2.6l1 1.2h5.4a1 1 0 0 1 1 1v5.8a1 1 0 0 1-1 1h-9a1 1 0 0 1-1-1V3.5z" fill={color} fillOpacity="0.15" stroke={color} strokeWidth="1" />

875 </svg>;

876 }

877 if (icon === 'json') {

878 return <svg width={sz} height={sz} viewBox="0 0 14 14" fill="none">

879 <rect x="2" y="1.5" width="10" height="11" rx="1.5" fill={color} fillOpacity="0.15" stroke={color} strokeWidth="1" />

880 <text x="7" y="9" fontSize="6" fontFamily="monospace" fill={color} textAnchor="middle" fontWeight="700">{'{}'}</text>

881 </svg>;

882 }

883 return <svg width={sz} height={sz} viewBox="0 0 14 14" fill="none">

884 <rect x="2" y="1.5" width="10" height="11" rx="1.5" fill={color} fillOpacity="0.15" stroke={color} strokeWidth="1" />

885 <line x1="4.5" y1="5" x2="9.5" y2="5" stroke={color} strokeWidth="1" />

886 <line x1="4.5" y1="7" x2="9.5" y2="7" stroke={color} strokeWidth="1" />

887 <line x1="4.5" y1="9" x2="8" y2="9" stroke={color} strokeWidth="1" />

888 </svg>;

889 };

890 const renderNode = (node, depth) => {

891 const isFolder = node.type === 'folder';

892 const isExpanded = expandedFolders.has(node.id);

893 const isSelected = selectedId === node.id;

894 return <div key={node.id}>

895 <button role="treeitem" tabIndex={-1} onClick={() => selectNode(node)} aria-selected={isSelected} aria-expanded={isFolder ? isExpanded : undefined} style={{

896 display: 'flex',

897 alignItems: 'center',

898 gap: '5px',

899 width: '100%',

900 padding: `4px 8px 4px ${8 + depth * 16}px`,

901 background: isSelected ? 'var(--ce-accent-bg)' : 'transparent',

902 borderTop: 'none',

903 borderRight: 'none',

904 borderBottom: 'none',

905 borderLeft: isSelected ? '2px solid var(--ce-accent)' : '2px solid transparent',

906 outline: 'none',

907 cursor: 'pointer',

908 textAlign: 'left',

909 fontFamily: 'var(--ce-mono)',

910 fontSize: '13.5px',

911 color: isSelected ? 'var(--ce-accent)' : 'var(--ce-text-2)',

912 fontWeight: isSelected ? 550 : 400,

913 transition: 'all 0.1s'

914 }}>

915 {isFolder ? <span onClick={e => {

916 e.stopPropagation();

917 toggleFolder(node.id);

918 }} style={{

919 fontSize: '14px',

920 color: 'var(--ce-text-4)',

921 width: '20px',

922 height: '20px',

923 display: 'inline-flex',

924 alignItems: 'center',

925 justifyContent: 'center',

926 cursor: 'pointer',

927 borderRadius: '4px',

928 marginLeft: '-6px',

929 flexShrink: 0

930 }} onMouseEnter={e => {

931 e.currentTarget.style.background = 'var(--ce-arrow-hover)';

932 e.currentTarget.style.color = 'var(--ce-text-2)';

933 }} onMouseLeave={e => {

934 e.currentTarget.style.background = 'transparent';

935 e.currentTarget.style.color = 'var(--ce-text-4)';

936 }}>{isExpanded ? '▾' : '▸'}</span> : <span style={{

937 width: '14px',

938 flexShrink: 0

939 }} />}

940 {renderIcon(node.icon, node.color)}

941 <span style={{

942 flex: 1,

943 overflow: 'hidden',

944 textOverflow: 'ellipsis',

945 whiteSpace: 'nowrap'

946 }}>{node.label}</span>

947 {node.badge && BADGE_STYLES[node.badge] && <span title={BADGE_STYLES[node.badge].label} style={{

948 width: 6,

949 height: 6,

950 borderRadius: '50%',

951 background: BADGE_STYLES[node.badge].color,

952 flexShrink: 0,

953 opacity: 0.7

954 }} />}

955 </button>

956 {isFolder && isExpanded && node.children && <div role="group">{node.children.map(child => renderNode(child, depth + 1))}</div>}

957 </div>;

958 };

959 return <>

960 <style>{`

961 .ce-root {

962 --ce-mono: var(--font-mono, ui-monospace, monospace);

963 --ce-accent: #D97757;

964 --ce-accent-bg: rgba(217,119,87,0.06);

965 --ce-accent-border: rgba(217,119,87,0.12);

966 --ce-bg: #fff;

967 --ce-surface: #FAFAF7;

968 --ce-surface-hover: #F0EEE6;

969 --ce-border: #E8E6DC;

970 --ce-border-subtle: #F0EEE6;

971 --ce-text: #141413;

972 --ce-text-2: #5E5D59;

973 --ce-text-3: #73726C;

974 --ce-text-4: #9C9A92;

975 --ce-text-5: #B8B6AE;

976 --ce-sep: #D1CFC5;

977 --ce-code-header: #F5F4ED;

978 --ce-code-bg: #1A1918;

979 --ce-arrow-hover: rgba(0,0,0,0.08);

980 --ce-badge-committed: #3d6b2e;

981 --ce-badge-gitignored: #b85c3a;

982 --ce-badge-local: #5e5d59;

983 --ce-badge-autogen: #b07520;

984 --ce-when-text: #4a7fb5;

985 }

986 .dark .ce-root {

987 --ce-bg: #1a1918;

988 --ce-surface: #232221;

989 --ce-surface-hover: #2e2d2b;

990 --ce-border: #3a3936;

991 --ce-border-subtle: #2e2d2b;

992 --ce-text: #e8e6dc;

993 --ce-text-2: #c4c2b8;

994 --ce-text-3: #9c9a92;

995 --ce-text-4: #73726c;

996 --ce-text-5: #5e5d59;

997 --ce-sep: #4a4946;

998 --ce-code-header: #2e2d2b;

999 --ce-code-bg: #0d0d0c;

1000 --ce-arrow-hover: rgba(255,255,255,0.08);

1001 --ce-badge-committed: #6fa85c;

1002 --ce-badge-gitignored: #e08a60;

1003 --ce-badge-local: #9c9a92;

1004 --ce-badge-autogen: #e8a45c;

1005 --ce-when-text: #8bb4e0;

1006 }

1007 .ce-mobile-fallback { display: none; border: 1px solid rgba(0,0,0,0.1); background: rgba(0,0,0,0.03); }

1008 .dark .ce-mobile-fallback { border-color: rgba(255,255,255,0.15); background: rgba(255,255,255,0.04); }

1009 @media (max-width: 700px) {

1010 .ce-root:not(.ce-force) { display: none !important; }

1011 .ce-mobile-fallback { display: block; }

1012 }

1013 `}</style>

1014 {!forceMobile && <div className="ce-mobile-fallback" style={{

1015 padding: '14px 16px',

1016 borderRadius: '8px',

1017 fontSize: '14px'

1018 }}>

1019 The interactive explorer works best on a larger screen. See the <a href="#file-reference" style={{

1020 color: '#D97757'

1021 }}>file reference table</a> below, or <button onClick={() => setForceMobile(true)} style={{

1022 border: 'none',

1023 background: 'none',

1024 padding: 0,

1025 color: '#D97757',

1026 textDecoration: 'underline',

1027 cursor: 'pointer',

1028 font: 'inherit'

1029 }}>show the explorer anyway</button>.

1030 </div>}

1031 <div ref={rootRef} className={forceMobile ? 'ce-root ce-force' : 'ce-root'} style={{

1032 borderRadius: isFullscreen ? 0 : '12px',

1033 border: '1px solid var(--ce-border)',

1034 background: 'var(--ce-bg)',

1035 display: 'flex',

1036 alignItems: 'stretch',

1037 overflow: 'hidden',

1038 fontFamily: 'var(--font-sans, -apple-system, sans-serif)',

1039 ...isFullscreen && ({

1040 height: '100vh'

1041 })

1042 }}>

1043 {}

1044 <div style={{

1045 width: 'min(240px, 35%)',

1046 minWidth: '180px',

1047 flexShrink: 0,

1048 borderRight: '1px solid var(--ce-border-subtle)',

1049 background: 'var(--ce-surface)',

1050 display: 'flex',

1051 flexDirection: 'column'

1052 }}>

1053 <div style={{

1054 padding: '8px 8px 4px',

1055 borderBottom: '1px solid var(--ce-border-subtle)',

1056 display: 'flex',

1057 gap: '4px'

1058 }}>

1059 {['project', 'global'].map(root => <button key={root} onClick={() => switchRoot(root)} style={{

1060 flex: 1,

1061 padding: '6px 0',

1062 borderRadius: '6px',

1063 border: 'none',

1064 cursor: 'pointer',

1065 fontFamily: 'var(--ce-mono)',

1066 fontSize: '11.5px',

1067 background: activeRoot === root ? 'var(--ce-accent-bg)' : 'transparent',

1068 color: activeRoot === root ? 'var(--ce-accent)' : 'var(--ce-text-4)',

1069 fontWeight: activeRoot === root ? 600 : 430

1070 }}>

1071 {root === 'project' ? 'Project' : 'Global (~/)'}

1072 </button>)}

1073 <button onClick={toggleAllFolders} title={allExpanded ? 'Collapse all' : 'Expand all'} style={{

1074 ...iconBtn,

1075 fontSize: 11

1076 }}>

1077 {allExpanded ? '⊟' : '⊞'}

1078 </button>

1079 <button onClick={toggleFullscreen} title={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'} style={{

1080 ...iconBtn,

1081 fontSize: 13

1082 }}>

1083 {isFullscreen ? '⤡' : '⛶'}

1084 </button>

1085 </div>

1086 <div role="tree" aria-label="Configuration files" tabIndex={0} onKeyDown={onTreeKeyDown} style={{

1087 padding: '6px 0',

1088 overflowY: 'auto',

1089 flex: 1,

1090 outline: 'none'

1091 }}>

1092 {tree.children.map(node => renderNode(node, 0))}

1093 </div>

1094 </div>

1095 

1096 {}

1097 <div style={{

1098 flex: 1,

1099 minWidth: 0,

1100 padding: '20px 24px',

1101 minHeight: '400px',

1102 overflowY: 'auto'

1103 }}>

1104 <span aria-live="polite" style={{

1105 position: 'absolute',

1106 width: 1,

1107 height: 1,

1108 overflow: 'hidden',

1109 clip: 'rect(0 0 0 0)'

1110 }}>{selected.label} selected</span>

1111 {}

1112 <div style={{

1113 fontFamily: 'var(--ce-mono)',

1114 fontSize: '11px',

1115 color: 'var(--ce-text-4)',

1116 marginBottom: '10px',

1117 cursor: 'default'

1118 }}>

1119 {selected.path.map((seg, i) => <span key={i}>

1120 <span style={{

1121 color: i === selected.path.length - 1 ? 'var(--ce-accent)' : 'var(--ce-text-4)'

1122 }}>{seg.replace(/\/$/, '')}</span>

1123 {i < selected.path.length - 1 && <span style={{

1124 color: 'var(--ce-sep)'

1125 }}> / </span>}

1126 </span>)}

1127 </div>

1128 

1129 {}

1130 <div style={{

1131 display: 'flex',

1132 alignItems: 'flex-start',

1133 gap: '10px',

1134 marginBottom: '10px'

1135 }}>

1136 <span style={{

1137 flexShrink: 0,

1138 display: 'flex'

1139 }}>{renderIcon(selected.icon, selected.color, 24)}</span>

1140 <div style={{

1141 flex: 1,

1142 minWidth: 0

1143 }}>

1144 <div style={{

1145 fontSize: '22px',

1146 fontWeight: 600,

1147 color: 'var(--ce-text)',

1148 letterSpacing: '-0.3px',

1149 lineHeight: '26px'

1150 }}>{selected.label}</div>

1151 {selected.oneLiner && <div style={{

1152 fontSize: '15px',

1153 color: 'var(--ce-text-3)',

1154 marginTop: '3px'

1155 }}>{selected.oneLiner}</div>}

1156 </div>

1157 <div style={{

1158 display: 'flex',

1159 gap: '4px',

1160 flexShrink: 0

1161 }}>

1162 {[selected.autogen && 'autogen', selected.badge].filter(Boolean).map(k => {

1163 const s = BADGE_STYLES[k];

1164 if (!s) return null;

1165 return <span key={k} style={{

1166 fontFamily: 'var(--ce-mono)',

1167 fontSize: '10px',

1168 fontWeight: 600,

1169 textTransform: 'uppercase',

1170 letterSpacing: '0.3px',

1171 padding: '2px 6px',

1172 borderRadius: '4px',

1173 background: s.bg,

1174 color: s.color,

1175 border: `0.5px solid ${s.border}`

1176 }}>{s.label}</span>;

1177 })}

1178 </div>

1179 </div>

1180 

1181 {}

1182 {selected.note && <div style={{

1183 padding: '10px 12px',

1184 borderRadius: '8px',

1185 marginBottom: '14px',

1186 background: 'rgba(217,119,87,0.06)',

1187 border: '1px solid rgba(217,119,87,0.2)',

1188 borderLeft: '3px solid var(--ce-accent)',

1189 fontSize: '15px',

1190 color: 'var(--ce-text-2)',

1191 lineHeight: 1.6

1192 }}>

1193 {selected.note}

1194 </div>}

1195 

1196 {}

1197 {selected.when && <div style={{

1198 padding: '8px 12px',

1199 borderRadius: '6px',

1200 background: 'rgba(106,155,204,0.06)',

1201 border: '0.5px solid rgba(106,155,204,0.12)',

1202 fontSize: '15px',

1203 color: 'var(--ce-when-text)',

1204 marginBottom: '16px'

1205 }}>

1206 <div style={{

1207 fontSize: '10px',

1208 fontWeight: 700,

1209 textTransform: 'uppercase',

1210 letterSpacing: '0.4px',

1211 opacity: 0.65,

1212 marginBottom: '3px'

1213 }}>When it loads</div>

1214 <div style={{

1215 fontWeight: 500

1216 }}>{selected.when}</div>

1217 </div>}

1218 

1219 {}

1220 {selected.description && <div style={{

1221 fontSize: '16px',

1222 color: 'var(--ce-text-2)',

1223 lineHeight: 1.65,

1224 marginBottom: '16px'

1225 }}>

1226 {Array.isArray(selected.description) ? selected.description.map((para, i) => <div key={i} style={{

1227 marginBottom: i < selected.description.length - 1 ? '12px' : 0

1228 }}>{para}</div>) : selected.description}

1229 </div>}

1230 

1231 {}

1232 {selected.contains && selected.contains.length > 0 && <div style={{

1233 marginBottom: '16px'

1234 }}>

1235 <div style={{

1236 fontSize: '11px',

1237 fontWeight: 700,

1238 color: 'var(--ce-text-4)',

1239 textTransform: 'uppercase',

1240 letterSpacing: '0.4px',

1241 marginBottom: '8px'

1242 }}>Common keys</div>

1243 {selected.contains.map((item, i) => <div key={i} style={{

1244 display: 'flex',

1245 gap: '7px',

1246 fontSize: '15px',

1247 color: 'var(--ce-text-2)',

1248 lineHeight: 1.5,

1249 marginBottom: '5px'

1250 }}>

1251 <span style={{

1252 fontSize: '7px',

1253 color: 'var(--ce-text-4)',

1254 marginTop: '6px'

1255 }}>●</span>

1256 <span>{item}</span>

1257 </div>)}

1258 </div>}

1259 

1260 {}

1261 {selected.tips && selected.tips.length > 0 && <div style={{

1262 padding: '12px 14px',

1263 borderRadius: '8px',

1264 background: 'var(--ce-surface)',

1265 border: '1px solid var(--ce-border-subtle)',

1266 marginBottom: '16px'

1267 }}>

1268 <div style={{

1269 fontSize: '11px',

1270 fontWeight: 700,

1271 color: 'var(--ce-accent)',

1272 textTransform: 'uppercase',

1273 letterSpacing: '0.4px',

1274 marginBottom: '6px'

1275 }}>Tips</div>

1276 {selected.tips.map((tip, i) => <div key={i} style={{

1277 display: 'flex',

1278 gap: '7px',

1279 fontSize: '14.5px',

1280 color: 'var(--ce-text-2)',

1281 marginBottom: i < selected.tips.length - 1 ? '5px' : 0

1282 }}>

1283 <span style={{

1284 fontSize: '7px',

1285 color: 'var(--ce-accent)',

1286 marginTop: '6px'

1287 }}>●</span>

1288 <span>{tip}</span>

1289 </div>)}

1290 </div>}

1291 

1292 {}

1293 {selected.example && <div style={{

1294 marginBottom: '16px'

1295 }}>

1296 {selected.exampleIntro && <div style={{

1297 fontSize: '15px',

1298 color: 'var(--ce-text-2)',

1299 lineHeight: 1.6,

1300 marginBottom: '10px'

1301 }}>

1302 {selected.exampleIntro}

1303 </div>}

1304 <div style={{

1305 display: 'flex',

1306 justifyContent: 'space-between',

1307 alignItems: 'center',

1308 padding: '6px 10px',

1309 background: 'var(--ce-code-header)',

1310 border: '1px solid var(--ce-border)',

1311 borderRadius: '8px 8px 0 0'

1312 }}>

1313 <span style={{

1314 fontFamily: 'var(--ce-mono)',

1315 fontSize: '11px',

1316 fontWeight: 600,

1317 color: 'var(--ce-text-3)'

1318 }}>{selected.label}</span>

1319 <button onClick={() => copyExample(selected.id, selected.example)} style={{

1320 padding: '3px 8px',

1321 borderRadius: '4px',

1322 fontSize: '11px',

1323 fontWeight: 600,

1324 cursor: 'pointer',

1325 transition: 'all 0.15s',

1326 background: isCopied ? 'rgba(85,138,66,0.08)' : 'var(--ce-code-header)',

1327 border: isCopied ? '0.5px solid rgba(85,138,66,0.2)' : '0.5px solid var(--ce-border)',

1328 color: isCopied ? '#558A42' : 'var(--ce-text-3)'

1329 }}>

1330 {isCopied ? '✓ Copied' : 'Copy'}

1331 </button>

1332 </div>

1333 <pre style={{

1334 margin: 0,

1335 padding: '12px 14px',

1336 background: 'var(--ce-code-bg)',

1337 color: '#E8E6DC',

1338 fontFamily: 'var(--ce-mono)',

1339 fontSize: '13px',

1340 lineHeight: 1.65,

1341 borderRadius: '0 0 8px 8px',

1342 overflowX: 'auto',

1343 whiteSpace: 'pre'

1344 }}>{selected.example}</pre>

1345 </div>}

1346 

1347 {}

1348 {selected.docsLink && <a href={selected.docsLink} style={{

1349 display: 'inline-flex',

1350 padding: '5px 12px',

1351 borderRadius: '6px',

1352 background: 'var(--ce-accent-bg)',

1353 border: '1px solid var(--ce-accent-border)',

1354 color: 'var(--ce-accent)',

1355 fontSize: '12px',

1356 fontWeight: 600,

1357 textDecoration: 'none'

1358 }}>Full docs →</a>}

1359 

1360 {}

1361 {selected.children && selected.children.length > 0 && <div style={{

1362 marginTop: '20px'

1363 }}>

1364 <div style={{

1365 fontSize: '11px',

1366 fontWeight: 700,

1367 color: 'var(--ce-text-4)',

1368 textTransform: 'uppercase',

1369 letterSpacing: '0.4px',

1370 marginBottom: '8px'

1371 }}>Contents</div>

1372 <div style={{

1373 display: 'flex',

1374 flexDirection: 'column',

1375 gap: '4px'

1376 }}>

1377 {selected.children.map(child => <button key={child.id} onClick={() => selectNode(child)} style={{

1378 display: 'flex',

1379 alignItems: 'center',

1380 gap: '8px',

1381 padding: '6px 8px',

1382 width: '100%',

1383 background: 'var(--ce-surface)',

1384 borderRadius: '6px',

1385 border: 'none',

1386 cursor: 'pointer',

1387 textAlign: 'left',

1388 transition: 'background 0.1s'

1389 }} onMouseEnter={e => e.currentTarget.style.background = 'var(--ce-surface-hover)'} onMouseLeave={e => e.currentTarget.style.background = 'var(--ce-surface)'}>

1390 {renderIcon(child.icon, child.color, 13)}

1391 <span style={{

1392 fontFamily: 'var(--ce-mono)',

1393 fontSize: '12px',

1394 color: 'var(--ce-text-2)'

1395 }}>{child.label}</span>

1396 {child.oneLiner && <span style={{

1397 fontSize: '11px',

1398 color: 'var(--ce-text-4)',

1399 overflow: 'hidden',

1400 textOverflow: 'ellipsis',

1401 whiteSpace: 'nowrap'

1402 }}>{child.oneLiner}</span>}

1403 </button>)}

1404 </div>

1405 </div>}

1406 </div>

1407 </div>

1408 </>;

1409};

1410 

1411Claude Code lit les instructions, les paramètres, les skills, les subagents et la mémoire à partir de votre répertoire de projet et de `~/.claude` dans votre répertoire personnel. Validez les fichiers du projet dans git pour les partager avec votre équipe ; les fichiers dans `~/.claude` sont une configuration personnelle qui s'applique à tous vos projets.

1412 

1413Sur Windows, `~/.claude` se résout en `%USERPROFILE%\.claude`. Si vous définissez [`CLAUDE_CONFIG_DIR`](/fr/env-vars), chaque chemin `~/.claude` sur cette page se trouve sous ce répertoire à la place.

1414 

1415La plupart des utilisateurs ne modifient que `CLAUDE.md` et `settings.json`. Le reste du répertoire est optionnel : ajoutez des skills, des rules ou des subagents selon vos besoins.

1416 

1417## Explorez le répertoire

1418 

1419Cliquez sur les fichiers dans l'arborescence pour voir ce que chacun fait, quand il se charge et un exemple.

1420 

1421<ClaudeExplorer />

1422 

1423## Ce qui n'est pas affiché

1424 

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

1426 

1427| Fichier | Emplacement | Objectif |

1428| ----------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

1429| `managed-settings.json` | Au niveau du système, varie selon le système d'exploitation | Paramètres appliqués par l'entreprise que vous ne pouvez pas remplacer. Consultez [paramètres gérés par le serveur](/fr/server-managed-settings). |

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

1431| Plugins installés | `~/.claude/plugins` | Marchés clonés, versions de plugins installées et données par plugin, gérées par les commandes `claude plugin`. Les versions orphelines sont supprimées 7 jours après une mise à jour ou une désinstallation de plugin. Consultez [mise en cache des plugins](/fr/plugins-reference#plugin-caching-and-file-resolution). |

1432 

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

1434 

1435## Choisissez le bon fichier

1436 

1437Différents types de personnalisation se trouvent dans différents fichiers. Utilisez ce tableau pour trouver où une modification appartient.

1438 

1439| Vous voulez | Modifier | Portée | Référence |

1440| :---------------------------------------------------------------- | :--------------------------------------- | :---------------- | :---------------------------------------------------- |

1441| Donner à Claude le contexte et les conventions du projet | `CLAUDE.md` | projet ou global | [Mémoire](/fr/memory) |

1442| Autoriser ou bloquer des appels d'outils spécifiques | `settings.json` `permissions` ou `hooks` | projet ou global | [Permissions](/fr/permissions), [Hooks](/fr/hooks) |

1443| Exécuter un script avant ou après les appels d'outils | `settings.json` `hooks` | projet ou global | [Hooks](/fr/hooks) |

1444| Définir les variables d'environnement pour la session | `settings.json` `env` | projet ou global | [Paramètres](/fr/settings#available-settings) |

1445| Garder les remplacements personnels hors de git | `settings.local.json` | projet uniquement | [Portées des paramètres](/fr/settings#settings-files) |

1446| Ajouter une invite ou une capacité que vous invoquez avec `/name` | `skills/<name>/SKILL.md` | projet ou global | [Skills](/fr/skills) |

1447| Définir un subagent spécialisé avec ses propres outils | `agents/*.md` | projet ou global | [Subagents](/fr/sub-agents) |

1448| Connecter des outils externes via MCP | `.mcp.json` | projet uniquement | [MCP](/fr/mcp) |

1449| Modifier la façon dont Claude formate les réponses | `output-styles/*.md` | projet ou global | [Styles de sortie](/fr/output-styles) |

1450 

1451## Référence des fichiers

1452 

1453Ce tableau répertorie tous les fichiers que l'explorateur couvre. Les fichiers au niveau du projet se trouvent dans votre dépôt sous `.claude/` (ou à la racine pour `CLAUDE.md`, `.mcp.json` et `.worktreeinclude`). Les fichiers au niveau global se trouvent dans `~/.claude/` et s'appliquent à tous les projets.

1454 

1455<Note>

1456 Plusieurs choses peuvent remplacer ce que vous mettez dans ces fichiers :

1457 

1458 * [Les paramètres gérés](/fr/server-managed-settings) déployés par votre organisation ont la priorité sur tout

1459 * Les flags CLI comme `--permission-mode` ou `--settings` remplacent `settings.json` pour cette session

1460 * Certaines variables d'environnement ont la priorité sur leur paramètre équivalent, mais cela varie : consultez la [référence des variables d'environnement](/fr/env-vars) pour chacune

1461 

1462 Consultez [précédence des paramètres](/fr/settings#settings-precedence) pour l'ordre complet.

1463</Note>

1464 

1465Cliquez sur un nom de fichier pour ouvrir ce nœud dans l'explorateur ci-dessus.

1466 

1467| Fichier | Portée | Valider | Ce qu'il fait | Référence |

1468| --------------------------------------------------- | ----------------- | ------- | --------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |

1469| [`CLAUDE.md`](#ce-claude-md) | Projet et global | ✓ | Instructions chargées à chaque session | [Mémoire](/fr/memory) |

1470| [`rules/*.md`](#ce-rules) | Projet et global | ✓ | Instructions limitées à un sujet, optionnellement limitées par chemin | [Rules](/fr/memory#organize-rules-with-claude/rules/) |

1471| [`settings.json`](#ce-settings-json) | Projet et global | ✓ | Permissions, hooks, variables d'environnement, paramètres par défaut du modèle | [Paramètres](/fr/settings) |

1472| [`settings.local.json`](#ce-settings-local-json) | Projet uniquement | | Vos remplacements personnels, auto-gitignorés | [Portées des paramètres](/fr/settings#settings-files) |

1473| [`.mcp.json`](#ce-mcp-json) | Projet uniquement | ✓ | Serveurs MCP partagés par l'équipe | [Portées MCP](/fr/mcp#mcp-installation-scopes) |

1474| [`.worktreeinclude`](#ce-worktreeinclude) | Projet uniquement | ✓ | Fichiers gitignorés à copier dans les nouveaux worktrees | [Worktrees](/fr/common-workflows#copy-gitignored-files-to-worktrees) |

1475| [`skills/<name>/SKILL.md`](#ce-skills) | Projet et global | ✓ | Invites réutilisables invoquées avec `/name` ou auto-invoquées | [Skills](/fr/skills) |

1476| [`commands/*.md`](#ce-commands) | Projet et global | ✓ | Invites sur un seul fichier ; même mécanisme que les skills | [Skills](/fr/skills) |

1477| [`output-styles/*.md`](#ce-output-styles) | Projet et global | ✓ | Sections de système-prompt personnalisées | [Styles de sortie](/fr/output-styles) |

1478| [`agents/*.md`](#ce-agents) | Projet et global | ✓ | Définitions de subagents avec leur propre invite et outils | [Subagents](/fr/sub-agents) |

1479| [`agent-memory/<name>/`](#ce-agent-memory) | Projet et global | ✓ | Mémoire persistante pour les subagents | [Mémoire persistante](/fr/sub-agents#enable-persistent-memory) |

1480| [`~/.claude.json`](#ce-claude-json) | Global uniquement | | État de l'application, OAuth, bascules d'interface utilisateur, serveurs MCP personnels | [Configuration globale](/fr/settings#global-config-settings) |

1481| [`projects/<project>/memory/`](#ce-global-projects) | Global uniquement | | Auto memory : notes de Claude à lui-même entre les sessions | [Auto memory](/fr/memory#auto-memory) |

1482| [`keybindings.json`](#ce-keybindings) | Global uniquement | | Raccourcis clavier personnalisés | [Keybindings](/fr/keybindings) |

1483| [`themes/*.json`](#ce-themes) | Global uniquement | | Thèmes de couleurs personnalisés | [Thèmes personnalisés](/fr/terminal-config#create-a-custom-theme) |

1484 

1485## Dépannez votre configuration

1486 

1487Si un paramètre, un hook ou un fichier ne prend pas effet, consultez [Déboguez votre configuration](/fr/debug-your-config) pour les commandes d'inspection et un tableau de recherche basé sur les symptômes.

1488 

1489## Données d'application

1490 

1491Au-delà de la configuration que vous créez, `~/.claude` contient les données que Claude Code écrit pendant les sessions. Ces fichiers sont en texte brut. Tout ce qui passe par un outil se retrouve dans une transcription sur disque : contenu de fichiers, sortie de commande, texte collé.

1492 

1493### Nettoyés automatiquement

1494 

1495Les fichiers dans les chemins ci-dessous sont supprimés au démarrage une fois qu'ils sont plus anciens que [`cleanupPeriodDays`](/fr/settings#available-settings). La valeur par défaut est 30 jours.

1496 

1497| Chemin sous `~/.claude/` | Contenu |

1498| -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |

1499| `projects/<project>/<session>.jsonl` | Transcription complète de la conversation : chaque message, appel d'outil et résultat d'outil |

1500| `projects/<project>/<session>/tool-results/` | Les grandes sorties d'outils sont versées dans des fichiers séparés |

1501| `file-history/<session>/` | Instantanés pré-édition des fichiers que Claude a modifiés, utilisés pour [restauration de checkpoint](/fr/checkpointing) |

1502| `plans/` | Fichiers de plan écrits pendant le [mode plan](/fr/permission-modes#analyze-before-you-edit-with-plan-mode) |

1503| `debug/` | Journaux de débogage par session, écrits uniquement lorsque vous démarrez avec `--debug` ou exécutez `/debug` |

1504| `paste-cache/`, `image-cache/` | Contenu des grands collages et images jointes |

1505| `session-env/` | Métadonnées d'environnement par session |

1506| `tasks/` | Listes de tâches par session écrites par les outils de tâche |

1507| `shell-snapshots/` | Environnement shell capturé utilisé par l'outil Bash. Supprimé à la fermeture correcte. Le balayage efface tout ce qui reste après un crash. |

1508| `backups/` | Copies horodatées de `~/.claude.json` prises avant les migrations de configuration |

1509 

1510### Conservés jusqu'à ce que vous les supprimiez

1511 

1512Les chemins suivants ne sont pas couverts par le nettoyage automatique et persistent indéfiniment.

1513 

1514| Chemin sous `~/.claude/` | Contenu |

1515| ------------------------ | ------------------------------------------------------------------------------------------------------------------------- |

1516| `history.jsonl` | Chaque invite que vous avez tapée, avec horodatage et chemin du projet. Utilisé pour le rappel de la flèche vers le haut. |

1517| `stats-cache.json` | Nombres de tokens et de coûts agrégés affichés par `/cost` |

1518| `todos/` | Listes de tâches par session héritées. Ne sont plus écrites par les versions actuelles ; sûr à supprimer. |

1519 

1520D'autres petits fichiers de cache et de verrouillage apparaissent selon les fonctionnalités que vous utilisez et peuvent être supprimés en toute sécurité.

1521 

1522### Stockage en texte brut

1523 

1524Les transcriptions et l'historique ne sont pas chiffrés au repos. Les permissions de fichiers du système d'exploitation sont la seule protection. Si un outil lit un fichier `.env` ou qu'une commande imprime une credential, cette valeur est écrite dans `projects/<project>/<session>.jsonl`. Pour réduire l'exposition :

1525 

1526* Réduisez `cleanupPeriodDays` pour raccourcir la durée de conservation des transcriptions

1527* Définissez la variable d'environnement [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/fr/env-vars) pour ignorer l'écriture des transcriptions et de l'historique des invites dans n'importe quel mode. En mode non interactif, vous pouvez à la place passer `--no-session-persistence` aux côtés de `-p`, ou définir `persistSession: false` dans le SDK Agent.

1528* Utilisez les [règles de permissions](/fr/permissions) pour refuser les lectures des fichiers de credentials

1529 

1530### Effacer les données locales

1531 

1532Exécutez `claude project purge` pour supprimer l'état que Claude Code maintient pour un projet :

1533 

1534* Transcriptions et mémoire automatique sous `projects/`

1535* Entrées `tasks/`, `debug/` et `file-history/` par session

1536* Lignes d'invite correspondantes dans `history.jsonl`

1537* L'entrée du projet dans `~/.claude.json`

1538 

1539La commande affiche le plan de suppression complet et demande une confirmation avant de supprimer quoi que ce soit.

1540 

1541Prévisualisez le plan sans supprimer quoi que ce soit :

1542 

1543```bash theme={null}

1544claude project purge ~/work/my-repo --dry-run

1545```

1546 

1547Supprimez avec une seule invite de confirmation :

1548 

1549```bash theme={null}

1550claude project purge ~/work/my-repo

1551```

1552 

1553Omettez le chemin pour choisir un projet dans une liste interactive.

1554 

1555Ignorez l'invite de confirmation pour une utilisation dans les scripts :

1556 

1557```bash theme={null}

1558claude project purge ~/work/my-repo --yes

1559```

1560 

1561Passez `--all` à la place d'un chemin pour purger l'état de tous les projets à la fois, ce qui supprime `history.jsonl` complètement plutôt que de le filtrer. Passez `-i` pour parcourir le plan de suppression un élément à la fois.

1562 

1563La commande laisse `shell-snapshots/` et `backups/` seuls car ceux-ci ne sont pas limités à un projet, et les avertit dans la sortie du plan. Elle se termine avec le statut 1 si aucun état ne correspond au chemin donné.

1564 

1565Vous pouvez également supprimer manuellement l'un des chemins de données d'application ci-dessus. Les nouvelles sessions ne sont pas affectées. Le tableau ci-dessous montre ce que vous perdez pour les sessions passées.

1566 

1567| Supprimer | Vous perdez |

1568| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- |

1569| `~/.claude/projects/` | Reprendre, continuer et rembobiner pour les sessions passées |

1570| `~/.claude/history.jsonl` | Rappel d'invite de la flèche vers le haut |

1571| `~/.claude/file-history/` | Restauration de checkpoint pour les sessions passées |

1572| `~/.claude/stats-cache.json` | Totaux historiques affichés par `/cost` |

1573| `~/.claude/debug/`, `~/.claude/plans/`, `~/.claude/paste-cache/`, `~/.claude/image-cache/`, `~/.claude/session-env/`, `~/.claude/tasks/`, `~/.claude/shell-snapshots/`, `~/.claude/backups/` | Rien d'orienté utilisateur |

1574| `~/.claude/todos/` | Rien. Répertoire hérité non écrit par les versions actuelles. |

1575 

1576Ne supprimez pas `~/.claude.json`, `~/.claude/settings.json` ou `~/.claude/plugins/` : ceux-ci contiennent votre authentification, vos préférences et vos plugins installés.

1577 

1578## Ressources connexes

1579 

1580* [Gérez la mémoire de Claude](/fr/memory) : écrivez et organisez CLAUDE.md, rules et auto memory

1581* [Configurez les paramètres](/fr/settings) : définissez les permissions, hooks, variables d'environnement et paramètres par défaut du modèle

1582* [Créez des skills](/fr/skills) : créez des invites et des workflows réutilisables

1583* [Configurez les subagents](/fr/sub-agents) : définissez des agents spécialisés avec leur propre contexte

cli-reference.md +129 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Référence CLI

6 

7> Référence complète pour l'interface de ligne de commande Claude Code, incluant les commandes et les drapeaux.

8 

9## Commandes CLI

10 

11Vous pouvez démarrer des sessions, traiter du contenu, reprendre des conversations et gérer les mises à jour avec ces commandes :

12 

13| Commande | Description | Exemple |

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

15| `claude` | Démarrer une session interactive | `claude` |

16| `claude "query"` | Démarrer une session interactive avec une invite initiale | `claude "explain this project"` |

17| `claude -p "query"` | Interroger via SDK, puis quitter | `claude -p "explain this function"` |

18| `cat file \| claude -p "query"` | Traiter le contenu canalisé | `cat logs.txt \| claude -p "explain"` |

19| `claude -c` | Continuer la conversation la plus récente dans le répertoire courant | `claude -c` |

20| `claude -c -p "query"` | Continuer via SDK | `claude -c -p "Check for type errors"` |

21| `claude -r "<session>" "query"` | Reprendre une session par ID ou nom | `claude -r "auth-refactor" "Finish this PR"` |

22| `claude update` | Mettre à jour vers la dernière version | `claude update` |

23| `claude install [version]` | Installer ou réinstaller le binaire natif. Accepte une version comme `2.1.118`, ou `stable` ou `latest`. Voir [Installer une version spécifique](/fr/setup#install-a-specific-version) | `claude install stable` |

24| `claude auth login` | Se connecter à votre compte Anthropic. Utilisez `--email` pour pré-remplir votre adresse e-mail, `--sso` pour forcer l'authentification SSO, et `--console` pour vous connecter avec Anthropic Console pour la facturation de l'utilisation de l'API au lieu d'un abonnement Claude | `claude auth login --console` |

25| `claude auth logout` | Se déconnecter de votre compte Anthropic | `claude auth logout` |

26| `claude auth status` | Afficher l'état d'authentification en JSON. Utilisez `--text` pour une sortie lisible par l'homme. Quitte avec le code 0 si connecté, 1 sinon | `claude auth status` |

27| `claude agents` | Lister tous les [subagents](/fr/sub-agents) configurés, groupés par source | `claude agents` |

28| `claude auto-mode defaults` | Imprimer les règles du classificateur [mode auto](/fr/permission-modes#eliminate-prompts-with-auto-mode) intégrées en JSON. Utilisez `claude auto-mode config` pour voir votre configuration effective avec les paramètres appliqués | `claude auto-mode defaults > rules.json` |

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

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

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

32| `claude remote-control` | Démarrer un serveur [Remote Control](/fr/remote-control) pour contrôler Claude Code depuis Claude.ai ou l'application Claude. S'exécute en mode serveur (pas de session interactive locale). Voir [Drapeaux du mode serveur](/fr/remote-control#start-a-remote-control-session) | `claude remote-control --name "My Project"` |

33| `claude setup-token` | Générer un jeton OAuth de longue durée pour CI et les scripts. Imprime le jeton sur le terminal sans l'enregistrer. Nécessite un abonnement Claude. Voir [Générer un jeton de longue durée](/fr/authentication#generate-a-long-lived-token) | `claude setup-token` |

34| `claude ultrareview [target]` | Exécuter [ultrareview](/fr/ultrareview#run-ultrareview-non-interactively) de manière non interactive. Imprime les résultats sur stdout et quitte avec 0 en cas de succès ou 1 en cas d'échec. Utilisez `--json` pour la charge utile brute et `--timeout <minutes>` pour remplacer la valeur par défaut de 30 minutes | `claude ultrareview 1234 --json` |

35 

36Si vous tapez mal une sous-commande, Claude Code suggère la correspondance la plus proche et quitte sans démarrer une session. Par exemple, `claude udpate` imprime `Did you mean claude update?`.

37 

38## Drapeaux CLI

39 

40Personnalisez le comportement de Claude Code avec ces drapeaux de ligne de commande. `claude --help` ne répertorie pas tous les drapeaux, donc l'absence d'un drapeau dans `--help` ne signifie pas qu'il n'est pas disponible.

41 

42| Drapeau | Description | Exemple |

43| :---------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------- |

44| `--add-dir` | Ajouter des répertoires de travail supplémentaires pour que Claude y accède et modifie les fichiers. Accorde l'accès aux fichiers ; la plupart de la configuration `.claude/` est [non découverte](/fr/permissions#additional-directories-grant-file-access-not-configuration) à partir de ces répertoires. Valide que chaque chemin existe en tant que répertoire | `claude --add-dir ../apps ../lib` |

45| `--agent` | Spécifier un agent pour la session actuelle (remplace le paramètre `agent`) | `claude --agent my-custom-agent` |

46| `--agents` | Définir des subagents personnalisés dynamiquement via JSON. Utilise les mêmes noms de champs que le [frontmatter](/fr/sub-agents#supported-frontmatter-fields) des subagents, plus un champ `prompt` pour les instructions de l'agent | `claude --agents '{"reviewer":{"description":"Reviews code","prompt":"You are a code reviewer"}}'` |

47| `--allow-dangerously-skip-permissions` | Ajouter `bypassPermissions` au cycle du mode `Shift+Tab` sans commencer dedans. Permet de commencer dans un mode différent comme `plan` et de basculer vers `bypassPermissions` plus tard. Voir [modes de permission](/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) | `claude --permission-mode plan --allow-dangerously-skip-permissions` |

48| `--allowedTools` | Outils qui s'exécutent sans demander la permission. Voir [syntaxe des règles de permission](/fr/settings#permission-rule-syntax) pour la correspondance de motifs. Pour restreindre les outils disponibles, utilisez `--tools` à la place | `"Bash(git log *)" "Bash(git diff *)" "Read"` |

49| `--append-system-prompt` | Ajouter du texte personnalisé à la fin de l'invite système par défaut | `claude --append-system-prompt "Always use TypeScript"` |

50| `--append-system-prompt-file` | Charger du texte d'invite système supplémentaire à partir d'un fichier et l'ajouter à l'invite par défaut | `claude --append-system-prompt-file ./extra-rules.txt` |

51| `--bare` | Mode minimal : ignorer la découverte automatique des hooks, skills, plugins, serveurs MCP, mémoire automatique et CLAUDE.md afin que les appels scriptés démarrent plus rapidement. Claude a accès aux outils Bash, lecture de fichier et édition de fichier. Définit [`CLAUDE_CODE_SIMPLE`](/fr/env-vars). Voir [mode bare](/fr/headless#start-faster-with-bare-mode) | `claude --bare -p "query"` |

52| `--betas` | En-têtes bêta à inclure dans les requêtes API (utilisateurs de clé API uniquement) | `claude --betas interleaved-thinking` |

53| `--channels` | (Aperçu de recherche) Serveurs MCP dont les notifications de [canal](/fr/channels) Claude doit écouter dans cette session. Liste séparée par des espaces d'entrées `plugin:<name>@<marketplace>`. Nécessite l'authentification Claude.ai | `claude --channels plugin:my-notifier@my-marketplace` |

54| `--chrome` | Activer l'[intégration du navigateur Chrome](/fr/chrome) pour l'automatisation web et les tests | `claude --chrome` |

55| `--continue`, `-c` | Charger la conversation la plus récente dans le répertoire courant. Inclut les sessions qui ont ajouté ce répertoire avec `/add-dir` | `claude --continue` |

56| `--dangerously-load-development-channels` | Activer les [canaux](/fr/channels-reference#test-during-the-research-preview) qui ne sont pas sur la liste d'approbation, pour le développement local. Accepte les entrées `plugin:<name>@<marketplace>` et `server:<name>`. Demande une confirmation | `claude --dangerously-load-development-channels server:webhook` |

57| `--dangerously-skip-permissions` | Ignorer les invites de permission. Équivalent à `--permission-mode bypassPermissions`. Voir [modes de permission](/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) pour ce que cela ignore et n'ignore pas | `claude --dangerously-skip-permissions` |

58| `--debug` | Activer le mode débogage avec filtrage de catégorie optionnel (par exemple, `"api,hooks"` ou `"!statsig,!file"`) | `claude --debug "api,mcp"` |

59| `--debug-file <path>` | Écrire les journaux de débogage dans un chemin de fichier spécifique. Active implicitement le mode débogage. Prend la priorité sur `CLAUDE_CODE_DEBUG_LOGS_DIR` | `claude --debug-file /tmp/claude-debug.log` |

60| `--disable-slash-commands` | Désactiver tous les skills et commandes pour cette session | `claude --disable-slash-commands` |

61| `--disallowedTools` | Outils qui sont supprimés du contexte du modèle et ne peuvent pas être utilisés | `"Bash(git log *)" "Bash(git diff *)" "Edit"` |

62| `--effort` | Définir le [niveau d'effort](/fr/model-config#adjust-effort-level) pour la session actuelle. Options : `low`, `medium`, `high`, `xhigh`, `max` ; les niveaux disponibles dépendent du modèle. Limité à la session et ne persiste pas dans les paramètres | `claude --effort high` |

63| `--enable-auto-mode` | {/* max-version: 2.1.110 */}Supprimé dans v2.1.111. Le mode auto est maintenant dans le cycle `Shift+Tab` par défaut ; utilisez `--permission-mode auto` pour commencer dedans | `claude --permission-mode auto` |

64| `--exclude-dynamic-system-prompt-sections` | Déplacer les sections par machine de l'invite système (répertoire de travail, informations d'environnement, chemins de mémoire, statut git) dans le premier message utilisateur. Améliore la réutilisation du cache d'invite sur différents utilisateurs et machines exécutant la même tâche. S'applique uniquement avec l'invite système par défaut ; ignoré lorsque `--system-prompt` ou `--system-prompt-file` est défini. À utiliser avec `-p` pour les charges de travail scriptées multi-utilisateurs | `claude -p --exclude-dynamic-system-prompt-sections "query"` |

65| `--fallback-model` | Activer le basculement automatique vers le modèle spécifié lorsque le modèle par défaut est surchargé (mode impression uniquement) | `claude -p --fallback-model sonnet "query"` |

66| `--fork-session` | Lors de la reprise, créer un nouvel ID de session au lieu de réutiliser l'original (à utiliser avec `--resume` ou `--continue`) | `claude --resume abc123 --fork-session` |

67| `--from-pr` | Reprendre les sessions liées à une demande de tirage spécifique. Accepte un numéro de PR, une URL GitHub ou GitHub Enterprise PR, une URL de demande de fusion GitLab, ou une URL de demande de tirage Bitbucket. Les sessions sont automatiquement liées lorsque Claude crée la demande de tirage | `claude --from-pr 123` |

68| `--ide` | Se connecter automatiquement à l'IDE au démarrage s'il y a exactement un IDE valide disponible | `claude --ide` |

69| `--init` | Exécuter les hooks d'[initialisation](/fr/hooks#setup) avec le matcher `init` avant la session (mode impression uniquement) | `claude -p --init "query"` |

70| `--init-only` | Exécuter les hooks d'[initialisation](/fr/hooks#setup) et `SessionStart`, puis quitter sans démarrer une conversation | `claude --init-only` |

71| `--include-hook-events` | Inclure tous les événements du cycle de vie des hooks dans le flux de sortie. Nécessite `--output-format stream-json` | `claude -p --output-format stream-json --include-hook-events "query"` |

72| `--include-partial-messages` | Inclure les événements de streaming partiels dans la sortie. Nécessite `--print` et `--output-format stream-json` | `claude -p --output-format stream-json --include-partial-messages "query"` |

73| `--input-format` | Spécifier le format d'entrée pour le mode impression (options : `text`, `stream-json`) | `claude -p --output-format json --input-format stream-json` |

74| `--json-schema` | Obtenir une sortie JSON validée correspondant à un JSON Schema après que l'agent ait terminé son flux de travail (mode impression uniquement, voir [structured outputs](/fr/agent-sdk/structured-outputs)) | `claude -p --json-schema '{"type":"object","properties":{...}}' "query"` |

75| `--maintenance` | Exécuter les hooks d'[initialisation](/fr/hooks#setup) avec le matcher `maintenance` avant la session (mode impression uniquement) | `claude -p --maintenance "query"` |

76| `--max-budget-usd` | Montant en dollars maximum à dépenser pour les appels API avant d'arrêter (mode impression uniquement) | `claude -p --max-budget-usd 5.00 "query"` |

77| `--max-turns` | Limiter le nombre de tours d'agent (mode impression uniquement). Quitte avec une erreur lorsque la limite est atteinte. Pas de limite par défaut | `claude -p --max-turns 3 "query"` |

78| `--mcp-config` | Charger les serveurs MCP à partir de fichiers ou de chaînes JSON (séparés par des espaces) | `claude --mcp-config ./mcp.json` |

79| `--model` | Définit le modèle pour la session actuelle avec un alias pour le dernier modèle (`sonnet` ou `opus`) ou le nom complet d'un modèle | `claude --model claude-sonnet-4-6` |

80| `--name`, `-n` | Définir un nom d'affichage pour la session, affiché dans `/resume` et le titre du terminal. Vous pouvez reprendre une session nommée avec `claude --resume <name>`. <br /><br />[`/rename`](/fr/commands) change le nom en cours de session et l'affiche également dans la barre d'invite | `claude -n "my-feature-work"` |

81| `--no-chrome` | Désactiver l'[intégration du navigateur Chrome](/fr/chrome) pour cette session | `claude --no-chrome` |

82| `--no-session-persistence` | Désactiver la persistance de session afin que les sessions ne soient pas enregistrées sur le disque et ne puissent pas être reprises (mode impression uniquement) | `claude -p --no-session-persistence "query"` |

83| `--output-format` | Spécifier le format de sortie pour le mode impression (options : `text`, `json`, `stream-json`) | `claude -p "query" --output-format json` |

84| `--permission-mode` | Commencer dans un [mode de permission](/fr/permission-modes) spécifié. Accepte `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, ou `bypassPermissions`. Remplace `defaultMode` des fichiers de paramètres | `claude --permission-mode plan` |

85| `--permission-prompt-tool` | Spécifier un outil MCP pour gérer les invites de permission en mode non interactif | `claude -p --permission-prompt-tool mcp_auth_tool "query"` |

86| `--plugin-dir` | Charger les plugins à partir d'un répertoire pour cette session uniquement. Chaque drapeau prend un chemin. Répétez le drapeau pour plusieurs répertoires : `--plugin-dir A --plugin-dir B` | `claude --plugin-dir ./my-plugins` |

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

88| `--remote` | Créer une nouvelle [session web](/fr/claude-code-on-the-web) sur claude.ai avec la description de tâche fournie | `claude --remote "Fix the login bug"` |

89| `--remote-control`, `--rc` | Démarrer une session interactive avec [Remote Control](/fr/remote-control#start-a-remote-control-session) activé afin que vous puissiez également le contrôler depuis claude.ai ou l'application Claude. Optionnellement, passez un nom pour la session | `claude --remote-control "My Project"` |

90| `--remote-control-session-name-prefix <prefix>` | Préfixe pour les noms de session [Remote Control](/fr/remote-control) générés automatiquement lorsqu'aucun nom explicite n'est défini. Par défaut, le nom d'hôte de votre machine, produisant des noms comme `myhost-graceful-unicorn`. Définissez `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` pour le même effet | `claude remote-control --remote-control-session-name-prefix dev-box` |

91| `--replay-user-messages` | Ré-émettre les messages utilisateur de stdin sur stdout pour la reconnaissance. Nécessite `--input-format stream-json` et `--output-format stream-json` | `claude -p --input-format stream-json --output-format stream-json --replay-user-messages` |

92| `--resume`, `-r` | Reprendre une session spécifique par ID ou nom, ou afficher un sélecteur interactif pour choisir une session. Inclut les sessions qui ont ajouté ce répertoire avec `/add-dir` | `claude --resume auth-refactor` |

93| `--session-id` | Utiliser un ID de session spécifique pour la conversation (doit être un UUID valide) | `claude --session-id "550e8400-e29b-41d4-a716-446655440000"` |

94| `--setting-sources` | Liste séparée par des virgules des sources de paramètres à charger (`user`, `project`, `local`) | `claude --setting-sources user,project` |

95| `--settings` | Chemin vers un fichier JSON de paramètres ou une chaîne JSON pour charger des paramètres supplémentaires | `claude --settings ./settings.json` |

96| `--strict-mcp-config` | Utiliser uniquement les serveurs MCP de `--mcp-config`, en ignorant toutes les autres configurations MCP | `claude --strict-mcp-config --mcp-config ./mcp.json` |

97| `--system-prompt` | Remplacer l'invite système entière par du texte personnalisé | `claude --system-prompt "You are a Python expert"` |

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

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

100| `--teammate-mode` | Définir comment les coéquipiers de l'[équipe d'agents](/fr/agent-teams) s'affichent : `auto` (par défaut), `in-process`, ou `tmux`. Voir [Choisir un mode d'affichage](/fr/agent-teams#choose-a-display-mode) | `claude --teammate-mode in-process` |

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

102| `--tools` | Restreindre les outils intégrés que Claude peut utiliser. Utilisez `""` pour désactiver tous, `"default"` pour tous, ou des noms d'outils comme `"Bash,Edit,Read"` | `claude --tools "Bash,Edit,Read"` |

103| `--verbose` | Activer la journalisation détaillée, affiche la sortie complète tour par tour | `claude --verbose` |

104| `--version`, `-v` | Afficher le numéro de version | `claude -v` |

105| `--worktree`, `-w` | Démarrer Claude dans un [git worktree](/fr/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees) isolé à `<repo>/.claude/worktrees/<name>`. Si aucun nom n'est donné, un est généré automatiquement | `claude -w feature-auth` |

106 

107### Drapeaux d'invite système

108 

109Claude Code fournit quatre drapeaux pour personnaliser l'invite système. Les quatre fonctionnent à la fois en mode interactif et non interactif.

110 

111| Drapeau | Comportement | Exemple |

112| :---------------------------- | :------------------------------------------------- | :------------------------------------------------------ |

113| `--system-prompt` | Remplace l'invite par défaut entière | `claude --system-prompt "You are a Python expert"` |

114| `--system-prompt-file` | Remplace par le contenu du fichier | `claude --system-prompt-file ./prompts/review.txt` |

115| `--append-system-prompt` | Ajoute à l'invite par défaut | `claude --append-system-prompt "Always use TypeScript"` |

116| `--append-system-prompt-file` | Ajoute le contenu du fichier à l'invite par défaut | `claude --append-system-prompt-file ./style-rules.txt` |

117 

118`--system-prompt` et `--system-prompt-file` s'excluent mutuellement. Les drapeaux d'ajout peuvent être combinés avec l'un ou l'autre drapeau de remplacement.

119 

120Pour la plupart des cas d'utilisation, utilisez un drapeau d'ajout. L'ajout préserve les capacités intégrées de Claude Code tout en ajoutant vos exigences. Utilisez un drapeau de remplacement uniquement lorsque vous avez besoin d'un contrôle complet sur l'invite système.

121 

122## Voir aussi

123 

124* [Extension Chrome](/fr/chrome) - Automatisation du navigateur et tests web

125* [Mode interactif](/fr/interactive-mode) - Raccourcis, modes d'entrée et fonctionnalités interactives

126* [Guide de démarrage rapide](/fr/quickstart) - Prise en main de Claude Code

127* [Flux de travail courants](/fr/common-workflows) - Flux de travail et modèles avancés

128* [Paramètres](/fr/settings) - Options de configuration

129* [Documentation du SDK Agent](/fr/agent-sdk/overview) - Utilisation programmatique et intégrations

code-review.md +280 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Révision de code

6 

7> Configurez des révisions de PR automatisées qui détectent les erreurs logiques, les vulnérabilités de sécurité et les régressions en utilisant l'analyse multi-agents de votre base de code complète

8 

9<Note>

10 Code Review est en aperçu de recherche, disponible pour les abonnements [Team et Enterprise](https://claude.ai/admin-settings/claude-code). Il n'est pas disponible pour les organisations avec [Zero Data Retention](/fr/zero-data-retention) activé.

11</Note>

12 

13Code Review analyse vos pull requests GitHub et publie les résultats sous forme de commentaires en ligne sur les lignes de code où il a trouvé des problèmes. Une flotte d'agents spécialisés examine les modifications de code dans le contexte de votre base de code complète, en recherchant les erreurs logiques, les vulnérabilités de sécurité, les cas limites cassés et les régressions subtiles.

14 

15Les résultats sont étiquetés par gravité et n'approuvent ni ne bloquent votre PR, de sorte que les flux de travail d'examen existants restent intacts. Vous pouvez affiner ce que Claude signale en ajoutant un fichier `CLAUDE.md` ou `REVIEW.md` à votre référentiel.

16 

17Pour exécuter Claude dans votre propre infrastructure CI au lieu de ce service géré, consultez [GitHub Actions](/fr/github-actions) ou [GitLab CI/CD](/fr/gitlab-ci-cd). Pour les référentiels sur une instance GitHub auto-hébergée, consultez [GitHub Enterprise Server](/fr/github-enterprise-server).

18 

19Cette page couvre :

20 

21* [Comment fonctionnent les révisions](#how-reviews-work)

22* [Configuration](#set-up-code-review)

23* [Déclenchement manuel des révisions](#manually-trigger-reviews) avec `@claude review` et `@claude review once`

24* [Personnalisation des révisions](#customize-reviews) avec `CLAUDE.md` et `REVIEW.md`

25* [Tarification](#pricing)

26* [Dépannage](#troubleshooting) des exécutions échouées et des commentaires manquants

27 

28## Comment fonctionnent les révisions

29 

30Une fois qu'un administrateur [active Code Review](#set-up-code-review) pour votre organisation, les révisions se déclenchent à l'ouverture d'une PR, à chaque push, ou sur demande manuelle, selon le comportement configuré du référentiel. Commenter `@claude review` [démarre les révisions sur une PR](#manually-trigger-reviews) dans n'importe quel mode.

31 

32Lorsqu'une révision s'exécute, plusieurs agents analysent le diff et le code environnant en parallèle sur l'infrastructure Anthropic. Chaque agent recherche une classe de problème différente, puis une étape de vérification vérifie les candidats par rapport au comportement réel du code pour filtrer les faux positifs. Les résultats sont dédupliqués, classés par gravité et publiés sous forme de commentaires en ligne sur les lignes spécifiques où les problèmes ont été trouvés, avec un résumé dans le corps de la révision. Si aucun problème n'est trouvé, Claude publie un court commentaire de confirmation sur la PR.

33 

34Les révisions s'adaptent en coût à la taille et à la complexité de la PR, se complétant en moyenne en 20 minutes. Les administrateurs peuvent surveiller l'activité de révision et les dépenses via le [tableau de bord analytique](#view-usage).

35 

36### Niveaux de gravité

37 

38Chaque résultat est étiqueté avec un niveau de gravité :

39 

40| Marqueur | Gravité | Signification |

41| :------- | :---------- | :----------------------------------------------------------------------------- |

42| 🔴 | Important | Un bug qui devrait être corrigé avant la fusion |

43| 🟡 | Nit | Un problème mineur, utile à corriger mais non bloquant |

44| 🟣 | Préexistant | Un bug qui existe dans la base de code mais n'a pas été introduit par cette PR |

45 

46Les résultats incluent une section de raisonnement étendu réductible que vous pouvez développer pour comprendre pourquoi Claude a signalé le problème et comment il a vérifié le problème.

47 

48### Évaluer et répondre aux résultats

49 

50Chaque commentaire de révision de Claude arrive avec 👍 et 👎 déjà attachés de sorte que les deux boutons apparaissent dans l'interface utilisateur GitHub pour un classement en un clic. Cliquez sur 👍 si le résultat était utile ou 👎 s'il était incorrect ou bruyant. Anthropic collecte les comptages de réactions après la fusion de la PR et les utilise pour affiner le réviseur. Les réactions ne déclenchent pas une re-révision ou ne changent rien sur la PR.

51 

52Répondre à un commentaire en ligne ne pousse pas Claude à répondre ou à mettre à jour la PR. Pour agir sur un résultat, corrigez le code et poussez. Si la PR est abonnée aux révisions déclenchées par push, la prochaine exécution résout le thread quand le problème est corrigé. Pour demander une révision fraîche sans pousser, commentez `@claude review once` comme un [commentaire PR de haut niveau](#manually-trigger-reviews).

53 

54### Sortie de l'exécution de vérification

55 

56Au-delà des commentaires de révision en ligne, chaque révision remplit l'exécution de vérification **Claude Code Review** qui apparaît aux côtés de vos vérifications CI. Développez son lien **Details** pour voir un résumé de chaque résultat en un seul endroit, trié par gravité :

57 

58| Gravité | Fichier:Ligne | Problème |

59| ------------ | ------------------------- | ---------------------------------------------------------------------------------------------------------- |

60| 🔴 Important | `src/auth/session.ts:142` | L'actualisation du token entre en concurrence avec la déconnexion, laissant les sessions obsolètes actives |

61| 🟡 Nit | `src/auth/session.ts:88` | `parseExpiry` retourne silencieusement 0 sur une entrée malformée |

62 

63Chaque résultat apparaît également comme une annotation dans l'onglet **Files changed**, marqué directement sur les lignes de diff pertinentes. Les résultats importants s'affichent avec un marqueur rouge, les nits avec un avertissement jaune, et les bugs préexistants avec un avis gris. Les annotations et le tableau de gravité sont écrits dans l'exécution de vérification indépendamment des commentaires de révision en ligne, de sorte qu'ils restent disponibles même si GitHub rejette un commentaire en ligne sur une ligne qui a bougé.

64 

65L'exécution de vérification se termine toujours avec une conclusion neutre, de sorte qu'elle ne bloque jamais la fusion via les règles de protection de branche. Si vous souhaitez conditionner les fusions aux résultats de Code Review, lisez la répartition de gravité à partir de la sortie de l'exécution de vérification dans votre propre CI. La dernière ligne du texte Details est un commentaire lisible par machine que votre flux de travail peut analyser avec `gh` et jq :

66 

67```bash theme={null}

68gh api repos/OWNER/REPO/check-runs/CHECK_RUN_ID \

69 --jq '.output.text | split("bughunter-severity: ")[1] | split(" -->")[0] | fromjson'

70```

71 

72Cela retourne un objet JSON avec des comptages par gravité, par exemple `{"normal": 2, "nit": 1, "pre_existing": 0}`. La clé `normal` contient le nombre de résultats importants ; une valeur non nulle signifie que Claude a trouvé au moins un bug à corriger avant la fusion.

73 

74### Ce que Code Review vérifie

75 

76Par défaut, Code Review se concentre sur la correction : les bugs qui cassent la production, pas les préférences de formatage ou la couverture de test manquante. Vous pouvez élargir ce qu'il vérifie en [ajoutant des fichiers de guidance](#customize-reviews) à votre référentiel.

77 

78## Configurer Code Review

79 

80Un administrateur active Code Review une fois pour l'organisation et sélectionne les référentiels à inclure.

81 

82<Steps>

83 <Step title="Ouvrir les paramètres d'administration Claude Code">

84 Allez à [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) et trouvez la section Code Review. Vous avez besoin d'un accès administrateur à votre organisation Claude et de la permission d'installer des GitHub Apps dans votre organisation GitHub.

85 </Step>

86 

87 <Step title="Démarrer la configuration">

88 Cliquez sur **Setup**. Cela commence le flux d'installation de GitHub App.

89 </Step>

90 

91 <Step title="Installer la GitHub App Claude">

92 Suivez les invites pour installer la GitHub App Claude à votre organisation GitHub. L'application demande ces permissions de référentiel :

93 

94 * **Contents** : lecture et écriture

95 * **Issues** : lecture et écriture

96 * **Pull requests** : lecture et écriture

97 

98 Code Review utilise l'accès en lecture aux contenus et l'accès en écriture aux pull requests. L'ensemble de permissions plus large supporte également [GitHub Actions](/fr/github-actions) si vous l'activez plus tard.

99 </Step>

100 

101 <Step title="Sélectionner les référentiels">

102 Choisissez les référentiels à activer pour Code Review. Si vous ne voyez pas un référentiel, assurez-vous d'avoir donné à la GitHub App Claude l'accès pendant l'installation. Vous pouvez ajouter plus de référentiels plus tard.

103 </Step>

104 

105 <Step title="Définir les déclencheurs de révision par référentiel">

106 Une fois la configuration terminée, la section Code Review affiche vos référentiels dans un tableau. Pour chaque référentiel, utilisez la liste déroulante **Review Behavior** pour choisir quand les révisions s'exécutent :

107 

108 * **Once after PR creation** : la révision s'exécute une fois à l'ouverture d'une PR ou marquée comme prête pour révision

109 * **After every push** : la révision s'exécute à chaque push vers la branche PR, détectant les nouveaux problèmes à mesure que la PR évolue et résolvant automatiquement les threads lorsque vous corrigez les problèmes signalés

110 * **Manual** : les révisions commencent uniquement quand quelqu'un [commente `@claude review` ou `@claude review once` sur une PR](#manually-trigger-reviews) ; `@claude review` abonne également la PR aux révisions lors des pushes ultérieurs

111 

112 Réviser à chaque push exécute le plus de révisions et coûte le plus cher. Le mode manuel est utile pour les référentiels à fort trafic où vous souhaitez opter pour des PR spécifiques dans la révision, ou pour commencer à réviser vos PR uniquement une fois qu'elles sont prêtes.

113 </Step>

114</Steps>

115 

116Le tableau des référentiels affiche également le coût moyen par révision pour chaque référentiel en fonction de l'activité récente. Utilisez le menu d'actions de ligne pour activer ou désactiver Code Review par référentiel, ou pour supprimer complètement un référentiel.

117 

118Pour vérifier la configuration, ouvrez une PR de test. Si vous avez choisi un déclencheur automatique, une exécution de vérification nommée **Claude Code Review** apparaît dans quelques minutes. Si vous avez choisi Manual, commentez `@claude review` sur la PR pour démarrer la première révision. Si aucune exécution de vérification n'apparaît, confirmez que le référentiel est listé dans vos paramètres d'administration et que la GitHub App Claude y a accès.

119 

120## Déclencher manuellement les révisions

121 

122Deux commandes de commentaire démarrent une révision à la demande. Les deux fonctionnent quel que soit le déclencheur configuré du référentiel, de sorte que vous pouvez les utiliser pour opter pour des PR spécifiques dans la révision en mode Manual ou pour obtenir une re-révision immédiate dans d'autres modes.

123 

124| Commande | Ce qu'elle fait |

125| :-------------------- | :--------------------------------------------------------------------------------------------- |

126| `@claude review` | Démarre une révision et abonne la PR aux révisions déclenchées par push à partir de maintenant |

127| `@claude review once` | Démarre une seule révision sans abonner la PR aux pushes futurs |

128 

129Utilisez `@claude review once` quand vous souhaitez des commentaires sur l'état actuel d'une PR mais ne souhaitez pas que chaque push ultérieur entraîne une révision. Cela est utile pour les PR longues avec des pushes fréquents, ou quand vous souhaitez un deuxième avis ponctuel sans modifier le comportement de révision de la PR.

130 

131Pour que l'une ou l'autre commande déclenche une révision :

132 

133* Publiez-la comme un commentaire PR de haut niveau, pas un commentaire en ligne sur une ligne de diff

134* Mettez la commande au début du commentaire, avec `once` sur la même ligne si vous utilisez la forme ponctuelle

135* Vous devez avoir un accès propriétaire, membre ou collaborateur au référentiel

136* La PR doit être ouverte

137 

138Contrairement aux déclencheurs automatiques, les déclencheurs manuels s'exécutent sur les PR brouillon, car une demande explicite signale que vous souhaitez la révision maintenant quel que soit le statut de brouillon.

139 

140Si une révision s'exécute déjà sur cette PR, la demande est mise en file d'attente jusqu'à ce que la révision en cours se termine. Vous pouvez surveiller la progression via l'exécution de vérification sur la PR.

141 

142## Personnaliser les révisions

143 

144Code Review lit deux fichiers de votre référentiel pour guider ce qu'il signale. Ils diffèrent dans la force avec laquelle ils influencent la révision :

145 

146* **`CLAUDE.md`** : instructions de projet partagées que Claude Code utilise pour toutes les tâches, pas seulement les révisions. Code Review le lit comme contexte de projet et signale les violations nouvellement introduites comme des nits.

147* **`REVIEW.md`** : instructions de révision uniquement, injectées directement dans chaque agent du pipeline de révision comme priorité la plus élevée. Utilisez-le pour modifier ce qui est signalé, à quelle gravité, et comment les résultats sont rapportés.

148 

149### CLAUDE.md

150 

151Code Review lit vos fichiers `CLAUDE.md` du référentiel et traite les violations nouvellement introduites comme des [résultats au niveau nit](#severity-levels). Cela fonctionne bidirectionnellement : si votre PR modifie le code d'une manière qui rend une déclaration `CLAUDE.md` obsolète, Claude signale que les docs doivent être mises à jour aussi.

152 

153Claude lit les fichiers `CLAUDE.md` à chaque niveau de votre hiérarchie de répertoires, donc les règles dans le `CLAUDE.md` d'un sous-répertoire s'appliquent uniquement aux fichiers sous ce chemin. Consultez la [documentation de mémoire](/fr/memory) pour plus d'informations sur le fonctionnement de `CLAUDE.md`.

154 

155Pour la guidance spécifique à la révision que vous ne souhaitez pas appliquer aux sessions Claude Code générales, utilisez [`REVIEW.md`](#review-md) à la place.

156 

157### REVIEW\.md

158 

159`REVIEW.md` est un fichier à la racine de votre référentiel qui remplace le comportement de Code Review sur votre référentiel. Son contenu est injecté dans l'invite système de chaque agent du pipeline de révision comme bloc d'instruction de priorité la plus élevée, prenant précédence sur la guidance de révision par défaut.

160 

161Parce qu'il est collé verbatim, `REVIEW.md` est des instructions simples : la [syntaxe `@` import](/fr/memory#import-additional-files) n'est pas développée, et les fichiers référencés ne sont pas lus dans l'invite. Mettez les règles que vous souhaitez appliquer directement dans le fichier.

162 

163#### Ce que vous pouvez affiner

164 

165`REVIEW.md` est du markdown libre, donc tout ce que vous pouvez exprimer comme une instruction de révision est dans le champ d'application. Les modèles ci-dessous ont le plus d'impact en pratique.

166 

167**Gravité** : redéfinissez ce que 🔴 Important signifie pour votre référentiel. L'étalonnage par défaut cible le code de production ; un référentiel de docs, un référentiel de config, ou un prototype pourrait vouloir une définition beaucoup plus étroite. Énoncez explicitement quelles classes de résultats sont Important et lesquelles sont Nit au maximum. Vous pouvez également escalader dans l'autre direction, par exemple en traitant toute violation `CLAUDE.md` comme Important plutôt que le nit par défaut.

168 

169**Volume de nit** : limitez le nombre de commentaires 🟡 Nit qu'une seule révision publie. La prose et les fichiers de config peuvent être polis à jamais. Un plafond comme « signaler au maximum cinq nits, mentionner le reste comme un comptage dans le résumé » garde les révisions actionnables.

170 

171**Règles de saut** : listez les chemins, les modèles de branche et les catégories de résultats où Claude ne devrait publier aucun résultat. Les candidats courants sont le code généré, les lockfiles, les dépendances vendues, et les branches créées par machine, ainsi que tout ce que votre CI applique déjà comme le linting ou la vérification orthographique. Pour les chemins qui méritent une certaine révision mais pas un examen complet, définissez une barre plus élevée au lieu de sauter entièrement : « dans `scripts/`, signaler uniquement si proche de certain et grave. »

172 

173**Vérifications spécifiques au référentiel** : ajoutez des règles que vous souhaitez signaler sur chaque PR, comme « les nouveaux itinéraires API doivent avoir un test d'intégration. » Parce que `REVIEW.md` est injecté comme priorité la plus élevée, ceux-ci atterrissent plus fiablement que les mêmes règles dans un long `CLAUDE.md`.

174 

175**Barre de vérification** : exigez des preuves avant qu'une classe de résultat soit publiée. Par exemple, « les affirmations de comportement ont besoin d'une citation `file:line` dans la source, pas une inférence à partir de la dénomination » réduit les faux positifs qui coûteraient autrement à l'auteur un aller-retour.

176 

177**Convergence de re-révision** : dites à Claude comment se comporter quand une PR a déjà été révisée. Une règle comme « après la première révision, supprimez les nouveaux nits et publiez les résultats Important uniquement » empêche un correctif d'une ligne d'atteindre la septième manche sur le style seul.

178 

179**Forme du résumé** : demandez au corps de la révision de s'ouvrir avec un comptage d'une ligne comme `2 factual, 4 style`, et de commencer par « aucun problème factuel » quand c'est le cas. L'auteur veut connaître la forme du travail avant les détails.

180 

181#### Exemple

182 

183Ce `REVIEW.md` recalibre la gravité pour un service backend, limite les nits, saute les fichiers générés, et ajoute des vérifications spécifiques au référentiel.

184 

185```markdown theme={null}

186# Instructions de révision

187 

188## Ce que Important signifie ici

189 

190Réservez Important aux résultats qui cassent le comportement, fuient les données,

191ou bloquent un rollback : logique incorrecte, requêtes de base de données non scoped, PII

192dans les logs ou les messages d'erreur, et les migrations qui ne sont pas backward

193compatible. Le style, la dénomination, et les suggestions de refactorisation sont Nit au

194maximum.

195 

196## Limiter les nits

197 

198Signaler au maximum cinq Nits par révision. Si vous en avez trouvé plus, dites « plus N

199éléments similaires » dans le résumé au lieu de les publier en ligne. Si

200tout ce que vous avez trouvé est un Nit, commencez le résumé par « Aucun problème bloquant. »

201 

202## Ne pas signaler

203 

204- Tout ce que CI applique déjà : lint, formatage, erreurs de type

205- Fichiers générés sous `src/gen/` et tout fichier `*.lock`

206- Code de test uniquement qui viole intentionnellement les règles de production

207 

208## Toujours vérifier

209 

210- Les nouveaux itinéraires API ont un test d'intégration

211- Les lignes de log n'incluent pas les adresses e-mail, les ID utilisateur, ou les corps de requête

212- Les requêtes de base de données sont scoped au tenant de l'appelant

213```

214 

215#### Gardez-le concentré

216 

217La longueur a un coût : un long `REVIEW.md` dilue les règles qui importent le plus. Gardez-le aux instructions qui changent le comportement de révision, et laissez le contexte de projet général dans `CLAUDE.md`.

218 

219## Afficher l'utilisation

220 

221Allez à [claude.ai/analytics/code-review](https://claude.ai/analytics/code-review) pour voir l'activité Code Review dans votre organisation. Le tableau de bord affiche :

222 

223| Section | Ce qu'il affiche |

224| :------------------- | :------------------------------------------------------------------------------------------------------- |

225| PRs reviewed | Nombre quotidien de pull requests examinées sur la plage de temps sélectionnée |

226| Cost weekly | Dépenses hebdomadaires sur Code Review |

227| Feedback | Nombre de commentaires de révision qui ont été auto-résolus parce qu'un développeur a résolu le problème |

228| Repository breakdown | Comptages par référentiel des PR examinées et des commentaires résolus |

229 

230Le tableau des référentiels dans les paramètres d'administration affiche également le coût moyen par révision pour chaque référentiel. Les chiffres de coût du tableau de bord sont des estimations pour surveiller l'activité ; pour les dépenses exactes de facture, consultez votre facture Anthropic.

231 

232## Tarification

233 

234Code Review est facturé en fonction de l'utilisation des tokens. Chaque révision coûte en moyenne 15 à 25 dollars, s'adaptant à la taille de la PR, à la complexité de la base de code, et au nombre de problèmes nécessitant une vérification. L'utilisation de Code Review est facturée séparément via [extra usage](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) et ne compte pas par rapport à l'utilisation incluse de votre plan.

235 

236Le déclencheur de révision que vous choisissez affecte le coût total :

237 

238* **Once after PR creation** : s'exécute une fois par PR

239* **After every push** : s'exécute à chaque push, multipliant le coût par le nombre de pushes

240* **Manual** : aucune révision jusqu'à ce que quelqu'un commente `@claude review` sur une PR

241 

242Dans n'importe quel mode, commenter `@claude review` [opte la PR dans les révisions déclenchées par push](#manually-trigger-reviews), de sorte que des coûts supplémentaires s'accumulent par push après ce commentaire. Pour exécuter une seule révision sans abonner à des pushes futurs, commentez `@claude review once` à la place.

243 

244Les coûts apparaissent sur votre facture Anthropic quel que soit le fait que votre organisation utilise Amazon Bedrock ou Google Vertex AI pour d'autres fonctionnalités Claude Code. Pour définir un plafond de dépenses mensuelles pour Code Review, allez à [claude.ai/admin-settings/usage](https://claude.ai/admin-settings/usage) et configurez la limite pour le service Claude Code Review.

245 

246Surveillez les dépenses via le graphique de coût hebdomadaire dans [analytics](#view-usage) ou la colonne de coût moyen par référentiel dans les paramètres d'administration.

247 

248## Dépannage

249 

250Les exécutions de révision sont au mieux. Une exécution échouée ne bloque jamais votre PR, mais elle ne se réessaye pas non plus d'elle-même. Cette section couvre comment récupérer d'une exécution échouée et où chercher quand l'exécution de vérification signale des problèmes que vous ne pouvez pas trouver.

251 

252### Redéclencher une révision échouée ou expirée

253 

254Quand l'infrastructure de révision rencontre une erreur interne ou dépasse sa limite de temps, l'exécution de vérification se termine avec un titre de **Code review encountered an error** ou **Code review timed out**. La conclusion est toujours neutre, de sorte que rien ne bloque votre fusion, mais aucun résultat n'est publié.

255 

256Pour exécuter la révision à nouveau, commentez `@claude review once` sur la PR. Cela démarre une révision fraîche sans abonner la PR aux pushes futurs. Si la PR est déjà abonnée aux révisions déclenchées par push, pousser un nouveau commit démarre également une nouvelle révision.

257 

258Le bouton **Re-run** dans l'onglet Checks de GitHub ne redéclenche pas Code Review. Utilisez la commande de commentaire ou un nouveau push à la place.

259 

260### Révision n'a pas s'exécuté et la PR affiche un message de plafond de dépenses

261 

262Quand le plafond de dépenses mensuelles de votre organisation est atteint, Code Review publie un seul commentaire sur la PR expliquant que la révision a été ignorée. Les révisions reprennent automatiquement au début de la prochaine période de facturation, ou immédiatement quand un administrateur augmente le plafond à [claude.ai/admin-settings/usage](https://claude.ai/admin-settings/usage).

263 

264### Trouver les problèmes qui ne s'affichent pas comme des commentaires en ligne

265 

266Si le titre de l'exécution de vérification dit que des problèmes ont été trouvés mais que vous ne voyez pas de commentaires de révision en ligne sur le diff, cherchez dans ces autres emplacements où les résultats sont surfacés :

267 

268* **Check run Details** : cliquez sur **Details** à côté de la vérification Claude Code Review dans l'onglet Checks. Le tableau de gravité liste chaque résultat avec son fichier, sa ligne, et son résumé quel que soit le fait que le commentaire en ligne ait été accepté.

269* **Files changed annotations** : ouvrez l'onglet **Files changed** sur la PR. Les résultats s'affichent comme des annotations attachées directement aux lignes de diff, séparées des commentaires de révision.

270* **Review body** : si vous avez poussé vers la PR pendant qu'une révision s'exécutait, certains résultats peuvent référencer des lignes qui n'existent plus dans le diff actuel. Ceux-ci apparaissent sous un titre **Additional findings** dans le texte du corps de révision plutôt que comme des commentaires en ligne.

271 

272## Ressources connexes

273 

274Code Review est conçu pour fonctionner aux côtés du reste de Claude Code. Si vous souhaitez exécuter des révisions localement avant d'ouvrir une PR, avez besoin d'une configuration auto-hébergée, ou souhaitez approfondir la façon dont `CLAUDE.md` façonne le comportement de Claude dans tous les outils, ces pages sont de bons prochains arrêts :

275 

276* [Plugins](/fr/discover-plugins) : parcourez la place de marché des plugins, y compris un plugin `code-review` pour exécuter des révisions à la demande localement avant de pousser

277* [GitHub Actions](/fr/github-actions) : exécutez Claude dans vos propres flux de travail GitHub Actions pour une automatisation personnalisée au-delà de la révision de code

278* [GitLab CI/CD](/fr/gitlab-ci-cd) : intégration Claude auto-hébergée pour les pipelines GitLab

279* [Memory](/fr/memory) : comment les fichiers `CLAUDE.md` fonctionnent dans Claude Code

280* [Analytics](/fr/analytics) : suivez l'utilisation de Claude Code au-delà de la révision de code

commands.md +113 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Commandes

6 

7> Référence complète des commandes disponibles dans Claude Code, y compris les commandes intégrées et les skills fournis.

8 

9Les commandes contrôlent Claude Code depuis l'intérieur d'une session. Elles offrent un moyen rapide de changer de modèle, de gérer les permissions, d'effacer le contexte, d'exécuter un workflow, et bien plus.

10 

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

12 

13Le tableau ci-dessous répertorie toutes les commandes incluses dans Claude Code. Les entrées marquées **[Skill](/fr/skills#bundled-skills)** sont des skills fournis. Ils utilisent le même mécanisme que les skills que vous écrivez vous-même : une invite remise à Claude, que Claude peut également invoquer automatiquement si pertinent. Tout le reste est une commande intégrée dont le comportement est codé dans le CLI. Pour ajouter vos propres commandes, consultez [skills](/fr/skills).

14 

15Toutes les commandes ne s'affichent pas pour tous les utilisateurs. La disponibilité dépend de votre plateforme, de votre plan et de votre environnement. Par exemple, `/desktop` ne s'affiche que sur macOS et Windows, et `/upgrade` ne s'affiche que sur les plans Pro et Max.

16 

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

18 

19| Commande | Objectif |

20| :---------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

21| `/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` |

22| `/agents` | Gérer les configurations des [agents](/fr/sub-agents) |

23| `/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#who-can-use-claude-code-on-the-web) |

24| `/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 agent d'arrière-plan par unité dans un [git worktree](/fr/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees) isolé. Chaque 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` |

25| `/branch [name]` | Créer une branche de la conversation actuelle à ce stade. Vous bascule dans la branche et préserve l'original, auquel vous pouvez revenir avec `/resume`. Alias : `/fork`. Lorsque [`CLAUDE_CODE_FORK_SUBAGENT`](/fr/env-vars) est défini, `/fork` génère à la place un [sous-agent forké](/fr/sub-agents#fork-the-current-conversation) et n'est plus un alias pour cette commande |

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

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

28| `/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 |

29| `/clear` | Démarrer une nouvelle conversation avec un contexte vide. La conversation précédente reste disponible dans `/resume`. Pour libérer du contexte tout en continuant la même conversation, utilisez `/compact` à la place. Alias : `/reset`, `/new` |

30| `/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. Lorsque [Remote Control](/fr/remote-control) est connecté, la couleur se synchronise avec claude.ai/code |

31| `/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) |

32| `/config` | 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. Alias : `/settings` |

33| `/context` | 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é |

34| `/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 |

35| `/cost` | Alias pour `/usage` |

36| `/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 |

37| `/desktop` | Continuer la session actuelle dans l'application Claude Code Desktop. macOS et Windows uniquement. Alias : `/app` |

38| `/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 |

39| `/doctor` | Diagnostiquer et vérifier votre installation et vos paramètres Claude Code. Les résultats s'affichent avec des icônes de statut. Appuyez sur `f` pour que Claude corrige les problèmes signalés |

40| `/effort [level\|auto]` | Définir le [niveau d'effort](/fr/model-config#adjust-effort-level) du modèle. Accepte `low`, `medium`, `high`, `xhigh`, ou `max` ; les niveaux disponibles dépendent du modèle et `max` est limité à la session. `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 |

41| `/exit` | Quitter le CLI. Alias : `/quit` |

42| `/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 |

43| `/extra-usage` | Configurer l'utilisation supplémentaire pour continuer à travailler lorsque les limites de débit sont atteintes |

44| `/fast [on\|off]` | Activer ou désactiver le [mode rapide](/fr/fast-mode) |

45| `/feedback [report]` | Soumettre des commentaires sur Claude Code. Alias : `/bug` |

46| `/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 |

47| `/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. La sélection persiste entre les sessions. Disponible uniquement dans le [rendu en plein écran](/fr/fullscreen) |

48| `/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) |

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

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

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

52| `/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 |

53| `/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 |

54| `/install-github-app` | Configurer l'application [Claude GitHub Actions](/fr/github-actions) pour un référentiel. Vous guide dans la sélection d'un référentiel et la configuration de l'intégration |

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

56| `/keybindings` | Ouvrir ou créer votre fichier de configuration des raccourcis clavier |

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

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

59| `/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 Claude exécute une vérification de maintenance autonome, ou l'invite dans `.claude/loop.md` si présente. Exemple : `/loop 5m check if the deploy finished`. Consultez [Exécuter des invites selon un calendrier](/fr/scheduled-tasks). Alias : `/proactive` |

60| `/mcp` | Gérer les connexions aux serveurs MCP et l'authentification OAuth |

61| `/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 |

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

63| `/model [model]` | Sélectionner ou modifier le modèle IA. 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 qui 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 |

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

65| `/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` |

66| `/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` |

67| `/plugin` | Gérer les [plugins](/fr/plugins) de Claude Code |

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

69| `/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` |

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

71| `/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 |

72| `/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 |

73| `/reload-plugins` | 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 |

74| `/remote-control` | Rendre cette session disponible pour le [contrôle à distance](/fr/remote-control) depuis claude.ai. Alias : `/rc` |

75| `/remote-env` | Configurer l'environnement distant par défaut pour les [sessions web démarrées avec `--remote`](/fr/claude-code-on-the-web#configure-your-environment) |

76| `/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 |

77| `/resume [session]` | Reprendre une conversation par ID ou nom, ou ouvrir le sélecteur de session. Alias : `/continue` |

78| `/review [PR]` | Examiner une demande de tirage localement dans votre session actuelle. Pour un examen plus approfondi basé sur le cloud, consultez [`/ultrareview`](/fr/ultrareview) |

79| `/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` |

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

81| `/schedule [description]` | Créer, mettre à jour, lister ou exécuter des [routines](/fr/routines). Claude vous guide à travers la configuration de manière conversationnelle. Alias : `/routines` |

82| `/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 |

83| `/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 |

84| `/setup-vertex` | Configurer l'authentification [Google Vertex AI](/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 Vertex AI pour la première fois peuvent également accéder à cet assistant à partir de l'écran de connexion |

85| `/simplify [focus]` | **[Skill](/fr/skills#bundled-skills).** Examiner vos fichiers récemment modifiés pour les problèmes de réutilisation de code, de qualité et d'efficacité, puis les corriger. Génère trois agents d'examen en parallèle, agrège leurs conclusions et applique les corrections. Passez du texte pour vous concentrer sur des préoccupations spécifiques : `/simplify focus on memory efficiency` |

86| `/skills` | Lister les [skills](/fr/skills) disponibles. Appuyez sur `t` pour trier par nombre de tokens |

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

88| `/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, sans attendre la fin de la réponse actuelle |

89| `/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 |

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

91| `/tasks` | Lister et gérer les tâches en arrière-plan. Également disponible sous `/bashes` |

92| `/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 |

93| `/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 |

94| `/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, Windsurf, Alacritty, ou Zed |

95| `/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 |

96| `/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 |

97| `/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 |

98| `/ultrareview [PR]` | Exécuter un examen de code approfondi multi-agents dans un sandbox cloud avec [ultrareview](/fr/ultrareview). Inclut 3 exécutions gratuites sur Pro et Max jusqu'au 5 mai 2026, puis nécessite [l'utilisation supplémentaire](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |

99| `/upgrade` | Ouvrir la page de mise à niveau pour passer à un niveau de plan supérieur |

100| `/usage` | Afficher le coût de la session, les limites d'utilisation du plan et les statistiques d'activité. Consultez le [guide de suivi des coûts](/fr/costs#using-the-%2Fusage-command) pour les détails spécifiques à l'abonnement. `/cost` et `/stats` sont des alias |

101| `/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 |

102| `/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 |

103| `/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é |

104 

105## Prompts MCP

106 

107Les 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 [MCP prompts](/fr/mcp#use-mcp-prompts-as-commands) pour plus de détails.

108 

109## Voir aussi

110 

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

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

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

common-workflows.md +1030 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Flux de travail courants

6 

7> Guides étape par étape pour explorer les bases de code, corriger les bogues, refactoriser, tester et autres tâches quotidiennes avec Claude Code.

8 

9Cette page couvre les flux de travail pratiques pour le développement quotidien : explorer du code inconnu, déboguer, refactoriser, écrire des tests, créer des PR et gérer les sessions. Chaque section inclut des exemples de prompts que vous pouvez adapter à vos propres projets. Pour des modèles et des conseils de plus haut niveau, consultez [Bonnes pratiques](/fr/best-practices).

10 

11## Comprendre les nouvelles bases de code

12 

13### Obtenir un aperçu rapide de la base de code

14 

15Supposons que vous venez de rejoindre un nouveau projet et que vous devez comprendre rapidement sa structure.

16 

17<Steps>

18 <Step title="Accédez au répertoire racine du projet">

19 ```bash theme={null}

20 cd /path/to/project

21 ```

22 </Step>

23 

24 <Step title="Démarrez Claude Code">

25 ```bash theme={null}

26 claude

27 ```

28 </Step>

29 

30 <Step title="Demandez un aperçu de haut niveau">

31 ```text theme={null}

32 give me an overview of this codebase

33 ```

34 </Step>

35 

36 <Step title="Approfondissez les composants spécifiques">

37 ```text theme={null}

38 explain the main architecture patterns used here

39 ```

40 

41 ```text theme={null}

42 what are the key data models?

43 ```

44 

45 ```text theme={null}

46 how is authentication handled?

47 ```

48 </Step>

49</Steps>

50 

51<Tip>

52 Conseils :

53 

54 * Commencez par des questions larges, puis réduisez à des domaines spécifiques

55 * Posez des questions sur les conventions de codage et les modèles utilisés dans le projet

56 * Demandez un glossaire des termes spécifiques au projet

57</Tip>

58 

59### Trouver du code pertinent

60 

61Supposons que vous ayez besoin de localiser du code lié à une fonctionnalité ou une capacité spécifique.

62 

63<Steps>

64 <Step title="Demandez à Claude de trouver les fichiers pertinents">

65 ```text theme={null}

66 find the files that handle user authentication

67 ```

68 </Step>

69 

70 <Step title="Obtenez du contexte sur la façon dont les composants interagissent">

71 ```text theme={null}

72 how do these authentication files work together?

73 ```

74 </Step>

75 

76 <Step title="Comprenez le flux d'exécution">

77 ```text theme={null}

78 trace the login process from front-end to database

79 ```

80 </Step>

81</Steps>

82 

83<Tip>

84 Conseils :

85 

86 * Soyez spécifique sur ce que vous recherchez

87 * Utilisez le langage du domaine du projet

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

89</Tip>

90 

91***

92 

93## Corriger les bogues efficacement

94 

95Supposons que vous ayez rencontré un message d'erreur et que vous ayez besoin de trouver et de corriger sa source.

96 

97<Steps>

98 <Step title="Partagez l'erreur avec Claude">

99 ```text theme={null}

100 I'm seeing an error when I run npm test

101 ```

102 </Step>

103 

104 <Step title="Demandez des recommandations de correction">

105 ```text theme={null}

106 suggest a few ways to fix the @ts-ignore in user.ts

107 ```

108 </Step>

109 

110 <Step title="Appliquez la correction">

111 ```text theme={null}

112 update user.ts to add the null check you suggested

113 ```

114 </Step>

115</Steps>

116 

117<Tip>

118 Conseils :

119 

120 * Dites à Claude la commande pour reproduire le problème et obtenir une trace de pile

121 * Mentionnez les étapes pour reproduire l'erreur

122 * Faites savoir à Claude si l'erreur est intermittente ou cohérente

123</Tip>

124 

125***

126 

127## Refactoriser le code

128 

129Supposons que vous ayez besoin de mettre à jour du code ancien pour utiliser des modèles et des pratiques modernes.

130 

131<Steps>

132 <Step title="Identifiez le code hérité pour la refactorisation">

133 ```text theme={null}

134 find deprecated API usage in our codebase

135 ```

136 </Step>

137 

138 <Step title="Obtenez des recommandations de refactorisation">

139 ```text theme={null}

140 suggest how to refactor utils.js to use modern JavaScript features

141 ```

142 </Step>

143 

144 <Step title="Appliquez les modifications en toute sécurité">

145 ```text theme={null}

146 refactor utils.js to use ES2024 features while maintaining the same behavior

147 ```

148 </Step>

149 

150 <Step title="Vérifiez la refactorisation">

151 ```text theme={null}

152 run tests for the refactored code

153 ```

154 </Step>

155</Steps>

156 

157<Tip>

158 Conseils :

159 

160 * Demandez à Claude d'expliquer les avantages de l'approche moderne

161 * Demandez que les modifications maintiennent la compatibilité rétroactive si nécessaire

162 * Effectuez la refactorisation par petits incréments testables

163</Tip>

164 

165***

166 

167## Utiliser des subagents spécialisés

168 

169Supposons que vous souhaitiez utiliser des subagents IA spécialisés pour gérer des tâches spécifiques plus efficacement.

170 

171<Steps>

172 <Step title="Afficher les subagents disponibles">

173 ```text theme={null}

174 /agents

175 ```

176 

177 Cela affiche tous les subagents disponibles et vous permet d'en créer de nouveaux.

178 </Step>

179 

180 <Step title="Utiliser les subagents automatiquement">

181 Claude Code délègue automatiquement les tâches appropriées aux subagents spécialisés :

182 

183 ```text theme={null}

184 review my recent code changes for security issues

185 ```

186 

187 ```text theme={null}

188 run all tests and fix any failures

189 ```

190 </Step>

191 

192 <Step title="Demander explicitement des subagents spécifiques">

193 ```text theme={null}

194 use the code-reviewer subagent to check the auth module

195 ```

196 

197 ```text theme={null}

198 have the debugger subagent investigate why users can't log in

199 ```

200 </Step>

201 

202 <Step title="Créer des subagents personnalisés pour votre flux de travail">

203 ```text theme={null}

204 /agents

205 ```

206 

207 Sélectionnez ensuite « Créer un nouveau subagent » et suivez les invites pour définir :

208 

209 * Un identifiant unique qui décrit l'objectif du subagent (par exemple, `code-reviewer`, `api-designer`).

210 * Quand Claude doit utiliser cet agent

211 * Quels outils il peut accéder

212 * Une invite système décrivant le rôle et le comportement de l'agent

213 </Step>

214</Steps>

215 

216<Tip>

217 Conseils :

218 

219 * Créez des subagents spécifiques au projet dans `.claude/agents/` pour le partage en équipe

220 * Utilisez des champs `description` descriptifs pour activer la délégation automatique

221 * Limitez l'accès aux outils à ce dont chaque subagent a réellement besoin

222 * Consultez la [documentation des subagents](/fr/sub-agents) pour des exemples détaillés

223</Tip>

224 

225***

226 

227## Utiliser le Plan Mode pour une analyse de code sûre

228 

229Plan Mode demande à Claude de créer un plan en analysant la base de code avec des opérations en lecture seule, parfait pour explorer les bases de code, planifier des modifications complexes ou examiner le code en toute sécurité. En Plan Mode, Claude utilise [`AskUserQuestion`](/fr/tools-reference) pour recueillir les exigences et clarifier vos objectifs avant de proposer un plan.

230 

231### Quand utiliser Plan Mode

232 

233* **Implémentation multi-étapes** : Quand votre fonctionnalité nécessite de faire des modifications à de nombreux fichiers

234* **Exploration de code** : Quand vous souhaitez rechercher la base de code en profondeur avant de modifier quoi que ce soit

235* **Développement interactif** : Quand vous souhaitez itérer sur la direction avec Claude

236 

237### Comment utiliser Plan Mode

238 

239**Activez Plan Mode pendant une session**

240 

241Vous pouvez basculer en Plan Mode pendant une session en utilisant **Maj+Tab** pour parcourir les modes de permission.

242 

243Si vous êtes en Mode Normal, **Maj+Tab** bascule d'abord en Mode Auto-Accept, indiqué par `⏵⏵ accept edits on` en bas du terminal. Un **Maj+Tab** ultérieur basculera en Plan Mode, indiqué par `⏸ plan mode on`.

244 

245**Démarrez une nouvelle session en Plan Mode**

246 

247Pour démarrer une nouvelle session en Plan Mode, utilisez le drapeau `--permission-mode plan` :

248 

249```bash theme={null}

250claude --permission-mode plan

251```

252 

253**Exécutez des requêtes « headless » en Plan Mode**

254 

255Vous pouvez également exécuter une requête en Plan Mode directement avec `-p` (c'est-à-dire en [« mode headless »](/fr/headless)) :

256 

257```bash theme={null}

258claude --permission-mode plan -p "Analyze the authentication system and suggest improvements"

259```

260 

261### Exemple : Planifier une refactorisation complexe

262 

263```bash theme={null}

264claude --permission-mode plan

265```

266 

267```text theme={null}

268I need to refactor our authentication system to use OAuth2. Create a detailed migration plan.

269```

270 

271Claude analyse l'implémentation actuelle et crée un plan complet. Affinez avec des suites :

272 

273```text theme={null}

274What about backward compatibility?

275```

276 

277```text theme={null}

278How should we handle database migration?

279```

280 

281<Tip>Appuyez sur `Ctrl+G` pour ouvrir le plan dans votre éditeur de texte par défaut, où vous pouvez le modifier directement avant que Claude ne procède.</Tip>

282 

283Lorsque vous acceptez un plan, Claude nomme automatiquement la session à partir du contenu du plan. Le nom apparaît sur la barre de prompt et dans le sélecteur de session. Si vous avez déjà défini un nom avec `--name` ou `/rename`, accepter un plan ne le remplacera pas.

284 

285### Configurer Plan Mode par défaut

286 

287```json theme={null}

288// .claude/settings.json

289{

290 "permissions": {

291 "defaultMode": "plan"

292 }

293}

294```

295 

296Consultez la [documentation des paramètres](/fr/settings#available-settings) pour plus d'options de configuration.

297 

298***

299 

300## Travailler avec les tests

301 

302Supposons que vous ayez besoin d'ajouter des tests pour du code non couvert.

303 

304<Steps>

305 <Step title="Identifiez le code non testé">

306 ```text theme={null}

307 find functions in NotificationsService.swift that are not covered by tests

308 ```

309 </Step>

310 

311 <Step title="Générez l'échafaudage des tests">

312 ```text theme={null}

313 add tests for the notification service

314 ```

315 </Step>

316 

317 <Step title="Ajoutez des cas de test significatifs">

318 ```text theme={null}

319 add test cases for edge conditions in the notification service

320 ```

321 </Step>

322 

323 <Step title="Exécutez et vérifiez les tests">

324 ```text theme={null}

325 run the new tests and fix any failures

326 ```

327 </Step>

328</Steps>

329 

330Claude peut générer des tests qui suivent les modèles et conventions existants de votre projet. Lorsque vous demandez des tests, soyez spécifique sur le comportement que vous souhaitez vérifier. Claude examine vos fichiers de test existants pour correspondre au style, aux frameworks et aux modèles d'assertion déjà en usage.

331 

332Pour une couverture complète, demandez à Claude d'identifier les cas limites que vous auriez pu manquer. Claude peut analyser vos chemins de code et suggérer des tests pour les conditions d'erreur, les valeurs limites et les entrées inattendues qui sont faciles à oublier.

333 

334***

335 

336## Créer des demandes de tirage

337 

338Vous pouvez créer des demandes de tirage en demandant directement à Claude (« créer une pr pour mes modifications »), ou guider Claude à travers cela étape par étape :

339 

340<Steps>

341 <Step title="Résumez vos modifications">

342 ```text theme={null}

343 summarize the changes I've made to the authentication module

344 ```

345 </Step>

346 

347 <Step title="Générez une demande de tirage">

348 ```text theme={null}

349 create a pr

350 ```

351 </Step>

352 

353 <Step title="Examinez et affinez">

354 ```text theme={null}

355 enhance the PR description with more context about the security improvements

356 ```

357 </Step>

358</Steps>

359 

360Lorsque vous créez une PR en utilisant `gh pr create`, la session est automatiquement liée à cette PR. Vous pouvez la reprendre plus tard avec `claude --from-pr <number>`.

361 

362<Tip>

363 Examinez la PR générée par Claude avant de la soumettre et demandez à Claude de mettre en évidence les risques ou considérations potentiels.

364</Tip>

365 

366## Gérer la documentation

367 

368Supposons que vous ayez besoin d'ajouter ou de mettre à jour la documentation de votre code.

369 

370<Steps>

371 <Step title="Identifiez le code non documenté">

372 ```text theme={null}

373 find functions without proper JSDoc comments in the auth module

374 ```

375 </Step>

376 

377 <Step title="Générez la documentation">

378 ```text theme={null}

379 add JSDoc comments to the undocumented functions in auth.js

380 ```

381 </Step>

382 

383 <Step title="Examinez et améliorez">

384 ```text theme={null}

385 improve the generated documentation with more context and examples

386 ```

387 </Step>

388 

389 <Step title="Vérifiez la documentation">

390 ```text theme={null}

391 check if the documentation follows our project standards

392 ```

393 </Step>

394</Steps>

395 

396<Tip>

397 Conseils :

398 

399 * Spécifiez le style de documentation que vous souhaitez (JSDoc, docstrings, etc.)

400 * Demandez des exemples dans la documentation

401 * Demandez la documentation pour les API publiques, les interfaces et la logique complexe

402</Tip>

403 

404***

405 

406## Travailler dans les notes et les dossiers non-code

407 

408Claude Code fonctionne dans n'importe quel répertoire. Exécutez-le à l'intérieur d'un coffre-fort de notes, d'un dossier de documentation ou de toute collection de fichiers markdown pour rechercher, modifier et réorganiser le contenu de la même manière que vous le feriez pour du code.

409 

410Le répertoire `.claude/` et `CLAUDE.md` se trouvent aux côtés des répertoires de configuration d'autres outils sans conflit. Claude lit les fichiers à nouveau à chaque appel d'outil, il voit donc les modifications que vous apportez dans une autre application la prochaine fois qu'il lit ce fichier.

411 

412***

413 

414## Travailler avec les images

415 

416Supposons que vous ayez besoin de travailler avec des images dans votre base de code et que vous souhaitiez l'aide de Claude pour analyser le contenu des images.

417 

418<Steps>

419 <Step title="Ajoutez une image à la conversation">

420 Vous pouvez utiliser l'une de ces méthodes :

421 

422 1. Glissez-déposez une image dans la fenêtre Claude Code

423 2. Copiez une image et collez-la dans l'interface CLI avec ctrl+v (N'utilisez pas cmd+v)

424 3. Fournissez un chemin d'image à Claude. Par exemple, « Analyser cette image : /path/to/your/image.png »

425 </Step>

426 

427 <Step title="Demandez à Claude d'analyser l'image">

428 ```text theme={null}

429 What does this image show?

430 ```

431 

432 ```text theme={null}

433 Describe the UI elements in this screenshot

434 ```

435 

436 ```text theme={null}

437 Are there any problematic elements in this diagram?

438 ```

439 </Step>

440 

441 <Step title="Utilisez les images pour le contexte">

442 ```text theme={null}

443 Here's a screenshot of the error. What's causing it?

444 ```

445 

446 ```text theme={null}

447 This is our current database schema. How should we modify it for the new feature?

448 ```

449 </Step>

450 

451 <Step title="Obtenez des suggestions de code à partir du contenu visuel">

452 ```text theme={null}

453 Generate CSS to match this design mockup

454 ```

455 

456 ```text theme={null}

457 What HTML structure would recreate this component?

458 ```

459 </Step>

460</Steps>

461 

462<Tip>

463 Conseils :

464 

465 * Utilisez les images quand les descriptions textuelles seraient peu claires ou fastidieuses

466 * Incluez des captures d'écran d'erreurs, de conceptions d'interface utilisateur ou de diagrammes pour un meilleur contexte

467 * Vous pouvez travailler avec plusieurs images dans une conversation

468 * L'analyse d'images fonctionne avec les diagrammes, les captures d'écran, les maquettes et bien d'autres

469 * Quand Claude référence des images (par exemple, `[Image #1]`), `Cmd+Click` (Mac) ou `Ctrl+Click` (Windows/Linux) le lien pour ouvrir l'image dans votre visionneuse par défaut

470</Tip>

471 

472***

473 

474## Référencer les fichiers et répertoires

475 

476Utilisez @ pour inclure rapidement des fichiers ou des répertoires sans attendre que Claude les lise.

477 

478<Steps>

479 <Step title="Référencez un seul fichier">

480 ```text theme={null}

481 Explain the logic in @src/utils/auth.js

482 ```

483 

484 Cela inclut le contenu complet du fichier dans la conversation.

485 </Step>

486 

487 <Step title="Référencez un répertoire">

488 ```text theme={null}

489 What's the structure of @src/components?

490 ```

491 

492 Cela fournit une liste de répertoires avec les informations de fichier.

493 </Step>

494 

495 <Step title="Référencez les ressources MCP">

496 ```text theme={null}

497 Show me the data from @github:repos/owner/repo/issues

498 ```

499 

500 Cela récupère les données des serveurs MCP connectés en utilisant le format @server:resource. Consultez [Ressources MCP](/fr/mcp#use-mcp-resources) pour plus de détails.

501 </Step>

502</Steps>

503 

504<Tip>

505 Conseils :

506 

507 * Les chemins de fichiers peuvent être relatifs ou absolus

508 * Les références de fichiers @ ajoutent `CLAUDE.md` dans le répertoire du fichier et les répertoires parents au contexte

509 * Les références de répertoires affichent les listes de fichiers, pas les contenus

510 * Vous pouvez référencer plusieurs fichiers dans un seul message (par exemple, « @file1.js et @file2.js »)

511</Tip>

512 

513***

514 

515## Utiliser la réflexion étendue (mode de réflexion)

516 

517[La réflexion étendue](https://platform.claude.com/docs/fr/build-with-claude/extended-thinking) est activée par défaut, donnant à Claude l'espace pour raisonner à travers des problèmes complexes étape par étape avant de répondre. Ce raisonnement est visible en mode verbeux, que vous pouvez activer avec `Ctrl+O`. Pendant la réflexion étendue, l'indicateur de progression affiche des indices de progression en ligne tels que « still thinking » et « almost done thinking » pour indiquer que Claude travaille activement.

518 

519De plus, les [modèles qui prennent en charge l'effort](/fr/model-config#adjust-effort-level) utilisent le raisonnement adaptatif : au lieu d'un budget de jetons de réflexion fixe, le modèle décide dynamiquement s'il faut penser et combien en fonction de votre paramètre de niveau d'effort et de la tâche à accomplir. Le raisonnement adaptatif permet à Claude de répondre plus rapidement aux prompts de routine et de réserver une réflexion plus profonde pour les étapes qui en bénéficient.

520 

521La réflexion étendue est particulièrement précieuse pour les décisions architecturales complexes, les bogues difficiles, la planification de l'implémentation multi-étapes et l'évaluation des compromis entre différentes approches.

522 

523<Note>

524 Les phrases comme « think », « think hard » et « think more » sont interprétées comme des instructions de prompt régulières et n'allouent pas de jetons de réflexion.

525</Note>

526 

527### Configurer le mode de réflexion

528 

529La réflexion est activée par défaut, mais vous pouvez l'ajuster ou la désactiver.

530 

531| Portée | Comment configurer | Détails |

532| ------------------------------- | --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

533| **Niveau d'effort** | Exécutez `/effort`, ajustez dans `/model`, ou définissez [`CLAUDE_CODE_EFFORT_LEVEL`](/fr/env-vars) | Contrôlez la profondeur de la réflexion sur les [modèles pris en charge](/fr/model-config#adjust-effort-level) |

534| **Mot-clé `ultrathink`** | Incluez « ultrathink » n'importe où dans votre prompt | Ajoute une instruction en contexte indiquant au modèle de raisonner davantage sur ce tour. Ne change pas le niveau d'effort lui-même ; consultez [Ajuster le niveau d'effort](/fr/model-config#adjust-effort-level) pour cela |

535| **Raccourci de basculement** | Appuyez sur `Option+T` (macOS) ou `Alt+T` (Windows/Linux) | Basculez la réflexion activée/désactivée pour la session actuelle (tous les modèles). Peut nécessiter une [configuration du terminal](/fr/terminal-config) pour activer les raccourcis de la touche Option |

536| **Défaut global** | Utilisez `/config` pour basculer le mode de réflexion | Définit votre défaut sur tous les projets (tous les modèles).<br />Enregistré comme `alwaysThinkingEnabled` dans `~/.claude/settings.json` |

537| **Limiter le budget de jetons** | Définissez la variable d'environnement [`MAX_THINKING_TOKENS`](/fr/env-vars) | Limitez le budget de réflexion à un nombre spécifique de jetons. Sur les modèles avec raisonnement adaptatif, seul `0` s'applique sauf si le raisonnement adaptatif est désactivé. Exemple : `export MAX_THINKING_TOKENS=10000` |

538 

539Pour afficher le processus de réflexion de Claude, appuyez sur `Ctrl+O` pour basculer le mode verbeux et voir le raisonnement interne affiché en texte gris italique.

540 

541### Comment fonctionne la réflexion étendue

542 

543La réflexion étendue contrôle la quantité de raisonnement interne que Claude effectue avant de répondre. Plus de réflexion fournit plus d'espace pour explorer les solutions, analyser les cas limites et corriger les erreurs.

544 

545Sur les [modèles qui prennent en charge l'effort](/fr/model-config#adjust-effort-level), la réflexion utilise le raisonnement adaptatif : le modèle alloue dynamiquement les jetons de réflexion en fonction du niveau d'effort que vous sélectionnez. C'est la façon recommandée d'ajuster le compromis entre la vitesse et la profondeur du raisonnement. Si vous souhaitez que Claude pense plus ou moins souvent que votre niveau d'effort ne le produirait autrement, vous pouvez également le dire directement dans votre prompt ou dans `CLAUDE.md`.

546 

547Avec les modèles plus anciens, la réflexion utilise un budget fixe de jetons tiré de votre allocation de sortie. Le budget varie selon le modèle ; consultez [`MAX_THINKING_TOKENS`](/fr/env-vars) pour les plafonds par modèle. Vous pouvez limiter le budget avec cette variable d'environnement, ou désactiver complètement la réflexion via `/config` ou le basculement `Option+T`/`Alt+T`.

548 

549Sur les modèles avec raisonnement adaptatif, `MAX_THINKING_TOKENS` ne s'applique que lorsqu'il est défini à `0` pour désactiver la réflexion, ou lorsque `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` revient à ces modèles au budget fixe. `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` s'applique à Opus 4.6 et Sonnet 4.6 uniquement. Opus 4.7 utilise toujours le raisonnement adaptatif et ne prend pas en charge un budget de réflexion fixe. Consultez [variables d'environnement](/fr/env-vars).

550 

551<Warning>

552 Vous êtes facturé pour tous les jetons de réflexion utilisés, même si les résumés de réflexion sont redactés. En mode interactif, la réflexion apparaît comme un stub réduit par défaut. Définissez `showThinkingSummaries: true` dans `settings.json` pour afficher les résumés complets.

553</Warning>

554 

555***

556 

557## Reprendre les conversations précédentes

558 

559Lors du démarrage de Claude Code, vous pouvez reprendre une session précédente :

560 

561* `claude --continue` continue la conversation la plus récente dans le répertoire actuel

562* `claude --resume` ouvre un sélecteur de conversation ou reprend par nom

563* `claude --from-pr 123` reprend les sessions liées à une demande de tirage spécifique

564 

565À partir d'une session active, utilisez `/resume` pour basculer vers une conversation différente.

566 

567Lorsque la session sélectionnée est ancienne et suffisamment volumineuse pour que sa relecture consommerait une part substantielle de vos limites d'utilisation, `--resume`, `--continue` et `/resume` proposent de reprendre à partir d'un résumé au lieu de charger la transcription complète. Cette invite n'est pas disponible sur Amazon Bedrock, Google Cloud Vertex AI ou Microsoft Foundry.

568 

569Les sessions sont stockées par répertoire de projet. Par défaut, le sélecteur `/resume` affiche les sessions interactives du worktree actuel, avec des raccourcis clavier pour élargir la liste à d'autres worktrees ou projets, rechercher, prévisualiser et renommer. Consultez [Utiliser le sélecteur de session](#use-the-session-picker) ci-dessous pour la référence complète des raccourcis.

570 

571Lorsque vous sélectionnez une session à partir d'un autre worktree du même référentiel, Claude Code la reprend directement sans vous obliger à d'abord basculer les répertoires. La sélection d'une session à partir d'un projet non lié copie une commande `cd` et de reprise dans votre presse-papiers à la place.

572 

573La reprise par nom se résout dans le référentiel actuel et ses worktrees. À la fois `claude --resume <name>` et `/resume <name>` recherchent une correspondance exacte et la reprennent directement, même si la session se trouve dans un worktree différent.

574 

575Lorsque le nom est ambigu, `claude --resume <name>` ouvre le sélecteur avec le nom pré-rempli comme terme de recherche. `/resume <name>` à partir d'une session signale une erreur à la place, donc exécutez `/resume` sans argument pour ouvrir le sélecteur et choisir.

576 

577Les sessions créées par `claude -p` ou les invocations SDK n'apparaissent pas dans le sélecteur, mais vous pouvez toujours en reprendre une en passant son ID de session directement à `claude --resume <session-id>`.

578 

579### Nommez vos sessions

580 

581Donnez aux sessions des noms descriptifs pour les trouver plus tard. C'est une bonne pratique lorsque vous travaillez sur plusieurs tâches ou fonctionnalités.

582 

583<Steps>

584 <Step title="Nommez la session">

585 Nommez une session au démarrage avec `-n` :

586 

587 ```bash theme={null}

588 claude -n auth-refactor

589 ```

590 

591 Ou utilisez `/rename` pendant une session, qui affiche également le nom sur la barre de prompt :

592 

593 ```text theme={null}

594 /rename auth-refactor

595 ```

596 

597 Vous pouvez également renommer n'importe quelle session à partir du sélecteur : exécutez `/resume`, accédez à une session et appuyez sur `Ctrl+R`.

598 </Step>

599 

600 <Step title="Reprenez par nom plus tard">

601 À partir de la ligne de commande :

602 

603 ```bash theme={null}

604 claude --resume auth-refactor

605 ```

606 

607 Ou à partir d'une session active :

608 

609 ```text theme={null}

610 /resume auth-refactor

611 ```

612 </Step>

613</Steps>

614 

615### Utilisez le sélecteur de session

616 

617La commande `/resume` (ou `claude --resume` sans arguments) ouvre un sélecteur de session interactif avec ces fonctionnalités :

618 

619**Raccourcis clavier dans le sélecteur :**

620 

621| Raccourci | Action |

622| :-------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

623| `↑` / `↓` | Naviguer entre les sessions |

624| `→` / `←` | Développer ou réduire les sessions groupées |

625| `Entrée` | Sélectionner et reprendre la session en surbrillance |

626| `Espace` | Aperçu du contenu de la session. `Ctrl+V` fonctionne également sur les terminaux qui ne le capturent pas comme collage |

627| `Ctrl+R` | Renommer la session en surbrillance |

628| `/` ou tout caractère imprimable autre que `Espace` | Entrer en mode de recherche et filtrer les sessions |

629| `Ctrl+A` | Afficher les sessions de tous les projets sur cette machine. Appuyez à nouveau pour restaurer le référentiel actuel |

630| `Ctrl+W` | Afficher les sessions de tous les worktrees du référentiel actuel. Appuyez à nouveau pour restaurer le worktree actuel. Affiché uniquement dans les référentiels multi-worktrees |

631| `Ctrl+B` | Filtrer les sessions de votre branche git actuelle. Appuyez à nouveau pour afficher les sessions de toutes les branches |

632| `Échap` | Quitter le sélecteur ou le mode de recherche |

633 

634**Organisation des sessions :**

635 

636Le sélecteur affiche les sessions avec des métadonnées utiles :

637 

638* Nom de la session s'il est défini, sinon le résumé de la conversation ou le premier prompt utilisateur

639* Temps écoulé depuis la dernière activité

640* Nombre de messages

641* Branche Git (le cas échéant)

642* Chemin du projet, affiché après élargissement à tous les projets avec `Ctrl+A`

643 

644Les sessions bifurquées (créées avec `/branch`, `/rewind` ou `--fork-session`) sont groupées ensemble sous leur session racine, ce qui facilite la recherche de conversations connexes.

645 

646<Tip>

647 Conseils :

648 

649 * **Nommez les sessions tôt** : Utilisez `/rename` au démarrage du travail sur une tâche distincte — il est beaucoup plus facile de trouver « payment-integration » que « explain this function » plus tard

650 * Utilisez `--continue` pour un accès rapide à votre conversation la plus récente dans le répertoire actuel

651 * Utilisez `--resume session-name` quand vous savez quelle session vous avez besoin

652 * Utilisez `--resume` (sans nom) quand vous avez besoin de parcourir et de sélectionner

653 * Pour les scripts, utilisez `claude --continue --print "prompt"` pour reprendre en mode non interactif

654 * Appuyez sur `Espace` dans le sélecteur pour prévisualiser une session avant de la reprendre

655 * La conversation reprise démarre avec le même modèle et la même configuration que l'original

656 

657 Comment cela fonctionne :

658 

659 1. **Stockage des conversations** : Toutes les conversations sont automatiquement enregistrées localement avec leur historique complet des messages

660 2. **Désérialisation des messages** : Lors de la reprise, l'historique complet des messages est restauré pour maintenir le contexte

661 3. **État des outils** : L'utilisation des outils et les résultats de la conversation précédente sont préservés

662 4. **Restauration du contexte** : La conversation reprend avec tout le contexte précédent intact

663</Tip>

664 

665***

666 

667## Exécuter des sessions Claude Code parallèles avec Git worktrees

668 

669Lorsque vous travaillez sur plusieurs tâches à la fois, vous avez besoin que chaque session Claude ait sa propre copie de la base de code afin que les modifications ne se heurtent pas. Les worktrees Git résolvent ce problème en créant des répertoires de travail séparés qui ont chacun leurs propres fichiers et branche, tout en partageant le même historique de référentiel et les mêmes connexions distantes. Cela signifie que vous pouvez avoir Claude travaillant sur une fonctionnalité dans un worktree tout en corrigeant un bogue dans un autre, sans que l'une ou l'autre session n'interfère avec l'autre.

670 

671Utilisez le drapeau `--worktree` (`-w`) pour créer un worktree isolé et démarrer Claude dedans. La valeur que vous transmettez devient le nom du répertoire worktree et le nom de la branche :

672 

673```bash theme={null}

674# Démarrez Claude dans un worktree nommé « feature-auth »

675# Crée .claude/worktrees/feature-auth/ avec une nouvelle branche

676claude --worktree feature-auth

677 

678# Démarrez une autre session dans un worktree séparé

679claude --worktree bugfix-123

680```

681 

682Si vous omettez le nom, Claude en génère un automatiquement :

683 

684```bash theme={null}

685# Génère automatiquement un nom comme « bright-running-fox »

686claude --worktree

687```

688 

689Les worktrees sont créés à `<repo>/.claude/worktrees/<name>` et se ramifient à partir de la branche distante par défaut, qui est celle vers laquelle `origin/HEAD` pointe. La branche worktree est nommée `worktree-<name>`.

690 

691La branche de base n'est pas configurable via un drapeau ou un paramètre Claude Code. `origin/HEAD` est une référence stockée dans votre répertoire `.git` local que Git a définie une fois lorsque vous avez cloné. Si la branche par défaut du référentiel change plus tard sur GitHub ou GitLab, votre `origin/HEAD` local continue de pointer vers l'ancienne, et les worktrees se ramifieront à partir de là. Pour resynchroniser votre référence locale avec ce que le distant considère actuellement comme son défaut :

692 

693```bash theme={null}

694git remote set-head origin -a

695```

696 

697C'est une commande Git standard qui met à jour uniquement votre répertoire `.git` local. Rien sur le serveur distant ne change. Si vous souhaitez que les worktrees se basent sur une branche spécifique plutôt que sur le défaut du distant, définissez-le explicitement avec `git remote set-head origin your-branch-name`.

698 

699Pour un contrôle total sur la façon dont les worktrees sont créés, y compris le choix d'une base différente par invocation, configurez un hook [WorktreeCreate](/fr/hooks#worktreecreate). Le hook remplace complètement la logique `git worktree` par défaut de Claude Code, afin que vous puissiez récupérer et vous ramifier à partir de la ref dont vous avez besoin.

700 

701Vous pouvez également demander à Claude de « travailler dans un worktree » ou « démarrer un worktree » pendant une session, et il en créera un automatiquement.

702 

703### Worktrees des subagents

704 

705Les subagents peuvent également utiliser l'isolation worktree pour travailler en parallèle sans conflits. Demandez à Claude d'« utiliser les worktrees pour vos agents » ou configurez-le dans un [subagent personnalisé](/fr/sub-agents#supported-frontmatter-fields) en ajoutant `isolation: worktree` au frontmatter de l'agent. Chaque subagent obtient son propre worktree qui est automatiquement nettoyé quand le subagent se termine sans modifications.

706 

707### Nettoyage des worktrees

708 

709Lorsque vous quittez une session worktree, Claude gère le nettoyage en fonction de si vous avez apporté des modifications :

710 

711* **Pas de modifications** : le worktree et sa branche sont supprimés automatiquement

712* **Les modifications ou les commits existent** : Claude vous demande de conserver ou de supprimer le worktree. La conservation préserve le répertoire et la branche afin que vous puissiez revenir plus tard. La suppression supprime le répertoire worktree et sa branche, en supprimant toutes les modifications non validées et les commits

713 

714Les worktrees des subagents orphelins causés par un crash ou une exécution parallèle interrompue sont supprimés automatiquement au démarrage une fois qu'ils sont plus anciens que votre paramètre [`cleanupPeriodDays`](/fr/settings#available-settings), à condition qu'ils n'aient pas de modifications non validées, pas de fichiers non suivis et pas de commits non poussés. Les worktrees que vous créez avec `--worktree` ne sont jamais supprimés par ce balayage.

715 

716Pour nettoyer les worktrees en dehors d'une session Claude, utilisez la [gestion manuelle des worktrees](#manage-worktrees-manually).

717 

718<Tip>

719 Ajoutez `.claude/worktrees/` à votre `.gitignore` pour empêcher le contenu des worktrees d'apparaître comme des fichiers non suivis dans votre référentiel principal.

720</Tip>

721 

722### Copier les fichiers ignorés par git vers les worktrees

723 

724Les worktrees Git sont des checkouts frais, donc ils n'incluent pas les fichiers non suivis comme `.env` ou `.env.local` de votre référentiel principal. Pour copier automatiquement ces fichiers lorsque Claude crée un worktree, ajoutez un fichier `.worktreeinclude` à la racine de votre projet.

725 

726Le fichier utilise la syntaxe `.gitignore` pour lister les fichiers à copier. Seuls les fichiers qui correspondent à un modèle et qui sont également ignorés par git sont copiés, donc les fichiers suivis ne sont jamais dupliqués.

727 

728```text .worktreeinclude theme={null}

729.env

730.env.local

731config/secrets.json

732```

733 

734Cela s'applique aux worktrees créés avec `--worktree`, aux worktrees des subagents et aux sessions parallèles dans l'[application de bureau](/fr/desktop#work-in-parallel-with-sessions).

735 

736### Gérer les worktrees manuellement

737 

738Pour plus de contrôle sur l'emplacement du worktree et la configuration de la branche, créez des worktrees directement avec Git. C'est utile quand vous avez besoin de vérifier une branche existante spécifique ou de placer le worktree en dehors du référentiel.

739 

740```bash theme={null}

741# Créez un worktree avec une nouvelle branche

742git worktree add ../project-feature-a -b feature-a

743 

744# Créez un worktree avec une branche existante

745git worktree add ../project-bugfix bugfix-123

746 

747# Démarrez Claude dans le worktree

748cd ../project-feature-a && claude

749 

750# Nettoyez quand vous avez terminé

751git worktree list

752git worktree remove ../project-feature-a

753```

754 

755En savoir plus dans la [documentation officielle de Git worktree](https://git-scm.com/docs/git-worktree).

756 

757<Tip>

758 N'oubliez pas d'initialiser votre environnement de développement dans chaque nouveau worktree selon la configuration de votre projet. Selon votre pile, cela peut inclure l'exécution de l'installation des dépendances (`npm install`, `yarn`), la configuration des environnements virtuels ou le suivi du processus de configuration standard de votre projet.

759</Tip>

760 

761### Contrôle de version non-git

762 

763L'isolation worktree fonctionne avec git par défaut. Pour d'autres systèmes de contrôle de version comme SVN, Perforce ou Mercurial, configurez les hooks [WorktreeCreate et WorktreeRemove](/fr/hooks#worktreecreate) pour fournir une logique personnalisée de création et de nettoyage des worktrees. Lorsqu'ils sont configurés, ces hooks remplacent le comportement git par défaut lorsque vous utilisez `--worktree`, donc [`.worktreeinclude`](#copy-gitignored-files-to-worktrees) n'est pas traité. Copiez les fichiers de configuration locaux à l'intérieur de votre script de hook à la place.

764 

765Pour la coordination automatisée des sessions parallèles avec des tâches partagées et la messagerie, consultez [équipes d'agents](/fr/agent-teams).

766 

767***

768 

769## Recevez une notification quand Claude a besoin de votre attention

770 

771Lorsque vous lancez une tâche longue et que vous basculez vers une autre fenêtre, vous pouvez configurer des notifications de bureau afin de savoir quand Claude se termine ou a besoin de votre entrée. Cela utilise l'événement de hook `Notification` [hook event](/fr/hooks-guide#get-notified-when-claude-needs-input), qui se déclenche chaque fois que Claude attend une permission, est inactif et prêt pour un nouveau prompt, ou complète l'authentification.

772 

773<Steps>

774 <Step title="Ajoutez le hook à vos paramètres">

775 Ouvrez `~/.claude/settings.json` et ajoutez un hook `Notification` qui appelle la commande de notification native de votre plateforme :

776 

777 <Tabs>

778 <Tab title="macOS">

779 ```json theme={null}

780 {

781 "hooks": {

782 "Notification": [

783 {

784 "matcher": "",

785 "hooks": [

786 {

787 "type": "command",

788 "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'"

789 }

790 ]

791 }

792 ]

793 }

794 }

795 ```

796 </Tab>

797 

798 <Tab title="Linux">

799 ```json theme={null}

800 {

801 "hooks": {

802 "Notification": [

803 {

804 "matcher": "",

805 "hooks": [

806 {

807 "type": "command",

808 "command": "notify-send 'Claude Code' 'Claude Code needs your attention'"

809 }

810 ]

811 }

812 ]

813 }

814 }

815 ```

816 </Tab>

817 

818 <Tab title="Windows">

819 ```json theme={null}

820 {

821 "hooks": {

822 "Notification": [

823 {

824 "matcher": "",

825 "hooks": [

826 {

827 "type": "command",

828 "command": "powershell.exe -Command \"[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Claude Code needs your attention', 'Claude Code')\""

829 }

830 ]

831 }

832 ]

833 }

834 }

835 ```

836 </Tab>

837 </Tabs>

838 

839 Si votre fichier de paramètres a déjà une clé `hooks`, fusionnez l'entrée `Notification` dedans plutôt que de la remplacer. Vous pouvez également demander à Claude d'écrire le hook pour vous en décrivant ce que vous voulez dans l'interface CLI.

840 </Step>

841 

842 <Step title="Affinez éventuellement le matcher">

843 Par défaut, le hook se déclenche sur tous les types de notifications. Pour se déclencher uniquement pour des événements spécifiques, définissez le champ `matcher` sur l'une de ces valeurs :

844 

845 | Matcher | Se déclenche quand |

846 | :--------------------- | :---------------------------------------------------------- |

847 | `permission_prompt` | Claude a besoin que vous approuviez une utilisation d'outil |

848 | `idle_prompt` | Claude a terminé et attend votre prochain prompt |

849 | `auth_success` | L'authentification se termine |

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

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

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

853 </Step>

854 

855 <Step title="Vérifiez le hook">

856 Tapez `/hooks` et sélectionnez `Notification` pour confirmer que le hook apparaît. Le sélectionner affiche la commande qui s'exécutera. Pour le tester de bout en bout, demandez à Claude d'exécuter une commande qui nécessite une permission et éloignez-vous du terminal, ou demandez à Claude de déclencher une notification directement.

857 </Step>

858</Steps>

859 

860Pour le schéma d'événement complet et les types de notifications, consultez la [référence Notification](/fr/hooks#notification).

861 

862***

863 

864## Utiliser Claude comme un utilitaire de style unix

865 

866### Ajoutez Claude à votre processus de vérification

867 

868Supposons que vous souhaitiez utiliser Claude Code comme linter ou examinateur de code.

869 

870**Ajoutez Claude à votre script de construction :**

871 

872```json theme={null}

873// package.json

874{

875 ...

876 "scripts": {

877 ...

878 "lint:claude": "claude -p 'you are a linter. please look at the changes vs. main and report any issues related to typos. report the filename and line number on one line, and a description of the issue on the second line. do not return any other text.'"

879 }

880}

881```

882 

883<Tip>

884 Conseils :

885 

886 * Utilisez Claude pour l'examen automatisé du code dans votre pipeline CI/CD

887 * Personnalisez le prompt pour vérifier les problèmes spécifiques pertinents pour votre projet

888 * Envisagez de créer plusieurs scripts pour différents types de vérification

889</Tip>

890 

891### Tuyau entrant, tuyau sortant

892 

893Supposons que vous souhaitiez canaliser les données dans Claude et récupérer les données dans un format structuré.

894 

895**Canalisez les données via Claude :**

896 

897```bash theme={null}

898cat build-error.txt | claude -p 'concisely explain the root cause of this build error' > output.txt

899```

900 

901<Tip>

902 Conseils :

903 

904 * Utilisez les tuyaux pour intégrer Claude dans les scripts shell existants

905 * Combinez avec d'autres outils Unix pour des flux de travail puissants

906 * Envisagez d'utiliser `--output-format` pour une sortie structurée

907</Tip>

908 

909### Contrôler le format de sortie

910 

911Supposons que vous ayez besoin de la sortie de Claude dans un format spécifique, en particulier lors de l'intégration de Claude Code dans des scripts ou d'autres outils.

912 

913<Steps>

914 <Step title="Utilisez le format texte (par défaut)">

915 ```bash theme={null}

916 cat data.txt | claude -p 'summarize this data' --output-format text > summary.txt

917 ```

918 

919 Cela génère uniquement la réponse en texte brut de Claude (comportement par défaut).

920 </Step>

921 

922 <Step title="Utilisez le format JSON">

923 ```bash theme={null}

924 cat code.py | claude -p 'analyze this code for bugs' --output-format json > analysis.json

925 ```

926 

927 Cela génère un tableau JSON de messages avec des métadonnées incluant le coût et la durée.

928 </Step>

929 

930 <Step title="Utilisez le format JSON en continu">

931 ```bash theme={null}

932 cat log.txt | claude -p 'parse this log file for errors' --output-format stream-json

933 ```

934 

935 Cela génère une série d'objets JSON en temps réel au fur et à mesure que Claude traite la demande. Chaque message est un objet JSON valide, mais la sortie entière n'est pas un JSON valide s'il est concaténé.

936 </Step>

937</Steps>

938 

939<Tip>

940 Conseils :

941 

942 * Utilisez `--output-format text` pour les intégrations simples où vous avez juste besoin de la réponse de Claude

943 * Utilisez `--output-format json` quand vous avez besoin du journal de conversation complet

944 * Utilisez `--output-format stream-json` pour la sortie en temps réel de chaque tour de conversation

945</Tip>

946 

947***

948 

949## Exécuter Claude selon un calendrier

950 

951Supposons que vous souhaitiez que Claude gère une tâche automatiquement de manière récurrente, comme examiner les PR ouvertes chaque matin, auditer les dépendances chaque semaine ou vérifier les échecs CI pendant la nuit.

952 

953Choisissez une option de planification en fonction de l'endroit où vous souhaitez que la tâche s'exécute :

954 

955| Option | Où elle s'exécute | Idéale pour |

956| :------------------------------------------------------------- | :----------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

957| [Routines](/fr/routines) | Infrastructure gérée par Anthropic | Les tâches qui doivent s'exécuter même quand votre ordinateur est éteint. Peuvent également se déclencher sur les appels API ou les événements GitHub en plus d'un calendrier. Configurez sur [claude.ai/code/routines](https://claude.ai/code/routines). |

958| [Tâches planifiées sur le bureau](/fr/desktop-scheduled-tasks) | Votre machine, via l'application de bureau | Les tâches qui ont besoin d'un accès direct aux fichiers locaux, aux outils ou aux modifications non validées. |

959| [GitHub Actions](/fr/github-actions) | Votre pipeline CI | Les tâches liées aux événements du référentiel comme les PR ouvertes, ou les calendriers cron qui doivent vivre aux côtés de votre configuration de flux de travail. |

960| [`/loop`](/fr/scheduled-tasks) | La session CLI actuelle | L'interrogation rapide pendant qu'une session est ouverte. Les tâches s'arrêtent quand vous commencez une nouvelle conversation ; `--resume` et `--continue` restaurent les tâches non expirées. |

961 

962<Tip>

963 Lors de la rédaction de prompts pour les tâches planifiées, soyez explicite sur ce que signifie le succès et ce qu'il faut faire avec les résultats. La tâche s'exécute de manière autonome, elle ne peut donc pas poser de questions de clarification. Par exemple : ' Examinez les PR ouvertes étiquetées `needs-review`, laissez des commentaires en ligne sur les problèmes et publiez un résumé dans le canal Slack `#eng-reviews`. '

964</Tip>

965 

966***

967 

968## Demandez à Claude ses capacités

969 

970Claude a un accès intégré à sa documentation et peut répondre à des questions sur ses propres fonctionnalités et limitations.

971 

972### Exemples de questions

973 

974```text theme={null}

975can Claude Code create pull requests?

976```

977 

978```text theme={null}

979how does Claude Code handle permissions?

980```

981 

982```text theme={null}

983what skills are available?

984```

985 

986```text theme={null}

987how do I use MCP with Claude Code?

988```

989 

990```text theme={null}

991how do I configure Claude Code for Amazon Bedrock?

992```

993 

994```text theme={null}

995what are the limitations of Claude Code?

996```

997 

998<Note>

999 Claude fournit des réponses basées sur la documentation à ces questions. Pour des démonstrations pratiques, exécutez `/powerup` pour des leçons interactives avec des démos animées, ou consultez les sections de flux de travail spécifiques ci-dessus.

1000</Note>

1001 

1002<Tip>

1003 Conseils :

1004 

1005 * Claude a toujours accès à la dernière documentation de Claude Code, quelle que soit la version que vous utilisez

1006 * Posez des questions spécifiques pour obtenir des réponses détaillées

1007 * Claude peut expliquer les fonctionnalités complexes comme l'intégration MCP, les configurations d'entreprise et les flux de travail avancés

1008</Tip>

1009 

1010***

1011 

1012## Étapes suivantes

1013 

1014<CardGroup cols={2}>

1015 <Card title="Bonnes pratiques" icon="lightbulb" href="/fr/best-practices">

1016 Modèles pour tirer le meilleur parti de Claude Code

1017 </Card>

1018 

1019 <Card title="Comment fonctionne Claude Code" icon="gear" href="/fr/how-claude-code-works">

1020 Comprendre la boucle agentique et la gestion du contexte

1021 </Card>

1022 

1023 <Card title="Étendre Claude Code" icon="puzzle-piece" href="/fr/features-overview">

1024 Ajouter des skills, des hooks, MCP, des subagents et des plugins

1025 </Card>

1026 

1027 <Card title="Implémentation de référence" icon="code" href="https://github.com/anthropics/claude-code/tree/main/.devcontainer">

1028 Clonez l'implémentation de référence du conteneur de développement

1029 </Card>

1030</CardGroup>

communications-kit.md +520 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Kit de communication

6 

7> Annonces de lancement, messages de campagne progressive et réponses FAQ pour déployer Claude Code dans votre organisation d'ingénierie.

8 

9Cette page est destinée aux administrateurs et aux responsables d'ingénierie qui déploient Claude Code auprès d'une équipe. Elle fournit des annonces prêtes à être envoyées, une campagne progressive de conseils et astuces, et des réponses FAQ d'une ligne pour les questions les plus fréquemment posées.

10 

11<Note>

12 Traitez tout ce qui se trouve ici comme un brouillon, pas comme une copie définitive. Réécrivez chaque message dans la voix de votre organisation, remplacez les tâches d'exemple par de vrais bugs et modules de votre propre base de code, et remplacez les `[espaces réservés entre crochets]` avant d'envoyer. Les annonces qui stimulent l'adoption sont celles qui semblent avoir été écrites par quelqu'un de votre entreprise.

13</Note>

14 

15## Communications de lancement

16 

17Une annonce en deux formats, plus deux variantes optionnelles. Choisissez celle qui correspond à votre déploiement et réécrivez-la à partir de là.

18 

19### Avant d'envoyer

20 

21Parcourez cette liste de contrôle avant que l'annonce ne soit envoyée. Chaque élément comble une lacune qui se transformerait autrement en fil de support le jour du lancement.

22 

23| Élément | Pourquoi c'est important |

24| ------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

25| Canal `#claude-code` créé et lié dans le message | Donne aux questions un seul endroit où atterrir |

26| Commande d'installation testée sur au moins une machine de votre environnement | Détecte les problèmes de proxy ou de pare-feu avant que tout le monde les rencontre en même temps |

27| Lien de sécurité et de gestion des données prêt ([Utilisation des données](/fr/data-usage) ou l'équivalent interne) | « Où va mon code ? » sera la première réponse |

28| Une tâche concrète choisie, un vrai bug ou fichier de votre base de code | Les exemples génériques ne convertissent pas ; « corriger le test instable dans `auth_test.go` » le fait |

29| Un propriétaire nommé pour le canal pendant les 48 premières heures | Les questions sans réponse le jour du lancement tuent l'élan |

30| Un sponsor de la direction générale prêt à envoyer ou à cosigner l'annonce | Les lancements envoyés par un cadre voient systématiquement un taux d'adoption plus élevé la première semaine que ceux envoyés par un administrateur ou une équipe d'outils |

31 

32### L'annonce

33 

34Utilisez ceci comme votre message de déploiement standard à l'échelle de l'organisation. Il explique ce qu'est Claude Code, fournit un chemin d'installation de deux minutes, donne aux lecteurs une tâche concrète à essayer, et répond à « où va mon code ? » avant que quiconque ait besoin de poser la question.

35 

36<Tabs>

37 <Tab title="Email">

38 ```text theme={null}

39 Objet : Claude Code est en direct pour [Ingénierie / votre équipe]

40 

41 Équipe,

42 

43 À partir d'aujourd'hui, vous avez accès à Claude Code, un agent de codage IA qui s'exécute dans

44 votre terminal, lit votre base de code réelle et travaille sur des tâches réelles du début à la fin :

45 débogage, refactorisations, tests, PR. Ce n'est pas de l'autocomplétion et ce n'est pas une fenêtre de chat.

46 Il édite des fichiers, exécute vos commandes et demande la permission avant tout ce qui est risqué.

47 

48 Commencez en deux minutes :

49 

50 curl -fsSL https://claude.ai/install.sh | bash

51 cd <your-repo>

52 claude

53 

54 Puis exécutez /init une fois. Claude lit votre projet et écrit un CLAUDE.md avec

55 vos commandes de construction et conventions, afin que vous arrêtiez de réexpliquer les bases.

56 

57 Ensuite, essayez l'une de celles-ci sur le référentiel dans lequel vous êtes déjà :

58 

59 - ' Le test dans [fichier] est instable. Découvrez pourquoi et corrigez-le '

60 - ' Expliquez-moi comment [module] gère [X] '

61 - ' Regardez mon diff de travail et dites-moi ce qui est risqué avant que je pousse '

62 

63 Où va votre code : Claude Code s'exécute dans votre terminal et communique directement

64 avec l'API d'Anthropic, sans serveurs tiers dans la boucle. Il demande avant

65 d'éditer des fichiers ou d'exécuter des commandes. En vertu de notre accord Entreprise, Anthropic

66 n'utilise pas votre code ou vos invites pour entraîner ses modèles.

67 Détails : https://code.claude.com/docs/fr/data-usage

68 https://code.claude.com/docs/fr/security

69 

70 Où aller avec des questions : #claude-code. [Nom du propriétaire] le surveille

71 cette semaine.

72 

73 - [Nom]

74 

75 P.S. Vous préférez votre éditeur ? Il y a une extension VS Code et un plugin

76 JetBrains. Le même agent, pas de terminal requis.

77 ```

78 </Tab>

79 

80 <Tab title="Slack ou Teams">

81 ```markdown theme={null}

82 🚀 *Claude Code est en direct pour [équipe]*

83 

84 Agent de codage IA, s'exécute dans votre terminal, lit votre référentiel, fait du vrai travail :

85 bugs, refactorisations, tests, PR. Demande avant de toucher à quoi que ce soit.

86 

87 `curl -fsSL https://claude.ai/install.sh | bash` → `cd your-repo` → `claude`

88 

89 *Première chose à essayer* → exécutez `/init`, puis : « le test dans [fichier] est instable,

90 découvrez pourquoi et corrigez-le. »

91 

92 🔒 S'exécute dans votre terminal, communique uniquement avec l'API d'Anthropic. En vertu de notre

93 plan Entreprise, votre code et vos invites ne sont pas utilisés pour entraîner les modèles.

94 Utilisation des données → https://code.claude.com/docs/fr/data-usage

95 

96 📚 Démarrage rapide · VS Code · Cours gratuit d'1 heure

97 https://code.claude.com/docs/fr/quickstart

98 https://code.claude.com/docs/fr/vs-code

99 https://anthropic.skilljar.com/claude-code-in-action

100 

101 Questions → ce fil. [Propriétaire] est en première ligne.

102 ```

103 </Tab>

104</Tabs>

105 

106### Variante de sponsor exécutif

107 

108Envoyez ceci de la part de votre cadre sponsor, comme le CTO, le CIO ou le SVP Ingénierie, sous son nom et depuis son compte. Les lancements envoyés sous le nom d'un cadre voient systématiquement des taux d'ouverture plus élevés et une activation plus rapide la première semaine que le même message d'un administrateur ou d'une équipe d'outils. Cela signale une priorité de l'entreprise plutôt qu'une expérience optionnelle.

109 

110Cette version est délibérément réduite à une seule demande : installez-la et exécutez-la sur une tâche réelle. Le travail du cadre est de faire atterrir la demande ; l'annonce standard et `#claude-code` gèrent le comment.

111 

112<Tabs>

113 <Tab title="Email">

114 ```text theme={null}

115 Objet : Une chose que j'aimerais que chaque ingénieur essaie cette semaine

116 

117 Équipe,

118 

119 Nous avons activé Claude Code pour toute l'ingénierie. C'est un agent IA

120 qui fonctionne directement dans votre terminal, sur votre base de code réelle, et les

121 résultats précoces des équipes qui l'utilisent déjà sont assez solides pour que je veuille

122 que tout le monde l'utilise cette semaine.

123 

124 Je demande dix minutes :

125 

126 curl -fsSL https://claude.ai/install.sh | bash

127 cd <your-repo>

128 claude

129 

130 Ensuite, donnez-lui une tâche réelle : le bug que vous avez remis à plus tard, ou ' expliquez-moi

131 comment [module] fonctionne. '

132 

133 C'est toute la demande. [Nom du propriétaire] et l'équipe sont dans #claude-code pour

134 tout ce que vous rencontrez en chemin.

135 

136 - [Nom du cadre]

137 [Titre]

138 ```

139 </Tab>

140 

141 <Tab title="Slack ou Teams">

142 ```markdown theme={null}

143 📣 *De [Nom du cadre] : une chose à essayer cette semaine*

144 

145 Nous avons activé *Claude Code* pour toute l'ingénierie. Les résultats précoces sont

146 assez solides pour que je demande à tout le monde de lui donner dix minutes sur du vrai

147 travail cette semaine.

148 

149 `curl -fsSL https://claude.ai/install.sh | bash` → `cd your-repo` →

150 `claude` → donnez-lui une tâche réelle.

151 

152 C'est tout. Questions → #claude-code.

153 ```

154 </Tab>

155</Tabs>

156 

157### Variante du groupe pilote

158 

159À utiliser pour un déploiement par phases. Envoyez uniquement à la cohorte pilote.

160 

161```text theme={null}

162Objet : Vous êtes dans le pilote Claude Code

163 

164[Nom / équipe],

165 

166Vous êtes dans la première vague de Claude Code chez [entreprise]. Nous avons choisi ce groupe

167parce que vous le mettrez sur des problèmes réels et nous direz la vérité à ce sujet.

168 

169La demande : utilisez-le sur au moins une tâche réelle cette semaine, puis laissez une note dans

170#claude-code-pilot couvrant ce qui a fonctionné, ce qui était ennuyeux et ce qui

171vous a surpris. Ce retour d'information décide comment nous le déploierons à tout le monde d'autre.

172 

173[Continuez avec « Commencez en deux minutes » de l'annonce standard]

174 

175Une chose supplémentaire pour les pilotes : lors de votre premier changement multi-fichier, appuyez sur Maj+Tab

176jusqu'à ce que vous voyiez « plan ». Claude exposera exactement ce qu'il a l'intention de faire

177avant de toucher à un fichier. C'est le moyen le plus rapide d'étalonner combien le faire confiance.

178```

179 

180### DM de recrutement de champion

181 

182Après le lancement, envoyez un DM aux deux ou trois personnes les plus actives dans `#claude-code`.

183 

184```text theme={null}

185Salut [nom], tes messages #claude-code font plus pour l'adoption que mon

186annonce. Quelques personnes m'ont dit que ton [fil / capture d'écran]

187était la raison pour laquelle elles l'ont vraiment essayé.

188 

189Tu veux le rendre semi-officiel ? Peu d'effort : continue surtout à poster ce que

190tu postes, plus un premier accès aux nouvelles fonctionnalités et une ligne directe vers l'équipe

191Anthropic. Je peux partager un petit guide si tu es partant.

192```

193 

194## Campagne de conseils et astuces

195 

196Messages Slack ou Teams prêts à coller conçus pour stimuler l'activation des fonctionnalités après le lancement. Chacun suit le même modèle : un crochet, le gain, une invite « essayez maintenant » et un lien de documentation. Versez-les un ou deux par semaine dans `#claude-code`, ou choisissez la poignée qui correspond aux lacunes de votre équipe. Ils se suffisent à eux-mêmes sans ordre requis.

197 

198Copiez le corps du message de chaque bloc directement dans Slack ou Teams. Remplacez les `[espaces réservés entre crochets]` avant d'envoyer.

199 

200### Commencer

201 

202**Choisir le bon modèle**

203 

204```markdown theme={null}

205🎯 *Conseil : Adaptez le modèle au moment*

206 

207Utiliser Opus pour corriger une faute de frappe gaspille du calcul. Utiliser Haiku pour une

208refactorisation de 12 fichiers, c'est demander une refonte.

209 

210Claude Code s'exécute sur les mêmes modèles que l'application Claude, et vous pouvez basculer

211en milieu de session. *Sonnet* est le workhorse par défaut pour le travail de fonctionnalité quotidienne,

212les bugs, les tests et les révisions. Utilisez *Opus* pour les grandes refactorisations, le débogage complexe,

213ou tout ce qui est à enjeux élevés. Passez à *Haiku* pour les questions rapides,

214le formatage et les modifications mécaniques où la vitesse gagne.

215 

216*Essayez maintenant :* tapez `/model` et choisissez Sonnet si vous ne l'avez pas déjà fait. C'est

217le bon défaut pour la plupart des tâches.

218 

219📖 Configuration du modèle → https://code.claude.com/docs/fr/model-config

220```

221 

222| Modèle | Meilleur pour |

223| ------ | ---------------------------------------------------------------------------------------------------------------------- |

224| Opus | Refactorisations à grande échelle, débogage complexe, décisions architecturales, changements à enjeux élevés |

225| Sonnet | Travail de fonctionnalité quotidienne, corrections de bugs, tests, documentation, révision de code. Défaut recommandé. |

226| Haiku | Questions rapides, formatage, modifications mécaniques, itération rapide |

227 

228**Victoires rapides à essayer en premier**

229 

230```markdown theme={null}

231🚀 *Conseil : Trois choses à essayer dans vos 10 premières minutes*

232 

233Vous avez installé Claude Code mais vous ne savez pas vraiment quoi lui demander ? Commencez par

234les choses qui vous ennuient toute la semaine.

235 

236 - Corriger quelque chose d'ennuyeux : « le test dans [fichier] est instable, découvrez pourquoi »

237 - S'orienter dans le code que vous n'avez pas écrit : « expliquez-moi comment [module] fonctionne »

238 - Vérifier avant de pousser : « regardez mon diff de travail et dites-moi ce qui

239 semble risqué »

240 

241Aucune de ces choses n'a besoin de configuration. Juste `cd` dans votre référentiel et exécutez `claude`.

242 

243*Essayez maintenant :* choisissez le bug que vous avez évité et collez le message d'erreur.

244 

245📖 Démarrage rapide → https://code.claude.com/docs/fr/quickstart

246```

247 

248### Mémoire du projet

249 

250**`/init` et CLAUDE.md**

251 

252```markdown theme={null}

253📁 *Conseil : Arrêtez de réexpliquer votre référentiel à chaque session*

254 

255Vous dites à Claude « nous utilisons pnpm, pas npm » pour la cinquième fois ? Il y a

256une correction unique.

257 

258Exécutez `/init` une fois par référentiel. Claude lit la structure de votre projet et écrit un

259fichier CLAUDE.md avec vos commandes de construction, architecture et conventions.

260Chaque session future dans ce référentiel commence automatiquement à partir de ce fichier. Gardez-le

261sous deux écrans. C'est une feuille de triche, pas de la documentation.

262 

263*Essayez maintenant :* ouvrez votre référentiel principal, exécutez `claude`, tapez `/init`. Trente

264secondes, rentabilisé à chaque session après.

265 

266📖 CLAUDE.md et mémoire du projet → https://code.claude.com/docs/fr/memory

267```

268 

269**Références @**

270 

271```markdown theme={null}

272📎 *Conseil : Arrêtez de coller le contenu des fichiers dans le chat*

273 

274Vous copiez 200 lignes d'un composant dans votre invite pour que Claude puisse le « voir » ?

275Vous n'êtes pas obligé.

276 

277Tapez `@` puis un chemin de fichier. Claude tire le fichier directement dans le contexte.

278Fonctionne aussi pour les répertoires entiers.

279 

280> les styles dans @src/components/Button.tsx semblent décalés, vérifiez par rapport à

281> @docs/design-system.md

282 

283*Essayez maintenant :* tapez `@` puis Tab. L'autocomplétion vous montre chaque fichier à portée.

284 

285📖 Référencement des fichiers → https://code.claude.com/docs/fr/common-workflows

286```

287 

288### Contrôle et sécurité

289 

290**Modes de permission**

291 

292```markdown theme={null}

293🛡️ *Conseil : Une frappe entre « regarder mais ne pas toucher » et « fais-le juste »*

294 

295Parfois, vous voulez que Claude demande avant chaque modification. Parfois, vous voulez juste

296qu'il expédie. Vous ne devriez pas avoir à choisir une fois pour toutes.

297 

298*Maj+Tab* parcourt la longueur de la laisse que Claude obtient : *default* demande avant

299les choses risquées, *acceptEdits* laisse les modifications de fichiers et les commandes de système de fichiers courantes

300passer tout en vérifiant avant les autres commandes shell, et *plan*

301propose des modifications pour votre approbation avant que quoi que ce soit ne soit touché. Le mode plan est

302le constructeur de confiance, alors commencez par là pour tout ce qui touche plusieurs fichiers.

303 

304*Essayez maintenant :* sur votre prochaine refactorisation, appuyez sur Maj+Tab jusqu'à ce que vous voyiez « plan »,

305puis décrivez le changement. Vous obtiendrez une proposition complète avant qu'un seul fichier ne bouge.

306 

307📖 Modes de permission → https://code.claude.com/docs/fr/permissions

308```

309 

310**Checkpointing et `/rewind`**

311 

312```markdown theme={null}

313⏪ *Conseil : Il y a un bouton d'annulation pour toute la conversation*

314 

315Claude a emprunté le mauvais chemin il y a trois tours et maintenant vous le démêlez ?

316Vous n'avez pas à corriger vers l'avant.

317 

318`/rewind` revient à un point antérieur de la conversation, y compris les

319modifications de fichiers que Claude a apportées en chemin. Le checkpointing est automatique ; vous

320ne configurez rien.

321 

322*Essayez maintenant :* appuyez sur *Échap* deux fois pour ouvrir le menu de rembobinage, ou tapez `/rewind`.

323Choisissez le point avant que les choses ne deviennent de travers.

324 

325📖 Checkpointing → https://code.claude.com/docs/fr/checkpointing

326```

327 

328### Connectez vos outils

329 

330**Connecteurs MCP**

331 

332```markdown theme={null}

333🔌 *Conseil : Laissez Claude lire votre suivi de problèmes pour que vous n'ayez pas à coller les tickets*

334 

335Coller des tickets Jira dans le terminal semble être un pas en arrière.

336C'est le cas.

337 

338Un fichier de configuration (`.mcp.json` à la racine de votre projet) connecte Claude à GitHub,

339Jira, Linear, ou quel que soit le suivi que vous utilisez. Ensuite, « quel est le problème

340de priorité supérieure qui m'est assigné ? » et « vas-y et corrige-le » se produisent dans la même

341conversation.

342 

343*Essayez maintenant :* demandez à Claude « configure un connecteur MCP pour [GitHub/Jira/Linear]

344dans ce référentiel ». Il écrira la configuration pour vous.

345 

346📖 Connecteurs MCP → https://code.claude.com/docs/fr/mcp

347```

348 

349### Automatisez vos flux de travail

350 

351**Skills**

352 

353```markdown theme={null}

354⚡ *Conseil : Transformez cette invite que vous continuez à retaper en commande*

355 

356Vous avez tapé « résumez ce sur quoi j'ai travaillé aujourd'hui à partir du git log, formatez-le pour le standup »

357trois fois cette semaine ? C'est une commande slash qui attend de se produire.

358 

359Un fichier SKILL.md dans `.claude/skills/<name>/` devient une invite réutilisable ; tapez

360`/name` pour l'exécuter. Faites-en un la deuxième fois que vous tapez une invite multi-étapes

361que vous avez tapée avant. Chemin le plus facile : demandez à Claude de le faire pour vous.

362 

363*Essayez maintenant :* tapez « fais-moi un skill /standup qui résume ce sur quoi j'ai travaillé

364aujourd'hui à partir du git log », puis exécutez `/standup` demain matin.

365 

366📖 Skills → https://code.claude.com/docs/fr/skills

367```

368 

369**Hooks**

370 

371```markdown theme={null}

372🔔 *Conseil : Soyez averti quand votre refactorisation se termine*

373 

374Vous êtes assis à votre bureau en regardant Claude travailler sur une tâche longue ? Vous avez

375de meilleures choses à faire pendant ces huit minutes.

376 

377Les hooks sont des commandes shell qui se déclenchent sur les événements Claude Code. Un hook Stop qui

378envoie une notification de bureau signifie que vous pouvez lancer une longue refactorisation, vous éloigner,

379et être averti au moment où c'est fait.

380 

381*Essayez maintenant :* demandez à Claude « ajoute un hook Stop qui envoie une notification de bureau

382quand tu termines ». Il écrira le script et le connectera.

383 

384📖 Guide des hooks → https://code.claude.com/docs/fr/hooks-guide

385```

386 

387### Développement au jour le jour

388 

389**Captures d'écran et images**

390 

391```markdown theme={null}

392📸 *Conseil : Arrêtez de décrire la boîte de dialogue d'erreur. Montrez-la juste.*

393 

394Vous tapez « il y a une boîte rouge qui dit quelque chose à propos d'une référence nulle

395et elle pointe vers la ligne 47 environ » ? Prenez une capture d'écran.

396 

397Faites glisser une capture d'écran directement dans le terminal et Claude la voit : boîtes de dialogue d'erreur,

398maquettes d'interface utilisateur, photos de tableau blanc, exports Figma. *Ctrl+V* colle depuis

399le presse-papiers (utilisez aussi Ctrl+V sur macOS, pas Cmd+V).

400 

401*Essayez maintenant :* la prochaine fois que quelque chose de visuel se casse, prenez une capture d'écran et collez-la

402directement dans l'invite. Ensuite, tapez juste « qu'est-ce qui ne va pas ici ? »

403 

404📖 Travailler avec des images → https://code.claude.com/docs/fr/common-workflows

405```

406 

407**Flux de travail Git**

408 

409```markdown theme={null}

410🌿 *Conseil : Confiez toute la cérémonie git*

411 

412La correction a pris 5 minutes. Le message de commit, la branche et la description de PR

413ont pris 15. Ce ratio est faux.

414 

415Claude gère le flux git complet : commits avec des messages conventionnels,

416branches, PR avec des résumés appropriés. Une demande : « corrige le décalage d'un, committe

417avec un message de commit conventionnel et ouvre une PR. » Vous révisez le travail de quelqu'un d'autre ?

418Collez l'URL de la PR et demandez à Claude de vous expliquer le diff.

419 

420*Essayez maintenant :* après votre prochaine correction, au lieu de basculer vers votre client git,

421tapez juste « committe ceci avec un bon message et ouvre une PR ».

422 

423📖 Création de pull requests → https://code.claude.com/docs/fr/common-workflows

424```

425 

426### Partager et mettre à l'échelle

427 

428**Plugins**

429 

430```markdown theme={null}

431📦 *Conseil : Quelqu'un a probablement déjà construit ce skill*

432 

433Vous êtes sur le point de passer une heure à construire une commande `/deploy` ? Vérifiez si elle

434existe déjà.

435 

436Les skills sont regroupés et partagés en tant que plugins. `/plugin` parcourt ce qui est

437disponible et s'installe en une seule étape. Cinq minutes de navigation peuvent économiser une heure de construction.

438 

439*Essayez maintenant :* tapez `/plugin` et faites défiler. Vous trouverez au moins une

440chose que vous ne saviez pas que vous vouliez.

441 

442📖 Plugins → https://code.claude.com/docs/fr/plugins

443```

444 

445### Sécurité et administration

446 

447**Architecture de sécurité**

448 

449```markdown theme={null}

450🔐 *Conseil : La réponse à « est-ce sûr ? » pour la prochaine fois qu'on vous le demande*

451 

452Quelqu'un de votre équipe va demander « attends, où va mon code ? »

453Voici la version courte que vous pouvez coller.

454 

455Permission-first par conception. Chaque modification de fichier, commande shell et appel externe

456est contrôlé par votre approbation. Le CLI s'exécute dans votre terminal et communique

457directement avec l'API d'Anthropic, sans serveurs tiers, et supporte le sandboxing optionnel au niveau du système d'exploitation

458pour les commandes shell. En vertu de notre plan Entreprise,

459Anthropic n'utilise pas votre code ou vos invites pour entraîner ses modèles.

460 

461*Essayez maintenant :* enregistrez ces deux liens pour la prochaine fois que la question se pose.

462Ils répondent à la plupart des questions d'examen de sécurité.

463 

464📖 https://code.claude.com/docs/fr/security

465📖 https://code.claude.com/docs/fr/data-usage

466```

467 

468**Meilleures pratiques**

469 

470```markdown theme={null}

471✅ *Conseil : Les 4 habitudes qui séparent « l'ai essayé une fois » de « l'utilise quotidiennement »*

472 

473La plupart des gens qui rebondissent sur Claude Code en ont sauté une. La plupart des gens

474qui restent les ont tous faits la première semaine.

475 

476 - Commencez en mode plan pour tout ce qui touche plusieurs fichiers

477 - Exécutez /init tôt ; le contexte se compose

478 - Examinez les diffs avant de committer ; Claude peut se tromper avec confiance

479 - Vérifiez les modifications qui touchent les chemins critiques ; traitez-le comme un junior

480 pointu, pas un oracle

481 

482*Essayez maintenant :* si vous n'en avez fait qu'un ou deux, choisissez celui qui vous manque

483et faites-le sur votre prochaine tâche. Postez ce qui a changé dans #claude-code.

484 

485📖 Meilleures pratiques → https://code.claude.com/docs/fr/best-practices

486```

487 

488## Référence rapide

489 

490### Réponses FAQ

491 

492Réponses d'une ligne pour les questions les plus fréquemment posées.

493 

494| Question | Réponse |

495| ------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

496| « Fonctionne-t-il dans VS Code ? » | Oui. Il y a une extension VS Code et un plugin JetBrains avec les mêmes fonctionnalités, intégrés dans votre éditeur. [VS Code →](/fr/vs-code) |

497| « Dois-je configurer quelque chose en premier ? » | Non. Installez, puis exécutez `claude` dans n'importe quel référentiel. Exécutez `/init` une fois et vous êtes prêt. [Démarrage rapide →](/fr/quickstart) |

498| « Où va mon code ? » | Le CLI s'exécute dans votre terminal et envoie le contexte à l'API d'Anthropic pour l'inférence, sans serveurs tiers. En vertu de votre plan Entreprise, votre code et vos invites ne sont pas utilisés pour entraîner les modèles. [Utilisation des données →](/fr/data-usage) |

499| « Peut-il voir tout mon référentiel ? » | Il lit ce à quoi vous lui donnez accès. Les lectures de fichiers dans votre répertoire de travail ne demandent pas ; les invites de permission contrôlent les modifications, les commandes shell et tout ce qui est en dehors de ce répertoire. [Permissions →](/fr/permissions) |

500| « En quoi c'est différent de Copilot ? » | Copilot complète les lignes. Claude Code est un agent qui lit les fichiers, exécute les commandes et effectue des modifications multi-fichiers. [Aperçu →](/fr/overview) |

501| « Que devrais-je essayer en premier ? » | Un bug que vous avez remis à plus tard parce que c'est fastidieux. « Le test dans \[fichier] est instable, découvrez pourquoi. » [Démarrage rapide →](/fr/quickstart) |

502 

503### Modèles d'invite

504 

505Partagez ces invites de démarrage avec les ingénieurs qui ont installé mais ne savent pas quoi demander. Chacune est formulée comme elle serait tapée dans une session réelle ; remplacez les pièces entre crochets par des fichiers de votre propre référentiel.

506 

507| Tâche | Invite |

508| --------------------------- | ------------------------------------------------------------------------------------------------------ |

509| Corriger un bug | « les tests dans \[fichier] échouent, découvrez pourquoi et corrigez-le » |

510| Comprendre le code | « expliquez-moi comment \[module] fonctionne, puis dites-moi où se trouve le point d'entrée » |

511| Refactorisation sûre | « refactorisez \[module] pour \[objectif], utilisez le mode plan pour que je puisse d'abord examiner » |

512| Écrire des tests | « écrivez des tests pour \[fichier] qui couvrent les cas limites autour de \[scénario] » |

513| Examiner avant de committer | « regardez mon diff de travail et dites-moi ce qui semble risqué » |

514| Ouvrir une PR | « corrigez \[problème], écrivez un commit conventionnel et ouvrez une PR avec un résumé » |

515| Créer un skill | « fais-moi un skill /ship qui exécute les tests et lint avant commit » |

516| Déboguer une trace de pile | « voici la trace de pile, trouvez la cause racine, ne la recouvrez pas juste » |

517 

518<Tip>

519 Claude Code est livré fréquemment. Vérifiez les détails spécifiques à la version par rapport à la [page d'accueil de la documentation](/fr/overview) avant de distribuer en interne.

520</Tip>

computer-use.md +209 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Laisser Claude utiliser votre ordinateur depuis la CLI

6 

7> Activez l'utilisation de l'ordinateur dans la CLI Claude Code pour que Claude puisse ouvrir des applications, cliquer, taper et voir votre écran sur macOS. Testez les applications natives, déboguez les problèmes visuels et automatisez les outils GUI uniquement sans quitter votre terminal.

8 

9<Note>

10 {/* plan-availability: feature=computer-use plans=pro,max */}

11 

12 L'utilisation de l'ordinateur est un aperçu de recherche sur macOS qui nécessite un plan Pro ou Max. Elle n'est pas disponible sur les plans Team ou Enterprise. Elle nécessite Claude Code v2.1.85 ou ultérieur et une session interactive, elle n'est donc pas disponible en mode non-interactif avec le drapeau `-p`.

13</Note>

14 

15L'utilisation de l'ordinateur permet à Claude d'ouvrir des applications, de contrôler votre écran et de travailler sur votre machine comme vous le feriez. Depuis la CLI, Claude peut compiler une application Swift, la lancer, cliquer sur chaque bouton et faire une capture d'écran du résultat, tout dans la même conversation où il a écrit le code.

16 

17Cette page explique comment fonctionne l'utilisation de l'ordinateur dans la CLI. Pour l'application Desktop, consultez [utilisation de l'ordinateur dans Desktop](/fr/desktop#let-claude-use-your-computer).

18 

19## Ce que vous pouvez faire avec l'utilisation de l'ordinateur

20 

21L'utilisation de l'ordinateur gère les tâches qui nécessitent une GUI : tout ce que vous devriez normalement faire en quittant le terminal et en le faisant manuellement.

22 

23* **Créer et valider des applications natives** : demandez à Claude de créer une application de barre de menu macOS. Claude écrit le Swift, le compile, lance l'application et clique sur chaque contrôle pour vérifier qu'il fonctionne avant que vous ne l'ouvriez jamais.

24* **Tests d'interface utilisateur de bout en bout** : pointez Claude vers une application Electron locale et dites « teste le flux d'intégration ». Claude ouvre l'application, clique sur l'inscription et fait une capture d'écran de chaque étape. Pas de configuration Playwright, pas de harnais de test.

25* **Déboguer les problèmes visuels et de mise en page** : dites à Claude « la modale se coupe sur les petites fenêtres ». Claude redimensionne la fenêtre, reproduit le bogue, en fait une capture d'écran, corrige le CSS et vérifie la correction. Claude voit ce que vous voyez.

26* **Piloter les outils GUI uniquement** : interagissez avec les outils de conception, les panneaux de contrôle du matériel, le simulateur iOS ou les applications propriétaires qui n'ont pas de CLI ou d'API.

27 

28## Quand l'utilisation de l'ordinateur s'applique

29 

30Claude a plusieurs façons d'interagir avec une application ou un service. L'utilisation de l'ordinateur est la plus large et la plus lente, donc Claude essaie d'abord l'outil le plus précis :

31 

32* Si vous avez un [serveur MCP](/fr/mcp) pour le service, Claude l'utilise.

33* Si la tâche est une commande shell, Claude utilise Bash.

34* Si la tâche est du travail de navigateur et que vous avez [Claude dans Chrome](/fr/chrome) configuré, Claude l'utilise.

35* Si aucun de ces éléments ne s'applique, Claude utilise l'utilisation de l'ordinateur.

36 

37Le contrôle de l'écran est réservé aux choses que rien d'autre ne peut atteindre : les applications natives, les simulateurs et les outils sans API.

38 

39## Activer l'utilisation de l'ordinateur

40 

41L'utilisation de l'ordinateur est disponible en tant que serveur MCP intégré appelé `computer-use`. Elle est désactivée par défaut jusqu'à ce que vous l'activiez.

42 

43<Steps>

44 <Step title="Ouvrir le menu MCP">

45 Dans une session Claude Code interactive, exécutez :

46 

47 ```text theme={null}

48 /mcp

49 ```

50 

51 Trouvez `computer-use` dans la liste des serveurs. Il s'affiche comme désactivé.

52 </Step>

53 

54 <Step title="Activer le serveur">

55 Sélectionnez `computer-use` et choisissez **Activer**. Le paramètre persiste par projet, vous ne le faites donc qu'une fois pour chaque projet où vous souhaitez utiliser l'ordinateur.

56 </Step>

57 

58 <Step title="Accorder les autorisations macOS">

59 La première fois que Claude essaie d'utiliser votre ordinateur, vous verrez une invite pour accorder deux autorisations macOS :

60 

61 * **Accessibilité** : permet à Claude de cliquer, taper et faire défiler

62 * **Enregistrement d'écran** : permet à Claude de voir ce qui est sur votre écran

63 

64 L'invite inclut des liens pour ouvrir le volet Paramètres système pertinent. Accordez les deux, puis sélectionnez **Réessayer** dans l'invite. macOS peut vous demander de redémarrer Claude Code après avoir accordé l'enregistrement d'écran.

65 </Step>

66</Steps>

67 

68Après la configuration, demandez à Claude de faire quelque chose qui nécessite la GUI :

69 

70```text theme={null}

71Créez la cible d'application, lancez-la et cliquez sur chaque onglet pour

72vous assurer que rien ne plante. Faites une capture d'écran de tout état

73d'erreur que vous trouvez.

74```

75 

76## Approuver les applications par session

77 

78L'activation du serveur `computer-use` ne donne pas à Claude accès à chaque application sur votre machine. La première fois que Claude a besoin d'une application spécifique dans une session, une invite apparaît dans votre terminal montrant :

79 

80* Quelles applications Claude souhaite contrôler

81* Toute autorisation supplémentaire demandée, comme l'accès au presse-papiers

82* Combien d'autres applications seront masquées pendant que Claude travaille

83 

84Choisissez **Autoriser pour cette session** ou **Refuser**. Les approbations durent pour la session actuelle. Vous pouvez approuver plusieurs applications à la fois lorsque Claude les demande ensemble.

85 

86Les applications avec une large portée affichent un avertissement supplémentaire dans l'invite pour que vous sachiez ce que l'approbation leur accorde :

87 

88| Avertissement | S'applique à |

89| :----------------------------------------- | :-------------------------------------------------------- |

90| Équivalent à l'accès shell | Terminal, iTerm, VS Code, Warp et autres terminaux et IDE |

91| Peut lire ou écrire n'importe quel fichier | Finder |

92| Peut modifier les paramètres système | Paramètres système |

93 

94Ces applications ne sont pas bloquées. L'avertissement vous permet de décider si la tâche justifie ce niveau d'accès.

95 

96Le niveau de contrôle de Claude varie également selon la catégorie d'application : les navigateurs et les plateformes de trading sont en lecture seule, les terminaux et les IDE sont en clic uniquement, et tout le reste obtient un contrôle complet. Consultez [autorisations des applications dans Desktop](/fr/desktop#app-permissions) pour la répartition complète des niveaux.

97 

98## Comment Claude fonctionne sur votre écran

99 

100Comprendre le flux vous aide à anticiper ce que Claude fera et comment intervenir.

101 

102### Une session à la fois

103 

104L'utilisation de l'ordinateur maintient un verrou à l'échelle de la machine pendant qu'elle est active. Si une autre session Claude Code utilise déjà votre ordinateur, les nouvelles tentatives échouent avec un message vous indiquant quelle session détient le verrou. Terminez ou quittez cette session d'abord.

105 

106### Les applications sont masquées pendant que Claude travaille

107 

108Lorsque Claude commence à contrôler votre écran, les autres applications visibles sont masquées pour que Claude n'interagisse qu'avec les applications approuvées. Votre fenêtre de terminal reste visible et est exclue des captures d'écran, vous pouvez donc regarder la session et Claude ne voit jamais sa propre sortie.

109 

110Lorsque Claude termine le tour, les applications masquées sont restaurées automatiquement.

111 

112### Arrêter à tout moment

113 

114Lorsque Claude acquiert le verrou, une notification macOS apparaît : « Claude utilise votre ordinateur · appuyez sur Échap pour arrêter ». Appuyez sur `Échap` n'importe où pour abandonner l'action actuelle immédiatement, ou appuyez sur `Ctrl+C` dans le terminal. De toute façon, Claude libère le verrou, affiche vos applications et vous rend le contrôle.

115 

116Une deuxième notification apparaît lorsque Claude a terminé.

117 

118## Sécurité et limite de confiance

119 

120<Warning>

121 Contrairement à l'[outil Bash en bac à sable](/fr/sandboxing), l'utilisation de l'ordinateur s'exécute sur votre vrai bureau avec accès aux applications que vous approuvez. Claude vérifie chaque action et signale les injections de requête potentielles du contenu à l'écran, mais la limite de confiance est différente. Consultez le [guide de sécurité de l'utilisation de l'ordinateur](https://support.claude.com/en/articles/14128542) pour les meilleures pratiques.

122</Warning>

123 

124Les garde-fous intégrés réduisent le risque sans nécessiter de configuration :

125 

126* **Approbation par application** : Claude ne peut contrôler que les applications que vous avez approuvées dans la session actuelle.

127* **Avertissements sentinelles** : les applications qui accordent l'accès shell, système de fichiers ou paramètres système sont signalées avant que vous les approuviez.

128* **Terminal exclu des captures d'écran** : Claude ne voit jamais votre fenêtre de terminal, donc les invites à l'écran dans votre session ne peuvent pas être renvoyées au modèle.

129* **Échappement global** : la touche `Échap` abandonne l'utilisation de l'ordinateur de n'importe où, et la pression sur la touche est consommée pour que l'injection de requête ne puisse pas l'utiliser pour fermer les dialogues.

130* **Fichier de verrou** : une seule session peut contrôler votre machine à la fois.

131 

132## Exemples de flux de travail

133 

134Ces exemples montrent les façons courantes de combiner l'utilisation de l'ordinateur avec les tâches de codage.

135 

136### Valider une compilation native

137 

138Après avoir apporté des modifications à une application macOS ou iOS, demandez à Claude de compiler et vérifier en une seule passe :

139 

140```text theme={null}

141Créez la cible MenuBarStats, lancez-la, ouvrez la fenêtre des préférences

142et vérifiez que le curseur d'intervalle met à jour l'étiquette. Faites une

143capture d'écran de la fenêtre des préférences lorsque vous avez terminé.

144```

145 

146Claude exécute `xcodebuild`, lance l'application, interagit avec l'interface utilisateur et rapporte ce qu'il trouve.

147 

148### Reproduire un bogue de mise en page

149 

150Lorsqu'un bogue visuel n'apparaît qu'à certaines tailles de fenêtre, laissez Claude le trouver :

151 

152```text theme={null}

153La modale des paramètres coupe son pied de page sur les fenêtres étroites.

154Redimensionnez la fenêtre de l'application jusqu'à ce que vous puissiez la

155reproduire, faites une capture d'écran de l'état coupé, puis vérifiez le

156CSS du conteneur modal.

157```

158 

159Claude redimensionne la fenêtre, capture l'état cassé et lit les feuilles de style pertinentes.

160 

161### Tester un flux de simulateur

162 

163Pilotez le simulateur iOS sans écrire XCTest :

164 

165```text theme={null}

166Ouvrez le simulateur iOS, lancez l'application, appuyez sur les écrans

167d'intégration et dites-moi si un écran prend plus d'une seconde à charger.

168```

169 

170Claude contrôle le simulateur de la même manière que vous le feriez avec une souris.

171 

172## Différences par rapport à l'application Desktop

173 

174Les surfaces CLI et Desktop partagent le même moteur d'utilisation de l'ordinateur. Quelques contrôles spécifiques à Desktop ne sont pas encore dans la CLI :

175 

176| Fonctionnalité | Desktop | CLI |

177| :------------------------------- | :-------------------------------------------------------------------------------- | :--------------------------------- |

178| Activer | Basculer dans **Paramètres > Général** (sous **Application Desktop**) | Activer `computer-use` dans `/mcp` |

179| Liste des applications refusées | Configurable dans les paramètres | Pas encore disponible |

180| Basculer l'affichage automatique | Optionnel | Toujours activé |

181| Intégration Dispatch | Les sessions générées par Dispatch peuvent utiliser l'utilisation de l'ordinateur | Non applicable |

182 

183## Dépannage

184 

185### « L'utilisation de l'ordinateur est utilisée par une autre session Claude »

186 

187Une autre session Claude Code détient le verrou. Terminez la tâche dans cette session ou quittez-la. Si l'autre session a planté, le verrou est libéré automatiquement lorsque Claude détecte que le processus n'est plus en cours d'exécution.

188 

189### L'invite de permissions macOS continue de réapparaître

190 

191macOS nécessite parfois un redémarrage du processus demandeur après avoir accordé l'enregistrement d'écran. Quittez complètement Claude Code et démarrez une nouvelle session. Si l'invite persiste, ouvrez **Paramètres système > Confidentialité et sécurité > Enregistrement d'écran** et confirmez que votre application de terminal est répertoriée et activée.

192 

193### `computer-use` n'apparaît pas dans `/mcp`

194 

195Le serveur n'apparaît que sur les configurations éligibles. Vérifiez que :

196 

197* Vous êtes sur macOS. L'utilisation de l'ordinateur n'est pas disponible sur Linux ou Windows.

198* Vous exécutez Claude Code v2.1.85 ou ultérieur. Exécutez `claude --version` pour vérifier.

199* Vous êtes sur un plan Pro ou Max. Exécutez `/status` pour confirmer votre abonnement.

200* Vous êtes authentifié via claude.ai. L'utilisation de l'ordinateur n'est pas disponible avec les fournisseurs tiers comme Amazon Bedrock, Google Cloud Vertex AI ou Microsoft Foundry. Si vous accédez à Claude exclusivement via un fournisseur tiers, vous avez besoin d'un compte claude.ai séparé pour utiliser cette fonctionnalité.

201* Vous êtes dans une session interactive. L'utilisation de l'ordinateur n'est pas disponible en mode non-interactif avec le drapeau `-p`.

202 

203## Voir aussi

204 

205* [Utilisation de l'ordinateur dans Desktop](/fr/desktop#let-claude-use-your-computer) : la même capacité avec une page de paramètres graphique

206* [Claude dans Chrome](/fr/chrome) : automatisation du navigateur pour les tâches basées sur le web

207* [MCP](/fr/mcp) : connectez Claude à des outils et des API structurés

208* [Bac à sable](/fr/sandboxing) : comment l'outil Bash de Claude isole l'accès au système de fichiers et au réseau

209* [Guide de sécurité de l'utilisation de l'ordinateur](https://support.claude.com/en/articles/14128542) : meilleures pratiques pour une utilisation sécurisée de l'ordinateur

costs.md +203 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Gérer les coûts efficacement

6 

7> Suivez l'utilisation des tokens, définissez des limites de dépenses pour l'équipe, et réduisez les coûts de Claude Code grâce à la gestion du contexte, la sélection du modèle, les paramètres de réflexion étendue et les hooks de prétraitement.

8 

9Claude Code facture selon la consommation de tokens API. Pour les tarifs des plans d'abonnement (Pro, Max, Team, Enterprise), consultez [claude.com/pricing](https://claude.com/pricing). Les coûts par développeur varient considérablement en fonction de la sélection du modèle, de la taille de la base de code et des modèles d'utilisation tels que l'exécution de plusieurs instances ou l'automatisation.

10 

11Dans les déploiements d'entreprise, le coût moyen est d'environ 13 $par développeur par jour actif et de 150 à 250$ par développeur par mois, les coûts restant en dessous de 30 \$ par jour actif pour 90 % des utilisateurs. Pour estimer les dépenses de votre équipe, commencez par un petit groupe pilote et utilisez les outils de suivi ci-dessous pour établir une base de référence avant un déploiement plus large.

12 

13Cette page explique comment [suivre vos coûts](#track-your-costs), [gérer les coûts pour les équipes](#managing-costs-for-teams) et [réduire l'utilisation des tokens](#reduce-token-usage).

14 

15## Suivre vos coûts

16 

17### Utiliser la commande `/usage`

18 

19<Note>

20 Le bloc Session dans `/usage` affiche l'utilisation des tokens API et est destiné aux utilisateurs d'API. Les abonnés Claude Max et Pro ont l'utilisation incluse dans leur abonnement, donc le chiffre du coût de session n'est pas pertinent à des fins de facturation. Les abonnés voient les barres d'utilisation du plan et les statistiques d'activité sur le même écran.

21</Note>

22 

23La commande `/usage` fournit des statistiques détaillées sur l'utilisation des tokens pour votre session actuelle. Le chiffre en dollars est une estimation calculée localement à partir des décomptes de tokens et peut différer de votre facture réelle. Pour une facturation fiable, consultez la page Utilisation dans la [Console Claude](https://platform.claude.com/usage).

24 

25```text theme={null}

26Total cost: $0.55

27Total duration (API): 6m 19.7s

28Total duration (wall): 6h 33m 10.2s

29Total code changes: 0 lines added, 0 lines removed

30```

31 

32## Gérer les coûts pour les équipes

33 

34Lors de l'utilisation de l'API Claude, vous pouvez [définir des limites de dépenses pour l'espace de travail](https://platform.claude.com/docs/fr/build-with-claude/workspaces#workspace-limits) sur la dépense totale de l'espace de travail Claude Code. Les administrateurs peuvent [afficher les rapports de coûts et d'utilisation](https://platform.claude.com/docs/fr/build-with-claude/workspaces#usage-and-cost-tracking) dans la Console.

35 

36<Note>

37 Lorsque vous authentifiez pour la première fois Claude Code avec votre compte Claude Console, un espace de travail appelé « Claude Code » est automatiquement créé pour vous. Cet espace de travail fournit un suivi et une gestion centralisés des coûts pour toute l'utilisation de Claude Code dans votre organisation. Vous ne pouvez pas créer de clés API pour cet espace de travail ; il est exclusivement destiné à l'authentification et à l'utilisation de Claude Code.

38 

39 Pour les organisations avec des limites de débit personnalisées, le trafic Claude Code dans cet espace de travail compte vers les limites de débit API globales de votre organisation. Vous pouvez définir une [limite de débit d'espace de travail](https://platform.claude.com/docs/fr/api/rate-limits#setting-lower-limits-for-workspaces) sur la page Limites de cet espace de travail dans la Console Claude pour limiter la part de Claude Code et protéger les autres charges de travail de production.

40</Note>

41 

42Sur Bedrock, Vertex et Foundry, Claude Code n'envoie pas de métriques depuis votre cloud. Pour obtenir des métriques de coûts, plusieurs grandes entreprises ont signalé l'utilisation de [LiteLLM](/fr/llm-gateway#litellm-configuration), qui est un outil open-source qui aide les entreprises à [suivre les dépenses par clé](https://docs.litellm.ai/docs/proxy/virtual_keys#tracking-spend). Ce projet n'est pas affilié à Anthropic et n'a pas été audité pour la sécurité.

43 

44### Recommandations de limite de débit

45 

46Lors de la configuration de Claude Code pour les équipes, tenez compte de ces recommandations de Token Par Minute (TPM) et Requête Par Minute (RPM) par utilisateur en fonction de la taille de votre organisation :

47 

48| Taille de l'équipe | TPM par utilisateur | RPM par utilisateur |

49| -------------------- | ------------------- | ------------------- |

50| 1-5 utilisateurs | 200 000-300 000 | 5-7 |

51| 5-20 utilisateurs | 100 000-150 000 | 2,5-3,5 |

52| 20-50 utilisateurs | 50 000-75 000 | 1,25-1,75 |

53| 50-100 utilisateurs | 25 000-35 000 | 0,62-0,87 |

54| 100-500 utilisateurs | 15 000-20 000 | 0,37-0,47 |

55| 500+ utilisateurs | 10 000-15 000 | 0,25-0,35 |

56 

57Par exemple, si vous avez 200 utilisateurs, vous pourriez demander 20 000 TPM pour chaque utilisateur, soit 4 millions de TPM au total (200 × 20 000 = 4 millions).

58 

59Le TPM par utilisateur diminue à mesure que la taille de l'équipe augmente, car moins d'utilisateurs ont tendance à utiliser Claude Code simultanément dans les grandes organisations. Ces limites de débit s'appliquent au niveau de l'organisation, et non par utilisateur individuel, ce qui signifie que les utilisateurs individuels peuvent temporairement consommer plus que leur part calculée lorsque d'autres n'utilisent pas activement le service.

60 

61<Note>

62 Si vous anticipez des scénarios avec une utilisation concurrente inhabituellement élevée (comme des sessions de formation en direct avec de grands groupes), vous pourriez avoir besoin d'allocations TPM plus élevées par utilisateur.

63</Note>

64 

65### Coûts en tokens des équipes d'agents

66 

67Les [équipes d'agents](/fr/agent-teams) lancent plusieurs instances de Claude Code, chacune avec sa propre fenêtre de contexte. L'utilisation des tokens augmente avec le nombre de coéquipiers actifs et la durée d'exécution de chacun.

68 

69Pour maintenir les coûts des équipes d'agents gérables :

70 

71* Utilisez Sonnet pour les coéquipiers. Il équilibre la capacité et le coût pour les tâches de coordination.

72* Gardez les équipes petites. Chaque coéquipier exécute sa propre fenêtre de contexte, donc l'utilisation des tokens est à peu près proportionnelle à la taille de l'équipe.

73* Gardez les invites de génération concentrées. Les coéquipiers chargent CLAUDE.md, les serveurs MCP et les skills automatiquement, mais tout ce qui se trouve dans l'invite de génération s'ajoute à leur contexte dès le départ.

74* Nettoyez les équipes lorsque le travail est terminé. Les coéquipiers actifs continuent à consommer des tokens même s'ils sont inactifs.

75* Les équipes d'agents sont désactivées par défaut. Définissez `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` dans votre [settings.json](/fr/settings) ou dans l'environnement pour les activer. Voir [activer les équipes d'agents](/fr/agent-teams#enable-agent-teams).

76 

77## Réduire l'utilisation des tokens

78 

79Les coûts des tokens augmentent avec la taille du contexte : plus Claude traite de contexte, plus vous utilisez de tokens. Claude Code optimise automatiquement les coûts grâce à la mise en cache des invites (qui réduit les coûts pour le contenu répété comme les invites système) et à la compaction automatique (qui résume l'historique des conversations en approchant les limites du contexte).

80 

81Les stratégies suivantes vous aident à maintenir le contexte petit et à réduire les coûts par message.

82 

83### Gérer le contexte de manière proactive

84 

85Utilisez `/usage` pour vérifier votre utilisation actuelle des tokens, ou [configurez votre ligne d'état](/fr/statusline#context-window-usage) pour l'afficher en continu.

86 

87* **Effacer entre les tâches** : Utilisez `/clear` pour recommencer à zéro lorsque vous passez à un travail non lié. Le contexte obsolète gaspille des tokens à chaque message suivant. Utilisez `/rename` avant d'effacer pour pouvoir facilement retrouver la session plus tard, puis `/resume` pour y revenir.

88* **Ajouter des instructions de compaction personnalisées** : `/compact Focus on code samples and API usage` indique à Claude ce qu'il faut préserver lors de la résumé.

89 

90Vous pouvez également personnaliser le comportement de compaction dans votre CLAUDE.md :

91 

92```markdown theme={null}

93# Compact instructions

94 

95When you are using compact, please focus on test output and code changes

96```

97 

98### Choisir le bon modèle

99 

100Sonnet gère bien la plupart des tâches de codage et coûte moins cher qu'Opus. Réservez Opus pour les décisions architecturales complexes ou le raisonnement multi-étapes. Utilisez `/model` pour changer de modèle en cours de session, ou définissez une valeur par défaut dans `/config`. Pour les tâches simples de subagent, spécifiez `model: haiku` dans votre [configuration de subagent](/fr/sub-agents#choose-a-model).

101 

102### Réduire la surcharge des serveurs MCP

103 

104Les définitions d'outils MCP sont [reportées par défaut](/fr/mcp#scale-with-mcp-tool-search), donc seuls les noms d'outils entrent en contexte jusqu'à ce que Claude utilise un outil spécifique. Exécutez `/context` pour voir ce qui consomme de l'espace.

105 

106* **Préférez les outils CLI lorsqu'ils sont disponibles** : Les outils comme `gh`, `aws`, `gcloud` et `sentry-cli` sont plus efficaces en contexte que les serveurs MCP car ils n'ajoutent pas de liste d'outils par outil. Claude peut exécuter les commandes CLI directement.

107* **Désactiver les serveurs inutilisés** : Exécutez `/mcp` pour voir les serveurs configurés et désactiver ceux que vous n'utilisez pas activement.

108 

109### Installer des plugins d'intelligence de code pour les langages typés

110 

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

112 

113### Déléguer le traitement aux hooks et aux skills

114 

115Les [hooks](/fr/hooks) personnalisés peuvent prétraiter les données avant que Claude ne les voie. Au lieu que Claude lise un fichier journal de 10 000 lignes pour trouver les erreurs, un hook peut rechercher `ERROR` et retourner uniquement les lignes correspondantes, réduisant le contexte de dizaines de milliers de tokens à des centaines.

116 

117Une [skill](/fr/skills) peut donner à Claude des connaissances de domaine pour qu'il n'ait pas à explorer. Par exemple, une skill « codebase-overview » pourrait décrire l'architecture de votre projet, les répertoires clés et les conventions de nommage. Lorsque Claude invoque la skill, il obtient ce contexte immédiatement au lieu de dépenser des tokens pour lire plusieurs fichiers pour comprendre la structure.

118 

119Par exemple, ce hook PreToolUse filtre la sortie des tests pour afficher uniquement les échecs :

120 

121<Tabs>

122 <Tab title="settings.json">

123 Ajoutez ceci à votre [settings.json](/fr/settings#settings-files) pour exécuter le hook avant chaque commande Bash :

124 

125 ```json theme={null}

126 {

127 "hooks": {

128 "PreToolUse": [

129 {

130 "matcher": "Bash",

131 "hooks": [

132 {

133 "type": "command",

134 "command": "~/.claude/hooks/filter-test-output.sh"

135 }

136 ]

137 }

138 ]

139 }

140 }

141 ```

142 </Tab>

143 

144 <Tab title="filter-test-output.sh">

145 Le hook appelle ce script, qui vérifie si la commande est un exécuteur de test et la modifie pour afficher uniquement les échecs :

146 

147 ```bash theme={null}

148 #!/bin/bash

149 input=$(cat)

150 cmd=$(echo "$input" | jq -r '.tool_input.command')

151 

152 # If running tests, filter to show only failures

153 if [[ "$cmd" =~ ^(npm test|pytest|go test) ]]; then

154 filtered_cmd="$cmd 2>&1 | grep -A 5 -E '(FAIL|ERROR|error:)' | head -100"

155 echo "{\"hookSpecificOutput\":{\"hookEventName\":\"PreToolUse\",\"permissionDecision\":\"allow\",\"updatedInput\":{\"command\":\"$filtered_cmd\"}}}"

156 else

157 echo "{}"

158 fi

159 ```

160 </Tab>

161</Tabs>

162 

163### Déplacer les instructions de CLAUDE.md vers les skills

164 

165Votre fichier [CLAUDE.md](/fr/memory) est chargé en contexte au démarrage de la session. S'il contient des instructions détaillées pour des flux de travail spécifiques (comme les révisions de PR ou les migrations de base de données), ces tokens sont présents même lorsque vous faites un travail non lié. Les [skills](/fr/skills) se chargent à la demande uniquement lorsqu'elles sont invoquées, donc déplacer les instructions spécialisées dans les skills maintient votre contexte de base plus petit. Visez à garder CLAUDE.md en dessous de 200 lignes en incluant uniquement les éléments essentiels.

166 

167### Ajuster la réflexion étendue

168 

169La réflexion étendue est activée par défaut car elle améliore considérablement les performances sur les tâches complexes de planification et de raisonnement. Les tokens de réflexion sont facturés comme des tokens de sortie, et le budget par défaut peut être des dizaines de milliers de tokens par requête selon le modèle. Pour les tâches plus simples où un raisonnement approfondi n'est pas nécessaire, vous pouvez réduire les coûts en abaissant le [niveau d'effort](/fr/model-config#adjust-effort-level) avec `/effort` ou dans `/model`, en désactivant la réflexion dans `/config`, ou en abaissant le budget avec `MAX_THINKING_TOKENS=8000`.

170 

171### Déléguer les opérations détaillées aux subagents

172 

173L'exécution de tests, la récupération de documentation ou le traitement de fichiers journaux peuvent consommer un contexte important. Déléguez-les aux [subagents](/fr/sub-agents#isolate-high-volume-operations) pour que la sortie détaillée reste dans le contexte du subagent tandis que seul un résumé revient à votre conversation principale.

174 

175### Gérer les coûts des équipes d'agents

176 

177Les équipes d'agents utilisent environ 7 fois plus de tokens que les sessions standard lorsque les coéquipiers s'exécutent en mode plan, car chaque coéquipier maintient sa propre fenêtre de contexte et s'exécute en tant qu'instance Claude distincte. Gardez les tâches d'équipe petites et autonomes pour limiter l'utilisation des tokens par coéquipier. Voir [équipes d'agents](/fr/agent-teams) pour plus de détails.

178 

179### Écrire des invites spécifiques

180 

181Les demandes vagues comme « améliorer cette base de code » déclenchent une analyse large. Les demandes spécifiques comme « ajouter la validation des entrées à la fonction de connexion dans auth.ts » permettent à Claude de travailler efficacement avec des lectures de fichiers minimales.

182 

183### Travailler efficacement sur des tâches complexes

184 

185Pour un travail plus long ou plus complexe, ces habitudes aident à éviter les tokens gaspillés en prenant la mauvaise direction :

186 

187* **Utilisez le mode plan pour les tâches complexes** : Appuyez sur Maj+Tab pour entrer en [mode plan](/fr/common-workflows#use-plan-mode-for-safe-code-analysis) avant l'implémentation. Claude explore la base de code et propose une approche pour votre approbation, évitant les retouches coûteuses lorsque la direction initiale est mauvaise.

188* **Corriger la trajectoire tôt** : Si Claude commence à aller dans la mauvaise direction, appuyez sur Échap pour arrêter immédiatement. Utilisez `/rewind` ou appuyez deux fois sur Échap pour restaurer la conversation et le code à un point de contrôle précédent.

189* **Donner des cibles de vérification** : Incluez des cas de test, collez des captures d'écran ou définissez la sortie attendue dans votre invite. Lorsque Claude peut vérifier son propre travail, il détecte les problèmes avant que vous ayez besoin de demander des corrections.

190* **Tester de manière progressive** : Écrivez un fichier, testez-le, puis continuez. Cela détecte les problèmes tôt lorsqu'ils sont bon marché à corriger.

191 

192## Utilisation des tokens en arrière-plan

193 

194Claude Code utilise des tokens pour certaines fonctionnalités en arrière-plan même lorsqu'il est inactif :

195 

196* **Résumé des conversations** : Les tâches en arrière-plan qui résument les conversations précédentes pour la fonctionnalité `claude --resume`

197* **Traitement des commandes** : Certaines commandes comme `/usage` peuvent générer des requêtes pour vérifier l'état

198 

199Ces processus en arrière-plan consomment une petite quantité de tokens (généralement moins de 0,04 \$ par session) même sans interaction active.

200 

201## Comprendre les changements dans le comportement de Claude Code

202 

203Claude Code reçoit régulièrement des mises à jour qui peuvent modifier le fonctionnement des fonctionnalités, y compris la génération de rapports de coûts. Exécutez `claude --version` pour vérifier votre version actuelle. Pour des questions de facturation spécifiques, contactez le support Anthropic via votre [compte Console](https://platform.claude.com/login).

data-usage.md +124 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Utilisation des données

6 

7> Découvrez les politiques d'utilisation des données d'Anthropic pour Claude

8 

9## Politiques de données

10 

11### Politique de formation aux données

12 

13**Utilisateurs grand public (plans Free, Pro et Max)** :

14Nous vous donnons le choix de permettre à vos données d'être utilisées pour améliorer les futurs modèles Claude. Nous formerons de nouveaux modèles en utilisant les données des comptes Free, Pro et Max lorsque ce paramètre est activé (y compris lorsque vous utilisez Claude Code à partir de ces comptes).

15 

16**Utilisateurs commerciaux** : (plans Team et Enterprise, API, plateformes tierces et Claude Gov) maintiennent les politiques existantes : Anthropic ne forme pas de modèles génératifs en utilisant le code ou les invites envoyés à Claude Code selon les conditions commerciales, sauf si le client a choisi de nous fournir ses données pour l'amélioration du modèle (par exemple, le [Programme de partenariat pour développeurs](https://support.claude.com/en/articles/11174108-about-the-development-partner-program)).

17 

18### Programme de partenariat pour développeurs

19 

20Si vous acceptez explicitement les méthodes pour nous fournir des matériaux à utiliser pour la formation, comme via le [Programme de partenariat pour développeurs](https://support.claude.com/en/articles/11174108-about-the-development-partner-program), nous pouvons utiliser ces matériaux fournis pour former nos modèles. Un administrateur d'organisation peut accepter explicitement le Programme de partenariat pour développeurs pour son organisation. Notez que ce programme est disponible uniquement pour l'API Anthropic propriétaire, et non pour les utilisateurs de Bedrock ou Vertex.

21 

22### Retours d'information à l'aide de la commande `/feedback`

23 

24Si vous choisissez de nous envoyer des retours d'information sur Claude Code à l'aide de la commande `/feedback`, nous pouvons utiliser vos retours d'information pour améliorer nos produits et services. Les transcriptions partagées via `/feedback` sont conservées pendant 5 ans.

25 

26### Sondages de qualité de session

27 

28Lorsque vous voyez l'invite « Comment Claude s'en sort-il cette session ? » dans Claude Code, répondre à ce sondage, y compris en sélectionnant « Ignorer », enregistre uniquement votre note. Nous ne collectons ni ne stockons de transcriptions de conversation, d'entrées, de sorties ou d'autres données de session dans le cadre de l'invite de notation elle-même. Contrairement aux retours d'information avec pouces vers le haut/bas ou aux rapports `/feedback`, ce sondage de qualité de session est une simple métrique de satisfaction du produit.

29 

30Après l'invite de notation, vous pouvez voir une question de suivi distincte demandant « Anthropic peut-il consulter votre transcription de session pour nous aider à améliorer Claude Code ? ». Ceci est une deuxième étape optionnelle distincte de la notation :

31 

32* **Oui** : télécharge votre transcription de conversation, toute transcription de sous-agent et le fichier journal de session brut du disque vers Anthropic. Les modèles de clé API et de jeton connus sont masqués avant le téléchargement. Le code source, le contenu des fichiers et tout autre contenu de conversation sont téléchargés tels quels. Les transcriptions partagées sont conservées jusqu'à 6 mois.

33* **Non** : refuse sans rien envoyer

34* **Ne plus demander** : refuse et arrête cette question de suivi d'apparaître dans les futures sessions

35 

36Rien n'est téléchargé à moins que vous ne sélectionniez explicitement **Oui**. Les organisations avec [conservation zéro des données](/fr/zero-data-retention), ou où les retours d'information sur les produits sont désactivés par la politique de l'organisation, ne voient jamais cette question de suivi. Vos réponses à ce sondage, y compris les transcriptions de session soumises après l'invite de notation, n'affectent pas vos préférences de formation aux données et ne peuvent pas être utilisées pour former nos modèles d'IA.

37 

38Pour désactiver ces sondages, définissez `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1`. Le sondage est également désactivé lorsque `DISABLE_TELEMETRY` ou `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` est défini. Pour contrôler la fréquence au lieu de désactiver, définissez [`feedbackSurveyRate`](/fr/settings#available-settings) dans votre fichier de paramètres sur une probabilité entre `0` et `1`.

39 

40### Conservation des données

41 

42Anthropic conserve les données de Claude Code en fonction de votre type de compte et de vos préférences.

43 

44**Utilisateurs grand public (plans Free, Pro et Max)** :

45 

46* Utilisateurs qui autorisent l'utilisation des données pour l'amélioration du modèle : période de conservation de 5 ans pour soutenir le développement et les améliorations de sécurité du modèle

47* Utilisateurs qui n'autorisent pas l'utilisation des données pour l'amélioration du modèle : période de conservation de 30 jours

48* Les paramètres de confidentialité peuvent être modifiés à tout moment sur [claude.ai/settings/data-privacy-controls](https://claude.ai/settings/data-privacy-controls).

49 

50**Utilisateurs commerciaux (Team, Enterprise et API)** :

51 

52* Standard : période de conservation de 30 jours

53* [Conservation zéro des données](/fr/zero-data-retention) : disponible pour Claude Code sur Claude for Enterprise. La conservation zéro des données est activée par organisation ; chaque nouvelle organisation doit avoir la conservation zéro des données activée séparément par votre équipe de compte

54* Mise en cache locale : les clients Claude Code stockent les transcriptions de session localement en texte brut sous `~/.claude/projects/` pendant 30 jours par défaut pour permettre la reprise de session. Ajustez la période avec `cleanupPeriodDays`. Consultez [données d'application](/fr/claude-directory#application-data) pour savoir ce qui est stocké et comment l'effacer.

55 

56Vous pouvez supprimer les sessions individuelles de Claude Code sur le web à tout moment. La suppression d'une session supprime définitivement les données d'événement de la session. Pour obtenir des instructions sur la suppression des sessions, consultez [Supprimer les sessions](/fr/claude-code-on-the-web#delete-sessions).

57 

58Découvrez-en plus sur les pratiques de conservation des données dans notre [Centre de confidentialité](https://privacy.anthropic.com/).

59 

60Pour plus de détails, veuillez consulter nos [Conditions commerciales](https://www.anthropic.com/legal/commercial-terms) (pour les utilisateurs Team, Enterprise et API) ou [Conditions grand public](https://www.anthropic.com/legal/consumer-terms) (pour les utilisateurs Free, Pro et Max) et [Politique de confidentialité](https://www.anthropic.com/legal/privacy).

61 

62## Accès aux données

63 

64Pour tous les utilisateurs propriétaires, vous pouvez en savoir plus sur les données enregistrées pour [Claude Code local](#local-claude-code-data-flow-and-dependencies) et [Claude Code distant](#cloud-execution-data-flow-and-dependencies). Les sessions [Contrôle distant](/fr/remote-control) suivent le flux de données local puisque toute l'exécution se fait sur votre machine. Notez que pour Claude Code distant, Claude accède au référentiel où vous lancez votre session Claude Code. Claude n'accède pas aux référentiels que vous avez connectés mais dans lesquels vous n'avez pas lancé de session.

65 

66## Claude Code local : flux de données et dépendances

67 

68Le diagramme ci-dessous montre comment Claude Code se connecte aux services externes lors de l'installation et du fonctionnement normal. Les lignes pleines indiquent les connexions requises, tandis que les lignes pointillées représentent les flux de données optionnels ou initiés par l'utilisateur.

69 

70<img src="https://mintcdn.com/claude-code/YcBW2H7CArGcduPb/images/claude-code-data-flow.svg?fit=max&auto=format&n=YcBW2H7CArGcduPb&q=85&s=b600a89f84fc86f9ff7be00a466c0635" alt="Diagramme montrant les connexions externes de Claude Code : l'installation/mise à jour se connecte au serveur de distribution, et les demandes des utilisateurs se connectent aux services Anthropic, y compris l'authentification Console, l'API publique, et optionnellement Statsig, Sentry et les rapports de bogues" width="720" height="520" data-path="images/claude-code-data-flow.svg" />

71 

72Claude Code s'exécute localement. Pour interagir avec le LLM, Claude Code envoie des données sur le réseau. Ces données incluent tous les invites utilisateur et les sorties du modèle, chiffrées en transit via TLS 1.2+. Claude Code est compatible avec la plupart des VPN et proxies LLM populaires.

73 

74Le chiffrement au repos dépend de votre fournisseur de modèle :

75 

76| Fournisseur | Chiffrement au repos |

77| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |

78| Anthropic API | Chiffrement des disques au niveau de l'infrastructure (AES-256). Activez [Zero Data Retention](/fr/zero-data-retention) pour aucune persistance côté serveur. |

79| Amazon Bedrock | AES-256 avec clés gérées par AWS. Clés gérées par le client disponibles via AWS KMS. |

80| Google Cloud Vertex AI | Clés de chiffrement gérées par Google. CMEK disponible. |

81| Microsoft Foundry | Les demandes sont acheminées vers l'infrastructure Anthropic avec chiffrement des disques AES-256. |

82 

83Claude Code est construit sur les API d'Anthropic. Pour plus de détails concernant les contrôles de sécurité de l'API, y compris les procédures de journalisation des API, consultez les artefacts de conformité dans le [Centre de confiance Anthropic](https://trust.anthropic.com).

84 

85### Exécution cloud : flux de données et dépendances

86 

87Lors de l'utilisation de [Claude Code sur le web](/fr/claude-code-on-the-web), les sessions s'exécutent dans des machines virtuelles gérées par Anthropic au lieu de s'exécuter localement. Dans les environnements cloud :

88 

89* **Stockage du code et des données :** Votre référentiel est cloné sur une VM isolée. Le code et les données de session sont soumis aux politiques de conservation et d'utilisation pour votre type de compte (voir la section Conservation des données ci-dessus)

90* **Identifiants :** L'authentification GitHub est gérée via un proxy sécurisé ; vos identifiants GitHub n'entrent jamais dans le bac à sable

91* **Trafic réseau :** Tout le trafic sortant passe par un proxy de sécurité pour la journalisation d'audit et la prévention des abus

92* **Données de session :** Les invites, les modifications de code et les sorties suivent les mêmes politiques de données que l'utilisation locale de Claude Code

93 

94Pour plus de détails sur la sécurité de l'exécution cloud, consultez [Sécurité](/fr/security#cloud-execution-security).

95 

96## Services de télémétrie

97 

98Claude Code se connecte à partir des machines des utilisateurs au service Statsig pour enregistrer les métriques opérationnelles telles que la latence, la fiabilité et les modèles d'utilisation. Cet enregistrement n'inclut aucun code ni chemin de fichier. Les données sont chiffrées en transit à l'aide de TLS et au repos à l'aide du chiffrement AES 256 bits. Lisez-en plus dans la [documentation de sécurité Statsig](https://www.statsig.com/trust/security). Pour refuser la télémétrie Statsig, définissez la variable d'environnement `DISABLE_TELEMETRY`.

99 

100Claude Code se connecte à partir des machines des utilisateurs à Sentry pour la journalisation des erreurs opérationnelles. Les données sont chiffrées en transit à l'aide de TLS et au repos à l'aide du chiffrement AES 256 bits. Lisez-en plus dans la [documentation de sécurité Sentry](https://sentry.io/security/). Pour refuser la journalisation des erreurs, définissez la variable d'environnement `DISABLE_ERROR_REPORTING`.

101 

102Lorsque les utilisateurs exécutent la commande `/feedback`, une copie de leur historique de conversation complet, y compris le code, est envoyée à Anthropic. Les données sont chiffrées en transit à l'aide de TLS. Optionnellement, un problème GitHub est créé dans le référentiel public. Pour refuser, définissez la variable d'environnement `DISABLE_FEEDBACK_COMMAND` sur `1`.

103 

104## Comportements par défaut par fournisseur d'API

105 

106Par défaut, les rapports d'erreurs, la télémétrie et les rapports de bogues sont désactivés lors de l'utilisation de Bedrock, Vertex ou Foundry. Les sondages de qualité de session et la vérification de sécurité du domaine WebFetch font exception et s'exécutent quel que soit le fournisseur. Vous pouvez refuser tout le trafic non essentiel, y compris les sondages, à la fois en définissant `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`. Cette variable n'affecte pas la vérification WebFetch, qui a sa propre option de refus. Voici les comportements par défaut complets :

107 

108| Service | Claude API | Vertex API | Bedrock API | Foundry API |

109| ------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ |

110| **Statsig (Métriques)** | Activé par défaut.<br />`DISABLE_TELEMETRY=1` pour désactiver. | Désactivé par défaut.<br />`CLAUDE_CODE_USE_VERTEX` doit être 1. | Désactivé par défaut.<br />`CLAUDE_CODE_USE_BEDROCK` doit être 1. | Désactivé par défaut.<br />`CLAUDE_CODE_USE_FOUNDRY` doit être 1. |

111| **Sentry (Erreurs)** | Activé par défaut.<br />`DISABLE_ERROR_REPORTING=1` pour désactiver. | Désactivé par défaut.<br />`CLAUDE_CODE_USE_VERTEX` doit être 1. | Désactivé par défaut.<br />`CLAUDE_CODE_USE_BEDROCK` doit être 1. | Désactivé par défaut.<br />`CLAUDE_CODE_USE_FOUNDRY` doit être 1. |

112| **Claude API (rapports `/feedback`)** | Activé par défaut.<br />`DISABLE_FEEDBACK_COMMAND=1` pour désactiver. | Désactivé par défaut.<br />`CLAUDE_CODE_USE_VERTEX` doit être 1. | Désactivé par défaut.<br />`CLAUDE_CODE_USE_BEDROCK` doit être 1. | Désactivé par défaut.<br />`CLAUDE_CODE_USE_FOUNDRY` doit être 1. |

113| **Sondages de qualité de session** | Activé par défaut.<br />`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1` pour désactiver. | Activé par défaut.<br />`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1` pour désactiver. | Activé par défaut.<br />`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1` pour désactiver. | Activé par défaut.<br />`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1` pour désactiver. |

114| **Vérification de sécurité du domaine WebFetch** | Activé par défaut.<br />`skipWebFetchPreflight: true` dans [paramètres](/fr/settings) pour désactiver. | Activé par défaut.<br />`skipWebFetchPreflight: true` dans [paramètres](/fr/settings) pour désactiver. | Activé par défaut.<br />`skipWebFetchPreflight: true` dans [paramètres](/fr/settings) pour désactiver. | Activé par défaut.<br />`skipWebFetchPreflight: true` dans [paramètres](/fr/settings) pour désactiver. |

115 

116Toutes les variables d'environnement peuvent être vérifiées dans `settings.json` (voir [référence des paramètres](/fr/settings)).

117 

118À partir de la v2.1.126, lorsqu'une plateforme hôte définit `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`, les métriques Statsig sont activées par défaut pour Vertex, Bedrock et Foundry, et suivent l'option de refus standard `DISABLE_TELEMETRY`. Les rapports d'erreurs Sentry et les rapports `/feedback` restent désactivés par défaut sur ces fournisseurs.

119 

120### Vérification de sécurité du domaine WebFetch

121 

122Avant de récupérer une URL, l'outil WebFetch envoie le nom d'hôte demandé à `api.anthropic.com` pour le vérifier par rapport à une liste de blocage de sécurité maintenue par Anthropic. Seul le nom d'hôte est envoyé, pas l'URL complète, le chemin ou le contenu de la page. Les résultats sont mis en cache par nom d'hôte pendant cinq minutes.

123 

124Cette vérification s'exécute quel que soit le fournisseur de modèle que vous utilisez et n'est pas affectée par `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`. Si votre réseau bloque `api.anthropic.com`, les demandes WebFetch échouent jusqu'à ce que vous autorisiez le domaine ou définissiez `skipWebFetchPreflight: true` dans [paramètres](/fr/settings). La désactivation de la vérification signifie que WebFetch tente de récupérer n'importe quelle URL sans consulter la liste de blocage, donc combinez-la avec les [règles de permission `WebFetch`](/fr/permissions#webfetch) si vous devez restreindre les domaines que Claude peut atteindre.

debug-your-config.md +97 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Déboguer votre configuration

6 

7> Diagnostiquez pourquoi CLAUDE.md, les paramètres, les hooks, les serveurs MCP ou les skills ne prennent pas effet. Utilisez /context, /doctor, /hooks et /mcp pour voir ce qui a réellement été chargé.

8 

9Quand Claude ignore une instruction ou qu'une fonctionnalité que vous avez configurée n'apparaît pas, la cause est généralement que le fichier n'a pas été chargé, qu'il a été chargé depuis un emplacement différent de celui que vous attendiez, ou qu'un autre fichier l'a remplacé. Ce guide montre comment inspecter ce que Claude Code a réellement chargé afin que vous puissiez déterminer lequel de ces cas s'applique.

10 

11Pour les problèmes d'installation, d'authentification et de connectivité, consultez plutôt [Troubleshooting](/fr/troubleshoot-install) à la place.

12 

13## Voir ce qui a été chargé dans le contexte

14 

15La commande `/context` affiche tout ce qui occupe la fenêtre de contexte pour la session actuelle, ventilé par catégorie : invite système, fichiers de mémoire, skills, outils MCP et messages de conversation. Exécutez-la d'abord pour confirmer si vos fichiers `CLAUDE.md`, règles ou descriptions de skills sont présents.

16 

17Pour plus de détails sur une catégorie spécifique, suivez avec la commande dédiée :

18 

19| Commande | Affiche |

20| :------------- | :-------------------------------------------------------------------------------------------- |

21| `/memory` | Quels fichiers `CLAUDE.md` et règles ont été chargés, plus les entrées de mémoire automatique |

22| `/skills` | Les skills disponibles provenant des sources de projet, utilisateur et plugin |

23| `/agents` | Les sous-agents configurés et leurs paramètres |

24| `/hooks` | Les configurations de hooks actives |

25| `/mcp` | Les serveurs MCP connectés et leur statut |

26| `/permissions` | Les règles d'autorisation et de refus résolues actuellement en vigueur |

27| `/doctor` | Diagnostics de configuration : clés invalides, erreurs de schéma, santé de l'installation |

28| `/status` | Les sources de paramètres actives, y compris si les paramètres gérés sont en vigueur |

29 

30Si un fichier de mémoire est absent de `/memory`, vérifiez son emplacement par rapport à [comment les fichiers CLAUDE.md se chargent](/fr/memory#how-claude-md-files-load). Les fichiers `CLAUDE.md` des sous-répertoires se chargent à la demande quand Claude lit un fichier dans ce répertoire avec l'outil Read, pas au démarrage de la session.

31 

32Si `/memory` confirme que le fichier a été chargé mais que Claude ne suit toujours pas une instruction particulière, le problème est probablement la façon dont l'instruction est écrite plutôt que si elle a été chargée. CLAUDE.md fonctionne bien pour le type de conseils que vous donneriez à un nouveau coéquipier, comme les conventions de projet, les commandes de compilation et l'emplacement des fichiers.

33 

34L'adhérence diminue quand une instruction est assez vague pour être interprétée de plusieurs façons, quand deux fichiers donnent des directives conflictuelles, ou quand le fichier est devenu assez long pour que les règles individuelles reçoivent moins d'attention. [Écrire des instructions efficaces](/fr/memory#write-effective-instructions) couvre les modèles de spécificité, de taille et de structure qui maintiennent l'adhérence élevée.

35 

36<Note>

37 CLAUDE.md et les permissions résolvent des problèmes différents. CLAUDE.md dit à Claude comment fonctionne votre projet afin qu'il prenne de bonnes décisions. [Permissions](/fr/permissions) et [hooks](/fr/hooks) appliquent des limites indépendamment de ce que Claude décide. Utilisez CLAUDE.md pour « nous le faisons de cette façon ici ». Utilisez les permissions ou les hooks pour les limites de sécurité et tout ce qui ne doit jamais se produire, où vous avez besoin d'une garantie plutôt que de conseils.

38</Note>

39 

40## Vérifier les paramètres résolus

41 

42Les paramètres fusionnent entre les portées gérées, utilisateur, projet et locale. Les paramètres gérés gagnent toujours quand ils sont présents. Parmi le reste, la portée plus proche remplace la plus large dans l'ordre local, puis projet, puis utilisateur. Certains paramètres peuvent également être définis par des drapeaux de ligne de commande ou des [variables d'environnement](/fr/env-vars), qui agissent comme une autre couche de remplacement. Quand un paramètre ne semble pas s'appliquer, la valeur que vous avez définie est généralement remplacée par une autre portée ou une variable d'environnement.

43 

44Exécutez `/doctor` pour valider vos fichiers de configuration et mettre en évidence les clés invalides ou les erreurs de schéma. Exécutez `/status` pour voir quelles sources de paramètres sont actives, y compris si les paramètres gérés sont en vigueur. Pour comprendre quelle portée gagne pour une clé donnée, consultez [Comment les portées interagissent](/fr/settings#how-scopes-interact).

45 

46## Vérifier les serveurs MCP

47 

48Exécutez `/mcp` pour voir chaque serveur configuré, son statut de connexion et si vous l'avez approuvé pour le projet actuel. Un serveur peut être défini correctement mais ne pas fournir d'outils pour quelques raisons courantes :

49 

50* Les serveurs à portée de projet dans `.mcp.json` nécessitent une approbation unique. Si l'invite a été rejetée, le serveur reste désactivé jusqu'à ce que vous l'approuviez depuis `/mcp`.

51* Un serveur qui échoue au démarrage s'affiche comme échoué dans `/mcp`. Les chemins de fichiers relatifs dans `command` ou `args` sont une cause fréquente, car ils se résolvent par rapport au répertoire à partir duquel vous avez lancé Claude Code plutôt qu'à l'emplacement de `.mcp.json`.

52* Un serveur qui s'affiche comme connecté mais qui liste zéro outils a démarré avec succès mais ne retourne pas de liste d'outils. Sélectionnez **Reconnect** depuis `/mcp`. Si le nombre reste à zéro, exécutez `claude --debug mcp` pour voir la sortie stderr du serveur.

53 

54Pour les emplacements de configuration et les règles de portée, consultez [MCP](/fr/mcp).

55 

56## Vérifier les hooks

57 

58Exécutez `/hooks` pour lister chaque hook enregistré pour la session actuelle, groupé par événement. Si un hook que vous avez défini n'apparaît pas, il n'est pas en cours de lecture : les hooks vont sous la clé `"hooks"` dans un fichier de paramètres, pas dans un fichier autonome.

59 

60Si le hook apparaît mais ne se déclenche pas, le matcher est la cause habituelle. Le champ `matcher` est une chaîne unique qui utilise `|` pour correspondre à plusieurs noms d'outils, par exemple `"Edit|Write"`. Un nom d'outil mal orthographié échoue silencieusement car le matcher ne correspond jamais. Une valeur de tableau est une erreur de schéma : Claude Code affiche un avis d'erreur de paramètres, `/doctor` signale l'échec de validation et l'entrée du hook est supprimée afin qu'elle n'apparaisse pas dans `/hooks`.

61 

62Les modifications apportées à `settings.json` prennent effet dans la session en cours après un bref délai de stabilité du fichier. Vous n'avez pas besoin de redémarrer. Si `/hooks` affiche toujours l'ancienne définition quelques secondes après l'enregistrement, exécutez `/hooks` à nouveau pour actualiser la vue.

63 

64Si `/hooks` affiche le hook mais qu'il ne se déclenche toujours pas, l'étape suivante consiste à regarder l'évaluation du hook en direct. Démarrez une session avec `claude --debug hooks` et déclenchez l'appel d'outil. Le journal de débogage enregistre chaque événement, quels matchers ont été vérifiés et le code de sortie et la sortie du hook. Consultez [Debug hooks](/fr/hooks#debug-hooks) pour le format du journal et [hooks troubleshooting](/fr/hooks-guide#limitations-and-troubleshooting) pour les modèles d'échec courants.

65 

66## Causes courantes

67 

68La plupart des surprises de configuration remontent à un petit ensemble de règles d'emplacement et de syntaxe. Vérifiez-les avant de supposer un bogue :

69 

70| Symptôme | Cause | Correction |

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

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

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

74| Le hook ne se déclenche jamais | Les hooks sont dans un fichier `.claude/hooks.json` autonome | Il n'y a pas de fichier hooks autonome. Définissez les hooks sous la clé `"hooks"` dans `settings.json`. Consultez [hook configuration](/fr/hooks). |

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

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

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

78| Le skill apparaît dans `/skills` mais Claude ne l'invoque jamais | Le skill a `disable-model-invocation: true` dans son frontmatter, ou sa description ne correspond pas à la façon dont vous formulez la demande | Vérifiez le badge dans `/skills` : un label « user-only » signifie que Claude ne le déclenchera pas de lui-même. Consultez [skill invocation](/fr/skills). |

79| Les instructions du sous-répertoire `CLAUDE.md` semblent ignorées | Les fichiers du sous-répertoire se chargent à la demande, pas au démarrage de la session | Ils se chargent quand Claude lit un fichier dans ce répertoire avec l'outil Read, pas au lancement et pas lors de l'écriture ou de la création de fichiers là-bas. Consultez [how CLAUDE.md files load](/fr/memory#how-claude-md-files-load). |

80| Le sous-agent ignore les instructions `CLAUDE.md` | Les sous-agents n'héritent pas toujours de la mémoire du projet | Mettez les règles critiques dans le corps du fichier agent, qui devient l'invite système du sous-agent. Consultez [subagent configuration](/fr/sub-agents). |

81| La logique de nettoyage ne s'exécute jamais à la fin de la session | Aucun hook `SessionEnd` configuré | Ajoutez un hook `SessionEnd` dans `settings.json`. Consultez la [hook events list](/fr/hooks#hook-events). |

82| Les serveurs MCP dans `.mcp.json` ne se chargent jamais | Le fichier est sous `.claude/` ou utilise le format de configuration de Claude Desktop | La configuration MCP du projet va à la racine du référentiel sous `.mcp.json`, pas à l'intérieur de `.claude/`. Consultez [MCP configuration](/fr/mcp). |

83| Le serveur MCP du projet ajouté n'apparaît pas | L'invite d'approbation unique a été rejetée | Les serveurs à portée de projet nécessitent une approbation. Exécutez `/mcp` pour voir le statut et approuver. |

84| Le serveur MCP échoue au démarrage depuis certains répertoires | `command` ou `args` utilise un chemin de fichier relatif | Utilisez des chemins absolus pour les scripts locaux. Les exécutables sur votre `PATH` comme `npx` ou `uvx` fonctionnent tels quels. |

85| Le serveur MCP démarre sans les variables d'environnement attendues | Les variables sont dans `settings.json` `env`, qui ne se propage pas aux processus enfants MCP | Définissez plutôt `env` par serveur à l'intérieur de `.mcp.json`. |

86| La règle de refus `Bash(rm *)` ne bloque pas `/bin/rm` ou `find -delete` | Les règles de préfixe correspondent à la chaîne de commande littérale, pas à l'exécutable sous-jacent | Ajoutez des modèles explicites pour chaque variante, ou utilisez un [PreToolUse hook](/fr/hooks-guide) ou le [sandbox](/fr/sandboxing) pour une garantie difficile. |

87 

88## Ressources connexes

89 

90Pour la référence complète sur chaque surface de configuration, consultez la page dédiée :

91 

92* **[Référence du répertoire `.claude`](/fr/claude-directory)** : chaque emplacement de fichier de configuration et ce qui le lit

93* **[Paramètres](/fr/settings)** : ordre de précédence et liste complète des clés

94* **[Référence des hooks](/fr/hooks)** : noms d'événements, charges utiles et format de sortie `--debug hooks`

95* **[MCP](/fr/mcp)** : configuration du serveur, approbation et sortie `/mcp`

96* **[Dépannage de l'installation et de la connexion](/fr/troubleshoot-install)** : `command not found`, PATH et problèmes d'authentification

97* **[Dépannage](/fr/troubleshooting)** : performance, blocages et problèmes de recherche

desktop.md +761 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Utiliser Claude Code Desktop

6 

7> Tirez le meilleur parti de Claude Code Desktop : sessions parallèles avec isolation Git, disposition des volets par glisser-déposer, terminal intégré et éditeur de fichiers, chats latéraux, utilisation informatique, sessions Dispatch depuis votre téléphone, examen visuel des différences, aperçus d'applications, surveillance des PR, connecteurs et configuration d'entreprise.

8 

9L'application Claude Desktop a trois onglets : **Chat** pour les conversations, **Cowork** pour [Dispatch et les travaux agentiques plus longs](https://claude.com/product/cowork), et **Code** pour le développement logiciel. Cette page est la référence pour l'onglet Code.

10 

11<CardGroup cols={2}>

12 <Card title="Download for macOS" icon="apple" href="https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code&utm_medium=docs">

13 Universal build for Intel and Apple Silicon

14 </Card>

15 

16 <Card title="Download for Windows" icon="windows" href="https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code&utm_medium=docs">

17 For x64 processors

18 </Card>

19</CardGroup>

20 

21For Windows ARM64, download the [ARM64 installer](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). The desktop app is not available on Linux; use the [CLI](/en/quickstart) instead.

22 

23Après l'installation, lancez Claude, connectez-vous et cliquez sur l'onglet **Code**. La première fois que vous l'ouvrez sur Windows, vous devez avoir [Git for Windows](https://git-scm.com/downloads/win) installé ; redémarrez l'application après l'installation. Pour une présentation de votre première session, consultez le [guide Démarrer](/fr/desktop-quickstart).

24 

25Dans l'onglet Code, chaque conversation est une **session** : elle a son propre historique de chat, dossier de projet et modifications de code, indépendants de toute autre session. La barre latérale répertorie vos sessions et vous permet d'en exécuter plusieurs en parallèle. Au sein d'une session, vous pouvez :

26 

27* [Examiner et commenter les différences](#review-changes-with-diff-view), puis [surveiller la PR résultante via CI](#monitor-pull-request-status)

28* [Prévisualiser votre application en cours d'exécution](#preview-your-app) dans un navigateur intégré tandis que Claude vérifie ses propres modifications

29* [Arranger les volets](#arrange-your-workspace) pour le chat, la différence, l'aperçu, le terminal et l'éditeur de fichiers côte à côte

30* Poser une [question latérale](#ask-a-side-question-without-derailing-the-session) qui utilise le contexte de la session sans la dérailler

31* [Connecter des outils externes](#connect-external-tools) comme GitHub, Slack et Linear

32* Laisser Claude [ouvrir des applications et contrôler votre écran](#let-claude-use-your-computer)

33* Exécuter sur votre machine, dans le [cloud](#run-long-running-tasks-remotely), ou via [SSH](#ssh-sessions)

34 

35Pour [les travaux récurrents planifiés](/fr/desktop-scheduled-tasks), [les raccourcis clavier](#keyboard-shortcuts), ou [l'envoi de tâches depuis votre téléphone](#sessions-from-dispatch), consultez les pages et sections liées. Si vous utilisez déjà le CLI basé sur le terminal, consultez la [comparaison CLI](#coming-from-the-cli) pour voir ce qui est transféré.

36 

37## Démarrer une session

38 

39Avant d'envoyer votre premier message, configurez quatre choses dans la zone de prompt :

40 

41* **Environnement** : choisissez où Claude s'exécute. Sélectionnez **Local** pour votre machine, **Remote** pour les sessions cloud hébergées par Anthropic, ou une [**connexion SSH**](#ssh-sessions) pour une machine distante que vous gérez. Voir [configuration de l'environnement](#environment-configuration).

42* **Dossier du projet** : sélectionnez le dossier ou le référentiel dans lequel Claude travaille. Pour les sessions distantes, vous pouvez ajouter [plusieurs référentiels](#run-long-running-tasks-remotely).

43* **Modèle** : choisissez un [modèle](/fr/model-config#available-models) dans la liste déroulante à côté du bouton d'envoi. Vous pouvez modifier ceci pendant la session.

44* **Mode de permission** : choisissez le niveau d'autonomie de Claude à partir du [sélecteur de mode](#choose-a-permission-mode). Vous pouvez modifier ceci pendant la session.

45 

46Tapez votre tâche et appuyez sur **Entrée** pour démarrer. Chaque session suit son propre contexte et les modifications indépendamment.

47 

48## Travailler avec le code

49 

50Donnez à Claude le bon contexte, contrôlez le volume de travail qu'il effectue seul et examinez ce qu'il a modifié.

51 

52### Utiliser la zone de prompt

53 

54Tapez ce que vous voulez que Claude fasse et appuyez sur **Entrée** pour envoyer. Claude lit vos fichiers de projet, effectue des modifications et exécute des commandes en fonction de votre [mode de permission](#choose-a-permission-mode). Vous pouvez interrompre Claude à tout moment : cliquez sur le bouton d'arrêt ou tapez votre correction et appuyez sur **Entrée**. Claude arrête ce qu'il fait et s'ajuste en fonction de votre entrée.

55 

56Le bouton **+** à côté de la zone de prompt vous donne accès aux pièces jointes de fichiers, [skills](#use-skills), [connecteurs](#connect-external-tools) et [plugins](#install-plugins).

57 

58### Ajouter des fichiers et du contexte aux prompts

59 

60La zone de prompt supporte deux façons d'apporter du contexte externe :

61 

62* **Fichiers @mention** : tapez `@` suivi d'un nom de fichier pour ajouter un fichier au contexte de la conversation. Claude peut alors lire et référencer ce fichier. @mention n'est pas disponible dans les sessions distantes.

63* **Joindre des fichiers** : joignez des images, des PDF et d'autres fichiers à votre prompt en utilisant le bouton de pièce jointe, ou glissez-déposez les fichiers directement dans le prompt. Ceci est utile pour partager des captures d'écran de bugs, des maquettes de conception ou des documents de référence.

64 

65### Choisir un mode de permission

66 

67Les modes de permission contrôlent le niveau d'autonomie de Claude pendant une session : s'il demande avant de modifier des fichiers, d'exécuter des commandes ou les deux. Vous pouvez changer de mode à tout moment en utilisant le sélecteur de mode à côté du bouton d'envoi. Commencez par Demander les permissions pour voir exactement ce que Claude fait, puis passez à Accepter automatiquement les modifications ou Plan mode à mesure que vous vous sentez à l'aise.

68 

69| Mode | Clé de paramètres | Comportement |

70| ---------------------------------------------- | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

71| **Demander les permissions** | `default` | Claude demande avant de modifier des fichiers ou d'exécuter des commandes. Vous voyez une différence et pouvez accepter ou rejeter chaque modification. Recommandé pour les nouveaux utilisateurs. |

72| **Accepter automatiquement les modifications** | `acceptEdits` | Claude accepte automatiquement les modifications de fichiers et les commandes courantes du système de fichiers comme `mkdir`, `touch` et `mv`, mais demande toujours avant d'exécuter les autres commandes du terminal. Utilisez ceci quand vous faites confiance aux modifications de fichiers et voulez une itération plus rapide. |

73| **Plan mode** | `plan` | Claude lit les fichiers et exécute les commandes pour explorer, puis propose un plan sans modifier votre code source. Bon pour les tâches complexes où vous voulez examiner l'approche en premier. |

74| **Auto** | `auto` | Claude exécute toutes les actions avec des vérifications de sécurité en arrière-plan qui vérifient l'alignement avec votre demande. Réduit les invites de permission tout en maintenant la surveillance. Actuellement un aperçu de recherche. Disponible sur les plans Max, Team, Enterprise et API. Nécessite Claude Sonnet 4.6, Opus 4.6 ou Opus 4.7 sur les plans Team, Enterprise et API ; Claude Opus 4.7 uniquement sur les plans Max. Non disponible sur les plans Pro ou les fournisseurs tiers. Activez dans vos Paramètres → Claude Code. |

75| **Contourner les permissions** | `bypassPermissions` | Claude s'exécute sans aucune invite de permission, équivalent à `--dangerously-skip-permissions` dans la CLI. Activez dans vos Paramètres → Claude Code sous « Autoriser le mode de contournement des permissions ». Utilisez uniquement dans les conteneurs sandboxés ou les machines virtuelles. Les administrateurs d'entreprise peuvent désactiver cette option. |

76 

77Le mode de permission `dontAsk` est disponible uniquement dans la [CLI](/fr/permission-modes#allow-only-pre-approved-tools-with-dontask-mode).

78 

79<span id="auto-mode-availability" />

80 

81Auto mode est un aperçu de recherche disponible sur les plans Max, Team, Enterprise et API. Il n'est pas disponible sur les plans Pro ou les fournisseurs tiers. Sur les plans Team, Enterprise et API, il nécessite Claude Sonnet 4.6, Opus 4.6 ou Opus 4.7. Sur les plans Max, il nécessite Claude Opus 4.7.

82 

83<Tip title="Bonne pratique">

84 Commencez les tâches complexes en Plan mode pour que Claude trace une approche avant de faire des modifications. Une fois que vous approuvez le plan, passez à Accepter automatiquement les modifications ou Demander les permissions pour l'exécuter. Voir [explorer d'abord, puis planifier, puis coder](/fr/best-practices#explore-first-then-plan-then-code) pour plus d'informations sur ce flux de travail.

85</Tip>

86 

87Les sessions distantes supportent Accepter automatiquement les modifications et Plan mode. Demander les permissions n'est pas disponible car les sessions distantes acceptent automatiquement les modifications de fichiers par défaut, et Contourner les permissions n'est pas disponible car l'environnement distant est déjà sandboxé.

88 

89Les administrateurs d'entreprise peuvent restreindre les modes de permission disponibles. Voir [configuration d'entreprise](#enterprise-configuration) pour les détails.

90 

91### Aperçu de votre application

92 

93Claude peut démarrer un serveur de développement et ouvrir un navigateur intégré pour vérifier ses modifications. Ceci fonctionne pour les applications web frontend ainsi que les serveurs backend : Claude peut tester les points de terminaison API, afficher les journaux du serveur et itérer sur les problèmes qu'il trouve. Dans la plupart des cas, Claude démarre le serveur automatiquement après la modification des fichiers du projet. Vous pouvez également demander à Claude de prévisualiser à tout moment. Par défaut, Claude [vérifie automatiquement](#auto-verify-changes) les modifications après chaque modification.

94 

95Le volet d'aperçu peut également ouvrir des fichiers HTML statiques, des PDF, des images et des vidéos de votre projet. Cliquez sur un chemin HTML, PDF, image ou vidéo dans le chat pour l'ouvrir dans l'aperçu.

96 

97À partir du volet d'aperçu, vous pouvez :

98 

99* Interagir avec votre application en cours d'exécution directement dans le navigateur intégré

100* Regarder Claude vérifier ses propres modifications automatiquement : il prend des captures d'écran, inspecte le DOM, clique sur les éléments, remplit les formulaires et corrige les problèmes qu'il trouve

101* Démarrer ou arrêter les serveurs à partir de la liste déroulante **Aperçu** dans la barre d'outils de la session

102* Conserver les cookies et le stockage local entre les redémarrages du serveur en sélectionnant **Conserver les sessions** dans la liste déroulante, afin que vous n'ayez pas à vous reconnecter pendant le développement

103* Modifier la configuration du serveur ou arrêter tous les serveurs à la fois

104 

105Claude crée la configuration initiale du serveur en fonction de votre projet. Si votre application utilise une commande de développement personnalisée, modifiez `.claude/launch.json` pour correspondre à votre configuration. Voir [Configurer les serveurs d'aperçu](#configure-preview-servers) pour la référence complète.

106 

107Pour effacer les données de session enregistrées, basculez **Conserver les sessions d'aperçu** sur Désactivé dans Paramètres → Claude Code. Pour désactiver complètement l'aperçu, basculez **Aperçu** sur Désactivé dans Paramètres → Claude Code.

108 

109### Examiner les modifications avec la vue de différence

110 

111Après que Claude ait modifié votre code, la vue de différence vous permet d'examiner les modifications fichier par fichier avant de créer une demande de tirage.

112 

113Quand Claude modifie des fichiers, un indicateur de statistiques de différence apparaît montrant le nombre de lignes ajoutées et supprimées, comme `+12 -1`. Cliquez sur cet indicateur pour ouvrir la visionneuse de différences, qui affiche une liste de fichiers à gauche et les modifications pour chaque fichier à droite.

114 

115Pour commenter des lignes spécifiques, cliquez sur n'importe quelle ligne dans la différence pour ouvrir une boîte de commentaire. Tapez votre retour et appuyez sur **Entrée** pour ajouter le commentaire. Après avoir ajouté des commentaires à plusieurs lignes, soumettez tous les commentaires à la fois :

116 

117* **macOS** : appuyez sur **Cmd+Entrée**

118* **Windows** : appuyez sur **Ctrl+Entrée**

119 

120Claude lit vos commentaires et effectue les modifications demandées, qui apparaissent comme une nouvelle différence que vous pouvez examiner.

121 

122### Examiner votre code

123 

124Dans la vue de différence, cliquez sur **Examiner le code** dans la barre d'outils en haut à droite pour demander à Claude d'évaluer les modifications avant de les valider. Claude examine les différences actuelles et laisse des commentaires directement dans la vue de différence. Vous pouvez répondre à n'importe quel commentaire ou demander à Claude de réviser.

125 

126L'examen se concentre sur les problèmes à haut signal : erreurs de compilation, erreurs logiques définies, vulnérabilités de sécurité et bugs évidents. Il ne signale pas le style, le formatage, les problèmes préexistants ou quoi que ce soit qu'un linter attraperait.

127 

128### Surveiller l'état de la demande de tirage

129 

130Après avoir ouvert une demande de tirage, une barre d'état CI apparaît dans la session. Claude Code utilise la CLI GitHub pour interroger les résultats des vérifications et afficher les défaillances.

131 

132* **Correction automatique** : quand activée, Claude tente automatiquement de corriger les vérifications CI défaillantes en lisant la sortie de défaillance et en itérant.

133* **Fusion automatique** : quand activée, Claude fusionne la PR une fois que toutes les vérifications réussissent. La méthode de fusion est squash. La fusion automatique doit être [activée dans les paramètres de votre référentiel GitHub](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-auto-merge-for-pull-requests-in-your-repository) pour que cela fonctionne.

134 

135Utilisez les bascules **Correction automatique** et **Fusion automatique** dans la barre d'état CI pour activer l'une ou l'autre option. Claude Code envoie également une notification de bureau quand CI se termine. Pour archiver la session automatiquement une fois que la PR fusionne ou se ferme, activez [auto-archive](#work-in-parallel-with-sessions) dans Paramètres → Claude Code.

136 

137<Note>

138 La surveillance des PR nécessite que la [CLI GitHub (`gh`)](https://cli.github.com/) soit installée et authentifiée sur votre machine. Si `gh` n'est pas installée, Desktop vous invite à l'installer la première fois que vous essayez de créer une PR.

139</Note>

140 

141## Arranger votre espace de travail

142 

143L'onglet Code est construit autour de volets que vous pouvez arranger dans n'importe quelle disposition : chat, différence, aperçu, terminal, fichier, plan, tâches et sous-agent. Glissez un volet par son en-tête pour le repositionner, ou glissez un bord de volet pour le redimensionner. Appuyez sur **Cmd+\\** sur macOS ou **Ctrl+\\** sur Windows pour fermer le volet actif. Ouvrez des volets supplémentaires à partir du menu **Vues** dans la barre d'outils de la session.

144 

145<Note>

146 La disposition des volets, le terminal, l'éditeur de fichiers et les modes d'affichage dans cette section nécessitent Claude Desktop v1.2581.0 ou une version ultérieure. Ouvrez **Claude → Vérifier les mises à jour** sur macOS ou **Aide → Vérifier les mises à jour** sur Windows pour mettre à jour.

147</Note>

148 

149### Exécuter les commandes dans le terminal

150 

151Le terminal intégré vous permet d'exécuter les commandes aux côtés de votre session sans basculer vers une autre application. Ouvrez-le à partir du menu **Vues** ou appuyez sur **Ctrl+\`** sur macOS ou Windows. Le terminal s'ouvre dans le répertoire de travail de votre session et partage le même environnement que Claude, donc les commandes comme `npm test` ou `git status` voient les mêmes fichiers que Claude édite. Le terminal est disponible dans les sessions locales uniquement.

152 

153### Ouvrir et modifier les fichiers

154 

155Cliquez sur un chemin de fichier dans le chat ou la visionneuse de différences pour l'ouvrir dans le volet de fichier. Les chemins HTML, PDF, image et vidéo s'ouvrent dans le [volet d'aperçu](#preview-your-app) à la place. Effectuez des modifications ponctuelles et cliquez sur **Enregistrer** pour les écrire. Si le fichier a changé sur le disque depuis que vous l'avez ouvert, le volet vous avertit et vous permet de remplacer ou d'abandonner. Cliquez sur **Abandonner** pour annuler vos modifications, ou cliquez sur le chemin dans l'en-tête du volet pour copier le chemin absolu.

156 

157Le volet de fichier est disponible dans les sessions locales et SSH. Pour les sessions distantes, demandez à Claude de faire la modification.

158 

159### Ouvrir les fichiers dans d'autres applications

160 

161Cliquez avec le bouton droit sur n'importe quel chemin de fichier dans le chat, la visionneuse de différences ou le volet de fichier pour ouvrir un menu contextuel :

162 

163* **Joindre comme contexte** : ajouter le fichier à votre prochain prompt

164* **Ouvrir dans** : ouvrir le fichier dans un éditeur installé comme VS Code, Cursor ou Zed

165* **Afficher dans le Finder** sur macOS, **Afficher dans l'Explorateur** sur Windows : ouvrir le dossier contenant

166* **Copier le chemin** : copier le chemin absolu dans votre presse-papiers

167 

168### Changer les modes d'affichage

169 

170Les modes d'affichage contrôlent le niveau de détail qui apparaît dans la transcription du chat. Changez les modes à partir de la liste déroulante **Vue de la transcription** à côté du bouton d'envoi, ou appuyez sur **Ctrl+O** sur macOS ou Windows pour les parcourir.

171 

172| Mode | Ce qu'il affiche |

173| ----------- | -------------------------------------------------------------------------------- |

174| **Normal** | Les appels d'outils réduits en résumés, avec les réponses texte complètes |

175| **Verbose** | Chaque appel d'outil, lecture de fichier et étape intermédiaire que Claude prend |

176| **Résumé** | Uniquement les réponses finales de Claude et les modifications qu'il a apportées |

177 

178Utilisez Verbose lors du débogage pour savoir pourquoi Claude a pris une action particulière. Utilisez Résumé quand vous exécutez plusieurs sessions et voulez scanner les résultats rapidement.

179 

180### Raccourcis clavier

181 

182Appuyez sur **Cmd+/** sur macOS ou **Ctrl+/** sur Windows pour voir tous les raccourcis disponibles dans l'onglet Code. Sur Windows, utilisez **Ctrl** à la place de **Cmd** pour les raccourcis ci-dessous. Le cycle des sessions, le basculement du terminal et le basculement du mode d'affichage utilisent **Ctrl** sur chaque plateforme.

183 

184| Raccourci | Action |

185| ------------------------------------- | ------------------------------------------- |

186| `Cmd` `/` | Afficher les raccourcis clavier |

187| `Cmd` `N` | Nouvelle session |

188| `Cmd` `W` | Fermer la session |

189| `Ctrl` `Tab` / `Ctrl` `Shift` `Tab` | Session suivante ou précédente |

190| `Cmd` `Shift` `]` / `Cmd` `Shift` `[` | Session suivante ou précédente |

191| `Esc` | Arrêter la réponse de Claude |

192| `Cmd` `Shift` `D` | Basculer le volet de différence |

193| `Cmd` `Shift` `P` | Basculer le volet d'aperçu |

194| `Cmd` `Shift` `S` | Sélectionner un élément dans l'aperçu |

195| `Ctrl` `` ` `` | Basculer le volet de terminal |

196| `Cmd` `\` | Fermer le volet actif |

197| `Cmd` `;` | Ouvrir le chat latéral |

198| `Ctrl` `O` | Parcourir les modes d'affichage |

199| `Cmd` `Shift` `M` | Ouvrir le menu du mode de permission |

200| `Cmd` `Shift` `I` | Ouvrir le menu du modèle |

201| `Cmd` `Shift` `E` | Ouvrir le menu d'effort |

202| `1`–`9` | Sélectionner un élément dans un menu ouvert |

203 

204Ces raccourcis s'appliquent uniquement à l'onglet Code. Les raccourcis du [mode interactif](/fr/interactive-mode#keyboard-shortcuts) basés sur le terminal, comme `Shift+Tab` pour parcourir les modes, ne s'appliquent pas dans Desktop.

205 

206### Vérifier l'utilisation

207 

208Cliquez sur l'anneau d'utilisation à côté du sélecteur de modèle pour voir votre utilisation actuelle de la fenêtre de contexte et votre utilisation du plan pour la période. L'utilisation du contexte est par session ; l'utilisation du plan est partagée sur toutes vos surfaces Claude Code.

209 

210## Laisser Claude utiliser votre ordinateur

211 

212L'utilisation informatique permet à Claude d'ouvrir vos applications, de contrôler votre écran et de travailler directement sur votre machine comme vous le feriez. Demandez à Claude de tester une application native dans un simulateur mobile, d'interagir avec un outil de bureau qui n'a pas de CLI, ou d'automatiser quelque chose qui ne fonctionne que via une GUI.

213 

214<Note>

215 L'utilisation informatique est un aperçu de recherche sur macOS et Windows qui nécessite un plan Pro ou Max. Elle n'est pas disponible sur les plans Team ou Enterprise. L'application Claude Desktop doit être en cours d'exécution.

216</Note>

217 

218L'utilisation informatique est désactivée par défaut. [Activez-la dans Paramètres](#enable-computer-use) avant que Claude puisse contrôler votre écran. Sur macOS, vous devez également accorder les permissions d'Accessibilité et d'Enregistrement d'écran.

219 

220<Warning>

221 Contrairement à l'[outil Bash sandboxé](/fr/sandboxing), l'utilisation informatique s'exécute sur votre vrai bureau avec accès à tout ce que vous approuvez. Claude vérifie chaque action et signale les injections de prompt potentielles du contenu à l'écran, mais la limite de confiance est différente. Voir le [guide de sécurité de l'utilisation informatique](https://support.claude.com/en/articles/14128542) pour les meilleures pratiques.

222</Warning>

223 

224### Quand l'utilisation informatique s'applique

225 

226Claude a plusieurs façons d'interagir avec une application ou un service, et l'utilisation informatique est la plus large et la plus lente. Il essaie d'abord l'outil le plus précis :

227 

228* Si vous avez un [connecteur](#connect-external-tools) pour un service, Claude utilise le connecteur.

229* Si la tâche est une commande shell, Claude utilise Bash.

230* Si la tâche est du travail de navigateur et que vous avez [Claude dans Chrome](/fr/chrome) configuré, Claude utilise cela.

231* Si aucun de ceux-ci ne s'applique, Claude utilise l'utilisation informatique.

232 

233Les [niveaux d'accès par application](#app-permissions) renforcent ceci : les navigateurs sont limités à la lecture seule, et les terminaux et IDE à clic uniquement, guidant Claude vers l'outil dédié même quand l'utilisation informatique est active. Le contrôle d'écran est réservé aux choses que rien d'autre ne peut atteindre, comme les applications natives, les panneaux de contrôle matériel, les simulateurs mobiles ou les outils propriétaires sans API.

234 

235### Activer l'utilisation informatique

236 

237L'utilisation informatique est désactivée par défaut. Si vous demandez à Claude de faire quelque chose qui en a besoin alors qu'elle est désactivée, Claude vous dit qu'il pourrait faire la tâche si vous activez l'utilisation informatique dans Paramètres.

238 

239<Steps>

240 <Step title="Mettre à jour l'application de bureau">

241 Assurez-vous que vous avez la dernière version de Claude Desktop. Téléchargez ou mettez à jour sur [claude.com/download](https://claude.com/download), puis redémarrez l'application.

242 </Step>

243 

244 <Step title="Activer le basculement">

245 Dans l'application de bureau, allez à **Paramètres > Général** (sous **Application de bureau**). Trouvez le basculement **Utilisation informatique** et activez-le. Sur Windows, le basculement prend effet immédiatement et la configuration est complète. Sur macOS, continuez à l'étape suivante.

246 

247 Si vous ne voyez pas le basculement, confirmez que vous êtes sur macOS ou Windows avec un plan Pro ou Max, puis mettez à jour et redémarrez l'application.

248 </Step>

249 

250 <Step title="Accorder les permissions macOS">

251 Sur macOS, accordez deux permissions système avant que le basculement prenne effet :

252 

253 * **Accessibilité** : permet à Claude de cliquer, taper et faire défiler

254 * **Enregistrement d'écran** : permet à Claude de voir ce qui est sur votre écran

255 

256 La page Paramètres affiche l'état actuel de chaque permission. Si l'une est refusée, cliquez sur le badge pour ouvrir le volet Paramètres système pertinent.

257 </Step>

258</Steps>

259 

260### Permissions d'application

261 

262La première fois que Claude doit utiliser une application, une invite apparaît dans votre session. Cliquez sur **Autoriser pour cette session** ou **Refuser**. Les approbations durent pour la session actuelle, ou 30 minutes dans les [sessions générées par Dispatch](#sessions-from-dispatch).

263 

264L'invite affiche également quel niveau de contrôle Claude obtient pour cette application. Ces niveaux sont fixés par catégorie d'application et ne peuvent pas être modifiés :

265 

266| Niveau | Ce que Claude peut faire | S'applique à |

267| :--------------- | :-------------------------------------------------------------------------- | :---------------------------------- |

268| Lecture seule | Voir l'application dans les captures d'écran | Navigateurs, plateformes de trading |

269| Clic uniquement | Cliquer et faire défiler, mais pas taper ou utiliser les raccourcis clavier | Terminaux, IDE |

270| Contrôle complet | Cliquer, taper, glisser et utiliser les raccourcis clavier | Tout le reste |

271 

272Les applications avec une large portée, comme les terminaux, Finder ou Explorateur de fichiers, et Paramètres système ou Paramètres, affichent un avertissement supplémentaire dans l'invite pour que vous sachiez ce que l'approbation accorde.

273 

274Vous pouvez configurer deux paramètres dans **Paramètres > Général** (sous **Application de bureau**) :

275 

276* **Applications refusées** : ajoutez des applications ici pour les rejeter sans demander. Claude peut toujours affecter une application refusée indirectement via des actions dans une application autorisée, mais il ne peut pas interagir directement avec l'application refusée.

277* **Afficher les applications quand Claude a terminé** : tandis que Claude travaille, vos autres fenêtres sont masquées pour qu'il n'interagisse qu'avec l'application approuvée. Quand Claude a terminé, les fenêtres masquées sont restaurées sauf si vous désactivez ce paramètre.

278 

279## Gérer les sessions

280 

281Chaque session est une conversation indépendante avec son propre contexte et ses propres modifications. Vous pouvez exécuter plusieurs sessions en parallèle, créer des chats latéraux, envoyer du travail vers le cloud ou laisser Dispatch démarrer des sessions pour vous depuis votre téléphone.

282 

283### Travailler en parallèle avec les sessions

284 

285Cliquez sur **+ Nouvelle session** dans la barre latérale, ou appuyez sur **Cmd+N** sur macOS ou **Ctrl+N** sur Windows, pour travailler sur plusieurs tâches en parallèle. Appuyez sur **Ctrl+Tab** et **Ctrl+Shift+Tab** pour parcourir les sessions dans la barre latérale. Pour les référentiels Git, chaque session obtient sa propre copie isolée de votre projet en utilisant [Git worktrees](/fr/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees), donc les modifications dans une session n'affectent pas les autres sessions jusqu'à ce que vous les validiez.

286 

287Les worktrees sont stockés dans `<project-root>/.claude/worktrees/` par défaut. Vous pouvez modifier ceci en un répertoire personnalisé dans Paramètres → Claude Code sous « Emplacement du worktree ». Vous pouvez également définir un préfixe de branche qui est ajouté au début de chaque nom de branche worktree, ce qui est utile pour garder les branches créées par Claude organisées. Pour supprimer un worktree quand vous avez terminé, survolez la session dans la barre latérale et cliquez sur l'icône d'archive. Pour avoir les sessions s'archiver elles-mêmes quand leur demande de tirage fusionne ou se ferme, activez **Auto-archive après fusion ou fermeture de PR** dans Paramètres → Claude Code. L'auto-archive s'applique uniquement aux sessions locales qui ont terminé l'exécution.

288 

289Pour inclure les fichiers ignorés par git comme `.env` dans les nouveaux worktrees, créez un [fichier `.worktreeinclude`](/fr/common-workflows#copy-gitignored-files-to-worktrees) à la racine de votre projet.

290 

291<Note>

292 L'isolation des sessions nécessite [Git](https://git-scm.com/downloads). La plupart des Macs incluent Git par défaut. Exécutez `git --version` dans Terminal pour vérifier. Sur Windows, Git est requis pour que l'onglet Code fonctionne : [téléchargez Git pour Windows](https://git-scm.com/downloads/win), installez-le et redémarrez l'application. Si vous rencontrez des erreurs Git, demandez à Claude dans l'[onglet Cowork](https://claude.com/product/cowork) de vous aider à dépanner votre configuration.

293</Note>

294 

295Utilisez les contrôles en haut de la barre latérale pour filtrer les sessions par statut, projet ou environnement, et pour grouper les sessions par projet. Pour renommer une session, cliquez sur le titre de la session dans la barre d'outils en haut de la session active. Pour vérifier l'utilisation du contexte, voir [Vérifier l'utilisation](#check-usage). Quand le contexte se remplit, Claude résume automatiquement la conversation et continue de travailler. Vous pouvez également taper `/compact` pour déclencher la compaction plus tôt et libérer de l'espace de contexte. Voir [la fenêtre de contexte](/fr/how-claude-code-works#the-context-window) pour les détails sur le fonctionnement de la compaction.

296 

297### Poser une question latérale sans dérailler la session

298 

299Un chat latéral vous permet de poser une question à Claude qui utilise le contexte de votre session mais n'ajoute rien à la conversation principale. Utilisez-le quand vous voulez comprendre un morceau de code, vérifier une hypothèse ou explorer une idée sans détourner la session de son cours.

300 

301Appuyez sur **Cmd+;** sur macOS ou **Ctrl+;** sur Windows pour ouvrir un chat latéral, ou tapez `/btw` dans la zone de prompt. Le chat latéral peut lire tout ce qui se trouve dans le fil principal jusqu'à ce point. Quand vous avez terminé, fermez le chat latéral et continuez la session principale où vous l'aviez laissée. Les chats latéraux sont disponibles dans les sessions locales et SSH.

302 

303### Regarder les tâches en arrière-plan

304 

305Le volet des tâches affiche le travail en arrière-plan s'exécutant dans la session actuelle : sous-agents, commandes shell en arrière-plan et flux de travail. Ouvrez-le à partir du menu **Vues** ou glissez-le dans votre disposition.

306 

307Cliquez sur n'importe quelle entrée pour voir sa sortie dans le volet du sous-agent ou l'arrêter. Pour voir ce que font les autres sessions, utilisez la [barre latérale](#work-in-parallel-with-sessions).

308 

309### Exécuter les tâches longues à distance

310 

311Pour les refactorisations importantes, les suites de tests, les migrations ou autres tâches longues, sélectionnez **Remote** au lieu de **Local** au démarrage d'une session. Les sessions distantes s'exécutent sur l'infrastructure cloud d'Anthropic et continuent même si vous fermez l'application ou arrêtez votre ordinateur. Revenez à tout moment pour voir la progression ou orienter Claude dans une direction différente. Vous pouvez également surveiller les sessions distantes à partir de [claude.ai/code](https://claude.ai/code) ou de l'application Claude iOS.

312 

313Les sessions distantes supportent également plusieurs référentiels. Après avoir sélectionné un environnement cloud, cliquez sur le bouton **+** à côté de la pilule de référentiel pour ajouter des référentiels supplémentaires à la session. Chaque référentiel obtient son propre sélecteur de branche. Ceci est utile pour les tâches qui s'étendent sur plusieurs bases de code, comme la mise à jour d'une bibliothèque partagée et ses consommateurs.

314 

315Voir [Claude Code sur le web](/fr/claude-code-on-the-web) pour plus d'informations sur le fonctionnement des sessions distantes.

316 

317### Continuer sur une autre surface

318 

319Le menu **Continuer dans**, accessible à partir de l'icône VS Code en bas à droite de la barre d'outils de la session, vous permet de déplacer votre session vers une autre surface :

320 

321* **Claude Code sur le Web** : envoie votre session locale pour continuer à s'exécuter à distance. Desktop pousse votre branche, génère un résumé de la conversation et crée une nouvelle session distante avec le contexte complet. Vous pouvez ensuite choisir d'archiver la session locale ou de la conserver. Ceci nécessite un arbre de travail propre et n'est pas disponible pour les sessions SSH.

322* **Votre IDE** : ouvre votre projet dans un IDE supporté au répertoire de travail actuel.

323 

324### Sessions depuis Dispatch

325 

326[Dispatch](https://support.claude.com/en/articles/13947068) est une conversation persistante avec Claude qui vit dans l'onglet [Cowork](https://claude.com/product/cowork#dispatch-and-computer-use). Vous envoyez un message à Dispatch avec une tâche, et il décide comment la gérer.

327 

328Une tâche peut devenir une session Code de deux façons : vous en demandez une directement, comme « ouvrir une session Claude Code et corriger le bug de connexion », ou Dispatch décide que la tâche est du travail de développement et en génère une automatiquement. Les tâches qui routent généralement vers Code incluent la correction de bugs, la mise à jour des dépendances, l'exécution de tests ou l'ouverture de demandes de tirage. La recherche, l'édition de documents et le travail sur feuille de calcul restent dans Cowork.

329 

330De toute façon, la session Code apparaît dans la barre latérale de l'onglet Code avec un badge **Dispatch**. Vous recevez une notification push sur votre téléphone quand elle se termine ou a besoin de votre approbation.

331 

332Si vous avez [l'utilisation informatique](#let-claude-use-your-computer) activée, les sessions Code générées par Dispatch peuvent l'utiliser aussi. Les approbations d'application dans ces sessions expirent après 30 minutes et re-demandent, plutôt que de durer la session complète comme les sessions Code régulières.

333 

334Pour la configuration, l'appairage et les paramètres Dispatch, voir l'[article d'aide Dispatch](https://support.claude.com/en/articles/13947068). Dispatch nécessite un plan Pro ou Max et n'est pas disponible sur les plans Team ou Enterprise.

335 

336Dispatch est l'une de plusieurs façons de travailler avec Claude quand vous êtes loin de votre terminal. Voir [Plateformes et intégrations](/fr/platforms#work-when-you-are-away-from-your-terminal) pour le comparer avec Remote Control, Channels, Slack et les tâches planifiées.

337 

338## Étendre Claude Code

339 

340Connectez les services externes, ajoutez des flux de travail réutilisables, personnalisez le comportement de Claude et configurez les serveurs d'aperçu. Pour gérer les connecteurs, les skills et les plugins au même endroit, cliquez sur **Personnaliser** dans la barre latérale.

341 

342### Connecter les outils externes

343 

344Pour les sessions locales et [SSH](#ssh-sessions), cliquez sur le bouton **+** à côté de la zone de prompt et sélectionnez **Connecteurs** pour ajouter des intégrations comme Google Calendar, Slack, GitHub, Linear, Notion et bien d'autres. Vous pouvez ajouter des connecteurs avant ou pendant une session. Le bouton **+** n'est pas disponible dans les sessions distantes, mais les [routines](/fr/routines) configurent les connecteurs au moment de la création de la routine.

345 

346Pour gérer ou déconnecter les connecteurs, allez à Paramètres → Connecteurs dans l'application de bureau, ou sélectionnez **Gérer les connecteurs** à partir du menu Connecteurs dans la zone de prompt.

347 

348Une fois connecté, Claude peut lire votre calendrier, envoyer des messages, créer des problèmes et interagir avec vos outils directement. Vous pouvez demander à Claude quels connecteurs sont configurés dans votre session.

349 

350Les connecteurs sont [des serveurs MCP](/fr/mcp) avec un flux de configuration graphique. Utilisez-les pour une intégration rapide avec les services supportés. Pour les intégrations non listées dans Connecteurs, ajoutez les serveurs MCP manuellement via [fichiers de paramètres](/fr/mcp#installing-mcp-servers). Vous pouvez également [créer des connecteurs personnalisés](https://support.claude.com/en/articles/11175166-getting-started-with-custom-connectors-using-remote-mcp).

351 

352### Utiliser les skills

353 

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

355 

356### Installer les plugins

357 

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

359 

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

361 

362Les plugins peuvent être limités à votre compte utilisateur, un projet spécifique ou local uniquement. Si votre organisation gère les plugins de manière centralisée, ces plugins sont disponibles dans les sessions de bureau de la même manière qu'ils le sont dans la CLI. Les plugins ne sont pas disponibles pour les sessions distantes. Pour la référence complète des plugins, y compris la création de vos propres plugins, voir [plugins](/fr/plugins).

363 

364### Configurer les serveurs d'aperçu

365 

366Claude détecte automatiquement votre configuration de serveur de développement et stocke la configuration dans `.claude/launch.json` à la racine du dossier que vous avez sélectionné au démarrage de la session. L'aperçu utilise ce dossier comme répertoire de travail, donc si vous avez sélectionné un dossier parent, les sous-dossiers avec leurs propres serveurs de développement ne seront pas détectés automatiquement. Pour travailler avec le serveur d'un sous-dossier, soit démarrez une session dans ce dossier directement, soit ajoutez une configuration manuellement.

367 

368Pour personnaliser le démarrage de votre serveur, par exemple pour utiliser `yarn dev` au lieu de `npm run dev` ou pour modifier le port, modifiez le fichier manuellement ou cliquez sur **Modifier la configuration** dans la liste déroulante Aperçu pour l'ouvrir dans votre éditeur de code. Le fichier supporte JSON avec commentaires.

369 

370```json theme={null}

371{

372 "version": "0.0.1",

373 "configurations": [

374 {

375 "name": "my-app",

376 "runtimeExecutable": "npm",

377 "runtimeArgs": ["run", "dev"],

378 "port": 3000

379 }

380 ]

381}

382```

383 

384Vous pouvez définir plusieurs configurations pour exécuter différents serveurs à partir du même projet, comme un frontend et une API. Voir les [exemples](#examples) ci-dessous.

385 

386#### Vérification automatique des modifications

387 

388Quand `autoVerify` est activé, Claude vérifie automatiquement les modifications de code après la modification des fichiers. Il prend des captures d'écran, vérifie les erreurs et confirme que les modifications fonctionnent avant de terminer sa réponse.

389 

390La vérification automatique est activée par défaut. Désactivez-la par projet en ajoutant `"autoVerify": false` à `.claude/launch.json`, ou basculez-la à partir du menu déroulant **Aperçu**.

391 

392```json theme={null}

393{

394 "version": "0.0.1",

395 "autoVerify": false,

396 "configurations": [...]

397}

398```

399 

400Quand désactivée, les outils d'aperçu sont toujours disponibles et vous pouvez demander à Claude de vérifier à tout moment. La vérification automatique la rend automatique après chaque modification.

401 

402#### Champs de configuration

403 

404Chaque entrée dans le tableau `configurations` accepte les champs suivants :

405 

406| Champ | Type | Description |

407| ------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

408| `name` | string | Un identifiant unique pour ce serveur |

409| `runtimeExecutable` | string | La commande à exécuter, comme `npm`, `yarn` ou `node` |

410| `runtimeArgs` | string\[] | Arguments passés à `runtimeExecutable`, comme `["run", "dev"]` |

411| `port` | number | Le port sur lequel votre serveur écoute. Par défaut 3000 |

412| `cwd` | string | Répertoire de travail relatif à la racine de votre projet. Par défaut la racine du projet. Utilisez `${workspaceFolder}` pour référencer la racine du projet explicitement |

413| `env` | object | Variables d'environnement supplémentaires comme paires clé-valeur, comme `{ "NODE_ENV": "development" }`. Ne mettez pas de secrets ici car ce fichier est validé dans votre référentiel. Pour passer les secrets à votre serveur de développement, définissez-les dans l'[éditeur d'environnement local](#local-sessions) à la place. |

414| `autoPort` | boolean | Comment gérer les conflits de port. Voir ci-dessous |

415| `program` | string | Un script à exécuter avec `node`. Voir [quand utiliser `program` vs `runtimeExecutable`](#when-to-use-program-vs-runtimeexecutable) |

416| `args` | string\[] | Arguments passés à `program`. Utilisé uniquement quand `program` est défini |

417 

418##### Quand utiliser `program` vs `runtimeExecutable`

419 

420Utilisez `runtimeExecutable` avec `runtimeArgs` pour démarrer un serveur de développement via un gestionnaire de packages. Par exemple, `"runtimeExecutable": "npm"` avec `"runtimeArgs": ["run", "dev"]` exécute `npm run dev`.

421 

422Utilisez `program` quand vous avez un script autonome que vous voulez exécuter avec `node` directement. Par exemple, `"program": "server.js"` exécute `node server.js`. Passez des drapeaux supplémentaires avec `args`.

423 

424#### Conflits de port

425 

426Le champ `autoPort` contrôle ce qui se passe quand votre port préféré est déjà utilisé :

427 

428* **`true`** : Claude trouve et utilise un port libre automatiquement. Approprié pour la plupart des serveurs de développement.

429* **`false`** : Claude échoue avec une erreur. Utilisez ceci quand votre serveur doit utiliser un port spécifique, comme pour les rappels OAuth ou les listes blanches CORS.

430* **Non défini (par défaut)** : Claude demande si le serveur a besoin de ce port exact, puis enregistre votre réponse.

431 

432Quand Claude choisit un port différent, il passe le port assigné à votre serveur via la variable d'environnement `PORT`.

433 

434#### Exemples

435 

436Ces configurations montrent les configurations courantes pour différents types de projets :

437 

438<Tabs>

439 <Tab title="Next.js">

440 Cette configuration exécute une application Next.js en utilisant Yarn sur le port 3000 :

441 

442 ```json theme={null}

443 {

444 "version": "0.0.1",

445 "configurations": [

446 {

447 "name": "web",

448 "runtimeExecutable": "yarn",

449 "runtimeArgs": ["dev"],

450 "port": 3000

451 }

452 ]

453 }

454 ```

455 </Tab>

456 

457 <Tab title="Plusieurs serveurs">

458 Pour un monorepo avec un serveur frontend et API, définissez plusieurs configurations. Le frontend utilise `autoPort: true` pour qu'il choisisse un port libre si 3000 est pris, tandis que le serveur API nécessite le port 8080 exactement :

459 

460 ```json theme={null}

461 {

462 "version": "0.0.1",

463 "configurations": [

464 {

465 "name": "frontend",

466 "runtimeExecutable": "npm",

467 "runtimeArgs": ["run", "dev"],

468 "cwd": "apps/web",

469 "port": 3000,

470 "autoPort": true

471 },

472 {

473 "name": "api",

474 "runtimeExecutable": "npm",

475 "runtimeArgs": ["run", "start"],

476 "cwd": "server",

477 "port": 8080,

478 "env": { "NODE_ENV": "development" },

479 "autoPort": false

480 }

481 ]

482 }

483 ```

484 </Tab>

485 

486 <Tab title="Script Node.js">

487 Pour exécuter un script Node.js directement au lieu d'utiliser une commande du gestionnaire de packages, utilisez le champ `program` :

488 

489 ```json theme={null}

490 {

491 "version": "0.0.1",

492 "configurations": [

493 {

494 "name": "server",

495 "program": "server.js",

496 "args": ["--verbose"],

497 "port": 4000

498 }

499 ]

500 }

501 ```

502 </Tab>

503</Tabs>

504 

505## Configuration de l'environnement

506 

507L'environnement que vous choisissez au [démarrage d'une session](#start-a-session) détermine où Claude s'exécute et comment vous vous connectez :

508 

509* **Local** : s'exécute sur votre machine avec accès direct à vos fichiers

510* **Remote** : s'exécute sur l'infrastructure cloud d'Anthropic. Les sessions continuent même si vous fermez l'application.

511* **SSH** : s'exécute sur une machine distante à laquelle vous vous connectez via SSH, comme vos propres serveurs, des machines virtuelles cloud ou des conteneurs de développement

512 

513### Sessions locales

514 

515L'application de bureau n'hérite pas toujours de votre environnement shell complet. Sur macOS, quand vous lancez l'application à partir du Dock ou du Finder, elle lit votre profil shell, comme `~/.zshrc` ou `~/.bashrc`, pour extraire `PATH` et un ensemble fixe de variables Claude Code, mais les autres variables que vous exportez là ne sont pas récupérées. Sur Windows, l'application hérite des variables d'environnement utilisateur et système mais ne lit pas les profils PowerShell.

516 

517Pour définir les variables d'environnement pour les sessions locales et les serveurs de développement sur n'importe quelle plateforme, ouvrez la liste déroulante d'environnement dans la zone de prompt, survolez **Local** et cliquez sur l'icône d'engrenage pour ouvrir l'éditeur d'environnement local. Les variables que vous enregistrez ici sont stockées chiffrées sur votre machine et s'appliquent à chaque session locale et serveur d'aperçu que vous démarrez. Vous pouvez également ajouter des variables à la clé `env` dans votre fichier `~/.claude/settings.json`, bien que celles-ci n'atteignent que les sessions Claude et non les serveurs de développement. Voir [variables d'environnement](/fr/env-vars) pour la liste complète des variables supportées.

518 

519[La réflexion étendue](/fr/common-workflows#use-extended-thinking-thinking-mode) est activée par défaut, ce qui améliore les performances sur les tâches de raisonnement complexe mais utilise des tokens supplémentaires. Pour désactiver complètement la réflexion, définissez `MAX_THINKING_TOKENS` à `0` dans l'éditeur d'environnement local. Sur les modèles avec [raisonnement adaptatif](/fr/model-config#adjust-effort-level), toute autre valeur `MAX_THINKING_TOKENS` est ignorée car le raisonnement adaptatif contrôle la profondeur de la réflexion à la place. Sur Opus 4.6 et Sonnet 4.6, définissez `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` à `1` pour utiliser un budget de réflexion fixe ; Opus 4.7 utilise toujours le raisonnement adaptatif et n'a pas de mode de budget fixe.

520 

521### Sessions distantes

522 

523Les sessions distantes continuent en arrière-plan même si vous fermez l'application. L'utilisation compte vers les limites de votre [plan d'abonnement](/fr/costs) sans frais de calcul séparés.

524 

525Vous pouvez créer des environnements cloud personnalisés avec différents niveaux d'accès réseau et variables d'environnement. Sélectionnez la liste déroulante d'environnement au démarrage d'une session distante et choisissez **Ajouter un environnement**. Voir [l'environnement cloud](/fr/claude-code-on-the-web#the-cloud-environment) pour les détails sur la configuration de l'accès réseau et des variables d'environnement.

526 

527### Sessions SSH

528 

529Les sessions SSH vous permettent d'exécuter Claude Code sur une machine distante tout en utilisant l'application de bureau comme votre interface. Ceci est utile pour travailler avec des bases de code qui vivent sur des machines virtuelles cloud, des conteneurs de développement ou des serveurs avec du matériel ou des dépendances spécifiques.

530 

531Pour ajouter une connexion SSH, cliquez sur la liste déroulante d'environnement avant de démarrer une session et sélectionnez **+ Ajouter une connexion SSH**. La boîte de dialogue demande :

532 

533* **Nom** : une étiquette conviviale pour cette connexion

534* **Hôte SSH** : `user@hostname` ou un hôte défini dans `~/.ssh/config`

535* **Port SSH** : par défaut 22 s'il est laissé vide, ou utilise le port de votre configuration SSH

536* **Fichier d'identité** : chemin vers votre clé privée, comme `~/.ssh/id_rsa`. Laissez vide pour utiliser la clé par défaut ou votre configuration SSH.

537 

538Une fois ajoutée, la connexion apparaît dans la liste déroulante d'environnement. Sélectionnez-la pour démarrer une session sur cette machine. Claude s'exécute sur la machine distante avec accès à ses fichiers et outils.

539 

540La machine distante doit exécuter Linux ou macOS. L'application de bureau installe Claude Code sur la machine distante automatiquement la première fois que vous vous connectez. Une fois connecté, les sessions SSH supportent les modes de permission, les connecteurs, les plugins et les serveurs MCP.

541 

542#### Pré-configurer les connexions SSH pour votre équipe

543 

544Les administrateurs peuvent distribuer les connexions SSH aux membres de l'équipe en ajoutant `sshConfigs` à un fichier de [paramètres gérés](/fr/settings#settings-precedence). Les connexions définies de cette manière apparaissent dans la liste déroulante d'environnement de chaque utilisateur automatiquement et sont affichées comme gérées, de sorte que les utilisateurs peuvent les sélectionner mais ne peuvent pas les modifier ou les supprimer dans l'application.

545 

546L'exemple suivant pré-configure une seule connexion qui s'ouvre dans `~/projects` sur l'hôte distant :

547 

548```json theme={null}

549{

550 "sshConfigs": [

551 {

552 "id": "shared-dev-vm",

553 "name": "Shared Dev VM",

554 "sshHost": "user@dev.example.com",

555 "sshPort": 22,

556 "sshIdentityFile": "~/.ssh/id_ed25519",

557 "startDirectory": "~/projects"

558 }

559 ]

560}

561```

562 

563Chaque entrée nécessite `id`, `name` et `sshHost`. Les champs `sshPort`, `sshIdentityFile` et `startDirectory` sont optionnels. Les utilisateurs peuvent également ajouter `sshConfigs` à leur propre `~/.claude/settings.json`, qui est l'endroit où les connexions ajoutées via la boîte de dialogue sont stockées.

564 

565## Configuration d'entreprise

566 

567Les organisations sur les plans Team ou Enterprise peuvent gérer le comportement de l'application de bureau via les contrôles de la console d'administration, les fichiers de paramètres gérés et les politiques de gestion des appareils.

568 

569### Contrôles de la console d'administration

570 

571Ces paramètres sont configurés via la [console de paramètres d'administration](https://claude.ai/admin-settings/claude-code) :

572 

573* **Code dans le bureau** : contrôlez si les utilisateurs de votre organisation peuvent accéder à Claude Code dans l'application de bureau

574* **Code sur le web** : activez ou désactivez les [sessions web](/fr/claude-code-on-the-web) pour votre organisation

575* **Remote Control** : activez ou désactivez [Remote Control](/fr/remote-control) pour votre organisation

576* **Désactiver le mode Contourner les permissions** : empêchez les utilisateurs de votre organisation d'activer le mode de contournement des permissions

577 

578### Paramètres gérés

579 

580Les paramètres gérés remplacent les paramètres du projet et de l'utilisateur et s'appliquent quand Desktop génère des sessions CLI. Vous pouvez définir ces clés dans le fichier [paramètres gérés](/fr/settings#settings-precedence) de votre organisation ou les pousser à distance via la console d'administration.

581 

582| Clé | Description |

583| ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

584| `permissions.disableBypassPermissionsMode` | définissez sur `"disable"` pour empêcher les utilisateurs d'activer le mode de contournement des permissions. |

585| `disableAutoMode` | définissez sur `"disable"` pour empêcher les utilisateurs d'activer le mode [Auto](/fr/permission-modes#eliminate-prompts-with-auto-mode). Supprime Auto du sélecteur de mode. Également accepté sous `permissions`. |

586| `autoMode` | personnalisez ce que le classificateur du mode auto fait confiance et bloque dans votre organisation. Voir [Configurer le mode auto](/fr/auto-mode-config). |

587| `sshConfigs` | pré-configurez les [connexions SSH](#pre-configure-ssh-connections-for-your-team) qui apparaissent dans la liste déroulante de l'environnement. Les utilisateurs ne peuvent pas modifier ou supprimer les connexions gérées. |

588 

589Un fichier de paramètres gérés déployé sur le disque de chaque machine s'applique aux sessions Desktop. Les paramètres gérés poussés à distance via la console d'administration atteignent actuellement uniquement les sessions CLI et IDE, donc pour les déploiements Desktop, distribuez le fichier via MDM ou utilisez les [contrôles de la console d'administration](#admin-console-controls) ci-dessus.

590 

591`permissions.disableBypassPermissionsMode` et `disableAutoMode` fonctionnent également dans les paramètres utilisateur et projet, mais les placer dans les paramètres gérés empêche les utilisateurs de les remplacer. `autoMode` est lu à partir des paramètres utilisateur, `.claude/settings.local.json` et des paramètres gérés, mais pas à partir du `.claude/settings.json` coché : un référentiel cloné ne peut pas injecter ses propres règles de classificateur. Pour la liste complète des paramètres gérés uniquement, y compris `allowManagedPermissionRulesOnly` et `allowManagedHooksOnly`, voir [paramètres gérés uniquement](/fr/permissions#managed-only-settings).

592 

593### Politiques de gestion des appareils

594 

595Les équipes informatiques peuvent gérer l'application de bureau via MDM sur macOS ou la politique de groupe sur Windows. Les politiques disponibles incluent l'activation ou la désactivation de la fonctionnalité Claude Code, le contrôle des mises à jour automatiques et la définition d'une URL de déploiement personnalisée.

596 

597* **macOS** : configurez via le domaine de préférence `com.anthropic.Claude` en utilisant des outils comme Jamf ou Kandji

598* **Windows** : configurez via le registre à `SOFTWARE\Policies\Claude`

599 

600### Authentification et SSO

601 

602Les organisations d'entreprise peuvent exiger SSO pour tous les utilisateurs. Voir [authentification](/fr/authentication) pour les détails au niveau du plan et [Configuration de SSO](https://support.claude.com/en/articles/13132885-setting-up-single-sign-on-sso) pour la configuration SAML et OIDC.

603 

604### Gestion des données

605 

606Claude Code traite votre code localement dans les sessions locales ou sur l'infrastructure cloud d'Anthropic dans les sessions distantes. Les conversations et le contexte du code sont envoyés à l'API d'Anthropic pour le traitement. Voir [gestion des données](/fr/data-usage) pour les détails sur la rétention des données, la confidentialité et la conformité.

607 

608### Déploiement

609 

610Desktop peut être distribué via les outils de déploiement d'entreprise :

611 

612* **macOS** : distribuez via MDM comme Jamf ou Kandji en utilisant l'installateur `.dmg`

613* **Windows** : déployez via le package MSIX ou l'installateur `.exe`. Voir [Déployer Claude Desktop pour Windows](https://support.claude.com/en/articles/12622703-deploy-claude-desktop-for-windows) pour les options de déploiement d'entreprise, y compris l'installation silencieuse

614 

615Pour la configuration réseau comme les paramètres de proxy, l'ajout à la liste blanche du pare-feu et les passerelles LLM, voir [configuration réseau](/fr/network-config).

616 

617Pour la référence complète de la configuration d'entreprise, voir le [guide de configuration d'entreprise](https://support.claude.com/en/articles/12622667-enterprise-configuration).

618 

619## Venant de la CLI ?

620 

621Si vous utilisez déjà la CLI Claude Code, Desktop exécute le même moteur sous-jacent avec une interface graphique. Vous pouvez exécuter les deux simultanément sur la même machine, même sur le même projet. Chacun maintient un historique de session séparé, mais ils partagent la configuration et la mémoire du projet via les fichiers CLAUDE.md.

622 

623Pour déplacer une session CLI dans Desktop, exécutez `/desktop` dans le terminal. Claude enregistre votre session et l'ouvre dans l'application de bureau, puis quitte la CLI. Cette commande est disponible sur macOS et Windows uniquement.

624 

625<Tip>

626 Quand utiliser Desktop vs CLI : utilisez Desktop quand vous voulez gérer les sessions parallèles dans une fenêtre, arranger les volets côte à côte ou examiner les modifications visuellement. Utilisez la CLI quand vous avez besoin de scripts, d'automatisation ou préférez un flux de travail terminal.

627</Tip>

628 

629### Équivalents des drapeaux CLI

630 

631Ce tableau montre l'équivalent de l'application de bureau pour les drapeaux CLI courants. Les drapeaux non listés n'ont pas d'équivalent de bureau car ils sont conçus pour les scripts ou l'automatisation.

632 

633| CLI | Équivalent de bureau |

634| ---------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

635| `--model sonnet` | Liste déroulante de modèle à côté du bouton d'envoi |

636| `--resume`, `--continue` | Cliquez sur une session dans la barre latérale |

637| `--permission-mode` | Sélecteur de mode à côté du bouton d'envoi |

638| `--dangerously-skip-permissions` | Mode Contourner les permissions. Activez dans Paramètres → Claude Code → « Autoriser le mode de contournement des permissions ». Les administrateurs d'entreprise peuvent désactiver ce paramètre. |

639| `--add-dir` | Ajouter plusieurs référentiels avec le bouton **+** dans les sessions distantes |

640| `--allowedTools`, `--disallowedTools` | Aucun équivalent par session. Les règles de permission dans les [fichiers de paramètres](/fr/settings) s'appliquent toujours. |

641| `--verbose` | Mode d'affichage [Verbose](#switch-view-modes) dans la liste déroulante Vue de la transcription |

642| `--print`, `--output-format` | Non disponible. Desktop est interactif uniquement. |

643| Variable d'environnement `ANTHROPIC_MODEL` | Liste déroulante de modèle à côté du bouton d'envoi |

644| Variable d'environnement `MAX_THINKING_TOKENS` | Définissez dans l'éditeur d'environnement local. Voir [configuration de l'environnement](#environment-configuration). |

645 

646### Configuration partagée

647 

648Desktop et CLI lisent les mêmes fichiers de configuration, donc votre configuration se transfère :

649 

650* Les fichiers **[CLAUDE.md](/fr/memory)** et `CLAUDE.local.md` dans votre projet sont utilisés par les deux

651* Les **[serveurs MCP](/fr/mcp)** configurés dans `~/.claude.json` ou `.mcp.json` fonctionnent dans les deux

652* Les **[hooks](/fr/hooks)** et **[skills](/fr/skills)** définis dans les paramètres s'appliquent aux deux

653* Les **[paramètres](/fr/settings)** dans `~/.claude.json` et `~/.claude/settings.json` sont partagés. Les règles de permission, les outils autorisés et d'autres paramètres dans `settings.json` s'appliquent aux sessions Desktop.

654* **Modèles** : Sonnet, Opus et Haiku sont disponibles dans les deux. Dans Desktop, sélectionnez le modèle à partir de la liste déroulante à côté du bouton d'envoi. Vous pouvez modifier le modèle pendant la session à partir de la même liste déroulante.

655 

656<Note>

657 **Serveurs MCP : application de chat de bureau vs Claude Code** : les serveurs MCP configurés pour l'application de chat Claude Desktop dans `claude_desktop_config.json` sont séparés de Claude Code et n'apparaîtront pas dans l'onglet Code. Pour utiliser les serveurs MCP dans Claude Code, configurez-les dans `~/.claude.json` ou le fichier `.mcp.json` de votre projet. Voir [configuration MCP](/fr/mcp#installing-mcp-servers) pour les détails.

658</Note>

659 

660### Comparaison des fonctionnalités

661 

662Ce tableau compare les capacités principales entre la CLI et Desktop. Pour une liste complète des drapeaux CLI, voir la [référence CLI](/fr/cli-reference).

663 

664| Fonctionnalité | CLI | Desktop |

665| -------------------------------------------------- | --------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

666| Modes de permission | Tous les modes y compris `dontAsk` | Demander les permissions, Accepter automatiquement les modifications, Plan mode, Auto et Contourner les permissions via Paramètres |

667| `--dangerously-skip-permissions` | Drapeau CLI | Mode Contourner les permissions. Activez dans Paramètres → Claude Code → « Autoriser le mode de contournement des permissions » |

668| [Fournisseurs tiers](/fr/third-party-integrations) | Bedrock, Vertex, Foundry | API d'Anthropic par défaut. Les déploiements d'entreprise peuvent configurer Vertex AI et les fournisseurs de passerelle. Voir le [guide de configuration d'entreprise](https://support.claude.com/en/articles/12622667-enterprise-configuration). |

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

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

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

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

673| Isolation des sessions | Drapeau [`--worktree`](/fr/cli-reference) | Worktrees automatiques |

674| Sessions multiples | Terminaux séparés | Onglets de barre latérale |

675| Tâches récurrentes | Tâches cron, pipelines CI | [Tâches planifiées](/fr/desktop-scheduled-tasks) |

676| Utilisation informatique | [Activer via `/mcp`](/fr/computer-use) sur macOS | [Contrôle d'application et d'écran](#let-claude-use-your-computer) sur macOS et Windows |

677| Intégration Dispatch | Non disponible | [Sessions Dispatch](#sessions-from-dispatch) dans la barre latérale |

678| Scripts et automatisation | [`--print`](/fr/cli-reference), [Agent SDK](/fr/headless) | Non disponible |

679 

680### Ce qui n'est pas disponible dans Desktop

681 

682Les fonctionnalités suivantes sont disponibles uniquement dans la CLI ou l'extension VS Code :

683 

684* **Fournisseurs tiers** : Desktop se connecte à l'API d'Anthropic par défaut. Les déploiements d'entreprise peuvent configurer Vertex AI et les fournisseurs de passerelle via [paramètres gérés](https://support.claude.com/en/articles/12622667-enterprise-configuration). Pour Bedrock ou Foundry, utilisez la [CLI](/fr/quickstart).

685* **Linux** : l'application de bureau est disponible sur macOS et Windows uniquement. Sur Linux, utilisez la [CLI](/fr/quickstart).

686* **Suggestions de code en ligne** : Desktop ne fournit pas de suggestions de style autocomplétion. Il fonctionne via des prompts conversationnels et des modifications de code explicites.

687* **Équipes d'agents** : l'orchestration multi-agents est disponible via la [CLI](/fr/agent-teams) et [Agent SDK](/fr/headless), pas dans Desktop.

688 

689## Dépannage

690 

691Les sections ci-dessous couvrent les problèmes spécifiques à l'application de bureau. Pour les erreurs API d'exécution qui apparaissent dans le chat comme `API Error: 500`, `529 Overloaded`, `429` ou `Prompt is too long`, voir la [référence des erreurs](/fr/errors). Ces erreurs et leurs correctifs sont les mêmes sur la CLI, le bureau et le web.

692 

693### Vérifier votre version

694 

695Pour voir quelle version de l'application de bureau vous exécutez :

696 

697* **macOS** : cliquez sur **Claude** dans la barre de menu, puis **À propos de Claude**

698* **Windows** : cliquez sur **Aide**, puis **À propos**

699 

700Cliquez sur le numéro de version pour le copier dans votre presse-papiers.

701 

702### Erreurs 403 ou d'authentification dans l'onglet Code

703 

704Si vous voyez `Error 403: Forbidden` ou d'autres défaillances d'authentification lors de l'utilisation de l'onglet Code :

705 

7061. Déconnectez-vous et reconnectez-vous à partir du menu de l'application. C'est le correctif le plus courant.

7072. Vérifiez que vous avez un abonnement payant actif : Pro, Max, Team ou Enterprise.

7083. Si la CLI fonctionne mais Desktop ne fonctionne pas, quittez complètement l'application de bureau, pas seulement fermez la fenêtre, puis rouvrez et reconnectez-vous.

7094. Vérifiez votre connexion Internet et vos paramètres de proxy.

710 

711### Écran blanc ou bloqué au lancement

712 

713Si l'application s'ouvre mais affiche un écran blanc ou ne répond pas :

714 

7151. Redémarrez l'application.

7162. Vérifiez les mises à jour en attente. L'application se met à jour automatiquement au lancement.

7173. Sur Windows, vérifiez l'Observateur d'événements pour les journaux de crash sous **Journaux Windows → Application**.

718 

719### « Impossible de charger la session »

720 

721Si vous voyez `Failed to load session`, le dossier sélectionné peut ne plus exister, un référentiel Git peut nécessiter Git LFS qui n'est pas installé, ou les permissions de fichier peuvent empêcher l'accès. Essayez de sélectionner un dossier différent ou redémarrez l'application.

722 

723### Session ne trouvant pas les outils installés

724 

725Si Claude ne peut pas trouver des outils comme `npm`, `node` ou d'autres commandes CLI, vérifiez que les outils fonctionnent dans votre terminal régulier, vérifiez que votre profil shell configure correctement PATH et redémarrez l'application de bureau pour recharger les variables d'environnement.

726 

727### Erreurs Git et Git LFS

728 

729Sur Windows, Git est requis pour que l'onglet Code démarre les sessions locales. Si vous voyez « Git is required », installez [Git pour Windows](https://git-scm.com/downloads/win) et redémarrez l'application.

730 

731Si vous voyez « Git LFS is required by this repository but is not installed », installez Git LFS à partir de [git-lfs.com](https://git-lfs.com/), exécutez `git lfs install` et redémarrez l'application.

732 

733### Les serveurs MCP ne fonctionnent pas sur Windows

734 

735Si les bascules du serveur MCP ne répondent pas ou que les serveurs ne se connectent pas sur Windows, vérifiez que le serveur est correctement configuré dans vos paramètres, redémarrez l'application, vérifiez que le processus du serveur s'exécute dans le Gestionnaire des tâches et examinez les journaux du serveur pour les erreurs de connexion.

736 

737### L'application ne veut pas quitter

738 

739* **macOS** : appuyez sur Cmd+Q. Si l'application ne répond pas, utilisez Forcer à quitter avec Cmd+Option+Esc, sélectionnez Claude et cliquez sur Forcer à quitter.

740* **Windows** : utilisez le Gestionnaire des tâches avec Ctrl+Maj+Esc pour terminer le processus Claude.

741 

742### Problèmes spécifiques à Windows

743 

744* **PATH non mis à jour après l'installation** : ouvrez une nouvelle fenêtre de terminal. Les mises à jour PATH s'appliquent uniquement aux nouvelles sessions de terminal.

745* **Erreur d'installation simultanée** : si vous voyez une erreur concernant une autre installation en cours mais qu'il n'y en a pas, essayez d'exécuter l'installateur en tant qu'administrateur.

746 

747### « La branche n'existe pas encore » lors de l'ouverture dans la CLI

748 

749Les sessions distantes peuvent créer des branches qui n'existent pas sur votre machine locale. Cliquez sur le nom de la branche dans la barre d'outils de la session pour le copier, puis récupérez-le localement :

750 

751```bash theme={null}

752git fetch origin <branch-name>

753git checkout <branch-name>

754```

755 

756### Toujours bloqué ?

757 

758* Recherchez ou signalez un bug sur [GitHub Issues](https://github.com/anthropics/claude-code/issues)

759* Visitez le [centre de support Claude](https://support.claude.com/)

760 

761Lors du signalement d'un bug, incluez la version de votre application de bureau, votre système d'exploitation, le message d'erreur exact et les journaux pertinents. Sur macOS, vérifiez Console.app. Sur Windows, vérifiez Observateur d'événements → Journaux Windows → Application.

desktop-quickstart.md +129 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Démarrer avec l'application de bureau

6 

7> Installez Claude Code sur le bureau et commencez votre première session de codage

8 

9L'application de bureau vous donne accès à Claude Code avec une interface graphique conçue pour exécuter plusieurs sessions côte à côte : une barre latérale pour gérer les travaux parallèles, une disposition glisser-déposer avec un terminal intégré et un éditeur de fichiers, un examen des différences visuelles, un aperçu en direct de l'application, la surveillance des PR GitHub avec fusion automatique, et les tâches planifiées. Aucun terminal requis.

10 

11<CardGroup cols={2}>

12 <Card title="Download for macOS" icon="apple" href="https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code&utm_medium=docs">

13 Universal build for Intel and Apple Silicon

14 </Card>

15 

16 <Card title="Download for Windows" icon="windows" href="https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code&utm_medium=docs">

17 For x64 processors

18 </Card>

19</CardGroup>

20 

21For Windows ARM64, download the [ARM64 installer](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). The desktop app is not available on Linux; use the [CLI](/en/quickstart) instead.

22 

23<Note>

24 Claude Code nécessite un [abonnement Pro, Max, Team ou Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=desktop_quickstart_pricing).

25</Note>

26 

27Cette page vous guide dans l'installation de l'application et le démarrage de votre première session. Si vous êtes déjà configuré, consultez [Utiliser Claude Code Desktop](/fr/desktop) pour la référence complète.

28 

29L'application de bureau a trois onglets :

30 

31* **Chat** : Conversation générale sans accès aux fichiers, similaire à claude.ai.

32* **Cowork** : Un agent autonome en arrière-plan qui travaille sur des tâches dans une VM cloud avec son propre environnement. Il peut fonctionner indépendamment pendant que vous faites autre chose.

33* **Code** : Un assistant de codage interactif avec accès direct à vos fichiers locaux. Vous examinez et approuvez chaque modification en temps réel.

34 

35Chat et Cowork sont couverts dans les [articles d'assistance Claude Desktop](https://support.claude.com/en/collections/16163169-claude-desktop). Cette page se concentre sur l'onglet **Code**.

36 

37## Installer

38 

39<Steps>

40 <Step title="Installer et se connecter">

41 Téléchargez le programme d'installation pour votre plateforme à partir des liens ci-dessus et exécutez-le. Lancez Claude à partir de votre dossier Applications sur macOS ou du menu Démarrer sur Windows, puis connectez-vous avec votre compte Anthropic.

42 </Step>

43 

44 <Step title="Ouvrir l'onglet Code">

45 Cliquez sur l'onglet **Code** en haut au centre. Si cliquer sur Code vous invite à mettre à niveau, vous devez d'abord [vous abonner à un plan payant](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=desktop_quickstart_upgrade). S'il vous invite à vous connecter en ligne, complétez la connexion et redémarrez l'application. Si vous voyez une erreur 403, consultez [dépannage de l'authentification](/fr/desktop#403-or-authentication-errors-in-the-code-tab).

46 </Step>

47</Steps>

48 

49L'application de bureau inclut Claude Code. Vous n'avez pas besoin d'installer Node.js ou la CLI séparément. Pour utiliser `claude` depuis le terminal, installez la CLI séparément. Consultez [Démarrer avec la CLI](/fr/quickstart).

50 

51## Commencer votre première session

52 

53Avec l'onglet Code ouvert, choisissez un projet et donnez à Claude quelque chose à faire.

54 

55<Steps>

56 <Step title="Choisir un environnement et un dossier">

57 Sélectionnez **Local** pour exécuter Claude sur votre machine en utilisant vos fichiers directement. Cliquez sur **Sélectionner le dossier** et choisissez votre répertoire de projet.

58 

59 <Tip>

60 Commencez par un petit projet que vous connaissez bien. C'est le moyen le plus rapide de voir ce que Claude Code peut faire. Sur Windows, [Git](https://git-scm.com/downloads/win) doit être installé pour que les sessions locales fonctionnent. La plupart des Mac incluent Git par défaut.

61 </Tip>

62 

63 Vous pouvez également sélectionner :

64 

65 * **Remote** : Exécutez les sessions sur l'infrastructure cloud d'Anthropic qui continue même si vous fermez l'application. Les sessions distantes utilisent la même infrastructure que [Claude Code sur le web](/fr/claude-code-on-the-web).

66 * **SSH** : Connectez-vous à une machine distante via SSH (vos propres serveurs, VM cloud ou conteneurs de développement). Claude Code doit être installé sur la machine distante.

67 </Step>

68 

69 <Step title="Choisir un modèle">

70 Sélectionnez un modèle dans la liste déroulante à côté du bouton d'envoi. Consultez [modèles](/fr/model-config#available-models) pour une comparaison d'Opus, Sonnet et Haiku. Vous pouvez changer le modèle plus tard à partir de la même liste déroulante.

71 </Step>

72 

73 <Step title="Dire à Claude ce qu'il faut faire">

74 Tapez ce que vous voulez que Claude fasse :

75 

76 * `Trouver un commentaire TODO et le corriger`

77 * `Ajouter des tests pour la fonction principale`

78 * `Créer un CLAUDE.md avec des instructions pour cette base de code`

79 

80 Une [session](/fr/desktop#work-in-parallel-with-sessions) est une conversation avec Claude sur votre code. Chaque session suit son propre contexte et ses modifications, vous pouvez donc travailler sur plusieurs tâches sans qu'elles n'interfèrent les unes avec les autres.

81 </Step>

82 

83 <Step title="Examiner et accepter les modifications">

84 Par défaut, l'onglet Code démarre en [mode Demander les permissions](/fr/desktop#choose-a-permission-mode), où Claude propose des modifications et attend votre approbation avant de les appliquer. Vous verrez :

85 

86 1. Une [vue de différence](/fr/desktop#review-changes-with-diff-view) montrant exactement ce qui changera dans chaque fichier

87 2. Des boutons Accepter/Rejeter pour approuver ou refuser chaque modification

88 3. Des mises à jour en temps réel pendant que Claude travaille sur votre demande

89 

90 Si vous rejetez une modification, Claude vous demandera comment vous aimeriez procéder différemment. Vos fichiers ne sont pas modifiés tant que vous n'acceptez pas.

91 </Step>

92</Steps>

93 

94## Et maintenant ?

95 

96Vous avez fait votre première modification. Pour la référence complète sur tout ce que Desktop peut faire, consultez [Utiliser Claude Code Desktop](/fr/desktop). Voici quelques choses à essayer ensuite.

97 

98**Interrompre et diriger.** Vous pouvez interrompre Claude à tout moment. S'il prend la mauvaise direction, cliquez sur le bouton d'arrêt ou tapez votre correction et appuyez sur **Entrée**. Claude arrête ce qu'il fait et s'ajuste en fonction de votre entrée. Vous n'avez pas besoin d'attendre qu'il finisse ou de recommencer.

99 

100**Donner à Claude plus de contexte.** Tapez `@filename` dans la boîte de saisie pour extraire un fichier spécifique dans la conversation, joignez des images et des PDF en utilisant le bouton de pièce jointe, ou glissez-déposez des fichiers directement dans la saisie. Plus Claude a de contexte, meilleurs sont les résultats. Consultez [Ajouter des fichiers et du contexte](/fr/desktop#add-files-and-context-to-prompts).

101 

102**Utiliser les skills pour les tâches répétables.** Tapez `/` ou cliquez sur **+** → **Slash commands** pour parcourir les [commandes intégrées](/fr/commands), les [skills personnalisés](/fr/skills) et les skills de plugin. Les skills sont des invites réutilisables que vous pouvez invoquer chaque fois que vous en avez besoin, comme des listes de contrôle d'examen de code ou des étapes de déploiement.

103 

104**Examiner les modifications avant de valider.** Après que Claude ait modifié les fichiers, un indicateur `+12 -1` apparaît. Cliquez dessus pour ouvrir la [vue de différence](/fr/desktop#review-changes-with-diff-view), examinez les modifications fichier par fichier et commentez des lignes spécifiques. Claude lit vos commentaires et révise. Cliquez sur **Examiner le code** pour que Claude évalue lui-même les différences et laisse des suggestions en ligne.

105 

106**Ajuster le contrôle que vous avez.** Votre [mode de permission](/fr/desktop#choose-a-permission-mode) contrôle l'équilibre. Demander les permissions (par défaut) nécessite une approbation avant chaque modification. Auto-accepter les modifications accepte automatiquement les modifications de fichiers pour une itération plus rapide. Le mode Plan permet à Claude de cartographier une approche sans toucher à aucun fichier, ce qui est utile avant une grande refonte.

107 

108**Ajouter des plugins pour plus de capacités.** Cliquez sur le bouton **+** à côté de la boîte de saisie et sélectionnez **Plugins** pour parcourir et installer les [plugins](/fr/desktop#install-plugins) qui ajoutent des skills, des agents, des MCP servers et bien plus.

109 

110**Arranger votre espace de travail.** Glissez-déposez les volets de chat, de différence, de terminal, de fichier et d'aperçu dans la disposition que vous souhaitez. Ouvrez le terminal avec **Ctrl+\`** pour exécuter des commandes aux côtés de votre session, ou cliquez sur un chemin de fichier pour l'ouvrir dans le volet de fichier. Consultez [Arranger votre espace de travail](/fr/desktop#arrange-your-workspace).

111 

112**Prévisualiser votre application.** Cliquez sur la liste déroulante **Preview** pour exécuter votre serveur de développement directement dans le bureau. Claude peut voir l'application en cours d'exécution, tester les points de terminaison, inspecter les journaux et itérer sur ce qu'il voit. Consultez [Prévisualiser votre application](/fr/desktop#preview-your-app).

113 

114**Suivre votre demande de tirage.** Après avoir ouvert une PR, Claude Code surveille les résultats des vérifications CI et peut corriger automatiquement les défaillances ou fusionner la PR une fois que toutes les vérifications sont réussies. Consultez [Surveiller l'état de la demande de tirage](/fr/desktop#monitor-pull-request-status).

115 

116**Mettre Claude sur un calendrier.** Configurez les [tâches planifiées](/fr/desktop-scheduled-tasks) pour exécuter Claude automatiquement de manière récurrente : un examen de code quotidien chaque matin, un audit de dépendances hebdomadaire ou un briefing qui extrait de vos outils connectés.

117 

118**Augmenter l'échelle quand vous êtes prêt.** Ouvrez les [sessions parallèles](/fr/desktop#work-in-parallel-with-sessions) à partir de la barre latérale pour travailler sur plusieurs tâches à la fois, chacune dans son propre Git worktree, et ouvrez le [volet des tâches](/fr/desktop#watch-background-tasks) pour regarder les sous-agents et les commandes en arrière-plan qu'une session exécute. Ouvrez un [chat latéral](/fr/desktop#ask-a-side-question-without-derailing-the-session) pour poser une question sans dérailler le fil principal. Envoyez les [travaux de longue durée vers le cloud](/fr/desktop#run-long-running-tasks-remotely) pour qu'ils continuent même si vous fermez l'application, ou [continuez une session sur le web ou dans votre IDE](/fr/desktop#continue-in-another-surface) si une tâche prend plus de temps que prévu. [Connectez les outils externes](/fr/desktop#extend-claude-code) comme GitHub, Slack et Linear pour réunir votre flux de travail.

119 

120## Venant de la CLI ?

121 

122Desktop exécute le même moteur que la CLI avec une interface graphique. Vous pouvez exécuter les deux simultanément sur le même projet, et ils partagent la configuration (fichiers CLAUDE.md, MCP servers, hooks, skills et paramètres). Pour une comparaison complète des fonctionnalités, des équivalents de drapeaux et de ce qui n'est pas disponible dans Desktop, consultez [Comparaison CLI](/fr/desktop#coming-from-the-cli).

123 

124## Prochaines étapes

125 

126* [Utiliser Claude Code Desktop](/fr/desktop) : modes de permission, sessions parallèles, vue de différence, connecteurs et configuration d'entreprise

127* [Dépannage](/fr/desktop#troubleshooting) : solutions aux erreurs courantes et problèmes de configuration

128* [Meilleures pratiques](/fr/best-practices) : conseils pour rédiger des invites efficaces et tirer le meilleur parti de Claude Code

129* [Flux de travail courants](/fr/common-workflows) : tutoriels pour le débogage, la refonte, les tests et bien plus

devcontainer.md +194 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Conteneurs de développement

6 

7> Exécutez Claude Code dans un conteneur de développement pour des environnements cohérents et isolés dans toute votre équipe.

8 

9Un [conteneur de développement](https://containers.dev/), ou dev container, vous permet de définir un environnement identique et isolé que chaque ingénieur de votre équipe peut exécuter. Avec Claude Code installé dans ce conteneur, les commandes que Claude exécute s'exécutent à l'intérieur plutôt que sur la machine hôte, tandis que les modifications apportées à vos fichiers de projet apparaissent dans votre référentiel local au fur et à mesure que vous travaillez.

10 

11Cette page couvre [l'installation de Claude Code dans un dev container](#add-claude-code-to-your-dev-container) et les rubriques de configuration qui suivent. Chaque rubrique est autonome, donc accédez à celles qui correspondent à ce que vous devez configurer :

12 

13* [Persister l'authentification et les paramètres entre les reconstructions](#persist-authentication-and-settings-across-rebuilds)

14* [Appliquer la politique organisationnelle](#enforce-organization-policy)

15* [Restreindre la sortie réseau](#restrict-network-egress)

16* [Exécuter sans invites de permission](#run-without-permission-prompts)

17 

18<Warning>

19 Bien que le dev container offre des protections substantielles, aucun système n'est complètement immunisé contre toutes les attaques.

20 Lorsqu'il est exécuté avec `--dangerously-skip-permissions`, les dev containers n'empêchent pas un projet malveillant d'exfiltrer quoi que ce soit d'accessible à l'intérieur du conteneur, y compris les identifiants Claude Code stockés dans [`~/.claude`](/fr/claude-directory).

21 Utilisez les dev containers uniquement lors du développement avec des référentiels de confiance, et surveillez les activités de Claude.

22 Évitez de monter les secrets de l'hôte tels que `~/.ssh` ou les fichiers d'identifiants cloud dans le conteneur ; préférez les jetons limités au référentiel ou à courte durée de vie.

23</Warning>

24 

25<Accordion title="Comment les dev containers fonctionnent avec votre éditeur">

26 <img src="https://mintcdn.com/claude-code/YvJyjZfd9yMihr0i/images/devcontainer-architecture.svg?fit=max&auto=format&n=YvJyjZfd9yMihr0i&q=85&s=9017b1d16a446c6cc37ba562f35b9aae" className="dark:hidden" alt="Diagramme montrant un éditeur sur l'hôte se connectant à un dev container Docker. Claude Code, le terminal et les outils de compilation s'exécutent à l'intérieur du conteneur. Le référentiel hôte est monté en bind dans le conteneur en tant qu'espace de travail." width="640" height="300" data-path="images/devcontainer-architecture.svg" />

27 

28 <img src="https://mintcdn.com/claude-code/YvJyjZfd9yMihr0i/images/devcontainer-architecture-dark.svg?fit=max&auto=format&n=YvJyjZfd9yMihr0i&q=85&s=ef00c8e25b1ea7a3a152895f1488831b" className="hidden dark:block" alt="Diagramme montrant un éditeur sur l'hôte se connectant à un dev container Docker. Claude Code, le terminal et les outils de compilation s'exécutent à l'intérieur du conteneur. Le référentiel hôte est monté en bind dans le conteneur en tant qu'espace de travail." width="640" height="300" data-path="images/devcontainer-architecture-dark.svg" />

29 

30 Un dev container s'exécute en tant que conteneur Docker, soit sur votre machine, soit sur un hôte cloud tel que GitHub Codespaces. Un éditeur qui prend en charge la spécification Dev Containers, tel que VS Code, GitHub Codespaces, un IDE JetBrains ou Cursor, se connecte à ce conteneur : vous parcourez et modifiez les fichiers dans l'éditeur comme d'habitude, mais le terminal intégré, les serveurs de langage et les outils de compilation s'exécutent tous à l'intérieur du conteneur plutôt que sur votre hôte. Les éditeurs sans support de dev container, tels que Vim simple, ne font pas partie de ce flux de travail.

31 

32 Claude Code s'exécute à l'intérieur du conteneur, il voit donc les mêmes fichiers, dépendances et outils que le reste de la chaîne d'outils de votre projet. Dans VS Code, vous pouvez utiliser soit le [panneau d'extension Claude Code](/fr/vs-code), soit exécuter `claude` dans le terminal intégré ; les deux s'exécutent à l'intérieur du conteneur et partagent la même configuration `~/.claude`.

33</Accordion>

34 

35## Ajouter Claude Code à votre dev container

36 

37Claude Code s'installe dans n'importe quel dev container via la [Fonctionnalité Claude Code Dev Container](https://github.com/anthropics/devcontainer-features/tree/main/src/claude-code).

38 

39Les paramètres fonctionnent avec n'importe quel outil qui prend en charge la spécification Dev Containers, tel que VS Code, GitHub Codespaces ou les IDE JetBrains. Les étapes ci-dessous utilisent VS Code comme exemple.

40 

41Lorsque vous ouvrez le conteneur dans VS Code ou Codespaces, la fonctionnalité ajoute également l'extension VS Code Claude Code ; les autres éditeurs ignorent cette partie.

42 

43<Tip>

44 Nouveau dans les dev containers ? Le [tutoriel VS Code Dev Containers](https://code.visualstudio.com/docs/devcontainers/tutorial) vous guide à travers l'installation de Docker, l'extension et l'ouverture de votre premier conteneur. Pour un exemple plus complet et renforcé avec un pare-feu et des volumes persistants, voir [Essayer le conteneur de référence](#try-the-reference-container).

45</Tip>

46 

47<Steps>

48 <Step title="Créer ou mettre à jour devcontainer.json">

49 Enregistrez ce qui suit en tant que `.devcontainer/devcontainer.json` dans votre référentiel, ou ajoutez le bloc `features` à votre fichier existant.

50 

51 La balise de version à la fin, telle que `:1.0`, épingle le script d'installation de la fonctionnalité, pas la version de Claude Code. La fonctionnalité installe la dernière version de Claude Code, et Claude Code se met à jour automatiquement à l'intérieur du conteneur par défaut.

52 

53 Pour épingler la version CLI ou désactiver la mise à jour automatique, voir [Appliquer la politique organisationnelle](#enforce-organization-policy).

54 

55 ```json .devcontainer/devcontainer.json theme={null}

56 {

57 "image": "mcr.microsoft.com/devcontainers/base:ubuntu",

58 "features": {

59 "ghcr.io/anthropics/devcontainer-features/claude-code:1.0": {}

60 }

61 }

62 ```

63 

64 Remplacez la ligne `image` par l'image de base de votre projet ou supprimez-la si votre fichier existant utilise un Dockerfile.

65 </Step>

66 

67 <Step title="Reconstruire le conteneur">

68 Ouvrez la Palette de commandes VS Code avec `Cmd+Shift+P` sur Mac ou `Ctrl+Shift+P` sur Windows et Linux, et exécutez **Dev Containers: Rebuild Container**.

69 

70 Pour les autres outils, suivez l'action de reconstruction de cet outil : voir [reconstruction dans GitHub Codespaces](https://docs.github.com/en/codespaces/developing-in-a-codespace/rebuilding-the-container-in-a-codespace), la [CLI Dev Containers](https://github.com/devcontainers/cli), ou la documentation de dev container de votre IDE.

71 </Step>

72 

73 <Step title="Se connecter à Claude Code">

74 Ouvrez un terminal dans le conteneur reconstruit et exécutez `claude`, puis suivez l'invite d'authentification.

75 </Step>

76</Steps>

77 

78Ce que vous voyez à l'invite d'authentification dépend de votre fournisseur :

79 

80* **Anthropic** : connectez-vous via un navigateur avec votre compte Claude ou Anthropic Console

81* **[Amazon Bedrock, Google Vertex AI ou Microsoft Foundry](/fr/third-party-integrations)** : Claude Code utilise vos identifiants de fournisseur cloud, sans invite de navigateur

82 

83Pour les fournisseurs cloud, transmettez les identifiants dans le conteneur en tant que variables d'environnement via `containerEnv`, un secret Codespaces ou l'identité de charge de travail de votre cloud plutôt que de monter les fichiers d'identifiants depuis l'hôte. Voir [Amazon Bedrock](/fr/amazon-bedrock), [Google Vertex AI](/fr/google-vertex-ai) ou [Microsoft Foundry](/fr/microsoft-foundry) pour la chaîne d'identifiants que Claude Code lit.

84 

85Voir [Choisir votre fournisseur d'API](/fr/admin-setup#choose-your-api-provider) pour décider quel chemin convient à votre organisation.

86 

87<Note>

88 Si la connexion au navigateur se termine mais le rappel n'atteint jamais le conteneur, copiez le code affiché dans le navigateur et collez-le à l'invite `Paste code here if prompted` dans le terminal. Cela peut se produire lorsque la redirection de port de l'éditeur n'achemine pas le rappel localhost.

89</Note>

90 

91## Persister l'authentification et les paramètres entre les reconstructions

92 

93Par défaut, le répertoire personnel du conteneur est supprimé lors de la reconstruction, les ingénieurs doivent donc se reconnecter à chaque fois. Claude Code stocke son jeton d'authentification, les paramètres utilisateur et l'historique de session sous [`~/.claude`](/fr/claude-directory). Montez un volume nommé à ce chemin pour conserver cet état entre les reconstructions.

94 

95L'exemple suivant monte un volume au répertoire personnel de l'utilisateur `node` :

96 

97```json devcontainer.json theme={null}

98"mounts": [

99 "source=claude-code-config,target=/home/node/.claude,type=volume"

100]

101```

102 

103Remplacez `/home/node` par le répertoire personnel de l'utilisateur `remoteUser` de votre conteneur. Si vous montez le volume ailleurs que `~/.claude`, définissez [`CLAUDE_CONFIG_DIR`](/fr/env-vars) sur le chemin de montage afin que Claude Code y lise et écrive.

104 

105Pour isoler l'état par projet plutôt que de partager un volume sur tous les référentiels, incluez la variable `${devcontainerId}` dans le nom de la source. La [configuration de référence](https://github.com/anthropics/claude-code/blob/main/.devcontainer/devcontainer.json) utilise `source=claude-code-config-${devcontainerId}` à cette fin.

106 

107Dans GitHub Codespaces, `~/.claude` persiste lors de l'arrêt et du redémarrage d'un codespace, mais est toujours effacé lorsque vous reconstruisez le conteneur, donc le montage de volume ci-dessus s'applique également là. Pour conserver l'authentification entre les codespaces, stockez `ANTHROPIC_API_KEY` ou un `CLAUDE_CODE_OAUTH_TOKEN` de [`claude setup-token`](/fr/authentication#generate-a-long-lived-token) en tant que [secret Codespaces](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-your-account-specific-secrets-for-github-codespaces) ; Codespaces rend les secrets disponibles en tant que variables d'environnement à l'intérieur du conteneur automatiquement.

108 

109## Appliquer la politique organisationnelle

110 

111Un dev container est un endroit pratique pour appliquer la politique organisationnelle, car la même image et configuration s'exécutent sur la machine de chaque ingénieur.

112 

113Claude Code lit `/etc/claude-code/managed-settings.json` sur Linux et l'applique avec la plus haute priorité dans la [hiérarchie des paramètres](/fr/settings#how-scopes-interact), donc les valeurs là-bas remplacent tout ce qu'un ingénieur définit dans `~/.claude` ou le répertoire `.claude/` du projet. Copiez le fichier en place depuis votre Dockerfile :

114 

115```dockerfile Dockerfile theme={null}

116RUN mkdir -p /etc/claude-code

117COPY managed-settings.json /etc/claude-code/managed-settings.json

118```

119 

120Parce que le Dockerfile vit dans le référentiel, n'importe qui ayant accès en écriture peut modifier ou supprimer cette étape. Pour une politique que les ingénieurs ne peuvent pas contourner en modifiant les fichiers du référentiel, livrez les paramètres gérés via [paramètres gérés par le serveur](/fr/server-managed-settings) ou votre MDM à la place. Voir [fichiers de paramètres gérés](/fr/settings#settings-files) pour les clés disponibles et les autres chemins de livraison.

121 

122Pour définir les [variables d'environnement](/fr/env-vars) qui s'appliquent à chaque session Claude Code dans le conteneur, ajoutez-les à `containerEnv` dans votre `devcontainer.json`. L'exemple suivant désactive la télémétrie et les rapports d'erreur et empêche Claude Code de se mettre à jour automatiquement après l'installation :

123 

124```json devcontainer.json theme={null}

125"containerEnv": {

126 "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",

127 "DISABLE_AUTOUPDATER": "1"

128}

129```

130 

131La Fonctionnalité Dev Container installe toujours la dernière version de Claude Code. Pour épingler une version spécifique de Claude Code pour des builds reproductibles, installez-la depuis votre Dockerfile avec `npm install -g @anthropic-ai/claude-code@X.Y.Z` au lieu d'utiliser la fonctionnalité, et définissez `DISABLE_AUTOUPDATER` comme indiqué ci-dessus.

132 

133Pour la liste complète des contrôles de politique incluant les règles de permission, les restrictions d'outils et les listes blanches de serveurs MCP, voir [Configurer Claude Code pour votre organisation](/fr/admin-setup).

134 

135Pour rendre les [serveurs MCP](/fr/mcp) disponibles à l'intérieur du conteneur, définissez-les à [portée du projet](/fr/mcp#mcp-installation-scopes) dans un fichier `.mcp.json` à la racine du référentiel afin qu'ils soient vérifiés aux côtés de votre configuration de dev container. Installez tous les binaires sur lesquels les serveurs stdio locaux dépendent dans votre Dockerfile, et ajoutez les domaines de serveur distant à votre liste blanche réseau.

136 

137## Restreindre la sortie réseau

138 

139Vous pouvez limiter le trafic sortant du conteneur aux seuls domaines dont Claude Code a besoin. Voir [Exigences d'accès réseau](/fr/network-config#network-access-requirements) pour les domaines d'inférence et d'authentification, et [Services de télémétrie](/fr/data-usage#telemetry-services) pour les connexions de télémétrie et de rapport d'erreur optionnelles et comment les désactiver.

140 

141Le conteneur de référence inclut un script [`init-firewall.sh`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/init-firewall.sh) qui bloque tout le trafic sortant sauf les domaines dont Claude Code et vos outils de développement ont besoin. L'exécution d'un pare-feu à l'intérieur d'un conteneur nécessite des permissions supplémentaires, donc la référence ajoute les capacités `NET_ADMIN` et `NET_RAW` via `runArgs`. Le script de pare-feu et ces capacités ne sont pas requis pour Claude Code lui-même : vous pouvez les laisser de côté et vous fier à vos propres contrôles réseau à la place.

142 

143## Exécuter sans invites de permission

144 

145Parce que le conteneur exécute Claude Code en tant qu'utilisateur non-root et confine l'exécution des commandes au conteneur, vous pouvez passer `--dangerously-skip-permissions` pour un fonctionnement sans surveillance. La CLI rejette cet indicateur lorsqu'elle est lancée en tant que root, donc confirmez que `remoteUser` est défini sur un compte non-root.

146 

147Ignorer les invites de permission supprime votre opportunité d'examiner les appels d'outils avant qu'ils ne s'exécutent. Claude peut toujours modifier n'importe quel fichier dans l'espace de travail monté en bind, qui apparaît directement sur votre hôte, et atteindre tout ce que la politique réseau du conteneur permet. Associez cet indicateur aux [restrictions de sortie réseau](#restrict-network-egress) ci-dessus pour limiter ce qu'une session contournée peut atteindre.

148 

149Si vous voulez moins d'invites sans désactiver les contrôles de sécurité, envisagez plutôt le [mode auto](/fr/permission-modes#eliminate-prompts-with-auto-mode), qui a un classificateur examinant les actions avant qu'elles ne s'exécutent. Pour empêcher les ingénieurs d'utiliser `--dangerously-skip-permissions` du tout, définissez `permissions.disableBypassPermissionsMode` sur `"disable"` dans les [paramètres gérés](/fr/settings#permission-settings).

150 

151## Essayer le conteneur de référence

152 

153Le référentiel [`anthropics/claude-code`](https://github.com/anthropics/claude-code/tree/main/.devcontainer) inclut un exemple de dev container qui combine la CLI, le pare-feu de sortie, les volumes persistants et un shell basé sur Zsh. Il est fourni comme exemple fonctionnant plutôt que comme image de base maintenue ; utilisez-le pour voir comment les pièces s'assemblent avant de les appliquer à votre propre configuration.

154 

155<Steps>

156 <Step title="Installer les prérequis">

157 Installez VS Code et l'[extension Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers).

158 </Step>

159 

160 <Step title="Cloner la référence">

161 Clonez le [référentiel Claude Code](https://github.com/anthropics/claude-code) et ouvrez-le dans VS Code.

162 </Step>

163 

164 <Step title="Rouvrir dans le conteneur">

165 Lorsque vous y êtes invité, cliquez sur **Rouvrir dans le conteneur**, ou exécutez **Dev Containers: Reopen in Container** depuis la Palette de commandes.

166 </Step>

167 

168 <Step title="Démarrer Claude Code">

169 Une fois la construction du conteneur terminée, ouvrez un terminal avec `` Ctrl+` `` et exécutez `claude` pour vous connecter et démarrer votre première session.

170 </Step>

171</Steps>

172 

173Pour utiliser cette configuration avec votre propre projet, copiez le répertoire `.devcontainer/` dans votre référentiel et ajustez le Dockerfile pour votre chaîne d'outils, ou retournez à [Ajouter Claude Code à votre dev container](#add-claude-code-to-your-dev-container) pour ajouter uniquement la fonctionnalité à une configuration que vous avez déjà.

174 

175La configuration de référence se compose de trois fichiers. Aucun d'eux n'est requis lorsque vous ajoutez Claude Code à votre propre dev container via la fonctionnalité, mais ils montrent une façon de combiner les pièces.

176 

177| Fichier | Objectif |

178| ---------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |

179| [`devcontainer.json`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/devcontainer.json) | Montages de volume, capacités `runArgs`, extensions VS Code et `containerEnv` |

180| [`Dockerfile`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/Dockerfile) | Image de base, outils de développement et l'installation de Claude Code |

181| [`init-firewall.sh`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/init-firewall.sh) | Bloque tout le trafic réseau sortant sauf les domaines autorisés |

182 

183## Étapes suivantes

184 

185Une fois Claude Code en cours d'exécution dans votre dev container, les pages ci-dessous couvrent le reste d'un déploiement organisationnel : choisir un chemin d'authentification, livrer une politique gérée en dehors du référentiel, surveiller l'utilisation et comprendre ce que Claude Code stocke et envoie.

186 

187* [Configurer Claude Code pour votre organisation](/fr/admin-setup) : choisir un fournisseur d'authentification, décider comment la politique atteint les appareils et planifier le déploiement

188* [Paramètres gérés par le serveur](/fr/server-managed-settings) : livrer une politique gérée depuis la console d'administration Claude.ai afin que les ingénieurs ne puissent pas la contourner en modifiant les fichiers du référentiel

189* [Surveiller l'utilisation et l'activité d'audit](/fr/monitoring-usage) : exporter les métriques OpenTelemetry et examiner ce que votre équipe exécute

190* [Exigences d'accès réseau](/fr/network-config#network-access-requirements) : la liste complète des domaines pour les proxies et les pare-feu

191* [Services de télémétrie et désactivation](/fr/data-usage#telemetry-services) : ce que Claude Code envoie par défaut et les variables d'environnement qui le désactivent

192* [Explorer le répertoire `.claude`](/fr/claude-directory) : ce que le montage de volume contient, y compris les identifiants, les paramètres et l'historique de session

193* [Modèle de sécurité](/fr/security) : comment le système de permission de Claude Code, le sandboxing et les protections contre l'injection de prompt s'assemblent

194* [Modes de permission](/fr/permission-modes) : la gamme complète du mode plan au mode auto au contournement, et quand utiliser chacun

discover-plugins.md +427 −0 created

Details

1> ## Documentation Index

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

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

4 

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

6 

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

8 

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

10 

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

12 

13## Comment fonctionnent les marketplaces

14 

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

16 

17<Steps>

18 <Step title="Ajouter la marketplace">

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

20 </Step>

21 

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

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

24 </Step>

25</Steps>

26 

27Pensez-y comme ajouter un app store : ajouter le store vous donne accès pour parcourir sa collection, mais vous choisissez toujours quelles applications télécharger individuellement.

28 

29## Marketplace officielle Anthropic

30 

31La marketplace officielle Anthropic (`claude-plugins-official`) est automatiquement disponible quand vous démarrez Claude Code. Exécutez `/plugin` et allez à l'onglet **Discover** pour parcourir ce qui est disponible, ou consultez le catalogue sur [claude.com/plugins](https://claude.com/plugins).

32 

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

34 

35```shell theme={null}

36/plugin install github@claude-plugins-official

37```

38 

39<Note>

40 La marketplace officielle est maintenue par Anthropic. Pour soumettre un plugin à la marketplace officielle, utilisez l'un des formulaires de soumission intégrés à l'application :

41 

42 * **Claude.ai** : [claude.ai/settings/plugins/submit](https://claude.ai/settings/plugins/submit)

43 * **Console** : [platform.claude.com/plugins/submit](https://platform.claude.com/plugins/submit)

44 

45 Pour distribuer des plugins indépendamment, [créez votre propre marketplace](/fr/plugin-marketplaces) et partagez-la avec les utilisateurs.

46</Note>

47 

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

49 

50### Code intelligence

51 

52Les plugins de code intelligence activent l'outil LSP intégré de Claude Code, donnant à Claude la capacité de sauter aux définitions, trouver les références et voir les erreurs de type immédiatement après les modifications. Ces plugins configurent les connexions [Language Server Protocol](https://microsoft.github.io/language-server-protocol/), la même technologie qui alimente la code intelligence de VS Code.

53 

54Ces plugins nécessitent que le binaire du serveur de langage soit installé sur votre système. Si vous avez déjà un serveur de langage installé, Claude peut vous inviter à installer le plugin correspondant quand vous ouvrez un projet.

55 

56| Langage | Plugin | Binaire requis |

57| :--------- | :------------------ | :--------------------------- |

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

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

60| Go | `gopls-lsp` | `gopls` |

61| Java | `jdtls-lsp` | `jdtls` |

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

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

64| PHP | `php-lsp` | `intelephense` |

65| Python | `pyright-lsp` | `pyright-langserver` |

66| Rust | `rust-analyzer-lsp` | `rust-analyzer` |

67| Swift | `swift-lsp` | `sourcekit-lsp` |

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

69 

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

71 

72<Note>

73 Si vous voyez `Executable not found in $PATH` dans l'onglet `/plugin` Errors après avoir installé un plugin, installez le binaire requis du tableau ci-dessus.

74</Note>

75 

76#### Ce que Claude gagne des plugins de code intelligence

77 

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

79 

80* **Diagnostics automatiques** : après chaque modification de fichier que Claude effectue, le serveur de langage analyse les modifications et signale les erreurs et avertissements automatiquement. Claude voit les erreurs de type, les imports manquants et les problèmes de syntaxe sans avoir besoin d'exécuter un compilateur ou un linter. Si Claude introduit une erreur, il la remarque et la corrige dans le même tour. Cela ne nécessite aucune configuration au-delà de l'installation du plugin. Vous pouvez voir les diagnostics en ligne en appuyant sur **Ctrl+O** quand l'indicateur « diagnostics found » apparaît.

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

82 

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

84 

85### Intégrations externes

86 

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

88 

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

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

91* **Design** : `figma`

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

93* **Communication** : `slack`

94* **Monitoring** : `sentry`

95 

96### Workflows de développement

97 

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

99 

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

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

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

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

104 

105### Styles de sortie

106 

107Personnalisez comment Claude répond :

108 

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

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

111 

112## Essayez : ajouter la marketplace de démonstration

113 

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

115 

116<Steps>

117 <Step title="Ajouter la marketplace">

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

119 

120 ```shell theme={null}

121 /plugin marketplace add anthropics/claude-code

122 ```

123 

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

125 </Step>

126 

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

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

129 

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

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

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

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

134 

135 Allez à l'onglet **Discover** pour voir les plugins de la marketplace que vous venez d'ajouter.

136 </Step>

137 

138 <Step title="Installer un plugin">

139 Sélectionnez un plugin pour voir ses détails, puis choisissez une portée d'installation :

140 

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

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

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

144 

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

146 

147 Vous pouvez également installer directement depuis la ligne de commande :

148 

149 ```shell theme={null}

150 /plugin install commit-commands@anthropics-claude-code

151 ```

152 

153 Consultez [Configuration scopes](/fr/settings#configuration-scopes) pour en savoir plus sur les portées.

154 </Step>

155 

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

157 Après l'installation, exécutez `/reload-plugins` pour activer le plugin. Les commandes de plugin sont espacées par le nom du plugin, donc **commit-commands** fournit des commandes comme `/commit-commands:commit`.

158 

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

160 

161 ```shell theme={null}

162 /commit-commands:commit

163 ```

164 

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

166 

167 Chaque plugin fonctionne différemment. Consultez la description du plugin dans l'onglet **Discover** ou sa page d'accueil pour apprendre quelles commandes et capacités il fournit.

168 </Step>

169</Steps>

170 

171Le reste de ce guide couvre tous les moyens d'ajouter des marketplaces, installer des plugins et gérer votre configuration.

172 

173## Ajouter des marketplaces

174 

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

176 

177<Tip>

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

179</Tip>

180 

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

182* **URLs Git** : n'importe quelle URL de référentiel git (GitLab, Bitbucket, auto-hébergé)

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

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

185 

186### Ajouter depuis GitHub

187 

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

189 

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

191 

192```shell theme={null}

193/plugin marketplace add anthropics/claude-code

194```

195 

196### Ajouter depuis d'autres hôtes Git

197 

198Ajoutez n'importe quel référentiel git en fournissant l'URL complète. Cela fonctionne avec n'importe quel hôte Git, y compris GitLab, Bitbucket et les serveurs auto-hébergés :

199 

200Utilisation de HTTPS :

201 

202```shell theme={null}

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

204```

205 

206Utilisation de SSH :

207 

208```shell theme={null}

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

210```

211 

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

213 

214```shell theme={null}

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

216```

217 

218### Ajouter depuis des chemins locaux

219 

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

221 

222```shell theme={null}

223/plugin marketplace add ./my-marketplace

224```

225 

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

227 

228```shell theme={null}

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

230```

231 

232### Ajouter depuis des URLs distantes

233 

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

235 

236```shell theme={null}

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

238```

239 

240<Note>

241 Les marketplaces basées sur URL ont certaines limitations par rapport aux marketplaces basées sur Git. Si vous rencontrez des erreurs « path not found » lors de l'installation de plugins, consultez [Dépannage](/fr/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces).

242</Note>

243 

244## Installer des plugins

245 

246Une fois que vous avez ajouté des marketplaces, vous pouvez installer des plugins directement (installe à la portée utilisateur par défaut) :

247 

248```shell theme={null}

249/plugin install plugin-name@marketplace-name

250```

251 

252Pour choisir une [portée d'installation](/fr/settings#configuration-scopes) différente, utilisez l'interface interactive : exécutez `/plugin`, allez à l'onglet **Discover** et appuyez sur **Enter** sur un plugin. Vous verrez les options pour :

253 

254* **User scope** (par défaut) : installez pour vous-même dans tous les projets

255* **Project scope** : installez pour tous les collaborateurs sur ce référentiel (ajoute à `.claude/settings.json`)

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

257 

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

259 

260Exécutez `/plugin` et allez à l'onglet **Installed** pour voir vos plugins groupés par portée.

261 

262<Warning>

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

264</Warning>

265 

266## Gérer les plugins installés

267 

268Exécutez `/plugin` et allez à l'onglet **Installed** pour visualiser, activer, désactiver ou désinstaller vos plugins. Tapez pour filtrer la liste par nom ou description du plugin.

269 

270Vous pouvez également gérer les plugins avec des commandes directes.

271 

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

273 

274```shell theme={null}

275/plugin disable plugin-name@marketplace-name

276```

277 

278Réactiver un plugin désactivé :

279 

280```shell theme={null}

281/plugin enable plugin-name@marketplace-name

282```

283 

284Supprimer complètement un plugin :

285 

286```shell theme={null}

287/plugin uninstall plugin-name@marketplace-name

288```

289 

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

291 

292```shell theme={null}

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

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

295```

296 

297### Appliquer les modifications de plugin sans redémarrer

298 

299Quand vous installez, activez ou désactivez des plugins pendant une session, exécutez `/reload-plugins` pour récupérer toutes les modifications sans redémarrer :

300 

301```shell theme={null}

302/reload-plugins

303```

304 

305Claude Code recharge tous les plugins actifs et affiche les comptages pour les plugins, les skills, les agents, les hooks, les MCP servers de plugin et les serveurs LSP de plugin.

306 

307## Gérer les marketplaces

308 

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

310 

311### Utiliser l'interface interactive

312 

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

314 

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

316* Ajouter de nouvelles marketplaces

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

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

319 

320### Utiliser les commandes CLI

321 

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

323 

324Lister toutes les marketplaces configurées :

325 

326```shell theme={null}

327/plugin marketplace list

328```

329 

330Actualiser les listes de plugins d'une marketplace :

331 

332```shell theme={null}

333/plugin marketplace update marketplace-name

334```

335 

336Supprimer une marketplace :

337 

338```shell theme={null}

339/plugin marketplace remove marketplace-name

340```

341 

342<Warning>

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

344</Warning>

345 

346### Configurer les mises à jour automatiques

347 

348Claude Code peut automatiquement mettre à jour les marketplaces et leurs plugins installés au démarrage. Quand la mise à jour automatique est activée pour une marketplace, Claude Code actualise les données de la marketplace et met à jour les plugins installés vers leurs dernières versions. Si des plugins ont été mis à jour, vous verrez une notification vous invitant à exécuter `/reload-plugins`.

349 

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

351 

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

3532. Sélectionnez **Marketplaces**

3543. Choisissez une marketplace dans la liste

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

356 

357Les marketplaces officielles Anthropic ont la mise à jour automatique activée par défaut. Les marketplaces tierces et de développement local ont la mise à jour automatique désactivée par défaut.

358 

359Pour désactiver complètement toutes les mises à jour automatiques pour Claude Code et tous les plugins, définissez la variable d'environnement `DISABLE_AUTOUPDATER`. Consultez [Auto updates](/fr/setup#auto-updates) pour plus de détails.

360 

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

362 

363```bash theme={null}

364export DISABLE_AUTOUPDATER=1

365export FORCE_AUTOUPDATE_PLUGINS=1

366```

367 

368Cela est utile quand vous voulez gérer les mises à jour de Claude Code manuellement mais recevoir toujours les mises à jour automatiques des plugins.

369 

370## Configurer les marketplaces d'équipe

371 

372Les administrateurs d'équipe peuvent configurer l'installation automatique de marketplace pour les projets en ajoutant la configuration de marketplace à `.claude/settings.json`. Quand les membres de l'équipe font confiance au dossier du référentiel, Claude Code les invite à installer ces marketplaces et plugins.

373 

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

375 

376```json theme={null}

377{

378 "extraKnownMarketplaces": {

379 "my-team-tools": {

380 "source": {

381 "source": "github",

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

383 }

384 }

385 }

386}

387```

388 

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

390 

391## Sécurité

392 

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

394 

395## Dépannage

396 

397### Commande /plugin non reconnue

398 

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

400 

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

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

403 * **Homebrew** : `brew upgrade claude-code`

404 * **npm** : `npm update -g @anthropic-ai/claude-code`

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

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

407 

408### Problèmes courants

409 

410* **Marketplace ne se charge pas** : Vérifiez que l'URL est accessible et que `.claude-plugin/marketplace.json` existe au chemin

411* **Échecs d'installation de plugin** : Vérifiez que les URLs sources du plugin sont accessibles et que les référentiels sont publics (ou vous avez accès)

412* **Fichiers non trouvés après l'installation** : Les plugins sont copiés dans un cache, donc les chemins référençant des fichiers en dehors du répertoire du plugin ne fonctionneront pas

413* **Les skills du plugin n'apparaissent pas** : Effacez le cache avec `rm -rf ~/.claude/plugins/cache`, redémarrez Claude Code et réinstallez le plugin.

414 

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

416 

417### Problèmes de code intelligence

418 

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

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

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

422 

423## Prochaines étapes

424 

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

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

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

env-vars.md +238 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Variables d'environnement

6 

7> Référence complète des variables d'environnement qui contrôlent le comportement de Claude Code.

8 

9Claude Code prend en charge les variables d'environnement suivantes pour contrôler son comportement. Définissez-les dans votre shell avant de lancer `claude`, ou configurez-les dans [`settings.json`](/fr/settings#available-settings) sous la clé `env` pour les appliquer à chaque session ou les déployer dans votre équipe.

10 

11| Variable | Objectif |

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

13| `ANTHROPIC_API_KEY` | Clé API envoyée en tant qu'en-tête `X-Api-Key`. Lorsqu'elle est définie, cette clé est utilisée à la place de votre abonnement Claude Pro, Max, Team ou Enterprise, même si vous êtes connecté. En mode non interactif (`-p`), la clé est toujours utilisée lorsqu'elle est présente. En mode interactif, vous êtes invité à approuver la clé une fois avant qu'elle ne remplace votre abonnement. Pour utiliser votre abonnement à la place, exécutez `unset ANTHROPIC_API_KEY` |

14| `ANTHROPIC_AUTH_TOKEN` | Valeur personnalisée pour l'en-tête `Authorization` (la valeur que vous définissez ici sera préfixée par `Bearer `) |

15| `ANTHROPIC_BASE_URL` | Remplacer le point de terminaison de l'API pour acheminer les requêtes via un proxy ou une passerelle. Lorsqu'elle est définie sur un hôte non-first-party, la [recherche d'outils MCP](/fr/mcp#scale-with-mcp-tool-search) est désactivée par défaut. Définissez `ENABLE_TOOL_SEARCH=true` si votre proxy transfère les blocs `tool_reference` |

16| `ANTHROPIC_BEDROCK_BASE_URL` | Remplacer l'URL du point de terminaison Bedrock. À utiliser pour les points de terminaison Bedrock personnalisés ou lors du routage via une [passerelle LLM](/fr/llm-gateway). Voir [Amazon Bedrock](/fr/amazon-bedrock) |

17| `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` | Remplacer l'URL du point de terminaison Bedrock Mantle. Voir [Point de terminaison Mantle](/fr/amazon-bedrock#use-the-mantle-endpoint) |

18| `ANTHROPIC_BEDROCK_SERVICE_TIER` | Bedrock [niveau de service](https://docs.aws.amazon.com/bedrock/latest/userguide/service-tiers-inference.html) (`default`, `flex` ou `priority`). Envoyé en tant qu'en-tête `X-Amzn-Bedrock-Service-Tier`. Voir [Amazon Bedrock](/fr/amazon-bedrock#service-tiers) |

19| `ANTHROPIC_BETAS` | Liste séparée par des virgules de valeurs d'en-tête `anthropic-beta` supplémentaires à inclure dans les requêtes API. Claude Code envoie déjà les en-têtes bêta dont il a besoin ; utilisez ceci pour participer à une [bêta de l'API Anthropic](https://platform.claude.com/docs/en/api/beta-headers) avant que Claude Code n'ajoute la prise en charge native. Contrairement à l'indicateur [`--betas`](/fr/cli-reference#cli-flags), qui nécessite l'authentification par clé API, cette variable fonctionne avec toutes les méthodes d'authentification, y compris l'abonnement Claude.ai |

20| `ANTHROPIC_CUSTOM_HEADERS` | En-têtes personnalisés à ajouter aux requêtes (format `Name: Value`, séparés par des sauts de ligne pour plusieurs en-têtes) |

21| `ANTHROPIC_CUSTOM_MODEL_OPTION` | ID de modèle à ajouter comme entrée personnalisée dans le sélecteur `/model`. Utilisez ceci pour rendre un modèle non standard ou spécifique à une passerelle sélectionnable sans remplacer les alias intégrés. Voir [Configuration du modèle](/fr/model-config#add-a-custom-model-option) |

22| `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` | Description d'affichage pour l'entrée de modèle personnalisé dans le sélecteur `/model`. Par défaut `Custom model (<model-id>)` lorsqu'il n'est pas défini |

23| `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` | Nom d'affichage pour l'entrée de modèle personnalisé dans le sélecteur `/model`. Par défaut l'ID du modèle lorsqu'il n'est pas défini |

24| `ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES` | Voir [Configuration du modèle](/fr/model-config#customize-pinned-model-display-and-capabilities) |

25| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | Voir [Configuration du modèle](/fr/model-config#environment-variables) |

26| `ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION` | Voir [Configuration du modèle](/fr/model-config#customize-pinned-model-display-and-capabilities) |

27| `ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME` | Voir [Configuration du modèle](/fr/model-config#customize-pinned-model-display-and-capabilities) |

28| `ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES` | Voir [Configuration du modèle](/fr/model-config#customize-pinned-model-display-and-capabilities) |

29| `ANTHROPIC_DEFAULT_OPUS_MODEL` | Voir [Configuration du modèle](/fr/model-config#environment-variables) |

30| `ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION` | Voir [Configuration du modèle](/fr/model-config#customize-pinned-model-display-and-capabilities) |

31| `ANTHROPIC_DEFAULT_OPUS_MODEL_NAME` | Voir [Configuration du modèle](/fr/model-config#customize-pinned-model-display-and-capabilities) |

32| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | Voir [Configuration du modèle](/fr/model-config#customize-pinned-model-display-and-capabilities) |

33| `ANTHROPIC_DEFAULT_SONNET_MODEL` | Voir [Configuration du modèle](/fr/model-config#environment-variables) |

34| `ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION` | Voir [Configuration du modèle](/fr/model-config#customize-pinned-model-display-and-capabilities) |

35| `ANTHROPIC_DEFAULT_SONNET_MODEL_NAME` | Voir [Configuration du modèle](/fr/model-config#customize-pinned-model-display-and-capabilities) |

36| `ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES` | Voir [Configuration du modèle](/fr/model-config#customize-pinned-model-display-and-capabilities) |

37| `ANTHROPIC_FOUNDRY_API_KEY` | Clé API pour l'authentification Microsoft Foundry (voir [Microsoft Foundry](/fr/microsoft-foundry)) |

38| `ANTHROPIC_FOUNDRY_BASE_URL` | URL de base complète pour la ressource Foundry (par exemple, `https://my-resource.services.ai.azure.com/anthropic`). Alternative à `ANTHROPIC_FOUNDRY_RESOURCE` (voir [Microsoft Foundry](/fr/microsoft-foundry)) |

39| `ANTHROPIC_FOUNDRY_RESOURCE` | Nom de la ressource Foundry (par exemple, `my-resource`). Requis si `ANTHROPIC_FOUNDRY_BASE_URL` n'est pas défini (voir [Microsoft Foundry](/fr/microsoft-foundry)) |

40| `ANTHROPIC_MODEL` | Nom du paramètre de modèle à utiliser (voir [Configuration du modèle](/fr/model-config#environment-variables)) |

41| `ANTHROPIC_SMALL_FAST_MODEL` | \[DÉPRÉCIÉ] Nom du [modèle de classe Haiku pour les tâches en arrière-plan](/fr/costs) |

42| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | Remplacer la région AWS pour le modèle de classe Haiku lors de l'utilisation de Bedrock ou Bedrock Mantle |

43| `ANTHROPIC_VERTEX_BASE_URL` | Remplacer l'URL du point de terminaison Vertex AI. À utiliser pour les points de terminaison Vertex personnalisés ou lors du routage via une [passerelle LLM](/fr/llm-gateway). Voir [Google Vertex AI](/fr/google-vertex-ai) |

44| `ANTHROPIC_VERTEX_PROJECT_ID` | ID de projet GCP pour Vertex AI. Requis lors de l'utilisation de [Google Vertex AI](/fr/google-vertex-ai) |

45| `API_TIMEOUT_MS` | Délai d'expiration pour les requêtes API en millisecondes (par défaut : 600 000, ou 10 minutes ; maximum : 2 147 483 647). Augmentez ceci lorsque les requêtes expirent sur les réseaux lents ou lors du routage via un proxy. Les valeurs au-dessus du maximum dépassent le minuteur sous-jacent et provoquent l'échec immédiat des requêtes |

46| `AWS_BEARER_TOKEN_BEDROCK` | Clé API Bedrock pour l'authentification (voir [Clés API Bedrock](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)) |

47| `BASH_DEFAULT_TIMEOUT_MS` | Délai d'expiration par défaut pour les commandes bash longues (par défaut : 120 000, ou 2 minutes) |

48| `BASH_MAX_OUTPUT_LENGTH` | Nombre maximum de caractères dans les sorties bash avant qu'elles ne soient tronquées au milieu |

49| `BASH_MAX_TIMEOUT_MS` | Délai d'expiration maximal que le modèle peut définir pour les commandes bash longues (par défaut : 600 000, ou 10 minutes) |

50| `CCR_FORCE_BUNDLE` | Définissez sur `1` pour forcer [`claude --remote`](/fr/claude-code-on-the-web#send-local-repositories-without-github) à regrouper et télécharger votre référentiel local même lorsque l'accès à GitHub est disponible |

51| `CLAUDECODE` | Défini sur `1` dans les environnements shell que Claude Code génère (outil Bash, sessions tmux). Non défini dans les [hooks](/fr/hooks) ou les commandes de [ligne d'état](/fr/statusline). Utilisez pour détecter quand un script s'exécute à l'intérieur d'un shell généré par Claude Code |

52| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | Définissez sur `1` pour désactiver tous les types de [subagent](/fr/sub-agents) intégrés tels que Explore et Plan. S'applique uniquement en mode non interactif (l'indicateur `-p`). Utile pour les utilisateurs du SDK qui veulent une ardoise vierge |

53| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Définissez sur `1` pour ignorer le préfixe `mcp__<server>__` sur les noms d'outils des serveurs MCP créés par le SDK. Les outils utilisent leurs noms d'origine. Utilisation du SDK uniquement |

54| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Définissez le pourcentage de capacité de contexte (1-100) auquel le compactage automatique se déclenche. Par défaut, le compactage automatique se déclenche à environ 95 % de capacité. Utilisez des valeurs plus basses comme `50` pour compacter plus tôt. Les valeurs au-dessus du seuil par défaut n'ont aucun effet. S'applique aux conversations principales et aux subagents. Ce pourcentage s'aligne avec le champ `context_window.used_percentage` disponible dans la [ligne d'état](/fr/statusline) |

55| `CLAUDE_AUTO_BACKGROUND_TASKS` | Définissez sur `1` pour forcer l'activation de la mise en arrière-plan automatique des tâches d'agent longues. Lorsqu'elle est activée, les subagents sont déplacés en arrière-plan après environ deux minutes d'exécution |

56| `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` | Retourner au répertoire de travail d'origine après chaque commande Bash ou PowerShell dans la session principale |

57| `CLAUDE_CODE_ACCESSIBILITY` | Définissez sur `1` pour garder le curseur du terminal natif visible et désactiver l'indicateur de curseur en texte inversé. Permet aux loupes d'écran comme macOS Zoom de suivre la position du curseur |

58| `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD` | Définissez sur `1` pour charger les fichiers de mémoire à partir des répertoires spécifiés avec `--add-dir`. Charge `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md` et `CLAUDE.local.md`. Par défaut, les répertoires supplémentaires ne chargent pas les fichiers de mémoire |

59| `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | Intervalle en millisecondes auquel les identifiants doivent être actualisés (lors de l'utilisation de [`apiKeyHelper`](/fr/settings#available-settings)) |

60| `CLAUDE_CODE_ATTRIBUTION_HEADER` | Définissez sur `0` pour omettre le bloc d'attribution (version client et empreinte digitale d'invite) du début de l'invite système. La désactiver améliore les taux de succès du cache d'invite lors du routage via une [passerelle LLM](/fr/llm-gateway). La mise en cache de l'API Anthropic n'est pas affectée |

61| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Définissez la capacité de contexte en tokens utilisée pour les calculs de compactage automatique. Par défaut, la fenêtre de contexte du modèle : 200 K pour les modèles standard ou 1 M pour les modèles de [contexte étendu](/fr/model-config#extended-context). Utilisez une valeur inférieure comme `500000` sur un modèle 1 M pour traiter la fenêtre comme 500 K à des fins de compactage. La valeur est plafonnée à la fenêtre de contexte réelle du modèle. `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` est appliqué en pourcentage de cette valeur. La définition de cette variable découple le seuil de compactage du `used_percentage` de la ligne d'état, qui utilise toujours la fenêtre de contexte complète du modèle |

62| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Remplacer la [connexion IDE](/fr/vs-code) automatique. Par défaut, Claude Code se connecte automatiquement lorsqu'il est lancé dans le terminal intégré d'un IDE pris en charge. Définissez sur `false` pour empêcher cela. Définissez sur `true` pour forcer une tentative de connexion lorsque la détection automatique échoue, par exemple lorsque tmux masque le terminal parent |

63| `CLAUDE_CODE_CERT_STORE` | Liste séparée par des virgules de sources de certificats CA pour les connexions TLS. `bundled` est l'ensemble Mozilla CA fourni avec Claude Code. `system` est le magasin de confiance du système d'exploitation. Par défaut `bundled,system`. La distribution binaire native est requise pour l'intégration du magasin système. Sur le runtime Node.js, seul l'ensemble fourni est utilisé indépendamment de cette valeur |

64| `CLAUDE_CODE_CLIENT_CERT` | Chemin d'accès au fichier de certificat client pour l'authentification mTLS |

65| `CLAUDE_CODE_CLIENT_KEY` | Chemin d'accès au fichier de clé privée client pour l'authentification mTLS |

66| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | Phrase de passe pour CLAUDE\_CODE\_CLIENT\_KEY chiffré (facultatif) |

67| `CLAUDE_CODE_DEBUG_LOGS_DIR` | Remplacer le chemin d'accès au fichier journal de débogage. Malgré le nom, il s'agit d'un chemin de fichier, pas d'un répertoire. Nécessite que le mode débogage soit activé séparément via `--debug` ou `/debug` : la définition de cette variable seule n'active pas la journalisation. L'indicateur [`--debug-file`](/fr/cli-reference#cli-flags) fait les deux à la fois. Par défaut `~/.claude/debug/<session-id>.txt` |

68| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | Niveau de journal minimum écrit dans le fichier journal de débogage. Valeurs : `verbose`, `debug` (par défaut), `info`, `warn`, `error`. Définissez sur `verbose` pour inclure les diagnostics à haut volume comme la sortie complète de la commande de ligne d'état, ou augmentez à `error` pour réduire le bruit |

69| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | Définissez sur `1` pour désactiver la prise en charge de la [fenêtre de contexte 1 M](/fr/model-config#extended-context). Lorsqu'elle est définie, les variantes de modèle 1 M ne sont pas disponibles dans le sélecteur de modèle. Utile pour les environnements d'entreprise avec des exigences de conformité |

70| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | Définissez sur `1` pour désactiver le [raisonnement adaptatif](/fr/model-config#adjust-effort-level) sur Opus 4.6 et Sonnet 4.6 et revenir au budget de réflexion fixe contrôlé par `MAX_THINKING_TOKENS`. {/* min-version: 2.1.111 */}N'a aucun effet sur Opus 4.7, qui utilise toujours le raisonnement adaptatif |

71| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | Définissez sur `1` pour désactiver le traitement des pièces jointes. Les mentions de fichiers avec la syntaxe `@` sont envoyées en tant que texte brut au lieu d'être développées dans le contenu du fichier |

72| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Définissez sur `1` pour désactiver la [mémoire automatique](/fr/memory#auto-memory). Définissez sur `0` pour forcer la mémoire automatique pendant le déploiement progressif. Lorsqu'elle est désactivée, Claude ne crée ni ne charge les fichiers de mémoire automatique |

73| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Définissez sur `1` pour désactiver toutes les fonctionnalités de tâche en arrière-plan, y compris le paramètre `run_in_background` sur les outils Bash et subagent, l'arrière-plan automatique et le raccourci Ctrl+B |

74| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Définissez sur `1` pour empêcher le chargement de tous les fichiers de mémoire CLAUDE.md dans le contexte, y compris les fichiers utilisateur, projet et mémoire automatique |

75| `CLAUDE_CODE_DISABLE_CRON` | Définissez sur `1` pour désactiver les [tâches planifiées](/fr/scheduled-tasks). Le skill `/loop` et les outils cron deviennent indisponibles et toutes les tâches déjà planifiées cessent de se déclencher, y compris les tâches qui s'exécutent déjà en milieu de session |

76| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Définissez sur `1` pour supprimer les en-têtes de requête `anthropic-beta` spécifiques à Anthropic et les champs de schéma d'outil bêta (tels que `defer_loading` et `eager_input_streaming`) des requêtes API. Utilisez ceci lorsqu'une passerelle proxy rejette les requêtes avec des erreurs comme « Unexpected value(s) for the `anthropic-beta` header » ou « Extra inputs are not permitted ». Les champs standard (`name`, `description`, `input_schema`, `cache_control`) sont conservés. |

77| `CLAUDE_CODE_DISABLE_FAST_MODE` | Définissez sur `1` pour désactiver le [mode rapide](/fr/fast-mode) |

78| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Définissez sur `1` pour désactiver les sondages de qualité de session « Comment Claude se débrouille-t-il ? ». Les sondages sont également désactivés lorsque `DISABLE_TELEMETRY` ou `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` est défini. Voir [Sondages de qualité de session](/fr/data-usage#session-quality-surveys) |

79| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Définissez sur `1` pour désactiver le [checkpointing](/fr/checkpointing) de fichier. La commande `/rewind` ne pourra pas restaurer les modifications de code |

80| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Définissez sur `1` pour supprimer les instructions de flux de travail de commit et PR intégrées et l'instantané du statut git de l'invite système de Claude. Utile lors de l'utilisation de vos propres skills de flux de travail git. Prend la priorité sur le paramètre [`includeGitInstructions`](/fr/settings#available-settings) lorsqu'il est défini |

81| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | Définissez sur `1` pour empêcher le remappage automatique d'Opus 4.0 et 4.1 à la version Opus actuelle sur l'API Anthropic. À utiliser lorsque vous souhaitez intentionnellement épingler une version plus ancienne du modèle. Le remappage ne s'exécute pas sur Bedrock, Vertex ou Foundry |

82| `CLAUDE_CODE_DISABLE_MOUSE` | Définissez sur `1` pour désactiver le suivi de la souris dans le [rendu en plein écran](/fr/fullscreen). Le défilement au clavier avec `PgUp` et `PgDn` fonctionne toujours. Utilisez ceci pour conserver le comportement natif de copie à la sélection de votre terminal |

83| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | Équivalent de la définition de `DISABLE_AUTOUPDATER`, `DISABLE_FEEDBACK_COMMAND`, `DISABLE_ERROR_REPORTING` et `DISABLE_TELEMETRY` |

84| `CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK` | Définissez sur `1` pour désactiver le secours non-streaming lorsqu'une requête streaming échoue en milieu de flux. Les erreurs de streaming se propagent à la couche de nouvelle tentative à la place. Utile lorsqu'un proxy ou une passerelle provoque le secours pour produire l'exécution d'outils en double |

85| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | Définissez sur `1` pour ignorer l'ajout automatique de la place de marché officielle des plugins au premier lancement |

86| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | Définissez sur `1` pour ignorer le chargement des skills à partir du répertoire des skills gérés au niveau du système. Utile pour les sessions de conteneur ou CI qui ne doivent pas charger les skills fournis par l'opérateur |

87| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Définissez sur `1` pour désactiver les mises à jour automatiques du titre du terminal en fonction du contexte de la conversation |

88| `CLAUDE_CODE_DISABLE_THINKING` | Définissez sur `1` pour forcer la désactivation de la [réflexion étendue](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) indépendamment de la prise en charge du modèle ou d'autres paramètres. Plus direct que `MAX_THINKING_TOKENS=0` |

89| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Définissez sur `1` pour désactiver le défilement virtuel dans le [rendu en plein écran](/fr/fullscreen) et afficher chaque message dans la transcription. Utilisez ceci si le défilement en mode plein écran affiche des régions vierges où les messages devraient apparaître |

90| `CLAUDE_CODE_EFFORT_LEVEL` | Définissez le niveau d'effort pour les modèles pris en charge. Valeurs : `low`, `medium`, `high`, `xhigh`, `max` ou `auto` pour utiliser le niveau par défaut du modèle. Les niveaux disponibles dépendent du modèle. Prend la priorité sur `/effort` et le paramètre `effortLevel`. Voir [Ajuster le niveau d'effort](/fr/model-config#adjust-effort-level) |

91| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | Remplacer la disponibilité du [récapitulatif de session](/fr/interactive-mode#session-recap). Définissez sur `0` pour forcer les récapitulatifs désactivés indépendamment du bouton bascule `/config`. Définissez sur `1` pour forcer les récapitulatifs activés lorsque [`awaySummaryEnabled`](/fr/settings#available-settings) est `false`. Prend la priorité sur le paramètre et le bouton bascule `/config` |

92| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | Définissez sur `1` pour actualiser l'état du plugin aux limites de tour en [mode non interactif](/fr/headless) après la fin d'une installation en arrière-plan. Désactivé par défaut car l'actualisation modifie l'invite système en milieu de session, ce qui invalide la [mise en cache des invites](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) pour ce tour |

93| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | Définissez sur `1` pour forcer l'activation du streaming d'entrée d'outil à granularité fine. Sans cela, l'API met en mémoire tampon les paramètres d'entrée d'outil complètement avant d'envoyer les événements delta, ce qui peut retarder l'affichage sur les grandes entrées d'outil. API Anthropic uniquement : n'a aucun effet sur Bedrock, Vertex ou Foundry |

94| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | Définissez sur `false` pour désactiver les suggestions d'invite (le bouton bascule « Suggestions d'invite » dans `/config`). Ce sont les prédictions grisées qui apparaissent dans votre entrée d'invite après que Claude répond. Voir [Suggestions d'invite](/fr/interactive-mode#prompt-suggestions) |

95| `CLAUDE_CODE_ENABLE_TASKS` | Définissez sur `1` pour activer le système de suivi des tâches en mode non interactif (l'indicateur `-p`). Les tâches sont activées par défaut en mode interactif. Voir [Liste des tâches](/fr/interactive-mode#task-list) |

96| `CLAUDE_CODE_ENABLE_TELEMETRY` | Définissez sur `1` pour activer la collecte de données OpenTelemetry pour les métriques et la journalisation. Requis avant de configurer les exportateurs OTel. Voir [Surveillance](/fr/monitoring-usage) |

97| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Temps en millisecondes à attendre après que la boucle de requête devienne inactive avant de quitter automatiquement. Utile pour les flux de travail automatisés et les scripts utilisant le mode SDK |

98| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Définissez sur `1` pour activer les [équipes d'agents](/fr/agent-teams). Les équipes d'agents sont expérimentales et désactivées par défaut |

99| `CLAUDE_CODE_EXTRA_BODY` | Objet JSON à fusionner dans le niveau supérieur de chaque corps de requête API. Utile pour transmettre des paramètres spécifiques au fournisseur que Claude Code n'expose pas directement |

100| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Remplacer la limite de tokens par défaut pour les lectures de fichiers. Utile lorsque vous devez lire des fichiers plus volumineux en intégralité |

101| `CLAUDE_CODE_FORK_SUBAGENT` | Définissez sur `1` pour activer les [subagents forked](/fr/sub-agents#fork-the-current-conversation). Un subagent forked hérite du contexte de conversation complet de la session principale au lieu de commencer à zéro. Lorsqu'elle est activée, `/fork` génère un subagent forked plutôt que d'agir comme un alias pour [`/branch`](/fr/commands), et tous les spawns de subagent s'exécutent en arrière-plan. Fonctionne en mode interactif et via le SDK ou `claude -p` |

102| `CLAUDE_CODE_GIT_BASH_PATH` | Windows uniquement : chemin d'accès à l'exécutable Git Bash (`bash.exe`). À utiliser lorsque Git Bash est installé mais pas dans votre PATH. Voir [Configuration Windows](/fr/setup#set-up-on-windows) |

103| `CLAUDE_CODE_GLOB_HIDDEN` | Définissez sur `false` pour exclure les fichiers pointés des résultats lorsque Claude appelle l'[outil Glob](/fr/tools-reference). Inclus par défaut. N'affecte pas l'autocomplétion de fichier `@`, `ls`, Grep ou Read |

104| `CLAUDE_CODE_GLOB_NO_IGNORE` | Définissez sur `false` pour faire respecter à l'[outil Glob](/fr/tools-reference) les modèles `.gitignore`. Par défaut, Glob retourne tous les fichiers correspondants, y compris ceux ignorés par git. N'affecte pas l'autocomplétion de fichier `@`, qui a son propre paramètre [`respectGitignore`](/fr/settings#available-settings) |

105| `CLAUDE_CODE_GLOB_TIMEOUT_SECONDS` | Délai d'expiration en secondes pour la découverte de fichiers de l'outil Glob. Par défaut 20 secondes sur la plupart des plates-formes et 60 secondes sur WSL |

106| `CLAUDE_CODE_HIDE_CWD` | Définissez sur `1` pour masquer le répertoire de travail dans le logo de démarrage. Utile pour les partages d'écran ou les enregistrements où le chemin expose votre nom d'utilisateur du système d'exploitation |

107| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | Remplacer l'adresse d'hôte utilisée pour se connecter à l'extension IDE. Par défaut, Claude Code détecte automatiquement l'adresse correcte, y compris le routage WSL vers Windows |

108| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | Ignorer l'installation automatique des extensions IDE. Équivalent à la définition de [`autoInstallIdeExtension`](/fr/settings#global-config-settings) sur `false` |

109| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | Définissez sur `1` pour ignorer la validation des entrées du fichier de verrouillage IDE lors de la connexion. À utiliser lorsque la connexion automatique ne trouve pas votre IDE malgré son exécution |

110| `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | Remplacer la taille de la fenêtre de contexte que Claude Code suppose pour le modèle actif. Ne prend effet que lorsque `DISABLE_COMPACT` est également défini. À utiliser lors du routage vers un modèle via `ANTHROPIC_BASE_URL` dont la fenêtre de contexte ne correspond pas à la taille intégrée pour son nom |

111| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | Définissez le nombre maximal de tokens de sortie pour la plupart des requêtes. Les valeurs par défaut et les plafonds varient selon le modèle ; voir [max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison). L'augmentation de cette valeur réduit la fenêtre de contexte effective disponible avant que le [compactage automatique](/fr/costs#reduce-token-usage) ne se déclenche. |

112| `CLAUDE_CODE_MAX_RETRIES` | Remplacer le nombre de fois pour réessayer les requêtes API échouées (par défaut : 10) |

113| `CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY` | Nombre maximal d'outils en lecture seule et de subagents qui peuvent s'exécuter en parallèle (par défaut : 10). Les valeurs plus élevées augmentent le parallélisme mais consomment plus de ressources |

114| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | Définissez sur `1` pour générer les serveurs MCP stdio avec uniquement un environnement de base sûr plus l'`env` configuré du serveur, au lieu d'hériter de votre environnement shell |

115| `CLAUDE_CODE_NEW_INIT` | Définissez sur `1` pour faire exécuter `/init` un flux de configuration interactif. Le flux demande quels fichiers générer, y compris CLAUDE.md, skills et hooks, avant d'explorer la base de code et de les écrire. Sans cette variable, `/init` génère un CLAUDE.md automatiquement sans demander. |

116| `CLAUDE_CODE_NO_FLICKER` | Définissez sur `1` pour activer le [rendu en plein écran](/fr/fullscreen), un aperçu de recherche qui réduit le scintillement et maintient la mémoire plate dans les longues conversations. Équivalent au paramètre [`tui`](/fr/settings#available-settings) ; vous pouvez également basculer avec `/tui fullscreen` |

117| `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` | Jeton d'actualisation OAuth pour l'authentification Claude.ai. Lorsqu'il est défini, `claude auth login` échange ce jeton directement au lieu d'ouvrir un navigateur. Nécessite `CLAUDE_CODE_OAUTH_SCOPES`. Utile pour provisionner l'authentification dans les environnements automatisés |

118| `CLAUDE_CODE_OAUTH_SCOPES` | Portées OAuth séparées par des espaces avec lesquelles le jeton d'actualisation a été émis, telles que `"user:profile user:inference user:sessions:claude_code"`. Requis lorsque `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` est défini |

119| `CLAUDE_CODE_OAUTH_TOKEN` | Jeton d'accès OAuth pour l'authentification Claude.ai. Alternative à `/login` pour le SDK et les environnements automatisés. Prend la priorité sur les identifiants stockés dans le trousseau. Générez-en un avec [`claude setup-token`](/fr/authentication#generate-a-long-lived-token) |

120| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | Délai d'expiration en millisecondes pour vider les spans OpenTelemetry en attente (par défaut : 5 000). Voir [Surveillance](/fr/monitoring-usage) |

121| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Intervalle pour actualiser les en-têtes OpenTelemetry dynamiques en millisecondes (par défaut : 1 740 000 / 29 minutes). Voir [En-têtes dynamiques](/fr/monitoring-usage#dynamic-headers) |

122| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | Délai d'expiration en millisecondes pour que l'exportateur OpenTelemetry se termine à l'arrêt (par défaut : 2 000). Augmentez si les métriques sont supprimées à la sortie. Voir [Surveillance](/fr/monitoring-usage) |

123| `CLAUDE_CODE_PERFORCE_MODE` | Définissez sur `1` pour activer la protection en écriture consciente de Perforce. Lorsqu'elle est définie, Edit, Write et NotebookEdit échouent avec un indice `p4 edit <file>` si le fichier cible manque le bit propriétaire-écriture, que Perforce efface sur les fichiers synchronisés jusqu'à ce que `p4 edit` les ouvre. Cela empêche Claude Code de contourner le suivi des modifications de Perforce |

124| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Remplacer le répertoire racine des plugins. Malgré le nom, ceci définit le répertoire parent, pas le cache lui-même : les places de marché et le cache des plugins se trouvent dans des sous-répertoires sous ce chemin. Par défaut `~/.claude/plugins` |

125| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Délai d'expiration en millisecondes pour les opérations git lors de l'installation ou de la mise à jour des plugins (par défaut : 120 000). Augmentez cette valeur pour les grands référentiels ou les connexions réseau lentes. Voir [Les opérations Git expirent](/fr/plugin-marketplaces#git-operations-time-out) |

126| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Définissez sur `1` pour conserver le cache de la place de marché existante lorsqu'un `git pull` échoue au lieu de l'effacer et de le re-cloner. Utile dans les environnements hors ligne ou isolés où le re-clonage échouerait de la même manière. Voir [Les mises à jour de la place de marché échouent dans les environnements hors ligne](/fr/plugin-marketplaces#marketplace-updates-fail-in-offline-environments) |

127| `CLAUDE_CODE_PLUGIN_SEED_DIR` | Chemin d'accès à un ou plusieurs répertoires de seed de plugins en lecture seule, séparés par `:` sur Unix ou `;` sur Windows. Utilisez ceci pour regrouper un répertoire de plugins pré-rempli dans une image de conteneur. Claude Code enregistre les places de marché à partir de ces répertoires au démarrage et utilise les plugins pré-mis en cache sans re-cloner. Voir [Pré-remplir les plugins pour les conteneurs](/fr/plugin-marketplaces#pre-populate-plugins-for-containers) |

128| `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` | Défini par les plates-formes hôtes qui intègrent Claude Code et gèrent le routage du fournisseur de modèles en son nom. Lorsqu'elle est définie, la sélection du fournisseur, le point de terminaison et les variables d'authentification telles que `CLAUDE_CODE_USE_BEDROCK`, `ANTHROPIC_BASE_URL` et `ANTHROPIC_API_KEY` dans les fichiers de paramètres sont ignorés pour que les paramètres utilisateur ne puissent pas remplacer le routage de l'hôte. L'opt-out automatique de la télémétrie pour Bedrock, Vertex et Foundry est également ignoré, de sorte que la télémétrie suit l'opt-out standard `DISABLE_TELEMETRY`. Voir [Comportements par défaut par fournisseur API](/fr/data-usage#default-behaviors-by-api-provider) |

129| `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` | Définissez sur `1` pour permettre au proxy d'effectuer la résolution DNS au lieu de l'appelant. Opt-in pour les environnements où le proxy doit gérer la résolution du nom d'hôte |

130| `CLAUDE_CODE_REMOTE` | Défini automatiquement sur `true` lorsque Claude Code s'exécute en tant que [session cloud](/fr/claude-code-on-the-web). Lisez ceci à partir d'un hook ou d'un script de configuration pour détecter si vous êtes dans un environnement cloud |

131| `CLAUDE_CODE_REMOTE_SESSION_ID` | Défini automatiquement dans les [sessions cloud](/fr/claude-code-on-the-web) à l'ID de session actuel. Lisez ceci pour construire un lien vers la transcription de session. Voir [Lier les artefacts à la session](/fr/claude-code-on-the-web#link-artifacts-back-to-the-session) |

132| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Définissez sur `1` pour reprendre automatiquement si la session précédente s'est terminée en milieu de tour. Utilisé en mode SDK pour que le modèle continue sans que le SDK ait besoin de renvoyer l'invite |

133| `CLAUDE_CODE_SCRIPT_CAPS` | Objet JSON limitant le nombre de fois que des scripts spécifiques peuvent être appelés par session lorsque `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` est défini. Les clés sont des sous-chaînes mises en correspondance avec le texte de la commande ; les valeurs sont des limites d'appels entiers. Par exemple, `{"deploy.sh": 2}` permet à `deploy.sh` d'être appelé au maximum deux fois. La correspondance est basée sur des sous-chaînes, donc les astuces d'expansion de shell comme `./scripts/deploy.sh $(evil)` comptent toujours contre le plafond. L'expansion en fan-out au runtime via `xargs` ou `find -exec` n'est pas détectée ; il s'agit d'un contrôle de défense en profondeur |

134| `CLAUDE_CODE_SCROLL_SPEED` | Définissez le multiplicateur de défilement de la molette de la souris dans le [rendu en plein écran](/fr/fullscreen#mouse-wheel-scrolling). Accepte les valeurs de 1 à 20. Définissez sur `3` pour correspondre à `vim` si votre terminal envoie un événement de molette par cran sans amplification |

135| `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` | Remplacer le budget de temps en millisecondes pour les hooks [SessionEnd](/fr/hooks#sessionend). S'applique à la sortie de session, `/clear` et au changement de sessions via `/resume` interactif. Par défaut, le budget est de 1,5 secondes, automatiquement augmenté au `timeout` par hook le plus élevé configuré dans les fichiers de paramètres, jusqu'à 60 secondes. Les délais d'expiration sur les hooks fournis par les plugins ne relèvent pas du budget |

136| `CLAUDE_CODE_SHELL` | Remplacer la détection automatique du shell. Utile lorsque votre shell de connexion diffère de votre shell de travail préféré (par exemple, `bash` vs `zsh`) |

137| `CLAUDE_CODE_SHELL_PREFIX` | Préfixe de commande pour envelopper les commandes shell que Claude Code génère : appels d'outil Bash, commandes [hook](/fr/hooks) et commandes de démarrage du serveur MCP [stdio](/fr/mcp). Utile pour la journalisation ou l'audit. Exemple : la définition de `/path/to/logger.sh` exécute chaque commande en tant que `/path/to/logger.sh <command>` |

138| `CLAUDE_CODE_SIMPLE` | Définissez sur `1` pour exécuter avec une invite système minimale et uniquement les outils Bash, lecture de fichier et édition de fichier. Les outils MCP de `--mcp-config` sont toujours disponibles. Désactive la découverte automatique des hooks, skills, plugins, serveurs MCP, mémoire automatique et CLAUDE.md. L'indicateur CLI [`--bare`](/fr/headless#start-faster-with-bare-mode) définit ceci |

139| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | Définissez sur `1` pour utiliser l'invite système minimale et les descriptions d'outils réduites sur Opus 4.7. N'a aucun effet sur les autres modèles. L'ensemble complet d'outils, les hooks, les serveurs MCP et la découverte CLAUDE.md restent activés |

140| `CLAUDE_CODE_SKIP_BEDROCK_AUTH` | Ignorer l'authentification AWS pour Bedrock (par exemple, lors de l'utilisation d'une passerelle LLM) |

141| `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` | Ignorer l'authentification Azure pour Microsoft Foundry (par exemple, lors de l'utilisation d'une passerelle LLM) |

142| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | Ignorer l'authentification AWS pour Bedrock Mantle (par exemple, lors de l'utilisation d'une passerelle LLM) |

143| `CLAUDE_CODE_SKIP_PROMPT_HISTORY` | Définissez sur `1` pour ignorer l'écriture de l'historique des invites et des transcriptions de session sur le disque. Les sessions démarrées avec cette variable définie n'apparaissent pas dans `--resume`, `--continue` ou l'historique de la flèche vers le haut. Utile pour les sessions scriptées éphémères |

144| `CLAUDE_CODE_SKIP_VERTEX_AUTH` | Ignorer l'authentification Google pour Vertex (par exemple, lors de l'utilisation d'une passerelle LLM) |

145| `CLAUDE_CODE_SUBAGENT_MODEL` | Voir [Configuration du modèle](/fr/model-config) |

146| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Définissez sur `1` pour supprimer les identifiants Anthropic et des fournisseurs de cloud des environnements de sous-processus (outil Bash, hooks, serveurs MCP stdio). Le processus Claude parent conserve ces identifiants pour les appels API, mais les processus enfants ne peuvent pas les lire, réduisant l'exposition aux attaques par injection de prompt qui tentent d'exfiltrer les secrets via l'expansion du shell. Sur Linux, cela exécute également les sous-processus Bash dans un espace de noms PID isolé pour qu'ils ne puissent pas lire les environnements de processus hôte via `/proc` ; en conséquence, `ps`, `pgrep` et `kill` ne peuvent pas voir ou signaler les processus hôte. `claude-code-action` définit ceci automatiquement lorsque `allowed_non_write_users` est configuré |

147| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | Définissez sur `1` en mode non interactif (l'indicateur `-p`) pour attendre que l'installation du plugin se termine avant la première requête. Sans cela, les plugins s'installent en arrière-plan et peuvent ne pas être disponibles au premier tour. Combinez avec `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` pour limiter l'attente |

148| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | Délai d'expiration en millisecondes pour l'installation synchrone des plugins. Lorsqu'il est dépassé, Claude Code continue sans plugins et enregistre une erreur. Pas de défaut : sans cette variable, l'installation synchrone attend jusqu'à la fin |

149| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | Définissez sur `false` pour désactiver la coloration syntaxique dans la sortie diff. Utile lorsque les couleurs interfèrent avec votre configuration de terminal |

150| `CLAUDE_CODE_TASK_LIST_ID` | Partager une liste de tâches entre les sessions. Définissez le même ID dans plusieurs instances de Claude Code pour coordonner une liste de tâches partagée. Voir [Liste des tâches](/fr/interactive-mode#task-list) |

151| `CLAUDE_CODE_TEAM_NAME` | Nom de l'équipe d'agents à laquelle appartient ce coéquipier. Défini automatiquement sur les membres de l'[équipe d'agents](/fr/agent-teams) |

152| `CLAUDE_CODE_TMPDIR` | Remplacer le répertoire temporaire utilisé pour les fichiers temporaires internes. Claude Code ajoute `/claude-{uid}/` (Unix) ou `/claude/` (Windows) à ce chemin. Par défaut : `/tmp` sur macOS, `os.tmpdir()` sur Linux/Windows |

153| `CLAUDE_CODE_TMUX_TRUECOLOR` | Définissez sur `1` pour permettre la sortie truecolor 24 bits à l'intérieur de tmux. Par défaut, Claude Code limite à 256 couleurs lorsque `$TMUX` est défini car tmux ne transmet pas les séquences d'échappement truecolor à moins d'être configuré. Définissez ceci après avoir ajouté `set -ga terminal-overrides ',*:Tc'` à votre `~/.tmux.conf`. Voir [Configuration du terminal](/fr/terminal-config) pour d'autres paramètres tmux |

154| `CLAUDE_CODE_USE_BEDROCK` | Utiliser [Bedrock](/fr/amazon-bedrock) |

155| `CLAUDE_CODE_USE_FOUNDRY` | Utiliser [Microsoft Foundry](/fr/microsoft-foundry) |

156| `CLAUDE_CODE_USE_MANTLE` | Utiliser le [point de terminaison Mantle](/fr/amazon-bedrock#use-the-mantle-endpoint) de Bedrock |

157| `CLAUDE_CODE_USE_NATIVE_FILE_SEARCH` | Définissez sur `1` pour découvrir les commandes personnalisées, les subagents et les styles de sortie à l'aide des API de fichiers Node.js au lieu de ripgrep. Définissez ceci si le binaire ripgrep fourni est indisponible ou bloqué dans votre environnement. N'affecte pas les outils Grep ou de recherche de fichiers |

158| `CLAUDE_CODE_USE_POWERSHELL_TOOL` | Contrôle l'outil PowerShell. Sur Windows sans Git Bash, l'outil est activé automatiquement ; définissez sur `0` pour le désactiver. Sur Windows avec Git Bash installé, l'outil se déploie progressivement : définissez sur `1` pour participer ou `0` pour refuser. Sur Linux, macOS et WSL, définissez sur `1` pour l'activer, ce qui nécessite `pwsh` sur votre `PATH`. Lorsqu'il est activé sur Windows, Claude peut exécuter les commandes PowerShell en mode natif au lieu de les acheminer via Git Bash. Voir [Outil PowerShell](/fr/tools-reference#powershell-tool) |

159| `CLAUDE_CODE_USE_VERTEX` | Utiliser [Vertex](/fr/google-vertex-ai) |

160| `CLAUDE_CONFIG_DIR` | Remplacer le répertoire de configuration (par défaut : `~/.claude`). Tous les paramètres, identifiants, historique de session et plugins sont stockés sous ce chemin. Utile pour exécuter plusieurs comptes côte à côte : par exemple, `alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'` |

161| `CLAUDE_ENABLE_BYTE_WATCHDOG` | Définissez sur `1` pour forcer l'activation du chien de garde d'inactivité au niveau des octets, ou définissez sur `0` pour forcer la désactivation. Lorsqu'il n'est pas défini, le chien de garde est activé par défaut pour les connexions API Anthropic. Le chien de garde d'octets abandonne une connexion lorsqu'aucun octet n'arrive sur le fil pendant la durée définie par `CLAUDE_STREAM_IDLE_TIMEOUT_MS`, avec un minimum de 5 minutes, indépendamment du chien de garde au niveau des événements |

162| `CLAUDE_ENABLE_STREAM_WATCHDOG` | Définissez sur `1` pour activer le chien de garde d'inactivité de streaming au niveau des événements. Désactivé par défaut. Pour Bedrock, Vertex et Foundry, c'est le seul chien de garde d'inactivité disponible. Configurez le délai d'expiration avec `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |

163| `CLAUDE_ENV_FILE` | Chemin d'accès à un script shell dont le contenu Claude Code exécute avant chaque commande Bash dans le même processus shell, de sorte que les exports du fichier sont visibles pour la commande. À utiliser pour persister l'activation de virtualenv ou conda entre les commandes. Également rempli dynamiquement par les hooks [SessionStart](/fr/hooks#persist-environment-variables), [Setup](/fr/hooks#setup), [CwdChanged](/fr/hooks#cwdchanged) et [FileChanged](/fr/hooks#filechanged) |

164| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | Préfixe pour les noms de session [Contrôle à distance](/fr/remote-control) générés automatiquement lorsqu'aucun nom explicite n'est fourni. Par défaut, le nom d'hôte de votre machine, produisant des noms comme `myhost-graceful-unicorn`. L'indicateur CLI `--remote-control-session-name-prefix` définit la même valeur pour une seule invocation |

165| `CLAUDE_STREAM_IDLE_TIMEOUT_MS` | Délai d'expiration en millisecondes avant que le chien de garde d'inactivité de streaming ferme une connexion bloquée. Par défaut et minimum `300000` (5 minutes) pour le chien de garde au niveau des octets sur l'API Anthropic ; les valeurs inférieures sont silencieusement limitées pour absorber les pauses de réflexion étendue et la mise en mémoire tampon du proxy. Pour les fournisseurs tiers, nécessite `CLAUDE_ENABLE_STREAM_WATCHDOG=1` |

166| `DISABLE_AUTOUPDATER` | Définissez sur `1` pour désactiver les mises à jour automatiques en arrière-plan. La commande manuelle `claude update` fonctionne toujours. Utilisez `DISABLE_UPDATES` pour bloquer les deux |

167| `DISABLE_AUTO_COMPACT` | Définissez sur `1` pour désactiver le compactage automatique lorsque vous approchez de la limite de contexte. La commande manuelle `/compact` reste disponible. À utiliser lorsque vous souhaitez un contrôle explicite sur le moment du compactage |

168| `DISABLE_COMPACT` | Définissez sur `1` pour désactiver tout compactage : à la fois le compactage automatique et la commande manuelle `/compact` |

169| `DISABLE_COST_WARNINGS` | Définissez sur `1` pour désactiver les messages d'avertissement de coût |

170| `DISABLE_DOCTOR_COMMAND` | Définissez sur `1` pour masquer la commande `/doctor`. Utile pour les déploiements gérés où les utilisateurs ne doivent pas exécuter les diagnostics d'installation |

171| `DISABLE_ERROR_REPORTING` | Définissez sur `1` pour refuser la création de rapports d'erreurs Sentry |

172| `DISABLE_EXTRA_USAGE_COMMAND` | Définissez sur `1` pour masquer la commande `/extra-usage` qui permet aux utilisateurs d'acheter une utilisation supplémentaire au-delà des limites de débit |

173| `DISABLE_FEEDBACK_COMMAND` | Définissez sur `1` pour désactiver la commande `/feedback`. Le nom plus ancien `DISABLE_BUG_COMMAND` est également accepté |

174| `DISABLE_GROWTHBOOK` | Définissez sur `1` pour désactiver la récupération des drapeaux de fonctionnalités GrowthBook et utiliser les valeurs par défaut du code pour chaque drapeau. La journalisation des événements de télémétrie reste activée sauf si `DISABLE_TELEMETRY` est également défini |

175| `DISABLE_INSTALLATION_CHECKS` | Définissez sur `1` pour désactiver les avertissements d'installation. À utiliser uniquement lors de la gestion manuelle de l'emplacement d'installation, car cela peut masquer les problèmes avec les installations standard |

176| `DISABLE_INSTALL_GITHUB_APP_COMMAND` | Définissez sur `1` pour masquer la commande `/install-github-app`. Déjà masquée lors de l'utilisation de fournisseurs tiers (Bedrock, Vertex ou Foundry) |

177| `DISABLE_INTERLEAVED_THINKING` | Définissez sur `1` pour empêcher l'envoi de l'en-tête bêta de réflexion entrelacée. Utile lorsque votre passerelle LLM ou fournisseur ne prend pas en charge la [réflexion entrelacée](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) |

178| `DISABLE_LOGIN_COMMAND` | Définissez sur `1` pour masquer la commande `/login`. Utile lorsque l'authentification est gérée en externe via des clés API ou `apiKeyHelper` |

179| `DISABLE_LOGOUT_COMMAND` | Définissez sur `1` pour masquer la commande `/logout` |

180| `DISABLE_PROMPT_CACHING` | Définissez sur `1` pour désactiver la mise en cache des invites pour tous les modèles (prend la priorité sur les paramètres par modèle) |

181| `DISABLE_PROMPT_CACHING_HAIKU` | Définissez sur `1` pour désactiver la mise en cache des invites pour les modèles Haiku |

182| `DISABLE_PROMPT_CACHING_OPUS` | Définissez sur `1` pour désactiver la mise en cache des invites pour les modèles Opus |

183| `DISABLE_PROMPT_CACHING_SONNET` | Définissez sur `1` pour désactiver la mise en cache des invites pour les modèles Sonnet |

184| `DISABLE_TELEMETRY` | Définissez sur `1` pour refuser la télémétrie Statsig (notez que les événements Statsig n'incluent pas les données utilisateur comme le code, les chemins de fichiers ou les commandes bash) |

185| `DISABLE_UPDATES` | Définissez sur `1` pour bloquer toutes les mises à jour, y compris la commande manuelle `claude update` et `claude install`. Plus strict que `DISABLE_AUTOUPDATER`. À utiliser lors de la distribution de Claude Code via vos propres canaux et les utilisateurs ne doivent pas se mettre à jour automatiquement |

186| `DISABLE_UPGRADE_COMMAND` | Définissez sur `1` pour masquer la commande `/upgrade` |

187| `ENABLE_CLAUDEAI_MCP_SERVERS` | Définissez sur `false` pour désactiver les [serveurs MCP claude.ai](/fr/mcp#use-mcp-servers-from-claude-ai) dans Claude Code. Activé par défaut pour les utilisateurs connectés |

188| `ENABLE_PROMPT_CACHING_1H` | Définissez sur `1` pour demander une TTL de cache d'invite d'une heure au lieu des 5 minutes par défaut. Destiné aux utilisateurs de clé API, [Bedrock](/fr/amazon-bedrock), [Vertex](/fr/google-vertex-ai) et [Foundry](/fr/microsoft-foundry). Les utilisateurs d'abonnement reçoivent automatiquement une TTL d'une heure. Les écritures de cache d'une heure sont facturées à un taux plus élevé |

189| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Déprécié. Utilisez `ENABLE_PROMPT_CACHING_1H` à la place |

190| `ENABLE_TOOL_SEARCH` | Contrôle la [recherche d'outils MCP](/fr/mcp#scale-with-mcp-tool-search). Non défini : tous les outils MCP différés par défaut, mais chargés en amont sur Vertex AI ou lorsque `ANTHROPIC_BASE_URL` pointe vers un hôte non-first-party. Valeurs : `true` (toujours différer y compris les proxies et Vertex AI), `auto` (mode seuil : charger en amont si les outils s'ajustent dans 10 % du contexte), `auto:N` (seuil personnalisé, par exemple, `auto:5` pour 5 %), `false` (charger tous en amont) |

191| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | Définissez sur n'importe quelle valeur non vide pour déclencher le basculement vers [`--fallback-model`](/fr/cli-reference#cli-flags) après des erreurs de surcharge répétées sur n'importe quel modèle principal. Par défaut, seuls les modèles Opus déclenchent le basculement |

192| `FORCE_AUTOUPDATE_PLUGINS` | Définissez sur `1` pour forcer les mises à jour automatiques des plugins même lorsque la mise à jour automatique principale est désactivée via `DISABLE_AUTOUPDATER` |

193| `FORCE_PROMPT_CACHING_5M` | Définissez sur `1` pour forcer la TTL de cache d'invite de 5 minutes même lorsque la TTL d'une heure s'appliquerait autrement. Remplace `ENABLE_PROMPT_CACHING_1H` |

194| `HTTP_PROXY` | Spécifier le serveur proxy HTTP pour les connexions réseau |

195| `HTTPS_PROXY` | Spécifier le serveur proxy HTTPS pour les connexions réseau |

196| `IS_DEMO` | Définissez sur `1` pour activer le mode démo : masque votre e-mail et le nom de l'organisation de l'en-tête et de la sortie `/status`, et ignore l'intégration. Utile pour la diffusion en continu ou l'enregistrement d'une session |

197| `MAX_MCP_OUTPUT_TOKENS` | Nombre maximal de tokens autorisés dans les réponses des outils MCP. Claude Code affiche un avertissement lorsque la sortie dépasse 10 000 tokens. Les outils qui déclarent [`anthropic/maxResultSizeChars`](/fr/mcp#raise-the-limit-for-a-specific-tool) utilisent cette limite de caractères pour le contenu textuel à la place, mais le contenu d'image de ces outils est toujours soumis à cette variable (par défaut : 25 000) |

198| `MAX_STRUCTURED_OUTPUT_RETRIES` | Nombre de fois pour réessayer lorsque la réponse du modèle échoue la validation par rapport au [`--json-schema`](/fr/cli-reference#cli-flags) en mode non interactif (l'indicateur `-p`). Par défaut 5 |

199| `MAX_THINKING_TOKENS` | Remplacer le budget de tokens de [réflexion étendue](https://platform.claude.com/docs/en/build-with-claude/extended-thinking). Le plafond est le [max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison) du modèle moins un. Définissez sur `0` pour désactiver complètement la réflexion. Sur les modèles avec [raisonnement adaptatif](/fr/model-config#adjust-effort-level), le budget est ignoré sauf si le raisonnement adaptatif est désactivé via `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` |

200| `MCP_CLIENT_SECRET` | Secret client OAuth pour les serveurs MCP qui nécessitent des [identifiants préconfigurés](/fr/mcp#use-pre-configured-oauth-credentials). Évite l'invite interactive lors de l'ajout d'un serveur avec `--client-secret` |

201| `MCP_CONNECTION_NONBLOCKING` | Définissez sur `true` en mode non interactif (`-p`) pour ignorer complètement l'attente de connexion MCP. Utile pour les pipelines scriptés où les outils MCP ne sont pas nécessaires. Sans cette variable, la première requête attend jusqu'à 5 secondes pour les connexions du serveur `--mcp-config` |

202| `MCP_OAUTH_CALLBACK_PORT` | Port fixe pour le rappel de redirection OAuth, comme alternative à `--callback-port` lors de l'ajout d'un serveur MCP avec des [identifiants préconfigurés](/fr/mcp#use-pre-configured-oauth-credentials) |

203| `MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE` | Nombre maximal de serveurs MCP distants (HTTP/SSE) à connecter en parallèle au démarrage (par défaut : 20) |

204| `MCP_SERVER_CONNECTION_BATCH_SIZE` | Nombre maximal de serveurs MCP locaux (stdio) à connecter en parallèle au démarrage (par défaut : 3) |

205| `MCP_TIMEOUT` | Délai d'expiration en millisecondes pour le démarrage du serveur MCP (par défaut : 30 000, ou 30 secondes) |

206| `MCP_TOOL_TIMEOUT` | Délai d'expiration en millisecondes pour l'exécution de l'outil MCP (par défaut : 100 000 000, environ 28 heures) |

207| `NO_PROXY` | Liste des domaines et adresses IP vers lesquels les requêtes seront émises directement, en contournant le proxy |

208| `OTEL_LOG_RAW_API_BODIES` | Émettre la requête et la réponse JSON complètes de l'API Anthropic Messages en tant qu'événements de journal `api_request_body` / `api_response_body`. Définissez sur `1` pour les corps en ligne tronqués à 60 Ko, ou `file:<dir>` pour écrire les corps non tronqués sur le disque et émettre une référence de chemin `body_ref` à la place. Désactivé par défaut ; les corps incluent l'historique complet de la conversation. Voir [Surveillance](/fr/monitoring-usage#api-request-body-event) |

209| `OTEL_LOG_TOOL_CONTENT` | Définissez sur `1` pour inclure le contenu d'entrée et de sortie d'outil dans les événements d'intervalle OpenTelemetry. Désactivé par défaut pour protéger les données sensibles. Voir [Surveillance](/fr/monitoring-usage) |

210| `OTEL_LOG_TOOL_DETAILS` | Définissez sur `1` pour inclure les arguments d'entrée d'outil, les noms de serveurs MCP, les chaînes d'erreur brutes en cas d'échec d'outil et d'autres détails d'outils dans les traces et journaux OpenTelemetry. Désactivé par défaut pour protéger les informations personnelles. Voir [Surveillance](/fr/monitoring-usage) |

211| `OTEL_LOG_USER_PROMPTS` | Définissez sur `1` pour inclure le texte de l'invite utilisateur dans les traces et journaux OpenTelemetry. Désactivé par défaut (les invites sont masquées). Voir [Surveillance](/fr/monitoring-usage) |

212| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Définissez sur `false` pour exclure l'UUID du compte des attributs de métriques (par défaut : inclus). Voir [Surveillance](/fr/monitoring-usage) |

213| `OTEL_METRICS_INCLUDE_SESSION_ID` | Définissez sur `false` pour exclure l'ID de session des attributs de métriques (par défaut : inclus). Voir [Surveillance](/fr/monitoring-usage) |

214| `OTEL_METRICS_INCLUDE_VERSION` | Définissez sur `true` pour inclure la version de Claude Code dans les attributs de métriques (par défaut : exclu). Voir [Surveillance](/fr/monitoring-usage) |

215| `SLASH_COMMAND_TOOL_CHAR_BUDGET` | Remplacer le budget de caractères pour les métadonnées de skill affichées à l'[outil Skill](/fr/skills#control-who-invokes-a-skill). Le budget s'adapte dynamiquement à 1 % de la fenêtre de contexte, avec un repli de 8 000 caractères. Nom hérité conservé pour la compatibilité rétroactive |

216| `TASK_MAX_OUTPUT_LENGTH` | Nombre maximal de caractères dans la sortie du [subagent](/fr/sub-agents) avant la troncature (par défaut : 32 000, maximum : 160 000). Lorsqu'elle est tronquée, la sortie complète est enregistrée sur le disque et le chemin est inclus dans la réponse tronquée |

217| `USE_BUILTIN_RIPGREP` | Définissez sur `0` pour utiliser le `rg` installé sur le système au lieu du `rg` inclus avec Claude Code |

218| `VERTEX_REGION_CLAUDE_3_5_HAIKU` | Remplacer la région pour Claude 3.5 Haiku lors de l'utilisation de Vertex AI |

219| `VERTEX_REGION_CLAUDE_3_5_SONNET` | Remplacer la région pour Claude 3.5 Sonnet lors de l'utilisation de Vertex AI |

220| `VERTEX_REGION_CLAUDE_3_7_SONNET` | Remplacer la région pour Claude 3.7 Sonnet lors de l'utilisation de Vertex AI |

221| `VERTEX_REGION_CLAUDE_4_0_OPUS` | Remplacer la région pour Claude 4.0 Opus lors de l'utilisation de Vertex AI |

222| `VERTEX_REGION_CLAUDE_4_0_SONNET` | Remplacer la région pour Claude 4.0 Sonnet lors de l'utilisation de Vertex AI |

223| `VERTEX_REGION_CLAUDE_4_1_OPUS` | Remplacer la région pour Claude 4.1 Opus lors de l'utilisation de Vertex AI |

224| `VERTEX_REGION_CLAUDE_4_5_OPUS` | Remplacer la région pour Claude Opus 4.5 lors de l'utilisation de Vertex AI |

225| `VERTEX_REGION_CLAUDE_4_5_SONNET` | Remplacer la région pour Claude Sonnet 4.5 lors de l'utilisation de Vertex AI |

226| `VERTEX_REGION_CLAUDE_4_6_OPUS` | Remplacer la région pour Claude Opus 4.6 lors de l'utilisation de Vertex AI |

227| `VERTEX_REGION_CLAUDE_4_6_SONNET` | Remplacer la région pour Claude Sonnet 4.6 lors de l'utilisation de Vertex AI |

228| `VERTEX_REGION_CLAUDE_4_7_OPUS` | {/* min-version: 2.1.111 */}Remplacer la région pour Claude Opus 4.7 lors de l'utilisation de Vertex AI |

229| `VERTEX_REGION_CLAUDE_HAIKU_4_5` | Remplacer la région pour Claude Haiku 4.5 lors de l'utilisation de Vertex AI |

230 

231Les variables d'exportateur OpenTelemetry standard (`OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER`, `OTEL_EXPORTER_OTLP_ENDPOINT`, `OTEL_EXPORTER_OTLP_PROTOCOL`, `OTEL_EXPORTER_OTLP_HEADERS`, `OTEL_METRIC_EXPORT_INTERVAL`, `OTEL_RESOURCE_ATTRIBUTES` et les variantes spécifiques au signal) sont également prises en charge. Voir [Surveillance](/fr/monitoring-usage) pour les détails de configuration.

232 

233## Voir aussi

234 

235* [Paramètres](/fr/settings) : configurez les variables d'environnement dans `settings.json` pour qu'elles s'appliquent à chaque session

236* [Référence CLI](/fr/cli-reference) : indicateurs de lancement

237* [Configuration réseau](/fr/network-config) : configuration du proxy et TLS

238* [Surveillance](/fr/monitoring-usage) : configuration OpenTelemetry

errors.md +536 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Référence des erreurs

6 

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

8 

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

10 

11Ces erreurs et les commandes de récupération s'appliquent sur l'ensemble de l'interface CLI, l'[application Desktop](/fr/desktop) et [Claude Code sur le web](/fr/claude-code-on-the-web), car les trois encapsulent le même CLI Claude Code. Pour les problèmes spécifiques à une surface, consultez la section dépannage sur la page de cette surface.

12 

13<Note>

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

15</Note>

16 

17## Trouvez votre erreur

18 

19Faites correspondre le message que vous voyez dans votre terminal à une section ci-dessous.

20 

21| Message | Section |

22| :----------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------- |

23| `API Error: 500 ... Internal server error` | [Erreurs serveur](#api-error-500-internal-server-error) |

24| `API Error: Repeated 529 Overloaded errors` | [Erreurs serveur](#api-error-repeated-529-overloaded-errors) |

25| `Request timed out` | [Erreurs serveur](#request-timed-out), ou [Réseau](#unable-to-connect-to-api) si le message mentionne votre connexion Internet |

26| `<model> is temporarily unavailable, so auto mode cannot determine the safety of...` | [Erreurs serveur](#auto-mode-cannot-determine-the-safety-of-an-action) |

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

28| `Server is temporarily limiting requests` | [Limites d'utilisation](#server-is-temporarily-limiting-requests) |

29| `Request rejected (429)` | [Limites d'utilisation](#request-rejected-429) |

30| `Credit balance is too low` | [Limites d'utilisation](#credit-balance-is-too-low) |

31| `Not logged in · Please run /login` | [Authentification](#not-logged-in) |

32| `Invalid API key` | [Authentification](#invalid-api-key) |

33| `This organization has been disabled` | [Authentification](#this-organization-has-been-disabled) |

34| `OAuth token revoked` / `OAuth token has expired` | [Authentification](#oauth-token-revoked-or-expired) |

35| `does not meet scope requirement user:profile` | [Authentification](#oauth-scope-requirement) |

36| `Unable to connect to API` | [Réseau](#unable-to-connect-to-api) |

37| `SSL certificate verification failed` | [Réseau](#ssl-certificate-errors) |

38| `Prompt is too long` | [Erreurs de requête](#prompt-is-too-long) |

39| `Error during compaction: Conversation too long` | [Erreurs de requête](#error-during-compaction-conversation-too-long) |

40| `Request too large` | [Erreurs de requête](#request-too-large) |

41| `Image was too large` | [Erreurs de requête](#image-was-too-large) |

42| `PDF too large` / `PDF is password protected` | [Erreurs de requête](#pdf-errors) |

43| `Extra inputs are not permitted` | [Erreurs de requête](#extra-inputs-are-not-permitted) |

44| `There's an issue with the selected model` | [Erreurs de requête](#theres-an-issue-with-the-selected-model) |

45| `Claude Opus is not available with the Claude Pro plan` | [Erreurs de requête](#claude-opus-is-not-available-with-the-claude-pro-plan) |

46| `thinking.type.enabled is not supported for this model` | [Erreurs de requête](#thinking-type-enabled-is-not-supported-for-this-model) |

47| `max_tokens must be greater than thinking.budget_tokens` | [Erreurs de requête](#thinking-budget-exceeds-output-limit) |

48| `API Error: 400 due to tool use concurrency issues` | [Erreurs de requête](#tool-use-or-thinking-block-mismatch) |

49| Les réponses semblent de qualité inférieure à la normale | [Qualité des réponses](#responses-seem-lower-quality-than-usual) |

50 

51## Tentatives automatiques

52 

53Claude Code réessaie les défaillances transitoires avant de vous afficher une erreur. Les erreurs serveur, les réponses surchargées, les délais d'attente des requêtes, les accélérateurs 429 temporaires et les connexions interrompues sont tous réessayés jusqu'à 10 fois avec un backoff exponentiel. Lors des tentatives, le spinner affiche un compte à rebours `Retrying in Ns · attempt x/y`.

54 

55Lorsque vous voyez l'une des erreurs de cette page, ces tentatives ont déjà été épuisées. Vous pouvez ajuster le comportement avec deux variables d'environnement :

56 

57| Variable | Par défaut | Effet |

58| :---------------------------------------- | :--------- | :------------------------------------------------------------------------------------------------------------------------------------------------------- |

59| [`CLAUDE_CODE_MAX_RETRIES`](/fr/env-vars) | 10 | Nombre de tentatives. Réduisez-le pour afficher les défaillances plus rapidement dans les scripts ; augmentez-le pour attendre les incidents plus longs. |

60| [`API_TIMEOUT_MS`](/fr/env-vars) | 600000 | Délai d'attente par requête en millisecondes. Augmentez-le pour les réseaux lents ou les proxies. |

61 

62## Erreurs serveur

63 

64Ces erreurs proviennent de l'infrastructure Anthropic plutôt que de votre compte ou de votre requête.

65 

66### API Error: 500 Internal server error

67 

68Claude Code affiche le corps de la réponse API brute pour tout statut 5xx. L'exemple ci-dessous montre une réponse 500 :

69 

70```text theme={null}

71API Error: 500 {"type":"error","error":{"type":"api_error","message":"Internal server error"}} · check status.claude.com

72```

73 

74Cela indique une défaillance inattendue à l'intérieur de l'API. Elle n'est pas causée par votre prompt, vos paramètres ou votre compte.

75 

76**Que faire :**

77 

78* Vérifiez [status.claude.com](https://status.claude.com) pour les incidents actifs

79* Attendez une minute, puis envoyez votre message à nouveau. Votre message original est toujours dans la conversation, donc pour un long prompt vous pouvez taper `try again` au lieu de coller le tout.

80* Si l'erreur persiste sans incident affiché, exécutez `/feedback` pour qu'Anthropic puisse enquêter avec les détails de votre requête. Consultez [Signaler une erreur](#report-an-error) si `/feedback` n'est pas disponible sur votre fournisseur.

81 

82### API Error: Repeated 529 Overloaded errors

83 

84L'API est temporairement à pleine capacité pour tous les utilisateurs. Claude Code a déjà réessayé plusieurs fois avant d'afficher ce message :

85 

86```text theme={null}

87API Error: Repeated 529 Overloaded errors · check status.claude.com

88```

89 

90Un 529 n'est pas votre limite d'utilisation et ne compte pas contre votre quota.

91 

92**Que faire :**

93 

94* Vérifiez [status.claude.com](https://status.claude.com) pour les avis de capacité

95* Réessayez dans quelques minutes

96* Exécutez `/model` et basculez vers un modèle différent pour continuer à travailler, car la capacité est suivie par modèle. Claude Code vous invite à le faire lorsqu'un modèle est sous une charge particulièrement élevée, par exemple `Opus is experiencing high load, please use /model to switch to Sonnet`.

97 

98### Request timed out

99 

100L'API n'a pas répondu avant la date limite de connexion.

101 

102```text theme={null}

103Request timed out

104```

105 

106Cela peut se produire pendant les périodes de charge élevée ou lorsqu'une très grande réponse est générée. Le délai d'attente par défaut de la requête est de 10 minutes.

107 

108**Que faire :**

109 

110* Réessayez la requête

111* Pour les tâches longues, divisez le travail en prompts plus petits

112* Si un réseau lent ou un proxy est la cause, augmentez `API_TIMEOUT_MS` comme décrit dans [Tentatives automatiques](#automatic-retries)

113* Si les délais d'attente sont fréquents et que votre réseau est par ailleurs sain, consultez [Erreurs réseau et de connexion](#network-and-connection-errors) ci-dessous

114 

115### Auto mode cannot determine the safety of an action

116 

117Le modèle que le [mode auto](/fr/permission-modes#eliminate-prompts-with-auto-mode) utilise pour classer les actions est surchargé, donc le mode auto a bloqué l'action au lieu de l'approuver sans vérification.

118 

119```text theme={null}

120<model> is temporarily unavailable, so auto mode cannot determine the safety of <tool> right now. Wait briefly and then try this action again.

121```

122 

123Les lectures, les recherches et les modifications dans votre répertoire de travail ignorent le classificateur, donc elles continuent à fonctionner pendant la panne.

124 

125**Que faire :**

126 

127* Réessayez après quelques secondes ; Claude voit le même message et réessaie généralement automatiquement

128* Si les tentatives continuent d'échouer, continuez avec les tâches en lecture seule et revenez à l'action bloquée plus tard

129* C'est transitoire et sans rapport avec l'[admissibilité du mode auto](/fr/permission-modes#eliminate-prompts-with-auto-mode) ; vous n'avez pas besoin de modifier les paramètres

130 

131## Limites d'utilisation

132 

133Ces erreurs signifient qu'un quota lié à votre compte ou à votre plan a été atteint. Elles sont distinctes des [erreurs serveur](#server-errors), qui affectent tout le monde.

134 

135### You've hit your session limit

136 

137Les plans d'abonnement incluent une allocation d'utilisation roulante. Lorsqu'elle s'épuise, vous voyez l'un de ces messages :

138 

139```text theme={null}

140You've hit your session limit · resets 3:45pm

141You've hit your weekly limit · resets Mon 12:00am

142You've hit your Opus limit · resets 3:45pm

143```

144 

145Claude Code bloque les demandes supplémentaires jusqu'à l'heure de réinitialisation indiquée dans le message.

146 

147**Que faire :**

148 

149* Attendez l'heure de réinitialisation indiquée dans l'erreur

150* Exécutez `/usage` pour voir les limites de votre plan et quand elles se réinitialisent

151* Exécutez `/extra-usage` pour acheter une utilisation supplémentaire sur Pro et Max, ou pour la demander à votre administrateur sur Team et Enterprise. Consultez [Extra usage for paid plans](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) pour savoir comment cela est facturé.

152* Pour mettre à niveau votre plan pour des limites de base plus élevées, consultez [claude.com/pricing](https://claude.com/pricing)

153 

154Pour surveiller votre allocation restante avant d'atteindre la limite, ajoutez les champs `rate_limits` à une [ligne d'état personnalisée](/fr/statusline#rate-limit-usage), ou dans l'application Desktop cliquez sur l'[anneau d'utilisation](/fr/desktop#check-usage) à côté du sélecteur de modèle.

155 

156### Server is temporarily limiting requests

157 

158L'API a appliqué un accélérateur de courte durée qui n'est pas lié à votre quota de plan.

159 

160```text theme={null}

161API Error: Server is temporarily limiting requests (not your usage limit)

162```

163 

164Ceci est [réessayé automatiquement](#automatic-retries) avant d'être affiché.

165 

166**Que faire :**

167 

168* Attendez brièvement et réessayez

169* Vérifiez [status.claude.com](https://status.claude.com) si cela persiste

170 

171### Request rejected (429)

172 

173Vous avez atteint la limite de débit configurée pour votre clé API, votre projet Amazon Bedrock ou votre projet Google Vertex AI.

174 

175```text theme={null}

176API Error: Request rejected (429) · this may be a temporary capacity issue

177```

178 

179**Que faire :**

180 

181* Exécutez `/status` et confirmez que les identifiants actifs sont ceux que vous attendez. Une `ANTHROPIC_API_KEY` égarée dans votre environnement peut acheminer les requêtes via une clé de niveau inférieur au lieu de votre abonnement.

182* Vérifiez la console de votre fournisseur pour les limites actives et demandez un niveau supérieur si nécessaire

183* Pour les clés API Anthropic, consultez la [référence des limites de débit](https://platform.claude.com/docs/en/api/rate-limits) pour savoir comment fonctionnent les niveaux et comment définir des plafonds par espace de travail

184* Réduisez la concurrence : réduisez [`CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY`](/fr/env-vars), évitez d'exécuter de nombreux sous-agents parallèles, ou basculez vers un modèle plus petit avec `/model` pour les exécutions scriptées à haut volume

185 

186### Credit balance is too low

187 

188Votre organisation Console a épuisé ses crédits prépayés.

189 

190```text theme={null}

191Credit balance is too low

192```

193 

194**Que faire :**

195 

196* Ajoutez des crédits sur [platform.claude.com/settings/billing](https://platform.claude.com/settings/billing), et envisagez d'activer le rechargement automatique pour que le solde se remplisse avant d'atteindre zéro

197* Basculez vers l'authentification par abonnement avec `/login` si vous avez un plan Pro, Max, Team ou Enterprise

198* Définissez des plafonds de dépenses par espace de travail dans la Console pour empêcher un seul projet de drainer le solde de l'organisation. Consultez [Gérer les coûts efficacement](/fr/costs).

199 

200## Erreurs d'authentification

201 

202Ces erreurs signifient que Claude Code ne peut pas prouver qui vous êtes à l'API. Exécutez `/status` à tout moment pour voir quel identifiant est actuellement actif.

203 

204### Not logged in

205 

206Aucun identifiant valide n'est disponible pour cette session.

207 

208```text theme={null}

209Not logged in · Please run /login

210```

211 

212**Que faire :**

213 

214* Exécutez `/login` pour vous authentifier avec votre abonnement Claude ou votre compte Console

215* Si vous vous attendiez à ce qu'une variable d'environnement vous authentifie, confirmez que `ANTHROPIC_API_KEY` est définie et exportée dans le shell où vous avez lancé `claude`

216* Pour l'intégration continue ou l'automatisation où la connexion interactive n'est pas possible, configurez un script [`apiKeyHelper`](/fr/settings#available-settings) qui récupère une clé au démarrage

217* Consultez [Précédence d'authentification](/fr/authentication#authentication-precedence) pour comprendre quel identifiant gagne lorsque plusieurs sont présents

218 

219Si vous êtes invité à vous connecter à plusieurs reprises, consultez [Not logged in or token expired](/fr/troubleshoot-install#not-logged-in-or-token-expired) pour les corrections d'horloge système et de Keychain macOS.

220 

221### Invalid API key

222 

223La variable d'environnement `ANTHROPIC_API_KEY` ou le script `apiKeyHelper` a renvoyé une clé que l'API a rejetée.

224 

225```text theme={null}

226Invalid API key · Fix external API key

227```

228 

229**Que faire :**

230 

231* Vérifiez les fautes de frappe et confirmez que la clé n'a pas été révoquée dans la [Console](https://platform.claude.com/settings/keys)

232* Exécutez `env | grep ANTHROPIC` dans le même shell. Des outils comme direnv, les plugins shell dotenv et les terminaux IDE peuvent charger une clé obsolète à partir d'un fichier `.env` dans votre projet sans que vous la définissiez explicitement.

233* Déconfigurez `ANTHROPIC_API_KEY` et exécutez `/login` pour utiliser l'authentification par abonnement à la place

234* Si la clé provient d'un script [`apiKeyHelper`](/fr/settings#available-settings), exécutez le script directement pour confirmer qu'il imprime une clé valide sur stdout

235* Exécutez `/status` pour confirmer quelle source d'identifiant Claude Code utilise réellement

236 

237### This organization has been disabled

238 

239Une `ANTHROPIC_API_KEY` obsolète d'une organisation Console désactivée remplace votre connexion par abonnement.

240 

241```text theme={null}

242Your ANTHROPIC_API_KEY belongs to a disabled organization · Unset the environment variable to use your other credentials

243API Error: 400 ... This organization has been disabled.

244```

245 

246Les variables d'environnement ont la priorité sur `/login`, donc une clé exportée dans votre profil shell ou chargée à partir d'un fichier `.env` est utilisée même lorsque vous avez un abonnement Pro ou Max fonctionnant. En mode non interactif (`-p`), la clé est toujours utilisée lorsqu'elle est présente.

247 

248**Que faire :**

249 

250* Déconfigurez `ANTHROPIC_API_KEY` dans le shell actuel et supprimez-le de votre profil shell, puis relancez `claude`

251* Exécutez `/status` après pour confirmer que l'identifiant actif est votre abonnement

252* Si aucune variable d'environnement n'est définie et que l'erreur persiste, l'organisation désactivée est celle liée à votre `/login`. Contactez le support ou connectez-vous avec un compte différent.

253 

254### OAuth token revoked or expired

255 

256Votre connexion enregistrée n'est plus valide. Un jeton révoqué signifie que vous vous êtes déconnecté partout ou qu'un administrateur a supprimé l'accès ; un jeton expiré signifie que l'actualisation automatique a échoué en milieu de session.

257 

258```text theme={null}

259OAuth token revoked · Please run /login

260OAuth token has expired · Please run /login

261API Error: 401 ... authentication_error

262```

263 

264**Que faire :**

265 

266* Exécutez `/login` pour vous reconnecter

267* Si l'erreur revient dans la même session après la réauthentification, exécutez d'abord `/logout` pour effacer complètement le jeton stocké, puis `/login`

268* Pour les invites répétées de connexion entre les lancements, consultez les vérifications d'horloge système et de Keychain macOS dans [Troubleshooting](/fr/troubleshoot-install#not-logged-in-or-token-expired)

269* Pour les autres défaillances incluant `403 Forbidden` et les problèmes de navigateur OAuth, consultez [Login and authentication](/fr/troubleshoot-install#login-and-authentication)

270 

271### OAuth scope requirement

272 

273Le jeton stocké est antérieur à une portée de permission qu'une fonctionnalité plus récente nécessite. Vous voyez cela le plus souvent à partir de `/usage` et de l'indicateur d'utilisation de la ligne d'état :

274 

275```text theme={null}

276OAuth token does not meet scope requirement: user:profile

277```

278 

279**Que faire :**

280 

281* Exécutez `/login` pour créer un nouveau jeton avec les portées actuelles. Vous n'avez pas besoin de vous déconnecter d'abord.

282 

283## Erreurs réseau et de connexion

284 

285Ces erreurs signifient que Claude Code n'a pas pu atteindre l'API du tout. Elles proviennent presque toujours de votre réseau local, proxy ou pare-feu plutôt que de l'infrastructure Anthropic.

286 

287### Unable to connect to API

288 

289La connexion TCP à l'API a échoué ou ne s'est jamais complétée.

290 

291```text theme={null}

292Unable to connect to API. Check your internet connection

293Unable to connect to API (ECONNREFUSED)

294Unable to connect to API (ECONNRESET)

295Unable to connect to API (ETIMEDOUT)

296fetch failed

297Request timed out. Check your internet connection and proxy settings

298```

299 

300Les causes courantes incluent l'absence d'accès Internet, un VPN qui bloque `api.anthropic.com`, ou un proxy d'entreprise requis qui n'est pas configuré.

301 

302**Que faire :**

303 

304* Confirmez que vous pouvez atteindre l'hôte API à partir du même shell en exécutant `curl -I https://api.anthropic.com`. Sur Windows PowerShell, utilisez `curl.exe -I https://api.anthropic.com` pour que l'alias `Invoke-WebRequest` intégré ne soit pas utilisé.

305* Si vous êtes derrière un proxy d'entreprise, définissez `HTTPS_PROXY` avant de lancer Claude Code et consultez [Network configuration](/fr/network-config)

306* Si vous acheminez via une passerelle LLM ou un relais, définissez [`ANTHROPIC_BASE_URL`](/fr/env-vars) sur son adresse. Consultez [LLM gateway configuration](/fr/llm-gateway) pour la configuration.

307* Assurez-vous que votre pare-feu autorise les hôtes répertoriés dans [Network access requirements](/fr/network-config#network-access-requirements)

308* Les défaillances intermittentes sont [réessayées automatiquement](#automatic-retries) ; les défaillances persistantes pointent vers un problème de réseau local

309 

310Si `curl` réussit mais que Claude Code échoue toujours, la cause est généralement quelque chose entre Node.js et le réseau plutôt que le réseau lui-même :

311 

312* Sur Linux et WSL, vérifiez `/etc/resolv.conf` pour un serveur de noms inaccessible. WSL en particulier peut hériter d'un résolveur cassé de l'hôte.

313* Sur macOS, un client VPN qui a été déconnecté ou désinstallé peut laisser une interface de tunnel ou une règle de routage. Vérifiez `ifconfig` pour les interfaces `utun` obsolètes et supprimez l'extension réseau du VPN dans les Paramètres système.

314* Docker Desktop et les runtimes de conteneurs similaires peuvent intercepter le trafic sortant. Quittez-les et réessayez pour exclure cela.

315 

316### SSL certificate errors

317 

318Un proxy ou un appareil de sécurité sur votre réseau intercepte le trafic TLS avec son propre certificat, et Node.js ne le fait pas confiance.

319 

320```text theme={null}

321Unable to connect to API: SSL certificate verification failed. Check your proxy or corporate SSL certificates

322Unable to connect to API: Self-signed certificate detected

323```

324 

325**Que faire :**

326 

327* Exportez le bundle CA de votre organisation et pointez Node dessus avec `NODE_EXTRA_CA_CERTS=/path/to/ca-bundle.pem`

328* Consultez [Network configuration](/fr/network-config#custom-ca-certificates) pour les instructions de configuration complètes

329* Ne définissez pas `NODE_TLS_REJECT_UNAUTHORIZED=0`, qui désactive complètement la validation des certificats

330 

331## Erreurs de requête

332 

333Ces erreurs signifient que l'API a reçu votre requête mais a rejeté son contenu.

334 

335### Prompt is too long

336 

337La conversation plus les fichiers joints dépassent la fenêtre de contexte du modèle.

338 

339```text theme={null}

340Prompt is too long

341```

342 

343**Que faire :**

344 

345* Exécutez `/compact` pour résumer les tours antérieurs et libérer de l'espace, ou `/clear` pour recommencer

346* Exécutez `/context` pour voir une ventilation de ce qui consomme la fenêtre : prompt système, outils, fichiers mémoire et messages

347* Désactivez les serveurs MCP que vous n'utilisez pas avec `/mcp disable <name>` pour supprimer leurs définitions d'outils du contexte

348* Réduisez les fichiers mémoire `CLAUDE.md` volumineux, ou déplacez les instructions dans les [règles à portée de chemin](/fr/memory#path-specific-rules) qui se chargent uniquement lorsqu'elles sont pertinentes

349* Les sous-agents héritent de chaque définition d'outil MCP de la session parent, ce qui peut remplir leur fenêtre de contexte avant le premier tour. Désactivez les serveurs MCP que vous n'utilisez pas avant de générer des sous-agents.

350* La compaction automatique est activée par défaut et empêche normalement cette erreur. Si vous avez défini [`DISABLE_AUTO_COMPACT`](/fr/env-vars), réactivez-la ou exécutez `/compact` manuellement avant que la fenêtre ne se remplisse.

351 

352Consultez [Explore the context window](/fr/context-window) pour une vue interactive de la façon dont le contexte se remplit.

353 

354### Error during compaction: Conversation too long

355 

356`/compact` lui-même a échoué car il n'y a pas assez d'espace libre pour contenir le résumé qu'il produit.

357 

358```text theme={null}

359Error during compaction: Conversation too long. Press esc twice to go up a few messages and try again.

360```

361 

362Cela peut se produire lorsque la fenêtre est déjà pleine au moment où la compaction automatique se déclenche, ou lorsque vous exécutez `/compact` après avoir vu `Prompt is too long`.

363 

364**Que faire :**

365 

366* Appuyez sur Esc deux fois pour ouvrir la liste des messages et revenir plusieurs tours en arrière. Cela supprime les messages les plus récents du contexte. Ensuite, exécutez `/compact` à nouveau.

367* Si revenir en arrière ne libère pas assez d'espace, exécutez `/clear` pour démarrer une nouvelle session. Votre conversation précédente est préservée et peut être rouverte avec `/resume`.

368 

369### Request too large

370 

371Le corps de la requête brute a dépassé la limite d'octets de l'API avant la tokenisation, généralement en raison d'un fichier collé volumineux ou d'une pièce jointe.

372 

373```text theme={null}

374Request too large (max 30 MB). Double press esc to go back and remove or shrink the attached content.

375```

376 

377C'est une limite de taille sur la requête HTTP, distincte de la [limite de fenêtre de contexte](#prompt-is-too-long).

378 

379**Que faire :**

380 

381* Appuyez sur Esc deux fois et revenir en arrière au-delà du tour qui a ajouté le contenu surdimensionné

382* Référencez les fichiers volumineux par chemin au lieu de coller leur contenu, afin que Claude puisse les lire par morceaux

383* Pour les images, consultez [Image was too large](#image-was-too-large) ci-dessous

384 

385### Image was too large

386 

387Une image collée ou jointe dépasse les limites de taille ou de dimension de l'API.

388 

389```text theme={null}

390Image was too large. Double press esc to go back and try again with a smaller image.

391API Error: 400 ... image dimensions exceed max allowed size

392```

393 

394L'image reste dans l'historique de la conversation après l'erreur, donc chaque message suivant échoue avec la même erreur jusqu'à ce que vous la supprimiez.

395 

396**Que faire :**

397 

398* Appuyez sur Esc deux fois et revenir en arrière au-delà du tour où l'image a été ajoutée

399* Redimensionnez l'image avant de la coller. L'API accepte les images jusqu'à 8000 pixels sur le bord le plus long pour une seule image, ou 2000 pixels lorsque de nombreuses images sont en contexte.

400* Prenez une capture d'écran plus serrée de la région pertinente au lieu de l'écran complet

401 

402### PDF errors

403 

404Le PDF que vous avez joint n'a pas pu être traité.

405 

406```text theme={null}

407PDF too large (max 100 pages, 32 MB). Try splitting it or extracting text first.

408PDF is password protected. Try removing protection or extracting text first.

409The PDF file was not valid. Try converting to a different format first.

410```

411 

412**Que faire :**

413 

414* Pour les PDF surdimensionnés, demandez à Claude de lire une plage de pages avec l'outil Read au lieu de joindre le fichier entier, ou extrayez le texte avec un outil comme `pdftotext` et référencez le fichier de sortie par chemin

415* Pour les PDF protégés ou invalides, supprimez le mot de passe ou réexportez le fichier à partir de son application source, puis réessayez

416 

417### Extra inputs are not permitted

418 

419Un proxy ou une passerelle LLM entre Claude Code et l'API a supprimé l'en-tête de requête `anthropic-beta`, donc l'API a rejeté les champs qui en dépendent.

420 

421```text theme={null}

422API Error: 400 ... Extra inputs are not permitted ... context_management

423API Error: 400 ... Extra inputs are not permitted ... tools.0.custom.input_examples

424API Error: 400 ... Unexpected value(s) for the `anthropic-beta` header

425```

426 

427Claude Code envoie des champs bêta uniquement tels que `context_management`, `effort` et les `input_examples` d'outils aux côtés d'un en-tête `anthropic-beta` qui les active. Lorsqu'une passerelle transfère le corps mais supprime l'en-tête, l'API voit des champs qu'elle ne reconnaît pas.

428 

429**Que faire :**

430 

431* Configurez votre passerelle pour transférer l'en-tête `anthropic-beta`. Consultez [LLM gateway configuration](/fr/llm-gateway).

432* En dernier recours, définissez [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](/fr/env-vars) avant de lancer. Cela désactive les fonctionnalités qui nécessitent l'en-tête bêta pour que les requêtes réussissent via une passerelle qui ne peut pas le transférer.

433 

434### There's an issue with the selected model

435 

436Le nom du modèle configuré n'a pas été reconnu ou votre compte n'a pas accès à celui-ci.

437 

438```text theme={null}

439There's an issue with the selected model (claude-...). It may not exist or you may not have access to it. Run /model to select a different one.

440```

441 

442**Que faire :**

443 

444* Exécutez `/model` pour choisir parmi les modèles disponibles pour votre compte

445* Utilisez un alias tel que `sonnet` ou `opus` au lieu d'un ID complet versionné. Les alias suivent la dernière version pour qu'ils ne deviennent pas obsolètes. Consultez [Model configuration](/fr/model-config).

446* Si le mauvais modèle continue de revenir, un ID obsolète est défini quelque part. Vérifiez dans [l'ordre de priorité](/fr/model-config#setting-your-model) : l'indicateur `--model`, la variable d'environnement `ANTHROPIC_MODEL`, puis le champ `model` dans `.claude/settings.local.json`, le fichier `.claude/settings.json` de votre projet, et `~/.claude/settings.json`. Supprimez la valeur obsolète et Claude Code revient à votre compte par défaut.

447* Pour les déploiements Vertex AI, consultez [Vertex AI troubleshooting](/fr/google-vertex-ai#troubleshooting).

448 

449### Claude Opus is not available with the Claude Pro plan

450 

451Votre plan d'abonnement actif n'inclut pas le modèle que vous avez sélectionné.

452 

453```text theme={null}

454Claude Opus is not available with the Claude Pro plan · Select a different model in /model

455```

456 

457**Que faire :**

458 

459* Exécutez `/model` et sélectionnez un modèle que votre plan inclut

460* Si vous avez récemment mis à niveau votre plan et voyez toujours cela, exécutez `/logout` puis `/login`. Le jeton stocké reflète votre plan au moment où vous vous êtes connecté, donc la mise à niveau sur le web ne prend effet dans une session existante que jusqu'à ce que vous vous réauthentifiiez.

461* Consultez [claude.com/pricing](https://claude.com/pricing) pour savoir quels modèles chaque plan inclut

462 

463### thinking.type.enabled is not supported for this model

464 

465Votre version de Claude Code est plus ancienne que le minimum pour Opus 4.7. L'interface CLI a envoyé une configuration de réflexion que le modèle n'accepte plus.

466 

467```text theme={null}

468API Error: 400 ... "thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.

469```

470 

471**Que faire :**

472 

473* Exécutez `claude update` pour mettre à niveau vers v2.1.111 ou ultérieur, puis redémarrez Claude Code

474* Si vous ne pouvez pas mettre à niveau, exécutez `/model` et sélectionnez Opus 4.6 ou Sonnet à la place

475* Si vous rencontrez cela dans le SDK Agent, consultez [SDK troubleshooting](/fr/agent-sdk/quickstart#troubleshooting)

476 

477### Thinking budget exceeds output limit

478 

479Le budget de réflexion étendue configuré dépasse la longueur de réponse maximale, donc il n'y a pas de place pour la réponse réelle.

480 

481```text theme={null}

482API Error: 400 ... max_tokens must be greater than thinking.budget_tokens

483```

484 

485Claude Code ajuste automatiquement ces valeurs sur l'API Anthropic. Vous voyez généralement cette erreur sur Amazon Bedrock ou Google Vertex AI lorsque [`MAX_THINKING_TOKENS`](/fr/env-vars) est défini plus haut que la limite de sortie du fournisseur, ou lorsque le mode plan augmente le budget de réflexion.

486 

487**Que faire :**

488 

489* Réduisez `MAX_THINKING_TOKENS`, ou augmentez [`CLAUDE_CODE_MAX_OUTPUT_TOKENS`](/fr/env-vars) au-dessus du budget de réflexion

490* Consultez [Extended thinking](/fr/common-workflows#use-extended-thinking-thinking-mode) pour savoir comment le budget interagit avec la longueur de sortie

491 

492### Tool use or thinking block mismatch

493 

494L'historique de la conversation a atteint l'API dans un état incohérent, généralement après qu'un appel d'outil a été interrompu ou qu'un tour a été modifié en milieu de flux.

495 

496```text theme={null}

497API Error: 400 due to tool use concurrency issues. Run /rewind to recover the conversation.

498API Error: 400 ... unexpected `tool_use_id` found in `tool_result` blocks

499API Error: 400 ... thinking blocks ... cannot be modified

500```

501 

502Les trois variantes signifient la même chose : la séquence de blocs `tool_use`, `tool_result` et `thinking` dans l'historique ne correspond plus à ce que l'API attend.

503 

504**Que faire :**

505 

506* Exécutez `/rewind`, ou appuyez sur Esc deux fois, pour revenir à un point de contrôle avant le tour corrompu et continuer à partir de là. Consultez [Checkpointing](/fr/checkpointing) pour savoir comment les points de contrôle sont créés et restaurés.

507 

508## Les réponses semblent de qualité inférieure à la normale

509 

510Si les réponses de Claude semblent moins capables que vous ne l'attendez mais qu'aucune erreur n'est affichée, la cause est généralement l'état de la conversation plutôt que le modèle lui-même. Claude Code ne change pas silencieusement les versions de modèle. Il peut basculer vers un modèle de secours dans des cas spécifiques tels qu'un quota Opus atteint ou une région Bedrock ou Vertex AI manquant votre modèle ; la vérification de sélection de modèle ci-dessous capture les deux, et [Model configuration](/fr/model-config) explique quand le secours s'applique.

511 

512Vérifiez d'abord ceux-ci :

513 

514* **Sélection du modèle** : exécutez `/model` pour confirmer que vous êtes sur le modèle que vous attendez. Un choix `/model` précédent ou une variable d'environnement `ANTHROPIC_MODEL` peut vous mettre sur un modèle plus petit que prévu.

515* **Niveau d'effort** : exécutez `/effort` pour vérifier le niveau de raisonnement actuel et augmentez-le pour le débogage difficile ou le travail de conception. Les valeurs par défaut varient selon le modèle, donc vérifiez avant de supposer que vous êtes en dessous du maximum. Consultez [Adjust effort level](/fr/model-config#adjust-effort-level) pour les valeurs par défaut par modèle et le raccourci `ultrathink`.

516* **Pression de contexte** : exécutez `/context` pour voir à quel point la fenêtre est pleine. Si elle est près de la capacité, exécutez `/compact` à un point de rupture naturel ou `/clear` pour recommencer. Consultez [Explore the context window](/fr/context-window) pour savoir comment la compaction automatique affecte les tours antérieurs.

517* **Instructions obsolètes** : les fichiers `CLAUDE.md` volumineux ou obsolètes et les définitions d'outils MCP consomment du contexte et peuvent orienter les réponses. `/doctor` signale les fichiers mémoire surdimensionnés et les définitions de sous-agents ; `/context` affiche l'utilisation des jetons d'outils MCP.

518 

519Lorsqu'une réponse s'avère mauvaise, le rembobinage fonctionne généralement mieux que de répondre avec des corrections. Appuyez sur Esc deux fois ou exécutez `/rewind` pour revenir avant le mauvais tour, puis reformulez le prompt avec plus de détails. Corriger dans le fil conserve la mauvaise tentative en contexte, ce qui peut ancrer les réponses ultérieures à celle-ci. Consultez [Checkpointing](/fr/checkpointing).

520 

521Si la qualité semble toujours incorrecte après avoir vérifié ce qui précède, exécutez `/feedback` et décrivez ce que vous attendiez par rapport à ce que vous avez obtenu. Les commentaires soumis de cette manière incluent la transcription de la conversation, ce qui est le moyen le plus rapide pour Anthropic de diagnostiquer une véritable régression. Consultez [Signaler une erreur](#report-an-error) si `/feedback` n'est pas disponible sur votre fournisseur.

522 

523## Signaler une erreur

524 

525Cette page couvre les erreurs de l'API Claude. Pour les erreurs d'autres composants Claude Code, consultez le guide pertinent :

526 

527* Le serveur MCP n'a pas pu se connecter ou s'authentifier : [MCP](/fr/mcp)

528* Le script hook a échoué ou a bloqué un outil : [Debug hooks](/fr/hooks#debug-hooks)

529* Autorisation refusée ou erreurs du système de fichiers lors de l'installation : [Troubleshooting](/fr/troubleshooting)

530 

531Si une erreur n'est pas répertoriée ici ou que la correction suggérée n'aide pas :

532 

533* Exécutez `/feedback` dans Claude Code pour envoyer la transcription et une description à Anthropic. La commande offre également d'ouvrir un problème GitHub prérempli. Les commentaires ne sont pas disponibles sur les déploiements Bedrock, Vertex AI et Foundry.

534* Exécutez `/doctor` pour vérifier les problèmes de configuration locale

535* Vérifiez [status.claude.com](https://status.claude.com) pour les incidents actifs

536* Recherchez les [problèmes existants](https://github.com/anthropics/claude-code/issues) sur GitHub

fast-mode.md +151 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Accélérez les réponses avec le mode rapide

6 

7> Obtenez des réponses Opus 4.6 plus rapides dans Claude Code en activant le mode rapide.

8 

9<Note>

10 Le mode rapide est en [aperçu de recherche](#research-preview). La fonctionnalité, la tarification et la disponibilité peuvent changer en fonction des commentaires.

11</Note>

12 

13Le mode rapide est une configuration haute vitesse pour Claude Opus 4.6, rendant le modèle 2,5 fois plus rapide à un coût par jeton plus élevé. Activez-le avec `/fast` quand vous avez besoin de vitesse pour un travail interactif comme l'itération rapide ou le débogage en direct, et désactivez-le quand le coût importe plus que la latence.

14 

15Le mode rapide n'est pas un modèle différent. Il utilise le même Opus 4.6 avec une configuration API différente qui priorise la vitesse plutôt que l'efficacité des coûts. Vous obtenez une qualité et des capacités identiques, juste des réponses plus rapides.

16 

17<Note>

18 Le mode rapide nécessite Claude Code v2.1.36 ou ultérieur. Vérifiez votre version avec `claude --version`.

19</Note>

20 

21Ce qu'il faut savoir :

22 

23* Utilisez `/fast` pour activer/désactiver le mode rapide dans Claude Code CLI. Également disponible via `/fast` dans l'extension Claude Code VS Code.

24* La tarification du mode rapide pour Opus 4.6 commence à 30 \$/150 MTok. Le mode rapide est disponible avec une réduction de 50 % pour tous les plans jusqu'à 23 h 59 PT le 16 février.

25* Disponible pour tous les utilisateurs de Claude Code sur les plans d'abonnement (Pro/Max/Team/Enterprise) et Claude Console.

26* Pour les utilisateurs de Claude Code sur les plans d'abonnement (Pro/Max/Team/Enterprise), le mode rapide est disponible via l'utilisation supplémentaire uniquement et n'est pas inclus dans les limites de taux d'utilisation de l'abonnement.

27 

28Cette page couvre comment [activer le mode rapide](#toggle-fast-mode), son [compromis de coût](#understand-the-cost-tradeoff), [quand l'utiliser](#decide-when-to-use-fast-mode), les [exigences](#requirements), l'[opt-in par session](#require-per-session-opt-in), et le [comportement des limites de taux](#handle-rate-limits).

29 

30## Activer le mode rapide

31 

32Activez le mode rapide de l'une de ces deux façons :

33 

34* Tapez `/fast` et appuyez sur Tab pour activer ou désactiver

35* Définissez `"fastMode": true` dans votre [fichier de paramètres utilisateur](/fr/settings)

36 

37Par défaut, le mode rapide persiste entre les sessions. Les administrateurs peuvent configurer le mode rapide pour qu'il se réinitialise à chaque session. Consultez [opt-in par session](#require-per-session-opt-in) pour plus de détails.

38 

39Pour la meilleure efficacité des coûts, activez le mode rapide au début d'une session plutôt que de basculer en milieu de conversation. Consultez [comprendre le compromis de coût](#understand-the-cost-tradeoff) pour plus de détails.

40 

41Quand vous activez le mode rapide :

42 

43* Si vous êtes sur un modèle différent, Claude Code bascule automatiquement vers Opus 4.6

44* Vous verrez un message de confirmation : « Mode rapide ACTIVÉ »

45* Une petite icône `↯` apparaît à côté de l'invite pendant que le mode rapide est actif

46* Exécutez `/fast` à nouveau à tout moment pour vérifier si le mode rapide est activé ou désactivé

47 

48Quand vous désactivez le mode rapide avec `/fast` à nouveau, vous restez sur Opus 4.6. Le modèle ne revient pas à votre modèle précédent. Pour basculer vers un modèle différent, utilisez `/model`.

49 

50## Comprendre le compromis de coût

51 

52Le mode rapide a une tarification par jeton plus élevée que l'Opus 4.6 standard :

53 

54| Mode | Entrée (MTok) | Sortie (MTok) |

55| --------------------------------- | ------------- | ------------- |

56| Mode rapide sur Opus 4.6 (\<200K) | 30 \$ | 150 \$ |

57| Mode rapide sur Opus 4.6 (>200K) | 60 \$ | 225 \$ |

58 

59Le mode rapide est compatible avec la fenêtre de contexte étendue de 1 million de jetons.

60 

61Quand vous basculez en mode rapide en milieu de conversation, vous payez le prix complet du jeton d'entrée non mis en cache du mode rapide pour tout le contexte de la conversation. Cela coûte plus cher que si vous aviez activé le mode rapide dès le départ.

62 

63## Décider quand utiliser le mode rapide

64 

65Le mode rapide est idéal pour le travail interactif où la latence de réponse importe plus que le coût :

66 

67* Itération rapide sur les modifications de code

68* Sessions de débogage en direct

69* Travail sensible au temps avec des délais serrés

70 

71Le mode standard est meilleur pour :

72 

73* Les tâches autonomes longues où la vitesse importe moins

74* Le traitement par lots ou les pipelines CI/CD

75* Les charges de travail sensibles aux coûts

76 

77### Mode rapide par rapport au niveau d'effort

78 

79Le mode rapide et le niveau d'effort affectent tous deux la vitesse de réponse, mais différemment :

80 

81| Paramètre | Effet |

82| ----------------------------- | --------------------------------------------------------------------------------------------------------------- |

83| **Mode rapide** | Même qualité de modèle, latence inférieure, coût plus élevé |

84| **Niveau d'effort inférieur** | Moins de temps de réflexion, réponses plus rapides, qualité potentiellement inférieure sur les tâches complexes |

85 

86Vous pouvez combiner les deux : utilisez le mode rapide avec un [niveau d'effort](/fr/model-config#adjust-effort-level) inférieur pour une vitesse maximale sur les tâches simples.

87 

88## Exigences

89 

90Le mode rapide nécessite tous les éléments suivants :

91 

92* **Non disponible sur les fournisseurs cloud tiers** : le mode rapide n'est pas disponible sur Amazon Bedrock, Google Vertex AI ou Microsoft Azure Foundry. Le mode rapide est disponible via l'API Anthropic Console et pour les plans d'abonnement Claude utilisant l'utilisation supplémentaire.

93* **Utilisation supplémentaire activée** : votre compte doit avoir l'utilisation supplémentaire activée, ce qui permet la facturation au-delà de l'utilisation incluse dans votre plan. Pour les comptes individuels, activez ceci dans vos [paramètres de facturation Console](https://platform.claude.com/settings/organization/billing). Pour Teams et Enterprise, un administrateur doit activer l'utilisation supplémentaire pour l'organisation.

94 

95<Note>

96 L'utilisation du mode rapide est facturée directement à l'utilisation supplémentaire, même si vous avez une utilisation restante sur votre plan. Cela signifie que les jetons du mode rapide ne comptent pas par rapport à l'utilisation incluse de votre plan et sont facturés au tarif du mode rapide à partir du premier jeton.

97</Note>

98 

99* **Activation par l'administrateur pour Teams et Enterprise** : le mode rapide est désactivé par défaut pour les organisations Teams et Enterprise. Un administrateur doit explicitement [activer le mode rapide](#enable-fast-mode-for-your-organization) avant que les utilisateurs puissent y accéder.

100 

101<Note>

102 Si votre administrateur n'a pas activé le mode rapide pour votre organisation, la commande `/fast` affichera « Le mode rapide a été désactivé par votre organisation. »

103</Note>

104 

105### Activer le mode rapide pour votre organisation

106 

107Les administrateurs peuvent activer le mode rapide dans :

108 

109* **Console** (clients API) : [Préférences Claude Code](https://platform.claude.com/claude-code/preferences)

110* **Claude AI** (Teams et Enterprise) : [Paramètres d'administration > Claude Code](https://claude.ai/admin-settings/claude-code)

111 

112Une autre option pour désactiver complètement le mode rapide est de définir `CLAUDE_CODE_DISABLE_FAST_MODE=1`. Consultez [Variables d'environnement](/fr/env-vars).

113 

114### Opt-in par session

115 

116Par défaut, le mode rapide persiste entre les sessions : si un utilisateur active le mode rapide, il reste activé dans les sessions futures. Les administrateurs sur les plans [Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=fast_mode_teams#team-&-enterprise) ou [Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=fast_mode_enterprise) peuvent empêcher cela en définissant `fastModePerSessionOptIn` à `true` dans les [paramètres gérés](/fr/settings#settings-files) ou les [paramètres gérés par le serveur](/fr/server-managed-settings). Cela fait que chaque session commence avec le mode rapide désactivé, obligeant les utilisateurs à l'activer explicitement avec `/fast`.

117 

118```json theme={null}

119{

120 "fastModePerSessionOptIn": true

121}

122```

123 

124Ceci est utile pour contrôler les coûts dans les organisations où les utilisateurs exécutent plusieurs sessions simultanées. Les utilisateurs peuvent toujours activer le mode rapide avec `/fast` quand ils ont besoin de vitesse, mais il se réinitialise au début de chaque nouvelle session. La préférence du mode rapide de l'utilisateur est toujours enregistrée, donc supprimer ce paramètre restaure le comportement persistant par défaut.

125 

126## Gérer les limites de taux

127 

128Le mode rapide a des limites de taux séparées de l'Opus 4.6 standard. Quand vous atteignez la limite de taux du mode rapide ou que vous manquez de crédits d'utilisation supplémentaire :

129 

1301. Le mode rapide bascule automatiquement vers l'Opus 4.6 standard

1312. L'icône `↯` devient grise pour indiquer le refroidissement

1323. Vous continuez à travailler à la vitesse et à la tarification standard

1334. Quand le refroidissement expire, le mode rapide se réactive automatiquement

134 

135Pour désactiver manuellement le mode rapide au lieu d'attendre le refroidissement, exécutez `/fast` à nouveau.

136 

137## Aperçu de recherche

138 

139Le mode rapide est une fonctionnalité d'aperçu de recherche. Cela signifie :

140 

141* La fonctionnalité peut changer en fonction des commentaires

142* La disponibilité et la tarification sont sujettes à changement

143* La configuration API sous-jacente peut évoluer

144 

145Signalez les problèmes ou les commentaires via vos canaux de support Anthropic habituels.

146 

147## Voir aussi

148 

149* [Configuration du modèle](/fr/model-config) : basculer les modèles et ajuster les niveaux d'effort

150* [Gérer les coûts efficacement](/fr/costs) : suivre l'utilisation des jetons et réduire les coûts

151* [Configuration de la ligne d'état](/fr/statusline) : afficher les informations du modèle et du contexte

features-overview.md +294 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Étendre Claude Code

6 

7> Comprenez quand utiliser CLAUDE.md, Skills, subagents, hooks, MCP et plugins.

8 

9Claude Code combine un modèle qui raisonne sur votre code avec des [outils intégrés](/fr/how-claude-code-works#tools) pour les opérations sur fichiers, la recherche, l'exécution et l'accès web. Les outils intégrés couvrent la plupart des tâches de codage. Ce guide couvre la couche d'extension : les fonctionnalités que vous ajoutez pour personnaliser ce que Claude connaît, le connecter à des services externes et automatiser les flux de travail.

10 

11<Note>

12 Pour savoir comment fonctionne la boucle agentive principale, consultez [Comment fonctionne Claude Code](/fr/how-claude-code-works).

13</Note>

14 

15**Nouveau dans Claude Code ?** Commencez par [CLAUDE.md](/fr/memory) pour les conventions de projet. Ajoutez d'autres extensions au fur et à mesure de vos besoins.

16 

17## Aperçu

18 

19Les extensions se connectent à différentes parties de la boucle agentive :

20 

21* **[CLAUDE.md](/fr/memory)** ajoute un contexte persistant que Claude voit à chaque session

22* **[Skills](/fr/skills)** ajoutent des connaissances réutilisables et des flux de travail invocables

23* **[MCP](/fr/mcp)** connecte Claude à des services et outils externes

24* **[Subagents](/fr/sub-agents)** exécutent leurs propres boucles dans un contexte isolé, en retournant des résumés

25* **[Agent teams](/fr/agent-teams)** coordonnent plusieurs sessions indépendantes avec des tâches partagées et une messagerie pair à pair

26* **[Hooks](/fr/hooks)** s'exécutent en dehors de la boucle entièrement en tant que scripts déterministes

27* **[Plugins](/fr/plugins)** et **[marketplaces](/fr/plugin-marketplaces)** empaquettent et distribuent ces fonctionnalités

28 

29[Skills](/fr/skills) sont l'extension la plus flexible. Une skill est un fichier markdown contenant des connaissances, des flux de travail ou des instructions. Vous pouvez invoquer des skills avec une commande comme `/deploy`, ou Claude peut les charger automatiquement quand elles sont pertinentes. Les skills peuvent s'exécuter dans votre conversation actuelle ou dans un contexte isolé via des subagents.

30 

31## Associer les fonctionnalités à votre objectif

32 

33Les fonctionnalités vont du contexte toujours actif que Claude voit à chaque session, aux capacités à la demande que vous ou Claude pouvez invoquer, à l'automatisation en arrière-plan qui s'exécute sur des événements spécifiques. Le tableau ci-dessous montre ce qui est disponible et quand chaque option a du sens.

34 

35| Fonctionnalité | Ce qu'elle fait | Quand l'utiliser | Exemple |

36| ---------------------------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------- |

37| **CLAUDE.md** | Contexte persistant chargé à chaque conversation | Conventions de projet, règles « toujours faire X » | « Utilisez pnpm, pas npm. Exécutez les tests avant de valider. » |

38| **Skill** | Instructions, connaissances et flux de travail que Claude peut utiliser | Contenu réutilisable, documents de référence, tâches répétables | `/deploy` exécute votre liste de contrôle de déploiement ; skill de documentation API avec modèles de points de terminaison |

39| **Subagent** | Contexte d'exécution isolé qui retourne des résultats résumés | Isolation du contexte, tâches parallèles, travailleurs spécialisés | Tâche de recherche qui lit de nombreux fichiers mais retourne uniquement les conclusions clés |

40| **[Agent teams](/fr/agent-teams)** | Coordonnez plusieurs sessions Claude Code indépendantes | Recherche parallèle, développement de nouvelles fonctionnalités, débogage avec hypothèses concurrentes | Générez des relecteurs pour vérifier la sécurité, les performances et les tests simultanément |

41| **MCP** | Connectez-vous à des services externes | Données ou actions externes | Interrogez votre base de données, publiez sur Slack, contrôlez un navigateur |

42| **Hook** | Script déterministe qui s'exécute sur des événements | Automatisation prévisible, aucun LLM impliqué | Exécutez ESLint après chaque modification de fichier |

43 

44**[Plugins](/fr/plugins)** sont la couche d'empaquetage. Un plugin regroupe des skills, des hooks, des subagents et des serveurs MCP dans une seule unité installable. Les skills de plugin sont espacées de noms (comme `/my-plugin:review`) afin que plusieurs plugins puissent coexister. Utilisez les plugins quand vous voulez réutiliser la même configuration sur plusieurs référentiels ou distribuer à d'autres via une **[marketplace](/fr/plugin-marketplaces)**.

45 

46### Comparer les fonctionnalités similaires

47 

48Certaines fonctionnalités peuvent sembler similaires. Voici comment les distinguer.

49 

50<Tabs>

51 <Tab title="Skill vs Subagent">

52 Les skills et les subagents résolvent des problèmes différents :

53 

54 * **Skills** sont du contenu réutilisable que vous pouvez charger dans n'importe quel contexte

55 * **Subagents** sont des travailleurs isolés qui s'exécutent séparément de votre conversation principale

56 

57 | Aspect | Skill | Subagent |

58 | ----------------- | ------------------------------------------------------------ | ----------------------------------------------------------------------------------- |

59 | **Ce que c'est** | Instructions, connaissances ou flux de travail réutilisables | Travailleur isolé avec son propre contexte |

60 | **Avantage clé** | Partagez le contenu entre les contextes | Isolation du contexte. Le travail se fait séparément, seul le résumé revient |

61 | **Meilleur pour** | Matériel de référence, flux de travail invocables | Tâches qui lisent de nombreux fichiers, travail parallèle, travailleurs spécialisés |

62 

63 **Les skills peuvent être de référence ou d'action.** Les skills de référence fournissent des connaissances que Claude utilise tout au long de votre session (comme votre guide de style API). Les skills d'action disent à Claude de faire quelque chose de spécifique (comme `/deploy` qui exécute votre flux de travail de déploiement).

64 

65 **Utilisez un subagent** quand vous avez besoin d'isolation du contexte ou quand votre fenêtre de contexte se remplit. Le subagent pourrait lire des dizaines de fichiers ou exécuter des recherches étendues, mais votre conversation principale ne reçoit qu'un résumé. Puisque le travail du subagent ne consomme pas votre contexte principal, c'est aussi utile quand vous n'avez pas besoin que le travail intermédiaire reste visible. Les subagents personnalisés peuvent avoir leurs propres instructions et peuvent précharger des skills.

66 

67 **Ils peuvent se combiner.** Un subagent peut précharger des skills spécifiques (champ `skills:`). Une skill peut s'exécuter dans un contexte isolé en utilisant `context: fork`. Consultez [Skills](/fr/skills) pour plus de détails.

68 </Tab>

69 

70 <Tab title="CLAUDE.md vs Skill">

71 Les deux stockent des instructions, mais elles se chargent différemment et servent des objectifs différents.

72 

73 | Aspect | CLAUDE.md | Skill |

74 | --------------------------------------- | ---------------------------------- | ------------------------------------------------- |

75 | **Se charge** | À chaque session, automatiquement | À la demande |

76 | **Peut inclure des fichiers** | Oui, avec les importations `@path` | Oui, avec les importations `@path` |

77 | **Peut déclencher des flux de travail** | Non | Oui, avec `/<name>` |

78 | **Meilleur pour** | Règles « toujours faire X » | Matériel de référence, flux de travail invocables |

79 

80 **Mettez-le dans CLAUDE.md** si Claude devrait toujours le savoir : conventions de codage, commandes de construction, structure du projet, règles « ne jamais faire X ».

81 

82 **Mettez-le dans une skill** si c'est du matériel de référence dont Claude a besoin parfois (documentation API, guides de style) ou un flux de travail que vous déclenchez avec `/<name>` (déployer, examiner, publier).

83 

84 **Règle générale :** Gardez CLAUDE.md sous 200 lignes. S'il grandit, déplacez le contenu de référence vers des skills ou divisez-le en fichiers [`.claude/rules/`](/fr/memory#organize-rules-with-clauderules).

85 </Tab>

86 

87 <Tab title="CLAUDE.md vs Rules vs Skills">

88 Les trois stockent des instructions, mais elles se chargent différemment :

89 

90 | Aspect | CLAUDE.md | `.claude/rules/` | Skill |

91 | ----------------- | ---------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------- |

92 | **Se charge** | À chaque session | À chaque session, ou quand les fichiers correspondants sont ouverts | À la demande, quand invoqué ou pertinent |

93 | **Portée** | Projet entier | Peut être limité aux chemins de fichiers | Spécifique à la tâche |

94 | **Meilleur pour** | Conventions principales et commandes de construction | Directives spécifiques au langage ou au répertoire | Matériel de référence, flux de travail répétables |

95 

96 **Utilisez CLAUDE.md** pour les instructions que chaque session a besoin : commandes de construction, conventions de test, architecture du projet.

97 

98 **Utilisez les règles** pour garder CLAUDE.md concentré. Les règles avec [frontmatter `paths`](/fr/memory#path-specific-rules) ne se chargent que quand Claude travaille avec des fichiers correspondants, économisant du contexte.

99 

100 **Utilisez les skills** pour le contenu dont Claude n'a besoin que parfois, comme la documentation API ou une liste de contrôle de déploiement que vous déclenchez avec `/<name>`.

101 </Tab>

102 

103 <Tab title="Subagent vs Agent team">

104 Les deux parallélisent le travail, mais ils sont architecturalement différents :

105 

106 * **Subagents** s'exécutent dans votre session et rapportent les résultats à votre contexte principal

107 * **Agent teams** sont des sessions Claude Code indépendantes qui communiquent les unes avec les autres

108 

109 | Aspect | Subagent | Agent team |

110 | ------------------ | ------------------------------------------------------------------ | --------------------------------------------------------------- |

111 | **Contexte** | Fenêtre de contexte propre ; les résultats reviennent à l'appelant | Fenêtre de contexte propre ; complètement indépendant |

112 | **Communication** | Rapporte les résultats à l'agent principal uniquement | Les coéquipiers se messagent directement |

113 | **Coordination** | L'agent principal gère tout le travail | Liste de tâches partagée avec auto-coordination |

114 | **Meilleur pour** | Tâches ciblées où seul le résultat compte | Travail complexe nécessitant discussion et collaboration |

115 | **Coût en tokens** | Inférieur : les résultats sont résumés au contexte principal | Supérieur : chaque coéquipier est une instance Claude distincte |

116 

117 **Utilisez un subagent** quand vous avez besoin d'un travailleur rapide et ciblé : rechercher une question, vérifier une affirmation, examiner un fichier. Le subagent fait le travail et retourne un résumé. Votre conversation principale reste propre.

118 

119 **Utilisez une agent team** quand les coéquipiers ont besoin de partager les conclusions, de se remettre en question et de se coordonner indépendamment. Les agent teams sont meilleures pour la recherche avec des hypothèses concurrentes, la relecture de code parallèle et le développement de nouvelles fonctionnalités où chaque coéquipier possède une pièce distincte.

120 

121 **Point de transition :** Si vous exécutez des subagents parallèles mais atteignez les limites du contexte, ou si vos subagents ont besoin de communiquer les uns avec les autres, les agent teams sont l'étape naturelle suivante.

122 

123 <Note>

124 Les agent teams sont expérimentales et désactivées par défaut. Consultez [agent teams](/fr/agent-teams) pour la configuration et les limitations actuelles.

125 </Note>

126 </Tab>

127 

128 <Tab title="MCP vs Skill">

129 MCP connecte Claude à des services externes. Les skills étendent ce que Claude connaît, y compris comment utiliser efficacement ces services.

130 

131 | Aspect | MCP | Skill |

132 | ---------------- | ---------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |

133 | **Ce que c'est** | Protocole de connexion à des services externes | Connaissances, flux de travail et matériel de référence |

134 | **Fournit** | Accès aux outils et aux données | Connaissances, flux de travail, matériel de référence |

135 | **Exemples** | Intégration Slack, requêtes de base de données, contrôle de navigateur | Liste de contrôle de relecture de code, flux de travail de déploiement, guide de style API |

136 

137 Ces solutions résolvent des problèmes différents et fonctionnent bien ensemble :

138 

139 **MCP** donne à Claude la capacité d'interagir avec les systèmes externes. Sans MCP, Claude ne peut pas interroger votre base de données ou publier sur Slack.

140 

141 **Skills** donnent à Claude des connaissances sur la façon d'utiliser efficacement ces outils, plus des flux de travail que vous pouvez déclencher avec `/<name>`. Une skill pourrait inclure le schéma de votre base de données et les modèles de requête, ou un flux de travail `/post-to-slack` avec les règles de formatage des messages de votre équipe.

142 

143 Exemple : Un serveur MCP connecte Claude à votre base de données. Une skill enseigne à Claude votre modèle de données, les modèles de requête courants et les tables à utiliser pour différentes tâches.

144 </Tab>

145</Tabs>

146 

147### Comprendre comment les fonctionnalités se superposent

148 

149Les fonctionnalités peuvent être définies à plusieurs niveaux : à l'échelle de l'utilisateur, par projet, via des plugins ou via des politiques gérées. Vous pouvez également imbriquer des fichiers CLAUDE.md dans des sous-répertoires ou placer des skills dans des packages spécifiques d'un monorepo. Quand la même fonctionnalité existe à plusieurs niveaux, voici comment elles se superposent :

150 

151* **Les fichiers CLAUDE.md** sont additifs : tous les niveaux contribuent du contenu au contexte de Claude simultanément. Les fichiers de votre répertoire de travail et au-dessus se chargent au lancement ; les sous-répertoires se chargent au fur et à mesure que vous y travaillez. Quand les instructions entrent en conflit, Claude utilise son jugement pour les réconcilier, les instructions plus spécifiques ayant généralement la priorité. Consultez [comment les fichiers CLAUDE.md se chargent](/fr/memory#how-claudemd-files-load).

152* **Les skills et subagents** se remplacent par nom : quand le même nom existe à plusieurs niveaux, une définition gagne en fonction de la priorité (géré > utilisateur > projet pour les skills ; géré > drapeau CLI > projet > utilisateur > plugin pour les subagents). Les skills de plugin sont [espacées de noms](/fr/plugins#add-skills-to-your-plugin) pour éviter les conflits. Consultez [découverte de skills](/fr/skills#where-skills-live) et [portée du subagent](/fr/sub-agents#choose-the-subagent-scope).

153* **Les serveurs MCP** se remplacent par nom : local > projet > utilisateur. Consultez [portée MCP](/fr/mcp#scope-hierarchy-and-precedence).

154* **Les hooks** fusionnent : tous les hooks enregistrés se déclenchent pour leurs événements correspondants indépendamment de la source. Consultez [hooks](/fr/hooks).

155 

156### Combiner les fonctionnalités

157 

158Chaque extension résout un problème différent : CLAUDE.md gère le contexte toujours actif, les skills gèrent les connaissances et les flux de travail à la demande, MCP gère les connexions externes, les subagents gèrent l'isolation et les hooks gèrent l'automatisation. Les configurations réelles les combinent en fonction de votre flux de travail.

159 

160Par exemple, vous pourriez utiliser CLAUDE.md pour les conventions de projet, une skill pour votre flux de travail de déploiement, MCP pour vous connecter à votre base de données et un hook pour exécuter le linting après chaque modification. Chaque fonctionnalité gère ce pour quoi elle est la meilleure.

161 

162| Modèle | Comment ça fonctionne | Exemple |

163| ---------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |

164| **Skill + MCP** | MCP fournit la connexion ; une skill enseigne à Claude comment l'utiliser bien | MCP se connecte à votre base de données, une skill documente votre schéma et les modèles de requête |

165| **Skill + Subagent** | Une skill génère des subagents pour le travail parallèle | La skill `/audit` lance des subagents de sécurité, de performance et de style qui travaillent dans un contexte isolé |

166| **CLAUDE.md + Skills** | CLAUDE.md contient les règles toujours actives ; les skills contiennent le matériel de référence chargé à la demande | CLAUDE.md dit ' suivez nos conventions API ', une skill contient le guide de style API complet |

167| **Hook + MCP** | Un hook déclenche des actions externes via MCP | Le hook post-édition envoie une notification Slack quand Claude modifie des fichiers critiques |

168 

169## Comprendre les coûts du contexte

170 

171Chaque fonctionnalité que vous ajoutez consomme une partie du contexte de Claude. Trop peut remplir votre fenêtre de contexte, mais cela peut aussi ajouter du bruit qui rend Claude moins efficace ; les skills peuvent ne pas se déclencher correctement, ou Claude peut perdre de vue vos conventions. Comprendre ces compromis vous aide à construire une configuration efficace.

172 

173### Coût du contexte par fonctionnalité

174 

175Chaque fonctionnalité a une stratégie de chargement et un coût de contexte différents :

176 

177| Fonctionnalité | Quand elle se charge | Ce qui se charge | Coût du contexte |

178| ---------------- | -------------------------------- | -------------------------------------------------------- | --------------------------------------------------------- |

179| **CLAUDE.md** | Début de session | Contenu complet | À chaque requête |

180| **Skills** | Début de session + quand utilisé | Descriptions au démarrage, contenu complet quand utilisé | Faible (descriptions à chaque requête)\* |

181| **Serveurs MCP** | Début de session | Toutes les définitions d'outils et schémas | À chaque requête |

182| **Subagents** | Quand généré | Contexte frais avec les skills spécifiées | Isolé de la session principale |

183| **Hooks** | Au déclenchement | Rien (s'exécute en externe) | Zéro, sauf si le hook retourne du contexte supplémentaire |

184 

185\*Par défaut, les descriptions de skills se chargent au début de la session afin que Claude puisse décider quand les utiliser. Définissez `disable-model-invocation: true` dans le frontmatter d'une skill pour la masquer complètement à Claude jusqu'à ce que vous l'invoquiez manuellement. Cela réduit le coût du contexte à zéro pour les skills que vous ne déclenchez que vous-même.

186 

187### Comprendre comment les fonctionnalités se chargent

188 

189Chaque fonctionnalité se charge à différents points de votre session. Les onglets ci-dessous expliquent quand chacune se charge et ce qui entre dans le contexte.

190 

191<img src="https://mintcdn.com/claude-code/6yTCYq1p37ZB8-CQ/images/context-loading.svg?fit=max&auto=format&n=6yTCYq1p37ZB8-CQ&q=85&s=5a58ce953a35a2412892015e2ad6cb67" alt="Chargement du contexte : CLAUDE.md et MCP se chargent au début de la session et restent dans chaque requête. Les skills chargent les descriptions au démarrage, le contenu complet à l'invocation. Les subagents obtiennent un contexte isolé. Les hooks s'exécutent en externe." width="720" height="410" data-path="images/context-loading.svg" />

192 

193<Tabs>

194 <Tab title="CLAUDE.md">

195 **Quand :** Début de session

196 

197 **Ce qui se charge :** Contenu complet de tous les fichiers CLAUDE.md (niveaux géré, utilisateur et projet).

198 

199 **Héritage :** Claude lit les fichiers CLAUDE.md de votre répertoire de travail jusqu'à la racine et découvre les fichiers imbriqués dans les sous-répertoires au fur et à mesure qu'il accède à ces fichiers. Consultez [Comment les fichiers CLAUDE.md se chargent](/fr/memory#how-claudemd-files-load) pour plus de détails.

200 

201 <Tip>Gardez CLAUDE.md sous 200 lignes. Déplacez le matériel de référence vers les skills, qui se chargent à la demande.</Tip>

202 </Tab>

203 

204 <Tab title="Skills">

205 Les skills sont des capacités supplémentaires dans la boîte à outils de Claude. Elles peuvent être du matériel de référence (comme un guide de style API) ou des flux de travail invocables que vous déclenchez avec `/<name>` (comme `/deploy`). Claude Code est livré avec des [skills groupées](/fr/skills#bundled-skills) comme `/simplify`, `/batch` et `/debug` qui fonctionnent directement. Vous pouvez également créer les vôtres. Claude utilise les skills quand approprié, ou vous pouvez en invoquer une directement.

206 

207 **Quand :** Dépend de la configuration de la skill. Par défaut, les descriptions se chargent au début de la session et le contenu complet se charge quand utilisé. Pour les skills utilisateur uniquement (`disable-model-invocation: true`), rien ne se charge jusqu'à ce que vous les invoquiez.

208 

209 **Ce qui se charge :** Pour les skills invocables par modèle, Claude voit les noms et descriptions dans chaque requête. Quand vous invoquez une skill avec `/<name>` ou que Claude la charge automatiquement, le contenu complet se charge dans votre conversation.

210 

211 **Comment Claude choisit les skills :** Claude associe votre tâche aux descriptions de skills pour décider lesquelles sont pertinentes. Si les descriptions sont vagues ou se chevauchent, Claude peut charger la mauvaise skill ou en manquer une qui aiderait. Pour dire à Claude d'utiliser une skill spécifique, invoquez-la avec `/<name>`. Les skills avec `disable-model-invocation: true` sont invisibles à Claude jusqu'à ce que vous les invoquiez.

212 

213 **Coût du contexte :** Faible jusqu'à utilisation. Les skills utilisateur uniquement ont un coût zéro jusqu'à invocation.

214 

215 **Dans les subagents :** Les skills fonctionnent différemment dans les subagents. Au lieu du chargement à la demande, les skills passées à un subagent sont entièrement préchargées dans son contexte au lancement. Les subagents n'héritent pas des skills de la session principale ; vous devez les spécifier explicitement.

216 

217 <Tip>Utilisez `disable-model-invocation: true` pour les skills avec des effets secondaires. Cela économise du contexte et garantit que seul vous les déclenchez.</Tip>

218 </Tab>

219 

220 <Tab title="Serveurs MCP">

221 **Quand :** Début de session.

222 

223 **Ce qui se charge :** Toutes les définitions d'outils et schémas JSON des serveurs connectés.

224 

225 **Coût du contexte :** [Recherche d'outils](/fr/mcp#scale-with-mcp-tool-search) (activée par défaut) charge les outils MCP jusqu'à 10 % du contexte et reporte le reste jusqu'à ce qu'il soit nécessaire.

226 

227 **Note de fiabilité :** Les connexions MCP peuvent échouer silencieusement en milieu de session. Si un serveur se déconnecte, ses outils disparaissent sans avertissement. Claude peut essayer d'utiliser un outil qui n'existe plus. Si vous remarquez que Claude ne peut pas utiliser un outil MCP auquel il pouvait accéder précédemment, vérifiez la connexion avec `/mcp`.

228 

229 <Tip>Exécutez `/mcp` pour voir les coûts en tokens par serveur. Déconnectez les serveurs que vous n'utilisez pas activement.</Tip>

230 </Tab>

231 

232 <Tab title="Subagents">

233 **Quand :** À la demande, quand vous ou Claude en générez un pour une tâche.

234 

235 **Ce qui se charge :** Contexte frais et isolé contenant :

236 

237 * L'invite système (partagée avec le parent pour l'efficacité du cache)

238 * Contenu complet des skills listées dans le champ `skills:` de l'agent

239 * CLAUDE.md et statut git (hérité du parent)

240 * Quel que soit le contexte que l'agent principal transmet dans l'invite

241 

242 **Coût du contexte :** Isolé de la session principale. Les subagents n'héritent pas de votre historique de conversation ou des skills invoquées.

243 

244 <Tip>Utilisez les subagents pour le travail qui n'a pas besoin de votre contexte de conversation complet. Leur isolation empêche de gonfler votre session principale.</Tip>

245 </Tab>

246 

247 <Tab title="Hooks">

248 **Quand :** Au déclenchement. Les hooks se déclenchent à des événements de cycle de vie spécifiques comme l'exécution d'outils, les limites de session, la soumission d'invite, les demandes de permission et la compaction. Consultez [Hooks](/fr/hooks) pour la liste complète.

249 

250 **Ce qui se charge :** Rien par défaut. Les hooks s'exécutent en tant que scripts externes.

251 

252 **Coût du contexte :** Zéro, sauf si le hook retourne une sortie qui est ajoutée en tant que messages à votre conversation.

253 

254 <Tip>Les hooks sont idéaux pour les effets secondaires (linting, journalisation) qui n'ont pas besoin d'affecter le contexte de Claude.</Tip>

255 </Tab>

256</Tabs>

257 

258## En savoir plus

259 

260Chaque fonctionnalité a son propre guide avec des instructions de configuration, des exemples et des options de configuration.

261 

262<CardGroup cols={2}>

263 <Card title="CLAUDE.md" icon="file-lines" href="/fr/memory">

264 Stockez le contexte du projet, les conventions et les instructions

265 </Card>

266 

267 <Card title="Skills" icon="brain" href="/fr/skills">

268 Donnez à Claude une expertise de domaine et des flux de travail réutilisables

269 </Card>

270 

271 <Card title="Subagents" icon="users" href="/fr/sub-agents">

272 Déléguez le travail à un contexte isolé

273 </Card>

274 

275 <Card title="Agent teams" icon="network" href="/fr/agent-teams">

276 Coordonnez plusieurs sessions travaillant en parallèle

277 </Card>

278 

279 <Card title="MCP" icon="plug" href="/fr/mcp">

280 Connectez Claude à des services externes

281 </Card>

282 

283 <Card title="Hooks" icon="bolt" href="/fr/hooks-guide">

284 Automatisez les flux de travail avec des hooks

285 </Card>

286 

287 <Card title="Plugins" icon="puzzle-piece" href="/fr/plugins">

288 Empaquetez et partagez des ensembles de fonctionnalités

289 </Card>

290 

291 <Card title="Marketplaces" icon="store" href="/fr/plugin-marketplaces">

292 Hébergez et distribuez des collections de plugins

293 </Card>

294</CardGroup>

fullscreen.md +159 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Rendu en plein écran

6 

7> Activez un mode de rendu plus fluide et sans scintillement avec support de la souris et une utilisation mémoire stable dans les longues conversations.

8 

9<Note>

10 Le rendu en plein écran est un [aperçu de recherche](#research-preview) optionnel et nécessite Claude Code v2.1.89 ou ultérieur. Exécutez `/tui fullscreen` pour basculer dans votre conversation actuelle, ou définissez `CLAUDE_CODE_NO_FLICKER=1` sur les versions antérieures à v2.1.110. Le comportement peut changer en fonction des retours.

11</Note>

12 

13Le rendu en plein écran est un chemin de rendu alternatif pour le CLI Claude Code qui élimine le scintillement, maintient l'utilisation mémoire plate dans les longues conversations et ajoute le support de la souris. Il dessine l'interface sur le tampon d'écran alternatif du terminal, comme `vim` ou `htop`, et ne rend que les messages actuellement visibles. Cela réduit la quantité de données envoyées à votre terminal à chaque mise à jour.

14 

15La différence est plus notable dans les émulateurs de terminal où le débit de rendu est le goulot d'étranglement, comme le terminal intégré VS Code, tmux et iTerm2. Si votre position de défilement du terminal saute vers le haut pendant que Claude travaille, ou si l'écran clignote à mesure que la sortie de l'outil s'affiche, ce mode résout ces problèmes.

16 

17<Note>

18 Le terme plein écran décrit comment Claude Code prend le contrôle de la surface de dessin du terminal, de la même manière que `vim`. Cela n'a rien à voir avec la maximisation de votre fenêtre de terminal, et fonctionne à n'importe quelle taille de fenêtre.

19</Note>

20 

21## Activer le rendu en plein écran

22 

23Exécutez `/tui fullscreen` dans n'importe quelle conversation Claude Code. Le CLI enregistre le [paramètre `tui`](/fr/settings#available-settings) et redémarre en plein écran avec votre conversation intacte, afin que vous puissiez basculer en cours de session sans perdre le contexte. Exécutez `/tui` sans argument pour afficher quel moteur de rendu est actif.

24 

25Vous pouvez également définir la variable d'environnement `CLAUDE_CODE_NO_FLICKER` avant de démarrer Claude Code :

26 

27```bash theme={null}

28CLAUDE_CODE_NO_FLICKER=1 claude

29```

30 

31Le paramètre `tui` et la variable d'environnement sont équivalents. La commande `/tui` efface `CLAUDE_CODE_NO_FLICKER` du processus relancé afin que le paramètre qu'elle écrit prenne effet.

32 

33## Ce qui change

34 

35Le rendu en plein écran change la façon dont le CLI dessine sur votre terminal. La boîte d'entrée reste fixe en bas de l'écran au lieu de se déplacer à mesure que la sortie s'affiche. Si l'entrée reste en place pendant que Claude travaille, le rendu en plein écran est actif. Seuls les messages visibles sont conservés dans l'arborescence de rendu, donc la mémoire reste constante quel que soit la longueur de la conversation.

36 

37Parce que la conversation vit dans le tampon d'écran alternatif au lieu du scrollback de votre terminal, quelques choses fonctionnent différemment :

38 

39| Avant | Maintenant | Détails |

40| :--------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------- |

41| `Cmd+f` ou recherche tmux pour trouver du texte | `Ctrl+o` pour le mode transcription, puis `/` pour rechercher ou `[` pour écrire dans le scrollback | [Rechercher et examiner la conversation](#search-and-review-the-conversation) |

42| Clic et glissement natif du terminal pour sélectionner et copier | Sélection dans l'application, copie automatique au relâchement de la souris | [Utiliser la souris](#use-the-mouse) |

43| `Cmd`-clic pour ouvrir une URL | Cliquez sur l'URL | [Utiliser la souris](#use-the-mouse) |

44 

45Si la capture de souris interfère avec votre flux de travail, vous pouvez [la désactiver](#keep-native-text-selection) tout en conservant le rendu sans scintillement.

46 

47## Utiliser la souris

48 

49Le rendu en plein écran capture les événements de souris et les traite dans Claude Code :

50 

51* **Cliquez dans l'entrée d'invite** pour positionner votre curseur n'importe où dans le texte que vous tapez.

52* **Cliquez sur un résultat d'outil réduit** pour le développer et voir la sortie complète. Cliquez à nouveau pour le réduire. L'appel d'outil et son résultat se développent ensemble. Seuls les messages qui ont plus à afficher sont cliquables.

53* **Cliquez sur une URL ou un chemin de fichier** pour l'ouvrir. Les chemins de fichiers dans la sortie de l'outil, comme ceux imprimés après une modification ou une écriture, s'ouvrent dans votre application par défaut. Les URLs `http://` et `https://` simples s'ouvrent dans votre navigateur. Dans la plupart des terminaux, cela remplace le `Cmd`-clic ou `Ctrl`-clic natif, que la capture de souris intercepte. Dans le terminal intégré VS Code et les terminaux basés sur xterm.js similaires, continuez à utiliser `Cmd`-clic. Claude Code se défère au gestionnaire de lien du terminal pour éviter d'ouvrir les liens deux fois.

54* **Cliquez et glissez** pour sélectionner du texte n'importe où dans la conversation. Double-cliquez pour sélectionner un mot, en correspondant avec les limites de mots d'iTerm2 afin qu'un chemin de fichier se sélectionne comme une unité. Triple-cliquez pour sélectionner la ligne.

55* **Faites défiler avec la molette de la souris** pour vous déplacer dans la conversation.

56 

57Le texte sélectionné est copié automatiquement dans votre presse-papiers au relâchement de la souris. Pour désactiver cela, basculez Copier à la sélection dans `/config`. Avec cette option désactivée, appuyez sur `Ctrl+Shift+c` pour copier manuellement. Sur les terminaux qui supportent le protocole clavier kitty, comme kitty, WezTerm, Ghostty et iTerm2, `Cmd+c` fonctionne également. Si vous avez une sélection active, `Ctrl+c` copie au lieu d'annuler.

58 

59Avec une sélection active, maintenez `Shift` et appuyez sur les touches fléchées pour l'étendre à partir du clavier. `Shift+↑` et `Shift+↓` font défiler la fenêtre d'affichage lorsque la sélection atteint le bord supérieur ou inférieur. `Shift+Home` et `Shift+End` étendent jusqu'au début ou à la fin de la ligne actuelle.

60 

61## Faire défiler la conversation

62 

63Le rendu en plein écran gère le défilement dans l'application. Utilisez ces raccourcis pour naviguer :

64 

65| Raccourci | Action |

66| :------------------- | :--------------------------------------------------------- |

67| `PgUp` / `PgDn` | Faites défiler vers le haut ou vers le bas de moitié écran |

68| `Ctrl+Home` | Allez au début de la conversation |

69| `Ctrl+End` | Allez au dernier message et réactivez le suivi automatique |

70| Molette de la souris | Faites défiler quelques lignes à la fois |

71 

72Sur les claviers sans touches `PgUp`, `PgDn`, `Home` ou `End` dédiées, comme les claviers MacBook, maintenez `Fn` avec les touches fléchées : `Fn+↑` envoie `PgUp`, `Fn+↓` envoie `PgDn`, `Fn+←` envoie `Home`, et `Fn+→` envoie `End`. Cela rend `Ctrl+Fn+→` le raccourci de saut vers le bas. Si cela semble maladroit, faites défiler vers le bas avec la molette de la souris pour reprendre le suivi, ou reliez `scroll:bottom` à quelque chose de plus accessible.

73 

74Ces actions sont reliables. Consultez [Actions de défilement](/fr/keybindings#scroll-actions) pour la liste complète des noms d'actions, y compris les variantes de demi-page et de page complète qui n'ont pas de liaison par défaut.

75 

76### Suivi automatique

77 

78Le défilement vers le haut met en pause le suivi automatique afin que la nouvelle sortie ne vous ramène pas vers le bas. Appuyez sur `Ctrl+End` ou faites défiler vers le bas pour reprendre le suivi.

79 

80Pour désactiver entièrement le suivi automatique afin que la vue reste où vous la laissez, ouvrez `/config` et définissez Défilement automatique sur désactivé. Avec le défilement automatique désactivé, la vue ne saute jamais vers le bas d'elle-même. Les invites de permission et autres dialogues qui nécessitent une réponse font toujours défiler dans la vue indépendamment de ce paramètre.

81 

82### Défilement à la molette de la souris

83 

84Le défilement à la molette de la souris nécessite que votre terminal transmette les événements de souris à Claude Code. La plupart des terminaux le font chaque fois qu'une application le demande. iTerm2 en fait un paramètre par profil : si la molette ne fait rien mais que `PgUp` et `PgDn` fonctionnent, ouvrez Paramètres → Profils → Terminal et activez Activer le rapport de souris. Le même paramètre est également requis pour que le clic pour développer et la sélection de texte fonctionnent.

85 

86Si le défilement à la molette de la souris semble lent, votre terminal envoie peut-être un événement de défilement par cran physique sans multiplicateur. Certains terminaux, comme Ghostty et iTerm2 avec défilement plus rapide activé, amplifient déjà les événements de molette. D'autres, y compris le terminal intégré VS Code, envoient exactement un événement par cran. Claude Code ne peut pas détecter lequel.

87 

88Définissez `CLAUDE_CODE_SCROLL_SPEED` pour multiplier la distance de défilement de base :

89 

90```bash theme={null}

91export CLAUDE_CODE_SCROLL_SPEED=3

92```

93 

94Une valeur de `3` correspond à la valeur par défaut dans `vim` et les applications similaires. Le paramètre accepte les valeurs de 1 à 20.

95 

96## Rechercher et examiner la conversation

97 

98`Ctrl+o` bascule entre l'invite normale et le mode transcription. Pour une vue plus calme qui affiche uniquement votre dernière invite, un résumé d'une ligne des appels d'outil avec les statistiques de diff de modification, et la réponse finale, exécutez `/focus`. Le paramètre persiste entre les sessions. Exécutez `/focus` à nouveau pour le désactiver.

99 

100Le mode transcription gagne la navigation et la recherche de style `less` :

101 

102| Touche | Action |

103| :------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------- |

104| `/` | Ouvrir la recherche. Tapez pour trouver des correspondances, `Entrée` pour accepter, `Échap` pour annuler et restaurer votre position de défilement |

105| `n` / `N` | Allez à la correspondance suivante ou précédente. Fonctionne après avoir fermé la barre de recherche |

106| `j` / `k` ou `↑` / `↓` | Faites défiler une ligne |

107| `g` / `G` ou `Home` / `End` | Allez au début ou à la fin |

108| `Ctrl+u` / `Ctrl+d` | Faites défiler une demi-page |

109| `Ctrl+b` / `Ctrl+f` ou `Espace` / `b` | Faites défiler une page complète |

110| `Ctrl+o`, `Échap`, ou `q` | Quitter le mode transcription et revenir à l'invite |

111 

112La `Cmd+f` de votre terminal et la recherche tmux ne voient pas la conversation car elle vit dans le tampon d'écran alternatif, pas le scrollback natif. Pour rendre le contenu à votre terminal, appuyez sur `Ctrl+o` pour entrer d'abord en mode transcription, puis :

113 

114* **`[`** : écrit la conversation complète dans le tampon de scrollback natif de votre terminal, avec toute la sortie de l'outil développée. La conversation est maintenant du texte ordinaire dans votre terminal, donc `Cmd+f`, le mode copie tmux et tout autre outil natif peuvent la rechercher ou la sélectionner. Les longues sessions peuvent faire une pause pendant un moment pendant que cela se produit. Cela dure jusqu'à ce que vous quittiez le mode transcription avec `Échap` ou `q`, ce qui vous ramène au rendu en plein écran. Le prochain `Ctrl+o` recommence à zéro.

115* **`v`** : écrit la conversation dans un fichier temporaire et l'ouvre dans `$VISUAL` ou `$EDITOR`.

116 

117Appuyez sur `Échap` ou `q` pour revenir à l'invite.

118 

119## Effacer la conversation

120 

121Appuyez deux fois sur `Ctrl+L` dans les deux secondes pour exécuter `/clear` et démarrer une nouvelle conversation. Le premier appui redessine l'écran et affiche un indice ; le deuxième appui efface la conversation. Sur macOS, appuyer deux fois sur `Cmd+K` exécute également `/clear`.

122 

123## Utiliser avec tmux

124 

125Le rendu en plein écran fonctionne à l'intérieur de tmux, avec deux mises en garde.

126 

127Le défilement à la molette de la souris nécessite le mode souris de tmux. Si votre `~/.tmux.conf` ne l'active pas déjà, ajoutez cette ligne et rechargez votre configuration :

128 

129```bash theme={null}

130set -g mouse on

131```

132 

133Sans le mode souris, les événements de molette vont à tmux au lieu de Claude Code. Le défilement au clavier avec `PgUp` et `PgDn` fonctionne de toute façon. Claude Code imprime un indice unique au démarrage s'il détecte tmux avec le mode souris désactivé.

134 

135Le rendu en plein écran est incompatible avec le mode d'intégration tmux d'iTerm2, qui est le mode dans lequel vous entrez avec `tmux -CC`. En mode intégration, iTerm2 rend chaque volet tmux comme une division native plutôt que de laisser tmux dessiner sur le terminal. Le tampon d'écran alternatif et le suivi de la souris ne fonctionnent pas correctement là : la molette de la souris ne fait rien, et le double-clic peut corrompre l'état du terminal. N'activez pas le rendu en plein écran dans les sessions `tmux -CC`. Le tmux régulier à l'intérieur d'iTerm2, sans `-CC`, fonctionne bien.

136 

137## Conserver la sélection de texte natif

138 

139La capture de souris est le point de friction le plus courant, surtout sur SSH ou à l'intérieur de tmux. Lorsque Claude Code capture les événements de souris, la copie à la sélection natif de votre terminal cesse de fonctionner. La sélection que vous faites avec clic et glissement existe à l'intérieur de Claude Code, pas dans le tampon de sélection de votre terminal, donc le mode copie tmux, les indices Kitty et les outils similaires ne la voient pas.

140 

141Claude Code essaie d'écrire la sélection dans votre presse-papiers, mais le chemin qu'il utilise dépend de votre configuration. À l'intérieur de tmux, il écrit dans le tampon de collage tmux. Sur SSH, il revient aux séquences d'échappement OSC 52, que certains terminaux bloquent par défaut. iTerm2 les bloque jusqu'à ce que vous activiez Paramètres → Général → Sélection → Les applications du terminal peuvent accéder au presse-papiers. Exécutez [`/terminal-setup`](/fr/terminal-config) dans iTerm2 pour activer cela pour vous. Claude Code imprime un toast après chaque copie vous indiquant quel chemin il a utilisé.

142 

143Pour une sélection natif ponctuelle, maintenez le modificateur de contournement de votre terminal pendant que vous cliquez et glissez : `Option` dans iTerm2, ou `Shift` dans la plupart des terminaux Linux et Windows. Le modificateur indique à votre terminal de gérer la sélection lui-même au lieu de transférer les événements de souris à Claude Code, donc `Cmd+C` et les autres raccourcis de copie de votre terminal fonctionnent dessus.

144 

145Si vous comptez sur la sélection natif de votre terminal, définissez `CLAUDE_CODE_DISABLE_MOUSE=1` pour refuser la capture de souris tout en conservant le rendu sans scintillement et la mémoire plate :

146 

147```bash theme={null}

148CLAUDE_CODE_NO_FLICKER=1 CLAUDE_CODE_DISABLE_MOUSE=1 claude

149```

150 

151Avec la capture de souris désactivée, le défilement au clavier avec `PgUp`, `PgDn`, `Ctrl+Home` et `Ctrl+End` fonctionne toujours, et votre terminal gère la sélection nativement. Vous perdez le clic pour positionner le curseur, le clic pour développer la sortie de l'outil, le clic sur URL et le défilement à la molette à l'intérieur de Claude Code.

152 

153## Aperçu de recherche

154 

155Le rendu en plein écran est une fonctionnalité d'aperçu de recherche. Il a été testé sur les émulateurs de terminal courants, mais vous pouvez rencontrer des problèmes de rendu sur les terminaux moins courants ou les configurations inhabituelles.

156 

157Si vous rencontrez un problème, exécutez `/feedback` à l'intérieur de Claude Code pour le signaler, ou ouvrez un problème sur le [référentiel GitHub claude-code](https://github.com/anthropics/claude-code/issues). Incluez le nom et la version de votre émulateur de terminal.

158 

159Pour désactiver le rendu en plein écran, exécutez `/tui default`, ou déconfigurez la variable d'environnement si vous l'avez activée de cette façon.

github-actions.md +670 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Claude Code GitHub Actions

6 

7> Découvrez comment intégrer Claude Code dans votre flux de travail de développement avec Claude Code GitHub Actions

8 

9Claude Code GitHub Actions apporte l'automatisation alimentée par l'IA à votre flux de travail GitHub. Avec une simple mention `@claude` dans n'importe quelle PR ou issue, Claude peut analyser votre code, créer des pull requests, implémenter des fonctionnalités et corriger des bugs - tout en respectant les normes de votre projet. Pour les révisions automatiques publiées sur chaque PR sans déclencheur, consultez [GitHub Code Review](/fr/code-review).

10 

11<Note>

12 Claude Code GitHub Actions est construit sur le [Claude Agent SDK](/fr/agent-sdk/overview), qui permet l'intégration programmatique de Claude Code dans vos applications. Vous pouvez utiliser le SDK pour créer des flux de travail d'automatisation personnalisés au-delà de GitHub Actions.

13</Note>

14 

15<Info>

16 **Claude Opus 4.7 est maintenant disponible.** Claude Code GitHub Actions utilise par défaut Sonnet. Pour utiliser Opus 4.7, configurez le [paramètre model](#breaking-changes-reference) pour utiliser `claude-opus-4-7`.

17</Info>

18 

19## Pourquoi utiliser Claude Code GitHub Actions ?

20 

21* **Création instantanée de PR** : Décrivez ce dont vous avez besoin, et Claude crée une PR complète avec tous les changements nécessaires

22* **Implémentation de code automatisée** : Transformez les issues en code fonctionnel avec une seule commande

23* **Respecte vos normes** : Claude respecte vos directives `CLAUDE.md` et les modèles de code existants

24* **Configuration simple** : Commencez en quelques minutes avec notre installateur et votre clé API

25* **Sécurisé par défaut** : Votre code reste sur les runners de Github

26 

27## Que peut faire Claude ?

28 

29Claude Code fournit une GitHub Action puissante qui transforme votre façon de travailler avec le code :

30 

31### Claude Code Action

32 

33Cette GitHub Action vous permet d'exécuter Claude Code dans vos flux de travail GitHub Actions. Vous pouvez l'utiliser pour créer n'importe quel flux de travail personnalisé sur Claude Code.

34 

35[Voir le repository →](https://github.com/anthropics/claude-code-action)

36 

37## Configuration

38 

39## Configuration rapide

40 

41Le moyen le plus simple de configurer cette action est via Claude Code dans le terminal. Ouvrez simplement claude et exécutez `/install-github-app`.

42 

43Cette commande vous guidera à travers la configuration de l'application GitHub et des secrets requis.

44 

45<Note>

46 * Vous devez être administrateur du repository pour installer l'application GitHub et ajouter des secrets

47 * L'application GitHub demandera des permissions de lecture et d'écriture pour Contents, Issues et Pull requests

48 * Cette méthode de démarrage rapide n'est disponible que pour les utilisateurs directs de l'API Claude. Si vous utilisez Amazon Bedrock ou Google Vertex AI, veuillez consulter la section [Utilisation avec Amazon Bedrock et Google Vertex AI](#using-with-amazon-bedrock-%26-google-vertex-ai).

49</Note>

50 

51## Configuration manuelle

52 

53Si la commande `/install-github-app` échoue ou si vous préférez une configuration manuelle, veuillez suivre ces instructions de configuration manuelle :

54 

551. **Installez l'application Claude GitHub** dans votre repository : [https://github.com/apps/claude](https://github.com/apps/claude)

56 

57 L'application Claude GitHub nécessite les permissions de repository suivantes :

58 

59 * **Contents** : Lecture et écriture (pour modifier les fichiers du repository)

60 * **Issues** : Lecture et écriture (pour répondre aux issues)

61 * **Pull requests** : Lecture et écriture (pour créer des PRs et pousser les changements)

62 

63 Pour plus de détails sur la sécurité et les permissions, consultez la [documentation de sécurité](https://github.com/anthropics/claude-code-action/blob/main/docs/security.md).

642. **Ajoutez ANTHROPIC\_API\_KEY** à vos secrets de repository ([Apprenez comment utiliser les secrets dans GitHub Actions](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions))

653. **Copiez le fichier de flux de travail** depuis [examples/claude.yml](https://github.com/anthropics/claude-code-action/blob/main/examples/claude.yml) dans le répertoire `.github/workflows/` de votre repository

66 

67<Tip>

68 Après avoir complété la configuration rapide ou manuelle, testez l'action en marquant `@claude` dans un commentaire d'issue ou de PR.

69</Tip>

70 

71## Mise à niveau depuis la version bêta

72 

73<Warning>

74 Claude Code GitHub Actions v1.0 introduit des changements majeurs qui nécessitent de mettre à jour vos fichiers de flux de travail pour passer de la version bêta à v1.0.

75</Warning>

76 

77Si vous utilisez actuellement la version bêta de Claude Code GitHub Actions, nous vous recommandons de mettre à jour vos flux de travail pour utiliser la version GA. La nouvelle version simplifie la configuration tout en ajoutant des fonctionnalités puissantes comme la détection automatique du mode.

78 

79### Changements essentiels

80 

81Tous les utilisateurs bêta doivent apporter ces changements à leurs fichiers de flux de travail pour mettre à niveau :

82 

831. **Mettez à jour la version de l'action** : Changez `@beta` en `@v1`

842. **Supprimez la configuration du mode** : Supprimez `mode: "tag"` ou `mode: "agent"` (maintenant détecté automatiquement)

853. **Mettez à jour les entrées de prompt** : Remplacez `direct_prompt` par `prompt`

864. **Déplacez les options CLI** : Convertissez `max_turns`, `model`, `custom_instructions`, etc. en `claude_args`

87 

88### Référence des changements majeurs

89 

90| Ancienne entrée bêta | Nouvelle entrée v1.0 |

91| --------------------- | ---------------------------------------- |

92| `mode` | *(Supprimée - détectée automatiquement)* |

93| `direct_prompt` | `prompt` |

94| `override_prompt` | `prompt` avec variables GitHub |

95| `custom_instructions` | `claude_args: --append-system-prompt` |

96| `max_turns` | `claude_args: --max-turns` |

97| `model` | `claude_args: --model` |

98| `allowed_tools` | `claude_args: --allowedTools` |

99| `disallowed_tools` | `claude_args: --disallowedTools` |

100| `claude_env` | `settings` format JSON |

101 

102### Exemple avant et après

103 

104**Version bêta :**

105 

106```yaml theme={null}

107- uses: anthropics/claude-code-action@beta

108 with:

109 mode: "tag"

110 direct_prompt: "Review this PR for security issues"

111 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

112 custom_instructions: "Follow our coding standards"

113 max_turns: "10"

114 model: "claude-sonnet-4-6"

115```

116 

117**Version GA (v1.0) :**

118 

119```yaml theme={null}

120- uses: anthropics/claude-code-action@v1

121 with:

122 prompt: "Review this PR for security issues"

123 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

124 claude_args: |

125 --append-system-prompt "Follow our coding standards"

126 --max-turns 10

127 --model claude-sonnet-4-6

128```

129 

130<Tip>

131 L'action détecte maintenant automatiquement s'il faut s'exécuter en mode interactif (répond aux mentions `@claude`) ou en mode automatisation (s'exécute immédiatement avec un prompt) en fonction de votre configuration.

132</Tip>

133 

134## Exemples de cas d'usage

135 

136Claude Code GitHub Actions peut vous aider avec une variété de tâches. Le [répertoire d'exemples](https://github.com/anthropics/claude-code-action/tree/main/examples) contient des flux de travail prêts à l'emploi pour différents scénarios.

137 

138### Flux de travail basique

139 

140```yaml theme={null}

141name: Claude Code

142on:

143 issue_comment:

144 types: [created]

145 pull_request_review_comment:

146 types: [created]

147jobs:

148 claude:

149 runs-on: ubuntu-latest

150 steps:

151 - uses: anthropics/claude-code-action@v1

152 with:

153 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

154 # Responds to @claude mentions in comments

155```

156 

157### Utilisation de skills

158 

159```yaml theme={null}

160name: Code Review

161on:

162 pull_request:

163 types: [opened, synchronize]

164jobs:

165 review:

166 runs-on: ubuntu-latest

167 steps:

168 - uses: anthropics/claude-code-action@v1

169 with:

170 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

171 prompt: "Review this pull request for code quality, correctness, and security. Analyze the diff, then post your findings as review comments."

172 claude_args: "--max-turns 5"

173```

174 

175### Automatisation personnalisée avec prompts

176 

177```yaml theme={null}

178name: Daily Report

179on:

180 schedule:

181 - cron: "0 9 * * *"

182jobs:

183 report:

184 runs-on: ubuntu-latest

185 steps:

186 - uses: anthropics/claude-code-action@v1

187 with:

188 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

189 prompt: "Generate a summary of yesterday's commits and open issues"

190 claude_args: "--model opus"

191```

192 

193### Cas d'usage courants

194 

195Dans les commentaires d'issue ou de PR :

196 

197```text theme={null}

198@claude implement this feature based on the issue description

199@claude how should I implement user authentication for this endpoint?

200@claude fix the TypeError in the user dashboard component

201```

202 

203Claude analysera automatiquement le contexte et répondra de manière appropriée.

204 

205## Bonnes pratiques

206 

207### Configuration CLAUDE.md

208 

209Créez un fichier `CLAUDE.md` à la racine de votre repository pour définir les directives de style de code, les critères de révision, les règles spécifiques au projet et les modèles préférés. Ce fichier guide la compréhension de Claude des normes de votre projet.

210 

211### Considérations de sécurité

212 

213<Warning>Ne commitez jamais les clés API directement dans votre repository.</Warning>

214 

215Pour des conseils de sécurité complets incluant les permissions, l'authentification et les bonnes pratiques, consultez la [documentation de sécurité de Claude Code Action](https://github.com/anthropics/claude-code-action/blob/main/docs/security.md).

216 

217Utilisez toujours GitHub Secrets pour les clés API :

218 

219* Ajoutez votre clé API en tant que secret de repository nommé `ANTHROPIC_API_KEY`

220* Référencez-la dans les flux de travail : `anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}`

221* Limitez les permissions de l'action à ce qui est nécessaire uniquement

222* Examinez les suggestions de Claude avant de fusionner

223 

224Utilisez toujours GitHub Secrets (par exemple, `${{ secrets.ANTHROPIC_API_KEY }}`) plutôt que de coder en dur les clés API directement dans vos fichiers de flux de travail.

225 

226### Optimisation des performances

227 

228Utilisez les modèles d'issue pour fournir du contexte, gardez votre `CLAUDE.md` concis et ciblé, et configurez les délais d'attente appropriés pour vos flux de travail.

229 

230### Coûts CI

231 

232Lorsque vous utilisez Claude Code GitHub Actions, soyez conscient des coûts associés :

233 

234**Coûts GitHub Actions :**

235 

236* Claude Code s'exécute sur les runners hébergés par GitHub, qui consomment vos minutes GitHub Actions

237* Consultez la [documentation de facturation de GitHub](https://docs.github.com/en/billing/managing-billing-for-your-products/managing-billing-for-github-actions/about-billing-for-github-actions) pour les tarifs détaillés et les limites de minutes

238 

239**Coûts API :**

240 

241* Chaque interaction Claude consomme des tokens API en fonction de la longueur des prompts et des réponses

242* L'utilisation des tokens varie selon la complexité de la tâche et la taille de la base de code

243* Consultez la [page de tarification de Claude](https://claude.com/platform/api) pour les tarifs actuels des tokens

244 

245**Conseils d'optimisation des coûts :**

246 

247* Utilisez des commandes `@claude` spécifiques pour réduire les appels API inutiles

248* Configurez `--max-turns` approprié dans `claude_args` pour éviter les itérations excessives

249* Définissez les délais d'attente au niveau du flux de travail pour éviter les jobs qui s'exécutent indéfiniment

250* Envisagez d'utiliser les contrôles de concurrence de GitHub pour limiter les exécutions parallèles

251 

252## Exemples de configuration

253 

254Claude Code Action v1 simplifie la configuration avec des paramètres unifiés :

255 

256```yaml theme={null}

257- uses: anthropics/claude-code-action@v1

258 with:

259 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

260 prompt: "Your instructions here" # Optional

261 claude_args: "--max-turns 5" # Optional CLI arguments

262```

263 

264Fonctionnalités clés :

265 

266* **Interface de prompt unifiée** - Utilisez `prompt` pour toutes les instructions

267* **Skills** - Invoquez les [skills](/fr/skills) installés directement depuis le prompt

268* **Passthrough CLI** - N'importe quel argument Claude Code CLI via `claude_args`

269* **Déclencheurs flexibles** - Fonctionne avec n'importe quel événement GitHub

270 

271Visitez le [répertoire d'exemples](https://github.com/anthropics/claude-code-action/tree/main/examples) pour les fichiers de flux de travail complets.

272 

273<Tip>

274 Lorsque vous répondez à des commentaires d'issue ou de PR, Claude répond automatiquement aux mentions @claude. Pour les autres événements, utilisez le paramètre `prompt` pour fournir des instructions.

275</Tip>

276 

277## Utilisation avec Amazon Bedrock et Google Vertex AI

278 

279Pour les environnements d'entreprise, vous pouvez utiliser Claude Code GitHub Actions avec votre propre infrastructure cloud. Cette approche vous donne le contrôle sur la résidence des données et la facturation tout en maintenant les mêmes fonctionnalités.

280 

281### Prérequis

282 

283Avant de configurer Claude Code GitHub Actions avec les fournisseurs cloud, vous avez besoin de :

284 

285#### Pour Google Cloud Vertex AI :

286 

2871. Un projet Google Cloud avec Vertex AI activé

2882. Workload Identity Federation configuré pour GitHub Actions

2893. Un compte de service avec les permissions requises

2904. Une application GitHub (recommandée) ou utilisez le GITHUB\_TOKEN par défaut

291 

292#### Pour Amazon Bedrock :

293 

2941. Un compte AWS avec Amazon Bedrock activé

2952. GitHub OIDC Identity Provider configuré dans AWS

2963. Un rôle IAM avec les permissions Bedrock

2974. Une application GitHub (recommandée) ou utilisez le GITHUB\_TOKEN par défaut

298 

299<Steps>

300 <Step title="Créer une application GitHub personnalisée (Recommandée pour les fournisseurs tiers)">

301 Pour un meilleur contrôle et une meilleure sécurité lors de l'utilisation de fournisseurs tiers comme Vertex AI ou Bedrock, nous recommandons de créer votre propre application GitHub :

302 

303 1. Allez à [https://github.com/settings/apps/new](https://github.com/settings/apps/new)

304 2. Remplissez les informations de base :

305 * **Nom de l'application GitHub** : Choisissez un nom unique (par exemple, ' YourOrg Claude Assistant ')

306 * **URL de la page d'accueil** : Le site web de votre organisation ou l'URL du repository

307 3. Configurez les paramètres de l'application :

308 * **Webhooks** : Décochez ' Active ' (non nécessaire pour cette intégration)

309 4. Définissez les permissions requises :

310 * **Permissions du repository** :

311 * Contents : Lecture et écriture

312 * Issues : Lecture et écriture

313 * Pull requests : Lecture et écriture

314 5. Cliquez sur ' Create GitHub App '

315 6. Après la création, cliquez sur ' Generate a private key ' et enregistrez le fichier `.pem` téléchargé

316 7. Notez votre ID d'application à partir de la page des paramètres de l'application

317 8. Installez l'application dans votre repository :

318 * À partir de la page des paramètres de votre application, cliquez sur ' Install App ' dans la barre latérale gauche

319 * Sélectionnez votre compte ou organisation

320 * Choisissez ' Only select repositories ' et sélectionnez le repository spécifique

321 * Cliquez sur ' Install '

322 9. Ajoutez la clé privée en tant que secret à votre repository :

323 * Allez à Settings → Secrets and variables → Actions de votre repository

324 * Créez un nouveau secret nommé `APP_PRIVATE_KEY` avec le contenu du fichier `.pem`

325 10. Ajoutez l'ID de l'application en tant que secret :

326 

327 * Créez un nouveau secret nommé `APP_ID` avec l'ID de votre application GitHub

328 

329 <Note>

330 Cette application sera utilisée avec l'action [actions/create-github-app-token](https://github.com/actions/create-github-app-token) pour générer des tokens d'authentification dans vos flux de travail.

331 </Note>

332 

333 **Alternative pour l'API Claude ou si vous ne voulez pas configurer votre propre application Github** : Utilisez l'application officielle Anthropic :

334 

335 1. Installez depuis : [https://github.com/apps/claude](https://github.com/apps/claude)

336 2. Aucune configuration supplémentaire nécessaire pour l'authentification

337 </Step>

338 

339 <Step title="Configurer l'authentification du fournisseur cloud">

340 Choisissez votre fournisseur cloud et configurez l'authentification sécurisée :

341 

342 <AccordionGroup>

343 <Accordion title="AWS Bedrock">

344 **Configurez AWS pour permettre à GitHub Actions de s'authentifier de manière sécurisée sans stocker les credentials.**

345 

346 > **Note de sécurité** : Utilisez des configurations spécifiques au repository et accordez uniquement les permissions minimales requises.

347 

348 **Configuration requise** :

349 

350 1. **Activez Amazon Bedrock** :

351 * Demandez l'accès aux modèles Claude dans Amazon Bedrock

352 * Pour les modèles multi-régions, demandez l'accès dans toutes les régions requises

353 

354 2. **Configurez le fournisseur d'identité GitHub OIDC** :

355 * URL du fournisseur : `https://token.actions.githubusercontent.com`

356 * Audience : `sts.amazonaws.com`

357 

358 3. **Créez un rôle IAM pour GitHub Actions** :

359 * Type d'entité de confiance : Web identity

360 * Fournisseur d'identité : `token.actions.githubusercontent.com`

361 * Permissions : politique `AmazonBedrockFullAccess`

362 * Configurez la politique de confiance pour votre repository spécifique

363 

364 **Valeurs requises** :

365 

366 Après la configuration, vous aurez besoin de :

367 

368 * **AWS\_ROLE\_TO\_ASSUME** : L'ARN du rôle IAM que vous avez créé

369 

370 <Tip>

371 OIDC est plus sécurisé que l'utilisation de clés d'accès AWS statiques car les credentials sont temporaires et automatiquement renouvelés.

372 </Tip>

373 

374 Consultez la [documentation AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html) pour les instructions détaillées de configuration OIDC.

375 </Accordion>

376 

377 <Accordion title="Google Vertex AI">

378 **Configurez Google Cloud pour permettre à GitHub Actions de s'authentifier de manière sécurisée sans stocker les credentials.**

379 

380 > **Note de sécurité** : Utilisez des configurations spécifiques au repository et accordez uniquement les permissions minimales requises.

381 

382 **Configuration requise** :

383 

384 1. **Activez les APIs** dans votre projet Google Cloud :

385 * IAM Credentials API

386 * Security Token Service (STS) API

387 * Vertex AI API

388 

389 2. **Créez les ressources Workload Identity Federation** :

390 * Créez un Workload Identity Pool

391 * Ajoutez un fournisseur GitHub OIDC avec :

392 * Émetteur : `https://token.actions.githubusercontent.com`

393 * Mappages d'attributs pour le repository et le propriétaire

394 * **Recommandation de sécurité** : Utilisez des conditions d'attribut spécifiques au repository

395 

396 3. **Créez un compte de service** :

397 * Accordez uniquement le rôle `Vertex AI User`

398 * **Recommandation de sécurité** : Créez un compte de service dédié par repository

399 

400 4. **Configurez les liaisons IAM** :

401 * Autorisez le Workload Identity Pool à emprunter l'identité du compte de service

402 * **Recommandation de sécurité** : Utilisez des ensembles de principaux spécifiques au repository

403 

404 **Valeurs requises** :

405 

406 Après la configuration, vous aurez besoin de :

407 

408 * **GCP\_WORKLOAD\_IDENTITY\_PROVIDER** : Le nom complet de la ressource du fournisseur

409 * **GCP\_SERVICE\_ACCOUNT** : L'adresse e-mail du compte de service

410 

411 <Tip>

412 Workload Identity Federation élimine le besoin de clés de compte de service téléchargeables, améliorant la sécurité.

413 </Tip>

414 

415 Pour les instructions de configuration détaillées, consultez la [documentation Google Cloud Workload Identity Federation](https://cloud.google.com/iam/docs/workload-identity-federation).

416 </Accordion>

417 </AccordionGroup>

418 </Step>

419 

420 <Step title="Ajouter les secrets requis">

421 Ajoutez les secrets suivants à votre repository (Settings → Secrets and variables → Actions) :

422 

423 #### Pour l'API Claude (Direct) :

424 

425 1. **Pour l'authentification API** :

426 * `ANTHROPIC_API_KEY` : Votre clé API Claude depuis [console.anthropic.com](https://console.anthropic.com)

427 

428 2. **Pour l'application GitHub (si vous utilisez votre propre application)** :

429 * `APP_ID` : L'ID de votre application GitHub

430 * `APP_PRIVATE_KEY` : Le contenu de la clé privée (.pem)

431 

432 #### Pour Google Cloud Vertex AI

433 

434 1. **Pour l'authentification GCP** :

435 * `GCP_WORKLOAD_IDENTITY_PROVIDER`

436 * `GCP_SERVICE_ACCOUNT`

437 

438 2. **Pour l'application GitHub (si vous utilisez votre propre application)** :

439 * `APP_ID` : L'ID de votre application GitHub

440 * `APP_PRIVATE_KEY` : Le contenu de la clé privée (.pem)

441 

442 #### Pour AWS Bedrock

443 

444 1. **Pour l'authentification AWS** :

445 * `AWS_ROLE_TO_ASSUME`

446 

447 2. **Pour l'application GitHub (si vous utilisez votre propre application)** :

448 * `APP_ID` : L'ID de votre application GitHub

449 * `APP_PRIVATE_KEY` : Le contenu de la clé privée (.pem)

450 </Step>

451 

452 <Step title="Créer des fichiers de flux de travail">

453 Créez des fichiers de flux de travail GitHub Actions qui s'intègrent à votre fournisseur cloud. Les exemples ci-dessous montrent des configurations complètes pour AWS Bedrock et Google Vertex AI :

454 

455 <AccordionGroup>

456 <Accordion title="Flux de travail AWS Bedrock">

457 **Prérequis :**

458 

459 * Accès AWS Bedrock activé avec permissions de modèle Claude

460 * GitHub configuré en tant que fournisseur d'identité OIDC dans AWS

461 * Rôle IAM avec permissions Bedrock qui fait confiance à GitHub Actions

462 

463 **Secrets GitHub requis :**

464 

465 | Nom du secret | Description |

466 | -------------------- | ------------------------------------------------------------------------ |

467 | `AWS_ROLE_TO_ASSUME` | ARN du rôle IAM pour l'accès à Bedrock |

468 | `APP_ID` | Votre ID d'application GitHub (à partir des paramètres de l'application) |

469 | `APP_PRIVATE_KEY` | La clé privée que vous avez générée pour votre application GitHub |

470 

471 ```yaml theme={null}

472 name: Claude PR Action

473 

474 permissions:

475 contents: write

476 pull-requests: write

477 issues: write

478 id-token: write

479 

480 on:

481 issue_comment:

482 types: [created]

483 pull_request_review_comment:

484 types: [created]

485 issues:

486 types: [opened, assigned]

487 

488 jobs:

489 claude-pr:

490 if: |

491 (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||

492 (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||

493 (github.event_name == 'issues' && contains(github.event.issue.body, '@claude'))

494 runs-on: ubuntu-latest

495 env:

496 AWS_REGION: us-west-2

497 steps:

498 - name: Checkout repository

499 uses: actions/checkout@v4

500 

501 - name: Generate GitHub App token

502 id: app-token

503 uses: actions/create-github-app-token@v2

504 with:

505 app-id: ${{ secrets.APP_ID }}

506 private-key: ${{ secrets.APP_PRIVATE_KEY }}

507 

508 - name: Configure AWS Credentials (OIDC)

509 uses: aws-actions/configure-aws-credentials@v4

510 with:

511 role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}

512 aws-region: us-west-2

513 

514 - uses: anthropics/claude-code-action@v1

515 with:

516 github_token: ${{ steps.app-token.outputs.token }}

517 use_bedrock: "true"

518 claude_args: '--model us.anthropic.claude-sonnet-4-6 --max-turns 10'

519 ```

520 

521 <Tip>

522 Le format d'ID de modèle pour Bedrock inclut un préfixe de région (par exemple, `us.anthropic.claude-sonnet-4-6`).

523 </Tip>

524 </Accordion>

525 

526 <Accordion title="Flux de travail Google Vertex AI">

527 **Prérequis :**

528 

529 * Vertex AI API activée dans votre projet GCP

530 * Workload Identity Federation configurée pour GitHub

531 * Compte de service avec permissions Vertex AI

532 

533 **Secrets GitHub requis :**

534 

535 | Nom du secret | Description |

536 | -------------------------------- | ------------------------------------------------------------------------ |

537 | `GCP_WORKLOAD_IDENTITY_PROVIDER` | Nom de ressource du fournisseur d'identité de charge de travail |

538 | `GCP_SERVICE_ACCOUNT` | E-mail du compte de service avec accès à Vertex AI |

539 | `APP_ID` | Votre ID d'application GitHub (à partir des paramètres de l'application) |

540 | `APP_PRIVATE_KEY` | La clé privée que vous avez générée pour votre application GitHub |

541 

542 ```yaml theme={null}

543 name: Claude PR Action

544 

545 permissions:

546 contents: write

547 pull-requests: write

548 issues: write

549 id-token: write

550 

551 on:

552 issue_comment:

553 types: [created]

554 pull_request_review_comment:

555 types: [created]

556 issues:

557 types: [opened, assigned]

558 

559 jobs:

560 claude-pr:

561 if: |

562 (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||

563 (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||

564 (github.event_name == 'issues' && contains(github.event.issue.body, '@claude'))

565 runs-on: ubuntu-latest

566 steps:

567 - name: Checkout repository

568 uses: actions/checkout@v4

569 

570 - name: Generate GitHub App token

571 id: app-token

572 uses: actions/create-github-app-token@v2

573 with:

574 app-id: ${{ secrets.APP_ID }}

575 private-key: ${{ secrets.APP_PRIVATE_KEY }}

576 

577 - name: Authenticate to Google Cloud

578 id: auth

579 uses: google-github-actions/auth@v2

580 with:

581 workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }}

582 service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }}

583 

584 - uses: anthropics/claude-code-action@v1

585 with:

586 github_token: ${{ steps.app-token.outputs.token }}

587 trigger_phrase: "@claude"

588 use_vertex: "true"

589 claude_args: '--model claude-sonnet-4-5@20250929 --max-turns 10'

590 env:

591 ANTHROPIC_VERTEX_PROJECT_ID: ${{ steps.auth.outputs.project_id }}

592 CLOUD_ML_REGION: us-east5

593 VERTEX_REGION_CLAUDE_4_5_SONNET: us-east5

594 ```

595 

596 <Tip>

597 L'ID du projet est automatiquement récupéré à partir de l'étape d'authentification Google Cloud, vous n'avez donc pas besoin de le coder en dur.

598 </Tip>

599 </Accordion>

600 </AccordionGroup>

601 </Step>

602</Steps>

603 

604## Dépannage

605 

606### Claude ne répond pas aux commandes @claude

607 

608Vérifiez que l'application GitHub est correctement installée, vérifiez que les flux de travail sont activés, assurez-vous que la clé API est définie dans les secrets du repository et confirmez que le commentaire contient `@claude` (pas `/claude`).

609 

610### CI ne s'exécute pas sur les commits de Claude

611 

612Assurez-vous que vous utilisez l'application GitHub ou une application personnalisée (pas l'utilisateur Actions), vérifiez que les déclencheurs de flux de travail incluent les événements nécessaires et vérifiez que les permissions de l'application incluent les déclencheurs CI.

613 

614### Erreurs d'authentification

615 

616Confirmez que la clé API est valide et dispose des permissions suffisantes. Pour Bedrock/Vertex, vérifiez la configuration des credentials et assurez-vous que les secrets sont nommés correctement dans les flux de travail.

617 

618## Configuration avancée

619 

620### Paramètres de l'action

621 

622Claude Code Action v1 utilise une configuration simplifiée :

623 

624| Paramètre | Description | Requis |

625| ------------------- | ---------------------------------------------------------------------- | ------- |

626| `prompt` | Instructions pour Claude (texte brut ou un nom de [skill](/fr/skills)) | Non\* |

627| `claude_args` | Arguments CLI passés à Claude Code | Non |

628| `anthropic_api_key` | Clé API Claude | Oui\*\* |

629| `github_token` | Token GitHub pour l'accès API | Non |

630| `trigger_phrase` | Phrase de déclenchement personnalisée (par défaut : « @claude ») | Non |

631| `use_bedrock` | Utiliser AWS Bedrock au lieu de l'API Claude | Non |

632| `use_vertex` | Utiliser Google Vertex AI au lieu de l'API Claude | Non |

633 

634\*Le prompt est optionnel - lorsqu'il est omis pour les commentaires d'issue/PR, Claude répond à la phrase de déclenchement\

635\*\*Requis pour l'API Claude directe, pas pour Bedrock/Vertex

636 

637#### Passer les arguments CLI

638 

639Le paramètre `claude_args` accepte n'importe quel argument Claude Code CLI :

640 

641```yaml theme={null}

642claude_args: "--max-turns 5 --model claude-sonnet-4-6 --mcp-config /path/to/config.json"

643```

644 

645Arguments courants :

646 

647* `--max-turns` : Nombre maximum de tours de conversation (par défaut : 10)

648* `--model` : Modèle à utiliser (par exemple, `claude-sonnet-4-6`)

649* `--mcp-config` : Chemin vers la configuration MCP

650* `--allowedTools` : Liste séparée par des virgules des outils autorisés. L'alias `--allowed-tools` fonctionne également.

651* `--debug` : Activer la sortie de débogage

652 

653### Méthodes d'intégration alternatives

654 

655Bien que la commande `/install-github-app` soit l'approche recommandée, vous pouvez également :

656 

657* **Application GitHub personnalisée** : Pour les organisations ayant besoin de noms d'utilisateur de marque ou de flux d'authentification personnalisés. Créez votre propre application GitHub avec les permissions requises (contents, issues, pull requests) et utilisez l'action actions/create-github-app-token pour générer des tokens dans vos flux de travail.

658* **GitHub Actions manuel** : Configuration directe du flux de travail pour une flexibilité maximale

659* **Configuration MCP** : Chargement dynamique des serveurs Model Context Protocol

660 

661Consultez la [documentation Claude Code Action](https://github.com/anthropics/claude-code-action/blob/main/docs) pour des guides détaillés sur l'authentification, la sécurité et la configuration avancée.

662 

663### Personnalisation du comportement de Claude

664 

665Vous pouvez configurer le comportement de Claude de deux façons :

666 

6671. **CLAUDE.md** : Définissez les normes de codage, les critères de révision et les règles spécifiques au projet dans un fichier `CLAUDE.md` à la racine de votre repository. Claude suivra ces directives lors de la création de PRs et de la réponse aux demandes. Consultez notre [documentation Memory](/fr/memory) pour plus de détails.

6682. **Prompts personnalisés** : Utilisez le paramètre `prompt` dans le fichier de flux de travail pour fournir des instructions spécifiques au flux de travail. Cela vous permet de personnaliser le comportement de Claude pour différents flux de travail ou tâches.

669 

670Claude suivra ces directives lors de la création de PRs et de la réponse aux demandes.

gitlab-ci-cd.md +466 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Claude Code GitLab CI/CD

6 

7> Découvrez comment intégrer Claude Code dans votre flux de travail de développement avec GitLab CI/CD

8 

9<Info>

10 Claude Code pour GitLab CI/CD est actuellement en bêta. Les fonctionnalités et les capacités peuvent évoluer au fur et à mesure que nous affinons l'expérience.

11 

12 Cette intégration est maintenue par GitLab. Pour obtenir de l'aide, consultez le [problème GitLab](https://gitlab.com/gitlab-org/gitlab/-/issues/573776) suivant.

13</Info>

14 

15<Note>

16 Cette intégration est construite sur la base de [Claude Code CLI et Agent SDK](/fr/agent-sdk/overview), permettant l'utilisation programmatique de Claude dans vos tâches CI/CD et vos flux de travail d'automatisation personnalisés.

17</Note>

18 

19## Pourquoi utiliser Claude Code avec GitLab ?

20 

21* **Création instantanée de MR** : Décrivez ce dont vous avez besoin, et Claude propose une MR complète avec les modifications et une explication

22* **Implémentation automatisée** : Transformez les problèmes en code fonctionnel avec une seule commande ou mention

23* **Conscient du projet** : Claude suit vos directives `CLAUDE.md` et les modèles de code existants

24* **Configuration simple** : Ajoutez une tâche à `.gitlab-ci.yml` et une variable CI/CD masquée

25* **Prêt pour l'entreprise** : Choisissez Claude API, Amazon Bedrock ou Google Vertex AI pour répondre aux besoins de résidence des données et d'approvisionnement

26* **Sécurisé par défaut** : S'exécute dans vos exécuteurs GitLab avec votre protection de branche et vos approbations

27 

28## Comment ça marche

29 

30Claude Code utilise GitLab CI/CD pour exécuter des tâches d'IA dans des tâches isolées et valider les résultats via des MR :

31 

321. **Orchestration basée sur les événements** : GitLab écoute les déclencheurs que vous choisissez (par exemple, un commentaire qui mentionne `@claude` dans un problème, une MR ou un fil de discussion). La tâche collecte le contexte du fil et du référentiel, construit des invites à partir de cette entrée et exécute Claude Code.

33 

342. **Abstraction du fournisseur** : Utilisez le fournisseur qui correspond à votre environnement :

35 * Claude API (SaaS)

36 * Amazon Bedrock (accès basé sur IAM, options multi-régions)

37 * Google Vertex AI (natif GCP, Workload Identity Federation)

38 

393. **Exécution en bac à sable** : Chaque interaction s'exécute dans un conteneur avec des règles strictes de réseau et de système de fichiers. Claude Code applique des autorisations limitées à l'espace de travail pour limiter les écritures. Chaque modification passe par une MR afin que les examinateurs voient la différence et que les approbations s'appliquent toujours.

40 

41Choisissez des points de terminaison régionaux pour réduire la latence et respecter les exigences de souveraineté des données tout en utilisant les accords cloud existants.

42 

43## Que peut faire Claude ?

44 

45Claude Code active des flux de travail CI/CD puissants qui transforment votre façon de travailler avec le code :

46 

47* Créer et mettre à jour des MR à partir de descriptions ou de commentaires de problèmes

48* Analyser les régressions de performance et proposer des optimisations

49* Implémenter des fonctionnalités directement dans une branche, puis ouvrir une MR

50* Corriger les bogues et les régressions identifiés par les tests ou les commentaires

51* Répondre aux commentaires de suivi pour itérer sur les modifications demandées

52 

53## Configuration

54 

55### Configuration rapide

56 

57Le moyen le plus rapide de commencer est d'ajouter une tâche minimale à votre `.gitlab-ci.yml` et de définir votre clé API comme variable masquée.

58 

591. **Ajouter une variable CI/CD masquée**

60 * Allez à **Paramètres** → **CI/CD** → **Variables**

61 * Ajoutez `ANTHROPIC_API_KEY` (masquée, protégée selon les besoins)

62 

632. **Ajouter une tâche Claude à `.gitlab-ci.yml`**

64 

65```yaml theme={null}

66stages:

67 - ai

68 

69claude:

70 stage: ai

71 image: node:24-alpine3.21

72 # Ajustez les règles pour adapter la façon dont vous souhaitez déclencher la tâche :

73 # - exécutions manuelles

74 # - événements de demande de fusion

75 # - déclencheurs web/API lorsqu'un commentaire contient « @claude »

76 rules:

77 - if: '$CI_PIPELINE_SOURCE == "web"'

78 - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'

79 variables:

80 GIT_STRATEGY: fetch

81 before_script:

82 - apk update

83 - apk add --no-cache git curl bash

84 - curl -fsSL https://claude.ai/install.sh | bash

85 script:

86 # Optionnel : démarrer un serveur GitLab MCP si votre configuration en fournit un

87 - /bin/gitlab-mcp-server || true

88 # Utilisez les variables AI_FLOW_* lors de l'invocation via des déclencheurs web/API avec des charges utiles de contexte

89 - echo "$AI_FLOW_INPUT for $AI_FLOW_CONTEXT on $AI_FLOW_EVENT"

90 - >

91 claude

92 -p "${AI_FLOW_INPUT:-'Review this MR and implement the requested changes'}"

93 --permission-mode acceptEdits

94 --allowedTools "Bash Read Edit Write mcp__gitlab"

95 --debug

96```

97 

98Après avoir ajouté la tâche et votre variable `ANTHROPIC_API_KEY`, testez en exécutant la tâche manuellement à partir de **CI/CD** → **Pipelines**, ou déclenchez-la à partir d'une MR pour laisser Claude proposer des mises à jour dans une branche et ouvrir une MR si nécessaire.

99 

100<Note>

101 Pour exécuter sur Amazon Bedrock ou Google Vertex AI au lieu de Claude API, consultez la section [Utilisation avec Amazon Bedrock et Google Vertex AI](#using-with-amazon-bedrock--google-vertex-ai) ci-dessous pour la configuration de l'authentification et de l'environnement.

102</Note>

103 

104### Configuration manuelle (recommandée pour la production)

105 

106Si vous préférez une configuration plus contrôlée ou si vous avez besoin de fournisseurs d'entreprise :

107 

1081. **Configurer l'accès au fournisseur** :

109 * **Claude API** : Créez et stockez `ANTHROPIC_API_KEY` comme variable CI/CD masquée

110 * **Amazon Bedrock** : **Configurer GitLab** → **AWS OIDC** et créer un rôle IAM pour Bedrock

111 * **Google Vertex AI** : **Configurer Workload Identity Federation pour GitLab** → **GCP**

112 

1132. **Ajouter les identifiants du projet pour les opérations de l'API GitLab** :

114 * Utilisez `CI_JOB_TOKEN` par défaut, ou créez un jeton d'accès au projet avec la portée `api`

115 * Stockez comme `GITLAB_ACCESS_TOKEN` (masqué) si vous utilisez un PAT

116 

1173. **Ajouter la tâche Claude à `.gitlab-ci.yml`** (voir les exemples ci-dessous)

118 

1194. **(Optionnel) Activer les déclencheurs basés sur les mentions** :

120 * Ajoutez un webhook de projet pour « Commentaires (notes) » à votre écouteur d'événements (si vous en utilisez un)

121 * Faites en sorte que l'écouteur appelle l'API de déclenchement du pipeline avec des variables comme `AI_FLOW_INPUT` et `AI_FLOW_CONTEXT` lorsqu'un commentaire contient `@claude`

122 

123## Exemples de cas d'utilisation

124 

125### Transformer les problèmes en MR

126 

127Dans un commentaire de problème :

128 

129```text theme={null}

130@claude implement this feature based on the issue description

131```

132 

133Claude analyse le problème et la base de code, écrit les modifications dans une branche et ouvre une MR pour examen.

134 

135### Obtenir de l'aide à l'implémentation

136 

137Dans une discussion MR :

138 

139```text theme={null}

140@claude suggest a concrete approach to cache the results of this API call

141```

142 

143Claude propose des modifications, ajoute du code avec la mise en cache appropriée et met à jour la MR.

144 

145### Corriger les bogues rapidement

146 

147Dans un commentaire de problème ou de MR :

148 

149```text theme={null}

150@claude fix the TypeError in the user dashboard component

151```

152 

153Claude localise le bogue, implémente un correctif et met à jour la branche ou ouvre une nouvelle MR.

154 

155## Utilisation avec Amazon Bedrock et Google Vertex AI

156 

157Pour les environnements d'entreprise, vous pouvez exécuter Claude Code entièrement sur votre infrastructure cloud avec la même expérience développeur.

158 

159<Tabs>

160 <Tab title="Amazon Bedrock">

161 ### Conditions préalables

162 

163 Avant de configurer Claude Code avec Amazon Bedrock, vous avez besoin de :

164 

165 1. Un compte AWS avec accès à Amazon Bedrock pour les modèles Claude souhaités

166 2. GitLab configuré comme fournisseur d'identité OIDC dans AWS IAM

167 3. Un rôle IAM avec les autorisations Bedrock et une politique de confiance limitée à votre projet/références GitLab

168 4. Variables CI/CD GitLab pour l'assomption de rôle :

169 * `AWS_ROLE_TO_ASSUME` (ARN du rôle)

170 * `AWS_REGION` (région Bedrock)

171 

172 ### Instructions de configuration

173 

174 Configurez AWS pour permettre aux tâches CI GitLab d'assumer un rôle IAM via OIDC (pas de clés statiques).

175 

176 **Configuration requise :**

177 

178 1. Activez Amazon Bedrock et demandez l'accès à vos modèles Claude cibles

179 2. Créez un fournisseur OIDC IAM pour GitLab s'il n'existe pas déjà

180 3. Créez un rôle IAM approuvé par le fournisseur OIDC GitLab, limité à votre projet et aux références protégées

181 4. Attachez les autorisations de moindre privilège pour les API d'invocation Bedrock

182 

183 **Valeurs requises à stocker dans les variables CI/CD :**

184 

185 * `AWS_ROLE_TO_ASSUME`

186 * `AWS_REGION`

187 

188 Ajoutez les variables dans Paramètres → CI/CD → Variables :

189 

190 ```yaml theme={null}

191 # Pour Amazon Bedrock :

192 - AWS_ROLE_TO_ASSUME

193 - AWS_REGION

194 ```

195 

196 Utilisez l'exemple de tâche Amazon Bedrock ci-dessus pour échanger le jeton de tâche GitLab contre des identifiants AWS temporaires au moment de l'exécution.

197 </Tab>

198 

199 <Tab title="Google Vertex AI">

200 ### Conditions préalables

201 

202 Avant de configurer Claude Code avec Google Vertex AI, vous avez besoin de :

203 

204 1. Un projet Google Cloud avec :

205 * API Vertex AI activée

206 * Workload Identity Federation configurée pour faire confiance à GitLab OIDC

207 2. Un compte de service dédié avec uniquement les rôles Vertex AI requis

208 3. Variables CI/CD GitLab pour WIF :

209 * `GCP_WORKLOAD_IDENTITY_PROVIDER` (nom complet de la ressource)

210 * `GCP_SERVICE_ACCOUNT` (e-mail du compte de service)

211 

212 ### Instructions de configuration

213 

214 Configurez Google Cloud pour permettre aux tâches CI GitLab d'emprunter l'identité d'un compte de service via Workload Identity Federation.

215 

216 **Configuration requise :**

217 

218 1. Activez l'API IAM Credentials, l'API STS et l'API Vertex AI

219 2. Créez un pool Workload Identity et un fournisseur pour GitLab OIDC

220 3. Créez un compte de service dédié avec les rôles Vertex AI

221 4. Accordez au principal WIF la permission d'emprunter l'identité du compte de service

222 

223 **Valeurs requises à stocker dans les variables CI/CD :**

224 

225 * `GCP_WORKLOAD_IDENTITY_PROVIDER`

226 * `GCP_SERVICE_ACCOUNT`

227 

228 Ajoutez les variables dans Paramètres → CI/CD → Variables :

229 

230 ```yaml theme={null}

231 # Pour Google Vertex AI :

232 - GCP_WORKLOAD_IDENTITY_PROVIDER

233 - GCP_SERVICE_ACCOUNT

234 - CLOUD_ML_REGION (par exemple, us-east5)

235 ```

236 

237 Utilisez l'exemple de tâche Google Vertex AI ci-dessus pour vous authentifier sans stocker de clés.

238 </Tab>

239</Tabs>

240 

241## Exemples de configuration

242 

243Voici des extraits prêts à l'emploi que vous pouvez adapter à votre pipeline.

244 

245### .gitlab-ci.yml basique (Claude API)

246 

247```yaml theme={null}

248stages:

249 - ai

250 

251claude:

252 stage: ai

253 image: node:24-alpine3.21

254 rules:

255 - if: '$CI_PIPELINE_SOURCE == "web"'

256 - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'

257 variables:

258 GIT_STRATEGY: fetch

259 before_script:

260 - apk update

261 - apk add --no-cache git curl bash

262 - curl -fsSL https://claude.ai/install.sh | bash

263 script:

264 - /bin/gitlab-mcp-server || true

265 - >

266 claude

267 -p "${AI_FLOW_INPUT:-'Summarize recent changes and suggest improvements'}"

268 --permission-mode acceptEdits

269 --allowedTools "Bash Read Edit Write mcp__gitlab"

270 --debug

271 # Claude Code utilisera ANTHROPIC_API_KEY à partir des variables CI/CD

272```

273 

274### Exemple de tâche Amazon Bedrock (OIDC)

275 

276**Conditions préalables :**

277 

278* Amazon Bedrock activé avec accès à votre ou vos modèles Claude choisis

279* GitLab OIDC configuré dans AWS avec un rôle qui fait confiance à votre projet et vos références GitLab

280* Rôle IAM avec autorisations Bedrock (moindre privilège recommandé)

281 

282**Variables CI/CD requises :**

283 

284* `AWS_ROLE_TO_ASSUME` : ARN du rôle IAM pour l'accès à Bedrock

285* `AWS_REGION` : Région Bedrock (par exemple, `us-west-2`)

286 

287```yaml theme={null}

288claude-bedrock:

289 stage: ai

290 image: node:24-alpine3.21

291 rules:

292 - if: '$CI_PIPELINE_SOURCE == "web"'

293 before_script:

294 - apk add --no-cache bash curl jq git python3 py3-pip

295 - pip install --no-cache-dir awscli

296 - curl -fsSL https://claude.ai/install.sh | bash

297 # Échanger le jeton OIDC GitLab contre les identifiants AWS

298 - export AWS_WEB_IDENTITY_TOKEN_FILE="${CI_JOB_JWT_FILE:-/tmp/oidc_token}"

299 - if [ -n "${CI_JOB_JWT_V2}" ]; then printf "%s" "$CI_JOB_JWT_V2" > "$AWS_WEB_IDENTITY_TOKEN_FILE"; fi

300 - >

301 aws sts assume-role-with-web-identity

302 --role-arn "$AWS_ROLE_TO_ASSUME"

303 --role-session-name "gitlab-claude-$(date +%s)"

304 --web-identity-token "file://$AWS_WEB_IDENTITY_TOKEN_FILE"

305 --duration-seconds 3600 > /tmp/aws_creds.json

306 - export AWS_ACCESS_KEY_ID="$(jq -r .Credentials.AccessKeyId /tmp/aws_creds.json)"

307 - export AWS_SECRET_ACCESS_KEY="$(jq -r .Credentials.SecretAccessKey /tmp/aws_creds.json)"

308 - export AWS_SESSION_TOKEN="$(jq -r .Credentials.SessionToken /tmp/aws_creds.json)"

309 script:

310 - /bin/gitlab-mcp-server || true

311 - >

312 claude

313 -p "${AI_FLOW_INPUT:-'Implement the requested changes and open an MR'}"

314 --permission-mode acceptEdits

315 --allowedTools "Bash Read Edit Write mcp__gitlab"

316 --debug

317 variables:

318 AWS_REGION: "us-west-2"

319```

320 

321<Note>

322 Les identifiants de modèle pour Bedrock incluent des préfixes spécifiques à la région (par exemple, `us.anthropic.claude-sonnet-4-6`). Transmettez le modèle souhaité via votre configuration de tâche ou votre invite si votre flux de travail le supporte.

323</Note>

324 

325### Exemple de tâche Google Vertex AI (Workload Identity Federation)

326 

327**Conditions préalables :**

328 

329* API Vertex AI activée dans votre projet GCP

330* Workload Identity Federation configurée pour faire confiance à GitLab OIDC

331* Un compte de service avec les autorisations Vertex AI

332 

333**Variables CI/CD requises :**

334 

335* `GCP_WORKLOAD_IDENTITY_PROVIDER` : Nom complet de la ressource du fournisseur

336* `GCP_SERVICE_ACCOUNT` : E-mail du compte de service

337* `CLOUD_ML_REGION` : Région Vertex (par exemple, `us-east5`)

338 

339```yaml theme={null}

340claude-vertex:

341 stage: ai

342 image: gcr.io/google.com/cloudsdktool/google-cloud-cli:slim

343 rules:

344 - if: '$CI_PIPELINE_SOURCE == "web"'

345 before_script:

346 - apt-get update && apt-get install -y git && apt-get clean

347 - curl -fsSL https://claude.ai/install.sh | bash

348 # S'authentifier auprès de Google Cloud via WIF (pas de clés téléchargées)

349 - >

350 gcloud auth login --cred-file=<(cat <<EOF

351 {

352 "type": "external_account",

353 "audience": "${GCP_WORKLOAD_IDENTITY_PROVIDER}",

354 "subject_token_type": "urn:ietf:params:oauth:token-type:jwt",

355 "service_account_impersonation_url": "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/${GCP_SERVICE_ACCOUNT}:generateAccessToken",

356 "token_url": "https://sts.googleapis.com/v1/token"

357 }

358 EOF

359 )

360 - gcloud config set project "$(gcloud projects list --format='value(projectId)' --filter="name:${CI_PROJECT_NAMESPACE}" | head -n1)" || true

361 script:

362 - /bin/gitlab-mcp-server || true

363 - >

364 CLOUD_ML_REGION="${CLOUD_ML_REGION:-us-east5}"

365 claude

366 -p "${AI_FLOW_INPUT:-'Review and update code as requested'}"

367 --permission-mode acceptEdits

368 --allowedTools "Bash Read Edit Write mcp__gitlab"

369 --debug

370 variables:

371 CLOUD_ML_REGION: "us-east5"

372```

373 

374<Note>

375 Avec Workload Identity Federation, vous n'avez pas besoin de stocker les clés du compte de service. Utilisez des conditions de confiance spécifiques au référentiel et des comptes de service avec le moindre privilège.

376</Note>

377 

378## Bonnes pratiques

379 

380### Configuration CLAUDE.md

381 

382Créez un fichier `CLAUDE.md` à la racine du référentiel pour définir les normes de codage, les critères d'examen et les règles spécifiques au projet. Claude lit ce fichier lors des exécutions et suit vos conventions lors de la proposition de modifications.

383 

384### Considérations de sécurité

385 

386**Ne validez jamais les clés API ou les identifiants cloud dans votre référentiel**. Utilisez toujours les variables CI/CD GitLab :

387 

388* Ajoutez `ANTHROPIC_API_KEY` comme variable masquée (et protégez-la si nécessaire)

389* Utilisez OIDC spécifique au fournisseur si possible (pas de clés longue durée)

390* Limitez les autorisations des tâches et la sortie réseau

391* Examinez les MR de Claude comme tout autre contributeur

392 

393### Optimisation des performances

394 

395* Gardez `CLAUDE.md` concentré et concis

396* Fournissez des descriptions claires de problèmes/MR pour réduire les itérations

397* Configurez des délais d'expiration de tâche raisonnables pour éviter les exécutions incontrôlées

398* Mettez en cache les installations npm et de paquets dans les exécuteurs si possible

399 

400### Coûts CI

401 

402Lorsque vous utilisez Claude Code avec GitLab CI/CD, soyez conscient des coûts associés :

403 

404* **Temps d'exécution GitLab Runner** :

405 * Claude s'exécute sur vos exécuteurs GitLab et consomme des minutes de calcul

406 * Consultez la facturation des exécuteurs de votre plan GitLab pour plus de détails

407 

408* **Coûts API** :

409 * Chaque interaction Claude consomme des jetons en fonction de la taille de l'invite et de la réponse

410 * L'utilisation des jetons varie selon la complexité de la tâche et la taille de la base de code

411 * Consultez [Tarification Anthropic](https://platform.claude.com/docs/fr/about-claude/pricing) pour plus de détails

412 

413* **Conseils d'optimisation des coûts** :

414 * Utilisez des commandes `@claude` spécifiques pour réduire les tours inutiles

415 * Définissez les valeurs `max_turns` et le délai d'expiration de la tâche appropriés

416 * Limitez la concurrence pour contrôler les exécutions parallèles

417 

418## Sécurité et gouvernance

419 

420* Chaque tâche s'exécute dans un conteneur isolé avec accès réseau restreint

421* Les modifications de Claude passent par des MR afin que les examinateurs voient chaque différence

422* Les règles de protection de branche et d'approbation s'appliquent au code généré par l'IA

423* Claude Code utilise des autorisations limitées à l'espace de travail pour limiter les écritures

424* Les coûts restent sous votre contrôle car vous apportez vos propres identifiants de fournisseur

425 

426## Dépannage

427 

428### Claude ne répond pas aux commandes @claude

429 

430* Vérifiez que votre pipeline est déclenché (manuellement, événement MR ou via un écouteur d'événements/webhook de note)

431* Assurez-vous que les variables CI/CD (`ANTHROPIC_API_KEY` ou les paramètres du fournisseur cloud) sont présentes et non masquées

432* Vérifiez que le commentaire contient `@claude` (pas `/claude`) et que votre déclencheur de mention est configuré

433 

434### La tâche ne peut pas écrire de commentaires ou ouvrir des MR

435 

436* Assurez-vous que `CI_JOB_TOKEN` dispose des autorisations suffisantes pour le projet, ou utilisez un jeton d'accès au projet avec la portée `api`

437* Vérifiez que l'outil `mcp__gitlab` est activé dans `--allowedTools`

438* Confirmez que la tâche s'exécute dans le contexte de la MR ou dispose de suffisamment de contexte via les variables `AI_FLOW_*`

439 

440### Erreurs d'authentification

441 

442* **Pour Claude API** : Confirmez que `ANTHROPIC_API_KEY` est valide et non expiré

443* **Pour Bedrock/Vertex** : Vérifiez la configuration OIDC/WIF, l'emprunt d'identité de rôle et les noms secrets ; confirmez la disponibilité de la région et du modèle

444 

445## Configuration avancée

446 

447### Paramètres et variables courants

448 

449Claude Code supporte ces entrées couramment utilisées :

450 

451* `prompt` / `prompt_file` : Fournissez les instructions en ligne (`-p`) ou via un fichier

452* `max_turns` : Limitez le nombre d'itérations aller-retour

453* `timeout_minutes` : Limitez le temps d'exécution total

454* `ANTHROPIC_API_KEY` : Requis pour Claude API (non utilisé pour Bedrock/Vertex)

455* Environnement spécifique au fournisseur : `AWS_REGION`, variables de projet/région pour Vertex

456 

457<Note>

458 Les drapeaux et paramètres exacts peuvent varier selon la version de `@anthropic-ai/claude-code`. Exécutez `claude --help` dans votre tâche pour voir les options prises en charge.

459</Note>

460 

461### Personnalisation du comportement de Claude

462 

463Vous pouvez guider Claude de deux façons principales :

464 

4651. **CLAUDE.md** : Définissez les normes de codage, les exigences de sécurité et les conventions du projet. Claude lit ceci lors des exécutions et suit vos règles.

4662. **Invites personnalisées** : Transmettez les instructions spécifiques à la tâche via `prompt`/`prompt_file` dans la tâche. Utilisez différentes invites pour différentes tâches (par exemple, examen, implémentation, refactorisation).

glossary.md +307 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Glossaire

6 

7> Définitions de la terminologie Claude Code. Découvrez ce que signifient agentic loop, compaction, CLAUDE.md, hooks, subagents, MCP et autres concepts fondamentaux.

8 

9Ce glossaire définit la terminologie de Claude Code. Chaque entrée renvoie à la page où le concept est couvert en détail. Pour les concepts au niveau du modèle comme les tokens, la température et RAG, consultez le [glossaire de la plateforme](https://platform.claude.com/docs/fr/about-claude/glossary).

10 

11## A

12 

13### Agent teams

14 

15Plusieurs sessions Claude Code indépendantes coordonnées par un chef d'équipe, avec une liste de tâches partagée et une messagerie pair à pair. Contrairement aux [subagents](#subagent), qui s'exécutent au sein d'une seule session et ne rendent compte qu'au parent, les coéquipiers ont chacun leur propre fenêtre de contexte et vous pouvez interagir directement avec n'importe lequel d'entre eux. Les agent teams sont expérimentaux et doivent être activés en définissant `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1`.

16 

17En savoir plus : [Run agent teams](/fr/agent-teams)

18 

19### Agentic coding

20 

21Un flux de travail où l'IA peut lire des fichiers, exécuter des commandes et apporter des modifications de manière autonome pendant que vous regardez, redirigez ou vous éloignez, par opposition aux assistants basés sur le chat qui répondent uniquement avec du texte que vous devez appliquer vous-même. Claude Code est agentic car il dispose de [tools](#tool) qui lui permettent d'agir, pas seulement de conseiller.

22 

23En savoir plus : [How Claude Code works](/fr/how-claude-code-works)

24 

25### Agentic harness

26 

27Les outils, la gestion du contexte et l'environnement d'exécution qui transforment un modèle de langage en un agent de codage capable. Claude Code est le harness ; Claude est le modèle à l'intérieur. Le harness fournit l'accès aux fichiers, l'exécution du shell, la gestion des permissions, le chargement de la mémoire et la boucle qui enchaîne les actions ensemble.

28 

29En savoir plus : [How Claude Code works](/fr/how-claude-code-works)

30 

31### Agentic loop

32 

33Le cycle que Claude parcourt pour chaque tâche : rassembler le contexte, agir, vérifier les résultats et répéter jusqu'à ce que ce soit fait. Chaque utilisation d'outil retourne des informations qui informent l'étape suivante. Vous pouvez interrompre la boucle à tout moment pour rediriger. La plupart des points d'extension, y compris les [hooks](#hook), les [skills](#skill) et [MCP](#mcp-model-context-protocol), se connectent à des phases spécifiques de cette boucle.

34 

35En savoir plus : [How Claude Code works](/fr/how-claude-code-works#the-agentic-loop)

36 

37### Auto memory

38 

39Des notes que Claude écrit pour lui-même en fonction de vos corrections et préférences, stockées par référentiel git sous `~/.claude/projects/`. Tous les worktrees du même référentiel partagent un répertoire de mémoire automatique. Les 200 premières lignes ou 25 KB de l'index `MEMORY.md` se chargent au début de chaque session. Auto memory est l'équivalent écrit par Claude de [CLAUDE.md](#claude-md), que vous écrivez.

40 

41En savoir plus : [Auto memory](/fr/memory#auto-memory)

42 

43### Auto mode

44 

45Un [permission mode](#permission-mode) où un modèle de classificateur séparé examine chaque action en arrière-plan au lieu de vous afficher des invites d'approbation. Le classificateur bloque l'escalade de portée, l'infrastructure non fiable et [prompt injection](#prompt-injection). Il ne voit jamais les résultats des outils, donc les instructions injectées ne peuvent pas influencer ses décisions. Auto mode est un aperçu de recherche disponible sur les plans Max, Team, Enterprise et API.

46 

47En savoir plus : [Eliminate prompts with auto mode](/fr/permission-modes#eliminate-prompts-with-auto-mode)

48 

49## B

50 

51### Bare mode

52 

53Un drapeau de démarrage, `--bare`, qui ignore la découverte automatique des hooks, skills, plugins, serveurs MCP, auto memory et CLAUDE.md. Seuls les drapeaux que vous transmettez explicitement prennent effet. Recommandé pour CI et les appels scriptés où vous avez besoin d'un comportement identique sur les machines indépendamment de la configuration locale.

54 

55En savoir plus : [Start faster with bare mode](/fr/headless#start-faster-with-bare-mode)

56 

57### Bundled skills

58 

59Des playbooks basés sur des invites inclus avec Claude Code, tels que `/batch`, `/simplify`, `/debug` et `/loop`. Contrairement aux commandes intégrées, qui exécutent une logique fixe, les bundled skills donnent à Claude une invite détaillée et lui permettent d'orchestrer le travail, afin qu'ils puissent générer des agents, lire des fichiers et s'adapter à votre base de code.

60 

61En savoir plus : [Bundled skills](/fr/skills#bundled-skills)

62 

63## C

64 

65### Channel

66 

67Un [serveur MCP](#mcp-model-context-protocol) qui pousse des événements dans votre session en cours afin que Claude puisse réagir aux choses qui se produisent pendant que vous êtes loin du terminal. Les channels peuvent être bidirectionnels : Claude lit un événement entrant et répond via le même channel. Telegram, Discord et iMessage sont inclus dans l'aperçu de recherche.

68 

69En savoir plus : [Channels](/fr/channels)

70 

71### Checkpoint

72 

73Un instantané automatique de votre code capturé avant chaque modification que Claude apporte. Appuyez sur `Esc` deux fois ou exécutez `/rewind` pour restaurer le code, la conversation ou les deux à un point antérieur. Les checkpoints sont locaux à la session, séparés de git, et ne suivent pas les modifications apportées via l'outil Bash.

74 

75En savoir plus : [Checkpointing](/fr/checkpointing)

76 

77### `.claude` directory

78 

79Le répertoire où Claude Code lit la configuration au niveau du projet : paramètres, hooks, skills, subagents, règles et auto memory. Un projet a `.claude/` à sa racine ; vos paramètres par défaut au niveau utilisateur se trouvent à `~/.claude/`.

80 

81En savoir plus : [The `.claude` directory](/fr/claude-directory)

82 

83### CLAUDE.md

84 

85Un fichier markdown d'instructions persistantes que vous écrivez pour Claude, chargé au début de chaque session en tant que message utilisateur après l'invite système. Mettez les conventions de projet, les notes d'architecture et les règles « toujours faire X » ici. CLAUDE.md survit à [compaction](#compaction) et est relu à nouveau à partir du disque après.

86 

87Vous pouvez placer CLAUDE.md au niveau du projet dans `./CLAUDE.md` ou `./.claude/CLAUDE.md`, au niveau utilisateur dans `~/.claude/CLAUDE.md`, ou comme [managed policy](#managed-settings) pour votre organisation. Les emplacements plus spécifiques ont la priorité.

88 

89En savoir plus : [CLAUDE.md files](/fr/memory#claude-md-files)

90 

91### Command

92 

93Une instruction réutilisable que vous invoquez en tapant `/name` dans l'invite. Les commandes intégrées telles que `/clear`, `/model` et `/compact` contrôlent la session. Vous pouvez définir vos propres commandes en tant que fichiers dans `.claude/commands/`, ou les installer à partir d'un [plugin](#plugin). Les [Skills](#skill) sont la méthode recommandée pour empaqueter les commandes multi-étapes.

94 

95En savoir plus : [Commands](/fr/commands) · [Skills](/fr/skills)

96 

97### Compaction

98 

99Résumé automatique de votre conversation lorsque la [context window](#context-window) approche de sa limite. Les résultats des outils plus anciens sont d'abord effacés, puis la conversation est résumée. Le CLAUDE.md à la racine du projet et la auto memory survivent à la compaction et se rechargent à partir du disque ; les instructions données uniquement dans la conversation peuvent être perdues. Exécutez `/compact` pour déclencher manuellement, éventuellement avec un focus comme `/compact focus on the API changes`.

100 

101En savoir plus : [What survives compaction](/fr/context-window#what-survives-compaction) · [When context fills up](/fr/how-claude-code-works#when-context-fills-up)

102 

103### Context window

104 

105La mémoire de travail d'une session, contenant l'historique des conversations, le contenu des fichiers, les résultats des commandes, CLAUDE.md, auto memory, les skills chargés et les instructions système. Au fur et à mesure que vous travaillez, le contexte se remplit jusqu'à ce que [compaction](#compaction) le résume. Exécutez `/context` pour voir ce qui utilise l'espace. Pour le concept de modèle sous-jacent, consultez le [glossaire de la plateforme](https://platform.claude.com/docs/fr/about-claude/glossary#context-window).

106 

107En savoir plus : [Explore the context window](/fr/context-window)

108 

109## D

110 

111### Dispatch

112 

113Un routeur de tâches initié par téléphone qui génère une session Claude Code dans l'application Desktop lorsque vous envoyez une tâche de codage depuis l'application mobile Claude. Votre invite s'achemine automatiquement vers le bon outil. Disponible sur les plans Pro et Max.

114 

115En savoir plus : [Sessions from Dispatch](/fr/desktop#sessions-from-dispatch)

116 

117## E

118 

119### Effort level

120 

121Un paramètre qui contrôle la quantité du budget de réflexion adaptative que Claude utilise à chaque tour. Un effort plus élevé signifie plus de tokens de réflexion et un raisonnement plus profond ; un effort plus faible est plus rapide et moins cher. L'effort est pris en charge sur Opus 4.7, Opus 4.6 et Sonnet 4.6.

122 

123En savoir plus : [Adjust effort level](/fr/model-config#adjust-effort-level)

124 

125### Extended thinking

126 

127Un raisonnement étape par étape visible que le modèle effectue avant de répondre. Vous pouvez plafonner les tokens de réflexion avec `MAX_THINKING_TOKENS` ou ajuster le [effort level](#effort-level). La réflexion apparaît en texte gris italique dans le terminal.

128 

129En savoir plus : [Use extended thinking](/fr/common-workflows#use-extended-thinking-thinking-mode)

130 

131## H

132 

133### Hook

134 

135Un gestionnaire défini par l'utilisateur qui s'exécute automatiquement à un point spécifique du cycle de vie de Claude Code, par exemple avant l'exécution d'un outil, après une modification de fichier ou au démarrage de la session. Les gestionnaires peuvent être une commande shell, un point de terminaison HTTP, un outil MCP, une invite LLM ou un subagent. Les hooks sont déterministes : ils se déclenchent à des points de cycle de vie fixes plutôt qu'à la discrétion du modèle.

136 

137Une configuration de hook a trois niveaux :

138 

139* **Hook event** : le point du cycle de vie

140* **Matcher** : filtre les événements qui le déclenchent

141* **Hook handler** : ce qui s'exécute

142 

143En savoir plus : [Get started with hooks](/fr/hooks-guide) · [Hooks reference](/fr/hooks)

144 

145## M

146 

147### Managed settings

148 

149Un fichier de paramètres appliqué à l'échelle de l'organisation par l'informatique ou DevOps, placé à un chemin au niveau du système d'exploitation en dehors de `~/.claude`. Les utilisateurs ne peuvent pas remplacer ou exclure les paramètres gérés. Utilisez ceci pour les politiques de sécurité, les exigences de conformité ou les outils standardisés sur une flotte.

150 

151En savoir plus : [Server-managed settings](/fr/server-managed-settings)

152 

153### MCP (Model Context Protocol)

154 

155Une norme ouverte pour connecter les outils d'IA aux sources de données et services externes. Les serveurs MCP donnent à Claude de nouveaux outils pour Slack, Jira, les bases de données, les navigateurs et des centaines d'autres intégrations. Vous connectez les serveurs via `/mcp` ou en les ajoutant à `.mcp.json`. Pour le protocole lui-même, consultez le [glossaire de la plateforme](https://platform.claude.com/docs/fr/about-claude/glossary#mcp-model-context-protocol).

156 

157En savoir plus : [Model Context Protocol](/fr/mcp)

158 

159### MCP Tool Search

160 

161Un mécanisme d'économie de contexte qui reporte les schémas d'outils MCP jusqu'à ce qu'ils soient nécessaires. Seuls les noms d'outils se chargent au démarrage ; Claude récupère le schéma complet à la demande lorsqu'il décide d'utiliser un outil spécifique. Cela empêche les serveurs MCP inactifs de consommer beaucoup de contexte.

162 

163En savoir plus : [Scale with MCP Tool Search](/fr/mcp#scale-with-mcp-tool-search)

164 

165## N

166 

167### Non-interactive mode

168 

169Un mode qui exécute une seule invite et se ferme sans session conversationnelle, invoqué avec `-p` ou `--print`. Utilisé pour CI, les scripts et le piping. Le [Agent SDK](/fr/agent-sdk/overview) est l'équivalent Python et TypeScript. Anciennement appelé headless mode.

170 

171En savoir plus : [Run Claude Code programmatically](/fr/headless)

172 

173## O

174 

175### Output style

176 

177Une configuration qui modifie l'invite système de Claude pour modifier le comportement, le ton ou le format de la réponse. Les output styles désactivent les parties spécifiques à l'ingénierie logicielle de l'invite système par défaut, contrairement à [CLAUDE.md](#claude-md) qui est livré en tant que message utilisateur suivant l'invite système. Les styles intégrés incluent Default, Explanatory et Learning.

178 

179En savoir plus : [Output styles](/fr/output-styles)

180 

181## P

182 

183### Permission mode

184 

185Le comportement d'approbation de base pour la session. Basculez avec `Shift+Tab` dans la CLI ou utilisez le sélecteur de mode dans VS Code, Desktop et claude.ai. Les modes disponibles sont `default`, `acceptEdits`, `plan`, `auto`, `dontAsk` et `bypassPermissions`.

186 

187En savoir plus : [Choose a permission mode](/fr/permission-modes)

188 

189### Permission rule

190 

191Une entrée de paramètres qui autorise, demande ou refuse une invocation d'outil en fonction du nom de l'outil et du modèle d'argument. Les règles sont évaluées deny→ask→allow, le premier match gagne. Les permission rules sont des contrôles granulaires superposés au-dessus du [permission mode](#permission-mode) plus large.

192 

193En savoir plus : [Configure permissions](/fr/permissions)

194 

195### Plan mode

196 

197Un [permission mode](#permission-mode) où Claude recherche et propose des modifications sans modifier vos fichiers source. Il peut lire, rechercher et exécuter des commandes d'exploration, puis présente un plan pour approbation avant de toucher à quoi que ce soit. Entrez en plan mode avec `/plan` ou en appuyant sur `Shift+Tab`.

198 

199En savoir plus : [Analyze before you edit with plan mode](/fr/permission-modes#analyze-before-you-edit-with-plan-mode)

200 

201### Plugin

202 

203Un ensemble de skills, hooks, subagents et serveurs MCP emballés en tant qu'unité installable unique. Les plugin skills sont espacés de noms comme `plugin-name:skill-name` afin que plusieurs plugins coexistent. Distribuez les plugins entre les équipes via un [marketplace](/fr/plugin-marketplaces).

204 

205En savoir plus : [Plugins](/fr/plugins)

206 

207### Project trust

208 

209Un dialogue unique acceptant un répertoire avant que Claude Code ne charge sa configuration. La confiance contrôle l'installation automatique des plugins du marketplace et l'exécution des hooks définis par le projet. Faire confiance à un répertoire signifie que ses fichiers `.claude/settings.json`, `.mcp.json` et autres fichiers de configuration prennent effet.

210 

211En savoir plus : [The `.claude` directory](/fr/claude-directory)

212 

213### Prompt injection

214 

215Des instructions hostiles intégrées dans un fichier, une page web ou un résultat d'outil qui tentent de rediriger Claude vers des actions que vous n'avez jamais demandées. Les défenses de Claude Code incluent le système de permissions, les listes de blocage de commandes et la vérification de confiance. [Auto mode](#auto-mode) ajoute une sonde côté serveur qui analyse les résultats des outils pour détecter le contenu suspect et un classificateur qui ne voit jamais les résultats des outils, donc le texte injecté ne peut pas influencer ses décisions d'approbation.

216 

217En savoir plus : [Protect against prompt injection](/fr/security#protect-against-prompt-injection)

218 

219## R

220 

221### Remote Control

222 

223Un moyen de continuer une session Claude Code locale depuis votre téléphone ou navigateur via claude.ai. Votre code reste sur votre machine ; seule l'interface utilisateur est distante. Différent de Claude Code sur le web, qui s'exécute dans un sandbox cloud.

224 

225En savoir plus : [Remote Control](/fr/remote-control)

226 

227### Rules

228 

229Des fichiers d'instructions modulaires dans `.claude/rules/` qui se chargent aux côtés de CLAUDE.md. Une règle peut être délimitée par chemin avec le frontmatter YAML `paths:` afin qu'elle ne se charge que lorsque Claude lit un fichier correspondant, gardant le contexte maigre jusqu'à ce qu'il soit pertinent.

230 

231En savoir plus : [Organize rules with `.claude/rules/`](/fr/memory#organize-rules-with-claude/rules/)

232 

233## S

234 

235### Sandboxing

236 

237Isolation du système de fichiers et du réseau au niveau du système d'exploitation pour l'outil Bash. Les commandes s'exécutent à l'intérieur d'une limite que vous définissez à l'avance, afin que Claude puisse travailler librement sans invites d'approbation par commande. Le sandboxing est une couche séparée des [permission rules](#permission-rule).

238 

239En savoir plus : [Sandboxing](/fr/sandboxing)

240 

241### Session

242 

243Une conversation liée à votre répertoire actuel, avec sa propre [context window](#context-window) indépendante. Les sessions peuvent être reprises avec `claude -c`, bifurquées avec `--fork-session` pour préserver l'historique sous un nouvel ID de session, ou exécutées en parallèle sur les terminaux. L'exécution de `/clear` démarre une nouvelle session ; la session précédente reste stockée et est disponible via `/resume`. La transcription de chaque session est stockée sous `~/.claude/projects/`.

244 

245En savoir plus : [Work with sessions](/fr/how-claude-code-works#work-with-sessions)

246 

247### Settings layers

248 

249La hiérarchie à partir de laquelle Claude Code lit la configuration, par ordre de priorité du plus élevé au plus bas : [managed policy](#managed-settings), arguments de ligne de commande, paramètres locaux à `.claude/settings.local.json`, paramètres de projet à `.claude/settings.json`, puis paramètres utilisateur à `~/.claude/settings.json`. Les tableaux fusionnent entre les couches ; les scalaires à une couche supérieure remplacent les couches inférieures.

250 

251En savoir plus : [Settings files](/fr/settings#settings-files)

252 

253### Skill

254 

255Un fichier `SKILL.md` contenant des instructions, des connaissances ou un flux de travail que Claude ajoute à sa boîte à outils. Claude charge une skill automatiquement lorsqu'elle est pertinente, ou vous l'invoquez directement avec `/skill-name`. Les skills suivent la norme Agent Skills ouverte ; Claude Code l'étend avec le contrôle d'invocation et l'exécution de subagent.

256 

257Les skills sont le successeur recommandé aux commandes personnalisées. Un fichier à `.claude/commands/deploy.md` et un à `.claude/skills/deploy/SKILL.md` créent tous deux `/deploy` et fonctionnent de la même manière ; les fichiers de commande existants continuent de fonctionner.

258 

259En savoir plus : [Extend Claude with skills](/fr/skills)

260 

261### Subagent

262 

263Un assistant IA spécialisé qui s'exécute dans sa propre fenêtre de contexte avec une invite système personnalisée, un accès à des outils spécifiques et des permissions indépendantes. Il travaille sur une tâche déléguée et retourne un résumé à la conversation principale. Utilisez les subagents pour garder les grandes explorations hors de votre contexte principal ou pour exécuter des recherches parallèles. Différent des [agent teams](#agent-teams), où chaque agent est une session indépendante complète avec laquelle vous pouvez parler directement.

264 

265Les subagents intégrés incluent Explore, Plan et à usage général.

266 

267En savoir plus : [Create custom subagents](/fr/sub-agents)

268 

269### Surface

270 

271N'importe quel endroit où vous accédez à Claude Code : la CLI, VS Code, JetBrains, Desktop ou claude.ai. Toutes les surfaces partagent le même moteur, donc votre CLAUDE.md, vos paramètres et vos skills fonctionnent de la même manière sur toutes. Slack et l'extension Chrome sont des intégrations qui se connectent à une surface plutôt que des surfaces elles-mêmes.

272 

273En savoir plus : [Platforms and integrations](/fr/platforms)

274 

275## T

276 

277### Teleport

278 

279Une commande, `/teleport`, qui tire une session Claude Code cloud dans votre terminal local. Claude récupère la branche, charge l'historique des conversations et reprend à partir du dernier état de la session web. La direction inverse est `--remote`, qui envoie une tâche locale pour s'exécuter sur le web.

280 

281En savoir plus : [From web to terminal](/fr/claude-code-on-the-web#from-web-to-terminal)

282 

283### Tool

284 

285Une action que Claude peut prendre : lire un fichier, modifier le code, exécuter une commande shell, rechercher sur le web, générer un subagent. Les tools sont ce qui rend Claude Code agentic. Sans eux, Claude ne peut que répondre avec du texte. Chaque utilisation d'outil retourne un résultat qui informe la décision suivante de Claude dans la [agentic loop](#agentic-loop).

286 

287En savoir plus : [Tools available to Claude](/fr/tools-reference)

288 

289## W

290 

291### Worktree isolation

292 

293Un mode d'isolation qui exécute Claude dans un worktree git séparé sous `.claude/worktrees/`, activé avec le drapeau `-w` ou `isolation: worktree` dans la configuration du subagent. Les modifications restent sur une branche séparée dans un répertoire séparé, afin que les agents parallèles ne se remplacent pas les fichiers les uns des autres.

294 

295En savoir plus : [Run parallel sessions with git worktrees](/fr/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees)

296 

297***

298 

299## Deprecated and renamed terms

300 

301Ces termes apparaissent dans les documents plus anciens, les articles de blog et le contenu communautaire. Utilisez le nom actuel lors de la recherche sur ce site.

302 

303| Old term | Now called | Notes |

304| --------------- | --------------------------------------------- | ------------------------------------ |

305| Headless mode | [Non-interactive mode](#non-interactive-mode) | Same `-p` flag, same behavior |

306| Custom commands | [Skills](#skill) | `.claude/commands/` files still work |

307| Slash commands | Commands | "Slash" dropped from product copy |

google-vertex-ai.md +387 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Claude Code sur Google Vertex AI

6 

7> Découvrez comment configurer Claude Code via Google Vertex AI, y compris la configuration, la configuration IAM et la résolution des problèmes.

8 

9export const ContactSalesCard = ({surface}) => {

10 const utm = content => `utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content}`;

11 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

12 <line x1="5" y1="12" x2="19" y2="12" />

13 <polyline points="12 5 19 12 12 19" />

14 </svg>;

15 const STYLES = `

16.cc-cs {

17 --cs-slate: #141413;

18 --cs-clay: #d97757;

19 --cs-clay-deep: #c6613f;

20 --cs-gray-000: #ffffff;

21 --cs-gray-700: #3d3d3a;

22 --cs-border-default: rgba(31, 30, 29, 0.15);

23 font-family: inherit;

24}

25.dark .cc-cs {

26 --cs-slate: #f0eee6;

27 --cs-gray-000: #262624;

28 --cs-gray-700: #bfbdb4;

29 --cs-border-default: rgba(240, 238, 230, 0.14);

30}

31.cc-cs-card {

32 display: flex; align-items: center; justify-content: space-between;

33 gap: 16px; padding: 14px 16px; margin: 0;

34 background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default);

35 border-radius: 8px; flex-wrap: wrap;

36}

37.cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; }

38.cc-cs-text strong { font-weight: 550; color: var(--cs-slate); }

39.cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

40.cc-cs-btn-clay {

41 display: inline-flex; align-items: center; gap: 8px;

42 background: var(--cs-clay-deep); color: #fff; border: none;

43 border-radius: 8px; padding: 8px 14px;

44 font-size: 13px; font-weight: 500;

45 transition: background-color 0.15s; white-space: nowrap;

46}

47.cc-cs-btn-clay:hover { background: var(--cs-clay); }

48.cc-cs-btn-ghost {

49 display: inline-flex; align-items: center; gap: 8px;

50 background: transparent; color: var(--cs-gray-700);

51 border: 0.5px solid var(--cs-border-default);

52 border-radius: 8px; padding: 8px 14px;

53 font-size: 13px; font-weight: 500;

54}

55.cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

56.dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); }

57@media (max-width: 720px) {

58 .cc-cs-actions { width: 100%; }

59}

60`;

61 return <div className="cc-cs not-prose">

62 <style>{STYLES}</style>

63 <div className="cc-cs-card">

64 <div className="cc-cs-text">

65 <strong>Deploying Claude Code across your organization?</strong> Talk to sales about enterprise plans, SSO, and centralized billing.

66 </div>

67 <div className="cc-cs-actions">

68 <a href={`https://claude.com/pricing?${utm('view_plans')}#plans-business`} className="cc-cs-btn-ghost">

69 View plans

70 </a>

71 <a href={`https://claude.com/contact-sales?${utm('contact_sales')}`} className="cc-cs-btn-clay">

72 Contact sales {iconArrowRight()}

73 </a>

74 </div>

75 </div>

76 </div>;

77};

78 

79export const Experiment = ({flag, treatment, children}) => {

80 const VID_KEY = 'exp_vid';

81 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

82 const fnv1a = s => {

83 let h = 0x811c9dc5;

84 for (let i = 0; i < s.length; i++) {

85 h ^= s.charCodeAt(i);

86 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

87 }

88 return h >>> 0;

89 };

90 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

91 const [decision] = useState(() => {

92 const params = new URLSearchParams(location.search);

93 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

94 const force = params.get('gb-force');

95 if (force) {

96 for (const p of force.split(',')) {

97 const [k, v] = p.split(':');

98 if (k === flag) return {

99 variant: v || 'treatment',

100 track: false

101 };

102 }

103 }

104 if (navigator.globalPrivacyControl) {

105 return {

106 variant: 'control',

107 track: false

108 };

109 }

110 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

111 if (prefsMatch) {

112 try {

113 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

114 return {

115 variant: 'control',

116 track: false

117 };

118 }

119 } catch {

120 return {

121 variant: 'control',

122 track: false

123 };

124 }

125 } else {

126 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

127 if (!country || CONSENT_COUNTRIES.has(country)) {

128 return {

129 variant: 'control',

130 track: false

131 };

132 }

133 }

134 let vid;

135 try {

136 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

137 if (ajsMatch) {

138 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

139 } else {

140 vid = localStorage.getItem(VID_KEY);

141 if (!vid) {

142 vid = crypto.randomUUID();

143 }

144 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

145 }

146 try {

147 localStorage.setItem(VID_KEY, vid);

148 } catch {}

149 } catch {

150 return {

151 variant: 'control',

152 track: false

153 };

154 }

155 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

156 return {

157 variant,

158 track: true,

159 vid

160 };

161 });

162 useEffect(() => {

163 if (!decision.track) return;

164 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

165 method: 'POST',

166 headers: {

167 'Content-Type': 'application/json',

168 'x-service-name': 'claude_code_docs'

169 },

170 body: JSON.stringify({

171 events: [{

172 event_type: 'GrowthbookExperimentEvent',

173 event_data: {

174 device_id: decision.vid,

175 anonymous_id: decision.vid,

176 timestamp: new Date().toISOString(),

177 experiment_id: flag,

178 variation_id: decision.variant === 'treatment' ? 1 : 0,

179 environment: 'production'

180 }

181 }]

182 }),

183 keepalive: true

184 }).catch(() => {});

185 }, []);

186 return decision.variant === 'treatment' ? treatment : children;

187};

188 

189<Experiment flag="docs-contact-sales-cta" treatment={<ContactSalesCard surface="vertex" />} />

190 

191## Conditions préalables

192 

193Avant de configurer Claude Code avec Vertex AI, assurez-vous que vous disposez de :

194 

195* Un compte Google Cloud Platform (GCP) avec facturation activée

196* Un projet GCP avec l'API Vertex AI activée

197* Accès aux modèles Claude souhaités (par exemple, Claude Sonnet 4.6)

198* Google Cloud SDK (`gcloud`) installé et configuré

199* Quota alloué dans la région GCP souhaitée

200 

201Pour vous connecter avec vos propres identifiants Vertex AI, suivez [Se connecter avec Vertex AI](#sign-in-with-vertex-ai) ci-dessous. Pour déployer Claude Code dans une équipe, utilisez les étapes de [configuration manuelle](#set-up-manually) et [épinglez vos versions de modèle](#5-pin-model-versions) avant le déploiement.

202 

203## Se connecter avec Vertex AI

204 

205Si vous disposez d'identifiants Google Cloud et souhaitez commencer à utiliser Claude Code via Vertex AI, l'assistant de connexion vous guide à travers le processus. Vous complétez les conditions préalables du côté GCP une fois par projet ; l'assistant gère le côté Claude Code.

206 

207<Note>

208 L'assistant de configuration Vertex AI nécessite Claude Code v2.1.98 ou version ultérieure. Exécutez `claude --version` pour vérifier.

209</Note>

210 

211<Steps>

212 <Step title="Activer les modèles Claude dans votre projet GCP">

213 [Activez l'API Vertex AI](#1-enable-vertex-ai-api) pour votre projet, puis demandez l'accès aux modèles Claude que vous souhaitez dans le [Vertex AI Model Garden](https://console.cloud.google.com/vertex-ai/model-garden). Consultez [Configuration IAM](#iam-configuration) pour les autorisations dont votre compte a besoin.

214 </Step>

215 

216 <Step title="Démarrer Claude Code et choisir Vertex AI">

217 Exécutez `claude`. À l'invite de connexion, sélectionnez **plateforme tierce**, puis **Google Vertex AI**.

218 </Step>

219 

220 <Step title="Suivre les invites de l'assistant">

221 Choisissez comment vous vous authentifiez auprès de Google Cloud : identifiants par défaut de l'application à partir de `gcloud`, fichier de clé de compte de service, ou identifiants déjà dans votre environnement. L'assistant détecte votre projet et votre région, vérifie quels modèles Claude votre projet peut invoquer, et vous permet de les épingler. Il enregistre le résultat dans le bloc `env` de votre [fichier de paramètres utilisateur](/fr/settings), vous n'avez donc pas besoin d'exporter les variables d'environnement vous-même.

222 </Step>

223</Steps>

224 

225Après vous être connecté, exécutez `/setup-vertex` à tout moment pour rouvrir l'assistant et modifier vos identifiants, votre projet, votre région ou vos épingles de modèle.

226 

227## Configuration de la région

228 

229Claude Code prend en charge les points de terminaison Vertex AI [globaux](https://cloud.google.com/blog/products/ai-machine-learning/global-endpoint-for-claude-models-generally-available-on-vertex-ai), multi-régions et régionaux. Définissez `CLOUD_ML_REGION` sur `global`, un emplacement multi-région tel que `eu` ou `us`, ou une région spécifique telle que `us-east5`. Claude Code sélectionne le nom d'hôte Vertex AI correct pour chaque formulaire, y compris les hôtes `aiplatform.eu.rep.googleapis.com` et `aiplatform.us.rep.googleapis.com` pour les emplacements multi-régions.

230 

231<Note>

232 Vertex AI peut ne pas prendre en charge les modèles par défaut de Claude Code sur tous les types de points de terminaison. La disponibilité des modèles varie selon les [régions spécifiques](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/locations#genai-partner-models), les emplacements multi-régions et les [points de terminaison globaux](https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models#supported_models). Vous devrez peut-être basculer vers un emplacement pris en charge ou spécifier un modèle pris en charge.

233</Note>

234 

235## Configuration manuelle

236 

237Pour configurer Vertex AI via des variables d'environnement au lieu de l'assistant, par exemple dans CI ou un déploiement d'entreprise scriptée, suivez les étapes ci-dessous.

238 

239### 1. Activer l'API Vertex AI

240 

241Activez l'API Vertex AI dans votre projet GCP :

242 

243```bash theme={null}

244# Définissez votre ID de projet

245gcloud config set project YOUR-PROJECT-ID

246 

247# Activez l'API Vertex AI

248gcloud services enable aiplatform.googleapis.com

249```

250 

251### 2. Demander l'accès au modèle

252 

253Demandez l'accès aux modèles Claude dans Vertex AI :

254 

2551. Accédez au [Vertex AI Model Garden](https://console.cloud.google.com/vertex-ai/model-garden)

2562. Recherchez les modèles « Claude »

2573. Demandez l'accès aux modèles Claude souhaités (par exemple, Claude Sonnet 4.6)

2584. Attendez l'approbation (peut prendre 24 à 48 heures)

259 

260### 3. Configurer les identifiants GCP

261 

262Claude Code utilise l'authentification Google Cloud standard.

263 

264Pour plus d'informations, consultez la [documentation d'authentification Google Cloud](https://cloud.google.com/docs/authentication).

265 

266Claude Code v2.1.121 ou version ultérieure prend en charge la [Fédération d'identité de charge de travail basée sur certificat X.509](https://cloud.google.com/iam/docs/workload-identity-federation-with-x509-certificates) via la même chaîne Application Default Credentials. Définissez `GOOGLE_APPLICATION_CREDENTIALS` sur le chemin de votre fichier de configuration des identifiants.

267 

268<Note>

269 Lors de l'authentification, Claude Code utilisera automatiquement l'ID de projet de la variable d'environnement `ANTHROPIC_VERTEX_PROJECT_ID`. Pour remplacer cela, définissez l'une de ces variables d'environnement : `GCLOUD_PROJECT`, `GOOGLE_CLOUD_PROJECT` ou `GOOGLE_APPLICATION_CREDENTIALS`.

270</Note>

271 

272### 4. Configurer Claude Code

273 

274Définissez les variables d'environnement suivantes :

275 

276```bash theme={null}

277# Activez l'intégration Vertex AI

278export CLAUDE_CODE_USE_VERTEX=1

279export CLOUD_ML_REGION=global

280export ANTHROPIC_VERTEX_PROJECT_ID=YOUR-PROJECT-ID

281 

282# Optionnel : Remplacez l'URL du point de terminaison Vertex pour les points de terminaison personnalisés ou les passerelles

283# export ANTHROPIC_VERTEX_BASE_URL=https://aiplatform.googleapis.com

284 

285# Optionnel : Désactivez la mise en cache des invites si nécessaire

286export DISABLE_PROMPT_CACHING=1

287 

288# Optionnel : Demandez une TTL de cache d'invites d'1 heure au lieu de la valeur par défaut de 5 minutes

289export ENABLE_PROMPT_CACHING_1H=1

290 

291# Quand CLOUD_ML_REGION=global, remplacez la région pour les modèles qui ne prennent pas en charge les points de terminaison globaux

292export VERTEX_REGION_CLAUDE_HAIKU_4_5=us-east5

293export VERTEX_REGION_CLAUDE_4_6_SONNET=europe-west1

294```

295 

296La plupart des versions de modèle ont une variable `VERTEX_REGION_CLAUDE_*` correspondante. Consultez la [référence des variables d'environnement](/fr/env-vars) pour la liste complète. Vérifiez [Vertex Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) pour déterminer quels modèles prennent en charge les points de terminaison globaux par rapport aux points de terminaison régionaux uniquement.

297 

298[La mise en cache des invites](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) est activée automatiquement. Pour la désactiver, définissez `DISABLE_PROMPT_CACHING=1`. Pour demander une TTL de cache d'1 heure au lieu de la valeur par défaut de 5 minutes, définissez `ENABLE_PROMPT_CACHING_1H=1` ; les écritures de cache avec une TTL d'1 heure sont facturées à un taux plus élevé. Pour des limites de débit accrues, contactez le support Google Cloud. Lors de l'utilisation de Vertex AI, les commandes `/login` et `/logout` sont désactivées car l'authentification est gérée via les identifiants Google Cloud.

299 

300[La recherche d'outils MCP](/fr/mcp#scale-with-mcp-tool-search) est désactivée par défaut sur Vertex AI car le point de terminaison n'accepte pas l'en-tête bêta requis. Toutes les définitions d'outils MCP se chargent à l'avance à la place. Pour participer, définissez `ENABLE_TOOL_SEARCH=true`.

301 

302### 5. Épingler les versions de modèle

303 

304<Warning>

305 Épinglez les versions de modèle spécifiques lors du déploiement pour plusieurs utilisateurs. Sans épinglage, les alias de modèle tels que `sonnet` et `opus` se résolvent à la dernière version, qui peut ne pas encore être activée dans votre projet Vertex AI lorsqu'Anthropic publie une mise à jour. Claude Code [revient](#startup-model-checks) à la version précédente au démarrage lorsque la dernière n'est pas disponible, mais l'épinglage vous permet de contrôler quand vos utilisateurs passent à un nouveau modèle.

306</Warning>

307 

308Définissez ces variables d'environnement sur des ID de modèle Vertex AI spécifiques.

309 

310Sans `ANTHROPIC_DEFAULT_OPUS_MODEL`, l'alias `opus` sur Vertex se résout à Opus 4.6. Définissez-le sur l'ID Opus 4.7 pour utiliser le dernier modèle :

311 

312```bash theme={null}

313export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7'

314export ANTHROPIC_DEFAULT_SONNET_MODEL='claude-sonnet-4-6'

315export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5@20251001'

316```

317 

318Pour les ID de modèle actuels et hérités, consultez [Aperçu des modèles](https://platform.claude.com/docs/en/about-claude/models/overview). Consultez [Configuration du modèle](/fr/model-config#pin-models-for-third-party-deployments) pour la liste complète des variables d'environnement.

319 

320Claude Code utilise ces modèles par défaut lorsqu'aucune variable d'épinglage n'est définie :

321 

322| Type de modèle | Valeur par défaut |

323| :------------------ | :--------------------------- |

324| Modèle principal | `claude-sonnet-4-5@20250929` |

325| Modèle petit/rapide | `claude-haiku-4-5@20251001` |

326 

327Pour personnaliser davantage les modèles :

328 

329```bash theme={null}

330export ANTHROPIC_MODEL='claude-opus-4-7'

331export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5@20251001'

332```

333 

334## Vérifications du modèle au démarrage

335 

336Lorsque Claude Code démarre avec Vertex AI configuré, il vérifie que les modèles qu'il a l'intention d'utiliser sont accessibles dans votre projet. Cette vérification nécessite Claude Code v2.1.98 ou version ultérieure.

337 

338Si vous avez épinglé une version de modèle plus ancienne que la valeur par défaut actuelle de Claude Code, et que votre projet peut invoquer la version plus récente, Claude Code vous invite à mettre à jour l'épingle. L'acceptation écrit le nouvel ID de modèle dans votre [fichier de paramètres utilisateur](/fr/settings) et redémarre Claude Code. Le refus est mémorisé jusqu'au prochain changement de version par défaut.

339 

340Si vous n'avez pas épinglé un modèle et que la valeur par défaut actuelle n'est pas disponible dans votre projet, Claude Code revient à la version précédente pour la session actuelle et affiche un avis. Le retour n'est pas persistant. Activez le modèle plus récent dans [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) ou [épinglez une version](#5-pin-model-versions) pour rendre le choix permanent.

341 

342## Configuration IAM

343 

344Attribuez les autorisations IAM requises :

345 

346Le rôle `roles/aiplatform.user` inclut les autorisations requises :

347 

348* `aiplatform.endpoints.predict` - Requis pour l'invocation de modèle et le comptage des jetons

349 

350Pour des autorisations plus restrictives, créez un rôle personnalisé avec uniquement les autorisations ci-dessus.

351 

352Pour plus de détails, consultez la [documentation IAM de Vertex](https://cloud.google.com/vertex-ai/docs/general/access-control).

353 

354<Note>

355 Créez un projet GCP dédié pour Claude Code pour simplifier le suivi des coûts et le contrôle d'accès.

356</Note>

357 

358## Fenêtre de contexte de 1M de jetons

359 

360Claude Opus 4.7, Opus 4.6 et Sonnet 4.6 prennent en charge la [fenêtre de contexte de 1M de jetons](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) sur Vertex AI. Claude Code active automatiquement la fenêtre de contexte étendue lorsque vous sélectionnez une variante de modèle 1M.

361 

362L'[assistant de configuration](#sign-in-with-vertex-ai) offre une option de contexte 1M lorsqu'il épingle les modèles. Pour l'activer pour un modèle épinglé manuellement à la place, ajoutez `[1m]` à l'ID du modèle. Consultez [Épingler les modèles pour les déploiements tiers](/fr/model-config#pin-models-for-third-party-deployments) pour plus de détails.

363 

364## Résolution des problèmes

365 

366Si vous rencontrez des problèmes de quota :

367 

368* Vérifiez les quotas actuels ou demandez une augmentation de quota via la [Console Cloud](https://cloud.google.com/docs/quotas/view-manage)

369 

370Si vous rencontrez des erreurs « modèle non trouvé » 404 :

371 

372* Confirmez que le modèle est activé dans [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden)

373* Vérifiez que le modèle est disponible dans l'emplacement que vous avez spécifié. Certains modèles ne sont proposés que sur les emplacements `global` ou multi-régions tels que `eu` et `us`, pas dans les régions spécifiques

374* Si vous utilisez `CLOUD_ML_REGION=global`, vérifiez que vos modèles prennent en charge les points de terminaison globaux dans [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) sous « Fonctionnalités prises en charge ». Pour les modèles qui ne prennent pas en charge les points de terminaison globaux, soit :

375 * Spécifiez un modèle pris en charge via `ANTHROPIC_MODEL` ou `ANTHROPIC_DEFAULT_HAIKU_MODEL`, soit

376 * Définissez une région ou un emplacement multi-région à l'aide des variables d'environnement `VERTEX_REGION_<MODEL_NAME>`

377 

378Si vous rencontrez des erreurs 429 :

379 

380* Pour les points de terminaison régionaux, assurez-vous que le modèle principal et le modèle petit/rapide sont pris en charge dans votre région sélectionnée

381* Envisagez de basculer vers `CLOUD_ML_REGION=global` pour une meilleure disponibilité

382 

383## Ressources supplémentaires

384 

385* [Documentation Vertex AI](https://cloud.google.com/vertex-ai/docs)

386* [Tarification Vertex AI](https://cloud.google.com/vertex-ai/pricing)

387* [Quotas et limites Vertex AI](https://cloud.google.com/vertex-ai/docs/quotas)

headless.md +225 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Exécuter Claude Code par programmation

6 

7> Utilisez l'Agent SDK pour exécuter Claude Code par programmation depuis la CLI, Python ou TypeScript.

8 

9L'[Agent SDK](/fr/agent-sdk/overview) vous donne accès aux mêmes outils, boucle d'agent et gestion du contexte qui alimentent Claude Code. Il est disponible en tant que CLI pour les scripts et CI/CD, ou en tant que packages [Python](/fr/agent-sdk/python) et [TypeScript](/fr/agent-sdk/typescript) pour un contrôle programmatique complet.

10 

11<Note>

12 La CLI s'appelait auparavant « mode sans interface ». Le flag `-p` et toutes les options CLI fonctionnent de la même manière.

13</Note>

14 

15Pour exécuter Claude Code par programmation depuis la CLI, passez `-p` avec votre prompt et toute [option CLI](/fr/cli-reference) :

16 

17```bash theme={null}

18claude -p "Find and fix the bug in auth.py" --allowedTools "Read,Edit,Bash"

19```

20 

21Cette page couvre l'utilisation de l'Agent SDK via la CLI (`claude -p`). Pour les packages SDK Python et TypeScript avec sorties structurées, callbacks d'approbation d'outils et objets de message natifs, consultez la [documentation complète de l'Agent SDK](/fr/agent-sdk/overview).

22 

23## Utilisation basique

24 

25Ajoutez le flag `-p` (ou `--print`) à n'importe quelle commande `claude` pour l'exécuter de manière non-interactive. Toutes les [options CLI](/fr/cli-reference) fonctionnent avec `-p`, notamment :

26 

27* `--continue` pour [continuer les conversations](#continue-conversations)

28* `--allowedTools` pour [approuver automatiquement les outils](#auto-approve-tools)

29* `--output-format` pour [obtenir une sortie structurée](#get-structured-output)

30 

31Cet exemple pose une question à Claude sur votre base de code et affiche la réponse :

32 

33```bash theme={null}

34claude -p "What does the auth module do?"

35```

36 

37### Démarrer plus rapidement avec le mode bare

38 

39Ajoutez `--bare` pour réduire le temps de démarrage en ignorant la découverte automatique des hooks, skills, plugins, serveurs MCP, mémoire automatique et CLAUDE.md. Sans cela, `claude -p` charge le même [contexte](/fr/how-claude-code-works#the-context-window) qu'une session interactive, y compris tout ce qui est configuré dans le répertoire de travail ou `~/.claude`.

40 

41Le mode bare est utile pour CI et les scripts où vous avez besoin du même résultat sur chaque machine. Un hook dans le `~/.claude` d'un coéquipier ou un serveur MCP dans le `.mcp.json` du projet ne s'exécutera pas, car le mode bare ne les lit jamais. Seuls les flags que vous passez explicitement prennent effet.

42 

43Cet exemple exécute une tâche de résumé ponctuelle en mode bare et pré-approuve l'outil Read pour que l'appel se termine sans invite de permission :

44 

45```bash theme={null}

46claude --bare -p "Summarize this file" --allowedTools "Read"

47```

48 

49En mode bare, Claude a accès aux outils Bash, lecture de fichier et modification de fichier. Passez tout contexte dont vous avez besoin avec un flag :

50 

51| Pour charger | Utilisez |

52| ------------------------ | ------------------------------------------------------- |

53| Ajouts de prompt système | `--append-system-prompt`, `--append-system-prompt-file` |

54| Paramètres | `--settings <file-or-json>` |

55| Serveurs MCP | `--mcp-config <file-or-json>` |

56| Agents personnalisés | `--agents <json>` |

57| Un répertoire de plugin | `--plugin-dir <path>` |

58 

59Le mode bare ignore OAuth et les lectures du trousseau. L'authentification Anthropic doit provenir de `ANTHROPIC_API_KEY` ou d'un `apiKeyHelper` dans le JSON passé à `--settings`. Bedrock, Vertex et Foundry utilisent leurs identifiants de fournisseur habituels.

60 

61<Note>

62 `--bare` est le mode recommandé pour les appels scriptés et SDK, et deviendra le mode par défaut pour `-p` dans une version future.

63</Note>

64 

65## Exemples

66 

67Ces exemples mettent en évidence les modèles CLI courants. Pour CI et autres appels scriptés, ajoutez [`--bare`](#start-faster-with-bare-mode) pour qu'ils ne reprennent pas ce qui se trouve configuré localement.

68 

69### Obtenir une sortie structurée

70 

71Utilisez `--output-format` pour contrôler la façon dont les réponses sont retournées :

72 

73* `text` (par défaut) : sortie en texte brut

74* `json` : JSON structuré avec résultat, ID de session et métadonnées

75* `stream-json` : JSON délimité par des sauts de ligne pour le streaming en temps réel

76 

77Cet exemple retourne un résumé du projet au format JSON avec les métadonnées de session, avec le résultat textuel dans le champ `result` :

78 

79```bash theme={null}

80claude -p "Summarize this project" --output-format json

81```

82 

83Pour obtenir une sortie conforme à un schéma spécifique, utilisez `--output-format json` avec `--json-schema` et une définition [JSON Schema](https://json-schema.org/). La réponse inclut les métadonnées sur la requête (ID de session, utilisation, etc.) avec la sortie structurée dans le champ `structured_output`.

84 

85Cet exemple extrait les noms de fonctions et les retourne sous forme de tableau de chaînes :

86 

87```bash theme={null}

88claude -p "Extract the main function names from auth.py" \

89 --output-format json \

90 --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}'

91```

92 

93<Tip>

94 Utilisez un outil comme [jq](https://jqlang.github.io/jq/) pour analyser la réponse et extraire des champs spécifiques :

95 

96 ```bash theme={null}

97 # Extract the text result

98 claude -p "Summarize this project" --output-format json | jq -r '.result'

99 

100 # Extract structured output

101 claude -p "Extract function names from auth.py" \

102 --output-format json \

103 --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}' \

104 | jq '.structured_output'

105 ```

106</Tip>

107 

108### Réponses en streaming

109 

110Utilisez `--output-format stream-json` avec `--verbose` et `--include-partial-messages` pour recevoir les tokens au fur et à mesure qu'ils sont générés. Chaque ligne est un objet JSON représentant un événement :

111 

112```bash theme={null}

113claude -p "Explain recursion" --output-format stream-json --verbose --include-partial-messages

114```

115 

116L'exemple suivant utilise [jq](https://jqlang.github.io/jq/) pour filtrer les deltas de texte et afficher uniquement le texte en streaming. Le flag `-r` affiche les chaînes brutes (sans guillemets) et `-j` joint sans sauts de ligne pour que les tokens se diffusent en continu :

117 

118```bash theme={null}

119claude -p "Write a poem" --output-format stream-json --verbose --include-partial-messages | \

120 jq -rj 'select(.type == "stream_event" and .event.delta.type? == "text_delta") | .event.delta.text'

121```

122 

123Quand une requête API échoue avec une erreur réessayable, Claude Code émet un événement `system/api_retry` avant de réessayer. Vous pouvez l'utiliser pour afficher la progression des tentatives ou implémenter une logique de backoff personnalisée.

124 

125| Champ | Type | Description |

126| ---------------- | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

127| `type` | `"system"` | type de message |

128| `subtype` | `"api_retry"` | identifie ceci comme un événement de tentative |

129| `attempt` | entier | numéro de tentative actuel, commençant à 1 |

130| `max_retries` | entier | nombre total de tentatives autorisées |

131| `retry_delay_ms` | entier | millisecondes jusqu'à la prochaine tentative |

132| `error_status` | entier ou null | code de statut HTTP, ou `null` pour les erreurs de connexion sans réponse HTTP |

133| `error` | chaîne | catégorie d'erreur : `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `rate_limit`, `invalid_request`, `server_error`, `max_output_tokens`, ou `unknown` |

134| `uuid` | chaîne | identifiant d'événement unique |

135| `session_id` | chaîne | session à laquelle appartient l'événement |

136 

137L'événement `system/init` rapporte les métadonnées de session, y compris le modèle, les outils, les serveurs MCP et les plugins chargés. C'est le premier événement du flux sauf si [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/fr/env-vars) est défini, auquel cas les événements `plugin_install` le précèdent. Utilisez les champs de plugin pour échouer CI quand un plugin n'a pas pu être chargé :

138 

139| Champ | Type | Description |

140| --------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

141| `plugins` | tableau | plugins qui se sont chargés avec succès, chacun avec `name` et `path` |

142| `plugin_errors` | tableau | erreurs de chargement de plugin telles qu'une version de dépendance non satisfaite, chacune avec `plugin`, `type` et `message`. Les plugins affectés sont rétrogradés et absents de `plugins`. La clé est omise quand il n'y a pas d'erreurs |

143 

144Quand [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/fr/env-vars) est défini, Claude Code émet des événements `system/plugin_install` pendant que les plugins de marketplace s'installent avant le premier tour. Utilisez-les pour afficher la progression de l'installation dans votre propre interface utilisateur.

145 

146| Champ | Type | Description |

147| ------------ | -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |

148| `type` | `"system"` | type de message |

149| `subtype` | `"plugin_install"` | identifie ceci comme un événement d'installation de plugin |

150| `status` | `"started"`, `"installed"`, `"failed"`, ou `"completed"` | `started` et `completed` encadrent l'installation globale ; `installed` et `failed` rapportent les marketplaces individuelles |

151| `name` | chaîne, optionnel | nom de la marketplace, présent sur `installed` et `failed` |

152| `error` | chaîne, optionnel | message d'échec, présent sur `failed` |

153| `uuid` | chaîne | identifiant d'événement unique |

154| `session_id` | chaîne | session à laquelle appartient l'événement |

155 

156Pour le streaming programmatique avec callbacks et objets de message, consultez [Réponses en streaming en temps réel](/fr/agent-sdk/streaming-output) dans la documentation de l'Agent SDK.

157 

158### Approuver automatiquement les outils

159 

160Utilisez `--allowedTools` pour permettre à Claude d'utiliser certains outils sans demander. Cet exemple exécute une suite de tests et corrige les défaillances, permettant à Claude d'exécuter des commandes Bash et de lire/modifier des fichiers sans demander la permission :

161 

162```bash theme={null}

163claude -p "Run the test suite and fix any failures" \

164 --allowedTools "Bash,Read,Edit"

165```

166 

167Pour définir une base de référence pour la session entière au lieu de lister les outils individuels, passez un [mode de permission](/fr/permission-modes). `dontAsk` refuse tout ce qui n'est pas dans vos règles `permissions.allow` ou l'[ensemble de commandes en lecture seule](/fr/permissions#read-only-commands), ce qui est utile pour les exécutions CI verrouillées. `acceptEdits` permet à Claude d'écrire des fichiers sans demander et approuve également automatiquement les commandes de système de fichiers courants telles que `mkdir`, `touch`, `mv` et `cp`. Les autres commandes shell et requêtes réseau ont toujours besoin d'une entrée `--allowedTools` ou d'une règle `permissions.allow`, sinon l'exécution s'arrête quand l'une d'elles est tentée :

168 

169```bash theme={null}

170claude -p "Apply the lint fixes" --permission-mode acceptEdits

171```

172 

173### Créer un commit

174 

175Cet exemple examine les modifications mises en scène et crée un commit avec un message approprié :

176 

177```bash theme={null}

178claude -p "Look at my staged changes and create an appropriate commit" \

179 --allowedTools "Bash(git diff *),Bash(git log *),Bash(git status *),Bash(git commit *)"

180```

181 

182Le flag `--allowedTools` utilise la [syntaxe des règles de permission](/fr/settings#permission-rule-syntax). L'espace ` *` à la fin active la correspondance de préfixe, donc `Bash(git diff *)` autorise n'importe quelle commande commençant par `git diff`. L'espace avant `*` est important : sans lui, `Bash(git diff*)` correspondrait également à `git diff-index`.

183 

184<Note>

185 Les [skills](/fr/skills) invoquées par l'utilisateur comme `/commit` et les [commandes intégrées](/fr/commands) ne sont disponibles qu'en mode interactif. En mode `-p`, décrivez plutôt la tâche que vous souhaitez accomplir.

186</Note>

187 

188### Personnaliser le prompt système

189 

190Utilisez `--append-system-prompt` pour ajouter des instructions tout en conservant le comportement par défaut de Claude Code. Cet exemple envoie un diff de PR à Claude et lui demande de vérifier les vulnérabilités de sécurité :

191 

192```bash theme={null}

193gh pr diff "$1" | claude -p \

194 --append-system-prompt "You are a security engineer. Review for vulnerabilities." \

195 --output-format json

196```

197 

198Consultez les [flags de prompt système](/fr/cli-reference#system-prompt-flags) pour plus d'options, notamment `--system-prompt` pour remplacer complètement le prompt par défaut.

199 

200### Continuer les conversations

201 

202Utilisez `--continue` pour continuer la conversation la plus récente, ou `--resume` avec un ID de session pour continuer une conversation spécifique. Cet exemple exécute un examen, puis envoie des prompts de suivi :

203 

204```bash theme={null}

205# First request

206claude -p "Review this codebase for performance issues"

207 

208# Continue the most recent conversation

209claude -p "Now focus on the database queries" --continue

210claude -p "Generate a summary of all issues found" --continue

211```

212 

213Si vous exécutez plusieurs conversations, capturez l'ID de session pour reprendre une conversation spécifique :

214 

215```bash theme={null}

216session_id=$(claude -p "Start a review" --output-format json | jq -r '.session_id')

217claude -p "Continue that review" --resume "$session_id"

218```

219 

220## Étapes suivantes

221 

222* [Démarrage rapide de l'Agent SDK](/fr/agent-sdk/quickstart) : créez votre premier agent avec Python ou TypeScript

223* [Référence CLI](/fr/cli-reference) : tous les flags et options CLI

224* [GitHub Actions](/fr/github-actions) : utilisez l'Agent SDK dans les workflows GitHub

225* [GitLab CI/CD](/fr/gitlab-ci-cd) : utilisez l'Agent SDK dans les pipelines GitLab

hooks.md +2653 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Référence des hooks

6 

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 

9<Tip>

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

11</Tip>

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).

14 

15## Cycle de vie des hooks

16 

17Les hooks se déclenchent à des points spécifiques pendant une session Claude Code. Lorsqu'un événement se déclenche et qu'un matcher correspond, Claude Code transmet le contexte JSON de l'événement à votre gestionnaire de hook. Pour les hooks de commande, l'entrée arrive sur stdin. Pour les hooks HTTP, elle arrive dans le corps de la requête POST. Votre gestionnaire peut alors inspecter l'entrée, prendre une action et éventuellement retourner une décision. Les événements se déclenchent selon trois cadences : une fois par session (`SessionStart`, `SessionEnd`), une fois par tour (`UserPromptSubmit`, `Stop`, `StopFailure`) et à chaque appel d'outil à l'intérieur de la boucle agentique (`PreToolUse`, `PostToolUse`) :

18 

19<div style={{maxWidth: "500px", margin: "0 auto"}}>

20 <Frame>

21 <img src="https://mintcdn.com/claude-code/ZIW26Z9pnpsXLhbS/images/hooks-lifecycle.svg?fit=max&auto=format&n=ZIW26Z9pnpsXLhbS&q=85&s=ee23691324deb6501df09bfdae560b64" alt="Diagramme du cycle de vie des hooks montrant Setup optionnel alimentant SessionStart, puis une boucle par tour contenant UserPromptSubmit, UserPromptExpansion pour les slash commands, la boucle agentique imbriquée (PreToolUse, PermissionRequest, PostToolUse, PostToolUseFailure, PostToolBatch, SubagentStart/Stop, TaskCreated, TaskCompleted), et Stop ou StopFailure, suivis de TeammateIdle, PreCompact, PostCompact et SessionEnd, avec Elicitation et ElicitationResult imbriqués dans l'exécution de l'outil MCP, PermissionDenied comme branche latérale de PermissionRequest pour les refus en mode auto, et WorktreeCreate, WorktreeRemove, Notification, ConfigChange, InstructionsLoaded, CwdChanged et FileChanged comme événements asynchrones autonomes" width="520" height="1228" data-path="images/hooks-lifecycle.svg" />

22 </Frame>

23</div>

24 

25Le tableau ci-dessous résume le moment où chaque événement se déclenche. La section [Événements de hook](#hook-events) documente le schéma d'entrée complet et les options de contrôle de décision pour chacun.

26 

27| Event | When it fires |

28| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |

29| `SessionStart` | When a session begins or resumes |

30| `Setup` | When you start Claude Code with `--init-only`, or with `--init` or `--maintenance` in `-p` mode. For one-time preparation in CI or scripts |

31| `UserPromptSubmit` | When you submit a prompt, before Claude processes it |

32| `UserPromptExpansion` | When a user-typed command expands into a prompt, before it reaches Claude. Can block the expansion |

33| `PreToolUse` | Before a tool call executes. Can block it |

34| `PermissionRequest` | When a permission dialog appears |

35| `PermissionDenied` | When a tool call is denied by the auto mode classifier. Return `{retry: true}` to tell the model it may retry the denied tool call |

36| `PostToolUse` | After a tool call succeeds |

37| `PostToolUseFailure` | After a tool call fails |

38| `PostToolBatch` | After a full batch of parallel tool calls resolves, before the next model call |

39| `Notification` | When Claude Code sends a notification |

40| `SubagentStart` | When a subagent is spawned |

41| `SubagentStop` | When a subagent finishes |

42| `TaskCreated` | When a task is being created via `TaskCreate` |

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

44| `Stop` | When Claude finishes responding |

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

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

47| `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 |

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

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

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

51| `WorktreeCreate` | When a worktree is being created via `--worktree` or `isolation: "worktree"`. Replaces default git behavior |

52| `WorktreeRemove` | When a worktree is being removed, either at session exit or when a subagent finishes |

53| `PreCompact` | Before context compaction |

54| `PostCompact` | After context compaction completes |

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

56| `ElicitationResult` | After a user responds to an MCP elicitation, before the response is sent back to the server |

57| `SessionEnd` | When a session terminates |

58 

59### Comment un hook se résout

60 

61Pour voir comment ces éléments s'assemblent, considérez ce hook `PreToolUse` qui bloque les commandes shell destructrices. Le `matcher` se limite aux appels d'outil Bash et la condition `if` se limite davantage aux commandes Bash correspondant à `rm *`, donc `block-rm.sh` ne s'exécute que lorsque les deux filtres correspondent :

62 

63```json theme={null}

64{

65 "hooks": {

66 "PreToolUse": [

67 {

68 "matcher": "Bash",

69 "hooks": [

70 {

71 "type": "command",

72 "if": "Bash(rm *)",

73 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-rm.sh"

74 }

75 ]

76 }

77 ]

78 }

79}

80```

81 

82Le script lit l'entrée JSON depuis stdin, extrait la commande et retourne une `permissionDecision` de `"deny"` si elle contient `rm -rf` :

83 

84```bash theme={null}

85#!/bin/bash

86# .claude/hooks/block-rm.sh

87COMMAND=$(jq -r '.tool_input.command')

88 

89if echo "$COMMAND" | grep -q 'rm -rf'; then

90 jq -n '{

91 hookSpecificOutput: {

92 hookEventName: "PreToolUse",

93 permissionDecision: "deny",

94 permissionDecisionReason: "Destructive command blocked by hook"

95 }

96 }'

97else

98 exit 0 # allow the command

99fi

100```

101 

102Supposons maintenant que Claude Code décide d'exécuter `Bash "rm -rf /tmp/build"`. Voici ce qui se passe :

103 

104<Frame>

105 <img src="https://mintcdn.com/claude-code/-tYw1BD_DEqfyyOZ/images/hook-resolution.svg?fit=max&auto=format&n=-tYw1BD_DEqfyyOZ&q=85&s=c73ebc1eeda2037570427d7af1e0a891" alt="Flux de résolution du hook : l'événement PreToolUse se déclenche, le matcher vérifie la correspondance Bash, la condition if vérifie la correspondance Bash(rm *), le gestionnaire de hook s'exécute, le résultat revient à Claude Code" width="930" height="290" data-path="images/hook-resolution.svg" />

106</Frame>

107 

108<Steps>

109 <Step title="L'événement se déclenche">

110 L'événement `PreToolUse` se déclenche. Claude Code envoie l'entrée de l'outil en JSON sur stdin au hook :

111 

112 ```json theme={null}

113 { "tool_name": "Bash", "tool_input": { "command": "rm -rf /tmp/build" }, ... }

114 ```

115 </Step>

116 

117 <Step title="Le matcher vérifie">

118 Le matcher `"Bash"` correspond au nom de l'outil, donc ce groupe de hook s'active. Si vous omettez le matcher ou utilisez `"*"`, le groupe s'active à chaque occurrence de l'événement.

119 </Step>

120 

121 <Step title="La condition if vérifie">

122 La condition `if` `"Bash(rm *)"` correspond car `rm -rf /tmp/build` est une sous-commande correspondant à `rm *`, donc ce gestionnaire s'exécute. Si la commande avait été `npm test`, la vérification `if` échouerait et `block-rm.sh` ne s'exécuterait jamais, évitant la surcharge de génération de processus. Le champ `if` est optionnel ; sans lui, chaque gestionnaire du groupe correspondant s'exécute.

123 </Step>

124 

125 <Step title="Le gestionnaire de hook s'exécute">

126 Le script inspecte la commande complète et trouve `rm -rf`, donc il imprime une décision sur stdout :

127 

128 ```json theme={null}

129 {

130 "hookSpecificOutput": {

131 "hookEventName": "PreToolUse",

132 "permissionDecision": "deny",

133 "permissionDecisionReason": "Destructive command blocked by hook"

134 }

135 }

136 ```

137 

138 Si la commande avait été une variante plus sûre de `rm` comme `rm file.txt`, le script aurait atteint `exit 0` à la place, ce qui indique à Claude Code d'autoriser l'appel d'outil sans action supplémentaire.

139 </Step>

140 

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

142 Claude Code lit la décision JSON, bloque l'appel d'outil et montre la raison à Claude.

143 </Step>

144</Steps>

145 

146La section [Configuration](#configuration) ci-dessous documente le schéma complet, et chaque section [événement de hook](#hook-events) documente l'entrée que votre commande reçoit et la sortie qu'elle peut retourner.

147 

148## Configuration

149 

150Les hooks sont définis dans les fichiers de paramètres JSON. La configuration a trois niveaux d'imbrication :

151 

1521. Choisissez un [événement de hook](#hook-events) auquel répondre, comme `PreToolUse` ou `Stop`

1532. Ajoutez un [groupe de matcher](#matcher-patterns) pour filtrer quand il se déclenche, comme ' uniquement pour l'outil Bash '

1543. Définissez un ou plusieurs [gestionnaires de hook](#hook-handler-fields) à exécuter lorsqu'il y a correspondance

155 

156Consultez [Comment un hook se résout](#how-a-hook-resolves) ci-dessus pour une procédure pas à pas complète avec un exemple annoté.

157 

158<Note>

159 Cette page utilise des termes spécifiques pour chaque niveau : **événement de hook** pour le point du cycle de vie, **groupe de matcher** pour le filtre et **gestionnaire de hook** pour la commande shell, le point de terminaison HTTP, l'outil MCP, le prompt ou l'agent qui s'exécute. ' Hook ' seul fait référence à la fonctionnalité générale.

160</Note>

161 

162### Emplacements des hooks

163 

164L'endroit où vous définissez un hook détermine sa portée :

165 

166| Emplacement | Portée | Partageable |

167| :--------------------------------------------------------- | :--------------------------------- | :--------------------------------------- |

168| `~/.claude/settings.json` | Tous vos projets | Non, local à votre machine |

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

170| `.claude/settings.local.json` | Projet unique | Non, ignoré par git |

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

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

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

174 

175Pour 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).

176 

177### Modèles de matcher

178 

179Le champ `matcher` filtre quand les hooks se déclenchent. La façon dont un matcher est évalué dépend des caractères qu'il contient :

180 

181| Valeur du matcher | Évalué comme | Exemple |

182| :------------------------------------------------ | :---------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------- |

183| `"*"`, `""` ou omis | Correspondre à tous | se déclenche à chaque occurrence de l'événement |

184| Uniquement des lettres, des chiffres, `_` et `\|` | Chaîne exacte ou liste de chaînes exactes séparées par `\|` | `Bash` correspond uniquement à l'outil Bash ; `Edit\|Write` correspond à l'un ou l'autre outil exactement |

185| Contient tout autre caractère | Expression régulière JavaScript | `^Notebook` correspond à tout outil commençant par Notebook ; `mcp__memory__.*` correspond à chaque outil du serveur `memory` |

186 

187L'événement `FileChanged` ne suit pas ces règles lors de la construction de sa liste de surveillance. Consultez [FileChanged](#filechanged).

188 

189Chaque type d'événement correspond sur un champ différent :

190 

191| Événement | Ce que le matcher filtre | Exemples de valeurs de matcher |

192| :------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------- |

193| `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied` | nom de l'outil | `Bash`, `Edit\|Write`, `mcp__.*` |

194| `SessionStart` | comment la session a démarré | `startup`, `resume`, `clear`, `compact` |

195| `Setup` | quel drapeau CLI a déclenché la configuration | `init`, `maintenance` |

196| `SessionEnd` | pourquoi la session s'est terminée | `clear`, `resume`, `logout`, `prompt_input_exit`, `bypass_permissions_disabled`, `other` |

197| `Notification` | type de notification | `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_complete`, `elicitation_response` |

198| `SubagentStart` | type d'agent | `general-purpose`, `Explore`, `Plan` ou noms d'agents personnalisés |

199| `PreCompact`, `PostCompact` | ce qui a déclenché la compaction | `manual`, `auto` |

200| `SubagentStop` | type d'agent | mêmes valeurs que `SubagentStart` |

201| `ConfigChange` | source de configuration | `user_settings`, `project_settings`, `local_settings`, `policy_settings`, `skills` |

202| `CwdChanged` | pas de support de matcher | se déclenche toujours à chaque changement de répertoire |

203| `FileChanged` | noms de fichiers littéraux à surveiller (consultez [FileChanged](#filechanged)) | `.envrc\|.env` |

204| `StopFailure` | type d'erreur | `rate_limit`, `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `invalid_request`, `server_error`, `max_output_tokens`, `unknown` |

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

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

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

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

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

210 

211Le matcher s'exécute sur un champ de l'[entrée JSON](#hook-input-and-output) que Claude Code envoie à votre hook sur stdin. Pour les événements d'outil, ce champ est `tool_name`. Chaque section [événement de hook](#hook-events) liste l'ensemble complet des valeurs de matcher et le schéma d'entrée pour cet événement.

212 

213Cet exemple exécute un script de linting uniquement lorsque Claude écrit ou édite un fichier :

214 

215```json theme={null}

216{

217 "hooks": {

218 "PostToolUse": [

219 {

220 "matcher": "Edit|Write",

221 "hooks": [

222 {

223 "type": "command",

224 "command": "/path/to/lint-check.sh"

225 }

226 ]

227 }

228 ]

229 }

230}

231```

232 

233`UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove` 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é.

234 

235Pour 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.

236 

237#### Correspondre aux outils MCP

238 

239Les 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.

240 

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

242 

243* `mcp__memory__create_entities` : outil de création d'entités du serveur Memory

244* `mcp__filesystem__read_file` : outil de lecture de fichier du serveur Filesystem

245* `mcp__github__search_repositories` : outil de recherche du serveur GitHub

246 

247Pour correspondre à chaque outil d'un serveur, ajoutez `.*` au préfixe du serveur. Le `.*` est requis : un matcher comme `mcp__memory` contient uniquement des lettres et des traits de soulignement, donc il est comparé comme une chaîne exacte et ne correspond à aucun outil.

248 

249* `mcp__memory__.*` correspond à tous les outils du serveur `memory`

250* `mcp__.*__write.*` correspond à tout outil dont le nom commence par `write` de n'importe quel serveur

251 

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

253 

254```json theme={null}

255{

256 "hooks": {

257 "PreToolUse": [

258 {

259 "matcher": "mcp__memory__.*",

260 "hooks": [

261 {

262 "type": "command",

263 "command": "echo 'Memory operation initiated' >> ~/mcp-operations.log"

264 }

265 ]

266 },

267 {

268 "matcher": "mcp__.*__write.*",

269 "hooks": [

270 {

271 "type": "command",

272 "command": "/home/user/scripts/validate-mcp-write.py"

273 }

274 ]

275 }

276 ]

277 }

278}

279```

280 

281### Champs du gestionnaire de hook

282 

283Chaque objet du tableau `hooks` interne est un gestionnaire de hook : la commande shell, le point de terminaison HTTP, l'outil MCP, le prompt LLM ou l'agent qui s'exécute lorsque le matcher correspond. Il y a cinq types :

284 

285* **[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.

286* **[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.

287* **[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.

288* **[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).

289* **[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).

290 

291#### Champs communs

292 

293Ces champs s'appliquent à tous les types de hooks :

294 

295| Champ | Requis | Description |

296| :-------------- | :----- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

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

298| `if` | non | Syntaxe de règle de permission pour filtrer quand ce hook s'exécute, comme `"Bash(git *)"` ou `"Edit(*.ts)"`. Le hook ne s'exécute que si l'appel d'outil correspond au modèle, ou si une commande Bash est trop complexe à analyser. É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) |

299| `timeout` | non | Secondes avant annulation. Valeurs par défaut : 600 pour command, 30 pour prompt, 60 pour agent |

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

301| `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 |

302 

303Le champ `if` contient exactement une règle de permission. Il n'y a pas de syntaxe `&&`, `||` ou de liste pour combiner les règles ; pour appliquer plusieurs conditions, définissez un gestionnaire de hook séparé pour chacune. Pour Bash, la règle est comparée à chaque sous-commande de l'entrée de l'outil après suppression des affectations `VAR=value` en début, donc `if: "Bash(git push *)"` correspond à la fois à `FOO=bar git push` et à `npm test && git push`. Le hook s'exécute si une sous-commande correspond, et s'exécute toujours lorsque la commande est trop complexe à analyser.

304 

305#### Champs des hooks de commande

306 

307En plus des [champs communs](#common-fields), les hooks de commande acceptent ces champs :

308 

309| Champ | Requis | Description |

310| :------------ | :----- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

311| `command` | oui | Commande shell à exécuter |

312| `async` | non | Si `true`, s'exécute en arrière-plan sans bloquer. Consultez [Exécuter les hooks en arrière-plan](#run-hooks-in-the-background) |

313| `asyncRewake` | non | Si `true`, s'exécute en arrière-plan et réveille Claude au code de sortie 2. Implique `async`. Le stderr du hook, ou stdout s'il est vide, est affiché à Claude comme un rappel système afin qu'il puisse réagir à un échec en arrière-plan de longue durée |

314| `shell` | non | Shell à utiliser pour ce hook. Accepte `"bash"` (par défaut) ou `"powershell"`. Définir `"powershell"` exécute la commande via PowerShell sur Windows. Ne nécessite pas `CLAUDE_CODE_USE_POWERSHELL_TOOL` puisque les hooks lancent PowerShell directement |

315 

316#### Champs des hooks HTTP

317 

318En plus des [champs communs](#common-fields), les hooks HTTP acceptent ces champs :

319 

320| Champ | Requis | Description |

321| :--------------- | :----- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

322| `url` | oui | URL vers laquelle envoyer la requête POST |

323| `headers` | non | En-têtes HTTP supplémentaires sous forme de paires clé-valeur. Les valeurs supportent l'interpolation de variables d'environnement en utilisant la syntaxe `$VAR_NAME` ou `${VAR_NAME}`. Seules les variables listées dans `allowedEnvVars` sont résolues |

324| `allowedEnvVars` | non | Liste des noms de variables d'environnement qui peuvent être interpolés dans les valeurs d'en-tête. Les références aux variables non listées sont remplacées par des chaînes vides. Requis pour que l'interpolation de variables d'environnement fonctionne |

325 

326Claude Code envoie l'[entrée JSON](#hook-input-and-output) du hook en tant que corps de la requête POST avec `Content-Type: application/json`. Le corps de la réponse utilise le même [format de sortie JSON](#json-output) que les hooks de commande.

327 

328La gestion des erreurs diffère des hooks de commande : les réponses non-2xx, les défaillances de connexion et les délais d'expiration produisent tous des erreurs non-bloquantes qui permettent à l'exécution de continuer. Pour bloquer un appel d'outil ou refuser une permission, retournez une réponse 2xx avec un corps JSON contenant `decision: "block"` ou un `hookSpecificOutput` avec `permissionDecision: "deny"`.

329 

330Cet exemple envoie les événements `PreToolUse` à un service de validation local, en s'authentifiant avec un token de la variable d'environnement `MY_TOKEN` :

331 

332```json theme={null}

333{

334 "hooks": {

335 "PreToolUse": [

336 {

337 "matcher": "Bash",

338 "hooks": [

339 {

340 "type": "http",

341 "url": "http://localhost:8080/hooks/pre-tool-use",

342 "timeout": 30,

343 "headers": {

344 "Authorization": "Bearer $MY_TOKEN"

345 },

346 "allowedEnvVars": ["MY_TOKEN"]

347 }

348 ]

349 }

350 ]

351 }

352}

353```

354 

355#### Champs des hooks de l'outil MCP

356 

357En plus des [champs communs](#common-fields), les hooks de l'outil MCP acceptent ces champs :

358 

359| Champ | Requis | Description |

360| :------- | :----- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

361| `server` | oui | Nom d'un serveur MCP configuré. Le serveur doit déjà être connecté ; le hook ne déclenche jamais un flux OAuth ou de connexion |

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

363| `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}"` |

364 

365La sortie textuelle de l'outil est traitée comme stdout d'un hook de commande : si elle s'analyse comme une [sortie JSON](#json-output) valide, elle est traitée comme une décision, sinon elle est affichée en tant que texte brut. Si le serveur nommé n'est pas connecté, ou si l'outil retourne `isError: true`, le hook produit une erreur non-bloquante et l'exécution continue.

366 

367Les hooks de l'outil MCP sont disponibles sur chaque événement de hook une fois que Claude Code s'est connecté à vos serveurs MCP. `SessionStart` et `Setup` se déclenchent généralement avant que les serveurs ne finissent de se connecter, donc les hooks sur ces événements doivent s'attendre à l'erreur « non connecté » à la première exécution.

368 

369Cet exemple appelle l'outil `security_scan` sur le serveur MCP `my_server` après chaque `Write` ou `Edit`, en passant le chemin du fichier édité :

370 

371```json theme={null}

372{

373 "hooks": {

374 "PostToolUse": [

375 {

376 "matcher": "Write|Edit",

377 "hooks": [

378 {

379 "type": "mcp_tool",

380 "server": "my_server",

381 "tool": "security_scan",

382 "input": { "file_path": "${tool_input.file_path}" }

383 }

384 ]

385 }

386 ]

387 }

388}

389```

390 

391#### Champs des hooks de prompt et d'agent

392 

393En plus des [champs communs](#common-fields), les hooks de prompt et d'agent acceptent ces champs :

394 

395| Champ | Requis | Description |

396| :------- | :----- | :------------------------------------------------------------------------------------------------------ |

397| `prompt` | oui | Texte du prompt à envoyer au modèle. Utilisez `$ARGUMENTS` comme placeholder pour l'entrée JSON du hook |

398| `model` | non | Modèle à utiliser pour l'évaluation. Par défaut un modèle rapide |

399 

400Tous 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 les hooks HTTP sont dédupliqués par URL. Les 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.

401 

402### Référencer les scripts par chemin

403 

404Utilisez les variables d'environnement 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 :

405 

406* `$CLAUDE_PROJECT_DIR` : la racine du projet. Enveloppez entre guillemets pour gérer les chemins avec des espaces.

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

408* `${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.

409 

410<Tabs>

411 <Tab title="Scripts de projet">

412 Cet exemple utilise `$CLAUDE_PROJECT_DIR` pour exécuter un vérificateur de style à partir du répertoire `.claude/hooks/` du projet après tout appel d'outil `Write` ou `Edit` :

413 

414 ```json theme={null}

415 {

416 "hooks": {

417 "PostToolUse": [

418 {

419 "matcher": "Write|Edit",

420 "hooks": [

421 {

422 "type": "command",

423 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/check-style.sh"

424 }

425 ]

426 }

427 ]

428 }

429 }

430 ```

431 </Tab>

432 

433 <Tab title="Scripts de plugin">

434 Définissez les hooks de plugin dans `hooks/hooks.json` avec un champ `description` optionnel au niveau supérieur. Lorsqu'un plugin est activé, ses hooks fusionnent avec vos hooks utilisateur et projet.

435 

436 Cet exemple exécute un script de formatage fourni avec le plugin :

437 

438 ```json theme={null}

439 {

440 "description": "Automatic code formatting",

441 "hooks": {

442 "PostToolUse": [

443 {

444 "matcher": "Write|Edit",

445 "hooks": [

446 {

447 "type": "command",

448 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/format.sh",

449 "timeout": 30

450 }

451 ]

452 }

453 ]

454 }

455 }

456 ```

457 

458 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.

459 </Tab>

460</Tabs>

461 

462### Hooks dans les skills et agents

463 

464En 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.

465 

466Tous 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.

467 

468Les hooks utilisent le même format de configuration que les hooks basés sur les paramètres mais sont limités à la durée de vie du composant et nettoyés lorsqu'il se termine.

469 

470Ce skill définit un hook `PreToolUse` qui exécute un script de validation de sécurité avant chaque commande `Bash` :

471 

472```yaml theme={null}

473---

474name: secure-operations

475description: Perform operations with security checks

476hooks:

477 PreToolUse:

478 - matcher: "Bash"

479 hooks:

480 - type: command

481 command: "./scripts/security-check.sh"

482---

483```

484 

485Les agents utilisent le même format dans leur frontmatter YAML.

486 

487### Le menu `/hooks`

488 

489Tapez `/hooks` dans Claude Code pour ouvrir un navigateur en lecture seule pour vos hooks configurés. Le menu affiche chaque événement de hook avec un nombre de hooks configurés, vous permet d'explorer les matchers et affiche les détails complets de chaque gestionnaire de hook. Utilisez-le pour vérifier la configuration, vérifier à partir de quel fichier de paramètres un hook provient ou inspecter la commande, le prompt ou l'URL d'un hook.

490 

491Le menu affiche les cinq types de hooks : `command`, `prompt`, `agent`, `http` et `mcp_tool`. Chaque hook est étiqueté avec un préfixe `[type]` et une source indiquant où il a été défini :

492 

493* `User` : de `~/.claude/settings.json`

494* `Project` : de `.claude/settings.json`

495* `Local` : de `.claude/settings.local.json`

496* `Plugin` : du `hooks/hooks.json` d'un plugin

497* `Session` : enregistré en mémoire pour la session actuelle

498* `Built-in` : enregistré en interne par Claude Code

499 

500Sélectionner un hook ouvre une vue détaillée affichant son événement, son matcher, son type, son fichier source et la commande, le prompt ou l'URL complet. Le menu est en lecture seule : pour ajouter, modifier ou supprimer des hooks, éditez directement le JSON des paramètres ou demandez à Claude de faire la modification.

501 

502### Désactiver ou supprimer les hooks

503 

504Pour supprimer un hook, supprimez son entrée du fichier de paramètres JSON.

505 

506Pour désactiver temporairement tous les hooks sans les supprimer, définissez `"disableAllHooks": true` dans votre fichier de paramètres. Il n'y a aucun moyen de désactiver un hook individuel tout en le gardant dans la configuration.

507 

508Le paramètre `disableAllHooks` respecte la hiérarchie des paramètres gérés. Si un administrateur a configuré des hooks via les paramètres de politique gérée, `disableAllHooks` défini dans les paramètres utilisateur, projet ou local ne peut pas désactiver ces hooks gérés. Seul `disableAllHooks` défini au niveau des paramètres gérés peut désactiver les hooks gérés.

509 

510Les éditions directes des hooks dans les fichiers de paramètres sont normalement détectées automatiquement par le moniteur de fichiers.

511 

512## Entrée et sortie des hooks

513 

514Les hooks de commande reçoivent les données JSON via stdin et communiquent les résultats via les codes de sortie, stdout et stderr. Les hooks HTTP reçoivent le même JSON que le corps de la requête POST et communiquent les résultats via le corps de la réponse HTTP. Cette section couvre les champs et le comportement communs à tous les événements. Chaque section d'événement sous [Événements de hook](#hook-events) inclut son schéma d'entrée spécifique et les options de contrôle de décision.

515 

516### Champs d'entrée communs

517 

518Les événements de hook reçoivent ces champs en JSON, en plus des champs spécifiques à l'événement documentés dans chaque section [événement de hook](#hook-events). Pour les hooks de commande, ce JSON arrive via stdin. Pour les hooks HTTP, il arrive dans le corps de la requête POST.

519 

520| Champ | Description |

521| :---------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

522| `session_id` | Identifiant de session actuel |

523| `transcript_path` | Chemin vers le JSON de conversation |

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

525| `permission_mode` | [Mode de permission](/fr/permissions#permission-modes) actuel : `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, `"dontAsk"` ou `"bypassPermissions"`. Tous les événements ne reçoivent pas ce champ : consultez l'exemple JSON de chaque événement ci-dessous pour vérifier |

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

527 

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

529 

530| Champ | Description |

531| :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

532| `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. |

533| `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. |

534 

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

536 

537```json theme={null}

538{

539 "session_id": "abc123",

540 "transcript_path": "/home/user/.claude/projects/.../transcript.jsonl",

541 "cwd": "/home/user/my-project",

542 "permission_mode": "default",

543 "hook_event_name": "PreToolUse",

544 "tool_name": "Bash",

545 "tool_input": {

546 "command": "npm test"

547 }

548}

549```

550 

551Les champs `tool_name` et `tool_input` sont spécifiques à l'événement. Chaque section [événement de hook](#hook-events) documente les champs supplémentaires pour cet événement.

552 

553### Sortie du code de sortie

554 

555Le code de sortie de votre commande de hook indique à Claude Code si l'action doit procéder, être bloquée ou être ignorée.

556 

557**Exit 0** signifie succès. Claude Code analyse stdout pour les [champs de sortie JSON](#json-output). La sortie JSON n'est traitée que sur exit 0. Pour la plupart des événements, stdout est écrit dans le journal de débogage mais n'est pas affiché dans la transcription. Les exceptions sont `UserPromptSubmit`, `UserPromptExpansion` et `SessionStart`, où stdout est ajouté comme contexte que Claude peut voir et sur lequel agir.

558 

559**Exit 2** signifie une erreur bloquante. Claude Code ignore stdout et tout JSON qu'il contient. À la place, le texte stderr est renvoyé à Claude comme message d'erreur. L'effet dépend de l'événement : `PreToolUse` bloque l'appel d'outil, `UserPromptSubmit` rejette le prompt, et ainsi de suite. Consultez [comportement du code de sortie 2](#exit-code-2-behavior-per-event) pour la liste complète.

560 

561**Tout autre code de sortie** est une erreur non-bloquante pour la plupart des événements de hook. La transcription affiche un avis `<hook name> hook error` suivi de la première ligne de stderr, afin que vous puissiez identifier la cause sans `--debug`. L'exécution continue et le stderr complet est écrit dans le journal de débogage.

562 

563Par exemple, un script de commande de hook qui bloque les commandes Bash dangereuses :

564 

565```bash theme={null}

566#!/bin/bash

567# Lit l'entrée JSON depuis stdin, vérifie la commande

568command=$(jq -r '.tool_input.command' < /dev/stdin)

569 

570if [[ "$command" == rm* ]]; then

571 echo "Blocked: rm commands are not allowed" >&2

572 exit 2 # Erreur bloquante : l'appel d'outil est empêché

573fi

574 

575exit 0 # Succès : l'appel d'outil procède

576```

577 

578<Warning>

579 Pour la plupart des événements de hook, seul le code de sortie 2 bloque l'action. Claude Code traite le code de sortie 1 comme une erreur non-bloquante et procède avec l'action, même si 1 est le code d'échec Unix conventionnel. Si votre hook est destiné à appliquer une politique, utilisez `exit 2`. L'exception est `WorktreeCreate`, où tout code de sortie non-zéro abandonne la création du worktree.

580</Warning>

581 

582#### Comportement du code de sortie 2 par événement

583 

584Le code de sortie 2 est la façon dont un hook signale « arrêtez, ne faites pas cela ». L'effet dépend de l'événement, car certains événements représentent des actions qui peuvent être bloquées (comme un appel d'outil qui ne s'est pas encore produit) et d'autres représentent des choses qui se sont déjà produites ou ne peuvent pas être empêchées.

585 

586| Événement de hook | Peut bloquer ? | Ce qui se passe sur exit 2 |

587| :-------------------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- |

588| `PreToolUse` | Oui | Bloque l'appel d'outil |

589| `PermissionRequest` | Oui | Refuse la permission |

590| `UserPromptSubmit` | Oui | Bloque le traitement du prompt et efface le prompt |

591| `UserPromptExpansion` | Oui | Bloque l'expansion |

592| `Stop` | Oui | Empêche Claude de s'arrêter, continue la conversation |

593| `SubagentStop` | Oui | Empêche le subagent de s'arrêter |

594| `TeammateIdle` | Oui | Empêche le coéquipier de devenir inactif (le coéquipier continue de travailler) |

595| `TaskCreated` | Oui | Annule la création de la tâche |

596| `TaskCompleted` | Oui | Empêche la tâche d'être marquée comme complétée |

597| `ConfigChange` | Oui | Bloque la modification de configuration de prendre effet (sauf `policy_settings`) |

598| `StopFailure` | Non | La sortie et le code de sortie sont ignorés |

599| `PostToolUse` | Non | Affiche stderr à Claude (l'outil a déjà s'exécuté) |

600| `PostToolUseFailure` | Non | Affiche stderr à Claude (l'outil a déjà échoué) |

601| `PostToolBatch` | Oui | Arrête la boucle agentique avant l'appel du modèle suivant |

602| `PermissionDenied` | Non | Le code de sortie et stderr sont ignorés (refus déjà survenu). Utilisez JSON `hookSpecificOutput.retry: true` pour indiquer au modèle qu'il peut réessayer |

603| `Notification` | Non | Affiche stderr à l'utilisateur uniquement |

604| `SubagentStart` | Non | Affiche stderr à l'utilisateur uniquement |

605| `SessionStart` | Non | Affiche stderr à l'utilisateur uniquement |

606| `Setup` | Non | Affiche stderr à l'utilisateur uniquement |

607| `SessionEnd` | Non | Affiche stderr à l'utilisateur uniquement |

608| `CwdChanged` | Non | Affiche stderr à l'utilisateur uniquement |

609| `FileChanged` | Non | Affiche stderr à l'utilisateur uniquement |

610| `PreCompact` | Oui | Bloque la compaction |

611| `PostCompact` | Non | Affiche stderr à l'utilisateur uniquement |

612| `Elicitation` | Oui | Refuse l'élicitation |

613| `ElicitationResult` | Oui | Bloque la réponse (l'action devient decline) |

614| `WorktreeCreate` | Oui | Tout code de sortie non-zéro provoque l'échec de la création du worktree |

615| `WorktreeRemove` | Non | Les défaillances sont enregistrées en mode debug uniquement |

616| `InstructionsLoaded` | Non | Le code de sortie est ignoré |

617 

618### Gestion des réponses HTTP

619 

620Les hooks HTTP utilisent les codes de statut HTTP et les corps de réponse au lieu des codes de sortie et stdout :

621 

622* **2xx avec un corps vide** : succès, équivalent à exit code 0 sans sortie

623* **2xx avec un corps en texte brut** : succès, le texte est ajouté comme contexte

624* **2xx avec un corps JSON** : succès, analysé en utilisant le même schéma [sortie JSON](#json-output) que les hooks de commande

625* **Statut non-2xx** : erreur non-bloquante, l'exécution continue

626* **Défaillance de connexion ou délai d'expiration** : erreur non-bloquante, l'exécution continue

627 

628Contrairement aux hooks de commande, les hooks HTTP ne peuvent pas signaler une erreur bloquante uniquement via les codes de statut. Pour bloquer un appel d'outil ou refuser une permission, retournez une réponse 2xx avec un corps JSON contenant les champs de décision appropriés.

629 

630### Sortie JSON

631 

632Les codes de sortie vous permettent d'autoriser ou de bloquer, mais la sortie JSON vous donne un contrôle plus granulaire. Au lieu de quitter avec le code 2 pour bloquer, quittez 0 et imprimez un objet JSON sur stdout. Claude Code lit les champs spécifiques de ce JSON pour contrôler le comportement, y compris [contrôle de décision](#decision-control) pour bloquer, autoriser ou escalader à l'utilisateur.

633 

634<Note>

635 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é.

636</Note>

637 

638La 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.

639 

640La sortie du hook injectée dans le contexte (`additionalContext`, `systemMessage` ou stdout brut) est plafonnée à 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.

641 

642L'objet JSON supporte trois types de champs :

643 

644* **Champs universels** comme `continue` fonctionnent sur tous les événements. Ceux-ci sont listés dans le tableau ci-dessous.

645* **`decision` et `reason` au niveau supérieur** sont utilisés par certains événements pour bloquer ou fournir des commentaires.

646* **`hookSpecificOutput`** est un objet imbriqué pour les événements qui ont besoin d'un contrôle plus riche. Il nécessite un champ `hookEventName` défini au nom de l'événement.

647 

648| Champ | Par défaut | Description |

649| :--------------- | :--------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- |

650| `continue` | `true` | Si `false`, Claude arrête complètement le traitement après l'exécution du hook. Prend précédence sur tous les champs de décision spécifiques à l'événement |

651| `stopReason` | aucun | Message affiché à l'utilisateur lorsque `continue` est `false`. Non affiché à Claude |

652| `suppressOutput` | `false` | Si `true`, masque stdout de la sortie du journal de débogage |

653| `systemMessage` | aucun | Message d'avertissement affiché à l'utilisateur |

654 

655Pour arrêter Claude entièrement indépendamment du type d'événement :

656 

657```json theme={null}

658{ "continue": false, "stopReason": "Build failed, fix errors before continuing" }

659```

660 

661#### Ajouter du contexte pour Claude

662 

663Le champ `additionalContext` transmet une chaîne de votre hook dans la fenêtre de contexte de Claude. Claude Code enveloppe la chaîne dans un rappel système et l'insère dans la conversation au point où le hook s'est déclenché. Claude lit le rappel lors de la prochaine demande du modèle, mais il n'apparaît pas comme un message de chat dans l'interface.

664 

665Retournez `additionalContext` à l'intérieur de `hookSpecificOutput` aux côtés du nom de l'événement :

666 

667```json theme={null}

668{

669 "hookSpecificOutput": {

670 "hookEventName": "PostToolUse",

671 "additionalContext": "This file is generated. Edit src/schema.ts and run `bun generate` instead."

672 }

673}

674```

675 

676L'endroit où le rappel apparaît dépend de l'événement :

677 

678* [SessionStart](#sessionstart), [Setup](#setup) et [SubagentStart](#subagentstart) : au début de la conversation, avant le premier prompt

679* [UserPromptSubmit](#userpromptsubmit) et [UserPromptExpansion](#userpromptexpansion) : aux côtés du prompt soumis

680* [PreToolUse](#pretooluse), [PostToolUse](#posttooluse), [PostToolUseFailure](#posttoolusefailure) et [PostToolBatch](#posttoolbatch) : à côté du résultat de l'outil

681 

682Lorsque plusieurs hooks retournent `additionalContext` pour le même événement, Claude reçoit toutes les valeurs. Si une valeur dépasse 10 000 caractères, Claude Code écrit le texte complet dans un fichier du répertoire de session et transmet à Claude le chemin du fichier avec un court aperçu à la place.

683 

684Utilisez `additionalContext` pour les informations que Claude devrait connaître sur l'état actuel de votre environnement ou l'opération qui vient de s'exécuter :

685 

686* **État de l'environnement** : la branche actuelle, la cible de déploiement ou les drapeaux de fonctionnalité actifs

687* **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

688* **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

689 

690Pour 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.

691 

692É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.

693 

694Une fois injecté, le texte est enregistré dans la transcription de session. Pour les événements mid-session comme `PostToolUse` ou `UserPromptSubmit`, la reprise avec `--continue` ou `--resume` rejoue le texte enregistré plutôt que de réexécuter le hook pour les tours passés, de sorte que les valeurs comme les horodatages ou les SHA de commit deviennent obsolètes à la reprise. Les hooks `SessionStart` s'exécutent à nouveau à la reprise avec `source` défini sur `"resume"`, afin qu'ils puissent actualiser leur contexte.

695 

696#### Contrôle de décision

697 

698Tous les événements ne supportent pas le blocage ou le contrôle du comportement via JSON. Les événements qui le font utilisent chacun un ensemble différent de champs pour exprimer cette décision. Utilisez ce tableau comme référence rapide avant d'écrire un hook :

699 

700| Événements | Modèle de décision | Champs clés |

701| :---------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

702| UserPromptSubmit, UserPromptExpansion, PostToolUse, PostToolUseFailure, PostToolBatch, Stop, SubagentStop, ConfigChange, PreCompact | `decision` au niveau supérieur | `decision: "block"`, `reason` |

703| TeammateIdle, TaskCreated, TaskCompleted | Code de sortie ou `continue: false` | Le code de sortie 2 bloque l'action avec commentaires stderr. JSON `{"continue": false, "stopReason": "..."}` arrête également complètement le coéquipier, correspondant au comportement du hook `Stop` |

704| PreToolUse | `hookSpecificOutput` | `permissionDecision` (allow/deny/ask/defer), `permissionDecisionReason` |

705| PermissionRequest | `hookSpecificOutput` | `decision.behavior` (allow/deny) |

706| PermissionDenied | `hookSpecificOutput` | `retry: true` indique au modèle qu'il peut réessayer l'appel d'outil refusé |

707| WorktreeCreate | retour de chemin | Le hook de commande imprime le chemin sur stdout ; le hook HTTP retourne `hookSpecificOutput.worktreePath`. L'échec du hook ou l'absence de chemin échoue la création |

708| Elicitation | `hookSpecificOutput` | `action` (accept/decline/cancel), `content` (valeurs des champs de formulaire pour accept) |

709| ElicitationResult | `hookSpecificOutput` | `action` (accept/decline/cancel), `content` (valeurs des champs de formulaire override) |

710| WorktreeRemove, Notification, SessionEnd, PostCompact, InstructionsLoaded, StopFailure, CwdChanged, FileChanged | Aucun | Pas de contrôle de décision. Utilisé pour les effets secondaires comme la journalisation ou le nettoyage |

711 

712Voici des exemples de chaque modèle en action :

713 

714<Tabs>

715 <Tab title="Décision au niveau supérieur">

716 Utilisé par `UserPromptSubmit`, `UserPromptExpansion`, `PostToolUse`, `PostToolUseFailure`, `PostToolBatch`, `Stop`, `SubagentStop`, `ConfigChange` et `PreCompact`. La seule valeur est `"block"`. Pour autoriser l'action à procéder, omettez `decision` de votre JSON ou quittez 0 sans aucun JSON :

717 

718 ```json theme={null}

719 {

720 "decision": "block",

721 "reason": "Test suite must pass before proceeding"

722 }

723 ```

724 </Tab>

725 

726 <Tab title="PreToolUse">

727 Utilise `hookSpecificOutput` pour un contrôle plus riche : autoriser, refuser, ou escalader à l'utilisateur. Vous pouvez également modifier l'entrée de l'outil avant son exécution ou injecter du contexte supplémentaire pour Claude. Consultez [Contrôle de décision PreToolUse](#pretooluse-decision-control) pour l'ensemble complet des options.

728 

729 ```json theme={null}

730 {

731 "hookSpecificOutput": {

732 "hookEventName": "PreToolUse",

733 "permissionDecision": "deny",

734 "permissionDecisionReason": "Database writes are not allowed"

735 }

736 }

737 ```

738 </Tab>

739 

740 <Tab title="PermissionRequest">

741 Utilise `hookSpecificOutput` pour autoriser ou refuser une demande de permission au nom de l'utilisateur. Lors de l'autorisation, vous pouvez également modifier l'entrée de l'outil ou appliquer des règles de permission afin que l'utilisateur ne soit pas invité à nouveau. Consultez [Contrôle de décision PermissionRequest](#permissionrequest-decision-control) pour l'ensemble complet des options.

742 

743 ```json theme={null}

744 {

745 "hookSpecificOutput": {

746 "hookEventName": "PermissionRequest",

747 "decision": {

748 "behavior": "allow",

749 "updatedInput": {

750 "command": "npm run lint"

751 }

752 }

753 }

754 }

755 ```

756 </Tab>

757</Tabs>

758 

759Pour 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).

760 

761## Événements de hook

762 

763Chaque événement correspond à un point du cycle de vie de Claude Code où les hooks peuvent s'exécuter. Les sections ci-dessous sont ordonnées pour correspondre au cycle de vie : de la configuration de session à travers la boucle agentique jusqu'à la fin de session. Chaque section décrit quand l'événement se déclenche, quels matchers il supporte, l'entrée JSON qu'il reçoit et comment contrôler le comportement via la sortie.

764 

765### SessionStart

766 

767S'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.

768 

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

770 

771La valeur du matcher correspond à la façon dont la session a été initiée :

772 

773| Matcher | Quand il se déclenche |

774| :-------- | :------------------------------------ |

775| `startup` | Nouvelle session |

776| `resume` | `--resume`, `--continue` ou `/resume` |

777| `clear` | `/clear` |

778| `compact` | Compaction automatique ou manuelle |

779 

780#### Entrée SessionStart

781 

782En plus des [champs d'entrée communs](#common-input-fields), les hooks SessionStart reçoivent `source`, `model` et optionnellement `agent_type`. Le champ `source` indique comment la session a démarré : `"startup"` pour les nouvelles sessions, `"resume"` pour les sessions reprises, `"clear"` après `/clear` ou `"compact"` après compaction. Le champ `model` contient l'identifiant du modèle. Si vous démarrez Claude Code avec `claude --agent <name>`, un champ `agent_type` contient le nom de l'agent.

783 

784```json theme={null}

785{

786 "session_id": "abc123",

787 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

788 "cwd": "/Users/...",

789 "hook_event_name": "SessionStart",

790 "source": "startup",

791 "model": "claude-sonnet-4-6"

792}

793```

794 

795#### Contrôle de décision SessionStart

796 

797Tout texte que votre script de hook imprime sur stdout est ajouté comme contexte pour Claude. En plus des [champs de sortie JSON](#json-output) disponibles pour tous les hooks, vous pouvez retourner ces champs spécifiques à l'événement :

798 

799| Champ | Description |

800| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

801| `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 |

802 

803```json theme={null}

804{

805 "hookSpecificOutput": {

806 "hookEventName": "SessionStart",

807 "additionalContext": "Current branch: feat/auth-refactor\nUncommitted changes: src/auth.ts, src/login.tsx\nActive issue: #4211 Migrate to OAuth2"

808 }

809}

810```

811 

812Puisque le stdout brut atteint déjà Claude pour cet événement, un hook qui charge uniquement du contexte peut imprimer sur stdout directement sans construire JSON. Utilisez le formulaire JSON lorsque vous avez besoin de combiner le contexte avec d'autres champs tels que `suppressOutput`.

813 

814#### Persister les variables d'environnement

815 

816Les hooks SessionStart ont accès à la variable d'environnement `CLAUDE_ENV_FILE`, qui fournit un chemin de fichier où vous pouvez persister les variables d'environnement pour les commandes Bash suivantes.

817 

818Pour définir des variables d'environnement individuelles, écrivez des déclarations `export` dans `CLAUDE_ENV_FILE`. Utilisez l'ajout (`>>`) pour préserver les variables définies par d'autres hooks :

819 

820```bash theme={null}

821#!/bin/bash

822 

823if [ -n "$CLAUDE_ENV_FILE" ]; then

824 echo 'export NODE_ENV=production' >> "$CLAUDE_ENV_FILE"

825 echo 'export DEBUG_LOG=true' >> "$CLAUDE_ENV_FILE"

826 echo 'export PATH="$PATH:./node_modules/.bin"' >> "$CLAUDE_ENV_FILE"

827fi

828 

829exit 0

830```

831 

832Pour capturer tous les changements d'environnement à partir des commandes de configuration, comparez les variables exportées avant et après :

833 

834```bash theme={null}

835#!/bin/bash

836 

837ENV_BEFORE=$(export -p | sort)

838 

839# Exécutez vos commandes de configuration qui modifient l'environnement

840source ~/.nvm/nvm.sh

841nvm use 20

842 

843if [ -n "$CLAUDE_ENV_FILE" ]; then

844 ENV_AFTER=$(export -p | sort)

845 comm -13 <(echo "$ENV_BEFORE") <(echo "$ENV_AFTER") >> "$CLAUDE_ENV_FILE"

846fi

847 

848exit 0

849```

850 

851Toutes les variables écrites dans ce fichier seront disponibles dans toutes les commandes Bash suivantes que Claude Code exécute pendant la session.

852 

853<Note>

854 `CLAUDE_ENV_FILE` est disponible pour les hooks SessionStart, [Setup](#setup), [CwdChanged](#cwdchanged) et [FileChanged](#filechanged). Les autres types de hooks n'ont pas accès à cette variable.

855</Note>

856 

857### Setup

858 

859Se déclenche uniquement lorsque vous lancez Claude Code avec `--init-only`, ou avec `--init` ou `--maintenance` en mode impression (`-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.

860 

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

862 

863| Matcher | Quand il se déclenche |

864| :------------ | :----------------------------------------- |

865| `init` | `claude --init-only` ou `claude -p --init` |

866| `maintenance` | `claude -p --maintenance` |

867 

868`--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` (mode impression) ; dans une session interactive, ces deux drapeaux ne déclenchent actuellement pas les hooks Setup.

869 

870Parce 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.

871 

872#### Entrée Setup

873 

874En plus des [champs d'entrée communs](#common-input-fields), les hooks Setup reçoivent un champ `trigger` défini à `"init"` ou `"maintenance"` :

875 

876```json theme={null}

877{

878 "session_id": "abc123",

879 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

880 "cwd": "/Users/...",

881 "hook_event_name": "Setup",

882 "trigger": "init"

883}

884```

885 

886#### Contrôle de décision Setup

887 

888Les hooks Setup ne peuvent pas bloquer. Sur le code de sortie 2, stderr est affiché à l'utilisateur ; sur tout autre code de sortie non-zéro, stderr n'apparaît que lorsque vous lancez avec `--verbose`. Dans les deux cas, l'exécution continue. Pour 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 :

889 

890| Champ | Description |

891| :------------------ | :------------------------------------------------------------------------------------ |

892| `additionalContext` | Chaîne ajoutée au contexte de Claude. Les valeurs de plusieurs hooks sont concaténées |

893 

894```json theme={null}

895{

896 "hookSpecificOutput": {

897 "hookEventName": "Setup",

898 "additionalContext": "Dependencies installed: node_modules, .venv"

899 }

900}

901```

902 

903Les hooks Setup ont accès à `CLAUDE_ENV_FILE`. Les variables écrites dans ce fichier persistent dans les commandes Bash suivantes pour la session, tout comme dans les [hooks SessionStart](#persist-environment-variables). Seuls les hooks `type: "command"` et `type: "mcp_tool"` sont supportés.

904 

905### InstructionsLoaded

906 

907Se déclenche lorsqu'un fichier `CLAUDE.md` ou `.claude/rules/*.md` est chargé dans le contexte. Cet événement se déclenche au démarrage de la session pour les fichiers chargés avec impatience et à nouveau plus tard lorsque les fichiers sont chargés avec paresse, par exemple lorsque Claude accède à un sous-répertoire qui contient un `CLAUDE.md` imbriqué ou lorsque les règles conditionnelles avec le frontmatter `paths:` correspondent. Le hook ne supporte pas le blocage ou le contrôle de décision. Il s'exécute de manière asynchrone à des fins d'observabilité.

908 

909Le matcher s'exécute sur `load_reason`. Par exemple, utilisez `"matcher": "session_start"` pour se déclencher uniquement pour les fichiers chargés au démarrage de la session, ou `"matcher": "path_glob_match|nested_traversal"` pour se déclencher uniquement pour les chargements paresseux.

910 

911#### Entrée InstructionsLoaded

912 

913En plus des [champs d'entrée communs](#common-input-fields), les hooks InstructionsLoaded reçoivent ces champs :

914 

915| Champ | Description |

916| :------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

917| `file_path` | Chemin absolu vers le fichier d'instructions qui a été chargé |

918| `memory_type` | Portée du fichier : `"User"`, `"Project"`, `"Local"` ou `"Managed"` |

919| `load_reason` | Pourquoi le fichier a été chargé : `"session_start"`, `"nested_traversal"`, `"path_glob_match"`, `"include"` ou `"compact"`. La valeur `"compact"` se déclenche lorsque les fichiers d'instructions sont rechargés après un événement de compaction |

920| `globs` | Modèles de glob de chemin du frontmatter `paths:` du fichier, le cas échéant. Présent uniquement pour les chargements `path_glob_match` |

921| `trigger_file_path` | Chemin vers le fichier dont l'accès a déclenché ce chargement, pour les chargements paresseux |

922| `parent_file_path` | Chemin vers le fichier d'instructions parent qui a inclus celui-ci, pour les chargements `include` |

923 

924```json theme={null}

925{

926 "session_id": "abc123",

927 "transcript_path": "/Users/.../.claude/projects/.../transcript.jsonl",

928 "cwd": "/Users/my-project",

929 "hook_event_name": "InstructionsLoaded",

930 "file_path": "/Users/my-project/CLAUDE.md",

931 "memory_type": "Project",

932 "load_reason": "session_start"

933}

934```

935 

936#### Contrôle de décision InstructionsLoaded

937 

938Les hooks InstructionsLoaded n'ont pas de contrôle de décision. Ils ne peuvent pas bloquer ou modifier le chargement des instructions. Utilisez cet événement pour la journalisation d'audit, le suivi de conformité ou l'observabilité.

939 

940### UserPromptSubmit

941 

942S'exécute lorsque l'utilisateur soumet un prompt, avant que Claude ne le traite. Cela vous permet d'ajouter du contexte supplémentaire basé sur le prompt/conversation, de valider les prompts ou de bloquer certains types de prompts.

943 

944#### Entrée UserPromptSubmit

945 

946En plus des [champs d'entrée communs](#common-input-fields), les hooks UserPromptSubmit reçoivent le champ `prompt` contenant le texte que l'utilisateur a soumis.

947 

948```json theme={null}

949{

950 "session_id": "abc123",

951 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

952 "cwd": "/Users/...",

953 "permission_mode": "default",

954 "hook_event_name": "UserPromptSubmit",

955 "prompt": "Write a function to calculate the factorial of a number"

956}

957```

958 

959#### Contrôle de décision UserPromptSubmit

960 

961Les hooks `UserPromptSubmit` peuvent contrôler si un prompt utilisateur est traité et ajouter du contexte. Tous les [champs de sortie JSON](#json-output) sont disponibles.

962 

963Il y a deux façons d'ajouter du contexte à la conversation sur exit code 0 :

964 

965* **Stdout en texte brut** : tout texte non-JSON écrit sur stdout est ajouté comme contexte

966* **JSON avec `additionalContext`** : utilisez le format JSON ci-dessous pour plus de contrôle. Le champ `additionalContext` est ajouté comme contexte

967 

968Le stdout brut est affiché comme sortie de hook dans la transcription. Le champ `additionalContext` est ajouté plus discrètement.

969 

970Pour bloquer un prompt, retournez un objet JSON avec `decision` défini à `"block"` :

971 

972| Champ | Description |

973| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------- |

974| `decision` | `"block"` empêche le prompt d'être traité et l'efface du contexte. Omettez pour autoriser le prompt à procéder |

975| `reason` | Affiché à l'utilisateur lorsque `decision` est `"block"`. Non ajouté au contexte |

976| `additionalContext` | Chaîne ajoutée au contexte de Claude aux côtés du prompt soumis. Consultez [Ajouter du contexte pour Claude](#add-context-for-claude) |

977| `sessionTitle` | Définit le titre de la session, même effet que `/rename`. Utilisez pour nommer les sessions automatiquement en fonction du contenu du prompt |

978 

979```json theme={null}

980{

981 "decision": "block",

982 "reason": "Explanation for decision",

983 "hookSpecificOutput": {

984 "hookEventName": "UserPromptSubmit",

985 "additionalContext": "My additional context here",

986 "sessionTitle": "My session title"

987 }

988}

989```

990 

991<Note>

992 Le format JSON n'est pas requis pour les cas simples. Pour ajouter du contexte, vous pouvez imprimer du texte brut sur stdout avec exit code 0. Utilisez JSON lorsque vous avez besoin de bloquer des prompts ou que vous voulez un contrôle plus structuré.

993</Note>

994 

995### UserPromptExpansion

996 

997S'exécute lorsqu'une commande slash tapée par l'utilisateur se développe en un prompt avant d'atteindre Claude. Utilisez ceci pour bloquer des commandes spécifiques de l'invocation directe, injecter du contexte pour une skill particulière ou enregistrer quelles commandes les utilisateurs invoquent. Par exemple, un hook correspondant à `deploy` peut bloquer `/deploy` sauf si un fichier d'approbation est présent, ou un hook correspondant à une skill de révision peut ajouter la liste de contrôle de révision de l'équipe comme `additionalContext`.

998 

999Cet événement couvre le chemin que `PreToolUse` ne couvre pas : un hook `PreToolUse` correspondant à l'outil `Skill` se déclenche uniquement lorsque Claude appelle l'outil, mais taper `/skillname` directement contourne `PreToolUse`. `UserPromptExpansion` se déclenche sur ce chemin direct.

1000 

1001Correspond à `command_name`. Laissez le matcher vide pour se déclencher sur chaque slash command de type prompt.

1002 

1003#### Entrée UserPromptExpansion

1004 

1005En plus des [champs d'entrée communs](#common-input-fields), les hooks UserPromptExpansion reçoivent `expansion_type`, `command_name`, `command_args`, `command_source` et la chaîne `prompt` originale. Le champ `expansion_type` est `slash_command` pour les skills et commandes personnalisées, ou `mcp_prompt` pour les prompts du serveur MCP.

1006 

1007```json theme={null}

1008{

1009 "session_id": "abc123",

1010 "transcript_path": "/Users/.../00893aaf.jsonl",

1011 "cwd": "/Users/...",

1012 "permission_mode": "default",

1013 "hook_event_name": "UserPromptExpansion",

1014 "expansion_type": "slash_command",

1015 "command_name": "example-skill",

1016 "command_args": "arg1 arg2",

1017 "command_source": "plugin",

1018 "prompt": "/example-skill arg1 arg2"

1019}

1020```

1021 

1022#### Contrôle de décision UserPromptExpansion

1023 

1024Les hooks `UserPromptExpansion` peuvent bloquer l'expansion ou ajouter du contexte. Tous les [champs de sortie JSON](#json-output) sont disponibles.

1025 

1026| Champ | Description |

1027| :------------------ | :--------------------------------------------------------------------------------------------------------------------------------------- |

1028| `decision` | `"block"` empêche la slash command de se développer. Omettez pour autoriser sa progression |

1029| `reason` | Affiché à l'utilisateur lorsque `decision` est `"block"` |

1030| `additionalContext` | Chaîne ajoutée au contexte de Claude aux côtés du prompt développé. Consultez [Ajouter du contexte pour Claude](#add-context-for-claude) |

1031 

1032```json theme={null}

1033{

1034 "decision": "block",

1035 "reason": "This slash command is not available",

1036 "hookSpecificOutput": {

1037 "hookEventName": "UserPromptExpansion",

1038 "additionalContext": "Additional context for this expansion"

1039 }

1040}

1041```

1042 

1043### PreToolUse

1044 

1045S'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).

1046 

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

1048 

1049#### Entrée PreToolUse

1050 

1051En plus des [champs d'entrée communs](#common-input-fields), les hooks PreToolUse reçoivent `tool_name`, `tool_input` et `tool_use_id`. Les champs `tool_input` dépendent de l'outil :

1052 

1053##### Bash

1054 

1055Exécute les commandes shell.

1056 

1057| Champ | Type | Exemple | Description |

1058| :------------------ | :------ | :----------------- | :------------------------------------------------- |

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

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

1061| `timeout` | number | `120000` | Délai d'expiration optionnel en millisecondes |

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

1063 

1064##### Write

1065 

1066Crée ou écrase un fichier.

1067 

1068| Champ | Type | Exemple | Description |

1069| :---------- | :----- | :-------------------- | :------------------------------------- |

1070| `file_path` | string | `"/path/to/file.txt"` | Chemin absolu vers le fichier à écrire |

1071| `content` | string | `"file content"` | Contenu à écrire dans le fichier |

1072 

1073##### Edit

1074 

1075Remplace une chaîne dans un fichier existant.

1076 

1077| Champ | Type | Exemple | Description |

1078| :------------ | :------ | :-------------------- | :------------------------------------------------ |

1079| `file_path` | string | `"/path/to/file.txt"` | Chemin absolu vers le fichier à éditer |

1080| `old_string` | string | `"original text"` | Texte à trouver et remplacer |

1081| `new_string` | string | `"replacement text"` | Texte de remplacement |

1082| `replace_all` | boolean | `false` | Si toutes les occurrences doivent être remplacées |

1083 

1084##### Read

1085 

1086Lit le contenu des fichiers.

1087 

1088| Champ | Type | Exemple | Description |

1089| :---------- | :----- | :-------------------- | :------------------------------------------------------------- |

1090| `file_path` | string | `"/path/to/file.txt"` | Chemin absolu vers le fichier à lire |

1091| `offset` | number | `10` | Numéro de ligne optionnel à partir duquel commencer la lecture |

1092| `limit` | number | `50` | Nombre optionnel de lignes à lire |

1093 

1094##### Glob

1095 

1096Trouve les fichiers correspondant à un modèle glob.

1097 

1098| Champ | Type | Exemple | Description |

1099| :-------- | :----- | :--------------- | :----------------------------------------------------------------------------- |

1100| `pattern` | string | `"**/*.ts"` | Modèle glob pour correspondre aux fichiers |

1101| `path` | string | `"/path/to/dir"` | Répertoire optionnel à rechercher. Par défaut le répertoire de travail courant |

1102 

1103##### Grep

1104 

1105Recherche le contenu des fichiers avec des expressions régulières.

1106 

1107| Champ | Type | Exemple | Description |

1108| :------------ | :------ | :--------------- | :---------------------------------------------------------------------------------- |

1109| `pattern` | string | `"TODO.*fix"` | Modèle d'expression régulière à rechercher |

1110| `path` | string | `"/path/to/dir"` | Fichier ou répertoire optionnel à rechercher |

1111| `glob` | string | `"*.ts"` | Modèle glob optionnel pour filtrer les fichiers |

1112| `output_mode` | string | `"content"` | `"content"`, `"files_with_matches"` ou `"count"`. Par défaut `"files_with_matches"` |

1113| `-i` | boolean | `true` | Recherche insensible à la casse |

1114| `multiline` | boolean | `false` | Activer la correspondance multiligne |

1115 

1116##### WebFetch

1117 

1118Récupère et traite le contenu web.

1119 

1120| Champ | Type | Exemple | Description |

1121| :------- | :----- | :---------------------------- | :-------------------------------------------- |

1122| `url` | string | `"https://example.com/api"` | URL à partir de laquelle récupérer le contenu |

1123| `prompt` | string | `"Extract the API endpoints"` | Prompt à exécuter sur le contenu récupéré |

1124 

1125##### WebSearch

1126 

1127Recherche sur le web.

1128 

1129| Champ | Type | Exemple | Description |

1130| :---------------- | :----- | :----------------------------- | :----------------------------------------------------------- |

1131| `query` | string | `"react hooks best practices"` | Requête de recherche |

1132| `allowed_domains` | array | `["docs.example.com"]` | Optionnel : inclure uniquement les résultats de ces domaines |

1133| `blocked_domains` | array | `["spam.example.com"]` | Optionnel : exclure les résultats de ces domaines |

1134 

1135##### Agent

1136 

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

1138 

1139| Champ | Type | Exemple | Description |

1140| :-------------- | :----- | :------------------------- | :------------------------------------------------------------ |

1141| `prompt` | string | `"Find all API endpoints"` | La tâche pour l'agent à effectuer |

1142| `description` | string | `"Find API endpoints"` | Description courte de la tâche |

1143| `subagent_type` | string | `"Explore"` | Type d'agent spécialisé à utiliser |

1144| `model` | string | `"sonnet"` | Alias de modèle optionnel pour remplacer la valeur par défaut |

1145 

1146##### AskUserQuestion

1147 

1148Pose à l'utilisateur une à quatre questions à choix multiples.

1149 

1150| Champ | Type | Exemple | Description |

1151| :---------- | :----- | :----------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1152| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React"}], "multiSelect": false}]` | Questions à présenter, chacune avec une chaîne `question`, un court `header`, un tableau `options` et un drapeau optionnel `multiSelect` |

1153| `answers` | object | `{"Which framework?": "React"}` | Optionnel. Mappe le texte de la question à l'étiquette de l'option sélectionnée. Les réponses multi-sélection joignent les étiquettes avec des virgules. Claude ne définit pas ce champ ; fournissez-le via `updatedInput` pour répondre par programmation |

1154 

1155#### Contrôle de décision PreToolUse

1156 

1157Les hooks `PreToolUse` peuvent contrôler si un appel d'outil procède. Contrairement aux autres hooks qui utilisent un champ `decision` au niveau supérieur, PreToolUse retourne sa décision à l'intérieur d'un objet `hookSpecificOutput`. Cela lui donne un contrôle plus riche : quatre résultats (autoriser, refuser, demander ou différer) plus la capacité de modifier l'entrée de l'outil avant l'exécution.

1158 

1159| Champ | Description |

1160| :------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1161| `permissionDecision` | `"allow"` contourne le système de permission, `"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 |

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

1163| `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é |

1164| `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) |

1165 

1166Lorsque plusieurs hooks PreToolUse retournent des décisions différentes, la précédence est `deny` > `defer` > `ask` > `allow`.

1167 

1168Lorsqu'un hook retourne `"ask"`, le dialogue de permission affiché à l'utilisateur inclut un libellé identifiant d'où provient le hook : par exemple, `[User]`, `[Project]`, `[Plugin]` ou `[Local]`. Cela aide les utilisateurs à comprendre quelle source de configuration demande une confirmation.

1169 

1170```json theme={null}

1171{

1172 "hookSpecificOutput": {

1173 "hookEventName": "PreToolUse",

1174 "permissionDecision": "allow",

1175 "permissionDecisionReason": "My reason here",

1176 "updatedInput": {

1177 "field_to_modify": "new value"

1178 },

1179 "additionalContext": "Current environment: production. Proceed with caution."

1180 }

1181}

1182```

1183 

1184`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.

1185 

1186<Note>

1187 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.

1188</Note>

1189 

1190#### Différer un appel d'outil pour plus tard

1191 

1192`"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.

1193 

1194<Note>

1195 La valeur `defer` nécessite Claude Code v2.1.89 ou ultérieur. Les versions antérieures ne la reconnaissent pas et l'outil procède à travers le flux de permission normal.

1196</Note>

1197 

1198L'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 :

1199 

12001. Claude appelle `AskUserQuestion`. Le hook `PreToolUse` se déclenche.

12012. Le hook retourne `permissionDecision: "defer"`. L'outil ne s'exécute pas. Le processus quitte avec `stop_reason: "tool_deferred"` et l'appel d'outil en attente préservé dans la transcription.

12023. Le processus appelant lit `deferred_tool_use` du résultat SDK, affiche la question dans sa propre interface utilisateur et attend une réponse.

12034. Le processus appelant exécute `claude -p --resume <session-id>`. Le même appel d'outil déclenche `PreToolUse` à nouveau.

12045. Le hook retourne `permissionDecision: "allow"` avec la réponse dans `updatedInput`. L'outil s'exécute et Claude continue.

1205 

1206Le champ `deferred_tool_use` porte l'`id`, le `name` et l'`input` de l'outil. L'`input` est les paramètres que Claude a générés pour l'appel d'outil, capturés avant l'exécution :

1207 

1208```json theme={null}

1209{

1210 "type": "result",

1211 "subtype": "success",

1212 "stop_reason": "tool_deferred",

1213 "session_id": "abc123",

1214 "deferred_tool_use": {

1215 "id": "toolu_01abc",

1216 "name": "AskUserQuestion",

1217 "input": { "questions": [{ "question": "Which framework?", "header": "Framework", "options": [{"label": "React"}, {"label": "Vue"}], "multiSelect": false }] }

1218 }

1219}

1220```

1221 

1222Il 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.

1223 

1224`"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.

1225 

1226Si l'outil différé n'est plus disponible lorsque vous reprenez, le processus quitte avec `stop_reason: "tool_deferred_unavailable"` et `is_error: true` avant que le hook ne se déclenche. Cela se produit lorsqu'un serveur MCP qui a fourni l'outil n'est pas connecté pour la session reprise. La charge utile `deferred_tool_use` est toujours incluse afin que vous puissiez identifier quel outil a disparu.

1227 

1228<Warning>

1229 `--resume` ne restaure pas le mode de permission de la session antérieure. Passez le même drapeau `--permission-mode` lors de la reprise qui était actif lorsque l'outil a été différé. Claude Code enregistre un avertissement si les modes diffèrent.

1230</Warning>

1231 

1232### PermissionRequest

1233 

1234S'exécute lorsque l'utilisateur est montré un dialogue de permission.

1235Utilisez [Contrôle de décision PermissionRequest](#permissionrequest-decision-control) pour autoriser ou refuser au nom de l'utilisateur.

1236 

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

1238 

1239#### Entrée PermissionRequest

1240 

1241Les hooks PermissionRequest reçoivent les champs `tool_name` et `tool_input` comme les hooks PreToolUse, mais sans `tool_use_id`. Un tableau optionnel `permission_suggestions` contient les options « toujours autoriser » que l'utilisateur verrait normalement dans le dialogue de permission. La différence est quand le hook se déclenche : les hooks PermissionRequest s'exécutent lorsqu'un dialogue de permission est sur le point d'être montré à l'utilisateur, tandis que les hooks PreToolUse s'exécutent avant l'exécution de l'outil indépendamment du statut de permission.

1242 

1243```json theme={null}

1244{

1245 "session_id": "abc123",

1246 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1247 "cwd": "/Users/...",

1248 "permission_mode": "default",

1249 "hook_event_name": "PermissionRequest",

1250 "tool_name": "Bash",

1251 "tool_input": {

1252 "command": "rm -rf node_modules",

1253 "description": "Remove node_modules directory"

1254 },

1255 "permission_suggestions": [

1256 {

1257 "type": "addRules",

1258 "rules": [{ "toolName": "Bash", "ruleContent": "rm -rf node_modules" }],

1259 "behavior": "allow",

1260 "destination": "localSettings"

1261 }

1262 ]

1263}

1264```

1265 

1266#### Contrôle de décision PermissionRequest

1267 

1268Les hooks `PermissionRequest` peuvent autoriser ou refuser les demandes de permission. En plus des [champs de sortie JSON](#json-output) disponibles pour tous les hooks, votre script de hook peut retourner un objet `decision` avec ces champs spécifiques à l'événement :

1269 

1270| Champ | Description |

1271| :------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1272| `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 |

1273| `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 |

1274| `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 |

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

1276| `interrupt` | Pour `"deny"` uniquement : si `true`, arrête Claude |

1277 

1278```json theme={null}

1279{

1280 "hookSpecificOutput": {

1281 "hookEventName": "PermissionRequest",

1282 "decision": {

1283 "behavior": "allow",

1284 "updatedInput": {

1285 "command": "npm run lint"

1286 }

1287 }

1288 }

1289}

1290```

1291 

1292#### Entrées de mise à jour de permission

1293 

1294Le champ de sortie `updatedPermissions` et le champ d'[entrée `permission_suggestions`](#permissionrequest-input) utilisent tous deux le même tableau d'objets d'entrée. Chaque entrée a un `type` qui détermine ses autres champs, et une `destination` qui contrôle où la modification est écrite.

1295 

1296| `type` | Champs | Effet |

1297| :------------------ | :--------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1298| `addRules` | `rules`, `behavior`, `destination` | Ajoute des règles de permission. `rules` est un tableau d'objets `{toolName, ruleContent?}`. Omettez `ruleContent` pour correspondre à l'outil entier. `behavior` est `"allow"`, `"deny"` ou `"ask"` |

1299| `replaceRules` | `rules`, `behavior`, `destination` | Remplace toutes les règles du `behavior` donné à la `destination` par les `rules` fournies |

1300| `removeRules` | `rules`, `behavior`, `destination` | Supprime les règles correspondantes du `behavior` donné |

1301| `setMode` | `mode`, `destination` | Change le mode de permission. Les modes valides sont `default`, `acceptEdits`, `dontAsk`, `bypassPermissions` et `plan` |

1302| `addDirectories` | `directories`, `destination` | Ajoute des répertoires de travail. `directories` est un tableau de chaînes de chemin |

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

1304 

1305<Note>

1306 `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`.

1307</Note>

1308 

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

1310 

1311| `destination` | Écrit dans |

1312| :---------------- | :----------------------------------------------------- |

1313| `session` | en mémoire uniquement, supprimé à la fin de la session |

1314| `localSettings` | `.claude/settings.local.json` |

1315| `projectSettings` | `.claude/settings.json` |

1316| `userSettings` | `~/.claude/settings.json` |

1317 

1318Un hook peut renvoyer l'une des `permission_suggestions` qu'il a reçues comme sa propre sortie `updatedPermissions`, ce qui équivaut à l'utilisateur sélectionnant cette option « toujours autoriser » dans le dialogue.

1319 

1320### PostToolUse

1321 

1322S'exécute immédiatement après qu'un outil se termine avec succès.

1323 

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

1325 

1326#### Entrée PostToolUse

1327 

1328Les hooks `PostToolUse` se déclenchent après qu'un outil s'est déjà exécuté avec succès. L'entrée inclut à la fois `tool_input`, les arguments envoyés à l'outil, et `tool_response`, le résultat qu'il a retourné. Le schéma exact pour les deux dépend de l'outil.

1329 

1330```json theme={null}

1331{

1332 "session_id": "abc123",

1333 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1334 "cwd": "/Users/...",

1335 "permission_mode": "default",

1336 "hook_event_name": "PostToolUse",

1337 "tool_name": "Write",

1338 "tool_input": {

1339 "file_path": "/path/to/file.txt",

1340 "content": "file content"

1341 },

1342 "tool_response": {

1343 "filePath": "/path/to/file.txt",

1344 "success": true

1345 },

1346 "tool_use_id": "toolu_01ABC123...",

1347 "duration_ms": 12

1348}

1349```

1350 

1351| Champ | Description |

1352| :------------ | :--------------------------------------------------------------------------------------------------------------------------------------- |

1353| `duration_ms` | Optionnel. Temps d'exécution de l'outil en millisecondes. Exclut le temps passé dans les dialogues de permission et les hooks PreToolUse |

1354 

1355#### Contrôle de décision PostToolUse

1356 

1357Les hooks `PostToolUse` peuvent fournir des commentaires à Claude après l'exécution de l'outil. En plus des [champs de sortie JSON](#json-output) disponibles pour tous les hooks, votre script de hook peut retourner ces champs spécifiques à l'événement :

1358 

1359| Champ | Description |

1360| :--------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------ |

1361| `decision` | `"block"` demande à Claude avec la `reason`. Omettez pour autoriser l'action à procéder |

1362| `reason` | Explication affichée à Claude lorsque `decision` est `"block"` |

1363| `additionalContext` | Chaîne ajoutée au contexte de Claude aux côtés du résultat de l'outil. Consultez [Ajouter du contexte pour Claude](#add-context-for-claude) |

1364| `updatedToolOutput` | Remplace la sortie de l'outil par la valeur fournie avant qu'elle ne soit envoyée à Claude. La valeur doit correspondre à la forme de sortie de l'outil |

1365| `updatedMCPToolOutput` | Remplace la sortie pour les [outils MCP](#match-mcp-tools) uniquement. Préférez `updatedToolOutput`, qui fonctionne pour tous les outils |

1366 

1367L'exemple ci-dessous remplace la sortie d'un appel `Bash`. La valeur de remplacement correspond à la forme de sortie de l'outil `Bash` :

1368 

1369```json theme={null}

1370{

1371 "hookSpecificOutput": {

1372 "hookEventName": "PostToolUse",

1373 "additionalContext": "Additional information for Claude",

1374 "updatedToolOutput": {

1375 "stdout": "[redacted]",

1376 "stderr": "",

1377 "interrupted": false,

1378 "isImage": false

1379 }

1380 }

1381}

1382```

1383 

1384<Warning>

1385 `updatedToolOutput` change uniquement ce que Claude voit. L'outil a déjà fonctionné au moment où le hook se déclenche, donc tous les fichiers écrits, commandes exécutées ou demandes réseau envoyées ont déjà pris effet. La télémétrie telle que les spans d'outils OpenTelemetry et les événements d'analyse capturent également la sortie originale avant l'exécution du hook. Pour empêcher ou modifier un appel d'outil avant son exécution, utilisez un hook [PreToolUse](#pretooluse) à la place.

1386 

1387 La valeur de remplacement doit correspondre à la forme de sortie de l'outil. Les outils intégrés retournent des objets structurés plutôt que des chaînes brutes. Par exemple, `Bash` retourne un objet avec les champs `stdout`, `stderr`, `interrupted` et `isImage`. Pour les outils intégrés, une valeur qui ne correspond pas au schéma de sortie de l'outil est ignorée et la sortie originale est utilisée. La sortie de l'outil MCP est transmise sans validation de schéma. Supprimer les détails d'erreur dont Claude a besoin peut le faire procéder sur une fausse hypothèse.

1388</Warning>

1389 

1390### PostToolUseFailure

1391 

1392S'exécute lorsqu'une exécution d'outil échoue. Cet événement se déclenche pour les appels d'outil qui lèvent des erreurs ou retournent des résultats d'échec. Utilisez ceci pour enregistrer les défaillances, envoyer des alertes ou fournir des commentaires correctifs à Claude.

1393 

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

1395 

1396#### Entrée PostToolUseFailure

1397 

1398Les hooks PostToolUseFailure reçoivent les mêmes champs `tool_name` et `tool_input` que PostToolUse, ainsi que les informations d'erreur comme champs au niveau supérieur :

1399 

1400```json theme={null}

1401{

1402 "session_id": "abc123",

1403 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1404 "cwd": "/Users/...",

1405 "permission_mode": "default",

1406 "hook_event_name": "PostToolUseFailure",

1407 "tool_name": "Bash",

1408 "tool_input": {

1409 "command": "npm test",

1410 "description": "Run test suite"

1411 },

1412 "tool_use_id": "toolu_01ABC123...",

1413 "error": "Command exited with non-zero status code 1",

1414 "is_interrupt": false,

1415 "duration_ms": 4187

1416}

1417```

1418 

1419| Champ | Description |

1420| :------------- | :--------------------------------------------------------------------------------------------------------------------------------------- |

1421| `error` | Chaîne décrivant ce qui s'est mal passé |

1422| `is_interrupt` | Booléen optionnel indiquant si l'échec a été causé par une interruption utilisateur |

1423| `duration_ms` | Optionnel. Temps d'exécution de l'outil en millisecondes. Exclut le temps passé dans les dialogues de permission et les hooks PreToolUse |

1424 

1425#### Contrôle de décision PostToolUseFailure

1426 

1427Les hooks `PostToolUseFailure` peuvent fournir du contexte à Claude après l'échec d'un outil. En plus des [champs de sortie JSON](#json-output) disponibles pour tous les hooks, votre script de hook peut retourner ces champs spécifiques à l'événement :

1428 

1429| Champ | Description |

1430| :------------------ | :------------------------------------------------------------------------------------------------------------------------------- |

1431| `additionalContext` | Chaîne ajoutée au contexte de Claude aux côtés de l'erreur. Consultez [Ajouter du contexte pour Claude](#add-context-for-claude) |

1432 

1433```json theme={null}

1434{

1435 "hookSpecificOutput": {

1436 "hookEventName": "PostToolUseFailure",

1437 "additionalContext": "Additional information about the failure for Claude"

1438 }

1439}

1440```

1441 

1442### PostToolBatch

1443 

1444S'exécute une fois après que chaque appel d'outil dans une batch ait été résolu, avant que Claude Code n'envoie la demande suivante au modèle. `PostToolUse` se déclenche une fois par outil, ce qui signifie qu'il se déclenche simultanément lorsque Claude fait des appels d'outil parallèles. `PostToolBatch` se déclenche exactement une fois avec la batch complète, donc c'est le bon endroit pour injecter du contexte qui dépend de l'ensemble des outils qui ont fonctionné plutôt que sur un seul outil. Il n'y a pas de matcher pour cet événement.

1445 

1446#### Entrée PostToolBatch

1447 

1448En plus des [champs d'entrée communs](#common-input-fields), les hooks PostToolBatch reçoivent `tool_calls`, un tableau décrivant chaque appel d'outil dans la batch :

1449 

1450```json theme={null}

1451{

1452 "session_id": "abc123",

1453 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1454 "cwd": "/Users/...",

1455 "permission_mode": "default",

1456 "hook_event_name": "PostToolBatch",

1457 "tool_calls": [

1458 {

1459 "tool_name": "Read",

1460 "tool_input": {"file_path": "/.../ledger/accounts.py"},

1461 "tool_use_id": "toolu_01...",

1462 "tool_response": " 1\tfrom __future__ import annotations\n 2\t..."

1463 },

1464 {

1465 "tool_name": "Read",

1466 "tool_input": {"file_path": "/.../ledger/transactions.py"},

1467 "tool_use_id": "toolu_02...",

1468 "tool_response": " 1\tfrom __future__ import annotations\n 2\t..."

1469 }

1470 ]

1471}

1472```

1473 

1474`tool_response` contient le même contenu que le modèle reçoit dans le bloc `tool_result` correspondant. La valeur est une chaîne sérialisée ou un tableau de blocs de contenu, exactement comme l'outil l'a émis. Pour `Read`, cela signifie du texte préfixé par le numéro de ligne plutôt que le contenu brut du fichier. Les réponses peuvent être volumineuses, donc analysez uniquement les champs dont vous avez besoin.

1475 

1476<Note>

1477 La forme `tool_response` diffère de celle de `PostToolUse`. `PostToolUse` transmet l'objet `Output` structuré de l'outil, comme `{filePath: "...", success: true}` pour `Write` ; `PostToolBatch` transmet le contenu `tool_result` sérialisé que le modèle voit.

1478</Note>

1479 

1480#### Contrôle de décision PostToolBatch

1481 

1482Les hooks `PostToolBatch` peuvent injecter du contexte pour Claude. En plus des [champs de sortie JSON](#json-output) disponibles pour tous les hooks, votre script de hook peut retourner ces champs spécifiques à l'événement :

1483 

1484| Champ | Description |

1485| :------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1486| `additionalContext` | Chaîne de contexte injectée une fois avant l'appel du modèle suivant. Consultez [Ajouter du contexte pour Claude](#add-context-for-claude) pour les détails de livraison, ce qu'il faut y mettre et comment les sessions reprises gèrent les valeurs passées |

1487 

1488```json theme={null}

1489{

1490 "hookSpecificOutput": {

1491 "hookEventName": "PostToolBatch",

1492 "additionalContext": "These files are part of the ledger module. Run pytest before marking the task complete."

1493 }

1494}

1495```

1496 

1497Retourner `decision: "block"` ou `continue: false` arrête la boucle agentique avant l'appel du modèle suivant.

1498 

1499### PermissionDenied

1500 

1501S'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.

1502 

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

1504 

1505#### Entrée PermissionDenied

1506 

1507En plus des [champs d'entrée communs](#common-input-fields), les hooks PermissionDenied reçoivent `tool_name`, `tool_input`, `tool_use_id` et `reason`.

1508 

1509```json theme={null}

1510{

1511 "session_id": "abc123",

1512 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1513 "cwd": "/Users/...",

1514 "permission_mode": "auto",

1515 "hook_event_name": "PermissionDenied",

1516 "tool_name": "Bash",

1517 "tool_input": {

1518 "command": "rm -rf /tmp/build",

1519 "description": "Clean build directory"

1520 },

1521 "tool_use_id": "toolu_01ABC123...",

1522 "reason": "Auto mode denied: command targets a path outside the project"

1523}

1524```

1525 

1526| Champ | Description |

1527| :------- | :------------------------------------------------------------------------- |

1528| `reason` | L'explication du classificateur pour pourquoi l'appel d'outil a été refusé |

1529 

1530#### Contrôle de décision PermissionDenied

1531 

1532Les hooks PermissionDenied peuvent indiquer au modèle qu'il peut réessayer l'appel d'outil refusé. Retournez un objet JSON avec `hookSpecificOutput.retry` défini à `true` :

1533 

1534```json theme={null}

1535{

1536 "hookSpecificOutput": {

1537 "hookEventName": "PermissionDenied",

1538 "retry": true

1539 }

1540}

1541```

1542 

1543Lorsque `retry` est `true`, Claude Code ajoute un message à la conversation indiquant au modèle qu'il peut réessayer l'appel d'outil. Le refus lui-même n'est pas inversé. Si votre hook ne retourne pas JSON ou retourne `retry: false`, le refus tient et le modèle reçoit le message de rejet original.

1544 

1545### Notification

1546 

1547S'exécute lorsque Claude Code envoie des notifications. Correspond au type de notification : `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_complete`, `elicitation_response`. Omettez le matcher pour exécuter les hooks pour tous les types de notification.

1548 

1549Utilisez des matchers séparés pour exécuter différents gestionnaires selon le type de notification. Cette configuration déclenche un script d'alerte spécifique à la permission lorsque Claude a besoin d'approbation de permission et une notification différente lorsque Claude a été inactif :

1550 

1551```json theme={null}

1552{

1553 "hooks": {

1554 "Notification": [

1555 {

1556 "matcher": "permission_prompt",

1557 "hooks": [

1558 {

1559 "type": "command",

1560 "command": "/path/to/permission-alert.sh"

1561 }

1562 ]

1563 },

1564 {

1565 "matcher": "idle_prompt",

1566 "hooks": [

1567 {

1568 "type": "command",

1569 "command": "/path/to/idle-notification.sh"

1570 }

1571 ]

1572 }

1573 ]

1574 }

1575}

1576```

1577 

1578#### Entrée Notification

1579 

1580En plus des [champs d'entrée communs](#common-input-fields), les hooks Notification reçoivent `message` avec le texte de notification, un `title` optionnel et `notification_type` indiquant quel type s'est déclenché.

1581 

1582```json theme={null}

1583{

1584 "session_id": "abc123",

1585 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1586 "cwd": "/Users/...",

1587 "hook_event_name": "Notification",

1588 "message": "Claude needs your permission to use Bash",

1589 "title": "Permission needed",

1590 "notification_type": "permission_prompt"

1591}

1592```

1593 

1594Les hooks Notification ne peuvent pas bloquer ou modifier les notifications. Ils sont destinés aux effets secondaires tels que le transfert de la notification vers un service externe. Les [champs de sortie JSON](#json-output) communs tels que `systemMessage` s'appliquent.

1595 

1596### SubagentStart

1597 

1598S'exécute lorsqu'un subagent Claude Code est lancé via l'outil Agent. Supporte les matchers pour filtrer par nom de type d'agent (agents intégrés comme `general-purpose`, `Explore`, `Plan` ou noms d'agents personnalisés de `.claude/agents/`).

1599 

1600#### Entrée SubagentStart

1601 

1602En plus des [champs d'entrée communs](#common-input-fields), les hooks SubagentStart reçoivent `agent_id` avec l'identifiant unique du subagent et `agent_type` avec le nom de l'agent (agents intégrés comme `"general-purpose"`, `"Explore"`, `"Plan"` ou noms d'agents personnalisés).

1603 

1604```json theme={null}

1605{

1606 "session_id": "abc123",

1607 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1608 "cwd": "/Users/...",

1609 "hook_event_name": "SubagentStart",

1610 "agent_id": "agent-abc123",

1611 "agent_type": "Explore"

1612}

1613```

1614 

1615Les hooks SubagentStart ne peuvent pas bloquer la création de subagent, mais ils peuvent injecter du contexte dans le subagent. En plus des [champs de sortie JSON](#json-output) disponibles pour tous les hooks, vous pouvez retourner :

1616 

1617| Champ | Description |

1618| :------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1619| `additionalContext` | Chaîne ajoutée au contexte du subagent au début de sa conversation, avant son premier prompt. Consultez [Ajouter du contexte pour Claude](#add-context-for-claude) |

1620 

1621```json theme={null}

1622{

1623 "hookSpecificOutput": {

1624 "hookEventName": "SubagentStart",

1625 "additionalContext": "Follow security guidelines for this task"

1626 }

1627}

1628```

1629 

1630### SubagentStop

1631 

1632S'exécute lorsqu'un subagent Claude Code a terminé sa réponse. Correspond au type d'agent, mêmes valeurs que SubagentStart.

1633 

1634#### Entrée SubagentStop

1635 

1636En plus des [champs d'entrée communs](#common-input-fields), les hooks SubagentStop reçoivent `stop_hook_active`, `agent_id`, `agent_type`, `agent_transcript_path` et `last_assistant_message`. Le champ `agent_type` est la valeur utilisée pour le filtrage du matcher. Le `transcript_path` est la transcription de la session principale, tandis que `agent_transcript_path` est la propre transcription du subagent stockée dans un dossier `subagents/` imbriqué. Le champ `last_assistant_message` contient le contenu textuel de la réponse finale du subagent, donc les hooks peuvent y accéder sans analyser le fichier de transcription.

1637 

1638```json theme={null}

1639{

1640 "session_id": "abc123",

1641 "transcript_path": "~/.claude/projects/.../abc123.jsonl",

1642 "cwd": "/Users/...",

1643 "permission_mode": "default",

1644 "hook_event_name": "SubagentStop",

1645 "stop_hook_active": false,

1646 "agent_id": "def456",

1647 "agent_type": "Explore",

1648 "agent_transcript_path": "~/.claude/projects/.../abc123/subagents/agent-def456.jsonl",

1649 "last_assistant_message": "Analysis complete. Found 3 potential issues..."

1650}

1651```

1652 

1653Les hooks SubagentStop utilisent le même format de contrôle de décision que les [hooks Stop](#stop-decision-control).

1654 

1655### TaskCreated

1656 

1657S'exécute lorsqu'une tâche est en cours de création via l'outil `TaskCreate`. Utilisez ceci pour appliquer les conventions de nommage, exiger les descriptions de tâches ou empêcher certaines tâches d'être créées.

1658 

1659Lorsqu'un hook `TaskCreated` quitte avec le code 2, la tâche n'est pas créé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 TaskCreated ne supportent pas les matchers et se déclenchent à chaque occurrence.

1660 

1661#### Entrée TaskCreated

1662 

1663En plus des [champs d'entrée communs](#common-input-fields), les hooks TaskCreated reçoivent `task_id`, `task_subject` et optionnellement `task_description`, `teammate_name` et `team_name`.

1664 

1665```json theme={null}

1666{

1667 "session_id": "abc123",

1668 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1669 "cwd": "/Users/...",

1670 "permission_mode": "default",

1671 "hook_event_name": "TaskCreated",

1672 "task_id": "task-001",

1673 "task_subject": "Implement user authentication",

1674 "task_description": "Add login and signup endpoints",

1675 "teammate_name": "implementer",

1676 "team_name": "my-project"

1677}

1678```

1679 

1680| Champ | Description |

1681| :----------------- | :-------------------------------------------------- |

1682| `task_id` | Identifiant de la tâche en cours de création |

1683| `task_subject` | Titre de la tâche |

1684| `task_description` | Description détaillée de la tâche. Peut être absent |

1685| `teammate_name` | Nom du coéquipier créant la tâche. Peut être absent |

1686| `team_name` | Nom de l'équipe. Peut être absent |

1687 

1688#### Contrôle de décision TaskCreated

1689 

1690Les hooks TaskCreated supportent deux façons de contrôler la création de tâche :

1691 

1692* **Code de sortie 2** : la tâche n'est pas créée et le message stderr est renvoyé au modèle comme commentaire.

1693* **JSON `{"continue": false, "stopReason": "..."}`** : arrête complètement le coéquipier, correspondant au comportement du hook `Stop`. Le `stopReason` est affiché à l'utilisateur.

1694 

1695Cet exemple bloque les tâches dont les sujets ne suivent pas le format requis :

1696 

1697```bash theme={null}

1698#!/bin/bash

1699INPUT=$(cat)

1700TASK_SUBJECT=$(echo "$INPUT" | jq -r '.task_subject')

1701 

1702if [[ ! "$TASK_SUBJECT" =~ ^\[TICKET-[0-9]+\] ]]; then

1703 echo "Task subject must start with a ticket number, e.g. '[TICKET-123] Add feature'" >&2

1704 exit 2

1705fi

1706 

1707exit 0

1708```

1709 

1710### TaskCompleted

1711 

1712S'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.

1713 

1714Lorsqu'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.

1715 

1716#### Entrée TaskCompleted

1717 

1718En plus des [champs d'entrée communs](#common-input-fields), les hooks TaskCompleted reçoivent `task_id`, `task_subject` et optionnellement `task_description`, `teammate_name` et `team_name`.

1719 

1720```json theme={null}

1721{

1722 "session_id": "abc123",

1723 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1724 "cwd": "/Users/...",

1725 "permission_mode": "default",

1726 "hook_event_name": "TaskCompleted",

1727 "task_id": "task-001",

1728 "task_subject": "Implement user authentication",

1729 "task_description": "Add login and signup endpoints",

1730 "teammate_name": "implementer",

1731 "team_name": "my-project"

1732}

1733```

1734 

1735| Champ | Description |

1736| :----------------- | :------------------------------------------------------ |

1737| `task_id` | Identifiant de la tâche en cours de réalisation |

1738| `task_subject` | Titre de la tâche |

1739| `task_description` | Description détaillée de la tâche. Peut être absent |

1740| `teammate_name` | Nom du coéquipier complétant la tâche. Peut être absent |

1741| `team_name` | Nom de l'équipe. Peut être absent |

1742 

1743#### Contrôle de décision TaskCompleted

1744 

1745Les hooks TaskCompleted supportent deux façons de contrôler l'achèvement de la tâche :

1746 

1747* **Code de sortie 2** : la tâche n'est pas marquée comme complétée et le message stderr est renvoyé au modèle comme commentaire.

1748* **JSON `{"continue": false, "stopReason": "..."}`** : arrête complètement le coéquipier, correspondant au comportement du hook `Stop`. Le `stopReason` est affiché à l'utilisateur.

1749 

1750Cet exemple exécute les tests et bloque l'achèvement de la tâche s'ils échouent :

1751 

1752```bash theme={null}

1753#!/bin/bash

1754INPUT=$(cat)

1755TASK_SUBJECT=$(echo "$INPUT" | jq -r '.task_subject')

1756 

1757# Exécutez la suite de tests

1758if ! npm test 2>&1; then

1759 echo "Tests not passing. Fix failing tests before completing: $TASK_SUBJECT" >&2

1760 exit 2

1761fi

1762 

1763exit 0

1764```

1765 

1766### Stop

1767 

1768S'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.

1769 

1770#### Entrée Stop

1771 

1772En plus des [champs d'entrée communs](#common-input-fields), les hooks Stop reçoivent `stop_hook_active` et `last_assistant_message`. Le champ `stop_hook_active` est `true` lorsque Claude Code continue déjà en raison d'un hook stop. Vérifiez cette valeur ou traitez la transcription pour empêcher Claude Code de s'exécuter indéfiniment. Le champ `last_assistant_message` contient le contenu textuel de la réponse finale de Claude, donc les hooks peuvent y accéder sans analyser le fichier de transcription.

1773 

1774```json theme={null}

1775{

1776 "session_id": "abc123",

1777 "transcript_path": "~/.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1778 "cwd": "/Users/...",

1779 "permission_mode": "default",

1780 "hook_event_name": "Stop",

1781 "stop_hook_active": true,

1782 "last_assistant_message": "I've completed the refactoring. Here's a summary..."

1783}

1784```

1785 

1786#### Contrôle de décision Stop

1787 

1788Les hooks `Stop` et `SubagentStop` peuvent contrôler si Claude continue. En plus des [champs de sortie JSON](#json-output) disponibles pour tous les hooks, votre script de hook peut retourner ces champs spécifiques à l'événement :

1789 

1790| Champ | Description |

1791| :--------- | :----------------------------------------------------------------------------------- |

1792| `decision` | `"block"` empêche Claude de s'arrêter. Omettez pour autoriser Claude à s'arrêter |

1793| `reason` | Requis lorsque `decision` est `"block"`. Indique à Claude pourquoi il doit continuer |

1794 

1795```json theme={null}

1796{

1797 "decision": "block",

1798 "reason": "Must be provided when Claude is blocked from stopping"

1799}

1800```

1801 

1802### StopFailure

1803 

1804S'exécute à la place de [Stop](#stop) lorsque le tour se termine en raison d'une erreur API. La sortie et le code de sortie sont ignorés. Utilisez ceci pour enregistrer les défaillances, envoyer des alertes ou prendre des mesures de récupération lorsque Claude ne peut pas terminer une réponse en raison de limites de débit, de problèmes d'authentification ou d'autres erreurs API.

1805 

1806#### Entrée StopFailure

1807 

1808En plus des [champs d'entrée communs](#common-input-fields), les hooks StopFailure reçoivent `error`, optionnellement `error_details` et optionnellement `last_assistant_message`. Le champ `error` identifie le type d'erreur et est utilisé pour le filtrage du matcher.

1809 

1810| Champ | Description |

1811| :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1812| `error` | Type d'erreur : `rate_limit`, `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `invalid_request`, `server_error`, `max_output_tokens` ou `unknown` |

1813| `error_details` | Détails supplémentaires sur l'erreur, le cas échéant |

1814| `last_assistant_message` | Le texte d'erreur rendu affiché dans la conversation. Contrairement à `Stop` et `SubagentStop`, où ce champ contient la sortie conversationnelle de Claude, pour `StopFailure` il contient la chaîne d'erreur API elle-même, comme `"API Error: Rate limit reached"` |

1815 

1816```json theme={null}

1817{

1818 "session_id": "abc123",

1819 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1820 "cwd": "/Users/...",

1821 "hook_event_name": "StopFailure",

1822 "error": "rate_limit",

1823 "error_details": "429 Too Many Requests",

1824 "last_assistant_message": "API Error: Rate limit reached"

1825}

1826```

1827 

1828Les hooks StopFailure n'ont pas de contrôle de décision. Ils s'exécutent à des fins de notification et de journalisation uniquement.

1829 

1830### TeammateIdle

1831 

1832S'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.

1833 

1834Lorsqu'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.

1835 

1836#### Entrée TeammateIdle

1837 

1838En plus des [champs d'entrée communs](#common-input-fields), les hooks TeammateIdle reçoivent `teammate_name` et `team_name`.

1839 

1840```json theme={null}

1841{

1842 "session_id": "abc123",

1843 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1844 "cwd": "/Users/...",

1845 "permission_mode": "default",

1846 "hook_event_name": "TeammateIdle",

1847 "teammate_name": "researcher",

1848 "team_name": "my-project"

1849}

1850```

1851 

1852| Champ | Description |

1853| :-------------- | :-------------------------------------------------------- |

1854| `teammate_name` | Nom du coéquipier qui est sur le point de devenir inactif |

1855| `team_name` | Nom de l'équipe |

1856 

1857#### Contrôle de décision TeammateIdle

1858 

1859Les hooks TeammateIdle supportent deux façons de contrôler le comportement du coéquipier :

1860 

1861* **Code de sortie 2** : le coéquipier reçoit le message stderr comme commentaire et continue de travailler au lieu de devenir inactif.

1862* **JSON `{"continue": false, "stopReason": "..."}`** : arrête complètement le coéquipier, correspondant au comportement du hook `Stop`. Le `stopReason` est affiché à l'utilisateur.

1863 

1864Cet exemple vérifie qu'un artefact de construction existe avant d'autoriser un coéquipier à devenir inactif :

1865 

1866```bash theme={null}

1867#!/bin/bash

1868 

1869if [ ! -f "./dist/output.js" ]; then

1870 echo "Build artifact missing. Run the build before stopping." >&2

1871 exit 2

1872fi

1873 

1874exit 0

1875```

1876 

1877### ConfigChange

1878 

1879S'exécute lorsqu'un fichier de configuration change pendant une session. Utilisez ceci pour auditer les modifications de paramètres, appliquer les politiques de sécurité ou bloquer les modifications non autorisées aux fichiers de configuration.

1880 

1881Les hooks ConfigChange se déclenchent pour les modifications des fichiers de paramètres, les paramètres de politique gérée et les fichiers de skill. Le champ `source` dans l'entrée vous indique quel type de configuration a changé, et le champ optionnel `file_path` fournit le chemin vers le fichier modifié.

1882 

1883Le matcher filtre sur la source de configuration :

1884 

1885| Matcher | Quand il se déclenche |

1886| :----------------- | :------------------------------------------------ |

1887| `user_settings` | `~/.claude/settings.json` change |

1888| `project_settings` | `.claude/settings.json` change |

1889| `local_settings` | `.claude/settings.local.json` change |

1890| `policy_settings` | Les paramètres de politique gérée changent |

1891| `skills` | Un fichier de skill dans `.claude/skills/` change |

1892 

1893Cet exemple enregistre toutes les modifications de configuration pour l'audit de sécurité :

1894 

1895```json theme={null}

1896{

1897 "hooks": {

1898 "ConfigChange": [

1899 {

1900 "hooks": [

1901 {

1902 "type": "command",

1903 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/audit-config-change.sh"

1904 }

1905 ]

1906 }

1907 ]

1908 }

1909}

1910```

1911 

1912#### Entrée ConfigChange

1913 

1914En plus des [champs d'entrée communs](#common-input-fields), les hooks ConfigChange reçoivent `source` et optionnellement `file_path`. Le champ `source` indique quel type de configuration a changé, et `file_path` fournit le chemin vers le fichier spécifique qui a été modifié.

1915 

1916```json theme={null}

1917{

1918 "session_id": "abc123",

1919 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1920 "cwd": "/Users/...",

1921 "hook_event_name": "ConfigChange",

1922 "source": "project_settings",

1923 "file_path": "/Users/.../my-project/.claude/settings.json"

1924}

1925```

1926 

1927#### Contrôle de décision ConfigChange

1928 

1929Les hooks ConfigChange peuvent bloquer les modifications de configuration de prendre effet. Utilisez le code de sortie 2 ou une `decision` JSON pour empêcher la modification. Lorsqu'elle est bloquée, les nouveaux paramètres ne sont pas appliqués à la session en cours d'exécution.

1930 

1931| Champ | Description |

1932| :--------- | :---------------------------------------------------------------------------------------------------------- |

1933| `decision` | `"block"` empêche la modification de configuration d'être appliquée. Omettez pour autoriser la modification |

1934| `reason` | Explication affichée à l'utilisateur lorsque `decision` est `"block"` |

1935 

1936```json theme={null}

1937{

1938 "decision": "block",

1939 "reason": "Configuration changes to project settings require admin approval"

1940}

1941```

1942 

1943Les modifications `policy_settings` ne peuvent pas être bloquées. Les hooks se déclenchent toujours pour les sources `policy_settings`, vous pouvez donc les utiliser pour la journalisation d'audit, mais toute décision de blocage est ignorée. Cela garantit que les paramètres gérés par l'entreprise prennent toujours effet.

1944 

1945### CwdChanged

1946 

1947S'exécute lorsque le répertoire de travail change pendant une session, par exemple lorsque Claude exécute une commande `cd`. Utilisez ceci pour réagir aux changements de répertoire : recharger les variables d'environnement, activer les chaînes d'outils spécifiques au projet ou exécuter les scripts de configuration automatiquement. S'associe avec [FileChanged](#filechanged) pour les outils comme [direnv](https://direnv.net/) qui gèrent l'environnement par répertoire.

1948 

1949Les hooks CwdChanged ont accès à `CLAUDE_ENV_FILE`. Les variables écrites dans ce fichier persistent dans les commandes Bash suivantes pour la session, tout comme dans les [hooks SessionStart](#persist-environment-variables).

1950 

1951CwdChanged ne supporte pas les matchers et se déclenche à chaque changement de répertoire.

1952 

1953#### Entrée CwdChanged

1954 

1955En plus des [champs d'entrée communs](#common-input-fields), les hooks CwdChanged reçoivent `old_cwd` et `new_cwd`.

1956 

1957```json theme={null}

1958{

1959 "session_id": "abc123",

1960 "transcript_path": "/Users/.../.claude/projects/.../transcript.jsonl",

1961 "cwd": "/Users/my-project/src",

1962 "hook_event_name": "CwdChanged",

1963 "old_cwd": "/Users/my-project",

1964 "new_cwd": "/Users/my-project/src"

1965}

1966```

1967 

1968#### Sortie CwdChanged

1969 

1970En plus des [champs de sortie JSON](#json-output) disponibles pour tous les hooks, les hooks CwdChanged peuvent retourner `watchPaths` pour définir dynamiquement quels chemins de fichiers [FileChanged](#filechanged) surveille :

1971 

1972| Champ | Description |

1973| :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1974| `watchPaths` | Tableau de chemins absolus. Remplace la liste de surveillance dynamique actuelle (les chemins de votre configuration `matcher` sont toujours surveillés). Retourner un tableau vide efface la liste dynamique, ce qui est typique lors de l'entrée dans un nouveau répertoire |

1975 

1976Les hooks CwdChanged n'ont pas de contrôle de décision. Ils ne peuvent pas bloquer le changement de répertoire.

1977 

1978### FileChanged

1979 

1980S'exécute lorsqu'un fichier surveillé change sur le disque. Utile pour recharger les variables d'environnement lorsque les fichiers de configuration du projet sont modifiés.

1981 

1982Le `matcher` pour cet événement sert deux rôles :

1983 

1984* **Construire la liste de surveillance** : la valeur est divisée sur `|` et chaque segment est enregistré comme un nom de fichier littéral dans le répertoire de travail, donc `".envrc|.env"` surveille exactement ces deux fichiers. Les modèles regex ne sont pas utiles ici : une valeur comme `^\.env` surveillerait un fichier littéralement nommé `^\.env`.

1985* **Filtrer quels hooks s'exécutent** : lorsqu'un fichier surveillé change, la même valeur filtre quels groupes de hook s'exécutent en utilisant les [règles de matcher](#matcher-patterns) standard par rapport au basename du fichier modifié.

1986 

1987Les hooks FileChanged ont accès à `CLAUDE_ENV_FILE`. Les variables écrites dans ce fichier persistent dans les commandes Bash suivantes pour la session, tout comme dans les [hooks SessionStart](#persist-environment-variables).

1988 

1989#### Entrée FileChanged

1990 

1991En plus des [champs d'entrée communs](#common-input-fields), les hooks FileChanged reçoivent `file_path` et `event`.

1992 

1993| Champ | Description |

1994| :---------- | :--------------------------------------------------------------------------------------------------------- |

1995| `file_path` | Chemin absolu vers le fichier qui a changé |

1996| `event` | Ce qui s'est passé : `"change"` (fichier modifié), `"add"` (fichier créé) ou `"unlink"` (fichier supprimé) |

1997 

1998```json theme={null}

1999{

2000 "session_id": "abc123",

2001 "transcript_path": "/Users/.../.claude/projects/.../transcript.jsonl",

2002 "cwd": "/Users/my-project",

2003 "hook_event_name": "FileChanged",

2004 "file_path": "/Users/my-project/.envrc",

2005 "event": "change"

2006}

2007```

2008 

2009#### Sortie FileChanged

2010 

2011En plus des [champs de sortie JSON](#json-output) disponibles pour tous les hooks, les hooks FileChanged peuvent retourner `watchPaths` pour mettre à jour dynamiquement quels chemins de fichiers sont surveillés :

2012 

2013| Champ | Description |

2014| :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

2015| `watchPaths` | Tableau de chemins absolus. Remplace la liste de surveillance dynamique actuelle (les chemins de votre configuration `matcher` sont toujours surveillés). Utilisez ceci lorsque votre script de hook découvre des fichiers supplémentaires à surveiller en fonction du fichier modifié |

2016 

2017Les hooks FileChanged n'ont pas de contrôle de décision. Ils ne peuvent pas bloquer le changement de fichier de se produire.

2018 

2019### WorktreeCreate

2020 

2021Lorsque vous exécutez `claude --worktree` ou qu'un [subagent utilise `isolation: "worktree"`](/fr/sub-agents#choose-the-subagent-scope), Claude Code crée une copie de travail isolée en utilisant `git worktree`. Si vous configurez un hook WorktreeCreate, il remplace le comportement git par défaut, vous permettant d'utiliser un système de contrôle de version différent comme SVN, Perforce ou Mercurial.

2022 

2023Parce 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.

2024 

2025Le 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. Les hooks de commande l'impriment sur stdout ; les hooks HTTP le retournent via `hookSpecificOutput.worktreePath`.

2026 

2027Cet exemple crée une copie de travail SVN et imprime le chemin pour que Claude Code l'utilise. Remplacez l'URL du référentiel par la vôtre :

2028 

2029```json theme={null}

2030{

2031 "hooks": {

2032 "WorktreeCreate": [

2033 {

2034 "hooks": [

2035 {

2036 "type": "command",

2037 "command": "bash -c 'NAME=$(jq -r .name); DIR=\"$HOME/.claude/worktrees/$NAME\"; svn checkout https://svn.example.com/repo/trunk \"$DIR\" >&2 && echo \"$DIR\"'"

2038 }

2039 ]

2040 }

2041 ]

2042 }

2043}

2044```

2045 

2046Le hook lit le `name` du worktree depuis l'entrée JSON sur stdin, extrait une copie fraîche dans un nouveau répertoire et imprime le chemin du répertoire. Le `echo` sur la dernière ligne est ce que Claude Code lit comme chemin du worktree. Redirigez toute autre sortie vers stderr afin qu'elle n'interfère pas avec le chemin.

2047 

2048#### Entrée WorktreeCreate

2049 

2050En plus des [champs d'entrée communs](#common-input-fields), les hooks WorktreeCreate reçoivent le champ `name`. C'est un identifiant slug pour le nouveau worktree, soit spécifié par l'utilisateur, soit généré automatiquement (par exemple, `bold-oak-a3f2`).

2051 

2052```json theme={null}

2053{

2054 "session_id": "abc123",

2055 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2056 "cwd": "/Users/...",

2057 "hook_event_name": "WorktreeCreate",

2058 "name": "feature-auth"

2059}

2060```

2061 

2062#### Sortie WorktreeCreate

2063 

2064Les hooks WorktreeCreate n'utilisent pas le modèle de décision autoriser/bloquer standard. Au lieu de cela, le succès ou l'échec du hook détermine le résultat. Le hook doit retourner le chemin absolu du répertoire du worktree créé :

2065 

2066* **Hooks de commande** (`type: "command"`) : imprimez le chemin sur stdout.

2067* **Hooks HTTP** (`type: "http"`) : retournez `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` dans le corps de la réponse.

2068 

2069Si le hook échoue ou ne produit aucun chemin, la création du worktree échoue avec une erreur.

2070 

2071### WorktreeRemove

2072 

2073La contrepartie de nettoyage de [WorktreeCreate](#worktreecreate). Ce hook se déclenche lorsqu'un worktree est en cours de suppression, soit lorsque vous quittez une session `--worktree` et choisissez de la supprimer, soit lorsqu'un subagent avec `isolation: "worktree"` se termine. Pour les worktrees basés sur git, Claude gère le nettoyage automatiquement avec `git worktree remove`. Si vous avez configuré un hook WorktreeCreate pour un système de contrôle de version non-git, associez-le à un hook WorktreeRemove pour gérer le nettoyage. Sans lui, le répertoire du worktree est laissé sur le disque.

2074 

2075Claude Code transmet le chemin que WorktreeCreate a imprimé sur stdout comme `worktree_path` dans l'entrée du hook. Cet exemple lit ce chemin et supprime le répertoire :

2076 

2077```json theme={null}

2078{

2079 "hooks": {

2080 "WorktreeRemove": [

2081 {

2082 "hooks": [

2083 {

2084 "type": "command",

2085 "command": "bash -c 'jq -r .worktree_path | xargs rm -rf'"

2086 }

2087 ]

2088 }

2089 ]

2090 }

2091}

2092```

2093 

2094#### Entrée WorktreeRemove

2095 

2096En plus des [champs d'entrée communs](#common-input-fields), les hooks WorktreeRemove reçoivent le champ `worktree_path`, qui est le chemin absolu du worktree en cours de suppression.

2097 

2098```json theme={null}

2099{

2100 "session_id": "abc123",

2101 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2102 "cwd": "/Users/...",

2103 "hook_event_name": "WorktreeRemove",

2104 "worktree_path": "/Users/.../my-project/.claude/worktrees/feature-auth"

2105}

2106```

2107 

2108Les hooks WorktreeRemove n'ont pas de contrôle de décision. Ils ne peuvent pas bloquer la suppression du worktree mais peuvent effectuer des tâches de nettoyage comme supprimer l'état du contrôle de version ou archiver les modifications. Les défaillances des hooks sont enregistrées en mode debug uniquement.

2109 

2110### PreCompact

2111 

2112S'exécute avant que Claude Code ne soit sur le point d'exécuter une opération de compaction.

2113 

2114La valeur du matcher indique si la compaction a été déclenchée manuellement ou automatiquement :

2115 

2116| Matcher | Quand il se déclenche |

2117| :------- | :--------------------------------------------------------------- |

2118| `manual` | `/compact` |

2119| `auto` | Compaction automatique lorsque la fenêtre de contexte est pleine |

2120 

2121Quittez avec le code 2 pour bloquer la compaction. Pour un `/compact` manuel, le message stderr est affiché à l'utilisateur. Vous pouvez également bloquer en retournant JSON avec `"decision": "block"`.

2122 

2123Le blocage de la compaction automatique a des effets différents selon le moment où il se déclenche. Si la compaction a été déclenchée de manière proactive avant la limite de contexte, Claude Code la saute et la conversation continue sans compaction. Si la compaction a été déclenchée pour récupérer d'une erreur de limite de contexte déjà retourné par l'API, l'erreur sous-jacente remonte et la demande actuelle échoue.

2124 

2125#### Entrée PreCompact

2126 

2127En plus des [champs d'entrée communs](#common-input-fields), les hooks PreCompact reçoivent `trigger` et `custom_instructions`. Pour `manual`, `custom_instructions` contient ce que l'utilisateur transmet dans `/compact`. Pour `auto`, `custom_instructions` est vide.

2128 

2129```json theme={null}

2130{

2131 "session_id": "abc123",

2132 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2133 "cwd": "/Users/...",

2134 "hook_event_name": "PreCompact",

2135 "trigger": "manual",

2136 "custom_instructions": ""

2137}

2138```

2139 

2140### PostCompact

2141 

2142S'exécute après que Claude Code complète une opération de compaction. Utilisez cet événement pour réagir au nouvel état compacté, par exemple pour enregistrer le résumé généré ou mettre à jour l'état externe.

2143 

2144Les mêmes valeurs de matcher s'appliquent que pour `PreCompact` :

2145 

2146| Matcher | Quand il se déclenche |

2147| :------- | :--------------------------------------------------------------------- |

2148| `manual` | Après `/compact` |

2149| `auto` | Après compaction automatique lorsque la fenêtre de contexte est pleine |

2150 

2151#### Entrée PostCompact

2152 

2153En plus des [champs d'entrée communs](#common-input-fields), les hooks PostCompact reçoivent `trigger` et `compact_summary`. Le champ `compact_summary` contient le résumé de conversation généré par l'opération de compaction.

2154 

2155```json theme={null}

2156{

2157 "session_id": "abc123",

2158 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2159 "cwd": "/Users/...",

2160 "hook_event_name": "PostCompact",

2161 "trigger": "manual",

2162 "compact_summary": "Summary of the compacted conversation..."

2163}

2164```

2165 

2166Les hooks PostCompact n'ont pas de contrôle de décision. Ils ne peuvent pas affecter le résultat de la compaction mais peuvent effectuer des tâches de suivi.

2167 

2168### SessionEnd

2169 

2170S'exécute lorsqu'une session Claude Code se termine. Utile pour les tâches de nettoyage, la journalisation des statistiques de session ou l'enregistrement de l'état de session. Supporte les matchers pour filtrer par raison de sortie.

2171 

2172Le champ `reason` dans l'entrée du hook indique pourquoi la session s'est terminée :

2173 

2174| Raison | Description |

2175| :---------------------------- | :------------------------------------------------------------------ |

2176| `clear` | Session effacée avec la commande `/clear` |

2177| `resume` | Session basculée via `/resume` interactif |

2178| `logout` | L'utilisateur s'est déconnecté |

2179| `prompt_input_exit` | L'utilisateur a quitté pendant que l'entrée du prompt était visible |

2180| `bypass_permissions_disabled` | Le mode de permissions de contournement a été désactivé |

2181| `other` | Autres raisons de sortie |

2182 

2183#### Entrée SessionEnd

2184 

2185En plus des [champs d'entrée communs](#common-input-fields), les hooks SessionEnd reçoivent un champ `reason` indiquant pourquoi la session s'est terminée. Consultez le [tableau des raisons](#sessionend) ci-dessus pour toutes les valeurs.

2186 

2187```json theme={null}

2188{

2189 "session_id": "abc123",

2190 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2191 "cwd": "/Users/...",

2192 "hook_event_name": "SessionEnd",

2193 "reason": "other"

2194}

2195```

2196 

2197Les hooks SessionEnd n'ont pas de contrôle de décision. Ils ne peuvent pas bloquer la terminaison de session mais peuvent effectuer des tâches de nettoyage.

2198 

2199Les hooks SessionEnd ont un délai d'expiration par défaut de 1,5 secondes. Cela s'applique à la sortie de session, à `/clear` et au basculement de sessions via `/resume` interactif. Si un hook a besoin de plus de temps, définissez un `timeout` par hook dans la configuration du hook. Le budget global est automatiquement augmenté au délai d'expiration par hook le plus élevé configuré dans les fichiers de paramètres, jusqu'à 60 secondes. Les délais d'expiration définis sur les hooks fournis par les plugins ne relèvent pas le budget. Pour remplacer le budget explicitement, définissez la variable d'environnement `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` en millisecondes.

2200 

2201```bash theme={null}

2202CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS=5000 claude

2203```

2204 

2205### Elicitation

2206 

2207S'exécute lorsqu'un serveur MCP demande une entrée utilisateur en milieu de tâche. Par défaut, Claude Code affiche un dialogue interactif pour que l'utilisateur réponde. Les hooks peuvent intercepter cette demande et répondre par programmation, en ignorant complètement le dialogue.

2208 

2209Le champ matcher correspond au nom du serveur MCP.

2210 

2211#### Entrée Elicitation

2212 

2213En plus des [champs d'entrée communs](#common-input-fields), les hooks Elicitation reçoivent `mcp_server_name`, `message` et les champs optionnels `mode`, `url`, `elicitation_id` et `requested_schema`.

2214 

2215Pour l'élicitation en mode formulaire (le cas le plus courant) :

2216 

2217```json theme={null}

2218{

2219 "session_id": "abc123",

2220 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2221 "cwd": "/Users/...",

2222 "permission_mode": "default",

2223 "hook_event_name": "Elicitation",

2224 "mcp_server_name": "my-mcp-server",

2225 "message": "Please provide your credentials",

2226 "mode": "form",

2227 "requested_schema": {

2228 "type": "object",

2229 "properties": {

2230 "username": { "type": "string", "title": "Username" }

2231 }

2232 }

2233}

2234```

2235 

2236Pour l'élicitation en mode URL (authentification basée sur navigateur) :

2237 

2238```json theme={null}

2239{

2240 "session_id": "abc123",

2241 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2242 "cwd": "/Users/...",

2243 "permission_mode": "default",

2244 "hook_event_name": "Elicitation",

2245 "mcp_server_name": "my-mcp-server",

2246 "message": "Please authenticate",

2247 "mode": "url",

2248 "url": "https://auth.example.com/login"

2249}

2250```

2251 

2252#### Sortie Elicitation

2253 

2254Pour répondre par programmation sans afficher le dialogue, retournez un objet JSON avec `hookSpecificOutput` :

2255 

2256```json theme={null}

2257{

2258 "hookSpecificOutput": {

2259 "hookEventName": "Elicitation",

2260 "action": "accept",

2261 "content": {

2262 "username": "alice"

2263 }

2264 }

2265}

2266```

2267 

2268| Champ | Valeurs | Description |

2269| :-------- | :---------------------------- | :--------------------------------------------------------------------------------------------- |

2270| `action` | `accept`, `decline`, `cancel` | Si accepter, refuser ou annuler la demande |

2271| `content` | object | Valeurs des champs de formulaire à soumettre. Utilisé uniquement lorsque `action` est `accept` |

2272 

2273Le code de sortie 2 refuse l'élicitation et affiche stderr à l'utilisateur.

2274 

2275### ElicitationResult

2276 

2277S'exécute après qu'un utilisateur répond à une élicitation MCP. Les hooks peuvent observer, modifier ou bloquer la réponse avant qu'elle ne soit renvoyée au serveur MCP.

2278 

2279Le champ matcher correspond au nom du serveur MCP.

2280 

2281#### Entrée ElicitationResult

2282 

2283En plus des [champs d'entrée communs](#common-input-fields), les hooks ElicitationResult reçoivent `mcp_server_name`, `action` et les champs optionnels `mode`, `elicitation_id` et `content`.

2284 

2285```json theme={null}

2286{

2287 "session_id": "abc123",

2288 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2289 "cwd": "/Users/...",

2290 "permission_mode": "default",

2291 "hook_event_name": "ElicitationResult",

2292 "mcp_server_name": "my-mcp-server",

2293 "action": "accept",

2294 "content": { "username": "alice" },

2295 "mode": "form",

2296 "elicitation_id": "elicit-123"

2297}

2298```

2299 

2300#### Sortie ElicitationResult

2301 

2302Pour remplacer la réponse de l'utilisateur, retournez un objet JSON avec `hookSpecificOutput` :

2303 

2304```json theme={null}

2305{

2306 "hookSpecificOutput": {

2307 "hookEventName": "ElicitationResult",

2308 "action": "decline",

2309 "content": {}

2310 }

2311}

2312```

2313 

2314| Champ | Valeurs | Description |

2315| :-------- | :---------------------------- | :--------------------------------------------------------------------------------------------------- |

2316| `action` | `accept`, `decline`, `cancel` | Remplace l'action de l'utilisateur |

2317| `content` | object | Remplace les valeurs des champs de formulaire. Significatif uniquement lorsque `action` est `accept` |

2318 

2319Le code de sortie 2 bloque la réponse, changeant l'action effective en `decline`.

2320 

2321## Hooks basés sur des prompts

2322 

2323En plus des hooks de commande, HTTP et MCP tool, Claude Code supporte les hooks basés sur des prompts (`type: "prompt"`) qui utilisent un LLM pour évaluer s'il faut autoriser ou bloquer une action, et les hooks d'agent (`type: "agent"`) qui lancent un vérificateur agentique avec accès aux outils. Tous les événements ne supportent pas tous les types de hooks.

2324 

2325Les événements qui supportent les cinq types de hooks (`command`, `http`, `mcp_tool`, `prompt` et `agent`) :

2326 

2327* `PermissionRequest`

2328* `PostToolBatch`

2329* `PostToolUse`

2330* `PostToolUseFailure`

2331* `PreToolUse`

2332* `Stop`

2333* `SubagentStop`

2334* `TaskCompleted`

2335* `TaskCreated`

2336* `UserPromptExpansion`

2337* `UserPromptSubmit`

2338 

2339Les événements qui supportent les hooks `command`, `http` et `mcp_tool` mais pas `prompt` ou `agent` :

2340 

2341* `ConfigChange`

2342* `CwdChanged`

2343* `Elicitation`

2344* `ElicitationResult`

2345* `FileChanged`

2346* `InstructionsLoaded`

2347* `Notification`

2348* `PermissionDenied`

2349* `PostCompact`

2350* `PreCompact`

2351* `SessionEnd`

2352* `StopFailure`

2353* `SubagentStart`

2354* `TeammateIdle`

2355* `WorktreeCreate`

2356* `WorktreeRemove`

2357 

2358`SessionStart` et `Setup` supportent les hooks `command` et `mcp_tool`. Ils ne supportent pas les hooks `http`, `prompt` ou `agent`.

2359 

2360### Comment fonctionnent les hooks basés sur des prompts

2361 

2362Au lieu d'exécuter une commande Bash, les hooks basés sur des prompts :

2363 

23641. Envoient l'entrée du hook et votre prompt à un modèle Claude, Haiku par défaut

23652. Le LLM répond avec JSON structuré contenant une décision

23663. Claude Code traite automatiquement la décision

2367 

2368### Configuration des hooks de prompt

2369 

2370Définissez `type` à `"prompt"` et fournissez une chaîne `prompt` au lieu d'une `command`. Utilisez le placeholder `$ARGUMENTS` pour injecter les données d'entrée JSON du hook dans votre texte de prompt. Claude Code envoie le prompt combiné et l'entrée à un modèle Claude rapide, qui retourne une décision JSON.

2371 

2372Ce hook `Stop` demande au LLM d'évaluer si toutes les tâches sont complètes avant d'autoriser Claude à terminer :

2373 

2374```json theme={null}

2375{

2376 "hooks": {

2377 "Stop": [

2378 {

2379 "hooks": [

2380 {

2381 "type": "prompt",

2382 "prompt": "Evaluate if Claude should stop: $ARGUMENTS. Check if all tasks are complete."

2383 }

2384 ]

2385 }

2386 ]

2387 }

2388}

2389```

2390 

2391| Champ | Requis | Description |

2392| :-------- | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

2393| `type` | oui | Doit être `"prompt"` |

2394| `prompt` | oui | Le texte du prompt à envoyer au LLM. Utilisez `$ARGUMENTS` comme placeholder pour l'entrée JSON du hook. Si `$ARGUMENTS` n'est pas présent, l'entrée JSON est ajoutée au prompt |

2395| `model` | non | Modèle à utiliser pour l'évaluation. Par défaut un modèle rapide |

2396| `timeout` | non | Délai d'expiration en secondes. Par défaut : 30 |

2397 

2398### Schéma de réponse

2399 

2400Le LLM doit répondre avec JSON contenant :

2401 

2402```json theme={null}

2403{

2404 "ok": true | false,

2405 "reason": "Explanation for the decision"

2406}

2407```

2408 

2409| Champ | Description |

2410| :------- | :------------------------------------------------------------ |

2411| `ok` | `true` autorise l'action, `false` l'empêche |

2412| `reason` | Requis lorsque `ok` est `false`. Explication pour la décision |

2413 

2414Ce qui se passe sur `ok: false` dépend de l'événement :

2415 

2416* `Stop` et `SubagentStop` : la raison est renvoyée à Claude comme sa prochaine instruction et le tour continue

2417* `PreToolUse` : l'appel d'outil est refusé et la raison est retournée à Claude comme l'erreur de l'outil, équivalent à un hook de commande avec `permissionDecision: "deny"`

2418* `PostToolUse`, `PostToolBatch`, `UserPromptSubmit` et `UserPromptExpansion` : le tour se termine et la raison apparaît dans le chat comme une ligne d'avertissement, équivalent à retourner `"continue": false` d'un hook de commande

2419* `PostToolUseFailure`, `TaskCreated` et `TaskCompleted` : la raison est retournée à Claude comme une erreur d'outil, similaire à `PreToolUse`

2420* `PermissionRequest` : `ok: false` n'a aucun effet. Pour refuser une approbation d'un hook, utilisez un [hook de commande](#command-hook-fields) retournant `hookSpecificOutput.decision.behavior: "deny"`

2421 

2422Si vous avez besoin d'un contrôle plus fin sur un événement quelconque, utilisez un [hook de commande](#command-hook-fields) avec les champs par événement décrits dans [Contrôle de décision](#decision-control).

2423 

2424### Exemple : Hook Stop multi-critères

2425 

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

2427 

2428```json theme={null}

2429{

2430 "hooks": {

2431 "Stop": [

2432 {

2433 "hooks": [

2434 {

2435 "type": "prompt",

2436 "prompt": "You are evaluating whether Claude should stop working. Context: $ARGUMENTS\n\nAnalyze the conversation and determine if:\n1. All user-requested tasks are complete\n2. Any errors need to be addressed\n3. Follow-up work is needed\n\nRespond with JSON: {\"ok\": true} to allow stopping, or {\"ok\": false, \"reason\": \"your explanation\"} to continue working.",

2437 "timeout": 30

2438 }

2439 ]

2440 }

2441 ]

2442 }

2443}

2444```

2445 

2446## Hooks basés sur des agents

2447 

2448<Warning>

2449 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](#command-hook-fields).

2450</Warning>

2451 

2452Les hooks basés sur des agents (`type: "agent"`) sont comme les hooks basés sur des prompts mais avec accès aux outils multi-tours. Au lieu d'un seul appel LLM, un hook d'agent lance un subagent qui peut lire des fichiers, rechercher du code et inspecter la codebase pour vérifier les conditions. Les hooks d'agent supportent les mêmes événements que les hooks basés sur des prompts.

2453 

2454### Comment fonctionnent les hooks d'agent

2455 

2456Lorsqu'un hook d'agent se déclenche :

2457 

24581. Claude Code lance un subagent avec votre prompt et l'entrée JSON du hook

24592. Le subagent peut utiliser des outils comme Read, Grep et Glob pour enquêter

24603. Après jusqu'à 50 tours, le subagent retourne une décision structurée `{ "ok": true/false }`

24614. Claude Code traite la décision de la même manière qu'un hook de prompt

2462 

2463Les hooks d'agent sont utiles lorsque la vérification nécessite d'inspecter les fichiers réels ou la sortie des tests, pas seulement d'évaluer les données d'entrée du hook seules.

2464 

2465### Configuration des hooks d'agent

2466 

2467Définissez `type` à `"agent"` et fournissez une chaîne `prompt`. Les champs de configuration sont les mêmes que les [hooks de prompt](#prompt-hook-configuration), avec un délai d'expiration par défaut plus long :

2468 

2469| Champ | Requis | Description |

2470| :-------- | :----- | :------------------------------------------------------------------------------------------------- |

2471| `type` | oui | Doit être `"agent"` |

2472| `prompt` | oui | Prompt décrivant ce à vérifier. Utilisez `$ARGUMENTS` comme placeholder pour l'entrée JSON du hook |

2473| `model` | non | Modèle à utiliser. Par défaut un modèle rapide |

2474| `timeout` | non | Délai d'expiration en secondes. Par défaut : 60 |

2475 

2476Le schéma de réponse est le même que les hooks de prompt : `{ "ok": true }` pour autoriser ou `{ "ok": false, "reason": "..." }` pour bloquer.

2477 

2478Ce hook `Stop` vérifie que tous les tests unitaires réussissent avant d'autoriser Claude à terminer :

2479 

2480```json theme={null}

2481{

2482 "hooks": {

2483 "Stop": [

2484 {

2485 "hooks": [

2486 {

2487 "type": "agent",

2488 "prompt": "Verify that all unit tests pass. Run the test suite and check the results. $ARGUMENTS",

2489 "timeout": 120

2490 }

2491 ]

2492 }

2493 ]

2494 }

2495}

2496```

2497 

2498## Exécuter les hooks en arrière-plan

2499 

2500Par défaut, les hooks bloquent l'exécution de Claude jusqu'à ce qu'ils se terminent. Pour les tâches longues comme les déploiements, les suites de tests ou les appels API externes, définissez `"async": true` pour exécuter le hook en arrière-plan tandis que Claude continue de travailler. Les hooks asynchrones ne peuvent pas bloquer ou contrôler le comportement de Claude : les champs de réponse comme `decision`, `permissionDecision` et `continue` n'ont aucun effet, car l'action qu'ils auraient contrôlée s'est déjà produite.

2501 

2502### Configurer un hook asynchrone

2503 

2504Ajoutez `"async": true` à la configuration d'un hook de commande pour l'exécuter en arrière-plan sans bloquer Claude. Ce champ n'est disponible que sur les hooks `type: "command"`.

2505 

2506Ce hook exécute un script de test après chaque appel d'outil `Write`. Claude continue de travailler immédiatement tandis que `run-tests.sh` s'exécute pendant jusqu'à 120 secondes. Lorsque le script se termine, sa sortie est livrée au tour de conversation suivant :

2507 

2508```json theme={null}

2509{

2510 "hooks": {

2511 "PostToolUse": [

2512 {

2513 "matcher": "Write",

2514 "hooks": [

2515 {

2516 "type": "command",

2517 "command": "/path/to/run-tests.sh",

2518 "async": true,

2519 "timeout": 120

2520 }

2521 ]

2522 }

2523 ]

2524 }

2525}

2526```

2527 

2528Le champ `timeout` définit le temps maximum en secondes pour le processus en arrière-plan. S'il n'est pas spécifié, les hooks asynchrones utilisent la même valeur par défaut de 10 minutes que les hooks synchrones.

2529 

2530### Comment les hooks asynchrones s'exécutent

2531 

2532Lorsqu'un hook asynchrone se déclenche, Claude Code démarre le processus du hook et continue immédiatement sans attendre qu'il se termine. Le hook reçoit la même entrée JSON via stdin qu'un hook synchrone.

2533 

2534Après la sortie du processus en arrière-plan, si le hook a produit une réponse JSON avec un champ `systemMessage` ou `additionalContext`, ce contenu est livré à Claude comme contexte au tour de conversation suivant.

2535 

2536Les notifications d'achèvement des hooks asynchrones sont supprimées par défaut. Pour les voir, activez le mode verbeux avec `Ctrl+O` ou démarrez Claude Code avec `--verbose`.

2537 

2538### Exemple : exécuter les tests après les modifications de fichiers

2539 

2540Ce hook démarre une suite de tests en arrière-plan chaque fois que Claude écrit un fichier, puis rapporte les résultats à Claude lorsque les tests se terminent. Enregistrez ce script dans `.claude/hooks/run-tests-async.sh` dans votre projet et rendez-le exécutable avec `chmod +x` :

2541 

2542```bash theme={null}

2543#!/bin/bash

2544# run-tests-async.sh

2545 

2546# Lisez l'entrée du hook depuis stdin

2547INPUT=$(cat)

2548FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')

2549 

2550# Exécutez les tests uniquement pour les fichiers source

2551if [[ "$FILE_PATH" != *.ts && "$FILE_PATH" != *.js ]]; then

2552 exit 0

2553fi

2554 

2555# Exécutez les tests et rapportez les résultats via systemMessage

2556RESULT=$(npm test 2>&1)

2557EXIT_CODE=$?

2558 

2559if [ $EXIT_CODE -eq 0 ]; then

2560 echo "{\"systemMessage\": \"Tests passed after editing $FILE_PATH\"}"

2561else

2562 echo "{\"systemMessage\": \"Tests failed after editing $FILE_PATH: $RESULT\"}"

2563fi

2564```

2565 

2566Ensuite, ajoutez cette configuration à `.claude/settings.json` dans la racine de votre projet. Le drapeau `async: true` permet à Claude de continuer à travailler pendant que les tests s'exécutent :

2567 

2568```json theme={null}

2569{

2570 "hooks": {

2571 "PostToolUse": [

2572 {

2573 "matcher": "Write|Edit",

2574 "hooks": [

2575 {

2576 "type": "command",

2577 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/run-tests-async.sh",

2578 "async": true,

2579 "timeout": 300

2580 }

2581 ]

2582 }

2583 ]

2584 }

2585}

2586```

2587 

2588### Limitations

2589 

2590Les hooks asynchrones ont plusieurs contraintes par rapport aux hooks synchrones :

2591 

2592* Seuls les hooks `type: "command"` supportent `async`. Les hooks basés sur des prompts ne peuvent pas s'exécuter de manière asynchrone.

2593* Les hooks asynchrones ne peuvent pas bloquer les appels d'outil ou retourner des décisions. Au moment où le hook se termine, l'action qui l'a déclenché a déjà procédé.

2594* La sortie du hook est livrée au tour de conversation suivant. Si la session est inactive, la réponse attend jusqu'à la prochaine interaction utilisateur. Exception : un hook `asyncRewake` qui quitte avec le code 2 réveille Claude immédiatement même lorsque la session est inactive.

2595* Chaque exécution crée un processus en arrière-plan séparé. Il n'y a pas de déduplication sur plusieurs déclenchements du même hook asynchrone.

2596 

2597## Considérations de sécurité

2598 

2599### Avertissement

2600 

2601Les hooks de commande s'exécutent avec les permissions complètes de votre utilisateur système.

2602 

2603<Warning>

2604 Les hooks de commande exécutent les commandes shell avec vos permissions utilisateur complètes. Ils peuvent modifier, supprimer ou accéder à tous les fichiers auxquels votre compte utilisateur peut accéder. Examinez et testez toutes les commandes de hook avant de les ajouter à votre configuration.

2605</Warning>

2606 

2607### Meilleures pratiques de sécurité

2608 

2609Gardez ces pratiques à l'esprit lors de l'écriture de hooks :

2610 

2611* **Validez et nettoyez les entrées** : ne faites jamais confiance aux données d'entrée aveuglément

2612* **Citez toujours les variables shell** : utilisez `"$VAR"` pas `$VAR`

2613* **Bloquez la traversée de répertoires** : vérifiez les `..` dans les chemins de fichiers

2614* **Utilisez les chemins absolus** : spécifiez les chemins complets pour les scripts, en utilisant `"$CLAUDE_PROJECT_DIR"` pour la racine du projet

2615* **Ignorez les fichiers sensibles** : évitez `.env`, `.git/`, les clés, etc.

2616 

2617## Outil PowerShell sur Windows

2618 

2619Sur Windows, vous pouvez exécuter les hooks individuels dans PowerShell en définissant `"shell": "powershell"` sur un hook de commande. Les hooks lancent PowerShell directement, donc cela fonctionne indépendamment de la définition de `CLAUDE_CODE_USE_POWERSHELL_TOOL`. Claude Code détecte automatiquement `pwsh.exe` (PowerShell 7+) avec un repli sur `powershell.exe` (5.1).

2620 

2621```json theme={null}

2622{

2623 "hooks": {

2624 "PostToolUse": [

2625 {

2626 "matcher": "Write",

2627 "hooks": [

2628 {

2629 "type": "command",

2630 "shell": "powershell",

2631 "command": "Write-Host 'File written'"

2632 }

2633 ]

2634 }

2635 ]

2636 }

2637}

2638```

2639 

2640## Déboguer les hooks

2641 

2642Les détails d'exécution des hooks, y compris les hooks qui ont correspondu, leurs codes de sortie et la sortie complète stdout et stderr, sont écrits dans le fichier journal de débogage. Démarrez Claude Code avec `claude --debug-file <path>` pour écrire le journal à un emplacement connu, ou exécutez `claude --debug` et lisez le journal à `~/.claude/debug/<session-id>.txt`. Le drapeau `--debug` n'imprime pas sur le terminal.

2643 

2644```text theme={null}

2645[DEBUG] Executing hooks for PostToolUse:Write

2646[DEBUG] Found 1 hook commands to execute

2647[DEBUG] Executing hook command: <Your command> with timeout 600000ms

2648[DEBUG] Hook command completed with status 0: <Your stdout>

2649```

2650 

2651Pour 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.

2652 

2653Pour dépanner les problèmes courants comme les hooks qui ne se déclenchent pas, les boucles infinies de hook Stop 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).

hooks-guide.md +927 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Automatiser les workflows avec les hooks

6 

7> Exécutez automatiquement des commandes shell lorsque Claude Code modifie des fichiers, termine des tâches ou a besoin d'une entrée. Formatez le code, envoyez des notifications, validez les commandes et appliquez les règles du projet.

8 

9Les hooks sont des commandes shell définies par l'utilisateur qui s'exécutent à des points spécifiques du cycle de vie de Claude Code. Ils fournissent un contrôle déterministe du comportement de Claude Code, en garantissant que certaines actions se produisent toujours plutôt que de compter sur le LLM pour choisir de les exécuter. Utilisez les hooks pour appliquer les règles du projet, automatiser les tâches répétitives et intégrer Claude Code avec vos outils existants.

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.

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.

14 

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).

17</Tip>

18 

19## Configurer votre premier hook

20 

21Pour créer un hook, ajoutez un bloc `hooks` à un [fichier de paramètres](#configure-hook-location). Cette procédure crée un hook de notification de bureau, afin que vous soyez alerté chaque fois que Claude attend votre entrée au lieu de regarder le terminal.

22 

23<Steps>

24 <Step title="Ajouter le hook à vos paramètres">

25 Ouvrez `~/.claude/settings.json` et ajoutez un hook `Notification`. L'exemple ci-dessous utilise `osascript` pour macOS ; consultez [Être notifié lorsque Claude a besoin d'une entrée](#get-notified-when-claude-needs-input) pour les commandes Linux et Windows.

26 

27 ```json theme={null}

28 {

29 "hooks": {

30 "Notification": [

31 {

32 "matcher": "",

33 "hooks": [

34 {

35 "type": "command",

36 "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'"

37 }

38 ]

39 }

40 ]

41 }

42 }

43 ```

44 

45 Si votre fichier de paramètres a déjà une clé `hooks`, ajoutez `Notification` comme frère des clés d'événement existantes plutôt que de remplacer l'objet entier. Chaque nom d'événement est une clé à l'intérieur du seul objet `hooks` :

46 

47 ```json theme={null}

48 {

49 "hooks": {

50 "PostToolUse": [

51 {

52 "matcher": "Edit|Write",

53 "hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write" }]

54 }

55 ],

56 "Notification": [

57 {

58 "matcher": "",

59 "hooks": [{ "type": "command", "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'" }]

60 }

61 ]

62 }

63 }

64 ```

65 

66 Vous pouvez également demander à Claude d'écrire le hook pour vous en décrivant ce que vous voulez dans le CLI.

67 </Step>

68 

69 <Step title="Vérifier la configuration">

70 Tapez `/hooks` pour ouvrir le navigateur des hooks. Vous verrez une liste de tous les événements de hook disponibles, avec un nombre à côté de chaque événement qui a des hooks configurés. Sélectionnez `Notification` pour confirmer que votre nouveau hook apparaît dans la liste. La sélection du hook affiche ses détails : l'événement, le matcher, le type, le fichier source et la commande.

71 </Step>

72 

73 <Step title="Tester le hook">

74 Appuyez sur `Esc` pour revenir au CLI. Demandez à Claude de faire quelque chose qui nécessite une permission, puis quittez le terminal. Vous devriez recevoir une notification de bureau.

75 </Step>

76</Steps>

77 

78<Tip>

79 Le menu `/hooks` est en lecture seule. Pour ajouter, modifier ou supprimer des hooks, modifiez votre JSON de paramètres directement ou demandez à Claude de faire la modification.

80</Tip>

81 

82## Ce que vous pouvez automatiser

83 

84Les 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).

85 

86Chaque exemple inclut un bloc de configuration prêt à l'emploi que vous ajoutez à un [fichier de paramètres](#configure-hook-location). Les modèles les plus courants :

87 

88* [Être notifié lorsque Claude a besoin d'une entrée](#get-notified-when-claude-needs-input)

89* [Formater automatiquement le code après les modifications](#auto-format-code-after-edits)

90* [Bloquer les modifications des fichiers protégés](#block-edits-to-protected-files)

91* [Réinjecter le contexte après compaction](#re-inject-context-after-compaction)

92* [Auditer les modifications de configuration](#audit-configuration-changes)

93* [Recharger l'environnement lorsque le répertoire ou les fichiers changent](#reload-environment-when-directory-or-files-change)

94* [Approuver automatiquement les invites de permission spécifiques](#auto-approve-specific-permission-prompts)

95 

96### Être notifié lorsque Claude a besoin d'une entrée

97 

98Recevez une notification de bureau chaque fois que Claude termine son travail et a besoin de votre entrée, afin que vous puissiez passer à d'autres tâches sans vérifier le terminal.

99 

100Ce hook utilise l'événement `Notification`, qui se déclenche lorsque Claude attend une entrée ou une permission. Chaque onglet ci-dessous utilise la commande de notification native de la plateforme. Ajoutez ceci à `~/.claude/settings.json` :

101 

102<Tabs>

103 <Tab title="macOS">

104 ```json theme={null}

105 {

106 "hooks": {

107 "Notification": [

108 {

109 "matcher": "",

110 "hooks": [

111 {

112 "type": "command",

113 "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'"

114 }

115 ]

116 }

117 ]

118 }

119 }

120 ```

121 

122 <Accordion title="Si aucune notification n'apparaît">

123 `osascript` achemine les notifications via l'application Script Editor intégrée. Si Script Editor n'a pas la permission de notification, la commande échoue silencieusement, et macOS ne vous demandera pas de l'accorder. Exécutez ceci dans Terminal une fois pour que Script Editor apparaisse dans vos paramètres de notification :

124 

125 ```bash theme={null}

126 osascript -e 'display notification "test"'

127 ```

128 

129 Rien n'apparaîtra pour l'instant. Ouvrez **Paramètres système > Notifications**, trouvez **Script Editor** dans la liste, et activez **Autoriser les notifications**. Exécutez la commande à nouveau pour confirmer que la notification de test apparaît.

130 </Accordion>

131 </Tab>

132 

133 <Tab title="Linux">

134 ```json theme={null}

135 {

136 "hooks": {

137 "Notification": [

138 {

139 "matcher": "",

140 "hooks": [

141 {

142 "type": "command",

143 "command": "notify-send 'Claude Code' 'Claude Code needs your attention'"

144 }

145 ]

146 }

147 ]

148 }

149 }

150 ```

151 </Tab>

152 

153 <Tab title="Windows (PowerShell)">

154 ```json theme={null}

155 {

156 "hooks": {

157 "Notification": [

158 {

159 "matcher": "",

160 "hooks": [

161 {

162 "type": "command",

163 "command": "powershell.exe -Command \"[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Claude Code needs your attention', 'Claude Code')\""

164 }

165 ]

166 }

167 ]

168 }

169 }

170 ```

171 </Tab>

172</Tabs>

173 

174Le matcher vide se déclenche sur tous les types de notification. Pour se déclencher uniquement sur des événements spécifiques, définissez-le sur l'une de ces valeurs :

175 

176| Matcher | Se déclenche quand |

177| :--------------------- | :---------------------------------------------------- |

178| `permission_prompt` | Claude a besoin que vous approuviez un appel d'outil |

179| `idle_prompt` | Claude a terminé et attend votre prochaine invite |

180| `auth_success` | L'authentification se termine |

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

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 |

184 

185Tapez `/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).

186 

187### Formater automatiquement le code après les modifications

188 

189Exécutez automatiquement [Prettier](https://prettier.io/) sur chaque fichier que Claude modifie, afin que le formatage reste cohérent sans intervention manuelle.

190 

191Ce hook utilise l'événement `PostToolUse` avec un matcher `Edit|Write`, il s'exécute donc uniquement après les outils d'édition de fichiers. La commande extrait le chemin du fichier modifié avec [`jq`](https://jqlang.github.io/jq/) et le transmet à Prettier. Ajoutez ceci à `.claude/settings.json` à la racine de votre projet :

192 

193```json theme={null}

194{

195 "hooks": {

196 "PostToolUse": [

197 {

198 "matcher": "Edit|Write",

199 "hooks": [

200 {

201 "type": "command",

202 "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"

203 }

204 ]

205 }

206 ]

207 }

208}

209```

210 

211<Note>

212 Les exemples Bash sur cette page utilisent `jq` pour l'analyse JSON. Installez-le avec `brew install jq` (macOS), `apt-get install jq` (Debian/Ubuntu), ou consultez les [téléchargements de `jq`](https://jqlang.github.io/jq/download/).

213</Note>

214 

215### Bloquer les modifications des fichiers protégés

216 

217Empêchez Claude de modifier les fichiers sensibles comme `.env`, `package-lock.json`, ou n'importe quoi dans `.git/`. Claude reçoit un retour expliquant pourquoi la modification a été bloquée, afin qu'il puisse ajuster son approche.

218 

219Cet exemple utilise un fichier de script séparé que le hook appelle. Le script vérifie le chemin du fichier cible par rapport à une liste de modèles protégés et quitte avec le code 2 pour bloquer la modification.

220 

221<Steps>

222 <Step title="Créer le script du hook">

223 Enregistrez ceci dans `.claude/hooks/protect-files.sh` :

224 

225 ```bash theme={null}

226 #!/bin/bash

227 # protect-files.sh

228 

229 INPUT=$(cat)

230 FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')

231 

232 PROTECTED_PATTERNS=(".env" "package-lock.json" ".git/")

233 

234 for pattern in "${PROTECTED_PATTERNS[@]}"; do

235 if [[ "$FILE_PATH" == *"$pattern"* ]]; then

236 echo "Blocked: $FILE_PATH matches protected pattern '$pattern'" >&2

237 exit 2

238 fi

239 done

240 

241 exit 0

242 ```

243 </Step>

244 

245 <Step title="Rendre le script exécutable (macOS/Linux)">

246 Les scripts de hook doivent être exécutables pour que Claude Code les exécute :

247 

248 ```bash theme={null}

249 chmod +x .claude/hooks/protect-files.sh

250 ```

251 </Step>

252 

253 <Step title="Enregistrer le hook">

254 Ajoutez un hook `PreToolUse` à `.claude/settings.json` qui exécute le script avant n'importe quel appel d'outil `Edit` ou `Write` :

255 

256 ```json theme={null}

257 {

258 "hooks": {

259 "PreToolUse": [

260 {

261 "matcher": "Edit|Write",

262 "hooks": [

263 {

264 "type": "command",

265 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/protect-files.sh"

266 }

267 ]

268 }

269 ]

270 }

271 }

272 ```

273 </Step>

274</Steps>

275 

276### Réinjecter le contexte après compaction

277 

278Lorsque la fenêtre de contexte de Claude se remplit, la compaction résume la conversation pour libérer de l'espace. Cela peut perdre des détails importants. Utilisez un hook `SessionStart` avec un matcher `compact` pour réinjecter le contexte critique après chaque compaction.

279 

280Tout texte que votre commande écrit sur stdout est ajouté au contexte de Claude. Cet exemple rappelle à Claude les conventions du projet et le travail récent. Ajoutez ceci à `.claude/settings.json` à la racine de votre projet :

281 

282```json theme={null}

283{

284 "hooks": {

285 "SessionStart": [

286 {

287 "matcher": "compact",

288 "hooks": [

289 {

290 "type": "command",

291 "command": "echo 'Reminder: use Bun, not npm. Run bun test before committing. Current sprint: auth refactor.'"

292 }

293 ]

294 }

295 ]

296 }

297}

298```

299 

300Vous 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.

301 

302### Auditer les modifications de configuration

303 

304Suivez quand les fichiers de paramètres ou de skills changent pendant une session. L'événement `ConfigChange` se déclenche lorsqu'un processus externe ou un éditeur modifie un fichier de configuration, afin que vous puissiez enregistrer les modifications pour la conformité ou bloquer les modifications non autorisées.

305 

306Cet exemple ajoute chaque modification à un journal d'audit. Ajoutez ceci à `~/.claude/settings.json` :

307 

308```json theme={null}

309{

310 "hooks": {

311 "ConfigChange": [

312 {

313 "matcher": "",

314 "hooks": [

315 {

316 "type": "command",

317 "command": "jq -c '{timestamp: now | todate, source: .source, file: .file_path}' >> ~/claude-config-audit.log"

318 }

319 ]

320 }

321 ]

322 }

323}

324```

325 

326Le 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.

327 

328### Recharger l'environnement lorsque le répertoire ou les fichiers changent

329 

330Certains projets définissent des variables d'environnement différentes selon le répertoire dans lequel vous vous trouvez. Des outils comme [direnv](https://direnv.net/) le font automatiquement dans votre shell, mais l'outil Bash de Claude ne récupère pas ces modifications de lui-même.

331 

332L'association d'un hook `SessionStart` avec un hook `CwdChanged` corrige cela. `SessionStart` charge les variables pour le répertoire dans lequel vous lancez, et `CwdChanged` les recharge chaque fois que Claude change de répertoire. Les deux écrivent dans `CLAUDE_ENV_FILE`, que Claude Code exécute comme un préambule de script avant chaque commande Bash. Ajoutez ceci à `~/.claude/settings.json` :

333 

334```json theme={null}

335{

336 "hooks": {

337 "SessionStart": [

338 {

339 "hooks": [

340 {

341 "type": "command",

342 "command": "direnv export bash > \"$CLAUDE_ENV_FILE\""

343 }

344 ]

345 }

346 ],

347 "CwdChanged": [

348 {

349 "hooks": [

350 {

351 "type": "command",

352 "command": "direnv export bash > \"$CLAUDE_ENV_FILE\""

353 }

354 ]

355 }

356 ]

357 }

358}

359```

360 

361Exé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`.

362 

363Pour 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 `|`. Pour construire la liste de surveillance, cette valeur est divisée en noms de fichiers littéraux plutôt qu'évaluée 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 :

364 

365```json theme={null}

366{

367 "hooks": {

368 "FileChanged": [

369 {

370 "matcher": ".envrc|.env",

371 "hooks": [

372 {

373 "type": "command",

374 "command": "direnv export bash > \"$CLAUDE_ENV_FILE\""

375 }

376 ]

377 }

378 ]

379 }

380}

381```

382 

383Consultez 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`.

384 

385### Approuver automatiquement les invites de permission spécifiques

386 

387Ignorez la boîte de dialogue d'approbation pour les appels d'outils que vous autorisez toujours. Cet exemple approuve automatiquement `ExitPlanMode`, l'outil que Claude appelle lorsqu'il termine de présenter un plan et demande de procéder, afin que vous ne soyez pas invité à chaque fois qu'un plan est prêt.

388 

389Contrairement aux exemples de code de sortie ci-dessus, l'approbation automatique nécessite que votre hook écrive une décision JSON sur stdout. Un hook `PermissionRequest` se déclenche lorsque Claude Code est sur le point d'afficher une boîte de dialogue de permission, et retourner `"behavior": "allow"` y répond en votre nom.

390 

391Le matcher limite le hook à `ExitPlanMode` uniquement, afin qu'aucune autre invite ne soit affectée. Ajoutez ceci à `~/.claude/settings.json` :

392 

393```json theme={null}

394{

395 "hooks": {

396 "PermissionRequest": [

397 {

398 "matcher": "ExitPlanMode",

399 "hooks": [

400 {

401 "type": "command",

402 "command": "echo '{\"hookSpecificOutput\": {\"hookEventName\": \"PermissionRequest\", \"decision\": {\"behavior\": \"allow\"}}}'"

403 }

404 ]

405 }

406 ]

407 }

408}

409```

410 

411Lorsque le hook approuve, Claude Code quitte le mode plan et restaure le mode de permission qui était actif avant que vous entriez en mode plan. La transcription affiche « Allowed by PermissionRequest hook » où la boîte de dialogue aurait apparu. Le chemin du hook garde toujours la conversation actuelle : il ne peut pas effacer le contexte et démarrer une session d'implémentation fraîche comme la boîte de dialogue peut le faire.

412 

413Pour 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.

414 

415<Note>

416 `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`.

417</Note>

418 

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

420 

421```json theme={null}

422{

423 "hookSpecificOutput": {

424 "hookEventName": "PermissionRequest",

425 "decision": {

426 "behavior": "allow",

427 "updatedPermissions": [

428 { "type": "setMode", "mode": "acceptEdits", "destination": "session" }

429 ]

430 }

431 }

432}

433```

434 

435Gardez 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.

436 

437## Comment fonctionnent les hooks

438 

439Les événements de hook se déclenchent à des points spécifiques du cycle de vie de Claude Code. Lorsqu'un événement se déclenche, tous les hooks correspondants s'exécutent en parallèle, et les commandes de hook identiques sont automatiquement dédupliquées. Le tableau ci-dessous montre chaque événement et quand il se déclenche :

440 

441| Event | When it fires |

442| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |

443| `SessionStart` | When a session begins or resumes |

444| `Setup` | When you start Claude Code with `--init-only`, or with `--init` or `--maintenance` in `-p` mode. For one-time preparation in CI or scripts |

445| `UserPromptSubmit` | When you submit a prompt, before Claude processes it |

446| `UserPromptExpansion` | When a user-typed command expands into a prompt, before it reaches Claude. Can block the expansion |

447| `PreToolUse` | Before a tool call executes. Can block it |

448| `PermissionRequest` | When a permission dialog appears |

449| `PermissionDenied` | When a tool call is denied by the auto mode classifier. Return `{retry: true}` to tell the model it may retry the denied tool call |

450| `PostToolUse` | After a tool call succeeds |

451| `PostToolUseFailure` | After a tool call fails |

452| `PostToolBatch` | After a full batch of parallel tool calls resolves, before the next model call |

453| `Notification` | When Claude Code sends a notification |

454| `SubagentStart` | When a subagent is spawned |

455| `SubagentStop` | When a subagent finishes |

456| `TaskCreated` | When a task is being created via `TaskCreate` |

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

458| `Stop` | When Claude finishes responding |

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

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

461| `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 |

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

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

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

465| `WorktreeCreate` | When a worktree is being created via `--worktree` or `isolation: "worktree"`. Replaces default git behavior |

466| `WorktreeRemove` | When a worktree is being removed, either at session exit or when a subagent finishes |

467| `PreCompact` | Before context compaction |

468| `PostCompact` | After context compaction completes |

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

470| `ElicitationResult` | After a user responds to an MCP elicitation, before the response is sent back to the server |

471| `SessionEnd` | When a session terminates |

472 

473Lorsque plusieurs hooks correspondent, chacun retourne son propre résultat. Pour les décisions, Claude Code choisit la réponse la plus restrictive. Un hook `PreToolUse` retournant `deny` annule l'appel d'outil peu importe ce que les autres retournent. Un hook retournant `ask` force l'invite de permission même si le reste retourne `allow`. Le texte de `additionalContext` est conservé de chaque hook et transmis à Claude ensemble.

474 

475Chaque 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 :

476 

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

478* `"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).

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

480* `"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).

481 

482### Lire l'entrée et retourner la sortie

483 

484Les hooks communiquent avec Claude Code via stdin, stdout, stderr et les codes de sortie. Lorsqu'un événement se déclenche, Claude Code transmet les données spécifiques à l'événement en JSON à stdin de votre script. Votre script lit ces données, fait son travail, et dit à Claude Code quoi faire ensuite via le code de sortie.

485 

486#### Entrée du hook

487 

488Chaque événement inclut des champs communs comme `session_id` et `cwd`, mais chaque type d'événement ajoute des données différentes. Par exemple, lorsque Claude exécute une commande Bash, un hook `PreToolUse` reçoit quelque chose comme ceci sur stdin :

489 

490```json theme={null}

491{

492 "session_id": "abc123", // unique ID for this session

493 "cwd": "/Users/sarah/myproject", // working directory when the event fired

494 "hook_event_name": "PreToolUse", // which event triggered this hook

495 "tool_name": "Bash", // the tool Claude is about to use

496 "tool_input": { // the arguments Claude passed to the tool

497 "command": "npm test" // for Bash, this is the shell command

498 }

499}

500```

501 

502Votre 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.

503 

504#### Sortie du hook

505 

506Votre script dit à Claude Code quoi faire ensuite en écrivant sur stdout ou stderr et en quittant avec un code spécifique. Par exemple, un hook `PreToolUse` qui veut bloquer une commande :

507 

508```bash theme={null}

509#!/bin/bash

510INPUT=$(cat)

511COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command')

512 

513if echo "$COMMAND" | grep -q "drop table"; then

514 echo "Blocked: dropping tables is not allowed" >&2 # stderr becomes Claude's feedback

515 exit 2 # exit 2 = block the action

516fi

517 

518exit 0 # exit 0 = let it proceed

519```

520 

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

522 

523* **Exit 0** : l'action se poursuit. Pour les hooks `UserPromptSubmit`, `UserPromptExpansion` et `SessionStart`, tout ce que vous écrivez sur stdout est ajouté au contexte de Claude.

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

525* **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).

526 

527#### Sortie JSON structurée

528 

529Les codes de sortie vous donnent deux options : autoriser ou bloquer. Pour plus de contrôle, quittez 0 et imprimez un objet JSON sur stdout à la place.

530 

531<Note>

532 Utilisez exit 2 pour bloquer avec un message stderr, ou exit 0 avec JSON pour un contrôle structuré. Ne les mélangez pas : Claude Code ignore JSON lorsque vous quittez 2.

533</Note>

534 

535Par exemple, un hook `PreToolUse` peut refuser un appel d'outil et dire à Claude pourquoi, ou l'escalader à l'utilisateur pour approbation :

536 

537```json theme={null}

538{

539 "hookSpecificOutput": {

540 "hookEventName": "PreToolUse",

541 "permissionDecision": "deny",

542 "permissionDecisionReason": "Use rg instead of grep for better performance"

543 }

544}

545```

546 

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

548 

549* `"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

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

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

552 

553Une 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.

554 

555Retourner `"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é. 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.

556 

557D'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.

558 

559Pour les hooks `UserPromptSubmit`, utilisez `additionalContext` à la place pour injecter du texte dans le contexte de Claude. Les hooks basés sur des invites (`type: "prompt"`) gèrent la sortie différemment : consultez [Hooks basés sur des invites](#prompt-based-hooks).

560 

561### Filtrer les hooks avec des matchers

562 

563Sans matcher, un hook se déclenche à chaque occurrence de son événement. Les matchers vous permettent de réduire cela. Par exemple, si vous voulez exécuter un formateur uniquement après les modifications de fichiers (pas après chaque appel d'outil), ajoutez un matcher à votre hook `PostToolUse` :

564 

565```json theme={null}

566{

567 "hooks": {

568 "PostToolUse": [

569 {

570 "matcher": "Edit|Write",

571 "hooks": [

572 { "type": "command", "command": "prettier --write ..." }

573 ]

574 }

575 ]

576 }

577}

578```

579 

580Le 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. Consultez [Modèles de matcher](/fr/hooks#matcher-patterns) pour savoir comment les noms simples et les expressions régulières sont évalués.

581 

582<Note>

583 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`.

584</Note>

585 

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

587 

588| Événement | Ce que le matcher filtre | Exemples de valeurs de matcher |

589| :-------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------- |

590| `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied` | nom de l'outil | `Bash`, `Edit\|Write`, `mcp__.*` |

591| `SessionStart` | comment la session a démarré | `startup`, `resume`, `clear`, `compact` |

592| `Setup` | quel drapeau CLI a déclenché la configuration | `init`, `maintenance` |

593| `SessionEnd` | pourquoi la session s'est terminée | `clear`, `resume`, `logout`, `prompt_input_exit`, `bypass_permissions_disabled`, `other` |

594| `Notification` | type de notification | `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_complete`, `elicitation_response` |

595| `SubagentStart` | type d'agent | `general-purpose`, `Explore`, `Plan`, ou noms d'agents personnalisés |

596| `PreCompact`, `PostCompact` | ce qui a déclenché la compaction | `manual`, `auto` |

597| `SubagentStop` | type d'agent | mêmes valeurs que `SubagentStart` |

598| `ConfigChange` | source de configuration | `user_settings`, `project_settings`, `local_settings`, `policy_settings`, `skills` |

599| `StopFailure` | type d'erreur | `rate_limit`, `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `invalid_request`, `server_error`, `max_output_tokens`, `unknown` |

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

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

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

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

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

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

606 

607Quelques autres exemples montrant des matchers sur différents types d'événements :

608 

609<Tabs>

610 <Tab title="Enregistrer chaque commande Bash">

611 Correspond uniquement aux appels d'outil `Bash` et enregistre chaque commande dans un fichier. L'événement `PostToolUse` se déclenche après la fin de la commande, donc `tool_input.command` contient ce qui a été exécuté. Le hook reçoit les données d'événement en JSON sur stdin, et `jq -r '.tool_input.command'` extrait juste la chaîne de commande, que `>>` ajoute au fichier journal :

612 

613 ```json theme={null}

614 {

615 "hooks": {

616 "PostToolUse": [

617 {

618 "matcher": "Bash",

619 "hooks": [

620 {

621 "type": "command",

622 "command": "jq -r '.tool_input.command' >> ~/.claude/command-log.txt"

623 }

624 ]

625 }

626 ]

627 }

628 }

629 ```

630 </Tab>

631 

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

633 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`. 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.

634 

635 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) :

636 

637 ```json theme={null}

638 {

639 "hooks": {

640 "PreToolUse": [

641 {

642 "matcher": "mcp__github__.*",

643 "hooks": [

644 {

645 "type": "command",

646 "command": "echo \"GitHub tool called: $(jq -r '.tool_name')\" >&2"

647 }

648 ]

649 }

650 ]

651 }

652 }

653 ```

654 </Tab>

655 

656 <Tab title="Nettoyer à la fin de la session">

657 L'événement `SessionEnd` supporte les matchers sur la raison de la fin de la session. Ce hook ne se déclenche que sur `clear` (lorsque vous exécutez `/clear`), pas sur les sorties normales :

658 

659 ```json theme={null}

660 {

661 "hooks": {

662 "SessionEnd": [

663 {

664 "matcher": "clear",

665 "hooks": [

666 {

667 "type": "command",

668 "command": "rm -f /tmp/claude-scratch-*.txt"

669 }

670 ]

671 }

672 ]

673 }

674 }

675 ```

676 </Tab>

677</Tabs>

678 

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

680 

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

682 

683<Note>

684 Le champ `if` nécessite Claude Code v2.1.85 ou ultérieur. Les versions antérieures l'ignorent et exécutent le hook à chaque appel correspondant.

685</Note>

686 

687Le 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, ou lorsqu'une commande Bash est trop complexe à analyser. Cela va au-delà du `matcher`, qui filtre au niveau du groupe par nom d'outil uniquement.

688 

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

690 

691```json theme={null}

692{

693 "hooks": {

694 "PreToolUse": [

695 {

696 "matcher": "Bash",

697 "hooks": [

698 {

699 "type": "command",

700 "if": "Bash(git *)",

701 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/check-git-policy.sh"

702 }

703 ]

704 }

705 ]

706 }

707}

708```

709 

710Le processus du hook ne se génère que lorsqu'une sous-commande de la commande Bash correspond à `git *`, ou lorsque la commande est trop complexe à analyser en sous-commandes. Pour les commandes composées comme `npm test && git push`, Claude Code évalue chaque sous-commande et déclenche le hook car `git push` correspond. Le 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.

711 

712`if` ne fonctionne que sur les événements d'outils : `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest` et `PermissionDenied`. L'ajouter à tout autre événement empêche le hook de s'exécuter.

713 

714### Configurer l'emplacement du hook

715 

716L'endroit où vous ajoutez un hook détermine son périmètre :

717 

718| Emplacement | Périmètre | Partageable |

719| :--------------------------------------------------------- | :---------------------------------------- | :--------------------------------------- |

720| `~/.claude/settings.json` | Tous vos projets | Non, local à votre machine |

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

722| `.claude/settings.local.json` | Projet unique | Non, gitignored |

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

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

725| [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 |

726 

727Exécutez [`/hooks`](/fr/hooks#the-hooks-menu) dans Claude Code pour parcourir tous les hooks configurés regroupés par événement. Pour désactiver tous les hooks à la fois, définissez `"disableAllHooks": true` dans votre fichier de paramètres.

728 

729Si vous modifiez les fichiers de paramètres directement pendant que Claude Code s'exécute, l'observateur de fichiers récupère normalement les modifications de hook automatiquement.

730 

731## Hooks basés sur des invites

732 

733Pour les décisions qui nécessitent un jugement plutôt que des règles déterministes, utilisez les hooks `type: "prompt"`. Au lieu d'exécuter une commande shell, Claude Code envoie votre invite et les données d'entrée du hook à un modèle Claude (Haiku par défaut) pour prendre la décision. Vous pouvez spécifier un modèle différent avec le champ `model` si vous avez besoin de plus de capacité.

734 

735Le seul travail du modèle est de retourner une décision oui/non en JSON :

736 

737* `"ok": true` : l'action se poursuit

738* `"ok": false` : ce qui se passe dépend de l'événement :

739 * `Stop` et `SubagentStop` : la `reason` est renvoyée à Claude afin qu'il continue à travailler

740 * `PreToolUse` : l'appel d'outil est refusé et la `reason` est retournée à Claude comme erreur d'outil, afin qu'il puisse s'ajuster et continuer

741 * `PostToolUse`, `PostToolBatch`, `UserPromptSubmit` et `UserPromptExpansion` : le tour se termine et la `reason` apparaît dans le chat sous forme de ligne d'avertissement

742 

743Cet exemple utilise un hook `Stop` pour demander au modèle si toutes les tâches demandées sont complètes. Si le modèle retourne `"ok": false`, Claude continue à travailler et utilise la `reason` comme sa prochaine instruction :

744 

745```json theme={null}

746{

747 "hooks": {

748 "Stop": [

749 {

750 "hooks": [

751 {

752 "type": "prompt",

753 "prompt": "Check if all tasks are complete. If not, respond with {\"ok\": false, \"reason\": \"what remains to be done\"}."

754 }

755 ]

756 }

757 ]

758 }

759}

760```

761 

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

763 

764## Hooks basés sur des agents

765 

766<Warning>

767 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).

768</Warning>

769 

770Lorsque 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.

771 

772Les hooks d'agent utilisent le même format de réponse `"ok"` / `"reason"` que les hooks d'invite, mais avec un délai d'expiration par défaut plus long de 60 secondes et jusqu'à 50 tours d'utilisation d'outils.

773 

774Cet exemple vérifie que les tests réussissent avant de permettre à Claude de s'arrêter :

775 

776```json theme={null}

777{

778 "hooks": {

779 "Stop": [

780 {

781 "hooks": [

782 {

783 "type": "agent",

784 "prompt": "Verify that all unit tests pass. Run the test suite and check the results. $ARGUMENTS",

785 "timeout": 120

786 }

787 ]

788 }

789 ]

790 }

791}

792```

793 

794Utilisez 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.

795 

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

797 

798## Hooks HTTP

799 

800Utilisez les hooks `type: "http"` pour POST les données d'événement vers un point de terminaison HTTP au lieu d'exécuter une commande shell. Le point de terminaison reçoit le même JSON qu'un hook de commande recevrait sur stdin, et retourne les résultats via le corps de la réponse HTTP en utilisant le même format JSON.

801 

802Les hooks HTTP sont utiles lorsque vous voulez qu'un serveur web, une fonction cloud ou un service externe gère la logique du hook : par exemple, un service d'audit partagé qui enregistre les événements d'utilisation d'outils dans une équipe.

803 

804Cet exemple poste chaque utilisation d'outil vers un service de journalisation local :

805 

806```json theme={null}

807{

808 "hooks": {

809 "PostToolUse": [

810 {

811 "hooks": [

812 {

813 "type": "http",

814 "url": "http://localhost:8080/hooks/tool-use",

815 "headers": {

816 "Authorization": "Bearer $MY_TOKEN"

817 },

818 "allowedEnvVars": ["MY_TOKEN"]

819 }

820 ]

821 }

822 ]

823 }

824}

825```

826 

827Le 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.

828 

829Les 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.

830 

831Pour 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.

832 

833## Limitations et dépannage

834 

835### Limitations

836 

837* Les hooks de commande communiquent uniquement via stdout, stderr et les codes de sortie. Ils ne peuvent pas déclencher directement des commandes `/` ou des appels d'outils. Le texte retourné via `additionalContext` est injecté comme un rappel système que Claude lit en tant que texte brut. Les hooks HTTP communiquent via le corps de la réponse à la place.

838* Le délai d'expiration du hook est de 10 minutes par défaut, configurable par hook avec le champ `timeout` (en secondes).

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

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

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

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

843 

844### Hooks et modes de permission

845 

846Les 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.

847 

848L'inverse n'est pas vrai : un hook retournant `"allow"` ne contourne pas les règles de refus des paramètres. Les hooks peuvent renforcer les restrictions mais pas les assouplir au-delà de ce que les règles de permission permettent.

849 

850### Hook ne se déclenche pas

851 

852Le hook est configuré mais ne s'exécute jamais.

853 

854* Exécutez `/hooks` et confirmez que le hook apparaît sous l'événement correct

855* Vérifiez que le modèle de matcher correspond exactement au nom de l'outil (les matchers sont sensibles à la casse)

856* Vérifiez que vous déclenchez le bon type d'événement (par exemple, `PreToolUse` se déclenche avant l'exécution de l'outil, `PostToolUse` se déclenche après)

857* Si vous utilisez des hooks `PermissionRequest` en mode non-interactif (`-p`), passez à `PreToolUse` à la place

858 

859### Erreur du hook dans la sortie

860 

861Vous voyez un message comme « PreToolUse hook error : ... » dans la transcription.

862 

863* Votre script a quitté avec un code non-zéro de manière inattendue. Testez-le manuellement en piping du JSON d'exemple :

864 ```bash theme={null}

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

866 echo $? # Check the exit code

867 ```

868* Si vous voyez « command not found », utilisez des chemins absolus ou `$CLAUDE_PROJECT_DIR` pour référencer les scripts

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

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

871 

872### `/hooks` n'affiche aucun hook configuré

873 

874Vous avez modifié un fichier de paramètres mais les hooks n'apparaissent pas dans le menu.

875 

876* Les modifications de fichiers sont normalement récupérées automatiquement. Si elles n'ont pas apparues après quelques secondes, l'observateur de fichiers peut avoir manqué la modification : redémarrez votre session pour forcer un rechargement.

877* Vérifiez que votre JSON est valide (les virgules finales et les commentaires ne sont pas autorisés)

878* Confirmez que le fichier de paramètres est au bon emplacement : `.claude/settings.json` pour les hooks de projet, `~/.claude/settings.json` pour les hooks globaux

879 

880### Le hook Stop s'exécute indéfiniment

881 

882Claude continue à travailler dans une boucle infinie au lieu de s'arrêter.

883 

884Votre script de hook Stop doit vérifier s'il a déjà déclenché une continuation. Analysez le champ `stop_hook_active` de l'entrée JSON et quittez tôt s'il est `true` :

885 

886```bash theme={null}

887#!/bin/bash

888INPUT=$(cat)

889if [ "$(echo "$INPUT" | jq -r '.stop_hook_active')" = "true" ]; then

890 exit 0 # Allow Claude to stop

891fi

892# ... rest of your hook logic

893```

894 

895### Validation JSON échouée

896 

897Claude Code affiche une erreur d'analyse JSON même si votre script de hook produit du JSON valide.

898 

899Lorsque Claude Code exécute un hook, il génère un shell qui source votre profil (`~/.zshrc` ou `~/.bashrc`). Si votre profil contient des instructions `echo` inconditionnelles, cette sortie est ajoutée au début de votre JSON du hook :

900 

901```text theme={null}

902Shell ready on arm64

903{"decision": "block", "reason": "Not allowed"}

904```

905 

906Claude Code essaie d'analyser ceci en JSON et échoue. Pour corriger cela, enveloppez les instructions echo dans votre profil shell afin qu'elles ne s'exécutent que dans les shells interactifs :

907 

908```bash theme={null}

909# In ~/.zshrc or ~/.bashrc

910if [[ $- == *i* ]]; then

911 echo "Shell ready"

912fi

913```

914 

915La variable `$-` contient les drapeaux du shell, et `i` signifie interactif. Les hooks s'exécutent dans des shells non-interactifs, donc l'echo est ignoré.

916 

917### Techniques de débogage

918 

919La vue de transcription, basculée avec `Ctrl+O`, affiche un résumé d'une ligne pour chaque hook qui s'est déclenché : le succès est silencieux, les erreurs de blocage affichent stderr, et les erreurs sans blocage affichent un avis `<hook name> hook error` suivi de la première ligne de stderr.

920 

921Pour les détails d'exécution complets incluant les hooks qui ont correspondu, leurs codes de sortie, stdout et stderr, lisez le journal de débogage. Démarrez Claude Code avec `claude --debug-file /tmp/claude.log` pour écrire dans un chemin connu, puis `tail -f /tmp/claude.log` dans un autre terminal. Si vous avez démarré sans ce drapeau, exécutez `/debug` en milieu de session pour activer la journalisation et trouver le chemin du journal.

922 

923## En savoir plus

924 

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

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

927* [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

how-claude-code-works.md +263 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Comment fonctionne Claude Code

6 

7> Comprenez la boucle agentive, les outils intégrés et comment Claude Code interagit avec votre projet.

8 

9Claude Code est un assistant agentif qui s'exécute dans votre terminal. Bien qu'il excelle dans la programmation, il peut vous aider pour tout ce que vous pouvez faire à partir de la ligne de commande : rédiger de la documentation, exécuter des builds, rechercher des fichiers, faire des recherches sur des sujets, et bien plus.

10 

11Ce guide couvre l'architecture centrale, les capacités intégrées, et [des conseils pour travailler efficacement avec Claude Code](#work-effectively-with-claude-code). Pour des procédures pas à pas, consultez [Workflows courants](/fr/common-workflows). Pour les fonctionnalités d'extensibilité comme les skills, MCP et hooks, consultez [Étendre Claude Code](/fr/features-overview).

12 

13## La boucle agentive

14 

15Lorsque vous donnez une tâche à Claude, il travaille à travers trois phases : **rassembler le contexte**, **agir**, et **vérifier les résultats**. Ces phases se mélangent ensemble. Claude utilise des outils tout au long du processus, qu'il s'agisse de rechercher des fichiers pour comprendre votre code, d'éditer pour apporter des modifications, ou d'exécuter des tests pour vérifier son travail.

16 

17<img src="https://mintcdn.com/claude-code/c5r9_6tjPMzFdDDT/images/agentic-loop.svg?fit=max&auto=format&n=c5r9_6tjPMzFdDDT&q=85&s=5f1827dec8539f38adee90ead3a85a38" alt="La boucle agentive : Votre prompt conduit Claude à rassembler le contexte, agir, vérifier les résultats, et répéter jusqu'à ce que la tâche soit terminée. Vous pouvez interrompre à tout moment." width="720" height="280" data-path="images/agentic-loop.svg" />

18 

19La boucle s'adapte à ce que vous demandez. Une question sur votre base de code pourrait nécessiter uniquement la collecte de contexte. Une correction de bug parcourt les trois phases à plusieurs reprises. Une refactorisation pourrait impliquer une vérification extensive. Claude décide ce que chaque étape nécessite en fonction de ce qu'il a appris à l'étape précédente, en enchaînant des dizaines d'actions ensemble et en se corrigeant en cours de route.

20 

21Vous faites également partie de cette boucle. Vous pouvez interrompre à tout moment pour orienter Claude dans une direction différente, fournir un contexte supplémentaire, ou lui demander d'essayer une approche différente. Claude fonctionne de manière autonome mais reste réactif à votre contribution.

22 

23La boucle agentive est alimentée par deux composants : [les modèles](#models) qui raisonnent et [les outils](#tools) qui agissent. Claude Code sert de **harnais agentif** autour de Claude : il fournit les outils, la gestion du contexte, et l'environnement d'exécution qui transforment un modèle de langage en un agent de codage capable.

24 

25### Modèles

26 

27Claude Code utilise les modèles Claude pour comprendre votre code et raisonner sur les tâches. Claude peut lire du code dans n'importe quel langage, comprendre comment les composants se connectent, et déterminer ce qui doit changer pour accomplir votre objectif. Pour les tâches complexes, il divise le travail en étapes, les exécute, et s'ajuste en fonction de ce qu'il apprend.

28 

29[Plusieurs modèles](/fr/model-config) sont disponibles avec des compromis différents. Sonnet gère bien la plupart des tâches de codage. Opus fournit un raisonnement plus fort pour les décisions architecturales complexes. Basculez avec `/model` pendant une session ou commencez avec `claude --model <name>`.

30 

31Lorsque ce guide dit « Claude choisit » ou « Claude décide », c'est le modèle qui effectue le raisonnement.

32 

33### Outils

34 

35Les outils sont ce qui rend Claude Code agentif. Sans outils, Claude ne peut que répondre avec du texte. Avec les outils, Claude peut agir : lire votre code, éditer des fichiers, exécuter des commandes, rechercher sur le web, et interagir avec des services externes. Chaque utilisation d'outil retourne des informations qui se réintègrent dans la boucle, informant la décision suivante de Claude.

36 

37Les outils intégrés se divisent généralement en cinq catégories, chacune représentant un type d'agentivité différent.

38 

39| Catégorie | Ce que Claude peut faire |

40| ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

41| **Opérations sur les fichiers** | Lire des fichiers, éditer du code, créer de nouveaux fichiers, renommer et réorganiser |

42| **Recherche** | Trouver des fichiers par motif, rechercher du contenu avec regex, explorer les bases de code |

43| **Exécution** | Exécuter des commandes shell, démarrer des serveurs, exécuter des tests, utiliser git |

44| **Web** | Rechercher sur le web, récupérer de la documentation, rechercher des messages d'erreur |

45| **Intelligence du code** | Voir les erreurs de type et les avertissements après les éditions, accéder aux définitions, trouver les références (nécessite [les plugins d'intelligence du code](/fr/discover-plugins#code-intelligence)) |

46 

47Ce sont les capacités principales. Claude dispose également d'outils pour générer des subagents, vous poser des questions, et d'autres tâches d'orchestration. Consultez [Outils disponibles pour Claude](/fr/tools-reference) pour la liste complète.

48 

49Claude choisit les outils à utiliser en fonction de votre prompt et de ce qu'il apprend en cours de route. Lorsque vous dites « corriger les tests qui échouent », Claude pourrait :

50 

511. Exécuter la suite de tests pour voir ce qui échoue

522. Lire la sortie d'erreur

533. Rechercher les fichiers source pertinents

544. Lire ces fichiers pour comprendre le code

555. Éditer les fichiers pour corriger le problème

566. Exécuter les tests à nouveau pour vérifier

57 

58Chaque utilisation d'outil donne à Claude de nouvelles informations qui informent l'étape suivante. C'est la boucle agentive en action.

59 

60**Étendre les capacités de base :** Les outils intégrés sont la fondation. Vous pouvez étendre ce que Claude sait avec [les skills](/fr/skills), vous connecter à des services externes avec [MCP](/fr/mcp), automatiser les workflows avec [hooks](/fr/hooks), et déléguer des tâches à [des subagents](/fr/sub-agents). Ces extensions forment une couche au-dessus de la boucle agentive principale. Consultez [Étendre Claude Code](/fr/features-overview) pour des conseils sur le choix de la bonne extension pour vos besoins.

61 

62## Ce que Claude peut accéder

63 

64Ce guide se concentre sur le terminal. Claude Code s'exécute également dans [VS Code](/fr/vs-code), [les IDEs JetBrains](/fr/jetbrains), et d'autres environnements.

65 

66Lorsque vous exécutez `claude` dans un répertoire, Claude Code accède à :

67 

68* **Votre projet.** Les fichiers de votre répertoire et sous-répertoires, plus les fichiers ailleurs avec votre permission.

69* **Votre terminal.** N'importe quelle commande que vous pourriez exécuter : outils de build, git, gestionnaires de paquets, utilitaires système, scripts. Si vous pouvez le faire à partir de la ligne de commande, Claude aussi.

70* **Votre état git.** La branche actuelle, les modifications non validées, et l'historique récent des commits.

71* **Votre [CLAUDE.md](/fr/memory).** Un fichier markdown où vous stockez les instructions spécifiques au projet, les conventions, et le contexte que Claude devrait connaître à chaque session.

72* **[Mémoire automatique](/fr/memory#auto-memory).** Les apprentissages que Claude sauvegarde automatiquement au fur et à mesure que vous travaillez, comme les motifs de projet et vos préférences. Les 200 premières lignes ou 25 KB de MEMORY.md, selon ce qui vient en premier, se chargent au début de chaque session.

73* **Les extensions que vous configurez.** [Les serveurs MCP](/fr/mcp) pour les services externes, [les skills](/fr/skills) pour les workflows, [les subagents](/fr/sub-agents) pour le travail délégué, et [Claude dans Chrome](/fr/chrome) pour l'interaction avec le navigateur.

74 

75Parce que Claude voit votre projet entier, il peut travailler à travers celui-ci. Lorsque vous demandez à Claude de « corriger le bug d'authentification », il recherche les fichiers pertinents, lit plusieurs fichiers pour comprendre le contexte, effectue des éditions coordonnées à travers eux, exécute des tests pour vérifier la correction, et valide les modifications si vous le demandez. C'est différent des assistants de code en ligne qui ne voient que le fichier actuel.

76 

77## Environnements et interfaces

78 

79La boucle agentive, les outils, et les capacités décrites ci-dessus sont les mêmes partout où vous utilisez Claude Code. Ce qui change, c'est où le code s'exécute et comment vous interagissez avec lui.

80 

81### Environnements d'exécution

82 

83Claude Code s'exécute dans trois environnements, chacun avec des compromis différents pour l'endroit où votre code s'exécute.

84 

85| Environnement | Où le code s'exécute | Cas d'usage |

86| ----------------------- | ------------------------------------------------- | ---------------------------------------------------------------------------- |

87| **Local** | Votre machine | Par défaut. Accès complet à vos fichiers, outils, et environnement |

88| **Cloud** | VMs gérées par Anthropic | Déléguer des tâches, travailler sur des repos que vous n'avez pas localement |

89| **Contrôle à distance** | Votre machine, contrôlée à partir d'un navigateur | Utiliser l'interface web tout en gardant tout local |

90 

91### Interfaces

92 

93Vous pouvez accéder à Claude Code via le terminal, l'[application de bureau](/fr/desktop), [les extensions IDE](/fr/vs-code), [claude.ai/code](https://claude.ai/code), [Contrôle à distance](/fr/remote-control), [Slack](/fr/slack), et [les pipelines CI/CD](/fr/github-actions). L'interface détermine comment vous voyez et interagissez avec Claude, mais la boucle agentive sous-jacente est identique. Consultez [Utiliser Claude Code partout](/fr/overview#use-claude-code-everywhere) pour la liste complète.

94 

95## Travailler avec les sessions

96 

97Claude Code sauvegarde votre conversation localement au fur et à mesure que vous travaillez. Chaque message, utilisation d'outil, et résultat est stocké, ce qui permet [de revenir en arrière](#undo-changes-with-checkpoints), [de reprendre et de forker](#resume-or-fork-sessions) les sessions. Avant que Claude ne fasse des modifications de code, il prend également un snapshot des fichiers affectés afin que vous puissiez revenir en arrière si nécessaire.

98 

99**Les sessions sont indépendantes.** Chaque nouvelle session commence avec une fenêtre de contexte fraîche, sans l'historique de conversation des sessions précédentes. Claude peut persister les apprentissages à travers les sessions en utilisant [la mémoire automatique](/fr/memory#auto-memory), et vous pouvez ajouter vos propres instructions persistantes dans [CLAUDE.md](/fr/memory).

100 

101### Travailler à travers les branches

102 

103Chaque conversation Claude Code est une session liée à votre répertoire actuel. Lorsque vous reprenez, vous ne voyez que les sessions de ce répertoire.

104 

105Claude voit les fichiers de votre branche actuelle. Lorsque vous changez de branche, Claude voit les fichiers de la nouvelle branche, mais votre historique de conversation reste le même. Claude se souvient de ce que vous avez discuté même après avoir changé de branche.

106 

107Puisque les sessions sont liées aux répertoires, vous pouvez exécuter des sessions Claude parallèles en utilisant [git worktrees](/fr/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees), qui créent des répertoires séparés pour les branches individuelles.

108 

109### Reprendre ou forker les sessions

110 

111Lorsque vous reprenez une session avec `claude --continue` ou `claude --resume`, vous reprenez là où vous vous étiez arrêté en utilisant le même ID de session. Les nouveaux messages s'ajoutent à la conversation existante. Votre historique de conversation complet est restauré, mais les permissions scoped à la session ne le sont pas. Vous devrez les réapprouver.

112 

113<img src="https://mintcdn.com/claude-code/c5r9_6tjPMzFdDDT/images/session-continuity.svg?fit=max&auto=format&n=c5r9_6tjPMzFdDDT&q=85&s=fa41d12bfb57579cabfeece907151d30" alt="Continuité de session : reprendre continue la même session, forker crée une nouvelle branche avec un nouvel ID." width="560" height="280" data-path="images/session-continuity.svg" />

114 

115Pour créer une branche et essayer une approche différente sans affecter la session d'origine, utilisez le flag `--fork-session` :

116 

117```bash theme={null}

118claude --continue --fork-session

119```

120 

121Cela crée un nouvel ID de session tout en préservant l'historique de conversation jusqu'à ce point. La session d'origine reste inchangée. Comme pour reprendre, les sessions forkées n'héritent pas des permissions scoped à la session.

122 

123**Même session dans plusieurs terminaux** : Si vous reprenez la même session dans plusieurs terminaux, les deux terminaux écrivent dans le même fichier de session. Les messages des deux sont entrelacés, comme deux personnes écrivant dans le même carnet. Rien ne se corrompt, mais la conversation devient confuse. Chaque terminal ne voit que ses propres messages pendant la session, mais si vous reprenez cette session plus tard, vous verrez tout entrelacé. Pour le travail parallèle à partir du même point de départ, utilisez `--fork-session` pour donner à chaque terminal sa propre session propre.

124 

125### La fenêtre de contexte

126 

127La fenêtre de contexte de Claude contient votre historique de conversation, le contenu des fichiers, les sorties de commande, [CLAUDE.md](/fr/memory), [la mémoire automatique](/fr/memory#auto-memory), les skills chargés, et les instructions système. Au fur et à mesure que vous travaillez, le contexte se remplit. Claude compacte automatiquement, mais les instructions du début de la conversation peuvent être perdues. Mettez les règles persistantes dans CLAUDE.md, et exécutez `/context` pour voir ce qui utilise l'espace.

128 

129Pour une procédure interactive d'exploration de ce qui se charge et quand, consultez [Explorer la fenêtre de contexte](/fr/context-window).

130 

131#### Lorsque le contexte se remplit

132 

133Claude Code gère le contexte automatiquement à mesure que vous approchez de la limite. Il efface d'abord les sorties d'outils plus anciennes, puis résume la conversation si nécessaire. Vos demandes et les extraits de code clés sont préservés ; les instructions détaillées du début de la conversation peuvent être perdues. Mettez les règles persistantes dans CLAUDE.md plutôt que de compter sur l'historique de conversation.

134 

135Pour contrôler ce qui est préservé pendant la compaction, ajoutez une section « Compact Instructions » à CLAUDE.md ou exécutez `/compact` avec un focus (comme `/compact focus on the API changes`).

136 

137Exécutez `/context` pour voir ce qui utilise l'espace. Les définitions d'outils MCP sont différées par défaut et chargées à la demande via [la recherche d'outils](/fr/mcp#scale-with-mcp-tool-search), donc seuls les noms d'outils consomment du contexte jusqu'à ce que Claude utilise un outil spécifique. Exécutez `/mcp` pour vérifier les coûts par serveur.

138 

139#### Gérer le contexte avec les skills et les subagents

140 

141Au-delà de la compaction, vous pouvez utiliser d'autres fonctionnalités pour contrôler ce qui se charge dans le contexte.

142 

143[Les skills](/fr/skills) se chargent à la demande. Claude voit les descriptions des skills au démarrage de la session, mais le contenu complet ne se charge que lorsqu'un skill est utilisé. Pour les skills que vous invoquez manuellement, définissez `disable-model-invocation: true` pour garder les descriptions hors du contexte jusqu'à ce que vous en ayez besoin.

144 

145[Les subagents](/fr/sub-agents) obtiennent leur propre contexte frais, complètement séparé de votre conversation principale. Leur travail ne gonfle pas votre contexte. Une fois terminés, ils retournent un résumé. Cet isolement est pourquoi les subagents aident avec les sessions longues.

146 

147Consultez [les coûts de contexte](/fr/features-overview#understand-context-costs) pour ce que chaque fonctionnalité coûte, et [réduire l'utilisation des tokens](/fr/costs#reduce-token-usage) pour des conseils sur la gestion du contexte.

148 

149## Rester en sécurité avec les checkpoints et les permissions

150 

151Claude dispose de deux mécanismes de sécurité : les checkpoints vous permettent d'annuler les modifications de fichiers, et les permissions contrôlent ce que Claude peut faire sans demander.

152 

153### Annuler les modifications avec les checkpoints

154 

155**Chaque édition de fichier est réversible.** Avant que Claude n'édite un fichier, il prend un snapshot du contenu actuel. Si quelque chose se passe mal, appuyez deux fois sur `Esc` pour revenir à un état précédent, ou demandez à Claude d'annuler.

156 

157Les checkpoints sont locaux à votre session, séparés de git. Ils ne couvrent que les modifications de fichiers. Les actions qui affectent les systèmes distants (bases de données, APIs, déploiements) ne peuvent pas être checkpointées, c'est pourquoi Claude demande avant d'exécuter des commandes avec des effets secondaires externes.

158 

159### Contrôler ce que Claude peut faire

160 

161Appuyez sur `Shift+Tab` pour parcourir les modes de permission :

162 

163* **Par défaut** : Claude demande avant les éditions de fichiers et les commandes shell

164* **Auto-accepter les éditions** : Claude édite les fichiers sans demander, demande toujours pour les commandes

165* **Plan Mode** : Claude utilise uniquement les outils en lecture seule, créant un plan que vous pouvez approuver avant l'exécution

166* **Mode Auto** : Claude évalue toutes les actions avec des vérifications de sécurité en arrière-plan. Actuellement une préversion de recherche

167 

168Vous pouvez également autoriser des commandes spécifiques dans `.claude/settings.json` afin que Claude ne demande pas à chaque fois. C'est utile pour les commandes de confiance comme `npm test` ou `git status`. Les paramètres peuvent être scoped à partir des politiques à l'échelle de l'organisation jusqu'aux préférences personnelles. Consultez [Permissions](/fr/permissions) pour plus de détails.

169 

170***

171 

172## Travailler efficacement avec Claude Code

173 

174Ces conseils vous aident à obtenir de meilleurs résultats avec Claude Code.

175 

176### Demander de l'aide à Claude Code

177 

178Claude Code peut vous enseigner comment l'utiliser. Posez des questions comme « comment configurer les hooks ? » ou « quelle est la meilleure façon de structurer mon CLAUDE.md ? » et Claude expliquera.

179 

180Les commandes intégrées vous guident également à travers la configuration :

181 

182* `/init` vous guide à travers la création d'un CLAUDE.md pour votre projet

183* `/agents` vous aide à configurer des subagents personnalisés

184* `/doctor` diagnostique les problèmes courants avec votre installation

185 

186### C'est une conversation

187 

188Claude Code est conversationnel. Vous n'avez pas besoin de prompts parfaits. Commencez par ce que vous voulez, puis affinez :

189 

190```text theme={null}

191Corriger le bug de connexion

192```

193 

194\[Claude enquête, essaie quelque chose]

195 

196```text theme={null}

197Ce n'est pas tout à fait correct. Le problème est dans la gestion de session.

198```

199 

200\[Claude ajuste son approche]

201 

202Lorsque la première tentative n'est pas correcte, vous ne recommencez pas. Vous itérez.

203 

204#### Interrompre et orienter

205 

206Vous pouvez interrompre Claude à tout moment. S'il va dans la mauvaise direction, tapez simplement votre correction et appuyez sur Entrée. Claude arrêtera ce qu'il fait et ajustera son approche en fonction de votre contribution. Vous n'avez pas à attendre qu'il finisse ou à recommencer.

207 

208### Être spécifique dès le départ

209 

210Plus votre prompt initial est précis, moins de corrections vous aurez besoin. Référencez des fichiers spécifiques, mentionnez les contraintes, et pointez vers des motifs d'exemple.

211 

212```text theme={null}

213Le flux de paiement est cassé pour les utilisateurs avec des cartes expirées.

214Vérifiez src/payments/ pour le problème, en particulier l'actualisation des tokens.

215Écrivez d'abord un test qui échoue, puis corrigez-le.

216```

217 

218Les prompts vagues fonctionnent, mais vous passerez plus de temps à orienter. Les prompts spécifiques comme celui ci-dessus réussissent souvent à la première tentative.

219 

220### Donner à Claude quelque chose à vérifier

221 

222Claude fonctionne mieux lorsqu'il peut vérifier son propre travail. Incluez des cas de test, collez des captures d'écran de l'interface utilisateur attendue, ou définissez la sortie que vous voulez.

223 

224```text theme={null}

225Implémenter validateEmail. Cas de test : 'user@example.com' → true,

226'invalid' → false, 'user@.com' → false. Exécutez les tests après.

227```

228 

229Pour le travail visuel, collez une capture d'écran de la conception et demandez à Claude de comparer son implémentation avec celle-ci.

230 

231### Explorer avant d'implémenter

232 

233Pour les problèmes complexes, séparez la recherche du codage. Utilisez le plan mode (`Shift+Tab` deux fois) pour analyser d'abord la base de code :

234 

235```text theme={null}

236Lire src/auth/ et comprendre comment nous gérons les sessions.

237Ensuite, créer un plan pour ajouter le support OAuth.

238```

239 

240Examinez le plan, affinez-le à travers la conversation, puis laissez Claude implémenter. Cette approche en deux phases produit de meilleurs résultats que de sauter directement au code.

241 

242### Déléguer, ne pas dicter

243 

244Pensez à déléguer à un collègue capable. Donnez le contexte et la direction, puis faites confiance à Claude pour déterminer les détails :

245 

246```text theme={null}

247Le flux de paiement est cassé pour les utilisateurs avec des cartes expirées.

248Le code pertinent est dans src/payments/. Pouvez-vous enquêter et corriger ?

249```

250 

251Vous n'avez pas besoin de spécifier quels fichiers lire ou quelles commandes exécuter. Claude le détermine.

252 

253## Prochaines étapes

254 

255<CardGroup cols={2}>

256 <Card title="Étendre avec des fonctionnalités" icon="puzzle-piece" href="/fr/features-overview">

257 Ajouter des Skills, des connexions MCP, et des commandes personnalisées

258 </Card>

259 

260 <Card title="Workflows courants" icon="graduation-cap" href="/fr/common-workflows">

261 Guides pas à pas pour les tâches typiques

262 </Card>

263</CardGroup>

interactive-mode.md +362 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Mode interactif

6 

7> Référence complète des raccourcis clavier, modes d'entrée et fonctionnalités interactives dans les sessions Claude Code.

8 

9## Raccourcis clavier

10 

11<Note>

12 Les raccourcis clavier peuvent varier selon la plateforme et le terminal. Appuyez sur `?` pour voir les raccourcis disponibles pour votre environnement.

13 

14 **Utilisateurs macOS** : Les raccourcis de la touche Option/Alt (`Alt+B`, `Alt+F`, `Alt+Y`, `Alt+M`, `Alt+P`, `Alt+T`) nécessitent de configurer Option en tant que Meta dans votre terminal :

15 

16 * **iTerm2** : Paramètres → Profils → Touches → Général → définir la touche Option gauche/droite sur « Esc+ »

17 * **Terminal Apple** : Paramètres → Profils → Clavier → cocher « Utiliser Option comme touche Meta »

18 * **VS Code** : définir `"terminal.integrated.macOptionIsMeta": true` dans les paramètres VS Code

19 

20 Consultez [Configuration du terminal](/fr/terminal-config) pour plus de détails.

21</Note>

22 

23### Contrôles généraux

24 

25| Raccourci | Description | Contexte |

26| :------------------------------------------------ | :-------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

27| `Ctrl+C` | Annuler l'entrée ou la génération actuelle | Interruption standard |

28| `Ctrl+X Ctrl+K` | Arrêter tous les agents en arrière-plan. Appuyez deux fois dans les 3 secondes pour confirmer | Contrôle des agents en arrière-plan |

29| `Ctrl+D` | Quitter la session Claude Code | Signal EOF |

30| `Ctrl+G` ou `Ctrl+X Ctrl+E` | Ouvrir dans l'éditeur de texte par défaut | Modifiez votre invite ou réponse personnalisée dans votre éditeur de texte par défaut. `Ctrl+X Ctrl+E` est la liaison readline native. Activez Afficher la dernière réponse dans l'éditeur externe dans `/config` pour ajouter la réponse précédente de Claude en tant que contexte commenté avec `#` au-dessus de votre invite ; le bloc de commentaire est supprimé lorsque vous enregistrez |

31| `Ctrl+L` | Redessiner l'écran | Force un redessinage complet du terminal. L'entrée et l'historique de la conversation sont conservés. Utilisez ceci pour récupérer si l'affichage devient brouillé ou partiellement vide |

32| `Ctrl+O` | Basculer la visionneuse de transcription | Affiche l'utilisation détaillée des outils et l'exécution. Développe également les appels MCP, qui se réduisent à une seule ligne comme « Called slack 3 times » par défaut |

33| `Ctrl+R` | Recherche inversée dans l'historique des commandes | Recherchez les commandes précédentes de manière interactive |

34| `Ctrl+V` ou `Cmd+V` (iTerm2) ou `Alt+V` (Windows) | Coller une image du presse-papiers | Insère une puce `[Image #N]` au curseur afin que vous puissiez la référencer positionnellement dans votre invite |

35| `Ctrl+B` | Tâches en arrière-plan | Met en arrière-plan les commandes bash et les agents. Les utilisateurs Tmux appuyez deux fois |

36| `Ctrl+T` | Basculer la liste des tâches | Afficher ou masquer la [liste des tâches](#task-list) dans la zone d'état du terminal |

37| `Flèches gauche/droite` | Parcourir les onglets de dialogue | Naviguez entre les onglets dans les dialogues de permission et les menus |

38| `Flèches haut/bas` ou `Ctrl+P`/`Ctrl+N` | Déplacer le curseur ou naviguer dans l'historique des commandes | Dans une entrée multiligne, déplace d'abord le curseur dans l'invite. Une fois que le curseur est déjà sur le bord supérieur ou inférieur, appuyer à nouveau navigue dans l'historique des commandes |

39| `Esc` + `Esc` | Rembobiner ou résumer | Restaurer le code et/ou la conversation à un point antérieur, ou résumer à partir d'un message sélectionné |

40| `Shift+Tab` ou `Alt+M` (certaines configurations) | Basculer les modes de permission | Basculer entre `default`, `acceptEdits`, `plan` et tous les modes que vous avez activés, comme `auto` ou `bypassPermissions`. Consultez [modes de permission](/fr/permission-modes). |

41| `Option+P` (macOS) ou `Alt+P` (Windows/Linux) | Changer de modèle | Changez de modèles sans effacer votre invite |

42| `Option+T` (macOS) ou `Alt+T` (Windows/Linux) | Basculer la réflexion étendue | Activez ou désactivez le mode de réflexion étendue. Sur macOS, configurez votre terminal pour envoyer Option en tant que Meta pour que ce raccourci fonctionne |

43| `Option+O` (macOS) ou `Alt+O` (Windows/Linux) | Basculer le mode rapide | Activez ou désactivez le [mode rapide](/fr/fast-mode) |

44 

45### Édition de texte

46 

47| Raccourci | Description | Contexte |

48| :----------------------- | :------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

49| `Ctrl+A` | Déplacer le curseur au début de la ligne actuelle | Dans une entrée multiligne, déplace au début de la ligne logique actuelle |

50| `Ctrl+E` | Déplacer le curseur à la fin de la ligne actuelle | Dans une entrée multiligne, déplace à la fin de la ligne logique actuelle |

51| `Ctrl+K` | Supprimer jusqu'à la fin de la ligne | Stocke le texte supprimé pour le collage |

52| `Ctrl+U` | Supprimer du curseur au début de la ligne | Stocke le texte supprimé pour le collage. Répétez pour effacer sur plusieurs lignes dans une entrée multiligne. Sur macOS, les émulateurs de terminal y compris iTerm2 et Terminal.app mappent `Cmd+Retour arrière` à ce raccourci |

53| `Ctrl+W` | Supprimer le mot précédent | Stocke le texte supprimé pour le collage. Sur Windows, `Ctrl+Retour arrière` supprime également le mot précédent |

54| `Ctrl+Y` | Coller le texte supprimé | Collez le texte supprimé avec `Ctrl+K`, `Ctrl+U` ou `Ctrl+W` |

55| `Alt+Y` (après `Ctrl+Y`) | Parcourir l'historique du collage | Après le collage, parcourez le texte précédemment supprimé. Nécessite [Option comme Meta](#keyboard-shortcuts) sur macOS |

56| `Alt+B` | Déplacer le curseur d'un mot en arrière | Navigation par mot. Nécessite [Option comme Meta](#keyboard-shortcuts) sur macOS |

57| `Alt+F` | Déplacer le curseur d'un mot en avant | Navigation par mot. Nécessite [Option comme Meta](#keyboard-shortcuts) sur macOS |

58 

59### Thème et affichage

60 

61| Raccourci | Description | Contexte |

62| :-------- | :------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------- |

63| `Ctrl+T` | Basculer la coloration syntaxique pour les blocs de code | Fonctionne uniquement dans le menu du sélecteur `/theme`. Contrôle si le code dans les réponses de Claude utilise la coloration syntaxique |

64 

65### Entrée multiligne

66 

67| Méthode | Raccourci | Contexte |

68| :------------------- | :----------------- | :---------------------------------------------------------------------------------------------------------- |

69| Échappement rapide | `\` + `Entrée` | Fonctionne dans tous les terminaux |

70| Touche Option | `Option+Entrée` | Après activation de [Option comme Meta](/fr/terminal-config#enable-option-key-shortcuts-on-macos) sur macOS |

71| Shift+Entrée | `Shift+Entrée` | Natif dans iTerm2, WezTerm, Ghostty, Kitty, Warp, Terminal Apple |

72| Séquence de contrôle | `Ctrl+J` | Fonctionne dans n'importe quel terminal sans configuration |

73| Mode collage | Coller directement | Pour les blocs de code, les journaux |

74 

75<Tip>

76 Shift+Entrée fonctionne sans configuration dans iTerm2, WezTerm, Ghostty, Kitty, Warp et Terminal Apple. Pour VS Code, Cursor, Windsurf, Alacritty et Zed, exécutez `/terminal-setup` pour installer la liaison.

77</Tip>

78 

79### Commandes rapides

80 

81| Raccourci | Description | Notes |

82| :----------- | :--------------------------- | :------------------------------------------------------------------------------- |

83| `/` au début | Commande ou skill | Consultez les [commandes](#commands) et les [skills](/fr/skills) |

84| `!` au début | Mode shell | Exécutez les commandes directement et ajoutez la sortie d'exécution à la session |

85| `@` | Mention de chemin de fichier | Déclencher l'autocomplétion du chemin de fichier |

86 

87### Visionneuse de transcription

88 

89Lorsque la visionneuse de transcription est ouverte (basculée avec `Ctrl+O`), ces raccourcis sont disponibles. `Ctrl+E` peut être réaffecté via [`transcript:toggleShowAll`](/fr/keybindings).

90 

91| Raccourci | Description |

92| :------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

93| `Ctrl+E` | Basculer afficher tout le contenu |

94| `[` | Écrire la conversation complète dans le scrollback natif de votre terminal afin que `Cmd+F`, le mode copie tmux et d'autres outils natifs puissent la rechercher. Nécessite le [rendu plein écran](/fr/fullscreen#search-and-review-the-conversation) |

95| `v` | Écrire la conversation dans un fichier temporaire et l'ouvrir dans `$VISUAL` ou `$EDITOR`. Nécessite le [rendu plein écran](/fr/fullscreen) |

96| `q`, `Ctrl+C`, `Esc` | Quitter la vue de transcription. Les trois peuvent être réaffectés via [`transcript:exit`](/fr/keybindings) |

97 

98### Entrée vocale

99 

100| Raccourci | Description | Notes |

101| :-------------------------------- | :------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

102| Maintenir ou appuyer sur `Espace` | Dictée vocale | Nécessite que la [dictée vocale](/fr/voice-dictation) soit activée. Maintenez pour enregistrer, ou exécutez `/voice tap` pour le basculement par appui. [Réaffectable](/fr/voice-dictation#rebind-the-dictation-key) |

103 

104## Commandes

105 

106Tapez `/` dans Claude Code pour voir toutes les commandes disponibles, ou tapez `/` suivi de n'importe quelles lettres pour filtrer. Le menu `/` affiche tout ce que vous pouvez invoquer : les commandes intégrées, les [skills](/fr/skills) groupés et créés par l'utilisateur, et les commandes contribuées par les [plugins](/fr/plugins) et les [serveurs MCP](/fr/mcp#use-mcp-prompts-as-commands). Toutes les commandes intégrées ne sont pas visibles pour tous les utilisateurs car certaines dépendent de votre plateforme ou de votre plan.

107 

108Consultez la [référence des commandes](/fr/commands) pour la liste complète des commandes incluses dans Claude Code.

109 

110## Mode éditeur Vim

111 

112Activez l'édition de style vim via `/config` → Mode éditeur.

113 

114### Changement de mode

115 

116| Commande | Action | Du mode |

117| :------- | :------------------------------------------------------- | :------------- |

118| `Esc` | Entrer en mode NORMAL | INSERT, VISUAL |

119| `i` | Insérer avant le curseur | NORMAL |

120| `I` | Insérer au début de la ligne | NORMAL |

121| `a` | Insérer après le curseur | NORMAL |

122| `A` | Insérer à la fin de la ligne | NORMAL |

123| `o` | Ouvrir une ligne en dessous | NORMAL |

124| `O` | Ouvrir une ligne au-dessus | NORMAL |

125| `v` | Commencer une sélection visuelle caractère par caractère | NORMAL |

126| `V` | Commencer une sélection visuelle ligne par ligne | NORMAL |

127 

128### Navigation (mode NORMAL)

129 

130| Commande | Action |

131| :-------------- | :------------------------------------------------------ |

132| `h`/`j`/`k`/`l` | Déplacer gauche/bas/haut/droite |

133| `w` | Mot suivant |

134| `e` | Fin du mot |

135| `b` | Mot précédent |

136| `0` | Début de la ligne |

137| `$` | Fin de la ligne |

138| `^` | Premier caractère non vide |

139| `gg` | Début de l'entrée |

140| `G` | Fin de l'entrée |

141| `f{char}` | Sauter à la prochaine occurrence du caractère |

142| `F{char}` | Sauter à l'occurrence précédente du caractère |

143| `t{char}` | Sauter juste avant la prochaine occurrence du caractère |

144| `T{char}` | Sauter juste après l'occurrence précédente du caractère |

145| `;` | Répéter le dernier mouvement f/F/t/T |

146| `,` | Répéter le dernier mouvement f/F/t/T en sens inverse |

147 

148<Note>

149 En mode normal vim, si le curseur est au début ou à la fin de l'entrée et ne peut pas se déplacer davantage, `j`/`k` et les flèches de direction naviguent dans l'historique des commandes à la place.

150</Note>

151 

152### Édition (mode NORMAL)

153 

154| Commande | Action |

155| :------------- | :-------------------------------------- |

156| `x` | Supprimer le caractère |

157| `dd` | Supprimer la ligne |

158| `D` | Supprimer jusqu'à la fin de la ligne |

159| `dw`/`de`/`db` | Supprimer mot/jusqu'à la fin/en arrière |

160| `cc` | Changer la ligne |

161| `C` | Changer jusqu'à la fin de la ligne |

162| `cw`/`ce`/`cb` | Changer mot/jusqu'à la fin/en arrière |

163| `yy`/`Y` | Copier la ligne |

164| `yw`/`ye`/`yb` | Copier mot/jusqu'à la fin/en arrière |

165| `p` | Coller après le curseur |

166| `P` | Coller avant le curseur |

167| `>>` | Indenter la ligne |

168| `<<` | Dédenter la ligne |

169| `J` | Joindre les lignes |

170| `u` | Annuler |

171| `.` | Répéter la dernière modification |

172 

173### Objets texte (mode NORMAL)

174 

175Les objets texte fonctionnent avec les opérateurs comme `d`, `c` et `y` :

176 

177| Commande | Action |

178| :-------- | :------------------------------------------------- |

179| `iw`/`aw` | Mot intérieur/autour |

180| `iW`/`aW` | MOT intérieur/autour (délimité par l'espace blanc) |

181| `i"`/`a"` | Guillemets doubles intérieurs/autour |

182| `i'`/`a'` | Guillemets simples intérieurs/autour |

183| `i(`/`a(` | Parenthèses intérieures/autour |

184| `i[`/`a[` | Crochets intérieurs/autour |

185| `i{`/`a{` | Accolades intérieures/autour |

186 

187### Mode visuel

188 

189Appuyez sur `v` pour une sélection caractère par caractère ou `V` pour une sélection ligne par ligne. Les mouvements étendent la sélection, et les opérateurs agissent directement sur elle.

190 

191| Commande | Action |

192| :--------------- | :-------------------------------------------------------------------- |

193| `d`/`x` | Supprimer la sélection |

194| `y` | Copier la sélection |

195| `c`/`s` | Changer la sélection |

196| `p` | Remplacer la sélection par le contenu du registre |

197| `r{char}` | Remplacer chaque caractère sélectionné par `{char}` |

198| `~`/`u`/`U` | Basculer, minuscules ou majuscules la sélection |

199| `>`/`<` | Indenter ou dédenter les lignes sélectionnées |

200| `J` | Joindre les lignes sélectionnées |

201| `o` | Échanger le curseur et l'ancre |

202| `iw`/`aw`/`i"`/… | Sélectionner un objet texte |

203| `v`/`V` | Basculer entre caractère par caractère et ligne par ligne, ou quitter |

204 

205Le mode visuel par bloc avec `Ctrl+V` n'est pas pris en charge.

206 

207## Historique des commandes

208 

209Claude Code maintient l'historique des commandes pour la session actuelle :

210 

211* L'historique des entrées est stocké par répertoire de travail

212* L'historique des entrées se réinitialise lorsque vous exécutez `/clear` pour démarrer une nouvelle session. La conversation de la session précédente est conservée et peut être reprise.

213* Utilisez les flèches Haut/Bas pour naviguer (voir les raccourcis clavier ci-dessus)

214* **Remarque** : l'expansion de l'historique (`!`) est désactivée par défaut

215 

216### Recherche inversée avec Ctrl+R

217 

218Appuyez sur `Ctrl+R` pour rechercher de manière interactive dans votre historique de commandes :

219 

2201. **Démarrer la recherche** : appuyez sur `Ctrl+R` pour activer la recherche d'historique inversée

2212. **Tapez la requête** : entrez le texte à rechercher dans les commandes précédentes. Le terme de recherche est mis en évidence dans les résultats correspondants

2223. **Naviguer dans les correspondances** : appuyez à nouveau sur `Ctrl+R` pour parcourir les correspondances plus anciennes

2234. **Changer la portée** : appuyez sur `Ctrl+S` pour basculer entre cette session, ce projet et tous les projets

2245. **Accepter la correspondance** :

225 * Appuyez sur `Tab` ou `Esc` pour accepter la correspondance actuelle et continuer l'édition

226 * Appuyez sur `Entrée` pour accepter et exécuter la commande immédiatement

2276. **Annuler la recherche** :

228 * Appuyez sur `Ctrl+C` pour annuler et restaurer votre entrée d'origine

229 * Appuyez sur `Retour arrière` sur une recherche vide pour annuler

230 

231La recherche affiche les commandes correspondantes avec le terme de recherche mis en évidence, afin que vous puissiez trouver et réutiliser les entrées précédentes.

232 

233## Commandes bash en arrière-plan

234 

235Claude Code prend en charge l'exécution de commandes bash en arrière-plan, ce qui vous permet de continuer à travailler pendant que les processus de longue durée s'exécutent.

236 

237### Fonctionnement de la mise en arrière-plan

238 

239Lorsque Claude Code exécute une commande en arrière-plan, il exécute la commande de manière asynchrone et retourne immédiatement un ID de tâche en arrière-plan. Claude Code peut répondre à de nouvelles invites pendant que la commande continue à s'exécuter en arrière-plan.

240 

241Pour exécuter les commandes en arrière-plan, vous pouvez soit :

242 

243* Inviter Claude Code à exécuter une commande en arrière-plan

244* Appuyez sur Ctrl+B pour déplacer une invocation d'outil Bash régulière vers l'arrière-plan. (Les utilisateurs Tmux doivent appuyer sur Ctrl+B deux fois en raison de la touche de préfixe de tmux.)

245 

246**Caractéristiques clés :**

247 

248* La sortie est écrite dans un fichier et Claude peut la récupérer à l'aide de l'outil Read

249* Les tâches en arrière-plan ont des ID uniques pour le suivi et la récupération de la sortie

250* Les tâches en arrière-plan sont automatiquement nettoyées lorsque Claude Code se ferme

251* Les tâches en arrière-plan sont automatiquement terminées si la sortie dépasse 5 Go, avec une note dans stderr expliquant pourquoi

252 

253Pour désactiver toutes les fonctionnalités de tâche en arrière-plan, définissez la variable d'environnement `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` sur `1`. Consultez [Variables d'environnement](/fr/env-vars) pour plus de détails.

254 

255**Commandes couramment mises en arrière-plan :**

256 

257* Outils de construction (webpack, vite, make)

258* Gestionnaires de paquets (npm, yarn, pnpm)

259* Exécuteurs de tests (jest, pytest)

260* Serveurs de développement

261* Processus de longue durée (docker, terraform)

262 

263### Mode shell avec le préfixe `!`

264 

265Exécutez les commandes shell directement sans passer par Claude en préfixant votre entrée avec `!` :

266 

267```bash theme={null}

268! npm test

269! git status

270! ls -la

271```

272 

273Mode shell :

274 

275* Ajoute la commande et sa sortie au contexte de la conversation

276* Affiche la progression et la sortie en temps réel

277* Prend en charge la même mise en arrière-plan `Ctrl+B` pour les commandes de longue durée

278* Ne nécessite pas que Claude interprète ou approuve la commande

279* Prend en charge l'autocomplétion basée sur l'historique : tapez une commande partielle et appuyez sur **Tab** pour compléter à partir des commandes `!` précédentes du projet actuel

280* Quittez avec `Échap`, `Retour arrière` ou `Ctrl+U` sur une invite vide

281* Coller du texte commençant par `!` dans une invite vide entre en mode shell automatiquement, correspondant au comportement du texte tapé `!`

282 

283Ceci est utile pour les opérations shell rapides tout en maintenant le contexte de la conversation.

284 

285## Suggestions d'invite

286 

287Lorsque vous ouvrez une session pour la première fois, une commande d'exemple grisée apparaît dans l'entrée d'invite pour vous aider à démarrer. Claude Code la choisit à partir de l'historique git de votre projet, elle reflète donc les fichiers sur lesquels vous avez travaillé récemment.

288 

289Après la réponse de Claude, les suggestions continuent à apparaître en fonction de votre historique de conversation, comme une étape de suivi d'une demande en plusieurs parties ou une continuation naturelle de votre flux de travail.

290 

291* Appuyez sur **Tab** ou **Flèche droite** pour accepter la suggestion, ou appuyez sur **Entrée** pour accepter et soumettre

292* Commencez à taper pour la rejeter

293 

294La suggestion s'exécute en tant que demande en arrière-plan qui réutilise le cache d'invite de la conversation parent, le coût supplémentaire est donc minimal. Claude Code ignore la génération de suggestions lorsque le cache est froid pour éviter les coûts inutiles.

295 

296Les suggestions sont automatiquement ignorées après le premier tour d'une conversation, en mode non interactif et en mode plan.

297 

298Pour désactiver complètement les suggestions d'invite, définissez la variable d'environnement ou basculez le paramètre dans `/config` :

299 

300```bash theme={null}

301export CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=false

302```

303 

304## Questions latérales avec /btw

305 

306Utilisez `/btw` pour poser une question rapide sur votre travail actuel sans l'ajouter à l'historique de la conversation. Ceci est utile lorsque vous voulez une réponse rapide mais que vous ne voulez pas encombrer le contexte principal ou détourner Claude d'une tâche de longue durée.

307 

308```

309/btw what was the name of that config file again?

310```

311 

312Les questions latérales ont une visibilité complète sur la conversation actuelle, vous pouvez donc poser des questions sur le code que Claude a déjà lu, les décisions qu'il a prises plus tôt, ou n'importe quoi d'autre de la session. La question et la réponse sont éphémères : elles apparaissent dans une superposition rejetable et n'entrent jamais dans l'historique de la conversation.

313 

314* **Disponible pendant que Claude travaille** : vous pouvez exécuter `/btw` même pendant que Claude traite une réponse. La question latérale s'exécute indépendamment et n'interrompt pas le tour principal.

315* **Pas d'accès aux outils** : les questions latérales répondent uniquement à partir de ce qui est déjà en contexte. Claude ne peut pas lire les fichiers, exécuter les commandes ou effectuer de recherches lorsqu'il répond à une question latérale.

316* **Réponse unique** : il n'y a pas de tours de suivi. Si vous avez besoin d'un aller-retour, utilisez une invite normale à la place.

317* **Coût faible** : la question latérale réutilise le cache d'invite de la conversation parent, le coût supplémentaire est donc minimal.

318 

319Appuyez sur **Espace**, **Entrée** ou **Échap** pour rejeter la réponse et revenir à l'invite.

320 

321`/btw` est l'inverse d'un [subagent](/fr/sub-agents) : il voit votre conversation complète mais n'a pas d'outils, tandis qu'un subagent a tous les outils mais commence avec un contexte vide. Utilisez `/btw` pour poser des questions sur ce que Claude sait déjà de cette session ; utilisez un subagent pour aller découvrir quelque chose de nouveau.

322 

323## Liste des tâches

324 

325Lorsque vous travaillez sur un travail complexe en plusieurs étapes, Claude crée une liste de tâches pour suivre la progression. Les tâches apparaissent dans la zone d'état de votre terminal avec des indicateurs montrant ce qui est en attente, en cours ou terminé.

326 

327* Appuyez sur `Ctrl+T` pour basculer l'affichage de la liste des tâches. L'affichage montre jusqu'à 5 tâches à la fois

328* Pour voir toutes les tâches ou les effacer, demandez directement à Claude : « show me all tasks » ou « clear all tasks »

329* Les tâches persistent lors des compactions de contexte, aidant Claude à rester organisé sur les projets plus importants

330* Pour partager une liste de tâches entre les sessions, définissez `CLAUDE_CODE_TASK_LIST_ID` pour utiliser un répertoire nommé dans `~/.claude/tasks/` : `CLAUDE_CODE_TASK_LIST_ID=my-project claude`

331 

332## Récapitulatif de session

333 

334Lorsque vous revenez au terminal après vous être éloigné, Claude Code affiche un récapitulatif d'une ligne de ce qui s'est passé dans la session jusqu'à présent. Le récapitulatif se génère en arrière-plan une fois qu'au moins trois minutes se sont écoulées depuis le dernier tour complété et que le terminal n'est pas en focus, afin qu'il soit prêt lorsque vous revenez. Les récapitulatifs n'apparaissent qu'une fois que la session a au moins trois tours, et jamais deux fois de suite.

335 

336Exécutez `/recap` pour générer un résumé à la demande. Pour désactiver les récapitulatifs automatiques, ouvrez `/config` et désactivez **Récapitulatif de session**.

337 

338Le récapitulatif de session est activé par défaut pour tous les plans et fournisseurs. Le récapitulatif est toujours ignoré en mode non interactif.

339 

340## Statut de révision PR

341 

342Lorsque vous travaillez sur une branche avec une demande de tirage ouverte, Claude Code affiche un lien PR cliquable dans le pied de page (par exemple, « PR #446 »). Le lien a un soulignement coloré indiquant l'état de la révision :

343 

344* Vert : approuvé

345* Jaune : en attente de révision

346* Rouge : modifications demandées

347* Gris : brouillon

348* Violet : fusionné

349 

350`Cmd+clic` (Mac) ou `Ctrl+clic` (Windows/Linux) sur le lien pour ouvrir la demande de tirage dans votre navigateur. Le statut se met à jour automatiquement toutes les 60 secondes.

351 

352<Note>

353 Le statut PR nécessite que le CLI `gh` soit installé et authentifié (`gh auth login`).

354</Note>

355 

356## Voir aussi

357 

358* [Skills](/fr/skills) - Invites personnalisées et flux de travail

359* [Checkpointing](/fr/checkpointing) - Rembobiner les modifications de Claude et restaurer les états précédents

360* [Référence CLI](/fr/cli-reference) - Drapeaux et options de ligne de commande

361* [Paramètres](/fr/settings) - Options de configuration

362* [Gestion de la mémoire](/fr/memory) - Gestion des fichiers CLAUDE.md

jetbrains.md +192 −0 created

Details

1> ## Documentation Index

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

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

4 

5# JetBrains IDEs

6 

7> Utilisez Claude Code avec les IDEs JetBrains, notamment IntelliJ, PyCharm, WebStorm et bien d'autres

8 

9Claude Code s'intègre aux IDEs JetBrains via un plugin dédié, offrant des fonctionnalités telles que l'affichage interactif des différences, le partage du contexte de sélection, et bien d'autres.

10 

11## IDEs supportés

12 

13Le plugin Claude Code fonctionne avec la plupart des IDEs JetBrains, notamment :

14 

15* IntelliJ IDEA

16* PyCharm

17* Android Studio

18* WebStorm

19* PhpStorm

20* GoLand

21 

22## Fonctionnalités

23 

24* **Lancement rapide** : Utilisez `Cmd+Esc` (Mac) ou `Ctrl+Esc` (Windows/Linux) pour ouvrir Claude Code directement depuis votre éditeur, ou cliquez sur le bouton Claude Code dans l'interface utilisateur

25* **Affichage des différences** : Les modifications de code peuvent être affichées directement dans la visionneuse de différences de l'IDE au lieu du terminal

26* **Contexte de sélection** : La sélection actuelle ou l'onglet dans l'IDE est automatiquement partagé avec Claude Code

27* **Raccourcis de référence de fichier** : Utilisez `Cmd+Option+K` (Mac) ou `Alt+Ctrl+K` (Linux/Windows) pour insérer des références de fichier telles que `@src/auth.ts#L1-99`

28* **Partage des diagnostics** : Les erreurs de diagnostic de l'IDE, telles que les erreurs de lint et de syntaxe, sont automatiquement partagées avec Claude au fur et à mesure que vous travaillez

29 

30## Installation

31 

32### Installation via la Marketplace

33 

34Trouvez et installez le [plugin Claude Code](https://plugins.jetbrains.com/plugin/27310-claude-code-beta-) depuis la marketplace JetBrains et redémarrez votre IDE.

35 

36Si vous n'avez pas encore installé Claude Code, consultez le [guide de démarrage rapide](/fr/quickstart) pour les instructions d'installation.

37 

38<Note>

39 Après l'installation du plugin, vous devrez peut-être redémarrer complètement votre IDE pour que les modifications prennent effet.

40</Note>

41 

42## Utilisation

43 

44### Depuis votre IDE

45 

46Exécutez `claude` depuis le terminal intégré de votre IDE, et toutes les fonctionnalités d'intégration seront actives.

47 

48### Depuis des terminaux externes

49 

50Utilisez la commande `/ide` dans n'importe quel terminal externe pour connecter Claude Code à votre IDE JetBrains et activer toutes les fonctionnalités :

51 

52```bash theme={null}

53claude

54```

55 

56```text theme={null}

57/ide

58```

59 

60Si vous souhaitez que Claude ait accès aux mêmes fichiers que votre IDE, démarrez Claude Code à partir du même répertoire que la racine du projet de votre IDE.

61 

62## Configuration

63 

64### Paramètres de Claude Code

65 

66Configurez l'intégration de l'IDE via les paramètres de Claude Code :

67 

681. Exécutez `claude`

692. Entrez la commande `/config`

703. Définissez l'outil de différence sur `auto` pour afficher les différences dans l'IDE, ou `terminal` pour les conserver dans le terminal

71 

72### Paramètres du plugin

73 

74Configurez le plugin Claude Code en accédant à **Paramètres → Outils → Claude Code \[Beta]** :

75 

76#### Paramètres généraux

77 

78* **Commande Claude** : Spécifiez une commande personnalisée pour exécuter Claude, par exemple `claude`, `/usr/local/bin/claude`, ou `npx @anthropic-ai/claude-code`

79* **Supprimer la notification pour la commande Claude non trouvée** : Ignorez les notifications concernant la non-détection de la commande Claude

80* **Activer l'utilisation d'Option+Entrée pour les invites multi-lignes** : Sur macOS uniquement. Lorsqu'elle est activée, Option+Entrée insère de nouvelles lignes dans les invites Claude Code. Désactivez si la touche Option est capturée de manière inattendue. Nécessite un redémarrage du terminal.

81* **Activer les mises à jour automatiques** : Vérifiez automatiquement et installez les mises à jour du plugin, appliquées au redémarrage

82 

83<Tip>

84 Pour les utilisateurs WSL : Définissez `wsl -d Ubuntu -- bash -lic "claude"` comme votre commande Claude (remplacez `Ubuntu` par le nom de votre distribution WSL)

85</Tip>

86 

87#### Configuration de la touche ESC

88 

89Si la touche ESC n'interrompt pas les opérations Claude Code dans les terminaux JetBrains :

90 

911. Accédez à **Paramètres → Outils → Terminal**

922. Soit :

93 * Décochez « Déplacer le focus vers l'éditeur avec Échap », soit

94 * Cliquez sur « Configurer les raccourcis clavier du terminal » et supprimez le raccourci « Basculer le focus vers l'éditeur »

953. Appliquez les modifications

96 

97Cela permet à la touche ESC d'interrompre correctement les opérations Claude Code.

98 

99## Configurations spéciales

100 

101### Développement à distance

102 

103<Warning>

104 Lors de l'utilisation du développement à distance JetBrains, vous devez installer le plugin sur l'hôte distant via **Paramètres → Plugin (Hôte)**.

105</Warning>

106 

107Le plugin doit être installé sur l'hôte distant, et non sur votre machine cliente locale.

108 

109### Configuration WSL

110 

111Si vous utilisez Claude Code sur WSL2 avec un IDE JetBrains et que vous voyez « Aucun IDE disponible détecté », la cause est généralement le réseau NAT de WSL2 ou le Pare-feu Windows bloquant la connexion entre WSL2 et l'IDE s'exécutant sur l'hôte Windows. WSL1 utilise directement le réseau de l'hôte et n'est pas affecté.

112 

113#### Autoriser le trafic WSL2 via le Pare-feu Windows

114 

115Ceci est la correction recommandée car elle conserve votre mode de mise en réseau WSL2 existant.

116 

117<Steps>

118 <Step title="Trouvez votre adresse IP WSL2">

119 Depuis votre shell WSL, exécutez :

120 

121 ```bash theme={null}

122 hostname -I

123 ```

124 

125 Notez le sous-réseau, par exemple `172.21.123.45` se trouve dans `172.21.0.0/16`.

126 </Step>

127 

128 <Step title="Créez une règle de pare-feu">

129 Ouvrez PowerShell en tant qu'administrateur et exécutez ce qui suit, en ajustant la plage d'adresses IP pour correspondre à votre sous-réseau :

130 

131 ```powershell theme={null}

132 New-NetFirewallRule -DisplayName "Allow WSL2 Internal Traffic" -Direction Inbound -Protocol TCP -Action Allow -RemoteAddress 172.21.0.0/16 -LocalAddress 172.21.0.0/16

133 ```

134 </Step>

135 

136 <Step title="Redémarrez votre IDE et Claude Code">

137 Fermez et rouvrez les deux pour que la nouvelle règle prenne effet.

138 </Step>

139</Steps>

140 

141#### Basculer WSL2 vers la mise en réseau en miroir

142 

143La mise en réseau en miroir nécessite Windows 11 22H2 ou version ultérieure. Si vous êtes sur Windows 10, utilisez la règle de pare-feu ci-dessus à la place.

144 

145Ajoutez ceci à `.wslconfig` dans votre répertoire utilisateur Windows :

146 

147```ini theme={null}

148[wsl2]

149networkingMode=mirrored

150```

151 

152Ensuite, redémarrez WSL avec `wsl --shutdown` depuis PowerShell.

153 

154## Dépannage

155 

156### Le plugin ne fonctionne pas

157 

158Si le plugin est installé mais que les fonctionnalités Claude Code n'apparaissent pas dans votre IDE :

159 

160* Assurez-vous que vous exécutez Claude Code à partir du répertoire racine du projet

161* Vérifiez que le plugin JetBrains est activé dans les paramètres de l'IDE

162* Redémarrez complètement l'IDE (vous devrez peut-être le faire plusieurs fois)

163* Pour le développement à distance, assurez-vous que le plugin est installé sur l'hôte distant

164 

165### IDE non détecté

166 

167Si l'exécution de `claude` affiche « Aucun IDE disponible détecté » :

168 

169* Vérifiez que le plugin est installé et activé

170* Redémarrez complètement l'IDE

171* Vérifiez que vous exécutez Claude Code à partir du terminal intégré

172* Pour les utilisateurs WSL, consultez la [configuration WSL](#wsl-configuration) ci-dessus

173 

174### Commande non trouvée

175 

176Si cliquer sur l'icône Claude affiche « commande non trouvée » :

177 

1781. Vérifiez que Claude Code est installé en exécutant `claude --version` dans un terminal

1792. Configurez le chemin de la commande Claude dans les paramètres du plugin

1803. Pour les utilisateurs WSL, utilisez le format de commande WSL mentionné dans la section configuration

181 

182## Considérations de sécurité

183 

184Lorsque Claude Code s'exécute dans un IDE JetBrains avec les permissions d'édition automatique activées, il peut être en mesure de modifier les fichiers de configuration de l'IDE qui peuvent être exécutés automatiquement par votre IDE. Cela peut augmenter le risque d'exécution de Claude Code en mode édition automatique et permettre de contourner les invites de permission de Claude Code pour l'exécution bash.

185 

186Lors de l'exécution dans les IDEs JetBrains, considérez :

187 

188* L'utilisation du mode d'approbation manuelle pour les modifications

189* La prise de précautions supplémentaires pour vous assurer que Claude n'est utilisé qu'avec des invites de confiance

190* La sensibilisation aux fichiers auxquels Claude Code a accès pour les modifier

191 

192Pour les problèmes d'installation ou de connexion de Claude Code en dehors de l'IDE, consultez [Dépannage de l'installation et de la connexion](/fr/troubleshoot-install).

keybindings.md +463 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Personnaliser les raccourcis clavier

6 

7> Personnalisez les raccourcis clavier dans Claude Code avec un fichier de configuration des liaisons de touches.

8 

9<Note>

10 Les raccourcis clavier personnalisables nécessitent Claude Code v2.1.18 ou version ultérieure. Vérifiez votre version avec `claude --version`.

11</Note>

12 

13Claude Code prend en charge les raccourcis clavier personnalisables. Exécutez `/keybindings` pour créer ou ouvrir votre fichier de configuration à `~/.claude/keybindings.json`.

14 

15## Fichier de configuration

16 

17Le fichier de configuration des liaisons de touches est un objet avec un tableau `bindings`. Chaque bloc spécifie un contexte et une carte des séquences de touches aux actions.

18 

19<Note>Les modifications du fichier keybindings sont automatiquement détectées et appliquées sans redémarrer Claude Code.</Note>

20 

21| Champ | Description |

22| :--------- | :-------------------------------------------------------------- |

23| `$schema` | URL du schéma JSON optionnel pour l'autocomplétion de l'éditeur |

24| `$docs` | URL de documentation optionnelle |

25| `bindings` | Tableau de blocs de liaison par contexte |

26 

27Cet exemple lie `Ctrl+E` pour ouvrir un éditeur externe dans le contexte de chat, et délié `Ctrl+U` :

28 

29```json theme={null}

30{

31 "$schema": "https://www.schemastore.org/claude-code-keybindings.json",

32 "$docs": "https://code.claude.com/docs/fr/keybindings",

33 "bindings": [

34 {

35 "context": "Chat",

36 "bindings": {

37 "ctrl+e": "chat:externalEditor",

38 "ctrl+u": null

39 }

40 }

41 ]

42}

43```

44 

45## Contextes

46 

47Chaque bloc de liaison spécifie un **contexte** où les liaisons s'appliquent :

48 

49| Contexte | Description |

50| :---------------- | :---------------------------------------------------------------------- |

51| `Global` | S'applique partout dans l'application |

52| `Chat` | Zone de saisie de chat principale |

53| `Autocomplete` | Le menu d'autocomplétion est ouvert |

54| `Settings` | Menu des paramètres |

55| `Confirmation` | Dialogues de permission et de confirmation |

56| `Tabs` | Composants de navigation par onglets |

57| `Help` | Le menu d'aide est visible |

58| `Transcript` | Visionneuse de transcription |

59| `HistorySearch` | Mode de recherche d'historique (Ctrl+R) |

60| `Task` | Une tâche de fond est en cours d'exécution |

61| `ThemePicker` | Dialogue du sélecteur de thème |

62| `Attachments` | Navigation de la pièce jointe d'image dans les dialogues de sélection |

63| `Footer` | Navigation de l'indicateur de pied de page (tâches, équipes, diff) |

64| `MessageSelector` | Sélection de message du dialogue de rembobinage et de résumé |

65| `DiffDialog` | Navigation de la visionneuse de diff |

66| `ModelPicker` | Niveau d'effort du sélecteur de modèle |

67| `Select` | Composants génériques de sélection/liste |

68| `Plugin` | Dialogue du plugin (parcourir, découvrir, gérer) |

69| `Scroll` | Défilement de la conversation et sélection de texte en mode plein écran |

70| `Doctor` | Écran de diagnostics `/doctor` |

71 

72## Actions disponibles

73 

74Les actions suivent un format `namespace:action`, tel que `chat:submit` pour envoyer un message ou `app:toggleTodos` pour afficher la liste des tâches. Chaque contexte a des actions spécifiques disponibles.

75 

76### Actions d'application

77 

78Actions disponibles dans le contexte `Global` :

79 

80| Action | Par défaut | Description |

81| :--------------------- | :--------- | :-------------------------------------------- |

82| `app:interrupt` | Ctrl+C | Annuler l'opération en cours |

83| `app:exit` | Ctrl+D | Quitter Claude Code |

84| `app:redraw` | (non lié) | Forcer le redessinage du terminal |

85| `app:toggleTodos` | Ctrl+T | Basculer la visibilité de la liste des tâches |

86| `app:toggleTranscript` | Ctrl+O | Basculer la transcription détaillée |

87 

88### Actions d'historique

89 

90Actions pour naviguer dans l'historique des commandes :

91 

92| Action | Par défaut | Description |

93| :----------------- | :--------- | :------------------------------- |

94| `history:search` | Ctrl+R | Ouvrir la recherche d'historique |

95| `history:previous` | Haut | Élément d'historique précédent |

96| `history:next` | Bas | Élément d'historique suivant |

97 

98### Actions de chat

99 

100Actions disponibles dans le contexte `Chat` :

101 

102| Action | Par défaut | Description |

103| :-------------------- | :-------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

104| `chat:cancel` | Échappement | Annuler l'entrée actuelle |

105| `chat:clearInput` | Ctrl+L | Forcer un redessinage complet de l'écran, en préservant l'entrée. Dans le [rendu plein écran](/fr/fullscreen#clear-the-conversation), appuyez deux fois en deux secondes pour exécuter `/clear` |

106| `chat:clearScreen` | Cmd+K | Dans le [rendu plein écran](/fr/fullscreen#clear-the-conversation), appuyez deux fois en deux secondes pour exécuter `/clear` |

107| `chat:killAgents` | Ctrl+X Ctrl+K | Arrêter tous les agents de fond |

108| `chat:cycleMode` | Maj+Tab\* | Cycler les modes de permission |

109| `chat:modelPicker` | Meta+P | Ouvrir le sélecteur de modèle |

110| `chat:fastMode` | Meta+O | Basculer le mode rapide |

111| `chat:thinkingToggle` | Meta+T | Basculer la réflexion étendue |

112| `chat:submit` | Entrée | Soumettre le message |

113| `chat:newline` | Ctrl+J | Insérer une nouvelle ligne sans soumettre |

114| `chat:undo` | Ctrl+\_, Ctrl+Maj+- | Annuler la dernière action |

115| `chat:externalEditor` | Ctrl+G, Ctrl+X Ctrl+E | Ouvrir dans un éditeur externe |

116| `chat:stash` | Ctrl+S | Mettre en cache l'invite actuelle |

117| `chat:imagePaste` | Ctrl+V (Alt+V sous Windows) | Coller une image |

118 

119\*Sous Windows sans mode VT (Node \<24.2.0/\<22.17.0, Bun \<1.2.23), la valeur par défaut est Meta+M.

120 

121### Actions d'autocomplétion

122 

123Actions disponibles dans le contexte `Autocomplete` :

124 

125| Action | Par défaut | Description |

126| :---------------------- | :---------- | :--------------------- |

127| `autocomplete:accept` | Tab | Accepter la suggestion |

128| `autocomplete:dismiss` | Échappement | Fermer le menu |

129| `autocomplete:previous` | Haut | Suggestion précédente |

130| `autocomplete:next` | Bas | Suggestion suivante |

131 

132### Actions de confirmation

133 

134Actions disponibles dans le contexte `Confirmation` :

135 

136| Action | Par défaut | Description |

137| :-------------------------- | :------------- | :----------------------------------- |

138| `confirm:yes` | Y, Entrée | Confirmer l'action |

139| `confirm:no` | N, Échappement | Refuser l'action |

140| `confirm:previous` | Haut | Option précédente |

141| `confirm:next` | Bas | Option suivante |

142| `confirm:nextField` | Tab | Champ suivant |

143| `confirm:previousField` | (non lié) | Champ précédent |

144| `confirm:toggle` | Espace | Basculer la sélection |

145| `confirm:cycleMode` | Maj+Tab | Cycler les modes de permission |

146| `confirm:toggleExplanation` | Ctrl+E | Basculer l'explication de permission |

147 

148### Actions de permission

149 

150Actions disponibles dans le contexte `Confirmation` pour les dialogues de permission :

151 

152| Action | Par défaut | Description |

153| :----------------------- | :--------- | :-------------------------------------------------- |

154| `permission:toggleDebug` | Ctrl+D | Basculer les informations de débogage de permission |

155 

156### Actions de transcription

157 

158Actions disponibles dans le contexte `Transcript` :

159 

160| Action | Par défaut | Description |

161| :------------------------- | :--------------------- | :-------------------------------------- |

162| `transcript:toggleShowAll` | Ctrl+E | Basculer l'affichage de tout le contenu |

163| `transcript:exit` | q, Ctrl+C, Échappement | Quitter la vue de transcription |

164 

165### Actions de recherche d'historique

166 

167Actions disponibles dans le contexte `HistorySearch` :

168 

169| Action | Par défaut | Description |

170| :------------------------- | :--------------- | :------------------------------------------ |

171| `historySearch:next` | Ctrl+R | Correspondance suivante |

172| `historySearch:accept` | Échappement, Tab | Accepter la sélection |

173| `historySearch:cancel` | Ctrl+C | Annuler la recherche |

174| `historySearch:execute` | Entrée | Exécuter la commande sélectionnée |

175| `historySearch:cycleScope` | Ctrl+S | Cycler la portée : session, projet, partout |

176 

177### Actions de tâche

178 

179Actions disponibles dans le contexte `Task` :

180 

181| Action | Par défaut | Description |

182| :---------------- | :--------- | :--------------------------------------- |

183| `task:background` | Ctrl+B | Mettre la tâche actuelle en arrière-plan |

184 

185### Actions de thème

186 

187Actions disponibles dans le contexte `ThemePicker` :

188 

189| Action | Par défaut | Description |

190| :------------------------------- | :--------- | :-------------------------------- |

191| `theme:toggleSyntaxHighlighting` | Ctrl+T | Basculer la coloration syntaxique |

192 

193### Actions d'aide

194 

195Actions disponibles dans le contexte `Help` :

196 

197| Action | Par défaut | Description |

198| :------------- | :---------- | :-------------------- |

199| `help:dismiss` | Échappement | Fermer le menu d'aide |

200 

201### Actions d'onglets

202 

203Actions disponibles dans le contexte `Tabs` :

204 

205| Action | Par défaut | Description |

206| :-------------- | :-------------- | :--------------- |

207| `tabs:next` | Tab, Droite | Onglet suivant |

208| `tabs:previous` | Maj+Tab, Gauche | Onglet précédent |

209 

210### Actions de pièces jointes

211 

212Actions disponibles dans le contexte `Attachments` :

213 

214| Action | Par défaut | Description |

215| :--------------------- | :------------------------ | :--------------------------------------- |

216| `attachments:next` | Droite | Pièce jointe suivante |

217| `attachments:previous` | Gauche | Pièce jointe précédente |

218| `attachments:remove` | Retour arrière, Supprimer | Supprimer la pièce jointe sélectionnée |

219| `attachments:exit` | Bas, Échappement | Quitter la navigation des pièces jointes |

220 

221### Actions de pied de page

222 

223Actions disponibles dans le contexte `Footer` :

224 

225| Action | Par défaut | Description |

226| :---------------------- | :---------- | :----------------------------------------------------------------- |

227| `footer:next` | Droite | Élément de pied de page suivant |

228| `footer:previous` | Gauche | Élément de pied de page précédent |

229| `footer:up` | Haut | Naviguer vers le haut dans le pied de page (désélectionne en haut) |

230| `footer:down` | Bas | Naviguer vers le bas dans le pied de page |

231| `footer:openSelected` | Entrée | Ouvrir l'élément de pied de page sélectionné |

232| `footer:clearSelection` | Échappement | Effacer la sélection du pied de page |

233 

234### Actions du sélecteur de message

235 

236Actions disponibles dans le contexte `MessageSelector` :

237 

238| Action | Par défaut | Description |

239| :----------------------- | :------------------------------------ | :---------------------------------- |

240| `messageSelector:up` | Haut, K, Ctrl+P | Déplacer vers le haut dans la liste |

241| `messageSelector:down` | Bas, J, Ctrl+N | Déplacer vers le bas dans la liste |

242| `messageSelector:top` | Ctrl+Haut, Maj+Haut, Meta+Haut, Maj+K | Sauter au début |

243| `messageSelector:bottom` | Ctrl+Bas, Maj+Bas, Meta+Bas, Maj+J | Sauter à la fin |

244| `messageSelector:select` | Entrée | Sélectionner le message |

245 

246### Actions de diff

247 

248Actions disponibles dans le contexte `DiffDialog` :

249 

250| Action | Par défaut | Description |

251| :-------------------- | :----------------------- | :--------------------------------------------- |

252| `diff:dismiss` | Échappement | Fermer la visionneuse de diff |

253| `diff:previousSource` | Gauche | Source de diff précédente |

254| `diff:nextSource` | Droite | Source de diff suivante |

255| `diff:previousFile` | Haut | Fichier précédent dans le diff |

256| `diff:nextFile` | Bas | Fichier suivant dans le diff |

257| `diff:viewDetails` | Entrée | Afficher les détails du diff |

258| `diff:back` | (spécifique au contexte) | Revenir en arrière dans la visionneuse de diff |

259 

260### Actions du sélecteur de modèle

261 

262Actions disponibles dans le contexte `ModelPicker` :

263 

264| Action | Par défaut | Description |

265| :--------------------------- | :--------- | :--------------------------- |

266| `modelPicker:decreaseEffort` | Gauche | Diminuer le niveau d'effort |

267| `modelPicker:increaseEffort` | Droite | Augmenter le niveau d'effort |

268 

269### Actions de sélection

270 

271Actions disponibles dans le contexte `Select` :

272 

273| Action | Par défaut | Description |

274| :---------------- | :-------------- | :-------------------- |

275| `select:next` | Bas, J, Ctrl+N | Option suivante |

276| `select:previous` | Haut, K, Ctrl+P | Option précédente |

277| `select:accept` | Entrée | Accepter la sélection |

278| `select:cancel` | Échappement | Annuler la sélection |

279 

280### Actions de plugin

281 

282Actions disponibles dans le contexte `Plugin` :

283 

284| Action | Par défaut | Description |

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

286| `plugin:toggle` | Espace | Basculer la sélection du plugin |

287| `plugin:install` | I | Installer les plugins sélectionnés |

288| `plugin:favorite` | F | Marquer le plugin sélectionné comme favori pour qu'il soit trié près du haut de l'onglet Installé |

289 

290### Actions des paramètres

291 

292Actions disponibles dans le contexte `Settings` :

293 

294| Action | Par défaut | Description |

295| :---------------- | :--------- | :----------------------------------------------------------------------------------------------------------------- |

296| `settings:search` | / | Entrer en mode de recherche |

297| `settings:retry` | R | Réessayer de charger les données d'utilisation (en cas d'erreur) |

298| `settings:close` | Entrée | Enregistrer les modifications et fermer le panneau de configuration. Échappement annule les modifications et ferme |

299 

300### Actions du docteur

301 

302Actions disponibles dans le contexte `Doctor` :

303 

304| Action | Par défaut | Description |

305| :----------- | :--------- | :----------------------------------------------------------------------------------------------------------------------------------- |

306| `doctor:fix` | F | Envoyer le rapport de diagnostics à Claude pour corriger les problèmes signalés. Actif uniquement lorsque des problèmes sont trouvés |

307 

308### Actions vocales

309 

310Actions disponibles dans le contexte `Chat` lorsque la [dictée vocale](/fr/voice-dictation) est activée :

311 

312| Action | Par défaut | Description |

313| :----------------- | :--------- | :------------------------------------------------------------- |

314| `voice:pushToTalk` | Espace | Dicter une invite. Maintenez ou appuyez selon le mode `/voice` |

315 

316### Actions de défilement

317 

318Actions disponibles dans le contexte `Scroll` lorsque le [rendu plein écran](/fr/fullscreen) est activé :

319 

320| Action | Par défaut | Description |

321| :-------------------------- | :----------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------ |

322| `scroll:lineUp` | (non lié) | Faire défiler vers le haut d'une ligne. Le défilement à la souris déclenche cette action |

323| `scroll:lineDown` | (non lié) | Faire défiler vers le bas d'une ligne. Le défilement à la souris déclenche cette action |

324| `scroll:pageUp` | PageUp | Faire défiler vers le haut de la moitié de la hauteur de la fenêtre d'affichage |

325| `scroll:pageDown` | PageDown | Faire défiler vers le bas de la moitié de la hauteur de la fenêtre d'affichage |

326| `scroll:top` | Ctrl+Home | Sauter au début de la conversation |

327| `scroll:bottom` | Ctrl+End | Sauter au dernier message et réactiver le suivi automatique |

328| `scroll:halfPageUp` | (non lié) | Faire défiler vers le haut de la moitié de la hauteur de la fenêtre d'affichage. Même comportement que `scroll:pageUp`, fourni pour les reliures de style vi |

329| `scroll:halfPageDown` | (non lié) | Faire défiler vers le bas de la moitié de la hauteur de la fenêtre d'affichage. Même comportement que `scroll:pageDown`, fourni pour les reliures de style vi |

330| `scroll:fullPageUp` | (non lié) | Faire défiler vers le haut de la hauteur complète de la fenêtre d'affichage |

331| `scroll:fullPageDown` | (non lié) | Faire défiler vers le bas de la hauteur complète de la fenêtre d'affichage |

332| `selection:copy` | Ctrl+Maj+C / Cmd+C | Copier le texte sélectionné dans le presse-papiers |

333| `selection:clear` | (non lié) | Effacer la sélection de texte active |

334| `selection:extendLeft` | Maj+Gauche | Étendre la sélection active d'une colonne vers la gauche |

335| `selection:extendRight` | Maj+Droite | Étendre la sélection active d'une colonne vers la droite |

336| `selection:extendUp` | Maj+Haut | Étendre la sélection active d'une ligne vers le haut. Fait défiler la fenêtre d'affichage lorsque la sélection atteint le bord supérieur |

337| `selection:extendDown` | Maj+Bas | Étendre la sélection active d'une ligne vers le bas. Fait défiler la fenêtre d'affichage lorsque la sélection atteint le bord inférieur |

338| `selection:extendLineStart` | Maj+Home | Étendre la sélection active au début de la ligne |

339| `selection:extendLineEnd` | Maj+End | Étendre la sélection active à la fin de la ligne |

340 

341## Syntaxe des séquences de touches

342 

343### Modificateurs

344 

345Utilisez les touches de modification avec le séparateur `+` :

346 

347* `ctrl` ou `control` - Touche Contrôle

348* `shift` - Touche Maj

349* `alt`, `opt`, `option`, ou `meta` - Touche Alt sur Windows et Linux, touche Option sur macOS

350* `cmd`, `command`, `super`, ou `win` - Touche Commande sur macOS, touche Windows sur Windows, touche Super sur Linux

351 

352Le groupe `cmd` n'est détecté que dans les terminaux qui signalent le modificateur Super, comme ceux prenant en charge le protocole clavier Kitty ou le mode `modifyOtherKeys` de xterm. La plupart des terminaux ne l'envoient pas, donc utilisez `ctrl` ou `meta` pour les liaisons que vous voulez que fonctionnent partout.

353 

354Par exemple :

355 

356```text theme={null}

357ctrl+k Ctrl + K

358shift+tab Maj + Tab

359meta+p Option + P sur macOS, Alt + P ailleurs

360ctrl+shift+c Plusieurs modificateurs

361```

362 

363### Lettres majuscules

364 

365Une lettre majuscule autonome implique Maj. Par exemple, `K` est équivalent à `shift+k`. Ceci est utile pour les liaisons de style vim où les touches majuscules et minuscules ont des significations différentes.

366 

367Les lettres majuscules avec des modificateurs (par exemple, `ctrl+K`) sont traitées comme stylistiques et n'impliquent **pas** Maj : `ctrl+K` est identique à `ctrl+k`.

368 

369### Accords

370 

371Les accords sont des séquences de touches séparées par des espaces :

372 

373```text theme={null}

374ctrl+k ctrl+s Appuyez sur Ctrl+K, relâchez, puis Ctrl+S

375```

376 

377### Touches spéciales

378 

379* `escape` ou `esc` - Touche Échappement

380* `enter` ou `return` - Touche Entrée

381* `tab` - Touche Tab

382* `space` - Barre d'espace

383* `up`, `down`, `left`, `right` - Touches fléchées

384* `backspace`, `delete` - Touches de suppression

385 

386## Délier les raccourcis par défaut

387 

388Définissez une action sur `null` pour délier un raccourci par défaut :

389 

390```json theme={null}

391{

392 "bindings": [

393 {

394 "context": "Chat",

395 "bindings": {

396 "ctrl+s": null

397 }

398 }

399 ]

400}

401```

402 

403Cela fonctionne également pour les liaisons d'accords. Délier tous les accords qui partagent un préfixe libère ce préfixe pour une utilisation comme liaison à touche unique :

404 

405```json theme={null}

406{

407 "bindings": [

408 {

409 "context": "Chat",

410 "bindings": {

411 "ctrl+x ctrl+k": null,

412 "ctrl+x ctrl+e": null,

413 "ctrl+x": "chat:newline"

414 }

415 }

416 ]

417}

418```

419 

420Si vous déliez certains accords mais pas tous sur un préfixe, appuyer sur le préfixe entre toujours en mode d'attente d'accord pour les liaisons restantes.

421 

422## Raccourcis réservés

423 

424Ces raccourcis ne peuvent pas être reliés :

425 

426| Raccourci | Raison |

427| :-------- | :----------------------------------------------------------- |

428| Ctrl+C | Interruption/annulation codée en dur |

429| Ctrl+D | Sortie codée en dur |

430| Ctrl+M | Identique à Entrée dans les terminaux (les deux envoient CR) |

431| Caps Lock | Non livré aux applications de terminal |

432 

433## Conflits de terminal

434 

435Certains raccourcis peuvent entrer en conflit avec les multiplexeurs de terminal :

436 

437| Raccourci | Conflit |

438| :-------- | :-------------------------------------------- |

439| Ctrl+B | Préfixe tmux (appuyez deux fois pour envoyer) |

440| Ctrl+A | Préfixe GNU screen |

441| Ctrl+Z | Suspension de processus Unix (SIGTSTP) |

442 

443## Interaction du mode Vim

444 

445Lorsque le mode vim est activé via `/config` → Mode Éditeur, les liaisons de touches et le mode vim fonctionnent indépendamment :

446 

447* **Mode Vim** gère l'entrée au niveau de la saisie de texte (mouvement du curseur, modes, motions)

448* **Liaisons de touches** gèrent les actions au niveau du composant (basculer les tâches, soumettre, etc.)

449* La touche Échappement en mode vim bascule INSERT en mode NORMAL ; elle ne déclenche pas `chat:cancel`

450* La plupart des raccourcis Ctrl+touche passent par le mode vim au système de liaison de touches

451* En mode NORMAL vim, `?` affiche le menu d'aide (comportement vim)

452 

453## Validation

454 

455Claude Code valide vos liaisons de touches et affiche des avertissements pour :

456 

457* Erreurs d'analyse (JSON invalide ou structure)

458* Noms de contexte invalides

459* Conflits de raccourcis réservés

460* Conflits de multiplexeur de terminal

461* Liaisons en double dans le même contexte

462 

463Exécutez `/doctor` pour voir les avertissements de liaison de touches.

llm-gateway.md +196 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Configuration de la passerelle LLM

6 

7> Découvrez comment configurer Claude Code pour fonctionner avec des solutions de passerelle LLM. Couvre les exigences de la passerelle, la configuration de l'authentification, la sélection du modèle et la configuration des points de terminaison spécifiques aux fournisseurs.

8 

9Les passerelles LLM fournissent une couche proxy centralisée entre Claude Code et les fournisseurs de modèles, offrant souvent :

10 

11* **Authentification centralisée** - Point unique pour la gestion des clés API

12* **Suivi de l'utilisation** - Surveiller l'utilisation entre les équipes et les projets

13* **Contrôles des coûts** - Implémenter des budgets et des limites de débit

14* **Journalisation d'audit** - Suivre toutes les interactions de modèle pour la conformité

15* **Routage des modèles** - Basculer entre les fournisseurs sans modifications de code

16 

17## Exigences de la passerelle

18 

19Pour qu'une passerelle LLM fonctionne avec Claude Code, elle doit répondre aux exigences suivantes :

20 

21**Format API**

22 

23La passerelle doit exposer aux clients au moins l'un des formats API suivants :

24 

251. **Anthropic Messages** : `/v1/messages`, `/v1/messages/count_tokens`

26 * Doit transférer les en-têtes de requête : `anthropic-beta`, `anthropic-version`

27 

282. **Bedrock InvokeModel** : `/invoke`, `/invoke-with-response-stream`

29 * Doit préserver les champs du corps de la requête : `anthropic_beta`, `anthropic_version`

30 

313. **Vertex rawPredict** : `:rawPredict`, `:streamRawPredict`, `/count-tokens:rawPredict`

32 * Doit transférer les en-têtes de requête : `anthropic-beta`, `anthropic-version`

33 

34L'absence de transfert d'en-têtes ou la non-préservation des champs du corps peut entraîner une réduction des fonctionnalités ou l'impossibilité d'utiliser les fonctionnalités de Claude Code.

35 

36<Note>

37 Claude Code détermine les fonctionnalités à activer en fonction du format API. Lors de l'utilisation du format Anthropic Messages avec Bedrock ou Vertex, vous devrez peut-être définir la variable d'environnement `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`.

38</Note>

39 

40**En-têtes de requête**

41 

42Claude Code inclut les en-têtes suivants sur chaque requête API :

43 

44| En-tête | Description |

45| :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

46| `X-Claude-Code-Session-Id` | Un identifiant unique pour la session Claude Code actuelle. Les proxies peuvent utiliser ceci pour agréger toutes les requêtes API d'une seule session sans analyser le corps de la requête. |

47 

48Claude Code ajoute également un court bloc d'attribution au début de l'invite système contenant la version du client et une empreinte dérivée de la conversation. L'API Anthropic supprime ce bloc avant le traitement, il n'affecte donc pas la mise en cache des invites de première partie. Si votre passerelle implémente son propre cache d'invite basé sur le corps complet de la requête, définissez [`CLAUDE_CODE_ATTRIBUTION_HEADER=0`](/fr/env-vars) pour l'omettre.

49 

50## Configuration

51 

52### Sélection du modèle

53 

54Par défaut, Claude Code utilise les noms de modèles standard pour le format API sélectionné.

55 

56Lorsque `ANTHROPIC_BASE_URL` pointe vers une passerelle qui expose le format Messages d'Anthropic, Claude Code interroge le point de terminaison `/v1/models` de la passerelle au démarrage et ajoute les modèles retournés au sélecteur `/model`. Chaque entrée découverte est étiquetée « From gateway » et utilise le champ `display_name` de la réponse lorsqu'un est fourni. Cela nécessite Claude Code v2.1.126 ou version ultérieure.

57 

58La découverte s'applique uniquement au format Messages d'Anthropic. Elle ne s'exécute pas pour les points de terminaison de passage Bedrock ou Vertex, et elle ne s'exécute pas lorsque `ANTHROPIC_BASE_URL` n'est pas défini ou pointe vers `api.anthropic.com`.

59 

60La demande de découverte s'authentifie de la même manière que les demandes d'inférence : elle envoie `ANTHROPIC_AUTH_TOKEN` en tant que jeton porteur, ou `ANTHROPIC_API_KEY` en tant qu'en-tête `x-api-key` lorsqu'aucun jeton d'authentification n'est défini, ainsi que tous les en-têtes de `ANTHROPIC_CUSTOM_HEADERS`. Seuls les modèles dont l'ID commence par `claude` ou `anthropic` sont ajoutés au sélecteur. Les résultats sont mis en cache dans `~/.claude/cache/gateway-models.json` et actualisés à chaque démarrage. Si la demande échoue ou si la passerelle n'implémente pas `/v1/models`, le sélecteur revient à la liste mise en cache du démarrage précédent ou à la liste de modèles intégrée.

61 

62Si votre passerelle utilise des noms de modèles qui ne correspondent pas au filtre de découverte, utilisez les variables d'environnement documentées dans [Configuration du modèle](/fr/model-config) pour les ajouter manuellement.

63 

64## Configuration de LiteLLM

65 

66<Warning>

67 Les versions PyPI de LiteLLM 1.82.7 et 1.82.8 ont été compromises avec un malware voleur d'identifiants. N'installez pas ces versions. Si vous les avez déjà installées :

68 

69 * Supprimez le paquet

70 * Renouvelez tous les identifiants sur les systèmes affectés

71 * Suivez les étapes de correction dans [BerriAI/litellm#24518](https://github.com/BerriAI/litellm/issues/24518)

72 

73 LiteLLM est un service proxy tiers. Anthropic n'approuve pas, ne maintient pas et n'audite pas la sécurité ou les fonctionnalités de LiteLLM. Ce guide est fourni à titre informatif et peut devenir obsolète. À utiliser à votre discrétion.

74</Warning>

75 

76### Conditions préalables

77 

78* Claude Code mis à jour vers la dernière version

79* Serveur proxy LiteLLM déployé et accessible

80* Accès aux modèles Claude via votre fournisseur choisi

81 

82### Configuration de base de LiteLLM

83 

84**Configurer Claude Code** :

85 

86#### Méthodes d'authentification

87 

88##### Clé API statique

89 

90Méthode la plus simple utilisant une clé API fixe :

91 

92```bash theme={null}

93# Définir dans l'environnement

94export ANTHROPIC_AUTH_TOKEN=sk-litellm-static-key

95 

96# Ou dans les paramètres de Claude Code

97{

98 "env": {

99 "ANTHROPIC_AUTH_TOKEN": "sk-litellm-static-key"

100 }

101}

102```

103 

104Cette valeur sera envoyée en tant qu'en-tête `Authorization`.

105 

106##### Clé API dynamique avec assistant

107 

108Pour les clés rotatives ou l'authentification par utilisateur :

109 

1101. Créez un script d'assistant de clé API :

111 

112```bash theme={null}

113#!/bin/bash

114# ~/bin/get-litellm-key.sh

115 

116# Exemple : Récupérer la clé du coffre-fort

117vault kv get -field=api_key secret/litellm/claude-code

118 

119# Exemple : Générer un jeton JWT

120jwt encode \

121 --secret="${JWT_SECRET}" \

122 --exp="+1h" \

123 '{"user":"'${USER}'","team":"engineering"}'

124```

125 

1262. Configurez les paramètres de Claude Code pour utiliser l'assistant :

127 

128```json theme={null}

129{

130 "apiKeyHelper": "~/bin/get-litellm-key.sh"

131}

132```

133 

1343. Définissez l'intervalle d'actualisation du jeton :

135 

136```bash theme={null}

137# Actualiser toutes les heures (3600000 ms)

138export CLAUDE_CODE_API_KEY_HELPER_TTL_MS=3600000

139```

140 

141Cette valeur sera envoyée en tant qu'en-têtes `Authorization` et `X-Api-Key`. L'`apiKeyHelper` a une priorité inférieure à `ANTHROPIC_AUTH_TOKEN` ou `ANTHROPIC_API_KEY`.

142 

143#### Point de terminaison unifié (recommandé)

144 

145Utilisant le [point de terminaison au format Anthropic](https://docs.litellm.ai/docs/anthropic_unified) de LiteLLM :

146 

147```bash theme={null}

148export ANTHROPIC_BASE_URL=https://litellm-server:4000

149```

150 

151**Avantages du point de terminaison unifié par rapport aux points de terminaison de transmission directe :**

152 

153* Équilibrage de charge

154* Basculements

155* Support cohérent du suivi des coûts et du suivi des utilisateurs finaux

156 

157#### Points de terminaison de transmission directe spécifiques aux fournisseurs (alternative)

158 

159##### API Claude via LiteLLM

160 

161Utilisant le [point de terminaison de transmission directe](https://docs.litellm.ai/docs/pass_through/anthropic_completion) :

162 

163```bash theme={null}

164export ANTHROPIC_BASE_URL=https://litellm-server:4000/anthropic

165```

166 

167##### Amazon Bedrock via LiteLLM

168 

169Utilisant le [point de terminaison de transmission directe](https://docs.litellm.ai/docs/pass_through/bedrock) :

170 

171```bash theme={null}

172export ANTHROPIC_BEDROCK_BASE_URL=https://litellm-server:4000/bedrock

173export CLAUDE_CODE_SKIP_BEDROCK_AUTH=1

174export CLAUDE_CODE_USE_BEDROCK=1

175```

176 

177##### Google Vertex AI via LiteLLM

178 

179Utilisant le [point de terminaison de transmission directe](https://docs.litellm.ai/docs/pass_through/vertex_ai) :

180 

181```bash theme={null}

182export ANTHROPIC_VERTEX_BASE_URL=https://litellm-server:4000/vertex_ai/v1

183export ANTHROPIC_VERTEX_PROJECT_ID=your-gcp-project-id

184export CLAUDE_CODE_SKIP_VERTEX_AUTH=1

185export CLAUDE_CODE_USE_VERTEX=1

186export CLOUD_ML_REGION=us-east5

187```

188 

189Pour plus d'informations détaillées, consultez la [documentation de LiteLLM](https://docs.litellm.ai/).

190 

191## Ressources supplémentaires

192 

193* [Documentation de LiteLLM](https://docs.litellm.ai/)

194* [Paramètres de Claude Code](/fr/settings)

195* [Configuration du réseau d'entreprise](/fr/network-config)

196* [Aperçu des intégrations tierces](/fr/third-party-integrations)

mcp.md +1451 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Connecter Claude Code aux outils via MCP

6 

7> Découvrez comment connecter Claude Code à vos outils avec le Model Context Protocol.

8 

9export const MCPServersTable = ({platform = "all"}) => {

10 const ifYouAreAnAiAgentReadingThisYouShouldInsteadFetch = 'https://api.anthropic.com/mcp-registry/docs';

11 const [servers, setServers] = useState([]);

12 const [loading, setLoading] = useState(true);

13 const [error, setError] = useState(null);

14 useEffect(() => {

15 const fetchServers = async () => {

16 try {

17 setLoading(true);

18 const allServers = [];

19 let cursor = null;

20 do {

21 const url = new URL('https://api.anthropic.com/mcp-registry/v0/servers');

22 url.searchParams.set('version', 'latest');

23 url.searchParams.set('visibility', 'commercial');

24 url.searchParams.set('limit', '100');

25 if (cursor) {

26 url.searchParams.set('cursor', cursor);

27 }

28 const response = await fetch(url);

29 if (!response.ok) {

30 throw new Error(`Failed to fetch MCP registry: ${response.status}`);

31 }

32 const data = await response.json();

33 allServers.push(...data.servers);

34 cursor = data.metadata?.nextCursor || null;

35 } while (cursor);

36 const transformedServers = allServers.map(item => {

37 const server = item.server;

38 const meta = item._meta?.['com.anthropic.api/mcp-registry'] || ({});

39 const worksWith = meta.worksWith || [];

40 const availability = {

41 claudeCode: worksWith.includes('claude-code'),

42 mcpConnector: worksWith.includes('claude-api'),

43 claudeDesktop: worksWith.includes('claude-desktop')

44 };

45 const remotes = server.remotes || [];

46 const httpRemote = remotes.find(r => r.type === 'streamable-http');

47 const sseRemote = remotes.find(r => r.type === 'sse');

48 const preferredRemote = httpRemote || sseRemote;

49 const remoteUrl = preferredRemote?.url || meta.url;

50 const remoteType = preferredRemote?.type;

51 const isTemplatedUrl = remoteUrl?.includes('{');

52 let setupUrl;

53 if (isTemplatedUrl && meta.requiredFields) {

54 const urlField = meta.requiredFields.find(f => f.field === 'url');

55 setupUrl = urlField?.sourceUrl || meta.documentation;

56 }

57 const urls = {};

58 if (!isTemplatedUrl) {

59 if (remoteType === 'streamable-http') {

60 urls.http = remoteUrl;

61 } else if (remoteType === 'sse') {

62 urls.sse = remoteUrl;

63 }

64 }

65 let envVars = [];

66 if (server.packages && server.packages.length > 0) {

67 const npmPackage = server.packages.find(p => p.registryType === 'npm');

68 if (npmPackage) {

69 urls.stdio = `npx -y ${npmPackage.identifier}`;

70 if (npmPackage.environmentVariables) {

71 envVars = npmPackage.environmentVariables;

72 }

73 }

74 }

75 return {

76 name: meta.displayName || server.title || server.name,

77 description: meta.oneLiner || server.description,

78 documentation: meta.documentation,

79 urls: urls,

80 envVars: envVars,

81 availability: availability,

82 customCommands: meta.claudeCodeCopyText ? {

83 claudeCode: meta.claudeCodeCopyText

84 } : undefined,

85 setupUrl: setupUrl

86 };

87 });

88 setServers(transformedServers);

89 setError(null);

90 } catch (err) {

91 setError(err.message);

92 console.error('Error fetching MCP registry:', err);

93 } finally {

94 setLoading(false);

95 }

96 };

97 fetchServers();

98 }, []);

99 const generateClaudeCodeCommand = server => {

100 if (server.customCommands && server.customCommands.claudeCode) {

101 return server.customCommands.claudeCode.replace('--transport streamable-http', '--transport http');

102 }

103 const serverSlug = server.name.toLowerCase().replace(/[^a-z0-9]/g, '-');

104 if (server.urls.http) {

105 return `claude mcp add ${serverSlug} --transport http ${server.urls.http}`;

106 }

107 if (server.urls.sse) {

108 return `claude mcp add ${serverSlug} --transport sse ${server.urls.sse}`;

109 }

110 if (server.urls.stdio) {

111 const envFlags = server.envVars && server.envVars.length > 0 ? server.envVars.map(v => `--env ${v.name}=YOUR_${v.name}`).join(' ') : '';

112 const baseCommand = `claude mcp add ${serverSlug} --transport stdio`;

113 return envFlags ? `${baseCommand} ${envFlags} -- ${server.urls.stdio}` : `${baseCommand} -- ${server.urls.stdio}`;

114 }

115 return null;

116 };

117 if (loading) {

118 return <div>Loading MCP servers...</div>;

119 }

120 if (error) {

121 return <div>Error loading MCP servers: {error}</div>;

122 }

123 const filteredServers = servers.filter(server => {

124 if (platform === "claudeCode") {

125 return server.availability.claudeCode;

126 } else if (platform === "mcpConnector") {

127 return server.availability.mcpConnector;

128 } else if (platform === "claudeDesktop") {

129 return server.availability.claudeDesktop;

130 } else if (platform === "all") {

131 return true;

132 } else {

133 throw new Error(`Unknown platform: ${platform}`);

134 }

135 });

136 return <>

137 <style jsx>{`

138 .cards-container {

139 display: grid;

140 gap: 1rem;

141 margin-bottom: 2rem;

142 }

143 .server-card {

144 border: 1px solid var(--border-color, #e5e7eb);

145 border-radius: 6px;

146 padding: 1rem;

147 }

148 .command-row {

149 display: flex;

150 align-items: center;

151 gap: 0.25rem;

152 }

153 .command-row code {

154 font-size: 0.75rem;

155 overflow-x: auto;

156 }

157 `}</style>

158 

159 <div className="cards-container">

160 {filteredServers.map(server => {

161 const claudeCodeCommand = generateClaudeCodeCommand(server);

162 const mcpUrl = server.urls.http || server.urls.sse;

163 const commandToShow = platform === "claudeCode" ? claudeCodeCommand : mcpUrl;

164 return <div key={server.name} className="server-card">

165 <div>

166 {server.documentation ? <a href={server.documentation}>

167 <strong>{server.name}</strong>

168 </a> : <strong>{server.name}</strong>}

169 </div>

170 

171 <p style={{

172 margin: '0.5rem 0',

173 fontSize: '0.9rem'

174 }}>

175 {server.description}

176 </p>

177 

178 {server.setupUrl && <p style={{

179 margin: '0.25rem 0',

180 fontSize: '0.8rem',

181 fontStyle: 'italic',

182 opacity: 0.7

183 }}>

184 Requires user-specific URL.{' '}

185 <a href={server.setupUrl} style={{

186 textDecoration: 'underline'

187 }}>

188 Get your URL here

189 </a>.

190 </p>}

191 

192 {commandToShow && !server.setupUrl && <>

193 <p style={{

194 display: 'block',

195 fontSize: '0.75rem',

196 fontWeight: 500,

197 minWidth: 'fit-content',

198 marginTop: '0.5rem',

199 marginBottom: 0

200 }}>

201 {platform === "claudeCode" ? "Command" : "URL"}

202 </p>

203 <div className="command-row">

204 <code>

205 {commandToShow}

206 </code>

207 </div>

208 </>}

209 </div>;

210 })}

211 </div>

212 </>;

213};

214 

215Claude Code peut se connecter à des centaines d'outils externes et de sources de données via le [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction), une norme open source pour les intégrations IA-outils. Les serveurs MCP donnent à Claude Code accès à vos outils, bases de données et API.

216 

217Connectez un serveur lorsque vous vous trouvez à copier des données dans le chat à partir d'un autre outil, comme un suivi de problèmes ou un tableau de bord de surveillance. Une fois connecté, Claude peut lire et agir sur ce système directement au lieu de travailler à partir de ce que vous collez.

218 

219## Ce que vous pouvez faire avec MCP

220 

221Avec les serveurs MCP connectés, vous pouvez demander à Claude Code de :

222 

223* **Implémenter des fonctionnalités à partir de suivi de problèmes** : « Ajouter la fonctionnalité décrite dans le problème JIRA ENG-4521 et créer une PR sur GitHub. »

224* **Analyser les données de surveillance** : « Vérifier Sentry et Statsig pour vérifier l'utilisation de la fonctionnalité décrite dans ENG-4521. »

225* **Interroger les bases de données** : « Trouver les e-mails de 10 utilisateurs aléatoires qui ont utilisé la fonctionnalité ENG-4521, en fonction de notre base de données PostgreSQL. »

226* **Intégrer les conceptions** : « Mettre à jour notre modèle d'e-mail standard en fonction des nouvelles conceptions Figma qui ont été publiées sur Slack »

227* **Automatiser les flux de travail** : « Créer des brouillons Gmail invitant ces 10 utilisateurs à une session de rétroaction sur la nouvelle fonctionnalité. »

228* **Réagir aux événements externes** : Un serveur MCP peut également agir comme un [canal](/fr/channels) qui pousse des messages dans votre session, afin que Claude réagisse aux messages Telegram, aux discussions Discord ou aux événements webhook pendant que vous êtes absent.

229 

230## Serveurs MCP populaires

231 

232Voici quelques serveurs MCP couramment utilisés que vous pouvez connecter à Claude Code :

233 

234<Warning>

235 Utilisez les serveurs MCP tiers à vos propres risques - Anthropic n'a pas vérifié

236 l'exactitude ou la sécurité de tous ces serveurs.

237 Assurez-vous que vous faites confiance aux serveurs MCP que vous installez.

238 Soyez particulièrement prudent lors de l'utilisation de serveurs MCP qui pourraient récupérer du contenu non approuvé,

239 car ceux-ci peuvent vous exposer à un risque d'injection de prompt.

240</Warning>

241 

242<MCPServersTable platform="claudeCode" />

243 

244<Note>

245 **Besoin d'une intégration spécifique ?** [Trouvez des centaines d'autres serveurs MCP sur GitHub](https://github.com/modelcontextprotocol/servers), ou créez le vôtre en utilisant le [MCP SDK](https://modelcontextprotocol.io/quickstart/server).

246</Note>

247 

248## Installation des serveurs MCP

249 

250Les serveurs MCP peuvent être configurés de trois façons différentes selon vos besoins :

251 

252### Option 1 : Ajouter un serveur HTTP distant

253 

254Les serveurs HTTP sont l'option recommandée pour se connecter aux serveurs MCP distants. C'est le transport le plus largement supporté pour les services basés sur le cloud.

255 

256```bash theme={null}

257# Syntaxe de base

258claude mcp add --transport http <name> <url>

259 

260# Exemple réel : Se connecter à Notion

261claude mcp add --transport http notion https://mcp.notion.com/mcp

262 

263# Exemple avec jeton Bearer

264claude mcp add --transport http secure-api https://api.example.com/mcp \

265 --header "Authorization: Bearer your-token"

266```

267 

268### Option 2 : Ajouter un serveur SSE distant

269 

270<Warning>

271 Le transport SSE (Server-Sent Events) est déprécié. Utilisez plutôt les serveurs HTTP, si disponibles.

272</Warning>

273 

274```bash theme={null}

275# Syntaxe de base

276claude mcp add --transport sse <name> <url>

277 

278# Exemple réel : Se connecter à Asana

279claude mcp add --transport sse asana https://mcp.asana.com/sse

280 

281# Exemple avec en-tête d'authentification

282claude mcp add --transport sse private-api https://api.company.com/sse \

283 --header "X-API-Key: your-key-here"

284```

285 

286### Option 3 : Ajouter un serveur stdio local

287 

288Les serveurs Stdio s'exécutent en tant que processus locaux sur votre machine. Ils sont idéaux pour les outils qui ont besoin d'un accès direct au système ou de scripts personnalisés.

289 

290```bash theme={null}

291# Syntaxe de base

292claude mcp add [options] <name> -- <command> [args...]

293 

294# Exemple réel : Ajouter un serveur Airtable

295claude mcp add --transport stdio --env AIRTABLE_API_KEY=YOUR_KEY airtable \

296 -- npx -y airtable-mcp-server

297```

298 

299<Note>

300 **Important : Ordre des options**

301 

302 Toutes les options (`--transport`, `--env`, `--scope`, `--header`) doivent venir **avant** le nom du serveur. Le `--` (double tiret) sépare ensuite le nom du serveur de la commande et des arguments qui sont passés au serveur MCP.

303 

304 Par exemple :

305 

306 * `claude mcp add --transport stdio myserver -- npx server` → exécute `npx server`

307 * `claude mcp add --transport stdio --env KEY=value myserver -- python server.py --port 8080` → exécute `python server.py --port 8080` avec `KEY=value` dans l'environnement

308 

309 Cela évite les conflits entre les drapeaux de Claude et les drapeaux du serveur.

310</Note>

311 

312### Gestion de vos serveurs

313 

314Une fois configurés, vous pouvez gérer vos serveurs MCP avec ces commandes :

315 

316```bash theme={null}

317# Lister tous les serveurs configurés

318claude mcp list

319 

320# Obtenir les détails d'un serveur spécifique

321claude mcp get github

322 

323# Supprimer un serveur

324claude mcp remove github

325 

326# (dans Claude Code) Vérifier l'état du serveur

327/mcp

328```

329 

330### Mises à jour dynamiques des outils

331 

332Claude Code supporte les notifications MCP `list_changed`, permettant aux serveurs MCP de mettre à jour dynamiquement leurs outils, prompts et ressources disponibles sans vous obliger à vous déconnecter et reconnecter. Lorsqu'un serveur MCP envoie une notification `list_changed`, Claude Code actualise automatiquement les capacités disponibles de ce serveur.

333 

334### Reconnexion automatique

335 

336Si un serveur HTTP ou SSE se déconnecte en cours de session, Claude Code se reconnecte automatiquement avec un backoff exponentiel : jusqu'à cinq tentatives, en commençant par un délai d'une seconde et en doublant à chaque fois. Le serveur apparaît comme en attente dans `/mcp` pendant que la reconnexion est en cours. Après cinq tentatives échouées, le serveur est marqué comme échoué et vous pouvez réessayer manuellement à partir de `/mcp`. Les serveurs Stdio sont des processus locaux et ne sont pas reconnectés automatiquement.

337 

338Le même backoff s'applique lorsqu'un serveur HTTP ou SSE échoue sa connexion initiale au démarrage. À partir de la v2.1.121, Claude Code réessaie la connexion initiale jusqu'à trois fois sur les erreurs transitoires telles qu'une réponse 5xx, une connexion refusée ou un délai d'expiration, puis marque le serveur comme échoué s'il ne peut toujours pas se connecter. Les erreurs d'authentification et les erreurs de non-trouvé ne sont pas réessayées car elles nécessitent une modification de la configuration pour être résolues.

339 

340### Pousser des messages avec des canaux

341 

342Un serveur MCP peut également pousser des messages directement dans votre session afin que Claude puisse réagir aux événements externes comme les résultats CI, les alertes de surveillance ou les messages de chat. Pour activer cela, votre serveur déclare la capacité `claude/channel` et vous l'activez avec le drapeau `--channels` au démarrage. Consultez [Canaux](/fr/channels) pour utiliser un canal officiellement supporté, ou [Référence des canaux](/fr/channels-reference) pour créer le vôtre.

343 

344<Tip>

345 Conseils :

346 

347 * Utilisez le drapeau `--scope` pour spécifier où la configuration est stockée :

348 * `local` (par défaut) : Disponible uniquement pour vous dans le projet actuel (appelé `project` dans les versions antérieures)

349 * `project` : Partagé avec tous les membres du projet via le fichier `.mcp.json`

350 * `user` : Disponible pour vous dans tous les projets (appelé `global` dans les versions antérieures)

351 * Définissez les variables d'environnement avec les drapeaux `--env` (par exemple, `--env KEY=value`)

352 * Configurez le délai d'expiration du démarrage du serveur MCP en utilisant la variable d'environnement MCP\_TIMEOUT (par exemple, `MCP_TIMEOUT=10000 claude` définit un délai d'expiration de 10 secondes)

353 * Claude Code affichera un avertissement lorsque la sortie de l'outil MCP dépasse 10 000 jetons. Pour augmenter cette limite, définissez la variable d'environnement `MAX_MCP_OUTPUT_TOKENS` (par exemple, `MAX_MCP_OUTPUT_TOKENS=50000`)

354 * Utilisez `/mcp` pour vous authentifier auprès des serveurs distants qui nécessitent une authentification OAuth 2.0

355</Tip>

356 

357### Serveurs MCP fournis par les plugins

358 

359Les [plugins](/fr/plugins) peuvent regrouper des serveurs MCP, fournissant automatiquement des outils et des intégrations lorsque le plugin est activé. Les serveurs MCP des plugins fonctionnent de manière identique aux serveurs configurés par l'utilisateur.

360 

361**Comment fonctionnent les serveurs MCP des plugins** :

362 

363* Les plugins définissent les serveurs MCP dans `.mcp.json` à la racine du plugin ou en ligne dans `plugin.json`

364* Lorsqu'un plugin est activé, ses serveurs MCP démarrent automatiquement

365* Les outils MCP des plugins apparaissent aux côtés des outils MCP configurés manuellement

366* Les serveurs des plugins sont gérés via l'installation du plugin (pas via les commandes `/mcp`)

367 

368**Exemple de configuration MCP du plugin** :

369 

370Dans `.mcp.json` à la racine du plugin :

371 

372```json theme={null}

373{

374 "mcpServers": {

375 "database-tools": {

376 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",

377 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],

378 "env": {

379 "DB_URL": "${DB_URL}"

380 }

381 }

382 }

383}

384```

385 

386Ou en ligne dans `plugin.json` :

387 

388```json theme={null}

389{

390 "name": "my-plugin",

391 "mcpServers": {

392 "plugin-api": {

393 "command": "${CLAUDE_PLUGIN_ROOT}/servers/api-server",

394 "args": ["--port", "8080"]

395 }

396 }

397}

398```

399 

400**Fonctionnalités MCP du plugin** :

401 

402* **Cycle de vie automatique** : Au démarrage de la session, les serveurs des plugins activés se connectent automatiquement. Si vous activez ou désactivez un plugin pendant une session, exécutez `/reload-plugins` pour connecter ou déconnecter ses serveurs MCP

403* **Variables d'environnement** : utilisez `${CLAUDE_PLUGIN_ROOT}` pour les fichiers du plugin groupés et `${CLAUDE_PLUGIN_DATA}` pour l'[état persistant](/fr/plugins-reference#persistent-data-directory) qui survit aux mises à jour du plugin

404* **Accès aux variables d'environnement utilisateur** : Accès aux mêmes variables d'environnement que les serveurs configurés manuellement

405* **Types de transport multiples** : Support des transports stdio, SSE et HTTP (le support des transports peut varier selon le serveur)

406 

407**Affichage des serveurs MCP du plugin** :

408 

409```bash theme={null}

410# Dans Claude Code, voir tous les serveurs MCP y compris ceux du plugin

411/mcp

412```

413 

414Les serveurs des plugins apparaissent dans la liste avec des indicateurs montrant qu'ils proviennent des plugins.

415 

416**Avantages des serveurs MCP du plugin** :

417 

418* **Distribution groupée** : Outils et serveurs emballés ensemble

419* **Configuration automatique** : Aucune configuration MCP manuelle nécessaire

420* **Cohérence d'équipe** : Tout le monde obtient les mêmes outils lorsque le plugin est installé

421 

422Consultez la [référence des composants du plugin](/fr/plugins-reference#mcp-servers) pour plus de détails sur le regroupement des serveurs MCP avec les plugins.

423 

424## Portées d'installation MCP

425 

426Les serveurs MCP peuvent être configurés à trois portées différentes. La portée que vous choisissez contrôle les projets dans lesquels le serveur se charge et si la configuration est partagée avec votre équipe.

427 

428| Portée | Se charge dans | Partagé avec l'équipe | Stocké dans |

429| -------------------------- | ------------------------ | ------------------------------- | --------------------------------- |

430| [Local](#local-scope) | Projet actuel uniquement | Non | `~/.claude.json` |

431| [Projet](#project-scope) | Projet actuel uniquement | Oui, via le contrôle de version | `.mcp.json` à la racine du projet |

432| [Utilisateur](#user-scope) | Tous vos projets | Non | `~/.claude.json` |

433 

434### Portée locale

435 

436La portée locale est la portée par défaut. Un serveur à portée locale se charge uniquement dans le projet où vous l'avez ajouté et reste privé pour vous. Claude Code le stocke dans `~/.claude.json` sous le chemin de ce projet, donc le même serveur n'apparaîtra pas dans vos autres projets. Utilisez la portée locale pour les serveurs de développement personnels, les configurations expérimentales ou les serveurs avec des identifiants que vous ne voulez pas dans le contrôle de version.

437 

438<Note>

439 Le terme « portée locale » pour les serveurs MCP diffère des paramètres locaux généraux. Les serveurs MCP à portée locale sont stockés dans `~/.claude.json` (votre répertoire personnel), tandis que les paramètres locaux généraux utilisent `.claude/settings.local.json` (dans le répertoire du projet). Consultez [Paramètres](/fr/settings#settings-files) pour plus de détails sur les emplacements des fichiers de paramètres.

440</Note>

441 

442```bash theme={null}

443# Ajouter un serveur à portée locale (par défaut)

444claude mcp add --transport http stripe https://mcp.stripe.com

445 

446# Spécifier explicitement la portée locale

447claude mcp add --transport http stripe --scope local https://mcp.stripe.com

448```

449 

450La commande écrit le serveur dans l'entrée de votre projet actuel dans `~/.claude.json`. L'exemple ci-dessous montre le résultat lorsque vous l'exécutez à partir de `/path/to/your/project` :

451 

452```json theme={null}

453{

454 "projects": {

455 "/path/to/your/project": {

456 "mcpServers": {

457 "stripe": {

458 "type": "http",

459 "url": "https://mcp.stripe.com"

460 }

461 }

462 }

463 }

464}

465```

466 

467### Portée du projet

468 

469Les serveurs à portée de projet permettent la collaboration d'équipe en stockant les configurations dans un fichier `.mcp.json` à la racine de votre projet. Ce fichier est conçu pour être archivé dans le contrôle de version, garantissant que tous les membres de l'équipe ont accès aux mêmes outils et services MCP. Lorsque vous ajoutez un serveur à portée de projet, Claude Code crée ou met à jour automatiquement ce fichier avec la structure de configuration appropriée.

470 

471```bash theme={null}

472# Ajouter un serveur à portée de projet

473claude mcp add --transport http paypal --scope project https://mcp.paypal.com/mcp

474```

475 

476Le fichier `.mcp.json` résultant suit un format standardisé :

477 

478```json theme={null}

479{

480 "mcpServers": {

481 "shared-server": {

482 "command": "/path/to/server",

483 "args": [],

484 "env": {}

485 }

486 }

487}

488```

489 

490Pour des raisons de sécurité, Claude Code demande une approbation avant d'utiliser les serveurs à portée de projet à partir des fichiers `.mcp.json`. Si vous devez réinitialiser ces choix d'approbation, utilisez la commande `claude mcp reset-project-choices`.

491 

492### Portée utilisateur

493 

494Les serveurs à portée utilisateur sont stockés dans `~/.claude.json` et offrent une accessibilité inter-projets, les rendant disponibles dans tous les projets de votre machine tout en restant privés pour votre compte utilisateur. Cette portée fonctionne bien pour les serveurs utilitaires personnels, les outils de développement ou les services que vous utilisez fréquemment dans différents projets.

495 

496```bash theme={null}

497# Ajouter un serveur utilisateur

498claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic

499```

500 

501### Hiérarchie de portée et précédence

502 

503Lorsque le même serveur est défini à plus d'un endroit, Claude Code s'y connecte une fois, en utilisant la définition de la source avec la plus haute priorité :

504 

5051. Portée locale

5062. Portée du projet

5073. Portée utilisateur

5084. [Serveurs fournis par les plugins](/fr/plugins)

5095. [Connecteurs claude.ai](#use-mcp-servers-from-claude-ai)

510 

511Les trois portées correspondent aux doublons par nom. Les plugins et les connecteurs correspondent par point de terminaison, donc celui qui pointe vers la même URL ou commande qu'un serveur ci-dessus est traité comme un doublon.

512 

513### Expansion des variables d'environnement dans `.mcp.json`

514 

515Claude Code supporte l'expansion des variables d'environnement dans les fichiers `.mcp.json`, permettant aux équipes de partager des configurations tout en maintenant la flexibilité pour les chemins spécifiques à la machine et les valeurs sensibles comme les clés API.

516 

517**Syntaxe supportée :**

518 

519* `${VAR}` - Se développe à la valeur de la variable d'environnement `VAR`

520* `${VAR:-default}` - Se développe à `VAR` si défini, sinon utilise `default`

521 

522**Emplacements d'expansion :**

523Les variables d'environnement peuvent être développées dans :

524 

525* `command` - Le chemin de l'exécutable du serveur

526* `args` - Arguments de la ligne de commande

527* `env` - Variables d'environnement passées au serveur

528* `url` - Pour les types de serveur HTTP

529* `headers` - Pour l'authentification du serveur HTTP

530 

531**Exemple avec expansion de variable :**

532 

533```json theme={null}

534{

535 "mcpServers": {

536 "api-server": {

537 "type": "http",

538 "url": "${API_BASE_URL:-https://api.example.com}/mcp",

539 "headers": {

540 "Authorization": "Bearer ${API_KEY}"

541 }

542 }

543 }

544}

545```

546 

547Si une variable d'environnement requise n'est pas définie et n'a pas de valeur par défaut, Claude Code ne pourra pas analyser la configuration.

548 

549## Exemples pratiques

550 

551{/* ### Exemple : Automatiser les tests de navigateur avec Playwright

552 

553```bash

554claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest

555```

556 

557Ensuite, écrivez et exécutez des tests de navigateur :

558 

559```text

560Test si le flux de connexion fonctionne avec test@example.com

561```

562```text

563Prendre une capture d'écran de la page de paiement sur mobile

564```

565```text

566Vérifier que la fonction de recherche retourne des résultats

567``` */}

568 

569### Exemple : Surveiller les erreurs avec Sentry

570 

571```bash theme={null}

572claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

573```

574 

575Authentifiez-vous avec votre compte Sentry :

576 

577```text theme={null}

578/mcp

579```

580 

581Ensuite, déboguez les problèmes de production :

582 

583```text theme={null}

584Quelles sont les erreurs les plus courantes au cours des 24 dernières heures ?

585```

586 

587```text theme={null}

588Montrez-moi la trace de pile pour l'erreur ID abc123

589```

590 

591```text theme={null}

592Quel déploiement a introduit ces nouvelles erreurs ?

593```

594 

595### Exemple : Se connecter à GitHub pour les révisions de code

596 

597Le serveur MCP distant de GitHub s'authentifie avec un jeton d'accès personnel GitHub transmis en tant qu'en-tête. Pour en obtenir un, ouvrez vos [paramètres de jeton GitHub](https://github.com/settings/personal-access-tokens), générez un nouveau jeton à granularité fine avec accès aux référentiels avec lesquels vous souhaitez que Claude travaille, puis ajoutez le serveur :

598 

599```bash theme={null}

600claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \

601 --header "Authorization: Bearer YOUR_GITHUB_PAT"

602```

603 

604Ensuite, travaillez avec GitHub :

605 

606```text theme={null}

607Examinez la PR #456 et suggérez des améliorations

608```

609 

610```text theme={null}

611Créer un nouveau problème pour le bogue que nous venons de trouver

612```

613 

614```text theme={null}

615Montrez-moi toutes les PR ouvertes qui me sont assignées

616```

617 

618### Exemple : Interroger votre base de données PostgreSQL

619 

620```bash theme={null}

621claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \

622 --dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"

623```

624 

625Ensuite, interrogez votre base de données naturellement :

626 

627```text theme={null}

628Quel est notre revenu total ce mois-ci ?

629```

630 

631```text theme={null}

632Montrez-moi le schéma de la table des commandes

633```

634 

635```text theme={null}

636Trouver les clients qui n'ont pas effectué d'achat depuis 90 jours

637```

638 

639## S'authentifier auprès des serveurs MCP distants

640 

641De nombreux serveurs MCP basés sur le cloud nécessitent une authentification. Claude Code supporte OAuth 2.0 pour les connexions sécurisées.

642 

643<Steps>

644 <Step title="Ajouter le serveur qui nécessite une authentification">

645 Par exemple :

646 

647 ```bash theme={null}

648 claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

649 ```

650 </Step>

651 

652 <Step title="Utiliser la commande /mcp dans Claude Code">

653 Dans Claude Code, utilisez la commande :

654 

655 ```text theme={null}

656 /mcp

657 ```

658 

659 Ensuite, suivez les étapes dans votre navigateur pour vous connecter.

660 </Step>

661</Steps>

662 

663<Tip>

664 Conseils :

665 

666 * Les jetons d'authentification sont stockés de manière sécurisée et actualisés automatiquement

667 * Utilisez « Clear authentication » dans le menu `/mcp` pour révoquer l'accès

668 * Si votre navigateur ne s'ouvre pas automatiquement, copiez l'URL fournie et ouvrez-la manuellement

669 * Si la redirection du navigateur échoue avec une erreur de connexion après l'authentification, collez l'URL de rappel complète de la barre d'adresse de votre navigateur dans l'invite d'URL qui apparaît dans Claude Code

670 * L'authentification OAuth fonctionne avec les serveurs HTTP

671</Tip>

672 

673### Utiliser un port de rappel OAuth fixe

674 

675Certains serveurs MCP nécessitent un URI de redirection spécifique enregistré à l'avance. Par défaut, Claude Code choisit un port disponible aléatoire pour le rappel OAuth. Utilisez `--callback-port` pour fixer le port afin qu'il corresponde à un URI de redirection pré-enregistré de la forme `http://localhost:PORT/callback`.

676 

677Vous pouvez utiliser `--callback-port` seul (avec l'enregistrement dynamique du client) ou ensemble avec `--client-id` (avec les identifiants pré-configurés).

678 

679```bash theme={null}

680# Port de rappel fixe avec enregistrement dynamique du client

681claude mcp add --transport http \

682 --callback-port 8080 \

683 my-server https://mcp.example.com/mcp

684```

685 

686### Utiliser les identifiants OAuth pré-configurés

687 

688Certains serveurs MCP ne supportent pas la configuration OAuth automatique via l'enregistrement dynamique du client. Si vous voyez une erreur comme « Incompatible auth server: does not support dynamic client registration », le serveur nécessite des identifiants pré-configurés. Claude Code supporte également les serveurs qui utilisent un document de métadonnées d'ID client (CIMD) au lieu de l'enregistrement dynamique du client, et les découvre automatiquement. Si la découverte automatique échoue, enregistrez d'abord une application OAuth via le portail des développeurs du serveur, puis fournissez les identifiants lors de l'ajout du serveur.

689 

690<Steps>

691 <Step title="Enregistrer une application OAuth auprès du serveur">

692 Créez une application via le portail des développeurs du serveur et notez votre ID client et votre secret client.

693 

694 De nombreux serveurs nécessitent également un URI de redirection. Si c'est le cas, choisissez un port et enregistrez un URI de redirection au format `http://localhost:PORT/callback`. Utilisez ce même port avec `--callback-port` à l'étape suivante.

695 </Step>

696 

697 <Step title="Ajouter le serveur avec vos identifiants">

698 Choisissez l'une des méthodes suivantes. Le port utilisé pour `--callback-port` peut être n'importe quel port disponible. Il doit simplement correspondre à l'URI de redirection que vous avez enregistré à l'étape précédente.

699 

700 <Tabs>

701 <Tab title="claude mcp add">

702 Utilisez `--client-id` pour passer l'ID client de votre application. Le drapeau `--client-secret` demande le secret avec une entrée masquée :

703 

704 ```bash theme={null}

705 claude mcp add --transport http \

706 --client-id your-client-id --client-secret --callback-port 8080 \

707 my-server https://mcp.example.com/mcp

708 ```

709 </Tab>

710 

711 <Tab title="claude mcp add-json">

712 Incluez l'objet `oauth` dans la configuration JSON et passez `--client-secret` comme drapeau séparé :

713 

714 ```bash theme={null}

715 claude mcp add-json my-server \

716 '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' \

717 --client-secret

718 ```

719 </Tab>

720 

721 <Tab title="claude mcp add-json (port de rappel uniquement)">

722 Utilisez `--callback-port` sans ID client pour fixer le port tout en utilisant l'enregistrement dynamique du client :

723 

724 ```bash theme={null}

725 claude mcp add-json my-server \

726 '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"callbackPort":8080}}'

727 ```

728 </Tab>

729 

730 <Tab title="CI / variable d'environnement">

731 Définissez le secret via une variable d'environnement pour ignorer l'invite interactive :

732 

733 ```bash theme={null}

734 MCP_CLIENT_SECRET=your-secret claude mcp add --transport http \

735 --client-id your-client-id --client-secret --callback-port 8080 \

736 my-server https://mcp.example.com/mcp

737 ```

738 </Tab>

739 </Tabs>

740 </Step>

741 

742 <Step title="S'authentifier dans Claude Code">

743 Exécutez `/mcp` dans Claude Code et suivez le flux de connexion du navigateur.

744 </Step>

745</Steps>

746 

747<Tip>

748 Conseils :

749 

750 * Le secret client est stocké de manière sécurisée dans votre trousseau système (macOS) ou un fichier d'identifiants, pas dans votre configuration

751 * Si le serveur utilise un client OAuth public sans secret, utilisez uniquement `--client-id` sans `--client-secret`

752 * `--callback-port` peut être utilisé avec ou sans `--client-id`

753 * Ces drapeaux s'appliquent uniquement aux transports HTTP et SSE. Ils n'ont aucun effet sur les serveurs stdio

754 * Utilisez `claude mcp get <name>` pour vérifier que les identifiants OAuth sont configurés pour un serveur

755</Tip>

756 

757### Remplacer la découverte des métadonnées OAuth

758 

759Pointez Claude Code vers une URL de métadonnées spécifique du serveur d'autorisation OAuth pour contourner la chaîne de découverte par défaut. Définissez `authServerMetadataUrl` lorsque les points de terminaison standard du serveur MCP génèrent des erreurs, ou lorsque vous souhaitez acheminer la découverte via un proxy interne. Par défaut, Claude Code vérifie d'abord les métadonnées de ressource protégée RFC 9728 à `/.well-known/oauth-protected-resource`, puis revient aux métadonnées du serveur d'autorisation RFC 8414 à `/.well-known/oauth-authorization-server`.

760 

761Définissez `authServerMetadataUrl` dans l'objet `oauth` de la configuration de votre serveur dans `.mcp.json` :

762 

763```json theme={null}

764{

765 "mcpServers": {

766 "my-server": {

767 "type": "http",

768 "url": "https://mcp.example.com/mcp",

769 "oauth": {

770 "authServerMetadataUrl": "https://auth.example.com/.well-known/openid-configuration"

771 }

772 }

773 }

774}

775```

776 

777L'URL doit utiliser `https://`. `authServerMetadataUrl` nécessite Claude Code v2.1.64 ou ultérieur. Les `scopes_supported` de l'URL des métadonnées remplacent les portées que le serveur en amont annonce.

778 

779### Restreindre les portées OAuth

780 

781Définissez `oauth.scopes` pour épingler les portées que Claude Code demande pendant le flux d'autorisation. C'est la façon supportée de restreindre un serveur MCP à un sous-ensemble approuvé par l'équipe de sécurité lorsque le serveur d'autorisation en amont annonce plus de portées que vous ne souhaitez accorder. La valeur est une seule chaîne séparée par des espaces, correspondant au format du paramètre `scope` dans RFC 6749 §3.3.

782 

783```json theme={null}

784{

785 "mcpServers": {

786 "slack": {

787 "type": "http",

788 "url": "https://mcp.slack.com/mcp",

789 "oauth": {

790 "scopes": "channels:read chat:write search:read"

791 }

792 }

793 }

794}

795```

796 

797`oauth.scopes` a la priorité sur `authServerMetadataUrl` et les portées que le serveur découvre à `/.well-known`. Laissez-le non défini pour laisser le serveur MCP déterminer l'ensemble de portées demandées.

798 

799Si le serveur d'autorisation annonce `offline_access` dans `scopes_supported`, Claude Code l'ajoute aux portées épinglées afin que le jeton d'accès puisse être actualisé sans une nouvelle connexion au navigateur.

800 

801Si le serveur retourne ultérieurement un 403 `insufficient_scope` pour un appel d'outil, Claude Code se réauthentifie avec les mêmes portées épinglées. Élargissez `oauth.scopes` lorsqu'un outil dont vous avez besoin nécessite une portée en dehors de l'épingle.

802 

803### Utiliser des en-têtes dynamiques pour l'authentification personnalisée

804 

805Si votre serveur MCP utilise un schéma d'authentification autre que OAuth (tel que Kerberos, jetons de courte durée ou un SSO interne), utilisez `headersHelper` pour générer des en-têtes de requête au moment de la connexion. Claude Code exécute la commande et fusionne sa sortie dans les en-têtes de connexion.

806 

807```json theme={null}

808{

809 "mcpServers": {

810 "internal-api": {

811 "type": "http",

812 "url": "https://mcp.internal.example.com",

813 "headersHelper": "/opt/bin/get-mcp-auth-headers.sh"

814 }

815 }

816}

817```

818 

819La commande peut également être en ligne :

820 

821```json theme={null}

822{

823 "mcpServers": {

824 "internal-api": {

825 "type": "http",

826 "url": "https://mcp.internal.example.com",

827 "headersHelper": "echo '{\"Authorization\": \"Bearer '\"$(get-token)\"'\"}'"

828 }

829 }

830}

831```

832 

833**Exigences :**

834 

835* La commande doit écrire un objet JSON de paires clé-valeur de chaîne sur stdout

836* La commande s'exécute dans un shell avec un délai d'expiration de 10 secondes

837* Les en-têtes dynamiques remplacent tous les `headers` statiques portant le même nom

838 

839L'assistant s'exécute à nouveau à chaque connexion (au démarrage de la session et à la reconnexion). Il n'y a pas de mise en cache, donc votre script est responsable de toute réutilisation de jetons.

840 

841Claude Code définit ces variables d'environnement lors de l'exécution de l'assistant :

842 

843| Variable | Valeur |

844| :---------------------------- | :-------------------- |

845| `CLAUDE_CODE_MCP_SERVER_NAME` | le nom du serveur MCP |

846| `CLAUDE_CODE_MCP_SERVER_URL` | l'URL du serveur MCP |

847 

848Utilisez-les pour écrire un script d'assistant unique qui sert plusieurs serveurs MCP.

849 

850<Note>

851 `headersHelper` exécute des commandes shell arbitraires. Lorsqu'il est défini à portée de projet ou locale, il ne s'exécute qu'après que vous ayez accepté la boîte de dialogue de confiance de l'espace de travail.

852</Note>

853 

854## Ajouter des serveurs MCP à partir de la configuration JSON

855 

856Si vous avez une configuration JSON pour un serveur MCP, vous pouvez l'ajouter directement :

857 

858<Steps>

859 <Step title="Ajouter un serveur MCP à partir de JSON">

860 ```bash theme={null}

861 # Syntaxe de base

862 claude mcp add-json <name> '<json>'

863 

864 # Exemple : Ajouter un serveur HTTP avec configuration JSON

865 claude mcp add-json weather-api '{"type":"http","url":"https://api.weather.com/mcp","headers":{"Authorization":"Bearer token"}}'

866 

867 # Exemple : Ajouter un serveur stdio avec configuration JSON

868 claude mcp add-json local-weather '{"type":"stdio","command":"/path/to/weather-cli","args":["--api-key","abc123"],"env":{"CACHE_DIR":"/tmp"}}'

869 

870 # Exemple : Ajouter un serveur HTTP avec identifiants OAuth pré-configurés

871 claude mcp add-json my-server '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' --client-secret

872 ```

873 </Step>

874 

875 <Step title="Vérifier que le serveur a été ajouté">

876 ```bash theme={null}

877 claude mcp get weather-api

878 ```

879 </Step>

880</Steps>

881 

882<Tip>

883 Conseils :

884 

885 * Assurez-vous que le JSON est correctement échappé dans votre shell

886 * Le JSON doit se conformer au schéma de configuration du serveur MCP

887 * Vous pouvez utiliser `--scope user` pour ajouter le serveur à votre configuration utilisateur au lieu de celle spécifique au projet

888</Tip>

889 

890## Importer les serveurs MCP à partir de Claude Desktop

891 

892Si vous avez déjà configuré des serveurs MCP dans Claude Desktop, vous pouvez les importer :

893 

894<Steps>

895 <Step title="Importer les serveurs à partir de Claude Desktop">

896 ```bash theme={null}

897 # Syntaxe de base

898 claude mcp add-from-claude-desktop

899 ```

900 </Step>

901 

902 <Step title="Sélectionner les serveurs à importer">

903 Après avoir exécuté la commande, vous verrez une boîte de dialogue interactive qui vous permet de sélectionner les serveurs que vous souhaitez importer.

904 </Step>

905 

906 <Step title="Vérifier que les serveurs ont été importés">

907 ```bash theme={null}

908 claude mcp list

909 ```

910 </Step>

911</Steps>

912 

913<Tip>

914 Conseils :

915 

916 * Cette fonctionnalité ne fonctionne que sur macOS et Windows Subsystem for Linux (WSL)

917 * Elle lit le fichier de configuration de Claude Desktop à partir de son emplacement standard sur ces plates-formes

918 * Utilisez le drapeau `--scope user` pour ajouter les serveurs à votre configuration utilisateur

919 * Les serveurs importés auront les mêmes noms que dans Claude Desktop

920 * Si des serveurs portant les mêmes noms existent déjà, ils recevront un suffixe numérique (par exemple, `server_1`)

921</Tip>

922 

923## Utiliser les serveurs MCP à partir de Claude.ai

924 

925Si vous vous êtes connecté à Claude Code avec un compte [Claude.ai](https://claude.ai), les serveurs MCP que vous avez ajoutés dans Claude.ai sont automatiquement disponibles dans Claude Code :

926 

927<Steps>

928 <Step title="Configurer les serveurs MCP dans Claude.ai">

929 Ajoutez les serveurs à [claude.ai/customize/connectors](https://claude.ai/customize/connectors). Sur les plans Team et Enterprise, seuls les administrateurs peuvent ajouter des serveurs.

930 </Step>

931 

932 <Step title="Authentifier le serveur MCP">

933 Complétez les étapes d'authentification requises dans Claude.ai.

934 </Step>

935 

936 <Step title="Afficher et gérer les serveurs dans Claude Code">

937 Dans Claude Code, utilisez la commande :

938 

939 ```text theme={null}

940 /mcp

941 ```

942 

943 Les serveurs Claude.ai apparaissent dans la liste avec des indicateurs montrant qu'ils proviennent de Claude.ai.

944 </Step>

945</Steps>

946 

947Pour désactiver les serveurs MCP de Claude.ai dans Claude Code, définissez la variable d'environnement `ENABLE_CLAUDEAI_MCP_SERVERS` sur `false` :

948 

949```bash theme={null}

950ENABLE_CLAUDEAI_MCP_SERVERS=false claude

951```

952 

953## Utiliser Claude Code comme serveur MCP

954 

955Vous pouvez utiliser Claude Code lui-même comme serveur MCP auquel d'autres applications peuvent se connecter :

956 

957```bash theme={null}

958# Démarrer Claude en tant que serveur MCP stdio

959claude mcp serve

960```

961 

962Vous pouvez l'utiliser dans Claude Desktop en ajoutant cette configuration à claude\_desktop\_config.json :

963 

964```json theme={null}

965{

966 "mcpServers": {

967 "claude-code": {

968 "type": "stdio",

969 "command": "claude",

970 "args": ["mcp", "serve"],

971 "env": {}

972 }

973 }

974}

975```

976 

977<Warning>

978 **Configuration du chemin de l'exécutable** : Le champ `command` doit référencer l'exécutable Claude Code. Si la commande `claude` n'est pas dans le PATH de votre système, vous devrez spécifier le chemin complet de l'exécutable.

979 

980 Pour trouver le chemin complet :

981 

982 ```bash theme={null}

983 which claude

984 ```

985 

986 Ensuite, utilisez le chemin complet dans votre configuration :

987 

988 ```json theme={null}

989 {

990 "mcpServers": {

991 "claude-code": {

992 "type": "stdio",

993 "command": "/full/path/to/claude",

994 "args": ["mcp", "serve"],

995 "env": {}

996 }

997 }

998 }

999 ```

1000 

1001 Sans le chemin d'exécutable correct, vous rencontrerez des erreurs comme `spawn claude ENOENT`.

1002</Warning>

1003 

1004<Tip>

1005 Conseils :

1006 

1007 * Le serveur fournit l'accès aux outils de Claude comme View, Edit, LS, etc.

1008 * Dans Claude Desktop, essayez de demander à Claude de lire les fichiers dans un répertoire, de faire des modifications, et plus encore.

1009 * Notez que ce serveur MCP expose uniquement les outils de Claude Code à votre client MCP, donc votre propre client est responsable de l'implémentation de la confirmation de l'utilisateur pour les appels d'outils individuels.

1010</Tip>

1011 

1012## Limites de sortie MCP et avertissements

1013 

1014Lorsque les outils MCP produisent de grandes sorties, Claude Code aide à gérer l'utilisation des jetons pour éviter de surcharger votre contexte de conversation :

1015 

1016* **Seuil d'avertissement de sortie** : Claude Code affiche un avertissement lorsque la sortie de tout outil MCP dépasse 10 000 jetons

1017* **Limite configurable** : vous pouvez ajuster le nombre maximum de jetons de sortie MCP autorisés en utilisant la variable d'environnement `MAX_MCP_OUTPUT_TOKENS`

1018* **Limite par défaut** : la limite maximale par défaut est de 25 000 jetons

1019* **Portée** : la variable d'environnement s'applique aux outils qui ne déclarent pas leur propre limite. Les outils qui définissent [`anthropic/maxResultSizeChars`](#raise-the-limit-for-a-specific-tool) utilisent cette valeur à la place pour le contenu texte, indépendamment de ce que `MAX_MCP_OUTPUT_TOKENS` est défini. Les outils qui retournent des données d'image sont toujours soumis à `MAX_MCP_OUTPUT_TOKENS`

1020 

1021Pour augmenter la limite pour les outils qui produisent de grandes sorties :

1022 

1023```bash theme={null}

1024export MAX_MCP_OUTPUT_TOKENS=50000

1025claude

1026```

1027 

1028Ceci est particulièrement utile lorsque vous travaillez avec des serveurs MCP qui :

1029 

1030* Interrogent de grands ensembles de données ou des bases de données

1031* Génèrent des rapports ou des documentations détaillés

1032* Traitent des fichiers journaux ou des informations de débogage étendus

1033 

1034### Augmenter la limite pour un outil spécifique

1035 

1036Si vous créez un serveur MCP, vous pouvez permettre aux outils individuels de retourner des résultats plus grands que le seuil par défaut de persistance sur disque en définissant `_meta["anthropic/maxResultSizeChars"]` dans l'entrée de l'outil dans la réponse `tools/list`. Claude Code augmente le seuil de cet outil à la valeur annotée, jusqu'à un plafond dur de 500 000 caractères.

1037 

1038Ceci est utile pour les outils qui retournent des sorties intrinsèquement grandes mais nécessaires, telles que les schémas de base de données ou les arbres de fichiers complets. Sans l'annotation, les résultats qui dépassent le seuil par défaut sont persistés sur disque et remplacés par une référence de fichier dans la conversation.

1039 

1040```json theme={null}

1041{

1042 "name": "get_schema",

1043 "description": "Returns the full database schema",

1044 "_meta": {

1045 "anthropic/maxResultSizeChars": 200000

1046 }

1047}

1048```

1049 

1050L'annotation s'applique indépendamment de `MAX_MCP_OUTPUT_TOKENS` pour le contenu texte, donc les utilisateurs n'ont pas besoin d'augmenter la variable d'environnement pour les outils qui la déclarent. Les outils qui retournent des données d'image sont toujours soumis à la limite de jetons.

1051 

1052<Warning>

1053 Si vous rencontrez fréquemment des avertissements de sortie avec des serveurs MCP spécifiques que vous ne contrôlez pas, envisagez d'augmenter la limite `MAX_MCP_OUTPUT_TOKENS`. Vous pouvez également demander à l'auteur du serveur d'ajouter l'annotation `anthropic/maxResultSizeChars` ou de paginer ses réponses. L'annotation n'a aucun effet sur les outils qui retournent du contenu d'image ; pour ceux-ci, augmenter `MAX_MCP_OUTPUT_TOKENS` est la seule option.

1054</Warning>

1055 

1056## Répondre aux demandes d'élicitation MCP

1057 

1058Les serveurs MCP peuvent demander une entrée structurée de votre part au cours d'une tâche en utilisant l'élicitation. Lorsqu'un serveur a besoin d'informations qu'il ne peut pas obtenir par lui-même, Claude Code affiche une boîte de dialogue interactive et transmet votre réponse au serveur. Aucune configuration n'est requise de votre côté : les boîtes de dialogue d'élicitation apparaissent automatiquement lorsqu'un serveur les demande.

1059 

1060Les serveurs peuvent demander une entrée de deux façons :

1061 

1062* **Mode formulaire** : Claude Code affiche une boîte de dialogue avec des champs de formulaire définis par le serveur (par exemple, une invite de nom d'utilisateur et de mot de passe). Remplissez les champs et soumettez.

1063* **Mode URL** : Claude Code ouvre une URL de navigateur pour l'authentification ou l'approbation. Complétez le flux dans le navigateur, puis confirmez dans l'interface de ligne de commande.

1064 

1065Pour répondre automatiquement aux demandes d'élicitation sans afficher de boîte de dialogue, utilisez le [hook `Elicitation`](/fr/hooks#Elicitation).

1066 

1067Si vous créez un serveur MCP qui utilise l'élicitation, consultez la [spécification d'élicitation MCP](https://modelcontextprotocol.io/docs/learn/client-concepts#elicitation) pour les détails du protocole et les exemples de schéma.

1068 

1069## Utiliser les ressources MCP

1070 

1071Les serveurs MCP peuvent exposer des ressources que vous pouvez référencer en utilisant des mentions @, similaire à la façon dont vous référencez les fichiers.

1072 

1073### Référencer les ressources MCP

1074 

1075<Steps>

1076 <Step title="Lister les ressources disponibles">

1077 Tapez `@` dans votre prompt pour voir les ressources disponibles de tous les serveurs MCP connectés. Les ressources apparaissent aux côtés des fichiers dans le menu d'autocomplétion.

1078 </Step>

1079 

1080 <Step title="Référencer une ressource spécifique">

1081 Utilisez le format `@server:protocol://resource/path` pour référencer une ressource :

1082 

1083 ```text theme={null}

1084 Pouvez-vous analyser @github:issue://123 et suggérer un correctif ?

1085 ```

1086 

1087 ```text theme={null}

1088 Veuillez examiner la documentation API à @docs:file://api/authentication

1089 ```

1090 </Step>

1091 

1092 <Step title="Références de ressources multiples">

1093 Vous pouvez référencer plusieurs ressources dans un seul prompt :

1094 

1095 ```text theme={null}

1096 Comparez @postgres:schema://users avec @docs:file://database/user-model

1097 ```

1098 </Step>

1099</Steps>

1100 

1101<Tip>

1102 Conseils :

1103 

1104 * Les ressources sont automatiquement récupérées et incluses en tant que pièces jointes lorsqu'elles sont référencées

1105 * Les chemins des ressources sont recherchables par correspondance floue dans l'autocomplétion de mention @

1106 * Claude Code fournit automatiquement des outils pour lister et lire les ressources MCP lorsque les serveurs les supportent

1107 * Les ressources peuvent contenir n'importe quel type de contenu fourni par le serveur MCP (texte, JSON, données structurées, etc.)

1108</Tip>

1109 

1110## Mettre à l'échelle avec la recherche d'outils MCP

1111 

1112La recherche d'outils maintient l'utilisation du contexte MCP faible en différant les définitions d'outils jusqu'à ce que Claude en ait besoin. Seuls les noms d'outils se chargent au démarrage de la session, donc l'ajout de plus de serveurs MCP a un impact minimal sur votre fenêtre de contexte.

1113 

1114### Comment cela fonctionne

1115 

1116La recherche d'outils est activée par défaut. Les outils MCP sont différés plutôt que chargés dans le contexte à l'avance, et Claude utilise un outil de recherche pour découvrir les outils pertinents lorsqu'une tâche en a besoin. Seuls les outils que Claude utilise réellement entrent dans le contexte. De votre point de vue, les outils MCP fonctionnent exactement comme avant.

1117 

1118Si vous préférez le chargement basé sur un seuil, définissez `ENABLE_TOOL_SEARCH=auto` pour charger les schémas à l'avance lorsqu'ils s'ajustent dans 10 % de la fenêtre de contexte et différer uniquement le débordement. Consultez [Configurer la recherche d'outils](#configure-tool-search) pour toutes les options.

1119 

1120### Pour les auteurs de serveurs MCP

1121 

1122Si vous créez un serveur MCP, le champ des instructions du serveur devient plus utile avec la recherche d'outils activée. Les instructions du serveur aident Claude à comprendre quand rechercher vos outils, similaire à la façon dont les [skills](/fr/skills) fonctionnent.

1123 

1124Ajoutez des instructions de serveur claires et descriptives qui expliquent :

1125 

1126* Quelle catégorie de tâches vos outils gèrent

1127* Quand Claude doit rechercher vos outils

1128* Les capacités clés de votre serveur

1129 

1130Claude Code tronque les descriptions d'outils et les instructions du serveur à 2 Ko chacune. Gardez-les concis pour éviter la troncature, et mettez les détails critiques près du début.

1131 

1132### Configurer la recherche d'outils

1133 

1134La recherche d'outils est activée par défaut : les outils MCP sont différés et découverts à la demande. Elle est désactivée par défaut sur Vertex AI, qui n'accepte pas l'en-tête bêta de recherche d'outils, et lorsque `ANTHROPIC_BASE_URL` pointe vers un hôte non-propriétaire, car la plupart des proxies ne transfèrent pas les blocs `tool_reference`. Définissez `ENABLE_TOOL_SEARCH` explicitement pour opter pour. Cette fonctionnalité nécessite des modèles qui supportent les blocs `tool_reference` : Sonnet 4 et ultérieur, ou Opus 4 et ultérieur. Les modèles Haiku ne supportent pas la recherche d'outils.

1135 

1136Contrôlez le comportement de la recherche d'outils avec la variable d'environnement `ENABLE_TOOL_SEARCH` :

1137 

1138| Valeur | Comportement |

1139| :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1140| (non défini) | Tous les outils MCP différés et chargés à la demande. Revient au chargement à l'avance sur Vertex AI ou lorsque `ANTHROPIC_BASE_URL` est un hôte non-propriétaire |

1141| `true` | Tous les outils MCP différés, y compris sur Vertex AI et pour `ANTHROPIC_BASE_URL` non-propriétaire |

1142| `auto` | Mode seuil : les outils se chargent à l'avance s'ils s'ajustent dans 10 % de la fenêtre de contexte, différés sinon |

1143| `auto:<N>` | Mode seuil avec un pourcentage personnalisé, où `<N>` est 0-100 (par exemple, `auto:5` pour 5 %) |

1144| `false` | Tous les outils MCP chargés à l'avance, pas de différé |

1145 

1146```bash theme={null}

1147# Utiliser un seuil personnalisé de 5 %

1148ENABLE_TOOL_SEARCH=auto:5 claude

1149 

1150# Désactiver complètement la recherche d'outils

1151ENABLE_TOOL_SEARCH=false claude

1152```

1153 

1154Ou définissez la valeur dans le champ `env` de votre [settings.json](/fr/settings#available-settings).

1155 

1156Vous pouvez également désactiver l'outil `ToolSearch` spécifiquement :

1157 

1158```json theme={null}

1159{

1160 "permissions": {

1161 "deny": ["ToolSearch"]

1162 }

1163}

1164```

1165 

1166### Exempter un serveur du différé

1167 

1168Si les outils d'un serveur doivent toujours être visibles pour Claude sans une étape de recherche, définissez `alwaysLoad` à `true` dans la configuration de ce serveur. Chaque outil de ce serveur se charge alors dans le contexte au démarrage de la session indépendamment du paramètre `ENABLE_TOOL_SEARCH`. Utilisez ceci pour un petit nombre d'outils que Claude doit utiliser à chaque tour, car chaque outil à l'avance consomme du contexte qui serait autrement disponible pour votre conversation.

1169 

1170L'entrée `.mcp.json` suivante exempte un serveur HTTP tout en laissant les autres serveurs différés :

1171 

1172```json theme={null}

1173{

1174 "mcpServers": {

1175 "core-tools": {

1176 "type": "http",

1177 "url": "https://mcp.example.com/mcp",

1178 "alwaysLoad": true

1179 }

1180 }

1181}

1182```

1183 

1184Le champ `alwaysLoad` est disponible sur tous les types de serveurs et nécessite Claude Code v2.1.121 ou ultérieur. Un serveur MCP peut également marquer les outils individuels comme toujours chargés en incluant `"anthropic/alwaysLoad": true` dans l'objet `_meta` de l'outil, ce qui a le même effet pour cet outil uniquement.

1185 

1186## Utiliser les prompts MCP comme commandes

1187 

1188Les serveurs MCP peuvent exposer des prompts qui deviennent disponibles en tant que commandes dans Claude Code.

1189 

1190### Exécuter les prompts MCP

1191 

1192<Steps>

1193 <Step title="Découvrir les prompts disponibles">

1194 Tapez `/` pour voir toutes les commandes disponibles, y compris celles des serveurs MCP. Les prompts MCP apparaissent au format `/mcp__servername__promptname`.

1195 </Step>

1196 

1197 <Step title="Exécuter un prompt sans arguments">

1198 ```text theme={null}

1199 /mcp__github__list_prs

1200 ```

1201 </Step>

1202 

1203 <Step title="Exécuter un prompt avec des arguments">

1204 De nombreux prompts acceptent des arguments. Passez-les séparés par des espaces après la commande :

1205 

1206 ```text theme={null}

1207 /mcp__github__pr_review 456

1208 ```

1209 

1210 ```text theme={null}

1211 /mcp__jira__create_issue "Bug in login flow" high

1212 ```

1213 </Step>

1214</Steps>

1215 

1216<Tip>

1217 Conseils :

1218 

1219 * Les prompts MCP sont découverts dynamiquement à partir des serveurs connectés

1220 * Les arguments sont analysés en fonction des paramètres définis du prompt

1221 * Les résultats du prompt sont injectés directement dans la conversation

1222 * Les noms de serveur et de prompt sont normalisés (les espaces deviennent des traits de soulignement)

1223</Tip>

1224 

1225## Configuration MCP gérée

1226 

1227Pour les organisations qui ont besoin d'un contrôle centralisé sur les serveurs MCP, Claude Code supporte deux options de configuration :

1228 

12291. **Contrôle exclusif avec `managed-mcp.json`** : Déployer un ensemble fixe de serveurs MCP que les utilisateurs ne peuvent pas modifier ou étendre

12302. **Contrôle basé sur les politiques avec listes blanches/noires** : Permettre aux utilisateurs d'ajouter leurs propres serveurs, mais restreindre lesquels sont autorisés

1231 

1232Ces options permettent aux administrateurs informatiques de :

1233 

1234* **Contrôler les serveurs MCP auxquels les employés peuvent accéder** : Déployer un ensemble standardisé de serveurs MCP approuvés dans toute l'organisation

1235* **Empêcher les serveurs MCP non autorisés** : Restreindre les utilisateurs d'ajouter des serveurs MCP non approuvés

1236* **Désactiver complètement MCP** : Supprimer complètement la fonctionnalité MCP si nécessaire

1237 

1238### Option 1 : Contrôle exclusif avec managed-mcp.json

1239 

1240Lorsque vous déployez un fichier `managed-mcp.json`, il prend le **contrôle exclusif** de tous les serveurs MCP. Les utilisateurs ne peuvent pas ajouter, modifier ou utiliser d'autres serveurs MCP que ceux définis dans ce fichier. C'est l'approche la plus simple pour les organisations qui veulent un contrôle complet.

1241 

1242Les administrateurs système déploient le fichier de configuration dans un répertoire à l'échelle du système :

1243 

1244* macOS : `/Library/Application Support/ClaudeCode/managed-mcp.json`

1245* Linux et WSL : `/etc/claude-code/managed-mcp.json`

1246* Windows : `C:\Program Files\ClaudeCode\managed-mcp.json`

1247 

1248<Note>

1249 Ce sont des chemins à l'échelle du système (pas des répertoires personnels comme `~/Library/...`) qui nécessitent des privilèges d'administrateur. Ils sont conçus pour être déployés par les administrateurs informatiques.

1250</Note>

1251 

1252Le fichier `managed-mcp.json` utilise le même format qu'un fichier `.mcp.json` standard :

1253 

1254```json theme={null}

1255{

1256 "mcpServers": {

1257 "github": {

1258 "type": "http",

1259 "url": "https://api.githubcopilot.com/mcp/"

1260 },

1261 "sentry": {

1262 "type": "http",

1263 "url": "https://mcp.sentry.dev/mcp"

1264 },

1265 "company-internal": {

1266 "type": "stdio",

1267 "command": "/usr/local/bin/company-mcp-server",

1268 "args": ["--config", "/etc/company/mcp-config.json"],

1269 "env": {

1270 "COMPANY_API_URL": "https://internal.company.com"

1271 }

1272 }

1273 }

1274}

1275```

1276 

1277### Option 2 : Contrôle basé sur les politiques avec listes blanches et noires

1278 

1279Au lieu de prendre le contrôle exclusif, les administrateurs peuvent permettre aux utilisateurs de configurer leurs propres serveurs MCP tout en appliquant des restrictions sur les serveurs autorisés. Cette approche utilise `allowedMcpServers` et `deniedMcpServers` dans le [fichier de paramètres gérés](/fr/settings#settings-files).

1280 

1281<Note>

1282 **Choisir entre les options** : Utilisez l'option 1 (`managed-mcp.json`) lorsque vous souhaitez déployer un ensemble fixe de serveurs sans personnalisation utilisateur. Utilisez l'option 2 (listes blanches/noires) lorsque vous souhaitez permettre aux utilisateurs d'ajouter leurs propres serveurs dans le respect des contraintes de politique.

1283</Note>

1284 

1285#### Options de restriction

1286 

1287Chaque entrée dans la liste blanche ou noire peut restreindre les serveurs de trois façons :

1288 

12891. **Par nom de serveur** (`serverName`) : Correspond au nom configuré du serveur

12902. **Par commande** (`serverCommand`) : Correspond à la commande exacte et aux arguments utilisés pour démarrer les serveurs stdio

12913. **Par modèle d'URL** (`serverUrl`) : Correspond aux URL des serveurs distants avec support des caractères génériques

1292 

1293**Important** : Chaque entrée doit avoir exactement un de `serverName`, `serverCommand` ou `serverUrl`.

1294 

1295#### Exemple de configuration

1296 

1297```json theme={null}

1298{

1299 "allowedMcpServers": [

1300 // Autoriser par nom de serveur

1301 { "serverName": "github" },

1302 { "serverName": "sentry" },

1303 

1304 // Autoriser par commande exacte (pour les serveurs stdio)

1305 { "serverCommand": ["npx", "-y", "@modelcontextprotocol/server-filesystem"] },

1306 { "serverCommand": ["python", "/usr/local/bin/approved-server.py"] },

1307 

1308 // Autoriser par modèle d'URL (pour les serveurs distants)

1309 { "serverUrl": "https://mcp.company.com/*" },

1310 { "serverUrl": "https://*.internal.corp/*" }

1311 ],

1312 "deniedMcpServers": [

1313 // Bloquer par nom de serveur

1314 { "serverName": "dangerous-server" },

1315 

1316 // Bloquer par commande exacte (pour les serveurs stdio)

1317 { "serverCommand": ["npx", "-y", "unapproved-package"] },

1318 

1319 // Bloquer par modèle d'URL (pour les serveurs distants)

1320 { "serverUrl": "https://*.untrusted.com/*" }

1321 ]

1322}

1323```

1324 

1325#### Comment fonctionnent les restrictions basées sur les commandes

1326 

1327**Correspondance exacte** :

1328 

1329* Les tableaux de commandes doivent correspondre **exactement** - à la fois la commande et tous les arguments dans le bon ordre

1330* Exemple : `["npx", "-y", "server"]` ne correspondra PAS à `["npx", "server"]` ou `["npx", "-y", "server", "--flag"]`

1331 

1332**Comportement du serveur stdio** :

1333 

1334* Lorsque la liste blanche contient **n'importe quelle** entrée `serverCommand`, les serveurs stdio **doivent** correspondre à l'une de ces commandes

1335* Les serveurs stdio ne peuvent pas passer par le nom seul lorsque des restrictions de commande sont présentes

1336* Cela garantit que les administrateurs peuvent appliquer les commandes autorisées à s'exécuter

1337 

1338**Comportement du serveur non-stdio** :

1339 

1340* Les serveurs distants (HTTP, SSE, WebSocket) utilisent la correspondance basée sur l'URL lorsque des entrées `serverUrl` existent dans la liste blanche

1341* Si aucune entrée d'URL n'existe, les serveurs distants reviennent à la correspondance basée sur le nom

1342* Les restrictions de commande ne s'appliquent pas aux serveurs distants

1343 

1344#### Comment fonctionnent les restrictions basées sur l'URL

1345 

1346Les modèles d'URL supportent les caractères génériques en utilisant `*` pour correspondre à n'importe quelle séquence de caractères. Ceci est utile pour autoriser des domaines ou des sous-domaines entiers.

1347 

1348**Exemples de caractères génériques** :

1349 

1350* `https://mcp.company.com/*` - Autoriser tous les chemins sur un domaine spécifique

1351* `https://*.example.com/*` - Autoriser n'importe quel sous-domaine de example.com

1352* `http://localhost:*/*` - Autoriser n'importe quel port sur localhost

1353 

1354**Comportement du serveur distant** :

1355 

1356* Lorsque la liste blanche contient **n'importe quelle** entrée `serverUrl`, les serveurs distants **doivent** correspondre à l'un de ces modèles d'URL

1357* Les serveurs distants ne peuvent pas passer par le nom seul lorsque des restrictions d'URL sont présentes

1358* Cela garantit que les administrateurs peuvent appliquer les points de terminaison distants autorisés

1359 

1360<Accordion title="Exemple : Liste blanche URL uniquement">

1361 ```json theme={null}

1362 {

1363 "allowedMcpServers": [

1364 { "serverUrl": "https://mcp.company.com/*" },

1365 { "serverUrl": "https://*.internal.corp/*" }

1366 ]

1367 }

1368 ```

1369 

1370 **Résultat** :

1371 

1372 * Serveur HTTP à `https://mcp.company.com/api` : ✅ Autorisé (correspond au modèle d'URL)

1373 * Serveur HTTP à `https://api.internal.corp/mcp` : ✅ Autorisé (correspond au sous-domaine générique)

1374 * Serveur HTTP à `https://external.com/mcp` : ❌ Bloqué (ne correspond à aucun modèle d'URL)

1375 * Serveur stdio avec n'importe quelle commande : ❌ Bloqué (aucune entrée de nom ou de commande à correspondre)

1376</Accordion>

1377 

1378<Accordion title="Exemple : Liste blanche commande uniquement">

1379 ```json theme={null}

1380 {

1381 "allowedMcpServers": [

1382 { "serverCommand": ["npx", "-y", "approved-package"] }

1383 ]

1384 }

1385 ```

1386 

1387 **Résultat** :

1388 

1389 * Serveur stdio avec `["npx", "-y", "approved-package"]` : ✅ Autorisé (correspond à la commande)

1390 * Serveur stdio avec `["node", "server.js"]` : ❌ Bloqué (ne correspond pas à la commande)

1391 * Serveur HTTP nommé « my-api » : ❌ Bloqué (aucune entrée de nom à correspondre)

1392</Accordion>

1393 

1394<Accordion title="Exemple : Liste blanche mixte nom et commande">

1395 ```json theme={null}

1396 {

1397 "allowedMcpServers": [

1398 { "serverName": "github" },

1399 { "serverCommand": ["npx", "-y", "approved-package"] }

1400 ]

1401 }

1402 ```

1403 

1404 **Résultat** :

1405 

1406 * Serveur stdio nommé « local-tool » avec `["npx", "-y", "approved-package"]` : ✅ Autorisé (correspond à la commande)

1407 * Serveur stdio nommé « local-tool » avec `["node", "server.js"]` : ❌ Bloqué (les entrées de commande existent mais ne correspondent pas)

1408 * Serveur stdio nommé « github » avec `["node", "server.js"]` : ❌ Bloqué (les serveurs stdio doivent correspondre aux commandes lorsque les entrées de commande existent)

1409 * Serveur HTTP nommé « github » : ✅ Autorisé (correspond au nom)

1410 * Serveur HTTP nommé « other-api » : ❌ Bloqué (le nom ne correspond pas)

1411</Accordion>

1412 

1413<Accordion title="Exemple : Liste blanche nom uniquement">

1414 ```json theme={null}

1415 {

1416 "allowedMcpServers": [

1417 { "serverName": "github" },

1418 { "serverName": "internal-tool" }

1419 ]

1420 }

1421 ```

1422 

1423 **Résultat** :

1424 

1425 * Serveur stdio nommé « github » avec n'importe quelle commande : ✅ Autorisé (aucune restriction de commande)

1426 * Serveur stdio nommé « internal-tool » avec n'importe quelle commande : ✅ Autorisé (aucune restriction de commande)

1427 * Serveur HTTP nommé « github » : ✅ Autorisé (correspond au nom)

1428 * N'importe quel serveur nommé « other » : ❌ Bloqué (le nom ne correspond pas)

1429</Accordion>

1430 

1431#### Comportement de la liste blanche (`allowedMcpServers`)

1432 

1433* `undefined` (par défaut) : Aucune restriction - les utilisateurs peuvent configurer n'importe quel serveur MCP

1434* Tableau vide `[]` : Verrouillage complet - les utilisateurs ne peuvent configurer aucun serveur MCP

1435* Liste d'entrées : Les utilisateurs ne peuvent configurer que les serveurs qui correspondent par nom, commande ou modèle d'URL

1436 

1437#### Comportement de la liste noire (`deniedMcpServers`)

1438 

1439* `undefined` (par défaut) : Aucun serveur n'est bloqué

1440* Tableau vide `[]` : Aucun serveur n'est bloqué

1441* Liste d'entrées : Les serveurs spécifiés sont explicitement bloqués dans toutes les portées

1442 

1443#### Notes importantes

1444 

1445* **L'option 1 et l'option 2 peuvent être combinées** : Si `managed-mcp.json` existe, il a le contrôle exclusif et les utilisateurs ne peuvent pas ajouter de serveurs. Les listes blanches/noires s'appliquent toujours aux serveurs gérés eux-mêmes.

1446* **La liste noire a une précédence absolue** : Si un serveur correspond à une entrée de liste noire (par nom, commande ou URL), il sera bloqué même s'il est sur la liste blanche

1447* **Les restrictions basées sur le nom, la commande et l'URL fonctionnent ensemble** : un serveur passe s'il correspond à **soit** une entrée de nom, une entrée de commande, ou un modèle d'URL (sauf s'il est bloqué par la liste noire)

1448 

1449<Note>

1450 **Lors de l'utilisation de `managed-mcp.json`** : Les utilisateurs ne peuvent pas ajouter de serveurs MCP via `claude mcp add` ou les fichiers de configuration. Les paramètres `allowedMcpServers` et `deniedMcpServers` s'appliquent toujours pour filtrer les serveurs gérés qui sont réellement chargés.

1451</Note>

memory.md +408 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Comment Claude se souvient de votre projet

6 

7> Donnez à Claude des instructions persistantes avec les fichiers CLAUDE.md, et laissez Claude accumuler automatiquement les apprentissages avec la mémoire automatique.

8 

9Chaque session Claude Code commence avec une fenêtre de contexte vierge. Deux mécanismes transportent les connaissances d'une session à l'autre :

10 

11* **Fichiers CLAUDE.md** : instructions que vous écrivez pour donner à Claude un contexte persistant

12* **Mémoire automatique** : notes que Claude écrit lui-même en fonction de vos corrections et préférences

13 

14Cette page couvre comment :

15 

16* [Écrire et organiser les fichiers CLAUDE.md](#claude-md-files)

17* [Limiter les règles à des types de fichiers spécifiques](#organize-rules-with-claude/rules/) avec `.claude/rules/`

18* [Configurer la mémoire automatique](#auto-memory) pour que Claude prenne des notes automatiquement

19* [Dépanner](#troubleshoot-memory-issues) quand les instructions ne sont pas suivies

20 

21## CLAUDE.md vs mémoire automatique

22 

23Claude Code dispose de deux systèmes de mémoire complémentaires. Les deux sont chargés au début de chaque conversation. Claude les traite comme du contexte, pas comme une configuration appliquée. Plus vos instructions sont spécifiques et concises, plus Claude les suit régulièrement.

24 

25| | Fichiers CLAUDE.md | Mémoire automatique |

26| :-------------------- | :-------------------------------------------------------- | :------------------------------------------------------------------------------ |

27| **Qui l'écrit** | Vous | Claude |

28| **Ce qu'il contient** | Instructions et règles | Apprentissages et modèles |

29| **Portée** | Projet, utilisateur ou organisation | Par arborescence de travail |

30| **Chargé dans** | Chaque session | Chaque session (premières 200 lignes ou 25 KB) |

31| **À utiliser pour** | Normes de codage, flux de travail, architecture du projet | Commandes de compilation, insights de débogage, préférences que Claude découvre |

32 

33Utilisez les fichiers CLAUDE.md quand vous voulez guider le comportement de Claude. La mémoire automatique permet à Claude d'apprendre de vos corrections sans effort manuel.

34 

35Les subagents peuvent également maintenir leur propre mémoire automatique. Consultez la [configuration des subagents](/fr/sub-agents#enable-persistent-memory) pour plus de détails.

36 

37## Fichiers CLAUDE.md

38 

39Les fichiers CLAUDE.md sont des fichiers markdown qui donnent à Claude des instructions persistantes pour un projet, votre flux de travail personnel ou toute votre organisation. Vous écrivez ces fichiers en texte brut ; Claude les lit au début de chaque session.

40 

41### Quand ajouter à CLAUDE.md

42 

43Traitez CLAUDE.md comme l'endroit où vous écrivez ce que vous expliqueriez autrement à nouveau. Ajoutez-y quand :

44 

45* Claude fait la même erreur une deuxième fois

46* Une revue de code détecte quelque chose que Claude aurait dû savoir sur cette base de code

47* Vous tapez la même correction ou clarification dans le chat que vous avez tapée la session précédente

48* Un nouveau coéquipier aurait besoin du même contexte pour être productif

49 

50Gardez-le aux faits que Claude devrait retenir à chaque session : commandes de compilation, conventions, disposition du projet, règles « toujours faire X ». Si une entrée est une procédure multi-étapes ou ne concerne qu'une partie de la base de code, déplacez-la vers une [skill](/fr/skills) ou une [règle limitée au chemin](#organize-rules-with-claude/rules/) à la place. L'[aperçu des extensions](/fr/features-overview#build-your-setup-over-time) couvre quand utiliser chaque mécanisme.

51 

52### Choisir où placer les fichiers CLAUDE.md

53 

54Les fichiers CLAUDE.md peuvent se trouver à plusieurs endroits, chacun avec une portée différente. Les emplacements plus spécifiques ont la priorité sur les plus larges.

55 

56| Portée | Emplacement | Objectif | Exemples de cas d'usage | Partagé avec |

57| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------- |

58| **Politique gérée** | • macOS : `/Library/Application Support/ClaudeCode/CLAUDE.md`<br />• Linux et WSL : `/etc/claude-code/CLAUDE.md`<br />• Windows : `C:\Program Files\ClaudeCode\CLAUDE.md` | Instructions à l'échelle de l'organisation gérées par l'informatique/DevOps | Normes de codage de l'entreprise, politiques de sécurité, exigences de conformité | Tous les utilisateurs de l'organisation |

59| **Instructions du projet** | `./CLAUDE.md` ou `./.claude/CLAUDE.md` | Instructions partagées par l'équipe pour le projet | Architecture du projet, normes de codage, flux de travail courants | Membres de l'équipe via le contrôle de source |

60| **Instructions utilisateur** | `~/.claude/CLAUDE.md` | Préférences personnelles pour tous les projets | Préférences de style de code, raccourcis d'outils personnels | Juste vous (tous les projets) |

61| **Instructions locales** | `./CLAUDE.local.md` | Préférences personnelles spécifiques au projet ; ajouter à `.gitignore` | Vos URL de sandbox, données de test préférées | Juste vous (projet actuel) |

62 

63Les fichiers CLAUDE.md et CLAUDE.local.md dans la hiérarchie de répertoires au-dessus du répertoire de travail sont chargés en intégralité au lancement. Les fichiers dans les sous-répertoires se chargent à la demande quand Claude lit les fichiers de ces répertoires. Consultez [Comment les fichiers CLAUDE.md se chargent](#how-claude-md-files-load) pour l'ordre de résolution complet.

64 

65Pour les grands projets, vous pouvez diviser les instructions en fichiers spécifiques à un sujet en utilisant les [règles du projet](#organize-rules-with-claude/rules/). Les règles vous permettent de limiter les instructions à des types de fichiers ou des sous-répertoires spécifiques.

66 

67### Configurer un CLAUDE.md de projet

68 

69Un CLAUDE.md de projet peut être stocké dans `./CLAUDE.md` ou `./.claude/CLAUDE.md`. Créez ce fichier et ajoutez des instructions qui s'appliquent à quiconque travaille sur le projet : commandes de compilation et de test, normes de codage, décisions architecturales, conventions de nommage et flux de travail courants. Ces instructions sont partagées avec votre équipe via le contrôle de version, donc concentrez-vous sur les normes au niveau du projet plutôt que sur les préférences personnelles.

70 

71<Tip>

72 Exécutez `/init` pour générer automatiquement un CLAUDE.md de démarrage. Claude analyse votre base de code et crée un fichier avec les commandes de compilation, les instructions de test et les conventions de projet qu'il découvre. Si un CLAUDE.md existe déjà, `/init` suggère des améliorations plutôt que de le remplacer. Affinez-le à partir de là avec les instructions que Claude ne découvrirait pas de lui-même.

73 

74 Définissez `CLAUDE_CODE_NEW_INIT=1` pour activer un flux interactif multi-phases. `/init` demande quels artefacts configurer : fichiers CLAUDE.md, skills et hooks. Il explore ensuite votre base de code avec un subagent, comble les lacunes via des questions de suivi et présente une proposition vérifiable avant d'écrire des fichiers.

75</Tip>

76 

77### Écrire des instructions efficaces

78 

79Les fichiers CLAUDE.md sont chargés dans la fenêtre de contexte au début de chaque session, consommant des tokens aux côtés de votre conversation. La [visualisation de la fenêtre de contexte](/fr/context-window) montre où CLAUDE.md se charge par rapport au reste du contexte de démarrage. Parce qu'ils sont du contexte plutôt qu'une configuration appliquée, la façon dont vous écrivez les instructions affecte la fiabilité avec laquelle Claude les suit. Les instructions spécifiques, concises et bien structurées fonctionnent mieux.

80 

81**Taille** : visez moins de 200 lignes par fichier CLAUDE.md. Les fichiers plus longs consomment plus de contexte et réduisent l'adhérence. Si vos instructions deviennent trop grandes, utilisez les [règles limitées au chemin](#path-specific-rules) pour que les instructions ne se chargent que quand Claude travaille avec des fichiers correspondants, réduisant le bruit et économisant l'espace de contexte. Vous pouvez également diviser le contenu en [imports](#import-additional-files) pour l'organisation, bien que les fichiers importés se chargent toujours et entrent dans la fenêtre de contexte au lancement.

82 

83**Structure** : utilisez les en-têtes markdown et les puces pour regrouper les instructions connexes. Claude scanne la structure de la même manière que les lecteurs : les sections organisées sont plus faciles à suivre que les paragraphes denses.

84 

85**Spécificité** : écrivez des instructions suffisamment concrètes pour être vérifiables. Par exemple :

86 

87* « Utiliser l'indentation à 2 espaces » au lieu de « Formater le code correctement »

88* « Exécuter `npm test` avant de valider » au lieu de « Testez vos modifications »

89* « Les gestionnaires d'API se trouvent dans `src/api/handlers/` » au lieu de « Gardez les fichiers organisés »

90 

91**Cohérence** : si deux règles se contredisent, Claude peut en choisir une arbitrairement. Examinez régulièrement vos fichiers CLAUDE.md, les fichiers CLAUDE.md imbriqués dans les sous-répertoires et les fichiers [`.claude/rules/`](#organize-rules-with-claude/rules/) pour supprimer les instructions obsolètes ou conflictuelles. Dans les monorepos, utilisez [`claudeMdExcludes`](#exclude-specific-claude-md-files) pour ignorer les fichiers CLAUDE.md d'autres équipes qui ne sont pas pertinents pour votre travail.

92 

93### Importer des fichiers supplémentaires

94 

95Les fichiers CLAUDE.md peuvent importer des fichiers supplémentaires en utilisant la syntaxe `@path/to/import`. Les fichiers importés sont développés et chargés dans le contexte au lancement aux côtés du CLAUDE.md qui les référence.

96 

97Les chemins relatifs et absolus sont autorisés. Les chemins relatifs se résolvent par rapport au fichier contenant l'import, pas au répertoire de travail. Les fichiers importés peuvent importer récursivement d'autres fichiers, avec une profondeur maximale de cinq sauts.

98 

99Pour inclure un README, package.json et un guide de flux de travail, référencez-les avec la syntaxe `@` n'importe où dans votre CLAUDE.md :

100 

101```text theme={null}

102Consultez @README pour un aperçu du projet et @package.json pour les commandes npm disponibles pour ce projet.

103 

104# Instructions supplémentaires

105- flux de travail git @docs/git-instructions.md

106```

107 

108Pour les préférences personnelles privées par projet qui ne doivent pas être validées dans le contrôle de version, créez un `CLAUDE.local.md` à la racine du projet. Il se charge aux côtés de `CLAUDE.md` et est traité de la même manière. Ajoutez `CLAUDE.local.md` à votre `.gitignore` pour qu'il ne soit pas validé ; exécuter `/init` et choisir l'option personnelle le fait pour vous.

109 

110Si vous travaillez sur plusieurs git worktrees du même référentiel, un `CLAUDE.local.md` ignoré par git n'existe que dans le worktree où vous l'avez créé. Pour partager des instructions personnelles entre worktrees, importez plutôt un fichier de votre répertoire personnel :

111 

112```text theme={null}

113# Préférences individuelles

114- @~/.claude/my-project-instructions.md

115```

116 

117<Warning>

118 La première fois que Claude Code rencontre des imports externes dans un projet, il affiche une boîte de dialogue d'approbation listant les fichiers. Si vous refusez, les imports restent désactivés et la boîte de dialogue n'apparaît plus.

119</Warning>

120 

121Pour une approche plus structurée de l'organisation des instructions, consultez [`.claude/rules/`](#organize-rules-with-claude/rules/).

122 

123### AGENTS.md

124 

125Claude Code lit `CLAUDE.md`, pas `AGENTS.md`. Si votre référentiel utilise déjà `AGENTS.md` pour d'autres agents de codage, créez un `CLAUDE.md` qui l'importe pour que les deux outils lisent les mêmes instructions sans les dupliquer. Vous pouvez également ajouter des instructions spécifiques à Claude Code en dessous de l'import. Claude charge le fichier importé au démarrage de la session, puis ajoute le reste :

126 

127```markdown CLAUDE.md theme={null}

128@AGENTS.md

129 

130## Claude Code

131 

132Utilisez le mode plan pour les modifications sous `src/billing/`.

133```

134 

135### Comment les fichiers CLAUDE.md se chargent

136 

137Claude Code lit les fichiers CLAUDE.md en remontant l'arborescence des répertoires à partir de votre répertoire de travail actuel, en vérifiant chaque répertoire en chemin pour les fichiers `CLAUDE.md` et `CLAUDE.local.md`. Cela signifie que si vous exécutez Claude Code dans `foo/bar/`, il charge les instructions de `foo/bar/CLAUDE.md`, `foo/CLAUDE.md` et tous les fichiers `CLAUDE.local.md` à côté d'eux.

138 

139Tous les fichiers découverts sont concaténés dans le contexte plutôt que de se remplacer les uns les autres. Dans l'arborescence des répertoires, le contenu est ordonné de la racine du système de fichiers jusqu'à votre répertoire de travail. Pour l'exemple `foo/bar/`, `foo/CLAUDE.md` apparaît dans le contexte avant `foo/bar/CLAUDE.md`, donc les instructions plus proches de l'endroit où vous avez lancé Claude sont lues en dernier. Dans chaque répertoire, `CLAUDE.local.md` est ajouté après `CLAUDE.md`, donc vos notes personnelles sont la dernière chose que Claude lit à ce niveau.

140 

141Claude découvre également les fichiers `CLAUDE.md` et `CLAUDE.local.md` dans les sous-répertoires sous votre répertoire de travail actuel. Au lieu de les charger au lancement, ils sont inclus quand Claude lit les fichiers de ces sous-répertoires.

142 

143Si vous travaillez dans un grand monorepo où les fichiers CLAUDE.md d'autres équipes sont détectés, utilisez [`claudeMdExcludes`](#exclude-specific-claude-md-files) pour les ignorer.

144 

145Les commentaires HTML au niveau des blocs (`<!-- maintainer notes -->`) dans les fichiers CLAUDE.md sont supprimés avant que le contenu ne soit injecté dans le contexte de Claude. Utilisez-les pour laisser des notes aux responsables humains sans dépenser de tokens de contexte. Les commentaires à l'intérieur des blocs de code sont conservés. Quand vous ouvrez un fichier CLAUDE.md directement avec l'outil Read, les commentaires restent visibles.

146 

147#### Charger à partir de répertoires supplémentaires

148 

149Le drapeau `--add-dir` donne à Claude accès à des répertoires supplémentaires en dehors de votre répertoire de travail principal. Par défaut, les fichiers CLAUDE.md de ces répertoires ne sont pas chargés.

150 

151Pour charger également les fichiers de mémoire à partir de répertoires supplémentaires, définissez la variable d'environnement `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD` :

152 

153```bash theme={null}

154CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 claude --add-dir ../shared-config

155```

156 

157Cela charge `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md` et `CLAUDE.local.md` à partir du répertoire supplémentaire. `CLAUDE.local.md` est ignoré si vous excluez `local` de [`--setting-sources`](/fr/cli-reference).

158 

159### Organiser les règles avec `.claude/rules/`

160 

161Pour les projets plus grands, vous pouvez organiser les instructions en plusieurs fichiers en utilisant le répertoire `.claude/rules/`. Cela garde les instructions modulaires et plus faciles à maintenir pour les équipes. Les règles peuvent également être [limitées à des chemins de fichiers spécifiques](#path-specific-rules), donc elles ne se chargent dans le contexte que quand Claude travaille avec des fichiers correspondants, réduisant le bruit et économisant l'espace de contexte.

162 

163<Note>

164 Les règles se chargent dans le contexte à chaque session ou quand les fichiers correspondants sont ouverts. Pour les instructions spécifiques à une tâche qui n'ont pas besoin d'être dans le contexte tout le temps, utilisez plutôt les [skills](/fr/skills), qui ne se chargent que quand vous les invoquez ou quand Claude détermine qu'elles sont pertinentes pour votre invite.

165</Note>

166 

167#### Configurer les règles

168 

169Placez les fichiers markdown dans le répertoire `.claude/rules/` de votre projet. Chaque fichier doit couvrir un sujet, avec un nom de fichier descriptif comme `testing.md` ou `api-design.md`. Tous les fichiers `.md` sont découverts récursivement, vous pouvez donc organiser les règles en sous-répertoires comme `frontend/` ou `backend/` :

170 

171```text theme={null}

172your-project/

173├── .claude/

174│ ├── CLAUDE.md # Instructions principales du projet

175│ └── rules/

176│ ├── code-style.md # Directives de style de code

177│ ├── testing.md # Conventions de test

178│ └── security.md # Exigences de sécurité

179```

180 

181Les règles sans [frontmatter `paths`](#path-specific-rules) sont chargées au lancement avec la même priorité que `.claude/CLAUDE.md`.

182 

183#### Règles spécifiques au chemin

184 

185Les règles peuvent être limitées à des fichiers spécifiques en utilisant le frontmatter YAML avec le champ `paths`. Ces règles conditionnelles ne s'appliquent que quand Claude travaille avec des fichiers correspondant aux modèles spécifiés.

186 

187```markdown theme={null}

188---

189paths:

190 - "src/api/**/*.ts"

191---

192 

193# Règles de développement d'API

194 

195- Tous les points de terminaison d'API doivent inclure la validation des entrées

196- Utilisez le format de réponse d'erreur standard

197- Incluez les commentaires de documentation OpenAPI

198```

199 

200Les règles sans champ `paths` sont chargées sans condition et s'appliquent à tous les fichiers. Les règles limitées au chemin se déclenchent quand Claude lit les fichiers correspondant au modèle, pas à chaque utilisation d'outil.

201 

202Utilisez les modèles glob dans le champ `paths` pour faire correspondre les fichiers par extension, répertoire ou toute combinaison :

203 

204| Modèle | Correspond à |

205| ---------------------- | ----------------------------------------------------------- |

206| `**/*.ts` | Tous les fichiers TypeScript dans n'importe quel répertoire |

207| `src/**/*` | Tous les fichiers sous le répertoire `src/` |

208| `*.md` | Fichiers Markdown à la racine du projet |

209| `src/components/*.tsx` | Composants React dans un répertoire spécifique |

210 

211Vous pouvez spécifier plusieurs modèles et utiliser l'expansion entre accolades pour faire correspondre plusieurs extensions dans un seul modèle :

212 

213```markdown theme={null}

214---

215paths:

216 - "src/**/*.{ts,tsx}"

217 - "lib/**/*.ts"

218 - "tests/**/*.test.ts"

219---

220```

221 

222#### Partager les règles entre les projets avec des liens symboliques

223 

224Le répertoire `.claude/rules/` supporte les liens symboliques, vous pouvez donc maintenir un ensemble partagé de règles et les lier dans plusieurs projets. Les liens symboliques sont résolus et chargés normalement, et les liens symboliques circulaires sont détectés et gérés correctement.

225 

226Cet exemple lie à la fois un répertoire partagé et un fichier individuel :

227 

228```bash theme={null}

229ln -s ~/shared-claude-rules .claude/rules/shared

230ln -s ~/company-standards/security.md .claude/rules/security.md

231```

232 

233#### Règles au niveau utilisateur

234 

235Les règles personnelles dans `~/.claude/rules/` s'appliquent à chaque projet sur votre machine. Utilisez-les pour les préférences qui ne sont pas spécifiques au projet :

236 

237```text theme={null}

238~/.claude/rules/

239├── preferences.md # Vos préférences de codage personnelles

240└── workflows.md # Vos flux de travail préférés

241```

242 

243Les règles au niveau utilisateur sont chargées avant les règles du projet, donnant aux règles du projet une priorité plus élevée.

244 

245### Gérer CLAUDE.md pour les grandes équipes

246 

247Pour les organisations déployant Claude Code dans les équipes, vous pouvez centraliser les instructions et contrôler quels fichiers CLAUDE.md sont chargés.

248 

249#### Déployer un CLAUDE.md à l'échelle de l'organisation

250 

251Les organisations peuvent déployer un CLAUDE.md géré centralement qui s'applique à tous les utilisateurs sur une machine. Ce fichier ne peut pas être exclu par les paramètres individuels.

252 

253<Steps>

254 <Step title="Créer le fichier à l'emplacement de la politique gérée">

255 * macOS : `/Library/Application Support/ClaudeCode/CLAUDE.md`

256 * Linux et WSL : `/etc/claude-code/CLAUDE.md`

257 * Windows : `C:\Program Files\ClaudeCode\CLAUDE.md`

258 </Step>

259 

260 <Step title="Déployer avec votre système de gestion de configuration">

261 Utilisez MDM, Group Policy, Ansible ou des outils similaires pour distribuer le fichier sur les machines des développeurs. Consultez les [paramètres gérés](/fr/permissions#managed-settings) pour d'autres options de configuration à l'échelle de l'organisation.

262 </Step>

263</Steps>

264 

265Un CLAUDE.md géré et les [paramètres gérés](/fr/settings#settings-files) servent des objectifs différents. Utilisez les paramètres pour l'application technique et CLAUDE.md pour les conseils comportementaux :

266 

267| Préoccupation | Configurer dans |

268| :--------------------------------------------------------------- | :--------------------------------------------------------- |

269| Bloquer des outils, commandes ou chemins de fichiers spécifiques | Paramètres gérés : `permissions.deny` |

270| Appliquer l'isolation du sandbox | Paramètres gérés : `sandbox.enabled` |

271| Variables d'environnement et routage du fournisseur d'API | Paramètres gérés : `env` |

272| Méthode d'authentification et verrouillage de l'organisation | Paramètres gérés : `forceLoginMethod`, `forceLoginOrgUUID` |

273| Directives de style de code et de qualité | CLAUDE.md géré |

274| Rappels de traitement des données et de conformité | CLAUDE.md géré |

275| Instructions comportementales pour Claude | CLAUDE.md géré |

276 

277Les règles de paramètres sont appliquées par le client indépendamment de ce que Claude décide de faire. Les instructions CLAUDE.md façonnent le comportement de Claude mais ne constituent pas une couche d'application stricte.

278 

279#### Exclure des fichiers CLAUDE.md spécifiques

280 

281Dans les grands monorepos, les fichiers CLAUDE.md ancêtres peuvent contenir des instructions qui ne sont pas pertinentes pour votre travail. Le paramètre `claudeMdExcludes` vous permet d'ignorer des fichiers spécifiques par chemin ou modèle glob.

282 

283Cet exemple exclut un CLAUDE.md de niveau supérieur et un répertoire de règles d'un dossier parent. Ajoutez-le à `.claude/settings.local.json` pour que l'exclusion reste locale à votre machine :

284 

285```json theme={null}

286{

287 "claudeMdExcludes": [

288 "**/monorepo/CLAUDE.md",

289 "/home/user/monorepo/other-team/.claude/rules/**"

290 ]

291}

292```

293 

294Les modèles sont comparés aux chemins de fichiers absolus en utilisant la syntaxe glob. Vous pouvez configurer `claudeMdExcludes` à n'importe quel [niveau de paramètres](/fr/settings#settings-files) : utilisateur, projet, local ou politique gérée. Les tableaux fusionnent entre les niveaux.

295 

296Les fichiers CLAUDE.md de politique gérée ne peuvent pas être exclus. Cela garantit que les instructions à l'échelle de l'organisation s'appliquent toujours indépendamment des paramètres individuels.

297 

298## Mémoire automatique

299 

300La mémoire automatique permet à Claude d'accumuler des connaissances d'une session à l'autre sans que vous n'écriviez rien. Claude enregistre des notes pour lui-même au fur et à mesure qu'il travaille : commandes de compilation, insights de débogage, notes d'architecture, préférences de style de code et habitudes de flux de travail. Claude ne sauvegarde pas quelque chose à chaque session. Il décide ce qui vaut la peine d'être mémorisé en fonction de si l'information serait utile dans une conversation future.

301 

302<Note>

303 La mémoire automatique nécessite Claude Code v2.1.59 ou ultérieur. Vérifiez votre version avec `claude --version`.

304</Note>

305 

306### Activer ou désactiver la mémoire automatique

307 

308La mémoire automatique est activée par défaut. Pour la basculer, ouvrez `/memory` dans une session et utilisez le bouton bascule de mémoire automatique, ou définissez `autoMemoryEnabled` dans vos paramètres de projet :

309 

310```json theme={null}

311{

312 "autoMemoryEnabled": false

313}

314```

315 

316Pour désactiver la mémoire automatique via une variable d'environnement, définissez `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1`.

317 

318### Emplacement de stockage

319 

320Chaque projet obtient son propre répertoire de mémoire à `~/.claude/projects/<project>/memory/`. Le chemin `<project>` est dérivé du référentiel git, donc tous les worktrees et sous-répertoires dans le même référentiel partagent un répertoire de mémoire automatique. En dehors d'un référentiel git, la racine du projet est utilisée à la place.

321 

322Pour stocker la mémoire automatique dans un emplacement différent, définissez `autoMemoryDirectory` dans vos paramètres utilisateur à `~/.claude/settings.json` :

323 

324```json theme={null}

325{

326 "autoMemoryDirectory": "~/my-custom-memory-dir"

327}

328```

329 

330La valeur doit être un chemin absolu ou commencer par `~/`. Ce paramètre est accepté à partir des paramètres de politique et utilisateur, et à partir du drapeau `--settings`. Il n'est pas accepté à partir des paramètres de projet ou locaux, car les deux fichiers se trouvent à l'intérieur du répertoire du projet et un référentiel cloné pourrait fournir l'un ou l'autre pour rediriger les écritures de mémoire automatique vers des emplacements sensibles.

331 

332Le répertoire contient un point d'entrée `MEMORY.md` et des fichiers de sujet optionnels :

333 

334```text theme={null}

335~/.claude/projects/<project>/memory/

336├── MEMORY.md # Index concis, chargé dans chaque session

337├── debugging.md # Notes détaillées sur les modèles de débogage

338├── api-conventions.md # Décisions de conception d'API

339└── ... # Tout autre fichier de sujet que Claude crée

340```

341 

342`MEMORY.md` agit comme un index du répertoire de mémoire. Claude lit et écrit des fichiers dans ce répertoire tout au long de votre session, en utilisant `MEMORY.md` pour garder une trace de ce qui est stocké où.

343 

344La mémoire automatique est locale à la machine. Tous les worktrees et sous-répertoires dans le même référentiel git partagent un répertoire de mémoire automatique. Les fichiers ne sont pas partagés entre les machines ou les environnements cloud.

345 

346### Comment ça marche

347 

348Les 200 premières lignes de `MEMORY.md`, ou les premiers 25 KB, selon ce qui vient en premier, sont chargés au début de chaque conversation. Le contenu au-delà de ce seuil n'est pas chargé au démarrage de la session. Claude garde `MEMORY.md` concis en déplaçant les notes détaillées dans des fichiers de sujet séparés.

349 

350Cette limite s'applique uniquement à `MEMORY.md`. Les fichiers CLAUDE.md sont chargés en intégralité indépendamment de la longueur, bien que les fichiers plus courts produisent une meilleure adhérence.

351 

352Les fichiers de sujet comme `debugging.md` ou `patterns.md` ne sont pas chargés au démarrage. Claude les lit à la demande en utilisant ses outils de fichiers standard quand il a besoin de l'information.

353 

354Claude lit et écrit les fichiers de mémoire pendant votre session. Quand vous voyez « Writing memory » ou « Recalled memory » dans l'interface Claude Code, Claude met activement à jour ou lit à partir de `~/.claude/projects/<project>/memory/`.

355 

356### Auditer et modifier votre mémoire

357 

358Les fichiers de mémoire automatique sont du markdown brut que vous pouvez modifier ou supprimer à tout moment. Exécutez [`/memory`](#view-and-edit-with-memory) pour parcourir et ouvrir les fichiers de mémoire à partir d'une session.

359 

360## Afficher et modifier avec `/memory`

361 

362La commande `/memory` liste tous les fichiers CLAUDE.md, CLAUDE.local.md et rules chargés dans votre session actuelle, vous permet de basculer la mémoire automatique activée ou désactivée, et fournit un lien pour ouvrir le dossier de mémoire automatique. Sélectionnez n'importe quel fichier pour l'ouvrir dans votre éditeur.

363 

364Quand vous demandez à Claude de se souvenir de quelque chose, comme « toujours utiliser pnpm, pas npm » ou « se souvenir que les tests d'API nécessitent une instance Redis locale », Claude l'enregistre dans la mémoire automatique. Pour ajouter des instructions à CLAUDE.md à la place, demandez directement à Claude, comme « ajouter ceci à CLAUDE.md », ou modifiez le fichier vous-même via `/memory`.

365 

366## Dépanner les problèmes de mémoire

367 

368Ce sont les problèmes les plus courants avec CLAUDE.md et la mémoire automatique, ainsi que les étapes pour les déboguer.

369 

370### Claude ne suit pas mon CLAUDE.md

371 

372Le contenu CLAUDE.md est livré en tant que message utilisateur après l'invite système, pas en tant que partie de l'invite système elle-même. Claude le lit et essaie de le suivre, mais il n'y a aucune garantie de conformité stricte, surtout pour les instructions vagues ou conflictuelles.

373 

374Pour déboguer :

375 

376* Exécutez `/memory` pour vérifier que vos fichiers CLAUDE.md et CLAUDE.local.md sont chargés. Si un fichier n'est pas listé, Claude ne peut pas le voir.

377* Vérifiez que le CLAUDE.md pertinent se trouve dans un emplacement qui se charge pour votre session (consultez [Choisir où placer les fichiers CLAUDE.md](#choose-where-to-put-claude-md-files)).

378* Rendez les instructions plus spécifiques. « Utiliser l'indentation à 2 espaces » fonctionne mieux que « formater le code correctement ».

379* Recherchez les instructions conflictuelles dans les fichiers CLAUDE.md. Si deux fichiers donnent des conseils différents pour le même comportement, Claude peut en choisir un arbitrairement.

380 

381Pour les instructions que vous voulez au niveau de l'invite système, utilisez [`--append-system-prompt`](/fr/cli-reference#system-prompt-flags). Cela doit être passé à chaque invocation, donc c'est mieux adapté aux scripts et à l'automatisation qu'à l'utilisation interactive.

382 

383<Tip>

384 Utilisez le [hook `InstructionsLoaded`](/fr/hooks#instructionsloaded) pour enregistrer exactement quels fichiers d'instructions sont chargés, quand ils se chargent et pourquoi. C'est utile pour déboguer les règles spécifiques au chemin ou les fichiers chargés tardivement dans les sous-répertoires.

385</Tip>

386 

387### Je ne sais pas ce que la mémoire automatique a enregistré

388 

389Exécutez `/memory` et sélectionnez le dossier de mémoire automatique pour parcourir ce que Claude a enregistré. Tout est du markdown brut que vous pouvez lire, modifier ou supprimer.

390 

391### Mon CLAUDE.md est trop volumineux

392 

393Les fichiers de plus de 200 lignes consomment plus de contexte et peuvent réduire l'adhérence. Utilisez les [règles spécifiques au chemin](#path-specific-rules) pour charger les instructions uniquement lorsque Claude travaille avec des fichiers correspondants, ou réduisez le contenu qui n'est pas nécessaire dans chaque session. La division en [imports `@path`](#import-additional-files) aide à l'organisation mais ne réduit pas le contexte, puisque les fichiers importés se chargent au lancement.

394 

395### Les instructions semblent perdues après `/compact`

396 

397CLAUDE.md à la racine du projet survit à la compaction : après `/compact`, Claude relit votre CLAUDE.md à partir du disque et le réinjecte à nouveau dans la session. Les fichiers CLAUDE.md imbriqués dans les sous-répertoires ne sont pas réinjectés automatiquement ; ils se rechargent la prochaine fois que Claude lit un fichier de ce sous-répertoire.

398 

399Si une instruction a disparu après la compaction, elle a été donnée uniquement dans la conversation ou se trouve dans un CLAUDE.md imbriqué qui ne s'est pas encore rechargé. Ajoutez les instructions données uniquement dans la conversation à CLAUDE.md pour les rendre persistantes. Consultez [Ce qui survit à la compaction](/fr/context-window#what-survives-compaction) pour la répartition complète.

400 

401Consultez [Écrire des instructions efficaces](#write-effective-instructions) pour des conseils sur la taille, la structure et la spécificité.

402 

403## Ressources connexes

404 

405* [Déboguer votre configuration](/fr/debug-your-config) : diagnostiquez pourquoi CLAUDE.md ou les paramètres ne prennent pas effet

406* [Skills](/fr/skills) : empaquetez les flux de travail répétables qui se chargent à la demande

407* [Paramètres](/fr/settings) : configurez le comportement de Claude Code avec les fichiers de paramètres

408* [Mémoire des subagents](/fr/sub-agents#enable-persistent-memory) : laissez les subagents maintenir leur propre mémoire automatique

microsoft-foundry.md +314 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Claude Code sur Microsoft Foundry

6 

7> Découvrez comment configurer Claude Code via Microsoft Foundry, y compris la configuration, les paramètres et la résolution des problèmes.

8 

9export const ContactSalesCard = ({surface}) => {

10 const utm = content => `utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content}`;

11 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

12 <line x1="5" y1="12" x2="19" y2="12" />

13 <polyline points="12 5 19 12 12 19" />

14 </svg>;

15 const STYLES = `

16.cc-cs {

17 --cs-slate: #141413;

18 --cs-clay: #d97757;

19 --cs-clay-deep: #c6613f;

20 --cs-gray-000: #ffffff;

21 --cs-gray-700: #3d3d3a;

22 --cs-border-default: rgba(31, 30, 29, 0.15);

23 font-family: inherit;

24}

25.dark .cc-cs {

26 --cs-slate: #f0eee6;

27 --cs-gray-000: #262624;

28 --cs-gray-700: #bfbdb4;

29 --cs-border-default: rgba(240, 238, 230, 0.14);

30}

31.cc-cs-card {

32 display: flex; align-items: center; justify-content: space-between;

33 gap: 16px; padding: 14px 16px; margin: 0;

34 background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default);

35 border-radius: 8px; flex-wrap: wrap;

36}

37.cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; }

38.cc-cs-text strong { font-weight: 550; color: var(--cs-slate); }

39.cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

40.cc-cs-btn-clay {

41 display: inline-flex; align-items: center; gap: 8px;

42 background: var(--cs-clay-deep); color: #fff; border: none;

43 border-radius: 8px; padding: 8px 14px;

44 font-size: 13px; font-weight: 500;

45 transition: background-color 0.15s; white-space: nowrap;

46}

47.cc-cs-btn-clay:hover { background: var(--cs-clay); }

48.cc-cs-btn-ghost {

49 display: inline-flex; align-items: center; gap: 8px;

50 background: transparent; color: var(--cs-gray-700);

51 border: 0.5px solid var(--cs-border-default);

52 border-radius: 8px; padding: 8px 14px;

53 font-size: 13px; font-weight: 500;

54}

55.cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

56.dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); }

57@media (max-width: 720px) {

58 .cc-cs-actions { width: 100%; }

59}

60`;

61 return <div className="cc-cs not-prose">

62 <style>{STYLES}</style>

63 <div className="cc-cs-card">

64 <div className="cc-cs-text">

65 <strong>Deploying Claude Code across your organization?</strong> Talk to sales about enterprise plans, SSO, and centralized billing.

66 </div>

67 <div className="cc-cs-actions">

68 <a href={`https://claude.com/pricing?${utm('view_plans')}#plans-business`} className="cc-cs-btn-ghost">

69 View plans

70 </a>

71 <a href={`https://claude.com/contact-sales?${utm('contact_sales')}`} className="cc-cs-btn-clay">

72 Contact sales {iconArrowRight()}

73 </a>

74 </div>

75 </div>

76 </div>;

77};

78 

79export const Experiment = ({flag, treatment, children}) => {

80 const VID_KEY = 'exp_vid';

81 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

82 const fnv1a = s => {

83 let h = 0x811c9dc5;

84 for (let i = 0; i < s.length; i++) {

85 h ^= s.charCodeAt(i);

86 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

87 }

88 return h >>> 0;

89 };

90 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

91 const [decision] = useState(() => {

92 const params = new URLSearchParams(location.search);

93 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

94 const force = params.get('gb-force');

95 if (force) {

96 for (const p of force.split(',')) {

97 const [k, v] = p.split(':');

98 if (k === flag) return {

99 variant: v || 'treatment',

100 track: false

101 };

102 }

103 }

104 if (navigator.globalPrivacyControl) {

105 return {

106 variant: 'control',

107 track: false

108 };

109 }

110 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

111 if (prefsMatch) {

112 try {

113 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

114 return {

115 variant: 'control',

116 track: false

117 };

118 }

119 } catch {

120 return {

121 variant: 'control',

122 track: false

123 };

124 }

125 } else {

126 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

127 if (!country || CONSENT_COUNTRIES.has(country)) {

128 return {

129 variant: 'control',

130 track: false

131 };

132 }

133 }

134 let vid;

135 try {

136 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

137 if (ajsMatch) {

138 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

139 } else {

140 vid = localStorage.getItem(VID_KEY);

141 if (!vid) {

142 vid = crypto.randomUUID();

143 }

144 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

145 }

146 try {

147 localStorage.setItem(VID_KEY, vid);

148 } catch {}

149 } catch {

150 return {

151 variant: 'control',

152 track: false

153 };

154 }

155 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

156 return {

157 variant,

158 track: true,

159 vid

160 };

161 });

162 useEffect(() => {

163 if (!decision.track) return;

164 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

165 method: 'POST',

166 headers: {

167 'Content-Type': 'application/json',

168 'x-service-name': 'claude_code_docs'

169 },

170 body: JSON.stringify({

171 events: [{

172 event_type: 'GrowthbookExperimentEvent',

173 event_data: {

174 device_id: decision.vid,

175 anonymous_id: decision.vid,

176 timestamp: new Date().toISOString(),

177 experiment_id: flag,

178 variation_id: decision.variant === 'treatment' ? 1 : 0,

179 environment: 'production'

180 }

181 }]

182 }),

183 keepalive: true

184 }).catch(() => {});

185 }, []);

186 return decision.variant === 'treatment' ? treatment : children;

187};

188 

189<Experiment flag="docs-contact-sales-cta" treatment={<ContactSalesCard surface="foundry" />} />

190 

191## Conditions préalables

192 

193Avant de configurer Claude Code avec Microsoft Foundry, assurez-vous que vous disposez de :

194 

195* Un abonnement Azure avec accès à Microsoft Foundry

196* Des autorisations RBAC pour créer des ressources et des déploiements Microsoft Foundry

197* Azure CLI installé et configuré (facultatif - nécessaire uniquement si vous n'avez pas d'autre mécanisme pour obtenir les identifiants)

198 

199<Note>

200 Si vous déployez Claude Code pour plusieurs utilisateurs, [épinglez vos versions de modèle](#4-pin-model-versions) pour éviter les ruptures lorsqu'Anthropic publie de nouveaux modèles.

201</Note>

202 

203## Configuration

204 

205### 1. Provisionner la ressource Microsoft Foundry

206 

207Tout d'abord, créez une ressource Claude dans Azure :

208 

2091. Accédez au [portail Microsoft Foundry](https://ai.azure.com/)

2102. Créez une nouvelle ressource, en notant le nom de votre ressource

2113. Créez des déploiements pour les modèles Claude :

212 * Claude Opus

213 * Claude Sonnet

214 * Claude Haiku

215 

216### 2. Configurer les identifiants Azure

217 

218Claude Code prend en charge deux méthodes d'authentification pour Microsoft Foundry. Choisissez la méthode qui correspond le mieux à vos exigences de sécurité.

219 

220**Option A : Authentification par clé API**

221 

2221. Accédez à votre ressource dans le portail Microsoft Foundry

2232. Allez à la section **Points de terminaison et clés**

2243. Copiez la **Clé API**

2254. Définissez la variable d'environnement :

226 

227```bash theme={null}

228export ANTHROPIC_FOUNDRY_API_KEY=your-azure-api-key

229```

230 

231**Option B : Authentification Microsoft Entra ID**

232 

233Lorsque `ANTHROPIC_FOUNDRY_API_KEY` n'est pas défini, Claude Code utilise automatiquement la [chaîne d'identifiants par défaut](https://learn.microsoft.com/en-us/azure/developer/javascript/sdk/authentication/credential-chains#defaultazurecredential-overview) du SDK Azure.

234Cela prend en charge une variété de méthodes pour authentifier les charges de travail locales et distantes.

235 

236Dans les environnements locaux, vous pouvez généralement utiliser Azure CLI :

237 

238```bash theme={null}

239az login

240```

241 

242<Note>

243 Lors de l'utilisation de Microsoft Foundry, les commandes `/login` et `/logout` sont désactivées car l'authentification est gérée via les identifiants Azure.

244</Note>

245 

246### 3. Configurer Claude Code

247 

248Définissez les variables d'environnement suivantes pour activer Microsoft Foundry :

249 

250```bash theme={null}

251# Activer l'intégration Microsoft Foundry

252export CLAUDE_CODE_USE_FOUNDRY=1

253 

254# Nom de la ressource Azure (remplacez {resource} par le nom de votre ressource)

255export ANTHROPIC_FOUNDRY_RESOURCE={resource}

256# Ou fournissez l'URL de base complète :

257# export ANTHROPIC_FOUNDRY_BASE_URL=https://{resource}.services.ai.azure.com/anthropic

258```

259 

260### 4. Épingler les versions de modèle

261 

262<Warning>

263 Épinglez des versions de modèle spécifiques pour chaque déploiement. Si vous utilisez des alias de modèle (`sonnet`, `opus`, `haiku`) sans épingler, Claude Code peut tenter d'utiliser une version de modèle plus récente qui n'est pas disponible dans votre compte Foundry, ce qui casse les utilisateurs existants lorsqu'Anthropic publie des mises à jour. Lorsque vous créez des déploiements Azure, sélectionnez une version de modèle spécifique plutôt que « mise à jour automatique vers la dernière version ».

264</Warning>

265 

266Définissez les variables de modèle pour correspondre aux noms de déploiement que vous avez créés à l'étape 1.

267 

268Sans `ANTHROPIC_DEFAULT_OPUS_MODEL`, l'alias `opus` sur Foundry se résout en Opus 4.6. Définissez-le sur l'ID Opus 4.7 pour utiliser le modèle le plus récent :

269 

270```bash theme={null}

271export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7'

272export ANTHROPIC_DEFAULT_SONNET_MODEL='claude-sonnet-4-6'

273export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5'

274```

275 

276Pour les ID de modèle actuels et hérités, consultez [Aperçu des modèles](https://platform.claude.com/docs/en/about-claude/models/overview). Consultez [Configuration des modèles](/fr/model-config#pin-models-for-third-party-deployments) pour la liste complète des variables d'environnement.

277 

278[Le cache des invites](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) est activé automatiquement. Pour demander un TTL de cache d'une heure au lieu de la valeur par défaut de 5 minutes, définissez la variable suivante ; les écritures de cache avec un TTL d'une heure sont facturées à un taux plus élevé :

279 

280```bash theme={null}

281export ENABLE_PROMPT_CACHING_1H=1

282```

283 

284## Configuration Azure RBAC

285 

286Les rôles par défaut `Azure AI User` et `Cognitive Services User` incluent toutes les autorisations requises pour invoquer les modèles Claude.

287 

288Pour des autorisations plus restrictives, créez un rôle personnalisé avec les éléments suivants :

289 

290```json theme={null}

291{

292 "permissions": [

293 {

294 "dataActions": [

295 "Microsoft.CognitiveServices/accounts/providers/*"

296 ]

297 }

298 ]

299}

300```

301 

302Pour plus de détails, consultez la [documentation RBAC de Microsoft Foundry](https://learn.microsoft.com/en-us/azure/ai-foundry/concepts/rbac-azure-ai-foundry).

303 

304## Résolution des problèmes

305 

306Si vous recevez une erreur « Failed to get token from azureADTokenProvider: ChainedTokenCredential authentication failed » :

307 

308* Configurez Entra ID sur l'environnement, ou définissez `ANTHROPIC_FOUNDRY_API_KEY`.

309 

310## Ressources supplémentaires

311 

312* [Documentation Microsoft Foundry](https://learn.microsoft.com/en-us/azure/ai-foundry/what-is-azure-ai-foundry)

313* [Modèles Microsoft Foundry](https://ai.azure.com/explore/models)

314* [Tarification Microsoft Foundry](https://azure.microsoft.com/en-us/pricing/details/ai-foundry/)

model-config.md +382 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Configuration du modèle

6 

7> Découvrez la configuration du modèle Claude Code, y compris les alias de modèle comme `opusplan`

8 

9## Modèles disponibles

10 

11Pour le paramètre `model` dans Claude Code, vous pouvez configurer l'un des éléments suivants :

12 

13* Un **alias de modèle**

14* Un **nom de modèle**

15 * API Anthropic : un **[nom de modèle](https://platform.claude.com/docs/fr/about-claude/models/overview)** complet

16 * Bedrock : un ARN de profil d'inférence

17 * Foundry : un nom de déploiement

18 * Vertex : un nom de version

19 

20### Alias de modèle

21 

22Les alias de modèle offrent un moyen pratique de sélectionner les paramètres du modèle sans avoir à mémoriser les numéros de version exacts :

23 

24| Alias de modèle | Comportement |

25| ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

26| **`default`** | Valeur spéciale qui efface tout remplacement de modèle et revient au modèle recommandé pour votre type de compte. N'est pas en soi un alias de modèle |

27| **`best`** | Utilise le modèle disponible le plus capable, actuellement équivalent à `opus` |

28| **`sonnet`** | Utilise le dernier modèle Sonnet pour les tâches de codage quotidiennes |

29| **`opus`** | Utilise le dernier modèle Opus pour les tâches de raisonnement complexe |

30| **`haiku`** | Utilise le modèle Haiku rapide et efficace pour les tâches simples |

31| **`sonnet[1m]`** | Utilise Sonnet avec une [fenêtre de contexte de 1 million de tokens](https://platform.claude.com/docs/fr/build-with-claude/context-windows#1m-token-context-window) pour les sessions longues |

32| **`opus[1m]`** | Utilise Opus avec une [fenêtre de contexte de 1 million de tokens](https://platform.claude.com/docs/fr/build-with-claude/context-windows#1m-token-context-window) pour les sessions longues |

33| **`opusplan`** | Mode spécial qui utilise `opus` pendant le mode plan, puis bascule vers `sonnet` pour l'exécution |

34 

35Sur l'API Anthropic, `opus` se résout en Opus 4.7 et `sonnet` se résout en Sonnet 4.6. Sur Bedrock, Vertex et Foundry, `opus` se résout en Opus 4.6 et `sonnet` se résout en Sonnet 4.5 ; les modèles plus récents sont disponibles sur ces fournisseurs en sélectionnant le nom de modèle complet explicitement ou en définissant `ANTHROPIC_DEFAULT_OPUS_MODEL` ou `ANTHROPIC_DEFAULT_SONNET_MODEL`.

36 

37Les alias pointent vers la version recommandée pour votre fournisseur et se mettent à jour au fil du temps. Pour épingler une version spécifique, utilisez le nom de modèle complet (par exemple, `claude-opus-4-7`) ou définissez la variable d'environnement correspondante comme `ANTHROPIC_DEFAULT_OPUS_MODEL`.

38 

39<Note>

40 Opus 4.7 nécessite Claude Code v2.1.111 ou version ultérieure. Exécutez `claude update` pour mettre à niveau.

41</Note>

42 

43### Définir votre modèle

44 

45Vous pouvez configurer votre modèle de plusieurs façons, énumérées par ordre de priorité :

46 

471. **Pendant la session** - Utilisez `/model <alias|name>` pour basculer immédiatement, ou exécutez `/model` sans argument pour ouvrir le sélecteur. 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

482. **Au démarrage** - Lancez avec `claude --model <alias|name>`

493. **Variable d'environnement** - Définissez `ANTHROPIC_MODEL=<alias|name>`

504. **Paramètres** - Configurez de manière permanente dans votre fichier de paramètres en utilisant le champ `model`.

51 

52Votre sélection `/model` est enregistrée dans les paramètres utilisateur et persiste entre les redémarrages. À partir de la v2.1.117, si le fichier `.claude/settings.json` du projet épingle un modèle différent, Claude Code écrit également votre choix dans `.claude/settings.local.json` afin qu'il continue à s'appliquer dans ce projet après un redémarrage. Les paramètres gérés ont la priorité et se réappliquent au prochain lancement.

53 

54Lorsque le modèle actif au démarrage provient des paramètres du projet ou gérés plutôt que de votre propre sélection, l'en-tête de démarrage indique quel fichier de paramètres l'a défini. Exécutez `/model` pour remplacer la sélection pour la session actuelle.

55 

56Exemple d'utilisation :

57 

58```bash theme={null}

59# Démarrer avec Opus

60claude --model opus

61 

62# Basculer vers Sonnet pendant la session

63/model sonnet

64```

65 

66Exemple de fichier de paramètres :

67 

68```json theme={null}

69{

70 "permissions": {

71 ...

72 },

73 "model": "opus"

74}

75```

76 

77## Restreindre la sélection du modèle

78 

79Les administrateurs d'entreprise peuvent utiliser `availableModels` dans les [paramètres gérés ou de politique](/fr/settings#settings-files) pour restreindre les modèles que les utilisateurs peuvent sélectionner.

80 

81Lorsque `availableModels` est défini, les utilisateurs ne peuvent pas basculer vers des modèles ne figurant pas dans la liste via `/model`, le drapeau `--model`, ou la variable d'environnement `ANTHROPIC_MODEL`.

82 

83```json theme={null}

84{

85 "availableModels": ["sonnet", "haiku"]

86}

87```

88 

89### Comportement du modèle par défaut

90 

91L'option Par défaut dans le sélecteur de modèle n'est pas affectée par `availableModels`. Elle reste toujours disponible et représente la valeur par défaut du système [basée sur le niveau d'abonnement de l'utilisateur](#default-model-setting).

92 

93Même avec `availableModels: []`, les utilisateurs peuvent toujours utiliser Claude Code avec le modèle Par défaut pour leur niveau.

94 

95### Contrôler le modèle sur lequel les utilisateurs s'exécutent

96 

97Le paramètre `model` est une sélection initiale, pas une application. Il définit quel modèle est actif au démarrage d'une session, mais les utilisateurs peuvent toujours ouvrir `/model` et choisir Par défaut, qui se résout au système par défaut pour leur niveau indépendamment de ce que `model` est défini.

98 

99Pour contrôler complètement l'expérience du modèle, combinez trois paramètres :

100 

101* **`availableModels`** : restreint les modèles nommés vers lesquels les utilisateurs peuvent basculer

102* **`model`** : définit la sélection de modèle initiale au démarrage d'une session

103* **`ANTHROPIC_DEFAULT_SONNET_MODEL`** / **`ANTHROPIC_DEFAULT_OPUS_MODEL`** / **`ANTHROPIC_DEFAULT_HAIKU_MODEL`** : contrôlent ce vers quoi l'option Par défaut et les alias `sonnet`, `opus` et `haiku` se résolvent

104 

105Cet exemple démarre les utilisateurs sur Sonnet 4.5, limite le sélecteur à Sonnet et Haiku, et épingle Par défaut pour se résoudre à Sonnet 4.5 plutôt qu'à la dernière version :

106 

107```json theme={null}

108{

109 "model": "claude-sonnet-4-5",

110 "availableModels": ["claude-sonnet-4-5", "haiku"],

111 "env": {

112 "ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-4-5"

113 }

114}

115```

116 

117Sans le bloc `env`, un utilisateur qui sélectionne Par défaut dans le sélecteur obtiendrait la dernière version de Sonnet, contournant l'épinglage de version dans `model` et `availableModels`.

118 

119### Comportement de fusion

120 

121Lorsque `availableModels` est défini à plusieurs niveaux, comme les paramètres utilisateur et les paramètres de projet, les tableaux sont fusionnés et dédupliqués. Pour appliquer une liste d'autorisation stricte, définissez `availableModels` dans les paramètres gérés ou de politique qui ont la priorité la plus élevée.

122 

123### ID de modèle Mantle

124 

125Lorsque le [point de terminaison Bedrock Mantle](/fr/amazon-bedrock#use-the-mantle-endpoint) est activé, les entrées dans `availableModels` qui commencent par `anthropic.` sont ajoutées au sélecteur `/model` en tant qu'options personnalisées et acheminées vers le point de terminaison Mantle. Ceci est une exception à la correspondance d'alias uniquement décrite dans [Épingler les modèles pour les déploiements tiers](#pin-models-for-third-party-deployments). Le paramètre restreint toujours le sélecteur aux entrées listées, donc incluez les alias standard aux côtés de tous les ID Mantle.

126 

127## Comportement spécial du modèle

128 

129### Paramètre de modèle `default`

130 

131Le comportement de `default` dépend de votre type de compte :

132 

133* **Max et Team Premium** : par défaut Opus 4.7

134* **Pro, Team Standard, Enterprise et API Anthropic** : par défaut Sonnet 4.6

135* **Bedrock, Vertex et Foundry** : par défaut Sonnet 4.5

136 

137Claude Code peut automatiquement revenir à Sonnet si vous atteignez un seuil d'utilisation avec Opus.

138 

139<Note>

140 Le 23 avril 2026, le modèle par défaut pour les utilisateurs Enterprise pay-as-you-go et API Anthropic passera à Opus 4.7. Pour conserver un défaut différent, définissez `ANTHROPIC_MODEL` ou le champ `model` dans les [paramètres gérés par le serveur](/fr/server-managed-settings).

141</Note>

142 

143### Paramètre de modèle `opusplan`

144 

145L'alias de modèle `opusplan` fournit une approche hybride automatisée :

146 

147* **En mode plan** - Utilise `opus` pour le raisonnement complexe et les décisions architecturales

148* **En mode exécution** - Bascule automatiquement vers `sonnet` pour la génération de code et l'implémentation

149 

150Cela vous donne le meilleur des deux mondes : le raisonnement supérieur d'Opus pour la planification et l'efficacité de Sonnet pour l'exécution.

151 

152La phase Opus en mode plan s'exécute avec la fenêtre de contexte standard de 200 K. La mise à niveau automatique 1M décrite dans [Contexte étendu](#extended-context) s'applique au paramètre de modèle `opus` et ne s'étend pas à `opusplan`.

153 

154### Ajuster le niveau d'effort

155 

156Les [niveaux d'effort](https://platform.claude.com/docs/fr/build-with-claude/effort) contrôlent le raisonnement adaptatif, qui permet au modèle de décider si et combien réfléchir à chaque étape en fonction de la complexité de la tâche. Un effort inférieur est plus rapide et moins cher pour les tâches simples, tandis qu'un effort supérieur fournit un raisonnement plus profond pour les problèmes complexes.

157 

158L'effort est pris en charge sur Opus 4.7, Opus 4.6 et Sonnet 4.6. Les niveaux disponibles dépendent du modèle :

159 

160| Modèle | Niveaux |

161| :--------------------- | :-------------------------------------- |

162| Opus 4.7 | `low`, `medium`, `high`, `xhigh`, `max` |

163| Opus 4.6 et Sonnet 4.6 | `low`, `medium`, `high`, `max` |

164 

165Si vous définissez un niveau que le modèle actif ne prend pas en charge, Claude Code revient au niveau le plus élevé pris en charge au niveau ou en dessous de celui que vous avez défini. Par exemple, `xhigh` s'exécute comme `high` sur Opus 4.6.

166 

167À partir de la v2.1.117, l'effort par défaut est `xhigh` sur Opus 4.7 et `high` sur Opus 4.6 et Sonnet 4.6.

168 

169Lorsque vous exécutez Opus 4.7 pour la première fois, Claude Code applique `xhigh` même si vous aviez précédemment défini un niveau d'effort différent pour Opus 4.6 ou Sonnet 4.6. Exécutez `/effort` à nouveau pour choisir un niveau différent après le changement.

170 

171`low`, `medium`, `high` et `xhigh` persistent entre les sessions. `max` fournit le raisonnement le plus profond sans contrainte sur les dépenses en tokens et s'applique à la session actuelle uniquement, sauf lorsqu'il est défini via la variable d'environnement `CLAUDE_CODE_EFFORT_LEVEL`.

172 

173#### Choisir un niveau d'effort

174 

175Chaque niveau échange les dépenses en tokens contre la capacité. La valeur par défaut convient à la plupart des tâches de codage ; ajustez lorsque vous souhaitez un équilibre différent.

176 

177| Niveau | Quand l'utiliser |

178| :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

179| `low` | Réservez aux tâches courtes, délimitées, sensibles à la latence qui ne sont pas sensibles à l'intelligence |

180| `medium` | Réduit l'utilisation des tokens pour le travail sensible aux coûts qui peut faire des compromis sur l'intelligence |

181| `high` | Équilibre l'utilisation des tokens et l'intelligence. Utilisez comme minimum pour le travail sensible à l'intelligence, ou pour réduire les dépenses en tokens par rapport à `xhigh` |

182| `xhigh` | Meilleurs résultats pour la plupart des tâches de codage et d'agent. Défaut recommandé sur Opus 4.7 |

183| `max` | Peut améliorer les performances sur les tâches exigeantes mais peut montrer des rendements décroissants et est sujet à la surréflexion. Testez avant d'adopter largement |

184 

185L'échelle d'effort est calibrée par modèle, donc le même nom de niveau ne représente pas la même valeur sous-jacente entre les modèles.

186 

187Pour un raisonnement profond ponctuel sans modifier votre paramètre de session, incluez « ultrathink » dans votre invite. Cela ajoute une instruction en contexte indiquant au modèle de réfléchir davantage à ce tour ; cela ne change pas le niveau d'effort envoyé à l'API.

188 

189#### Définir le niveau d'effort

190 

191Vous pouvez modifier l'effort par l'une des méthodes suivantes :

192 

193* **`/effort`** : exécutez `/effort` sans arguments pour ouvrir un curseur interactif, `/effort` suivi d'un nom de niveau pour le définir directement, ou `/effort auto` pour réinitialiser à la valeur par défaut du modèle

194* **Dans `/model`** : utilisez les touches fléchées gauche/droite pour ajuster le curseur d'effort lors de la sélection d'un modèle

195* **Drapeau `--effort`** : passez un nom de niveau pour le définir pour une seule session lors du lancement de Claude Code

196* **Variable d'environnement** : définissez `CLAUDE_CODE_EFFORT_LEVEL` sur un nom de niveau ou `auto`

197* **Paramètres** : définissez `effortLevel` dans votre fichier de paramètres

198* **Frontmatter de skill et de subagent** : définissez `effort` dans un fichier markdown de [skill](/fr/skills#frontmatter-reference) ou de [subagent](/fr/sub-agents#supported-frontmatter-fields) pour remplacer le niveau d'effort lorsque ce skill ou subagent s'exécute

199 

200La variable d'environnement prend la priorité sur toutes les autres méthodes, puis votre niveau configuré, puis la valeur par défaut du modèle. L'effort du frontmatter s'applique lorsque ce skill ou subagent est actif, remplaçant le niveau de session mais pas la variable d'environnement.

201 

202Le curseur d'effort apparaît dans `/model` lorsqu'un modèle pris en charge est sélectionné. Le niveau d'effort actuel est également affiché à côté du logo et du spinner, par exemple « with low effort », vous pouvez donc confirmer quel paramètre est actif sans ouvrir `/model`.

203 

204#### Raisonnement adaptatif et budgets de réflexion fixes

205 

206Le raisonnement adaptatif rend la réflexion optionnelle à chaque étape, donc Claude peut répondre plus rapidement aux invites de routine et réserver une réflexion plus profonde pour les étapes qui en bénéficient. Si vous souhaitez que Claude réfléchisse plus ou moins souvent que le niveau actuel ne le produit, vous pouvez le dire directement dans votre invite ou dans `CLAUDE.md` ; le modèle répond à cette orientation dans son paramètre d'effort.

207 

208Opus 4.7 utilise toujours le raisonnement adaptatif. Le mode de budget de réflexion fixe et `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` ne s'appliquent pas à lui.

209 

210Sur Opus 4.6 et Sonnet 4.6, vous pouvez définir `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` pour revenir au budget de réflexion fixe précédent contrôlé par `MAX_THINKING_TOKENS`. Voir [variables d'environnement](/fr/env-vars).

211 

212### Contexte étendu

213 

214Opus 4.7, Opus 4.6 et Sonnet 4.6 prennent en charge une [fenêtre de contexte de 1 million de tokens](https://platform.claude.com/docs/fr/build-with-claude/context-windows#1m-token-context-window) pour les sessions longues avec de grandes bases de code.

215 

216La disponibilité varie selon le modèle et le plan. Sur les plans Max, Team et Enterprise, Opus est automatiquement mis à niveau vers un contexte 1M sans configuration supplémentaire. Cela s'applique aux sièges Team Standard et Team Premium.

217 

218| Plan | Opus avec contexte 1M | Sonnet avec contexte 1M |

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

220| Max, Team et Enterprise | Inclus dans l'abonnement | Nécessite une [utilisation supplémentaire](https://support.claude.com/fr/articles/12429409-extra-usage-for-paid-claude-plans) |

221| Pro | Nécessite une [utilisation supplémentaire](https://support.claude.com/fr/articles/12429409-extra-usage-for-paid-claude-plans) | Nécessite une [utilisation supplémentaire](https://support.claude.com/fr/articles/12429409-extra-usage-for-paid-claude-plans) |

222| API et paiement à l'utilisation | Accès complet | Accès complet |

223 

224Pour désactiver complètement le contexte 1M, définissez `CLAUDE_CODE_DISABLE_1M_CONTEXT=1`. Cela supprime les variantes de modèle 1M du sélecteur de modèle. Voir [variables d'environnement](/fr/env-vars).

225 

226La fenêtre de contexte 1M utilise la tarification standard du modèle sans prime pour les tokens au-delà de 200 K. Pour les plans où le contexte étendu est inclus dans votre abonnement, l'utilisation reste couverte par votre abonnement. Pour les plans qui accèdent au contexte étendu via une utilisation supplémentaire, les tokens sont facturés à l'utilisation supplémentaire.

227 

228Si votre compte prend en charge le contexte 1M, l'option apparaît dans le sélecteur de modèle (`/model`) dans les dernières versions de Claude Code. Si vous ne la voyez pas, essayez de redémarrer votre session.

229 

230Vous pouvez également utiliser le suffixe `[1m]` avec les alias de modèle ou les noms de modèle complets :

231 

232```bash theme={null}

233# Utiliser l'alias opus[1m] ou sonnet[1m]

234/model opus[1m]

235/model sonnet[1m]

236 

237# Ou ajouter [1m] à un nom de modèle complet

238/model claude-opus-4-7[1m]

239```

240 

241## Vérifier votre modèle actuel

242 

243Vous pouvez voir quel modèle vous utilisez actuellement de plusieurs façons :

244 

2451. Dans la [ligne d'état](/fr/statusline) (si configurée)

2462. Dans `/status`, qui affiche également vos informations de compte.

247 

248## Ajouter une option de modèle personnalisé

249 

250Utilisez `ANTHROPIC_CUSTOM_MODEL_OPTION` pour ajouter une seule entrée personnalisée au sélecteur `/model` sans remplacer les alias intégrés. Ceci est utile pour tester les ID de modèle que Claude Code ne répertorie pas par défaut. Pour les déploiements de passerelle LLM, Claude Code remplit automatiquement le sélecteur à partir du point de terminaison `/v1/models` de la passerelle, donc cette variable n'est nécessaire que lorsque la découverte ne retourne pas le modèle que vous souhaitez. Voir [Sélection du modèle de passerelle LLM](/fr/llm-gateway#model-selection).

251 

252Cet exemple définit les trois variables pour rendre un déploiement Opus acheminé par passerelle sélectionnable :

253 

254```bash theme={null}

255export ANTHROPIC_CUSTOM_MODEL_OPTION="my-gateway/claude-opus-4-7"

256export ANTHROPIC_CUSTOM_MODEL_OPTION_NAME="Opus via Gateway"

257export ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION="Custom deployment routed through the internal LLM gateway"

258```

259 

260L'entrée personnalisée apparaît au bas du sélecteur `/model`. `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` et `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` sont optionnels. S'ils sont omis, l'ID du modèle est utilisé comme nom et la description par défaut est `Custom model (<model-id>)`.

261 

262Claude Code ignore la validation pour l'ID de modèle défini dans `ANTHROPIC_CUSTOM_MODEL_OPTION`, vous pouvez donc utiliser n'importe quelle chaîne que votre point de terminaison API accepte.

263 

264## Variables d'environnement

265 

266Vous pouvez utiliser les variables d'environnement suivantes, qui doivent être des **noms de modèle** complets (ou équivalents pour votre fournisseur d'API), pour contrôler les noms de modèle auxquels les alias sont mappés.

267 

268| Variable d'environnement | Description |

269| -------------------------------- | ------------------------------------------------------------------------------------------------------- |

270| `ANTHROPIC_DEFAULT_OPUS_MODEL` | Le modèle à utiliser pour `opus`, ou pour `opusplan` lorsque le mode Plan est actif. |

271| `ANTHROPIC_DEFAULT_SONNET_MODEL` | Le modèle à utiliser pour `sonnet`, ou pour `opusplan` lorsque le mode Plan n'est pas actif. |

272| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | Le modèle à utiliser pour `haiku`, ou [fonctionnalité d'arrière-plan](/fr/costs#background-token-usage) |

273| `CLAUDE_CODE_SUBAGENT_MODEL` | Le modèle à utiliser pour les [subagents](/fr/sub-agents) |

274 

275Remarque : `ANTHROPIC_SMALL_FAST_MODEL` est déprécié au profit de `ANTHROPIC_DEFAULT_HAIKU_MODEL`.

276 

277### Épingler les modèles pour les déploiements tiers

278 

279Lors du déploiement de Claude Code via [Bedrock](/fr/amazon-bedrock), [Vertex AI](/fr/google-vertex-ai) ou [Foundry](/fr/microsoft-foundry), épinglez les versions de modèle avant de les déployer auprès des utilisateurs.

280 

281Sans épinglage, Claude Code utilise les alias de modèle (`sonnet`, `opus`, `haiku`) qui se résolvent à la dernière version. Lorsqu'Anthropic publie un nouveau modèle qui n'est pas encore activé dans le compte d'un utilisateur, les utilisateurs de Bedrock et Vertex AI voient un avis et reviennent à la version précédente pour cette session, tandis que les utilisateurs de Foundry voient des erreurs car Foundry n'a pas de vérification de démarrage équivalente.

282 

283<Warning>

284 Définissez les trois variables d'environnement de modèle sur des ID de version spécifiques dans le cadre de votre configuration initiale. L'épinglage vous permet de contrôler quand vos utilisateurs passent à un nouveau modèle.

285</Warning>

286 

287Utilisez les variables d'environnement suivantes avec des ID de modèle spécifiques à la version pour votre fournisseur :

288 

289| Fournisseur | Exemple |

290| :---------- | :------------------------------------------------------------------- |

291| Bedrock | `export ANTHROPIC_DEFAULT_OPUS_MODEL='us.anthropic.claude-opus-4-7'` |

292| Vertex AI | `export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7'` |

293| Foundry | `export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7'` |

294 

295Appliquez le même modèle pour `ANTHROPIC_DEFAULT_SONNET_MODEL` et `ANTHROPIC_DEFAULT_HAIKU_MODEL`. Pour les ID de modèle actuels et hérités sur tous les fournisseurs, voir [Aperçu des modèles](https://platform.claude.com/docs/fr/about-claude/models/overview). Pour mettre à niveau les utilisateurs vers une nouvelle version de modèle, mettez à jour ces variables d'environnement et redéployez.

296 

297Pour activer le [contexte étendu](#extended-context) pour un modèle épinglé, ajoutez `[1m]` à l'ID du modèle dans `ANTHROPIC_DEFAULT_OPUS_MODEL` ou `ANTHROPIC_DEFAULT_SONNET_MODEL` :

298 

299```bash theme={null}

300export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7[1m]'

301```

302 

303Le suffixe `[1m]` applique la fenêtre de contexte 1M à toute utilisation de cet alias, y compris `opusplan`. Claude Code supprime le suffixe avant d'envoyer l'ID du modèle à votre fournisseur. N'ajoutez `[1m]` que lorsque le modèle sous-jacent prend en charge le contexte 1M, comme Opus 4.7 ou Sonnet 4.6.

304 

305<Note>

306 La liste d'autorisation `settings.availableModels` s'applique toujours lors de l'utilisation de fournisseurs tiers. Le filtrage correspond à l'alias de modèle (`opus`, `sonnet`, `haiku`), et non à l'ID de modèle spécifique au fournisseur.

307</Note>

308 

309### Personnaliser l'affichage et les capacités du modèle épinglé

310 

311Lorsque vous épinglez un modèle sur un fournisseur tiers, l'ID spécifique au fournisseur apparaît tel quel dans le sélecteur `/model` et Claude Code peut ne pas reconnaître les fonctionnalités que le modèle prend en charge. Vous pouvez remplacer le nom d'affichage et déclarer les capacités avec des variables d'environnement complémentaires pour chaque modèle épinglé.

312 

313Ces variables prennent effet sur les fournisseurs tiers tels que Bedrock, Vertex AI et Foundry. Les variables `_NAME` et `_DESCRIPTION` prennent également effet lorsque `ANTHROPIC_BASE_URL` pointe vers une [passerelle LLM](/fr/llm-gateway). Elles n'ont aucun effet lors de la connexion directe à `api.anthropic.com`.

314 

315| Variable d'environnement | Description |

316| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |

317| `ANTHROPIC_DEFAULT_OPUS_MODEL_NAME` | Nom d'affichage pour le modèle Opus épinglé dans le sélecteur `/model`. Par défaut, l'ID du modèle lorsqu'il n'est pas défini |

318| `ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION` | Description d'affichage pour le modèle Opus épinglé dans le sélecteur `/model`. Par défaut, `Custom Opus model` lorsqu'il n'est pas défini |

319| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | Liste séparée par des virgules des capacités que le modèle Opus épinglé prend en charge |

320 

321Les mêmes suffixes `_NAME`, `_DESCRIPTION` et `_SUPPORTED_CAPABILITIES` sont disponibles pour `ANTHROPIC_DEFAULT_SONNET_MODEL`, `ANTHROPIC_DEFAULT_HAIKU_MODEL` et `ANTHROPIC_CUSTOM_MODEL_OPTION`.

322 

323Claude Code active les fonctionnalités comme les [niveaux d'effort](#adjust-effort-level) et la [réflexion étendue](/fr/common-workflows#use-extended-thinking-thinking-mode) en faisant correspondre l'ID du modèle à des modèles connus. Les ID spécifiques au fournisseur tels que les ARN Bedrock ou les noms de déploiement personnalisés ne correspondent souvent pas à ces modèles, laissant les fonctionnalités prises en charge désactivées. Définissez `_SUPPORTED_CAPABILITIES` pour indiquer à Claude Code les fonctionnalités que le modèle prend réellement en charge :

324 

325| Valeur de capacité | Active |

326| ---------------------- | ----------------------------------------------------------------------------------------------------- |

327| `effort` | [Niveaux d'effort](#adjust-effort-level) et la commande `/effort` |

328| `xhigh_effort` | {/* min-version: 2.1.111 */}Le niveau d'effort `xhigh` |

329| `max_effort` | Le niveau d'effort `max` |

330| `thinking` | [Réflexion étendue](/fr/common-workflows#use-extended-thinking-thinking-mode) |

331| `adaptive_thinking` | Raisonnement adaptatif qui alloue dynamiquement la réflexion en fonction de la complexité de la tâche |

332| `interleaved_thinking` | Réflexion entre les appels d'outils |

333 

334Lorsque `_SUPPORTED_CAPABILITIES` est défini, les capacités listées sont activées et les capacités non listées sont désactivées pour le modèle épinglé correspondant. Lorsque la variable n'est pas définie, Claude Code revient à la détection intégrée basée sur l'ID du modèle.

335 

336Cet exemple épingle Opus à un ARN de modèle personnalisé Bedrock, définit un nom convivial et déclare ses capacités :

337 

338```bash theme={null}

339export ANTHROPIC_DEFAULT_OPUS_MODEL='arn:aws:bedrock:us-east-1:123456789012:custom-model/abc'

340export ANTHROPIC_DEFAULT_OPUS_MODEL_NAME='Opus via Bedrock'

341export ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION='Opus 4.7 routed through a Bedrock custom endpoint'

342export ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES='effort,xhigh_effort,max_effort,thinking,adaptive_thinking,interleaved_thinking'

343```

344 

345### Remplacer les ID de modèle par version

346 

347Les variables d'environnement au niveau de la famille ci-dessus configurent un ID de modèle par alias de famille. Si vous devez mapper plusieurs versions au sein de la même famille à des ID de fournisseur distincts, utilisez plutôt le paramètre `modelOverrides`.

348 

349`modelOverrides` mappe les ID de modèle Anthropic individuels aux chaînes spécifiques au fournisseur que Claude Code envoie à l'API de votre fournisseur. Lorsqu'un utilisateur sélectionne un modèle mappé dans le sélecteur `/model`, Claude Code utilise votre valeur configurée au lieu de la valeur par défaut intégrée.

350 

351Cela permet aux administrateurs d'entreprise d'acheminer chaque version de modèle vers un ARN de profil d'inférence Bedrock spécifique, un nom de version Vertex AI ou un nom de déploiement Foundry pour la gouvernance, l'allocation des coûts ou l'acheminement régional.

352 

353Définissez `modelOverrides` dans votre [fichier de paramètres](/fr/settings#settings-files) :

354 

355```json theme={null}

356{

357 "modelOverrides": {

358 "claude-opus-4-7": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-prod",

359 "claude-opus-4-6": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-46-prod",

360 "claude-sonnet-4-6": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/sonnet-prod"

361 }

362}

363```

364 

365Les clés doivent être des ID de modèle Anthropic tels que listés dans l'[Aperçu des modèles](https://platform.claude.com/docs/fr/about-claude/models/overview). Pour les ID de modèle datés, incluez le suffixe de date exactement tel qu'il apparaît là. Les clés inconnues sont ignorées.

366 

367Les remplacements remplacent les ID de modèle intégrés qui soutiennent chaque entrée dans le sélecteur `/model`. Sur Bedrock, les remplacements prennent la priorité sur tous les profils d'inférence que Claude Code découvre automatiquement au démarrage. Les valeurs que vous fournissez directement via `ANTHROPIC_MODEL`, `--model` ou les variables d'environnement `ANTHROPIC_DEFAULT_*_MODEL` sont transmises au fournisseur telles quelles et ne sont pas transformées par `modelOverrides`.

368 

369`modelOverrides` fonctionne aux côtés de `availableModels`. La liste d'autorisation est évaluée par rapport à l'ID de modèle Anthropic, et non à la valeur de remplacement, donc une entrée comme `"opus"` dans `availableModels` continue de correspondre même lorsque les versions d'Opus sont mappées à des ARN.

370 

371### Configuration de la mise en cache des invites

372 

373Claude Code utilise automatiquement la [mise en cache des invites](https://platform.claude.com/docs/fr/build-with-claude/prompt-caching) pour optimiser les performances et réduire les coûts. Vous pouvez désactiver la mise en cache des invites globalement ou pour des niveaux de modèle spécifiques :

374 

375| Variable d'environnement | Description |

376| ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |

377| `DISABLE_PROMPT_CACHING` | Définissez sur `1` pour désactiver la mise en cache des invites pour tous les modèles (prend la priorité sur les paramètres par modèle) |

378| `DISABLE_PROMPT_CACHING_HAIKU` | Définissez sur `1` pour désactiver la mise en cache des invites pour les modèles Haiku uniquement |

379| `DISABLE_PROMPT_CACHING_SONNET` | Définissez sur `1` pour désactiver la mise en cache des invites pour les modèles Sonnet uniquement |

380| `DISABLE_PROMPT_CACHING_OPUS` | Définissez sur `1` pour désactiver la mise en cache des invites pour les modèles Opus uniquement |

381 

382Ces variables d'environnement vous donnent un contrôle granulaire sur le comportement de la mise en cache des invites. Le paramètre global `DISABLE_PROMPT_CACHING` prend la priorité sur les paramètres spécifiques au modèle, vous permettant de désactiver rapidement toute la mise en cache si nécessaire. Les paramètres par modèle sont utiles pour un contrôle sélectif, par exemple lors du débogage de modèles spécifiques ou du travail avec des fournisseurs cloud qui peuvent avoir des implémentations de mise en cache différentes.

monitoring-usage.md +955 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Surveillance

6 

7> Découvrez comment activer et configurer OpenTelemetry pour Claude Code.

8 

9Suivez l'utilisation de Claude Code, les coûts et l'activité des outils dans votre organisation en exportant les données de télémétrie via OpenTelemetry (OTel). Claude Code exporte les métriques sous forme de données de séries chronologiques via le protocole de métriques standard, les événements via le protocole de journaux/événements, et optionnellement les traces distribuées via le [protocole de traces](#traces-beta). Configurez vos backends de métriques, de journaux et de traces pour qu'ils correspondent à vos exigences de surveillance.

10 

11## Démarrage rapide

12 

13Configurez OpenTelemetry à l'aide de variables d'environnement :

14 

15```bash theme={null}

16# 1. Activer la télémétrie

17export CLAUDE_CODE_ENABLE_TELEMETRY=1

18 

19# 2. Choisir les exportateurs (les deux sont facultatifs - configurez uniquement ce dont vous avez besoin)

20export OTEL_METRICS_EXPORTER=otlp # Options : otlp, prometheus, console, none

21export OTEL_LOGS_EXPORTER=otlp # Options : otlp, console, none

22 

23# 3. Configurer le point de terminaison OTLP (pour l'exportateur OTLP)

24export OTEL_EXPORTER_OTLP_PROTOCOL=grpc

25export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

26 

27# 4. Définir l'authentification (si nécessaire)

28export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer your-token"

29 

30# 5. Pour le débogage : réduire les intervalles d'export

31export OTEL_METRIC_EXPORT_INTERVAL=10000 # 10 secondes (par défaut : 60000ms)

32export OTEL_LOGS_EXPORT_INTERVAL=5000 # 5 secondes (par défaut : 5000ms)

33 

34# 6. Exécuter Claude Code

35claude

36```

37 

38<Note>

39 Les intervalles d'export par défaut sont de 60 secondes pour les métriques et de 5 secondes pour les journaux. Lors de la configuration, vous pouvez utiliser des intervalles plus courts à des fins de débogage. N'oubliez pas de les réinitialiser pour une utilisation en production.

40</Note>

41 

42Pour les options de configuration complètes, consultez la [spécification OpenTelemetry](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options).

43 

44## Configuration de l'administrateur

45 

46Les administrateurs peuvent configurer les paramètres OpenTelemetry pour tous les utilisateurs via le [fichier de paramètres gérés](/fr/settings#settings-files). Cela permet un contrôle centralisé des paramètres de télémétrie dans toute une organisation. Consultez la [précédence des paramètres](/fr/settings#settings-precedence) pour plus d'informations sur la façon dont les paramètres sont appliqués.

47 

48Exemple de configuration des paramètres gérés :

49 

50```json theme={null}

51{

52 "env": {

53 "CLAUDE_CODE_ENABLE_TELEMETRY": "1",

54 "OTEL_METRICS_EXPORTER": "otlp",

55 "OTEL_LOGS_EXPORTER": "otlp",

56 "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",

57 "OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317",

58 "OTEL_EXPORTER_OTLP_HEADERS": "Authorization=Bearer example-token"

59 }

60}

61```

62 

63<Note>

64 Les paramètres gérés peuvent être distribués via MDM (Mobile Device Management) ou d'autres solutions de gestion d'appareils. Les variables d'environnement définies dans le fichier de paramètres gérés ont une haute priorité et ne peuvent pas être remplacées par les utilisateurs.

65</Note>

66 

67## Détails de la configuration

68 

69### Variables de configuration courantes

70 

71| Variable d'environnement | Description | Exemples de valeurs |

72| --------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |

73| `CLAUDE_CODE_ENABLE_TELEMETRY` | Active la collecte de télémétrie (obligatoire) | `1` |

74| `OTEL_METRICS_EXPORTER` | Types d'exportateur de métriques, séparés par des virgules. Utilisez `none` pour désactiver | `console`, `otlp`, `prometheus`, `none` |

75| `OTEL_LOGS_EXPORTER` | Types d'exportateur de journaux/événements, séparés par des virgules. Utilisez `none` pour désactiver | `console`, `otlp`, `none` |

76| `OTEL_EXPORTER_OTLP_PROTOCOL` | Protocole pour l'exportateur OTLP, s'applique à tous les signaux | `grpc`, `http/json`, `http/protobuf` |

77| `OTEL_EXPORTER_OTLP_ENDPOINT` | Point de terminaison du collecteur OTLP pour tous les signaux | `http://localhost:4317` |

78| `OTEL_EXPORTER_OTLP_METRICS_PROTOCOL` | Protocole pour les métriques, remplace le paramètre général | `grpc`, `http/json`, `http/protobuf` |

79| `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` | Point de terminaison des métriques OTLP, remplace le paramètre général | `http://localhost:4318/v1/metrics` |

80| `OTEL_EXPORTER_OTLP_LOGS_PROTOCOL` | Protocole pour les journaux, remplace le paramètre général | `grpc`, `http/json`, `http/protobuf` |

81| `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` | Point de terminaison des journaux OTLP, remplace le paramètre général | `http://localhost:4318/v1/logs` |

82| `OTEL_EXPORTER_OTLP_HEADERS` | En-têtes d'authentification pour OTLP | `Authorization=Bearer token` |

83| `OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY` | Clé client pour l'authentification mTLS | Chemin vers le fichier de clé client |

84| `OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE` | Certificat client pour l'authentification mTLS | Chemin vers le fichier de certificat client |

85| `OTEL_METRIC_EXPORT_INTERVAL` | Intervalle d'export en millisecondes (par défaut : 60000) | `5000`, `60000` |

86| `OTEL_LOGS_EXPORT_INTERVAL` | Intervalle d'export des journaux en millisecondes (par défaut : 5000) | `1000`, `10000` |

87| `OTEL_LOG_USER_PROMPTS` | Activer la journalisation du contenu des invites utilisateur (par défaut : désactivé) | `1` pour activer |

88| `OTEL_LOG_TOOL_DETAILS` | Activer la journalisation des paramètres d'outil et des arguments d'entrée dans les événements d'outil et les attributs d'intervalle de trace : commandes Bash, noms de serveur MCP et d'outil, noms de compétences et entrée d'outil. Active également les noms de commandes personnalisées, de plugin et MCP sur les événements `user_prompt` (par défaut : désactivé) | `1` pour activer |

89| `OTEL_LOG_TOOL_CONTENT` | Activer la journalisation du contenu d'entrée et de sortie d'outil dans les événements d'intervalle (par défaut : désactivé). Nécessite [traçage](#traces-beta). Le contenu est tronqué à 60 Ko | `1` pour activer |

90| `OTEL_LOG_RAW_API_BODIES` | Émettre les corps JSON complets de la demande et de la réponse de l'API Messages d'Anthropic sous forme d'événements de journaux `api_request_body` / `api_response_body` (par défaut : désactivé). Les corps incluent l'historique complet de la conversation. L'activation de cette option implique le consentement à tout ce que `OTEL_LOG_USER_PROMPTS`, `OTEL_LOG_TOOL_DETAILS` et `OTEL_LOG_TOOL_CONTENT` révèleraient | `1` pour les corps en ligne tronqués à 60 Ko, ou `file:<dir>` pour les corps non tronqués sur disque avec un pointeur `body_ref` dans l'événement |

91| `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE` | Préférence de temporalité des métriques (par défaut : `delta`). Définissez sur `cumulative` si votre backend attend une temporalité cumulative | `delta`, `cumulative` |

92| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Intervalle d'actualisation des en-têtes dynamiques (par défaut : 1740000ms / 29 minutes) | `900000` |

93 

94### Contrôle de la cardinalité des métriques

95 

96Les variables d'environnement suivantes contrôlent les attributs inclus dans les métriques pour gérer la cardinalité :

97 

98| Variable d'environnement | Description | Valeur par défaut | Exemple pour désactiver |

99| ----------------------------------- | ------------------------------------------------------------------------------- | ----------------- | ----------------------- |

100| `OTEL_METRICS_INCLUDE_SESSION_ID` | Inclure l'attribut session.id dans les métriques | `true` | `false` |

101| `OTEL_METRICS_INCLUDE_VERSION` | Inclure l'attribut app.version dans les métriques | `false` | `true` |

102| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Inclure les attributs user.account\_uuid et user.account\_id dans les métriques | `true` | `false` |

103 

104Ces variables aident à contrôler la cardinalité des métriques, ce qui affecte les exigences de stockage et les performances des requêtes dans votre backend de métriques. Une cardinalité plus faible signifie généralement de meilleures performances et des coûts de stockage plus bas, mais des données moins granulaires pour l'analyse.

105 

106### Traces (bêta)

107 

108Le traçage distribué exporte des intervalles qui lient chaque invite utilisateur aux demandes d'API et aux exécutions d'outils qu'elle déclenche, afin que vous puissiez afficher une demande complète sous forme de trace unique dans votre backend de traçage.

109 

110Le traçage est désactivé par défaut. Pour l'activer, définissez à la fois `CLAUDE_CODE_ENABLE_TELEMETRY=1` et `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1`, puis définissez `OTEL_TRACES_EXPORTER` pour choisir où les intervalles sont envoyés. Les traces réutilisent la [configuration OTLP courante](#common-configuration-variables) pour le point de terminaison, le protocole et les en-têtes.

111 

112| Variable d'environnement | Description | Exemples de valeurs |

113| ------------------------------------- | ----------------------------------------------------------------------------------------------------- | ------------------------------------ |

114| `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA` | Activer le traçage d'intervalle (obligatoire). `ENABLE_ENHANCED_TELEMETRY_BETA` est également accepté | `1` |

115| `OTEL_TRACES_EXPORTER` | Types d'exportateur de traces, séparés par des virgules. Utilisez `none` pour désactiver | `console`, `otlp`, `none` |

116| `OTEL_EXPORTER_OTLP_TRACES_PROTOCOL` | Protocole pour les traces, remplace `OTEL_EXPORTER_OTLP_PROTOCOL` | `grpc`, `http/json`, `http/protobuf` |

117| `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` | Point de terminaison des traces OTLP, remplace `OTEL_EXPORTER_OTLP_ENDPOINT` | `http://localhost:4318/v1/traces` |

118| `OTEL_TRACES_EXPORT_INTERVAL` | Intervalle d'export par lot d'intervalles en millisecondes (par défaut : 5000) | `1000`, `10000` |

119 

120Les intervalles masquent le texte de l'invite utilisateur, les détails d'entrée d'outil et le contenu d'outil par défaut. Définissez `OTEL_LOG_USER_PROMPTS=1`, `OTEL_LOG_TOOL_DETAILS=1` et `OTEL_LOG_TOOL_CONTENT=1` pour les inclure.

121 

122Lorsque le traçage est actif, les sous-processus Bash et PowerShell héritent automatiquement d'une variable d'environnement `TRACEPARENT` contenant le contexte de trace W3C de l'intervalle d'exécution d'outil actif. Cela permet à tout sous-processus qui lit `TRACEPARENT` de placer ses propres intervalles sous la même trace, permettant le traçage distribué de bout en bout via les scripts et les commandes que Claude exécute.

123 

124Dans le SDK Agent et les sessions non interactives démarrées avec `-p`, Claude Code lit également `TRACEPARENT` et `TRACESTATE` de son propre environnement au démarrage de chaque intervalle d'interaction. Cela permet à un processus d'intégration de transmettre son contexte de trace W3C actif au sous-processus afin que les intervalles de Claude Code apparaissent comme des enfants de la trace distribuée de l'appelant. Les sessions interactives ignorent `TRACEPARENT` entrant pour éviter d'hériter accidentellement des valeurs ambiantes des environnements CI ou conteneur.

125 

126#### Hiérarchie des intervalles

127 

128Chaque invite utilisateur démarre un intervalle racine `claude_code.interaction`. Les appels d'API, les appels d'outils et les exécutions de hooks sont enregistrés comme ses enfants. Les intervalles d'outils ont deux intervalles enfants : un pour le temps passé à attendre une décision de permission et un pour l'exécution elle-même. Lorsque l'outil Task génère un sous-agent, les intervalles d'API et d'outils du sous-agent se placent sous l'intervalle `claude_code.tool` du parent.

129 

130```text theme={null}

131claude_code.interaction

132├── claude_code.llm_request

133├── claude_code.hook (nécessite un traçage bêta détaillé)

134└── claude_code.tool

135 ├── claude_code.tool.blocked_on_user

136 ├── claude_code.tool.execution

137 └── (outil Task) intervalles claude_code.llm_request / claude_code.tool du sous-agent

138```

139 

140Dans les sessions du SDK Agent et `claude -p`, `claude_code.interaction` lui-même devient un enfant de l'intervalle de l'appelant lorsque `TRACEPARENT` est défini dans l'environnement.

141 

142#### Attributs des intervalles

143 

144Chaque intervalle porte les [attributs standard](#standard-attributes) plus un attribut `span.type` correspondant à son nom. Les tableaux ci-dessous listent les attributs supplémentaires définis sur chaque intervalle. Les intervalles `llm_request`, `tool.execution` et `hook` définissent le statut OpenTelemetry `ERROR` lorsqu'ils enregistrent un échec ; les autres intervalles se terminent toujours avec le statut `UNSET`.

145 

146**`claude_code.interaction`**

147 

148| Attribut | Description | Contrôlé par |

149| ------------------------- | -------------------------------------------------------------------------- | ----------------------- |

150| `user_prompt` | Texte de l'invite. La valeur est `<REDACTED>` sauf si la porte est définie | `OTEL_LOG_USER_PROMPTS` |

151| `user_prompt_length` | Longueur de l'invite en caractères | |

152| `interaction.sequence` | Compteur basé sur 1 des interactions dans cette session | |

153| `interaction.duration_ms` | Durée murale du tour | |

154 

155**`claude_code.llm_request`**

156 

157| Attribut | Description | Contrôlé par |

158| -------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | ------------ |

159| `model` | Identifiant du modèle | |

160| `gen_ai.system` | Toujours `anthropic`. Convention sémantique GenAI OpenTelemetry | |

161| `gen_ai.request.model` | Même valeur que `model`. Convention sémantique GenAI OpenTelemetry | |

162| `query_source` | Sous-système qui a émis la demande, tel que `repl_main_thread` ou un nom de sous-agent | |

163| `speed` | `fast` ou `normal` | |

164| `llm_request.context` | `interaction`, `tool`, ou `standalone` selon l'intervalle parent | |

165| `duration_ms` | Durée murale incluant les tentatives | |

166| `ttft_ms` | Temps jusqu'au premier jeton en millisecondes | |

167| `input_tokens` | Nombre de jetons d'entrée du bloc d'utilisation de l'API | |

168| `output_tokens` | Nombre de jetons de sortie | |

169| `cache_read_tokens` | Jetons lus à partir du cache de prompt | |

170| `cache_creation_tokens` | Jetons écrits dans le cache de prompt | |

171| `request_id` | ID de demande d'API Anthropic de l'en-tête de réponse `request-id` | |

172| `gen_ai.response.id` | Même valeur que `request_id`. Convention sémantique GenAI OpenTelemetry | |

173| `client_request_id` | `x-client-request-id` généré par le client de la tentative finale | |

174| `attempt` | Nombre total de tentatives effectuées pour cette demande | |

175| `success` | `true` ou `false` | |

176| `status_code` | Code de statut HTTP lorsque la demande a échoué | |

177| `error` | Message d'erreur lorsque la demande a échoué | |

178| `response.has_tool_call` | `true` lorsque la réponse contenait des blocs tool-use | |

179| `stop_reason` | `stop_reason` de la réponse API, tel que `end_turn`, `tool_use`, `max_tokens`, `stop_sequence`, `pause_turn`, ou `refusal` | |

180| `gen_ai.response.finish_reasons` | Même valeur que `stop_reason`, enveloppée dans un tableau de chaînes. Convention sémantique GenAI OpenTelemetry | |

181 

182Chaque tentative de nouvelle tentative est également enregistrée comme un événement d'intervalle `gen_ai.request.attempt` avec les attributs `attempt` et `client_request_id`.

183 

184**`claude_code.tool`**

185 

186| Attribut | Description | Contrôlé par |

187| --------------- | ------------------------------------------------------------ | ----------------------- |

188| `tool_name` | Nom de l'outil | |

189| `duration_ms` | Durée murale incluant l'attente de permission et l'exécution | |

190| `result_tokens` | Taille approximative en jetons du résultat de l'outil | |

191| `file_path` | Chemin de fichier cible pour les outils Read, Edit et Write | `OTEL_LOG_TOOL_DETAILS` |

192| `full_command` | Chaîne de commande pour l'outil Bash | `OTEL_LOG_TOOL_DETAILS` |

193| `skill_name` | Nom de la compétence pour l'outil Skill | `OTEL_LOG_TOOL_DETAILS` |

194| `subagent_type` | Type de sous-agent pour l'outil Task | `OTEL_LOG_TOOL_DETAILS` |

195 

196Lorsque `OTEL_LOG_TOOL_CONTENT=1`, cet intervalle enregistre également un événement d'intervalle `tool.output` dont les attributs contiennent les corps d'entrée et de sortie de l'outil, tronqués à 60 Ko par attribut.

197 

198**`claude_code.tool.blocked_on_user`**

199 

200| Attribut | Description | Contrôlé par |

201| ------------- | ---------------------------------------------------------------------------------------------- | ------------ |

202| `duration_ms` | Temps passé à attendre la décision de permission | |

203| `decision` | `accept` ou `reject` | |

204| `source` | Source de la décision, correspondant à l'événement [Tool decision event](#tool-decision-event) | |

205 

206**`claude_code.tool.execution`**

207 

208| Attribut | Description | Contrôlé par |

209| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |

210| `duration_ms` | Temps passé à exécuter le corps de l'outil | |

211| `success` | `true` ou `false` | |

212| `error` | Chaîne de catégorie d'erreur lorsque l'exécution a échoué, telle que `Error:ENOENT` ou `ShellError`. Contient le message d'erreur complet à la place lorsque la porte est définie | `OTEL_LOG_TOOL_DETAILS` |

213 

214**`claude_code.hook`**

215 

216Cet intervalle est émis uniquement lorsque le traçage bêta détaillé est actif, ce qui nécessite `ENABLE_BETA_TRACING_DETAILED=1` et `BETA_TRACING_ENDPOINT` en plus de la configuration de l'exportateur de trace ci-dessus. Dans les sessions CLI interactives, cela nécessite également que votre organisation soit sur liste blanche pour la fonctionnalité. Les sessions du SDK Agent et non interactives `-p` ne sont pas contrôlées. Il n'est pas émis lorsque seul `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA` est défini.

217 

218| Attribut | Description | Contrôlé par |

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

220| `hook_event` | Type d'événement hook, tel que `PreToolUse` | |

221| `hook_name` | Nom complet du hook, tel que `PreToolUse:Write` | |

222| `num_hooks` | Nombre de commandes hook correspondantes exécutées | |

223| `hook_definitions` | Configuration du hook sérialisée en JSON | `OTEL_LOG_TOOL_DETAILS` |

224| `duration_ms` | Durée murale de tous les hooks correspondants | |

225| `num_success` | Nombre de hooks qui se sont terminés avec succès | |

226| `num_blocking` | Nombre de hooks qui ont retourné une décision de blocage | |

227| `num_non_blocking_error` | Nombre de hooks qui ont échoué sans bloquer | |

228| `num_cancelled` | Nombre de hooks annulés avant la fin | |

229 

230<Note>

231 Les attributs supplémentaires porteurs de contenu tels que `new_context`, `system_prompt_preview`, `user_system_prompt`, `tool_input` et `response.model_output` sont émis uniquement lorsque le traçage bêta détaillé est actif. Ils ne font pas partie du schéma d'intervalle stable. `user_system_prompt` nécessite également `OTEL_LOG_USER_PROMPTS=1`. Il porte uniquement le texte du prompt système que vous fournissez via l'option SDK `systemPrompt` ou les drapeaux `--system-prompt` et `--append-system-prompt`, tronqué à 60 Ko, et est émis une fois par session plutôt que par demande.

232</Note>

233 

234### En-têtes dynamiques

235 

236Pour les environnements d'entreprise qui nécessitent une authentification dynamique, vous pouvez configurer un script pour générer des en-têtes dynamiquement :

237 

238#### Configuration des paramètres

239 

240Ajoutez à votre `.claude/settings.json` :

241 

242```json theme={null}

243{

244 "otelHeadersHelper": "/bin/generate_opentelemetry_headers.sh"

245}

246```

247 

248#### Exigences du script

249 

250Le script doit générer du JSON valide avec des paires clé-valeur de chaînes représentant les en-têtes HTTP :

251 

252```bash theme={null}

253#!/bin/bash

254# Exemple : plusieurs en-têtes

255echo "{\"Authorization\": \"Bearer $(get-token.sh)\", \"X-API-Key\": \"$(get-api-key.sh)\"}"

256```

257 

258#### Comportement d'actualisation

259 

260Le script d'aide des en-têtes s'exécute au démarrage et périodiquement par la suite pour prendre en charge l'actualisation des jetons. Par défaut, le script s'exécute toutes les 29 minutes. Personnalisez l'intervalle avec la variable d'environnement `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS`.

261 

262### Support des organisations multi-équipes

263 

264Les organisations avec plusieurs équipes ou départements peuvent ajouter des attributs personnalisés pour distinguer les différents groupes à l'aide de la variable d'environnement `OTEL_RESOURCE_ATTRIBUTES` :

265 

266```bash theme={null}

267# Ajouter des attributs personnalisés pour l'identification de l'équipe

268export OTEL_RESOURCE_ATTRIBUTES="department=engineering,team.id=platform,cost_center=eng-123"

269```

270 

271Ces attributs personnalisés seront inclus dans toutes les métriques et tous les événements, ce qui vous permet de :

272 

273* Filtrer les métriques par équipe ou département

274* Suivre les coûts par centre de coûts

275* Créer des tableaux de bord spécifiques à l'équipe

276* Configurer des alertes pour des équipes spécifiques

277 

278<Warning>

279 **Exigences importantes de formatage pour OTEL\_RESOURCE\_ATTRIBUTES :**

280 

281 La variable d'environnement `OTEL_RESOURCE_ATTRIBUTES` utilise des paires clé=valeur séparées par des virgules avec des exigences de formatage strictes :

282 

283 * **Aucun espace autorisé** : Les valeurs ne peuvent pas contenir d'espaces. Par exemple, `user.organizationName=My Company` est invalide

284 * **Format** : Doit être des paires clé=valeur séparées par des virgules : `key1=value1,key2=value2`

285 * **Caractères autorisés** : Uniquement les caractères US-ASCII à l'exclusion des caractères de contrôle, des espaces, des guillemets doubles, des virgules, des points-virgules et des barres obliques inverses

286 * **Caractères spéciaux** : Les caractères en dehors de la plage autorisée doivent être codés en pourcentage

287 

288 **Exemples :**

289 

290 ```bash theme={null}

291 # ❌ Invalide - contient des espaces

292 export OTEL_RESOURCE_ATTRIBUTES="org.name=John's Organization"

293 

294 # ✅ Valide - utiliser des traits de soulignement ou camelCase à la place

295 export OTEL_RESOURCE_ATTRIBUTES="org.name=Johns_Organization"

296 export OTEL_RESOURCE_ATTRIBUTES="org.name=JohnsOrganization"

297 

298 # ✅ Valide - coder en pourcentage les caractères spéciaux si nécessaire

299 export OTEL_RESOURCE_ATTRIBUTES="org.name=John%27s%20Organization"

300 ```

301 

302 Remarque : entourer les valeurs de guillemets n'échappe pas aux espaces. Par exemple, `org.name="My Company"` donne la valeur littérale `"My Company"` (avec guillemets inclus), pas `My Company`.

303</Warning>

304 

305### Exemples de configurations

306 

307Définissez ces variables d'environnement avant d'exécuter `claude`. Chaque bloc montre une configuration complète pour un exportateur ou un scénario de déploiement différent :

308 

309```bash theme={null}

310# Débogage de console (intervalles de 1 seconde)

311export CLAUDE_CODE_ENABLE_TELEMETRY=1

312export OTEL_METRICS_EXPORTER=console

313export OTEL_METRIC_EXPORT_INTERVAL=1000

314 

315# OTLP/gRPC

316export CLAUDE_CODE_ENABLE_TELEMETRY=1

317export OTEL_METRICS_EXPORTER=otlp

318export OTEL_EXPORTER_OTLP_PROTOCOL=grpc

319export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

320 

321# Prometheus

322export CLAUDE_CODE_ENABLE_TELEMETRY=1

323export OTEL_METRICS_EXPORTER=prometheus

324 

325# Plusieurs exportateurs

326export CLAUDE_CODE_ENABLE_TELEMETRY=1

327export OTEL_METRICS_EXPORTER=console,otlp

328export OTEL_EXPORTER_OTLP_PROTOCOL=http/json

329 

330# Points de terminaison/backends différents pour les métriques et les journaux

331export CLAUDE_CODE_ENABLE_TELEMETRY=1

332export OTEL_METRICS_EXPORTER=otlp

333export OTEL_LOGS_EXPORTER=otlp

334export OTEL_EXPORTER_OTLP_METRICS_PROTOCOL=http/protobuf

335export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://metrics.example.com:4318

336export OTEL_EXPORTER_OTLP_LOGS_PROTOCOL=grpc

337export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=http://logs.example.com:4317

338 

339# Métriques uniquement (pas d'événements/journaux)

340export CLAUDE_CODE_ENABLE_TELEMETRY=1

341export OTEL_METRICS_EXPORTER=otlp

342export OTEL_EXPORTER_OTLP_PROTOCOL=grpc

343export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

344 

345# Événements/journaux uniquement (pas de métriques)

346export CLAUDE_CODE_ENABLE_TELEMETRY=1

347export OTEL_LOGS_EXPORTER=otlp

348export OTEL_EXPORTER_OTLP_PROTOCOL=grpc

349export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

350```

351 

352## Métriques et événements disponibles

353 

354### Attributs standard

355 

356Toutes les métriques et tous les événements partagent ces attributs standard :

357 

358| Attribut | Description | Contrôlé par |

359| ------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |

360| `session.id` | Identifiant de session unique | `OTEL_METRICS_INCLUDE_SESSION_ID` (par défaut : true) |

361| `app.version` | Version actuelle de Claude Code | `OTEL_METRICS_INCLUDE_VERSION` (par défaut : false) |

362| `organization.id` | UUID de l'organisation (si authentifié) | Toujours inclus si disponible |

363| `user.account_uuid` | UUID du compte (si authentifié) | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (par défaut : true) |

364| `user.account_id` | ID du compte au format balisé correspondant aux API d'administration Anthropic (si authentifié), tel que `user_01BWBeN28...` | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (par défaut : true) |

365| `user.id` | Identifiant anonyme d'appareil/installation, généré par installation de Claude Code | Toujours inclus |

366| `user.email` | Adresse e-mail de l'utilisateur (si authentifié via OAuth) | Toujours inclus si disponible |

367| `terminal.type` | Type de terminal, tel que `iTerm.app`, `vscode`, `cursor`, ou `tmux` | Toujours inclus si détecté |

368 

369Les événements incluent en outre les attributs suivants. Ceux-ci ne sont jamais attachés aux métriques car ils causeraient une cardinalité non bornée :

370 

371* `prompt.id` : UUID corrélant une invite utilisateur avec tous les événements suivants jusqu'à l'invite suivante. Voir [Attributs de corrélation d'événements](#event-correlation-attributes).

372* `workspace.host_paths` : répertoires d'espace de travail hôte sélectionnés dans l'application de bureau, sous forme de tableau de chaînes

373 

374### Métriques

375 

376Claude Code exporte les métriques suivantes :

377 

378| Nom de la métrique | Description | Unité |

379| ------------------------------------- | -------------------------------------------------------------- | ------ |

380| `claude_code.session.count` | Nombre de sessions CLI démarrées | count |

381| `claude_code.lines_of_code.count` | Nombre de lignes de code modifiées | count |

382| `claude_code.pull_request.count` | Nombre de demandes de tirage créées | count |

383| `claude_code.commit.count` | Nombre de commits git créés | count |

384| `claude_code.cost.usage` | Coût de la session Claude Code | USD |

385| `claude_code.token.usage` | Nombre de jetons utilisés | tokens |

386| `claude_code.code_edit_tool.decision` | Nombre de décisions de permission de l'outil d'édition de code | count |

387| `claude_code.active_time.total` | Temps actif total en secondes | s |

388 

389### Détails des métriques

390 

391Chaque métrique inclut les attributs standard listés ci-dessus. Les métriques avec des attributs supplémentaires spécifiques au contexte sont notées ci-dessous.

392 

393#### Compteur de sessions

394 

395Incrémenté au début de chaque session.

396 

397**Attributs** :

398 

399* Tous les [attributs standard](#standard-attributes)

400* `start_type` : Comment la session a été démarrée. L'un de `"fresh"`, `"resume"`, ou `"continue"`

401 

402#### Compteur de lignes de code

403 

404Incrémenté lorsque du code est ajouté ou supprimé.

405 

406**Attributs** :

407 

408* Tous les [attributs standard](#standard-attributes)

409* `type` : (`"added"`, `"removed"`)

410 

411#### Compteur de demandes de tirage

412 

413Incrémenté lors de la création de demandes de tirage via Claude Code.

414 

415**Attributs** :

416 

417* Tous les [attributs standard](#standard-attributes)

418 

419#### Compteur de commits

420 

421Incrémenté lors de la création de commits git via Claude Code.

422 

423**Attributs** :

424 

425* Tous les [attributs standard](#standard-attributes)

426 

427#### Compteur de coûts

428 

429Incrémenté après chaque demande d'API.

430 

431**Attributs** :

432 

433* Tous les [attributs standard](#standard-attributes)

434* `model` : Identifiant du modèle (par exemple, « claude-sonnet-4-6 »)

435* `query_source` : Catégorie du sous-système qui a émis la demande. L'un de `"main"`, `"subagent"`, ou `"auxiliary"`

436* `speed` : `"fast"` lorsque la demande a utilisé le mode rapide. Absent sinon

437* `effort` : [Niveau d'effort](/fr/model-config#adjust-effort-level) appliqué à la demande : `"low"`, `"medium"`, `"high"`, `"xhigh"`, ou `"max"`. Absent lorsque le modèle ne supporte pas l'effort.

438 

439#### Compteur de jetons

440 

441Incrémenté après chaque demande d'API.

442 

443**Attributs** :

444 

445* Tous les [attributs standard](#standard-attributes)

446* `type` : (`"input"`, `"output"`, `"cacheRead"`, `"cacheCreation"`)

447* `model` : Identifiant du modèle (par exemple, « claude-sonnet-4-6 »)

448* `query_source` : Catégorie du sous-système qui a émis la demande. L'un de `"main"`, `"subagent"`, ou `"auxiliary"`

449* `speed` : `"fast"` lorsque la demande a utilisé le mode rapide. Absent sinon

450* `effort` : [Niveau d'effort](/fr/model-config#adjust-effort-level) appliqué à la demande. Voir [Compteur de coûts](#cost-counter) pour les détails.

451 

452#### Compteur de décisions de l'outil d'édition de code

453 

454Incrémenté lorsque l'utilisateur accepte ou rejette l'utilisation de l'outil Edit, Write ou NotebookEdit.

455 

456**Attributs** :

457 

458* Tous les [attributs standard](#standard-attributes)

459* `tool_name` : Nom de l'outil (`"Edit"`, `"Write"`, `"NotebookEdit"`)

460* `decision` : Décision de l'utilisateur (`"accept"`, `"reject"`)

461* `source` : Source de la décision. L'un de `"config"`, `"hook"`, `"user_permanent"`, `"user_temporary"`, `"user_abort"`, ou `"user_reject"`. Voir l'[Événement de décision d'outil](#tool-decision-event) pour savoir ce que chaque valeur signifie.

462* `language` : Langage de programmation du fichier édité, tel que `"TypeScript"`, `"Python"`, `"JavaScript"`, ou `"Markdown"`. Retourne `"unknown"` pour les extensions de fichier non reconnues.

463 

464#### Compteur de temps actif

465 

466Suit le temps réel passé à utiliser activement Claude Code, excluant le temps d'inactivité. Cette métrique est incrémentée lors des interactions utilisateur (saisie, lecture des réponses) et lors du traitement CLI (exécution d'outils, génération de réponses IA).

467 

468**Attributs** :

469 

470* Tous les [attributs standard](#standard-attributes)

471* `type` : `"user"` pour les interactions au clavier, `"cli"` pour l'exécution d'outils et les réponses IA

472 

473### Événements

474 

475Claude Code exporte les événements suivants via les journaux/événements OpenTelemetry (lorsque `OTEL_LOGS_EXPORTER` est configuré) :

476 

477#### Attributs de corrélation d'événements

478 

479Lorsqu'un utilisateur soumet une invite, Claude Code peut effectuer plusieurs appels d'API et exécuter plusieurs outils. L'attribut `prompt.id` vous permet de lier tous ces événements à l'invite unique qui les a déclenchés.

480 

481| Attribut | Description |

482| ----------- | --------------------------------------------------------------------------------------------------------- |

483| `prompt.id` | Identifiant UUID v4 liant tous les événements produits lors du traitement d'une invite utilisateur unique |

484 

485Pour tracer toute l'activité déclenchée par une invite unique, filtrez vos événements par une valeur `prompt.id` spécifique. Cela retourne l'événement user\_prompt, tous les événements api\_request, et tous les événements tool\_result qui se sont produits lors du traitement de cette invite.

486 

487<Note>

488 `prompt.id` est intentionnellement exclu des métriques car chaque invite génère un ID unique, ce qui créerait un nombre toujours croissant de séries chronologiques. Utilisez-le uniquement pour l'analyse au niveau des événements et les pistes d'audit.

489</Note>

490 

491#### Événement d'invite utilisateur

492 

493Enregistré lorsqu'un utilisateur soumet une invite.

494 

495**Nom de l'événement** : `claude_code.user_prompt`

496 

497**Attributs** :

498 

499* Tous les [attributs standard](#standard-attributes)

500* `event.name` : `"user_prompt"`

501* `event.timestamp` : Horodatage ISO 8601

502* `event.sequence` : Compteur monotone croissant pour ordonner les événements au sein d'une session

503* `prompt_length` : Longueur de l'invite

504* `prompt` : Contenu de l'invite (masqué par défaut, activez avec `OTEL_LOG_USER_PROMPTS=1`)

505* `command_name` : Nom de la commande lorsque l'invite en invoque une. Les noms de commandes intégrées et groupées tels que `compact` ou `debug` sont émis tels quels ; les alias tels que `reset` émettent tels que tapés plutôt que le nom canonique. Les noms de commandes personnalisées, de plugin et MCP s'effondrent en `custom` ou `mcp` sauf si `OTEL_LOG_TOOL_DETAILS=1` est défini

506* `command_source` : Origine de la commande lorsqu'elle est présente : `builtin`, `custom`, ou `mcp`. Les commandes fournies par les plugins signalent comme `custom`

507 

508#### Événement de résultat d'outil

509 

510Enregistré lorsqu'un outil termine son exécution.

511 

512**Nom de l'événement** : `claude_code.tool_result`

513 

514**Attributs** :

515 

516* Tous les [attributs standard](#standard-attributes)

517* `event.name` : `"tool_result"`

518* `event.timestamp` : Horodatage ISO 8601

519* `event.sequence` : Compteur monotone croissant pour ordonner les événements au sein d'une session

520* `tool_name` : Nom de l'outil

521* `tool_use_id` : Identifiant unique pour cette invocation d'outil. Correspond au `tool_use_id` passé aux hooks, permettant la corrélation entre les événements OTel et les données capturées par les hooks.

522* `success` : `"true"` ou `"false"`

523* `duration_ms` : Temps d'exécution en millisecondes

524* `error_type` : Chaîne de catégorie d'erreur lorsque l'outil a échoué, telle que `"Error:ENOENT"` ou `"ShellError"`

525* `error` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : Message d'erreur complet lorsque l'outil a échoué

526* `decision_type` : Soit `"accept"` soit `"reject"`

527* `decision_source` : Source de la décision. L'un de `"config"`, `"hook"`, `"user_permanent"`, `"user_temporary"`, `"user_abort"`, ou `"user_reject"`. Voir l'[Événement de décision d'outil](#tool-decision-event) pour savoir ce que chaque valeur signifie.

528* `tool_input_size_bytes` : Taille de l'entrée d'outil sérialisée en JSON en octets

529* `tool_result_size_bytes` : Taille du résultat de l'outil en octets

530* `mcp_server_scope` : Identifiant de portée du serveur MCP (pour les outils MCP)

531* `tool_parameters` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : Chaîne JSON contenant les paramètres spécifiques à l'outil :

532 * Pour l'outil Bash : inclut `bash_command`, `full_command`, `timeout`, `description`, `dangerouslyDisableSandbox`, et `git_commit_id` (le SHA du commit, lorsqu'une commande `git commit` réussit)

533 * Pour les outils MCP : inclut `mcp_server_name`, `mcp_tool_name`

534 * Pour l'outil Skill : inclut `skill_name`

535 * Pour l'outil Task : inclut `subagent_type`

536* `tool_input` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : Arguments d'outil sérialisés en JSON. Les valeurs individuelles dépassant 512 caractères sont tronquées, et la charge utile complète est limitée à environ 4 K caractères. S'applique à tous les outils, y compris les outils MCP.

537 

538#### Événement de demande d'API

539 

540Enregistré pour chaque demande d'API à Claude.

541 

542**Nom de l'événement** : `claude_code.api_request`

543 

544**Attributs** :

545 

546* Tous les [attributs standard](#standard-attributes)

547* `event.name` : `"api_request"`

548* `event.timestamp` : Horodatage ISO 8601

549* `event.sequence` : Compteur monotone croissant pour ordonner les événements au sein d'une session

550* `model` : Modèle utilisé (par exemple, « claude-sonnet-4-6 »)

551* `cost_usd` : Coût estimé en USD

552* `duration_ms` : Durée de la demande en millisecondes

553* `input_tokens` : Nombre de jetons d'entrée

554* `output_tokens` : Nombre de jetons de sortie

555* `cache_read_tokens` : Nombre de jetons lus à partir du cache

556* `cache_creation_tokens` : Nombre de jetons utilisés pour la création du cache

557* `request_id` : ID de demande d'API Anthropic de l'en-tête `request-id` de la réponse, tel que `"req_011..."`. Présent uniquement lorsque l'API en retourne un.

558* `speed` : `"fast"` ou `"normal"`, indiquant si le mode rapide était actif

559* `query_source` : Sous-système qui a émis la demande, tel que `"repl_main_thread"`, `"compact"`, ou un nom de sous-agent

560* `effort` : [Niveau d'effort](/fr/model-config#adjust-effort-level) appliqué à la demande : `"low"`, `"medium"`, `"high"`, `"xhigh"`, ou `"max"`. Absent lorsque le modèle ne supporte pas l'effort.

561 

562#### Événement d'erreur d'API

563 

564Enregistré lorsqu'une demande d'API à Claude échoue.

565 

566**Nom de l'événement** : `claude_code.api_error`

567 

568**Attributs** :

569 

570* Tous les [attributs standard](#standard-attributes)

571* `event.name` : `"api_error"`

572* `event.timestamp` : Horodatage ISO 8601

573* `event.sequence` : Compteur monotone croissant pour ordonner les événements au sein d'une session

574* `model` : Modèle utilisé (par exemple, « claude-sonnet-4-6 »)

575* `error` : Message d'erreur

576* `status_code` : Code de statut HTTP sous forme de nombre. Absent pour les erreurs non-HTTP telles que les défaillances de connexion.

577* `duration_ms` : Durée de la demande en millisecondes

578* `attempt` : Nombre total de tentatives effectuées, y compris la demande initiale (`1` signifie qu'aucune nouvelle tentative ne s'est produite)

579* `request_id` : ID de demande d'API Anthropic de l'en-tête `request-id` de la réponse, tel que `"req_011..."`. Présent uniquement lorsque l'API en retourne un.

580* `speed` : `"fast"` ou `"normal"`, indiquant si le mode rapide était actif

581* `query_source` : Sous-système qui a émis la demande, tel que `"repl_main_thread"`, `"compact"`, ou un nom de sous-agent

582* `effort` : [Niveau d'effort](/fr/model-config#adjust-effort-level) appliqué à la demande. Absent lorsque le modèle ne supporte pas l'effort.

583 

584#### Événement de corps de demande d'API

585 

586Enregistré pour chaque tentative de demande d'API lorsque `OTEL_LOG_RAW_API_BODIES` est défini. Un événement est émis par tentative, donc les nouvelles tentatives avec des paramètres ajustés produisent chacune leur propre événement.

587 

588**Nom de l'événement** : `claude_code.api_request_body`

589 

590**Attributs** :

591 

592* Tous les [attributs standard](#standard-attributes)

593* `event.name` : `"api_request_body"`

594* `event.timestamp` : Horodatage ISO 8601

595* `event.sequence` : Compteur monotone croissant pour ordonner les événements au sein d'une session

596* `body` : Paramètres de demande de l'API Messages sérialisés en JSON (invite système, messages, outils, etc.), tronqués à 60 Ko. Le contenu de la réflexion étendue dans les tours d'assistant antérieurs est masqué. Émis uniquement en mode en ligne (`OTEL_LOG_RAW_API_BODIES=1`).

597* `body_ref` : Chemin absolu vers un fichier `<dir>/<uuid>.request.json` contenant le corps non tronqué. Émis uniquement en mode fichier (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).

598* `body_length` : Longueur du corps non tronqué. Octets UTF-8 lorsque `OTEL_LOG_RAW_API_BODIES=file:<dir>`, ou unités de code UTF-16 lorsque `=1`

599* `body_truncated` : `"true"` lorsque la troncature en ligne s'est produite. Absent en mode fichier et lorsqu'aucune troncature ne s'est produite.

600* `model` : Identifiant du modèle à partir des paramètres de demande

601* `query_source` : Sous-système qui a émis la demande (par exemple, `"compact"`)

602 

603#### Événement de corps de réponse d'API

604 

605Enregistré pour chaque réponse d'API réussie lorsque `OTEL_LOG_RAW_API_BODIES` est défini.

606 

607**Nom de l'événement** : `claude_code.api_response_body`

608 

609**Attributs** :

610 

611* Tous les [attributs standard](#standard-attributes)

612* `event.name` : `"api_response_body"`

613* `event.timestamp` : Horodatage ISO 8601

614* `event.sequence` : Compteur monotone croissant pour ordonner les événements au sein d'une session

615* `body` : Réponse de l'API Messages sérialisée en JSON (id, blocs de contenu, utilisation, raison d'arrêt), tronquée à 60 Ko. Le contenu de la réflexion étendue est masqué. Émis uniquement en mode en ligne (`OTEL_LOG_RAW_API_BODIES=1`).

616* `body_ref` : Chemin absolu vers un fichier `<dir>/<request_id>.response.json` contenant le corps non tronqué. Émis uniquement en mode fichier (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).

617* `body_length` : Longueur du corps non tronqué. Octets UTF-8 lorsque `OTEL_LOG_RAW_API_BODIES=file:<dir>`, ou unités de code UTF-16 lorsque `=1`

618* `body_truncated` : `"true"` lorsque la troncature en ligne s'est produite. Absent en mode fichier et lorsqu'aucune troncature ne s'est produite.

619* `model` : Identifiant du modèle

620* `query_source` : Sous-système qui a émis la demande

621* `request_id` : ID de demande d'API Anthropic de l'en-tête `request-id` de la réponse, tel que `"req_011..."`. Présent uniquement lorsque l'API en retourne un.

622 

623#### Événement de décision d'outil

624 

625Enregistré lorsqu'une décision de permission d'outil est prise (accepter/rejeter).

626 

627**Nom de l'événement** : `claude_code.tool_decision`

628 

629**Attributs** :

630 

631* Tous les [attributs standard](#standard-attributes)

632* `event.name` : `"tool_decision"`

633* `event.timestamp` : Horodatage ISO 8601

634* `event.sequence` : Compteur monotone croissant pour ordonner les événements au sein d'une session

635* `tool_name` : Nom de l'outil (par exemple, « Read », « Edit », « Write », « NotebookEdit »)

636* `tool_use_id` : Identifiant unique pour cette invocation d'outil. Correspond au `tool_use_id` passé aux hooks, permettant la corrélation entre les événements OTel et les données capturées par les hooks.

637* `decision` : Soit `"accept"` soit `"reject"`

638* `source` : Source de la décision :

639 * `"config"` : Décidé automatiquement sans invite, basé sur les paramètres du projet, la politique gérée par l'entreprise, les drapeaux `--allowedTools` ou `--disallowedTools`, le mode de permission actif, ou parce que l'outil est intrinsèquement sûr.

640 * `"hook"` : Un hook `PreToolUse` ou `PermissionRequest` a retourné la décision.

641 * `"user_permanent"` : Émis lorsque l'utilisateur a choisi « Toujours autoriser » lorsqu'il a été invité, en enregistrant une règle dans ses paramètres personnels. Également émis pour les appels ultérieurs qui correspondent à cette règle enregistrée. Traité comme une acceptation.

642 * `"user_temporary"` : Émis lorsque l'utilisateur a choisi « Oui » ou « Oui, pour cette session » lorsqu'il a été invité, sans enregistrer une règle. Également émis pour les appels ultérieurs dans la même session qui correspondent à cette autorisation limitée à la session. Traité comme une acceptation.

643 * `"user_abort"` : Émis lorsque l'utilisateur a fermé l'invite de permission sans répondre. Traité comme un rejet.

644 * `"user_reject"` : Émis lorsque l'utilisateur a choisi « Non » lorsqu'il a été invité, ou un appel a correspondu à une règle de refus dans ses paramètres personnels. Traité comme un rejet.

645 

646#### Événement de changement de mode de permission

647 

648Enregistré lorsque le mode de permission change, par exemple à partir du cycle Shift+Tab, de la sortie du mode plan ou d'une vérification de porte en mode automatique.

649 

650**Nom de l'événement** : `claude_code.permission_mode_changed`

651 

652**Attributs** :

653 

654* Tous les [attributs standard](#standard-attributes)

655* `event.name` : `"permission_mode_changed"`

656* `event.timestamp` : Horodatage ISO 8601

657* `event.sequence` : Compteur monotone croissant pour ordonner les événements au sein d'une session

658* `from_mode` : Le mode de permission précédent, par exemple `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, ou `"bypassPermissions"`

659* `to_mode` : Le nouveau mode de permission

660* `trigger` : Ce qui a causé le changement. L'un de `"shift_tab"`, `"exit_plan_mode"`, `"auto_gate_denied"`, ou `"auto_opt_in"`. Absent lorsque la transition provient du SDK ou du pont

661 

662#### Événement d'authentification

663 

664Enregistré lorsque `/login` ou `/logout` se termine.

665 

666**Nom de l'événement** : `claude_code.auth`

667 

668**Attributs** :

669 

670* Tous les [attributs standard](#standard-attributes)

671* `event.name` : `"auth"`

672* `event.timestamp` : Horodatage ISO 8601

673* `event.sequence` : Compteur monotone croissant pour ordonner les événements au sein d'une session

674* `action` : `"login"` ou `"logout"`

675* `success` : `"true"` ou `"false"`

676* `auth_method` : Méthode d'authentification, telle que `"oauth"`

677* `error_category` : Type d'erreur catégorique lorsque l'action a échoué. Le message d'erreur brut n'est jamais inclus

678* `status_code` : Code de statut HTTP sous forme de chaîne lorsque l'action a échoué avec une erreur HTTP

679 

680#### Événement de connexion du serveur MCP

681 

682Enregistré lorsqu'un serveur MCP se connecte, se déconnecte ou échoue à se connecter.

683 

684**Nom de l'événement** : `claude_code.mcp_server_connection`

685 

686**Attributs** :

687 

688* Tous les [attributs standard](#standard-attributes)

689* `event.name` : `"mcp_server_connection"`

690* `event.timestamp` : Horodatage ISO 8601

691* `event.sequence` : Compteur monotone croissant pour ordonner les événements au sein d'une session

692* `status` : `"connected"`, `"failed"`, ou `"disconnected"`

693* `transport_type` : Transport du serveur, tel que `"stdio"`, `"sse"`, ou `"http"`

694* `server_scope` : Portée à laquelle le serveur est configuré, telle que `"user"`, `"project"`, ou `"local"`

695* `duration_ms` : Durée de la tentative de connexion en millisecondes

696* `error_code` : Code d'erreur lorsque la connexion a échoué

697* `server_name` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : Nom du serveur configuré

698* `error` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : Message d'erreur complet lorsque la connexion a échoué

699 

700#### Événement d'erreur interne

701 

702Enregistré lorsque Claude Code détecte une erreur interne inattendue. Seul le nom de la classe d'erreur et un code de style errno sont enregistrés. Le message d'erreur et la trace de pile ne sont jamais inclus. Cet événement n'est pas émis lors de l'exécution sur Bedrock, Vertex ou Foundry, ou lorsque `DISABLE_ERROR_REPORTING` est défini.

703 

704**Nom de l'événement** : `claude_code.internal_error`

705 

706**Attributs** :

707 

708* Tous les [attributs standard](#standard-attributes)

709* `event.name` : `"internal_error"`

710* `event.timestamp` : Horodatage ISO 8601

711* `event.sequence` : Compteur monotone croissant pour ordonner les événements au sein d'une session

712* `error_name` : Nom de la classe d'erreur, tel que `"TypeError"` ou `"SyntaxError"`

713* `error_code` : Code errno Node.js tel que `"ENOENT"` lorsqu'il est présent sur l'erreur

714 

715#### Événement de plugin installé

716 

717Enregistré lorsqu'un plugin termine l'installation, à partir de la commande CLI `claude plugin install` et de l'interface utilisateur interactive `/plugin`.

718 

719**Nom de l'événement** : `claude_code.plugin_installed`

720 

721**Attributs** :

722 

723* Tous les [attributs standard](#standard-attributes)

724* `event.name` : `"plugin_installed"`

725* `event.timestamp` : Horodatage ISO 8601

726* `event.sequence` : Compteur monotone croissant pour ordonner les événements au sein d'une session

727* `marketplace.is_official` : `"true"` si la place de marché est une place de marché officielle d'Anthropic, `"false"` sinon

728* `install.trigger` : `"cli"` ou `"ui"`

729* `plugin.name` : Nom du plugin installé. Pour les places de marché tierces, ceci est inclus uniquement lorsque `OTEL_LOG_TOOL_DETAILS=1`

730* `plugin.version` : Version du plugin lorsqu'elle est déclarée dans l'entrée de la place de marché. Pour les places de marché tierces, ceci est inclus uniquement lorsque `OTEL_LOG_TOOL_DETAILS=1`

731* `marketplace.name` : Place de marché à partir de laquelle le plugin a été installé. Pour les places de marché tierces, ceci est inclus uniquement lorsque `OTEL_LOG_TOOL_DETAILS=1`

732 

733#### Événement de compétence activée

734 

735Enregistré lorsqu'une compétence est invoquée, que Claude l'appelle via l'outil Skill ou que vous l'exécutiez en tant que commande `/`.

736 

737**Nom de l'événement** : `claude_code.skill_activated`

738 

739**Attributs** :

740 

741* Tous les [attributs standard](#standard-attributes)

742* `event.name` : `"skill_activated"`

743* `event.timestamp` : Horodatage ISO 8601

744* `event.sequence` : Compteur monotone croissant pour ordonner les événements au sein d'une session

745* `skill.name` : Nom de la compétence. Pour les compétences définies par l'utilisateur et les compétences de plugin tiers, la valeur est l'espace réservé `"custom_skill"` sauf si `OTEL_LOG_TOOL_DETAILS=1`

746* `invocation_trigger` : Comment la compétence a été déclenchée (`"user-slash"`, `"claude-proactive"`, ou `"nested-skill"`)

747* `skill.source` : D'où la compétence a été chargée (par exemple, `"bundled"`, `"userSettings"`, `"projectSettings"`, `"plugin"`)

748* `plugin.name` (lorsque `OTEL_LOG_TOOL_DETAILS=1` ou le plugin provient d'une place de marché officielle) : Nom du plugin propriétaire lorsque la compétence est fournie par un plugin

749* `marketplace.name` (lorsque `OTEL_LOG_TOOL_DETAILS=1` ou le plugin provient d'une place de marché officielle) : Place de marché du plugin propriétaire, lorsque la compétence est fournie par un plugin

750 

751#### Événement de mention @

752 

753Enregistré lorsque Claude Code résout une mention `@` dans une invite. Pas chaque mention n'émet un événement : les chemins de sortie anticipée tels que les refus de permission, les fichiers surdimensionnés, les pièces jointes de référence PDF et les défaillances de listage de répertoires retournent sans enregistrement.

754 

755**Nom de l'événement** : `claude_code.at_mention`

756 

757**Attributs** :

758 

759* Tous les [attributs standard](#standard-attributes)

760* `event.name` : `"at_mention"`

761* `event.timestamp` : Horodatage ISO 8601

762* `event.sequence` : Compteur monotone croissant pour ordonner les événements au sein d'une session

763* `mention_type` : Type de mention (`"file"`, `"directory"`, `"agent"`, `"mcp_resource"`)

764* `success` : Si la mention a été résolue avec succès (`"true"` ou `"false"`)

765 

766#### Événement de tentatives d'API épuisées

767 

768Enregistré une fois lorsqu'une demande d'API échoue après plus d'une tentative. Émis aux côtés de l'événement `api_error` final.

769 

770**Nom de l'événement** : `claude_code.api_retries_exhausted`

771 

772**Attributs** :

773 

774* Tous les [attributs standard](#standard-attributes)

775* `event.name` : `"api_retries_exhausted"`

776* `event.timestamp` : Horodatage ISO 8601

777* `event.sequence` : Compteur monotone croissant pour ordonner les événements au sein d'une session

778* `model` : Modèle utilisé

779* `error` : Message d'erreur final

780* `status_code` : Code de statut HTTP sous forme de nombre. Absent pour les erreurs non-HTTP.

781* `total_attempts` : Nombre total de tentatives effectuées

782* `total_retry_duration_ms` : Temps mural total sur toutes les tentatives

783* `speed` : `"fast"` ou `"normal"`

784 

785#### Événement de démarrage d'exécution de hook

786 

787Enregistré lorsqu'un ou plusieurs hooks commencent à s'exécuter pour un événement de hook.

788 

789**Nom de l'événement** : `claude_code.hook_execution_start`

790 

791**Attributs** :

792 

793* Tous les [attributs standard](#standard-attributes)

794* `event.name` : `"hook_execution_start"`

795* `event.timestamp` : Horodatage ISO 8601

796* `event.sequence` : Compteur monotone croissant pour ordonner les événements au sein d'une session

797* `hook_event` : Type d'événement hook, tel que `"PreToolUse"` ou `"PostToolUse"`

798* `hook_name` : Nom complet du hook incluant le matcher, tel que `"PreToolUse:Write"`

799* `num_hooks` : Nombre de commandes hook correspondantes

800* `managed_only` : `"true"` lorsque seuls les hooks de politique gérée sont autorisés

801* `hook_source` : `"policySettings"` ou `"merged"`

802* `hook_definitions` : Configuration du hook sérialisée en JSON. Inclus uniquement lorsque le traçage bêta détaillé et `OTEL_LOG_TOOL_DETAILS=1` sont tous deux activés

803 

804#### Événement de fin d'exécution de hook

805 

806Enregistré lorsque tous les hooks pour un événement de hook ont terminé.

807 

808**Nom de l'événement** : `claude_code.hook_execution_complete`

809 

810**Attributs** :

811 

812* Tous les [attributs standard](#standard-attributes)

813* `event.name` : `"hook_execution_complete"`

814* `event.timestamp` : Horodatage ISO 8601

815* `event.sequence` : Compteur monotone croissant pour ordonner les événements au sein d'une session

816* `hook_event` : Type d'événement hook

817* `hook_name` : Nom complet du hook incluant le matcher

818* `num_hooks` : Nombre de commandes hook correspondantes

819* `num_success` : Nombre qui se sont terminées avec succès

820* `num_blocking` : Nombre qui ont retourné une décision de blocage

821* `num_non_blocking_error` : Nombre qui ont échoué sans bloquer

822* `num_cancelled` : Nombre annulé avant la fin

823* `total_duration_ms` : Durée murale de tous les hooks correspondants

824* `managed_only` : `"true"` lorsque seuls les hooks de politique gérée sont autorisés

825* `hook_source` : `"policySettings"` ou `"merged"`

826* `hook_definitions` : Configuration du hook sérialisée en JSON. Inclus uniquement lorsque le traçage bêta détaillé et `OTEL_LOG_TOOL_DETAILS=1` sont tous deux activés

827 

828#### Événement de compaction

829 

830Enregistré lorsque la compaction de conversation se termine.

831 

832**Nom de l'événement** : `claude_code.compaction`

833 

834**Attributs** :

835 

836* Tous les [attributs standard](#standard-attributes)

837* `event.name` : `"compaction"`

838* `event.timestamp` : Horodatage ISO 8601

839* `event.sequence` : Compteur monotone croissant pour ordonner les événements au sein d'une session

840* `trigger` : `"auto"` ou `"manual"`

841* `success` : `"true"` ou `"false"`

842* `duration_ms` : Durée de la compaction

843* `pre_tokens` : Nombre approximatif de jetons avant la compaction

844* `post_tokens` : Nombre approximatif de jetons après la compaction

845* `error` : Message d'erreur lorsque la compaction a échoué

846 

847## Interpréter les données de métriques et d'événements

848 

849Les métriques et événements exportés prennent en charge une gamme d'analyses :

850 

851### Surveillance de l'utilisation

852 

853| Métrique | Opportunité d'analyse |

854| ------------------------------------------------------------- | ------------------------------------------------------------------ |

855| `claude_code.token.usage` | Ventiler par `type` (entrée/sortie), utilisateur, équipe ou modèle |

856| `claude_code.session.count` | Suivre l'adoption et l'engagement au fil du temps |

857| `claude_code.lines_of_code.count` | Mesurer la productivité en suivant les ajouts/suppressions de code |

858| `claude_code.commit.count` & `claude_code.pull_request.count` | Comprendre l'impact sur les flux de travail de développement |

859 

860### Surveillance des coûts

861 

862La métrique `claude_code.cost.usage` aide à :

863 

864* Suivre les tendances d'utilisation entre les équipes ou les individus

865* Identifier les sessions à utilisation élevée pour l'optimisation

866 

867<Note>

868 Les métriques de coûts sont des approximations. Pour les données de facturation officielles, consultez votre fournisseur d'API (Claude Console, Amazon Bedrock ou Google Cloud Vertex).

869</Note>

870 

871### Alertes et segmentation

872 

873Les alertes courantes à considérer :

874 

875* Pics de coûts

876* Consommation de jetons inhabituelle

877* Volume de session élevé d'utilisateurs spécifiques

878 

879Toutes les métriques peuvent être segmentées par `user.account_uuid`, `user.account_id`, `organization.id`, `session.id`, `model`, et `app.version`.

880 

881### Détecter l'épuisement des tentatives

882 

883Claude Code réessaie les demandes d'API échouées en interne et n'émet un seul événement `claude_code.api_error` qu'après avoir abandonné, donc l'événement lui-même est le signal terminal pour cette demande. Les tentatives de nouvelle tentative intermédiaires ne sont pas enregistrées comme des événements séparés.

884 

885L'attribut `attempt` sur l'événement enregistre le nombre total de tentatives effectuées. Une valeur supérieure à `CLAUDE_CODE_MAX_RETRIES` (par défaut `10`) indique que la demande a épuisé toutes les tentatives sur une erreur transitoire. Une valeur inférieure indique une erreur non réessayable telle qu'une réponse `400`.

886 

887Pour distinguer une session qui s'est rétablie d'une qui s'est bloquée, groupez les événements par `session.id` et vérifiez si un événement `api_request` ultérieur existe après l'erreur.

888 

889### Analyse des événements

890 

891Les données d'événements fournissent des informations détaillées sur les interactions de Claude Code :

892 

893**Modèles d'utilisation des outils** : analyser les événements de résultat d'outil pour identifier :

894 

895* Les outils les plus fréquemment utilisés

896* Les taux de réussite des outils

897* Les temps d'exécution moyens des outils

898* Les modèles d'erreur par type d'outil

899 

900**Surveillance des performances** : suivre les durées des demandes d'API et les temps d'exécution des outils pour identifier les goulots d'étranglement de performance.

901 

902## Considérations relatives aux backends

903 

904Votre choix de backends de métriques, de journaux et de traces détermine les types d'analyses que vous pouvez effectuer :

905 

906### Pour les métriques

907 

908* **Bases de données de séries chronologiques (par exemple, Prometheus)** : Calculs de taux, métriques agrégées

909* **Magasins colonnaires (par exemple, ClickHouse)** : Requêtes complexes, analyse d'utilisateurs uniques

910* **Plates-formes d'observabilité complètes (par exemple, Honeycomb, Datadog)** : Requêtes avancées, visualisation, alertes

911 

912### Pour les événements/journaux

913 

914* **Systèmes d'agrégation de journaux (par exemple, Elasticsearch, Loki)** : Recherche en texte intégral, analyse de journaux

915* **Magasins colonnaires (par exemple, ClickHouse)** : Analyse d'événements structurés

916* **Plates-formes d'observabilité complètes (par exemple, Honeycomb, Datadog)** : Corrélation entre les métriques et les événements

917 

918### Pour les traces

919 

920Choisissez un backend qui prend en charge le stockage de traces distribuées et la corrélation d'intervalles :

921 

922* **Systèmes de traçage distribué (par exemple, Jaeger, Zipkin, Grafana Tempo)** : Visualisation d'intervalles, cascades de demandes, analyse de latence

923* **Plates-formes d'observabilité complètes (par exemple, Honeycomb, Datadog)** : Recherche de traces et corrélation avec les métriques et les journaux

924 

925Pour les organisations nécessitant des métriques d'utilisateurs actifs quotidiens/hebdomadaires/mensuels (DAU/WAU/MAU), envisagez des backends qui prennent en charge les requêtes de valeurs uniques efficaces.

926 

927## Informations sur le service

928 

929Toutes les métriques et tous les événements sont exportés avec les attributs de ressource suivants :

930 

931* `service.name` : `claude-code`

932* `service.version` : Version actuelle de Claude Code

933* `os.type` : Type de système d'exploitation (par exemple, `linux`, `darwin`, `windows`)

934* `os.version` : Chaîne de version du système d'exploitation

935* `host.arch` : Architecture de l'hôte (par exemple, `amd64`, `arm64`)

936* `wsl.version` : Numéro de version WSL (présent uniquement lors de l'exécution sur Windows Subsystem for Linux)

937* Nom du compteur : `com.anthropic.claude_code`

938 

939## Ressources de mesure du ROI

940 

941Pour un guide complet sur la mesure du retour sur investissement pour Claude Code, y compris la configuration de la télémétrie, l'analyse des coûts, les métriques de productivité et les rapports automatisés, consultez le [Guide de mesure du ROI de Claude Code](https://github.com/anthropics/claude-code-monitoring-guide). Ce référentiel fournit des configurations Docker Compose prêtes à l'emploi, des configurations Prometheus et OpenTelemetry, et des modèles pour générer des rapports de productivité intégrés à des outils comme Linear.

942 

943## Sécurité et confidentialité

944 

945* L'export OpenTelemetry vers votre backend est opt-in et nécessite une configuration explicite. Pour la télémétrie opérationnelle distincte d'Anthropic et comment la désactiver, consultez [Utilisation des données](/fr/data-usage#telemetry-services)

946* Les contenus de fichiers bruts et les extraits de code ne sont pas inclus dans les métriques ou les événements. Les intervalles de trace constituent un chemin de données distinct : voir la puce `OTEL_LOG_TOOL_CONTENT` ci-dessous

947* Lorsqu'authentifié via OAuth, `user.email` est inclus dans les attributs de télémétrie. Si cela pose un problème pour votre organisation, travaillez avec votre backend de télémétrie pour filtrer ou masquer ce champ

948* Le contenu des invites utilisateur n'est pas collecté par défaut. Seule la longueur de l'invite est enregistrée. Pour inclure le contenu de l'invite, définissez `OTEL_LOG_USER_PROMPTS=1`

949* Les arguments d'entrée d'outil et les paramètres ne sont pas enregistrés par défaut. Pour les inclure, définissez `OTEL_LOG_TOOL_DETAILS=1`. Lorsqu'activé, les événements `tool_result` incluent un attribut `tool_parameters` avec les commandes Bash, les noms de serveur MCP et d'outil, et les noms de compétences, plus un attribut `tool_input` avec les chemins de fichiers, les URL, les modèles de recherche et d'autres arguments. Les événements `user_prompt` incluent le `command_name` verbatim pour les commandes personnalisées, de plugin et MCP. Les intervalles de trace incluent le même attribut `tool_input` et les attributs dérivés de l'entrée tels que `file_path`. Les valeurs individuelles dépassant 512 caractères sont tronquées et le total est limité à environ 4 K caractères, mais les arguments peuvent toujours contenir des valeurs sensibles. Configurez votre backend de télémétrie pour filtrer ou masquer ces attributs selon les besoins

950* Le contenu d'entrée et de sortie d'outil n'est pas enregistré dans les intervalles de trace par défaut. Pour l'inclure, définissez `OTEL_LOG_TOOL_CONTENT=1`. Lorsqu'activé, les événements d'intervalle incluent le contenu complet d'entrée et de sortie d'outil tronqué à 60 Ko par intervalle. Cela peut inclure les contenus de fichiers bruts des résultats de l'outil Read et la sortie de commande Bash. Configurez votre backend de télémétrie pour filtrer ou masquer ces attributs selon les besoins

951* Les corps bruts de la demande et de la réponse de l'API Messages d'Anthropic ne sont pas enregistrés par défaut. Pour les inclure, définissez `OTEL_LOG_RAW_API_BODIES`. Avec `=1`, chaque appel d'API émet des événements de journaux `api_request_body` et `api_response_body` dont l'attribut `body` est la charge utile sérialisée en JSON, tronquée à 60 Ko. Avec `=file:<dir>`, les corps non tronqués sont écrits dans les fichiers `.request.json` et `.response.json` sous ce répertoire et les événements portent un chemin `body_ref` à la place du corps en ligne. Livrez le répertoire avec un collecteur de journaux ou un sidecar plutôt que via le flux de télémétrie. Dans les deux modes, les corps contiennent l'historique complet de la conversation (invite système, chaque tour d'utilisateur et d'assistant antérieur, résultats d'outils), donc l'activation de cette option implique le consentement à tout ce que les autres drapeaux de contenu `OTEL_LOG_*` révèleraient. Le contenu de réflexion étendue de Claude est toujours masqué de ces corps indépendamment des autres paramètres

952 

953## Surveiller Claude Code sur Amazon Bedrock

954 

955Pour des conseils détaillés sur la surveillance de l'utilisation de Claude Code pour Amazon Bedrock, consultez [Implémentation de la surveillance de Claude Code (Bedrock)](https://github.com/aws-solutions-library-samples/guidance-for-claude-code-with-amazon-bedrock/blob/main/assets/docs/MONITORING.md).

network-config.md +132 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Configuration réseau d'entreprise

6 

7> Configurez Claude Code pour les environnements d'entreprise avec des serveurs proxy, des autorités de certification (CA) personnalisées et l'authentification mutuelle Transport Layer Security (mTLS).

8 

9Claude Code prend en charge diverses configurations réseau et de sécurité d'entreprise via des variables d'environnement. Cela inclut le routage du trafic via des serveurs proxy d'entreprise, la confiance envers des autorités de certification (CA) personnalisées et l'authentification avec des certificats mTLS (Transport Layer Security mutuel) pour une sécurité renforcée.

10 

11<Note>

12 Toutes les variables d'environnement affichées sur cette page peuvent également être configurées dans [`settings.json`](/fr/settings).

13</Note>

14 

15## Configuration du proxy

16 

17### Variables d'environnement

18 

19Claude Code respecte les variables d'environnement proxy standard :

20 

21```bash theme={null}

22# Proxy HTTPS (recommandé)

23export HTTPS_PROXY=https://proxy.example.com:8080

24 

25# Proxy HTTP (si HTTPS non disponible)

26export HTTP_PROXY=http://proxy.example.com:8080

27 

28# Contourner le proxy pour des requêtes spécifiques - format séparé par des espaces

29export NO_PROXY="localhost 192.168.1.1 example.com .example.com"

30# Contourner le proxy pour des requêtes spécifiques - format séparé par des virgules

31export NO_PROXY="localhost,192.168.1.1,example.com,.example.com"

32# Contourner le proxy pour toutes les requêtes

33export NO_PROXY="*"

34```

35 

36<Note>

37 Claude Code ne prend pas en charge les proxies SOCKS.

38</Note>

39 

40### Authentification basique

41 

42Si votre proxy nécessite une authentification basique, incluez les identifiants dans l'URL du proxy :

43 

44```bash theme={null}

45export HTTPS_PROXY=http://username:password@proxy.example.com:8080

46```

47 

48<Warning>

49 Évitez de coder en dur les mots de passe dans les scripts. Utilisez plutôt des variables d'environnement ou un stockage sécurisé des identifiants.

50</Warning>

51 

52<Tip>

53 Pour les proxies nécessitant une authentification avancée (NTLM, Kerberos, etc.), envisagez d'utiliser un service LLM Gateway qui prend en charge votre méthode d'authentification.

54</Tip>

55 

56## Magasin de certificats CA

57 

58Par défaut, Claude Code fait confiance à la fois aux certificats CA Mozilla fournis avec le produit et au magasin de certificats de votre système d'exploitation. Les proxies d'inspection TLS d'entreprise tels que CrowdStrike Falcon et Zscaler fonctionnent sans configuration supplémentaire lorsque leur certificat racine est installé dans le magasin de confiance du système d'exploitation.

59 

60<Note>

61 L'intégration du magasin CA système nécessite la distribution binaire native de Claude Code. Lors de l'exécution sur le runtime Node.js, le magasin CA système n'est pas fusionné automatiquement. Dans ce cas, définissez `NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem` pour approuver une CA racine d'entreprise.

62</Note>

63 

64`CLAUDE_CODE_CERT_STORE` accepte une liste séparée par des virgules de sources. Les valeurs reconnues sont `bundled` pour l'ensemble de certificats CA Mozilla fourni avec Claude Code et `system` pour le magasin de confiance du système d'exploitation. La valeur par défaut est `bundled,system`.

65 

66Pour approuver uniquement l'ensemble de certificats CA Mozilla fourni :

67 

68```bash theme={null}

69export CLAUDE_CODE_CERT_STORE=bundled

70```

71 

72Pour approuver uniquement le magasin de certificats du système d'exploitation :

73 

74```bash theme={null}

75export CLAUDE_CODE_CERT_STORE=system

76```

77 

78<Note>

79 `CLAUDE_CODE_CERT_STORE` n'a pas de clé de schéma dédiée dans `settings.json`. Définissez-la via le bloc `env` dans `~/.claude/settings.json` ou directement dans l'environnement du processus.

80</Note>

81 

82## Certificats CA personnalisés

83 

84Si votre environnement d'entreprise utilise une CA personnalisée, configurez Claude Code pour la faire confiance directement :

85 

86```bash theme={null}

87export NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem

88```

89 

90## Authentification mTLS

91 

92Pour les environnements d'entreprise nécessitant une authentification par certificat client :

93 

94```bash theme={null}

95# Certificat client pour l'authentification

96export CLAUDE_CODE_CLIENT_CERT=/path/to/client-cert.pem

97 

98# Clé privée du client

99export CLAUDE_CODE_CLIENT_KEY=/path/to/client-key.pem

100 

101# Optionnel : phrase de passe pour la clé privée chiffrée

102export CLAUDE_CODE_CLIENT_KEY_PASSPHRASE="your-passphrase"

103```

104 

105## Exigences d'accès réseau

106 

107Claude Code nécessite l'accès aux URL suivantes. Autorisez ces URL dans votre configuration proxy et vos règles de pare-feu, en particulier dans les environnements réseau conteneurisés ou restreints.

108 

109| URL | Requis pour |

110| ------------------------------ | ----------------------------------------------------------------------------------------------------------------------- |

111| `api.anthropic.com` | Requêtes de l'API Claude |

112| `claude.ai` | Authentification du compte claude.ai |

113| `platform.claude.com` | Authentification du compte Anthropic Console |

114| `downloads.claude.ai` | Téléchargements d'exécutables de plugins ; installateur natif et mise à jour automatique native |

115| `storage.googleapis.com` | {/* max-version: 2.1.115 */}Installateur natif et mise à jour automatique native sur les versions antérieures à 2.1.116 |

116| `bridge.claudeusercontent.com` | Pont WebSocket de l'extension [Claude in Chrome](/fr/chrome) |

117 

118Si vous installez Claude Code via npm ou gérez votre propre distribution binaire, les utilisateurs finaux n'auront peut-être pas besoin d'accès à `downloads.claude.ai` ou `storage.googleapis.com`.

119 

120Claude Code envoie également une télémétrie opérationnelle facultative par défaut, que vous pouvez désactiver avec des variables d'environnement. Consultez [Services de télémétrie](/fr/data-usage#telemetry-services) pour savoir comment la désactiver avant de finaliser votre liste d'autorisation.

121 

122Lors de l'utilisation d'[Amazon Bedrock](/fr/amazon-bedrock), de [Google Vertex AI](/fr/google-vertex-ai), ou de [Microsoft Foundry](/fr/microsoft-foundry), le trafic du modèle et l'authentification vont vers votre fournisseur au lieu de `api.anthropic.com`, `claude.ai`, ou `platform.claude.com`. L'outil WebFetch appelle toujours `api.anthropic.com` pour sa [vérification de sécurité du domaine](/fr/data-usage#webfetch-domain-safety-check) sauf si vous définissez `skipWebFetchPreflight: true` dans les [paramètres](/fr/settings).

123 

124[Claude Code sur le web](/fr/claude-code-on-the-web) et [Code Review](/fr/code-review) se connectent à vos référentiels à partir de l'infrastructure gérée par Anthropic. Si votre organisation GitHub Enterprise Cloud restreint l'accès par adresse IP, activez [l'héritage de la liste d'autorisation IP pour les applications GitHub installées](https://docs.github.com/en/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization#allowing-access-by-github-apps). L'application GitHub Claude enregistre ses plages d'adresses IP, donc l'activation de ce paramètre permet l'accès sans configuration manuelle. Pour [ajouter les plages à votre liste d'autorisation manuellement](https://docs.github.com/en/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization#adding-an-allowed-ip-address) à la place, ou pour configurer d'autres pare-feu, consultez les [adresses IP de l'API Anthropic](https://platform.claude.com/docs/en/api/ip-addresses).

125 

126Pour les instances [GitHub Enterprise Server](/fr/github-enterprise-server) auto-hébergées derrière un pare-feu, autorisez les mêmes [adresses IP de l'API Anthropic](https://platform.claude.com/docs/en/api/ip-addresses) afin que l'infrastructure Anthropic puisse accéder à votre hôte GHES pour cloner les référentiels et publier les commentaires d'examen.

127 

128## Ressources supplémentaires

129 

130* [Paramètres Claude Code](/fr/settings)

131* [Référence des variables d'environnement](/fr/env-vars)

132* [Guide de dépannage](/fr/troubleshooting)

output-styles.md +90 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Styles de sortie

6 

7> Adaptez Claude Code pour des usages au-delà de l'ingénierie logicielle

8 

9Les styles de sortie vous permettent d'utiliser Claude Code comme n'importe quel type d'agent tout en conservant ses capacités principales, telles que l'exécution de scripts locaux, la lecture/écriture de fichiers et le suivi des TODOs.

10 

11## Styles de sortie intégrés

12 

13Le style de sortie **Default** de Claude Code est l'invite système existante, conçue pour vous aider à accomplir efficacement les tâches d'ingénierie logicielle.

14 

15Il existe deux styles de sortie intégrés supplémentaires axés sur vous enseigner la base de code et le fonctionnement de Claude :

16 

17* **Explanatory** : Fournit des « Insights » éducatifs entre les tâches d'ingénierie logicielle pour vous aider à les accomplir. Vous aide à comprendre les choix d'implémentation et les modèles de base de code.

18 

19* **Learning** : Mode collaboratif d'apprentissage par la pratique où Claude ne partagera pas seulement des « Insights » lors du codage, mais vous demandera également de contribuer à de petits éléments de code stratégiques. Claude Code ajoutera des marqueurs `TODO(human)` dans votre code pour que vous les implémentiez.

20 

21## Fonctionnement des styles de sortie

22 

23Les styles de sortie modifient directement l'invite système de Claude Code.

24 

25* Les styles de sortie personnalisés excluent les instructions de codage (comme la vérification du code avec des tests), sauf si `keep-coding-instructions` est true.

26* Tous les styles de sortie ont leurs propres instructions personnalisées ajoutées à la fin de l'invite système.

27* Tous les styles de sortie déclenchent des rappels pour que Claude adhère aux instructions du style de sortie pendant la conversation.

28 

29L'utilisation des tokens dépend du style. L'ajout d'instructions à l'invite système augmente les tokens d'entrée, bien que la mise en cache des invites réduise ce coût après la première requête d'une session. Les styles Explanatory et Learning intégrés produisent des réponses plus longues que Default par conception, ce qui augmente les tokens de sortie. Pour les styles personnalisés, l'utilisation des tokens de sortie dépend de ce que vos instructions demandent à Claude de produire.

30 

31## Modifier votre style de sortie

32 

33Exécutez `/config` et sélectionnez **Output style** pour choisir un style dans un menu. Votre sélection est enregistrée dans `.claude/settings.local.json` au [niveau du projet local](/fr/settings).

34 

35Pour définir un style sans le menu, modifiez directement le champ `outputStyle` dans un fichier de paramètres :

36 

37```json theme={null}

38{

39 "outputStyle": "Explanatory"

40}

41```

42 

43Comme le style de sortie est défini dans l'invite système au démarrage de la session, les modifications prennent effet la prochaine fois que vous démarrez une nouvelle session. Cela maintient l'invite système stable tout au long d'une conversation afin que la mise en cache des invites puisse réduire la latence et les coûts.

44 

45## Créer un style de sortie personnalisé

46 

47Les styles de sortie personnalisés sont des fichiers Markdown avec frontmatter et le texte qui sera ajouté à l'invite système :

48 

49```markdown theme={null}

50---

51name: My Custom Style

52description:

53 A brief description of what this style does, to be displayed to the user

54---

55 

56# Custom Style Instructions

57 

58You are an interactive CLI tool that helps users with software engineering

59tasks. [Your custom instructions here...]

60 

61## Specific Behaviors

62 

63[Define how the assistant should behave in this style...]

64```

65 

66Vous pouvez enregistrer ces fichiers au niveau utilisateur (`~/.claude/output-styles`) ou au niveau projet (`.claude/output-styles`).

67 

68### Frontmatter

69 

70Les fichiers de style de sortie prennent en charge frontmatter pour spécifier les métadonnées :

71 

72| Frontmatter | Objectif | Par défaut |

73| :------------------------- | :------------------------------------------------------------------------------------------ | :----------------------- |

74| `name` | Nom du style de sortie, s'il ne s'agit pas du nom du fichier | Hérité du nom du fichier |

75| `description` | Description du style de sortie, affichée dans le sélecteur `/config` | Aucun |

76| `keep-coding-instructions` | Indique s'il faut conserver les parties de l'invite système de Claude Code liées au codage. | false |

77 

78## Comparaisons avec les fonctionnalités connexes

79 

80### Styles de sortie vs. CLAUDE.md vs. --append-system-prompt

81 

82Les styles de sortie « désactivent » complètement les parties de l'invite système par défaut de Claude Code spécifiques à l'ingénierie logicielle. Ni CLAUDE.md ni `--append-system-prompt` ne modifient l'invite système par défaut de Claude Code. CLAUDE.md ajoute le contenu en tant que message utilisateur *suivant* l'invite système par défaut de Claude Code. `--append-system-prompt` ajoute le contenu à l'invite système.

83 

84### Styles de sortie vs. [Agents](/fr/sub-agents)

85 

86Les styles de sortie affectent directement la boucle d'agent principal et n'affectent que l'invite système. Les agents sont invoqués pour gérer des tâches spécifiques et peuvent inclure des paramètres supplémentaires tels que le modèle à utiliser, les outils disponibles et un contexte sur le moment d'utiliser l'agent.

87 

88### Styles de sortie vs. [Skills](/fr/skills)

89 

90Les styles de sortie modifient la façon dont Claude répond (formatage, ton, structure) et sont toujours actifs une fois sélectionnés. Les skills sont des invites spécifiques à une tâche que vous invoquez avec `/skill-name` ou que Claude charge automatiquement si pertinent. Utilisez les styles de sortie pour les préférences de formatage cohérentes ; utilisez les skills pour les flux de travail et les tâches réutilisables.

overview.md +875 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Aperçu de Claude Code

6 

7> Claude Code est un outil de codage agentique qui lit votre base de code, modifie les fichiers, exécute des commandes et s'intègre à vos outils de développement. Disponible dans votre terminal, IDE, application de bureau et navigateur.

8 

9export const InstallConfigurator = ({defaultSurface = 'terminal'}) => {

10 const TERM = {

11 mac: {

12 label: 'macOS / Linux',

13 cmd: 'curl -fsSL https://claude.ai/install.sh | bash'

14 },

15 win: {

16 label: 'Windows'

17 },

18 brew: {

19 label: 'Homebrew',

20 cmd: 'brew install --cask claude-code'

21 },

22 winget: {

23 label: 'WinGet',

24 cmd: 'winget install Anthropic.ClaudeCode'

25 }

26 };

27 const WIN_VARIANTS = {

28 ps: 'irm https://claude.ai/install.ps1 | iex',

29 cmd: 'curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd'

30 };

31 const TABS = [{

32 key: 'terminal',

33 label: 'Terminal'

34 }, {

35 key: 'desktop',

36 label: 'Desktop'

37 }, {

38 key: 'vscode',

39 label: 'VS Code'

40 }, {

41 key: 'jetbrains',

42 label: 'JetBrains'

43 }];

44 const ALT_TARGETS = {

45 desktop: {

46 name: 'Desktop',

47 tagline: 'The full agent in a native app for macOS and Windows.',

48 installLabel: 'Download the app',

49 installHref: 'https://claude.com/download?utm_source=claude_code&utm_medium=docs&utm_content=configurator_desktop_download',

50 guideHref: '/en/desktop-quickstart'

51 },

52 vscode: {

53 name: 'VS Code',

54 tagline: 'Review diffs, manage context, and chat without leaving your editor.',

55 installLabel: 'Install from Marketplace',

56 installHref: 'https://marketplace.visualstudio.com/items?itemName=anthropic.claude-code',

57 altCmd: 'code --install-extension anthropic.claude-code',

58 guideHref: '/en/vs-code'

59 },

60 jetbrains: {

61 name: 'JetBrains',

62 tagline: 'Native plugin for IntelliJ, PyCharm, WebStorm, and other JetBrains IDEs.',

63 installLabel: 'Install from Marketplace',

64 installHref: 'https://plugins.jetbrains.com/plugin/27310-claude-code-beta-',

65 guideHref: '/en/jetbrains'

66 }

67 };

68 const PROVIDERS = [{

69 key: 'anthropic',

70 label: 'Anthropic'

71 }, {

72 key: 'bedrock',

73 label: 'Amazon Bedrock'

74 }, {

75 key: 'foundry',

76 label: 'Microsoft Foundry'

77 }, {

78 key: 'vertex',

79 label: 'Google Vertex AI'

80 }];

81 const PROVIDER_NOTICE = {

82 bedrock: <>

83 <strong>Configure your AWS account first.</strong> Running on Bedrock

84 requires model access enabled in the AWS console and IAM credentials.{' '}

85 <a href="/en/amazon-bedrock">Bedrock setup guide →</a>

86 </>,

87 vertex: <>

88 <strong>Configure your GCP project first.</strong> Running on Vertex AI

89 requires the Vertex API enabled and a service account with the right

90 permissions.{' '}

91 <a href="/en/google-vertex-ai">Vertex setup guide →</a>

92 </>,

93 foundry: <>

94 <strong>Configure your Azure resources first.</strong> Running on

95 Microsoft Foundry requires an Azure subscription with a Foundry resource

96 and model deployments provisioned.{' '}

97 <a href="/en/microsoft-foundry">Foundry setup guide →</a>

98 </>

99 };

100 const iconCheck = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="3" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

101 <polyline points="20 6 9 17 4 12" />

102 </svg>;

103 const iconCopy = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

104 <rect x="9" y="9" width="13" height="13" rx="2" />

105 <path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" />

106 </svg>;

107 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

108 <line x1="5" y1="12" x2="19" y2="12" />

109 <polyline points="12 5 19 12 12 19" />

110 </svg>;

111 const iconArrowUpRight = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

112 <line x1="7" y1="17" x2="17" y2="7" />

113 <polyline points="7 7 17 7 17 17" />

114 </svg>;

115 const iconInfo = (size = 16) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

116 <circle cx="12" cy="12" r="10" />

117 <line x1="12" y1="16" x2="12" y2="12" />

118 <line x1="12" y1="8" x2="12.01" y2="8" />

119 </svg>;

120 const [target, setTarget] = useState(defaultSurface);

121 const [team, setTeam] = useState(false);

122 const [provider, setProvider] = useState('anthropic');

123 const [pkg, setPkg] = useState(() => (/Win/).test(navigator.userAgent) ? 'win' : 'mac');

124 const [winCmd, setWinCmd] = useState(false);

125 const [copied, setCopied] = useState(null);

126 const copyTimer = useRef(null);

127 const handleCopy = async (text, key) => {

128 try {

129 await navigator.clipboard.writeText(text);

130 } catch {

131 const ta = document.createElement('textarea');

132 ta.value = text;

133 document.body.appendChild(ta);

134 ta.select();

135 document.execCommand('copy');

136 document.body.removeChild(ta);

137 }

138 clearTimeout(copyTimer.current);

139 setCopied(key);

140 copyTimer.current = setTimeout(() => setCopied(null), 1800);

141 };

142 const cardBodyCmd = (cmd, prompt) => {

143 const on = copied === 'term';

144 return <div className="cc-ic-card-body">

145 <span className="cc-ic-prompt">{prompt || '$'}</span>

146 <div className="cc-ic-cmd">{cmd}</div>

147 <button type="button" className={'cc-ic-copy' + (on ? ' cc-ic-copied' : '')} onClick={() => handleCopy(cmd, 'term')}>

148 {on ? iconCheck(13) : iconCopy(13)}

149 <span>{on ? 'Copied' : 'Copy'}</span>

150 </button>

151 </div>;

152 };

153 const isWinInstaller = pkg === 'win';

154 const isWinPrompt = pkg === 'win' || pkg === 'winget';

155 const terminalCmd = isWinInstaller ? WIN_VARIANTS[winCmd ? 'cmd' : 'ps'] : TERM[pkg].cmd;

156 const alt = ALT_TARGETS[target];

157 const showNotice = team && provider !== 'anthropic';

158 const STYLES = `

159.cc-ic {

160 --ic-slate: #141413;

161 --ic-clay: #d97757;

162 --ic-clay-deep: #c6613f;

163 --ic-gray-000: #ffffff;

164 --ic-gray-150: #f0eee6;

165 --ic-gray-550: #73726c;

166 --ic-gray-700: #3d3d3a;

167 --ic-border-subtle: rgba(31, 30, 29, 0.08);

168 --ic-border-default: rgba(31, 30, 29, 0.15);

169 --ic-border-strong: rgba(31, 30, 29, 0.3);

170 --ic-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, 'Courier New', monospace;

171 font-family: 'Anthropic Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

172 font-size: 14px; line-height: 1.5; color: var(--ic-slate);

173 margin: 8px 0 32px;

174}

175.dark .cc-ic {

176 --ic-slate: #f0eee6;

177 --ic-gray-000: #262624;

178 --ic-gray-150: #1f1e1d;

179 --ic-gray-550: #91908a;

180 --ic-gray-700: #bfbdb4;

181 --ic-border-subtle: rgba(240, 238, 230, 0.08);

182 --ic-border-default: rgba(240, 238, 230, 0.14);

183 --ic-border-strong: rgba(240, 238, 230, 0.28);

184}

185.dark .cc-ic-check { background: transparent; }

186.dark .cc-ic-card { border: 0.5px solid var(--ic-border-subtle); }

187.dark .cc-ic-p-pill.cc-ic-active { box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); }

188.cc-ic *, .cc-ic *::before, .cc-ic *::after { box-sizing: border-box; }

189.cc-ic a { text-decoration: none; }

190.cc-ic a:not([class]) { color: inherit; }

191.cc-ic button { font-family: inherit; cursor: pointer; }

192 

193.cc-ic-tab-strip {

194 display: inline-flex; gap: 2px;

195 padding: 4px; background: var(--ic-gray-150);

196 border-radius: 10px; overflow-x: auto;

197 max-width: 100%;

198}

199.cc-ic-tab {

200 appearance: none; background: none; border: none;

201 padding: 10px 18px; font-size: 15px; font-weight: 430;

202 color: var(--ic-gray-550); border-radius: 7px;

203 white-space: nowrap;

204 transition: color 0.12s, background-color 0.12s;

205}

206.cc-ic-tab:hover { color: var(--ic-gray-700); }

207.cc-ic-tab.cc-ic-active {

208 color: var(--ic-slate); font-weight: 500;

209 background: var(--ic-gray-000);

210 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);

211}

212.dark .cc-ic-tab.cc-ic-active { box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); }

213 

214.cc-ic-team-wrap { padding: 16px 0 20px; }

215.cc-ic-team-toggle {

216 display: flex; align-items: center; gap: 12px; font-family: inherit;

217 padding: 12px 16px; font-size: 14px; font-weight: 430;

218 color: var(--ic-gray-700); cursor: pointer; user-select: none;

219 width: fit-content; background: var(--ic-gray-150);

220 border: 0.5px solid var(--ic-border-subtle); border-radius: 8px;

221 transition: border-color 0.15s;

222}

223.cc-ic-team-toggle:hover { border-color: var(--ic-border-default); }

224.cc-ic-team-toggle.cc-ic-checked {

225 background: rgba(217, 119, 87, 0.08);

226 border-color: rgba(217, 119, 87, 0.25);

227}

228.cc-ic-check {

229 width: 16px; height: 16px;

230 border: 1px solid var(--ic-border-strong); border-radius: 4px;

231 background: var(--ic-gray-000);

232 display: flex; align-items: center; justify-content: center;

233 flex-shrink: 0;

234}

235.cc-ic-check svg { color: #fff; display: none; }

236.cc-ic-team-toggle.cc-ic-checked .cc-ic-check { background: var(--ic-clay-deep); border-color: var(--ic-clay-deep); }

237.cc-ic-team-toggle.cc-ic-checked .cc-ic-check svg { display: block; }

238 

239.cc-ic-team-reveal { display: flex; flex-direction: column; gap: 12px; margin-bottom: 16px; }

240.cc-ic-sales {

241 display: flex; align-items: center; justify-content: space-between;

242 gap: 16px; padding: 14px 16px;

243 background: var(--ic-gray-000); border: 0.5px solid var(--ic-border-default);

244 border-radius: 8px; flex-wrap: wrap;

245}

246.cc-ic-sales-text { font-size: 13px; color: var(--ic-gray-700); line-height: 1.5; flex: 1; min-width: 200px; }

247.cc-ic-sales-text strong { font-weight: 550; color: var(--ic-slate); }

248.cc-ic-sales-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

249.cc-ic-btn-clay {

250 display: inline-flex; align-items: center; gap: 8px;

251 background: var(--ic-clay-deep); color: #fff; border: none;

252 border-radius: 8px; padding: 8px 14px;

253 font-size: 13px; font-weight: 500;

254 transition: background-color 0.15s; white-space: nowrap;

255}

256.cc-ic-btn-clay:hover { background: var(--ic-clay); }

257.cc-ic-btn-ghost {

258 display: inline-flex; align-items: center; gap: 8px;

259 background: transparent; color: var(--ic-gray-700);

260 border: 0.5px solid var(--ic-border-default);

261 border-radius: 8px; padding: 8px 14px;

262 font-size: 13px; font-weight: 500;

263}

264.cc-ic-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

265 

266.cc-ic-provider-bar {

267 display: flex; align-items: center; gap: 12px;

268 padding: 14px 16px; background: var(--ic-gray-150);

269 border-radius: 8px; font-size: 13px; flex-wrap: wrap;

270}

271.cc-ic-provider-bar .cc-ic-label { color: var(--ic-gray-550); flex-shrink: 0; }

272.cc-ic-provider-pills { display: flex; gap: 4px; flex-wrap: wrap; }

273.cc-ic-p-pill {

274 appearance: none; border: none; background: transparent;

275 padding: 6px 12px; border-radius: 6px;

276 font-size: 13px; font-weight: 430; color: var(--ic-gray-700);

277 white-space: nowrap;

278}

279.cc-ic-p-pill:hover { background: rgba(0, 0, 0, 0.04); }

280.cc-ic-p-pill.cc-ic-active {

281 background: var(--ic-gray-000); color: var(--ic-slate);

282 font-weight: 500; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);

283}

284.cc-ic-provider-notice {

285 display: flex; padding: 16px 18px;

286 background: var(--ic-gray-000); border: 0.5px solid var(--ic-border-default);

287 border-radius: 8px; gap: 14px; align-items: flex-start;

288}

289.cc-ic-provider-notice > svg { color: var(--ic-gray-550); margin-top: 2px; flex-shrink: 0; }

290.cc-ic-provider-notice-body { font-size: 14px; line-height: 1.55; color: var(--ic-gray-700); }

291.cc-ic-provider-notice-body strong { font-weight: 550; color: var(--ic-slate); }

292.cc-ic-provider-notice-body a { color: var(--ic-clay-deep); font-weight: 500; }

293.cc-ic-provider-notice-body a:hover { text-decoration: underline; }

294 

295.cc-ic-card { background: #141413; border-radius: 12px; overflow: hidden; }

296.cc-ic-subtabs {

297 display: flex; align-items: center;

298 background: #1a1918;

299 border-bottom: 0.5px solid rgba(255, 255, 255, 0.08);

300 padding: 0 8px; overflow-x: auto;

301}

302.cc-ic-subtab {

303 appearance: none; background: none; border: none;

304 padding: 12px 16px; font-size: 12px;

305 color: rgba(255, 255, 255, 0.5);

306 position: relative; white-space: nowrap;

307}

308.cc-ic-subtab:hover { color: rgba(255, 255, 255, 0.75); }

309.cc-ic-subtab.cc-ic-active { color: #fff; }

310.cc-ic-subtab.cc-ic-active::after {

311 content: ''; position: absolute;

312 left: 12px; right: 12px; bottom: -0.5px;

313 height: 2px; background: var(--ic-clay);

314}

315.cc-ic-shell-switch {

316 display: inline-flex; gap: 2px;

317 margin: 14px 26px 0; padding: 3px;

318 background: rgba(255, 255, 255, 0.06);

319 border: 0.5px solid rgba(255, 255, 255, 0.08);

320 border-radius: 8px;

321 font-family: inherit;

322}

323.cc-ic-shell-option {

324 font: inherit; font-size: 12px; font-weight: 500;

325 padding: 5px 12px; border-radius: 6px;

326 background: transparent; border: none;

327 color: rgba(255, 255, 255, 0.55);

328 cursor: pointer; user-select: none; white-space: nowrap;

329 transition: color 120ms ease, background-color 120ms ease;

330}

331.cc-ic-shell-option:hover { color: rgba(255, 255, 255, 0.85); }

332.cc-ic-shell-option.cc-ic-active {

333 background: rgba(255, 255, 255, 0.12);

334 color: #fff;

335 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);

336}

337 

338.cc-ic-card-body { padding: 24px 26px; display: flex; align-items: flex-start; gap: 14px; }

339.cc-ic-prompt {

340 color: var(--ic-clay); font-family: var(--ic-font-mono);

341 font-size: 17px; user-select: none; padding-top: 2px;

342}

343.cc-ic-cmd {

344 flex: 1; font-family: var(--ic-font-mono);

345 font-size: 17px; color: #f0eee6;

346 line-height: 1.55; white-space: pre-wrap; word-break: break-word;

347}

348.cc-ic-copy {

349 display: inline-flex; align-items: center; gap: 6px;

350 background: rgba(255, 255, 255, 0.08);

351 border: 0.5px solid rgba(255, 255, 255, 0.12);

352 color: rgba(255, 255, 255, 0.85);

353 padding: 7px 13px; border-radius: 8px;

354 font-size: 13px; font-weight: 500; flex-shrink: 0;

355}

356.cc-ic-copy:hover { background: rgba(255, 255, 255, 0.14); }

357.cc-ic-copy.cc-ic-copied { background: var(--ic-clay-deep); border-color: var(--ic-clay-deep); color: #fff; }

358 

359.cc-ic-below {

360 margin-top: 12px; font-size: 13px; color: var(--ic-gray-550);

361 display: flex; gap: 16px; flex-wrap: wrap; align-items: baseline;

362}

363.cc-ic-below a { color: var(--ic-gray-700); border-bottom: 0.5px solid var(--ic-border-default); }

364.cc-ic-below a:hover { color: var(--ic-clay-deep); border-bottom-color: var(--ic-clay-deep); }

365.cc-ic-handoff {

366 padding: 22px 24px;

367 background: linear-gradient(180deg, #faf9f4 0%, #f3f1e9 100%);

368 border: 0.5px solid var(--ic-border-default);

369 border-radius: 12px;

370 box-shadow: 0 1px 2px rgba(31, 30, 29, 0.04), 0 6px 16px -4px rgba(31, 30, 29, 0.06);

371}

372.dark .cc-ic-handoff {

373 background: linear-gradient(180deg, #262624 0%, #1f1e1d 100%);

374 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3), 0 6px 16px -4px rgba(0, 0, 0, 0.4);

375}

376.cc-ic-handoff-title {

377 font-size: 16px; font-weight: 550; color: var(--ic-slate);

378 letter-spacing: -0.01em; margin-bottom: 4px;

379}

380.cc-ic-handoff-sub {

381 font-size: 14px; line-height: 1.5; color: var(--ic-gray-700);

382 margin-bottom: 18px;

383}

384.cc-ic-handoff-actions { display: flex; gap: 10px; flex-wrap: wrap; }

385.cc-ic-handoff-alt {

386 margin-top: 12px; font-size: 12px; color: var(--ic-gray-550);

387}

388.cc-ic-handoff-alt code {

389 font-family: var(--ic-font-mono); font-size: 11px;

390 background: var(--ic-gray-150); padding: 2px 6px;

391 border-radius: 4px; color: var(--ic-gray-700);

392}

393.cc-ic-copy-sm {

394 appearance: none; border: none;

395 display: inline-flex; align-items: center; justify-content: center;

396 width: 22px; height: 22px;

397 margin-left: 4px; vertical-align: middle;

398 background: var(--ic-gray-150); color: var(--ic-gray-550);

399 border-radius: 4px;

400 transition: color 0.1s, background-color 0.1s;

401}

402.cc-ic-copy-sm:hover { color: var(--ic-gray-700); background: var(--ic-border-default); }

403.cc-ic-copy-sm.cc-ic-copied { background: var(--ic-clay-deep); color: #fff; }

404 

405@media (max-width: 720px) {

406 .cc-ic-tab { padding: 12px 14px; font-size: 14px; }

407 .cc-ic-sales-actions { width: 100%; }

408 .cc-ic-card-body { padding: 20px; }

409 .cc-ic-cmd { font-size: 15px; }

410}

411`;

412 return <div className="cc-ic not-prose">

413 <style>{STYLES}</style>

414 

415 {}

416 <div className="cc-ic-tab-strip" role="tablist">

417 {TABS.map(t => <button key={t.key} type="button" role="tab" aria-selected={target === t.key} className={'cc-ic-tab' + (target === t.key ? ' cc-ic-active' : '')} onClick={() => setTarget(t.key)}>

418 {t.label}

419 </button>)}

420 </div>

421 

422 {}

423 <div className="cc-ic-team-wrap">

424 <button type="button" role="switch" aria-checked={team} className={'cc-ic-team-toggle' + (team ? ' cc-ic-checked' : '')} onClick={() => setTeam(!team)}>

425 <span className="cc-ic-check">{iconCheck(11)}</span>

426 <span>

427 I’m buying for a team or company (SSO, AWS/Azure/GCP, central billing)

428 </span>

429 </button>

430 </div>

431 

432 {}

433 {team && <div className="cc-ic-team-reveal">

434 <div className="cc-ic-sales">

435 <div className="cc-ic-sales-text">

436 <strong>Set up your team:</strong> self-serve or talk to sales.

437 </div>

438 <div className="cc-ic-sales-actions">

439 <a href="https://claude.ai/upgrade?initialPlanType=team&amp;utm_source=claude_code&amp;utm_medium=docs&amp;utm_content=configurator_team_get_started" className="cc-ic-btn-ghost">

440 Get started

441 </a>

442 <a href="https://www.anthropic.com/contact-sales?utm_source=claude_code&amp;utm_medium=docs&amp;utm_content=configurator_team_contact_sales" className="cc-ic-btn-clay">

443 Contact sales {iconArrowRight()}

444 </a>

445 </div>

446 </div>

447 

448 <div className="cc-ic-provider-bar">

449 <span className="cc-ic-label">Run on</span>

450 <div className="cc-ic-provider-pills" role="radiogroup" aria-label="Provider">

451 {PROVIDERS.map(p => <button key={p.key} type="button" role="radio" aria-checked={provider === p.key} className={'cc-ic-p-pill' + (provider === p.key ? ' cc-ic-active' : '')} onClick={() => setProvider(p.key)}>

452 {p.label}

453 </button>)}

454 </div>

455 </div>

456 

457 {showNotice && <div className="cc-ic-provider-notice">

458 {iconInfo()}

459 <div className="cc-ic-provider-notice-body">

460 {PROVIDER_NOTICE[provider]}

461 </div>

462 </div>}

463 </div>}

464 

465 {}

466 {target === 'terminal' && <div className="cc-ic-card">

467 <div className="cc-ic-subtabs" role="tablist" aria-label="Install method">

468 {Object.keys(TERM).map(k => <button key={k} type="button" role="tab" aria-selected={pkg === k} className={'cc-ic-subtab' + (pkg === k ? ' cc-ic-active' : '')} onClick={() => setPkg(k)}>

469 {TERM[k].label}

470 </button>)}

471 </div>

472 {isWinInstaller && <div className="cc-ic-shell-switch" role="tablist" aria-label="Shell">

473 {[{

474 k: 'ps',

475 label: 'PowerShell'

476 }, {

477 k: 'cmd',

478 label: 'CMD'

479 }].map(({k, label}) => {

480 const active = k === 'cmd' === winCmd;

481 return <button key={k} type="button" role="tab" aria-selected={active} className={'cc-ic-shell-option' + (active ? ' cc-ic-active' : '')} onClick={() => setWinCmd(k === 'cmd')}>

482 {label}

483 </button>;

484 })}

485 </div>}

486 {cardBodyCmd(terminalCmd, isWinPrompt ? '>' : '$')}

487 </div>}

488 

489 {}

490 {target === 'terminal' && <div className="cc-ic-below">

491 {isWinInstaller && <span>

492 <a href="https://git-scm.com/downloads/win" target="_blank" rel="noopener">

493 Git for Windows

494 </a>{' '}

495 recommended. PowerShell is used if Git Bash is absent.

496 </span>}

497 {(pkg === 'brew' || pkg === 'winget') && <span>

498 Does not auto-update. Run{' '}

499 <code>{pkg === 'brew' ? 'brew upgrade claude-code' : 'winget upgrade Anthropic.ClaudeCode'}</code>{' '}

500 periodically.

501 </span>}

502 <a href="/en/troubleshoot-install">Installation troubleshooting</a>

503 </div>}

504 

505 {alt && <div className="cc-ic-handoff">

506 <div className="cc-ic-handoff-title">Claude Code for {alt.name}</div>

507 <div className="cc-ic-handoff-sub">{alt.tagline}</div>

508 <div className="cc-ic-handoff-actions">

509 <a href={alt.installHref} className="cc-ic-btn-clay" {...alt.installHref.startsWith('http') ? {

510 target: '_blank',

511 rel: 'noopener'

512 } : {}}>

513 {alt.installLabel} {iconArrowUpRight(13)}

514 </a>

515 <a href={alt.guideHref} className="cc-ic-btn-ghost">

516 {alt.name} guide {iconArrowRight(12)}

517 </a>

518 </div>

519 {alt.altCmd && <div className="cc-ic-handoff-alt">

520 or run <code>{alt.altCmd}</code>

521 <button type="button" className={'cc-ic-copy-sm' + (copied === 'alt' ? ' cc-ic-copied' : '')} onClick={() => handleCopy(alt.altCmd, 'alt')} aria-label="Copy command">

522 {copied === 'alt' ? iconCheck(11) : iconCopy(11)}

523 </button>

524 </div>}

525 </div>}

526 </div>;

527};

528 

529export const Experiment = ({flag, treatment, children}) => {

530 const VID_KEY = 'exp_vid';

531 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

532 const fnv1a = s => {

533 let h = 0x811c9dc5;

534 for (let i = 0; i < s.length; i++) {

535 h ^= s.charCodeAt(i);

536 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

537 }

538 return h >>> 0;

539 };

540 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

541 const [decision] = useState(() => {

542 const params = new URLSearchParams(location.search);

543 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

544 const force = params.get('gb-force');

545 if (force) {

546 for (const p of force.split(',')) {

547 const [k, v] = p.split(':');

548 if (k === flag) return {

549 variant: v || 'treatment',

550 track: false

551 };

552 }

553 }

554 if (navigator.globalPrivacyControl) {

555 return {

556 variant: 'control',

557 track: false

558 };

559 }

560 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

561 if (prefsMatch) {

562 try {

563 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

564 return {

565 variant: 'control',

566 track: false

567 };

568 }

569 } catch {

570 return {

571 variant: 'control',

572 track: false

573 };

574 }

575 } else {

576 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

577 if (!country || CONSENT_COUNTRIES.has(country)) {

578 return {

579 variant: 'control',

580 track: false

581 };

582 }

583 }

584 let vid;

585 try {

586 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

587 if (ajsMatch) {

588 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

589 } else {

590 vid = localStorage.getItem(VID_KEY);

591 if (!vid) {

592 vid = crypto.randomUUID();

593 }

594 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

595 }

596 try {

597 localStorage.setItem(VID_KEY, vid);

598 } catch {}

599 } catch {

600 return {

601 variant: 'control',

602 track: false

603 };

604 }

605 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

606 return {

607 variant,

608 track: true,

609 vid

610 };

611 });

612 useEffect(() => {

613 if (!decision.track) return;

614 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

615 method: 'POST',

616 headers: {

617 'Content-Type': 'application/json',

618 'x-service-name': 'claude_code_docs'

619 },

620 body: JSON.stringify({

621 events: [{

622 event_type: 'GrowthbookExperimentEvent',

623 event_data: {

624 device_id: decision.vid,

625 anonymous_id: decision.vid,

626 timestamp: new Date().toISOString(),

627 experiment_id: flag,

628 variation_id: decision.variant === 'treatment' ? 1 : 0,

629 environment: 'production'

630 }

631 }]

632 }),

633 keepalive: true

634 }).catch(() => {});

635 }, []);

636 return decision.variant === 'treatment' ? treatment : children;

637};

638 

639Claude Code est un assistant de codage alimenté par l'IA qui vous aide à créer des fonctionnalités, corriger des bogues et automatiser les tâches de développement. Il comprend l'ensemble de votre base de code et peut travailler sur plusieurs fichiers et outils pour accomplir les tâches.

640 

641<div data-gb-slot="overview-install-configurator">

642 <Experiment flag="overview-install-configurator" treatment={<InstallConfigurator />} />

643</div>

644 

645## Commencer

646 

647Choisissez votre environnement pour commencer. La plupart des surfaces nécessitent un [abonnement Claude](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=overview_pricing) ou un compte [Anthropic Console](https://console.anthropic.com/). Le CLI Terminal et VS Code prennent également en charge les [fournisseurs tiers](/fr/third-party-integrations).

648 

649<Tabs>

650 <Tab title="Terminal">

651 Le CLI complet pour travailler avec Claude Code directement dans votre terminal. Modifiez les fichiers, exécutez des commandes et gérez l'ensemble de votre projet à partir de la ligne de commande.

652 

653 To install Claude Code, use one of the following methods:

654 

655 <Tabs>

656 <Tab title="Native Install (Recommended)">

657 **macOS, Linux, WSL:**

658 

659 ```bash theme={null}

660 curl -fsSL https://claude.ai/install.sh | bash

661 ```

662 

663 **Windows PowerShell:**

664 

665 ```powershell theme={null}

666 irm https://claude.ai/install.ps1 | iex

667 ```

668 

669 **Windows CMD:**

670 

671 ```batch theme={null}

672 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

673 ```

674 

675 If you see `The token '&&' is not a valid statement separator`, you're in PowerShell, not CMD. If you see `'irm' is not recognized as an internal or external command`, you're in CMD, not PowerShell. Your prompt shows `PS C:\` when you're in PowerShell and `C:\` without the `PS` when you're in CMD.

676 

677 [Git for Windows](https://git-scm.com/downloads/win) is recommended on native Windows so Claude Code can use the Bash tool. If Git for Windows is not installed, Claude Code uses PowerShell as the shell tool instead. WSL setups do not need Git for Windows.

678 

679 <Info>

680 Native installations automatically update in the background to keep you on the latest version.

681 </Info>

682 </Tab>

683 

684 <Tab title="Homebrew">

685 ```bash theme={null}

686 brew install --cask claude-code

687 ```

688 

689 Homebrew offers two casks. `claude-code` tracks the stable release channel, which is typically about a week behind and skips releases with major regressions. `claude-code@latest` tracks the latest channel and receives new versions as soon as they ship.

690 

691 <Info>

692 Homebrew installations do not auto-update. Run `brew upgrade claude-code` or `brew upgrade claude-code@latest`, depending on which cask you installed, to get the latest features and security fixes.

693 </Info>

694 </Tab>

695 

696 <Tab title="WinGet">

697 ```powershell theme={null}

698 winget install Anthropic.ClaudeCode

699 ```

700 

701 <Info>

702 WinGet installations do not auto-update. Run `winget upgrade Anthropic.ClaudeCode` periodically to get the latest features and security fixes.

703 </Info>

704 </Tab>

705 </Tabs>

706 

707 You can also install with [apt, dnf, or apk](/en/setup#install-with-linux-package-managers) on Debian, Fedora, RHEL, and Alpine.

708 

709 Ensuite, démarrez Claude Code dans n'importe quel projet :

710 

711 ```bash theme={null}

712 cd your-project

713 claude

714 ```

715 

716 Vous serez invité à vous connecter lors de la première utilisation. C'est tout ! [Continuez avec le Démarrage rapide →](/fr/quickstart)

717 

718 <Tip>

719 Consultez la [configuration avancée](/fr/setup) pour les options d'installation, les mises à jour manuelles ou les instructions de désinstallation. Visitez la [résolution des problèmes d'installation](/fr/troubleshoot-install) si vous rencontrez des problèmes.

720 </Tip>

721 </Tab>

722 

723 <Tab title="VS Code">

724 L'extension VS Code fournit des diffs en ligne, des mentions @, un examen du plan et l'historique des conversations directement dans votre éditeur.

725 

726 * [Installer pour VS Code](vscode:extension/anthropic.claude-code)

727 * [Installer pour Cursor](cursor:extension/anthropic.claude-code)

728 

729 Ou recherchez « Claude Code » dans la vue Extensions (`Cmd+Shift+X` sur Mac, `Ctrl+Shift+X` sur Windows/Linux). Après l'installation, ouvrez la Palette de commandes (`Cmd+Shift+P` / `Ctrl+Shift+P`), tapez « Claude Code » et sélectionnez **Ouvrir dans un nouvel onglet**.

730 

731 [Commencer avec VS Code →](/fr/vs-code#get-started)

732 </Tab>

733 

734 <Tab title="Application de bureau">

735 Une application autonome pour exécuter Claude Code en dehors de votre IDE ou terminal. Examinez les diffs visuellement, exécutez plusieurs sessions côte à côte, planifiez des tâches récurrentes et lancez des sessions cloud.

736 

737 Téléchargez et installez :

738 

739 * [macOS](https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code\&utm_medium=docs) (Intel et Apple Silicon)

740 * [Windows](https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs) (x64)

741 * [Windows ARM64](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs)

742 

743 Après l'installation, lancez Claude, connectez-vous et cliquez sur l'onglet **Code** pour commencer à coder. Un [abonnement payant](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=overview_desktop_pricing) est requis.

744 

745 [En savoir plus sur l'application de bureau →](/fr/desktop-quickstart)

746 </Tab>

747 

748 <Tab title="Web">

749 Exécutez Claude Code dans votre navigateur sans configuration locale. Lancez des tâches longues et revenez quand elles sont terminées, travaillez sur des dépôts que vous n'avez pas localement ou exécutez plusieurs tâches en parallèle. Disponible sur les navigateurs de bureau et l'application Claude iOS.

750 

751 Commencez à coder sur [claude.ai/code](https://claude.ai/code).

752 

753 [Commencer sur le web →](/fr/web-quickstart)

754 </Tab>

755 

756 <Tab title="JetBrains">

757 Un plugin pour IntelliJ IDEA, PyCharm, WebStorm et autres IDE JetBrains avec visualisation interactive des diffs et partage du contexte de sélection.

758 

759 Installez le [plugin Claude Code](https://plugins.jetbrains.com/plugin/27310-claude-code-beta-) depuis la Marketplace JetBrains et redémarrez votre IDE.

760 

761 [Commencer avec JetBrains →](/fr/jetbrains)

762 </Tab>

763</Tabs>

764 

765## Ce que vous pouvez faire

766 

767Voici quelques-unes des façons dont vous pouvez utiliser Claude Code :

768 

769<AccordionGroup>

770 <Accordion title="Automatiser le travail que vous reprenez sans cesse" icon="wand-magic-sparkles">

771 Claude Code gère les tâches fastidieuses qui vous prennent du temps : écrire des tests pour le code non testé, corriger les erreurs de lint dans un projet, résoudre les conflits de fusion, mettre à jour les dépendances et écrire les notes de version.

772 

773 ```bash theme={null}

774 claude "write tests for the auth module, run them, and fix any failures"

775 ```

776 </Accordion>

777 

778 <Accordion title="Créer des fonctionnalités et corriger des bogues" icon="hammer">

779 Décrivez ce que vous voulez en langage naturel. Claude Code planifie l'approche, écrit le code sur plusieurs fichiers et vérifie qu'il fonctionne.

780 

781 Pour les bogues, collez un message d'erreur ou décrivez le symptôme. Claude Code trace le problème dans votre base de code, identifie la cause racine et implémente une correction. Consultez les [flux de travail courants](/fr/common-workflows) pour plus d'exemples.

782 </Accordion>

783 

784 <Accordion title="Créer des commits et des demandes de tirage" icon="code-branch">

785 Claude Code fonctionne directement avec git. Il prépare les modifications, écrit les messages de commit, crée des branches et ouvre des demandes de tirage.

786 

787 ```bash theme={null}

788 claude "commit my changes with a descriptive message"

789 ```

790 

791 En CI, vous pouvez automatiser l'examen du code et le triage des problèmes avec [GitHub Actions](/fr/github-actions) ou [GitLab CI/CD](/fr/gitlab-ci-cd).

792 </Accordion>

793 

794 <Accordion title="Connecter vos outils avec MCP" icon="plug">

795 Le [Model Context Protocol (MCP)](/fr/mcp) est une norme ouverte pour connecter les outils d'IA aux sources de données externes. Avec MCP, Claude Code peut lire vos documents de conception dans Google Drive, mettre à jour les tickets dans Jira, extraire les données de Slack ou utiliser vos outils personnalisés.

796 </Accordion>

797 

798 <Accordion title="Personnaliser avec des instructions, des skills et des hooks" icon="sliders">

799 [`CLAUDE.md`](/fr/memory) est un fichier markdown que vous ajoutez à la racine de votre projet que Claude Code lit au début de chaque session. Utilisez-le pour définir les normes de codage, les décisions architecturales, les bibliothèques préférées et les listes de contrôle d'examen. Claude construit également une [mémoire automatique](/fr/memory#auto-memory) au fur et à mesure qu'il travaille, en sauvegardant les apprentissages comme les commandes de construction et les informations de débogage entre les sessions sans que vous ayez à écrire quoi que ce soit.

800 

801 Créez des [commandes personnalisées](/fr/skills) pour empaqueter les flux de travail répétables que votre équipe peut partager, comme `/review-pr` ou `/deploy-staging`.

802 

803 Les [hooks](/fr/hooks) vous permettent d'exécuter des commandes shell avant ou après les actions de Claude Code, comme le formatage automatique après chaque modification de fichier ou l'exécution de lint avant un commit.

804 </Accordion>

805 

806 <Accordion title="Exécuter des équipes d'agents et créer des agents personnalisés" icon="users">

807 Lancez [plusieurs agents Claude Code](/fr/sub-agents) qui travaillent sur différentes parties d'une tâche simultanément. Un agent principal coordonne le travail, assigne les sous-tâches et fusionne les résultats.

808 

809 Pour les flux de travail entièrement personnalisés, le [Agent SDK](/fr/agent-sdk/overview) vous permet de créer vos propres agents alimentés par les outils et capacités de Claude Code, avec un contrôle total sur l'orchestration, l'accès aux outils et les permissions.

810 </Accordion>

811 

812 <Accordion title="Piping, scripts et automatisation avec le CLI" icon="terminal">

813 Claude Code est composable et suit la philosophie Unix. Canalisez les journaux dedans, exécutez-le en CI ou chaînez-le avec d'autres outils :

814 

815 ```bash theme={null}

816 # Analyser la sortie récente des journaux

817 tail -200 app.log | claude -p "Slack me if you see any anomalies"

818 

819 # Automatiser les traductions en CI

820 claude -p "translate new strings into French and raise a PR for review"

821 

822 # Opérations en masse sur les fichiers

823 git diff main --name-only | claude -p "review these changed files for security issues"

824 ```

825 

826 Consultez la [référence CLI](/fr/cli-reference) pour l'ensemble complet des commandes et des drapeaux.

827 </Accordion>

828 

829 <Accordion title="Planifier des tâches récurrentes" icon="clock">

830 Exécutez Claude selon un calendrier pour automatiser le travail qui se répète : examens de PR le matin, analyse des défaillances CI pendant la nuit, audits de dépendances hebdomadaires ou synchronisation des documents après la fusion des PR.

831 

832 * Les [Routines](/fr/routines) s'exécutent sur l'infrastructure gérée par Anthropic, elles continuent donc à s'exécuter même quand votre ordinateur est éteint. Elles peuvent également être déclenchées par des appels API ou des événements GitHub. Créez-les à partir du web, de l'application de bureau ou en exécutant `/schedule` dans le CLI.

833 * Les [tâches planifiées de bureau](/fr/desktop-scheduled-tasks) s'exécutent sur votre machine, avec un accès direct à vos fichiers et outils locaux

834 * [`/loop`](/fr/scheduled-tasks) répète une invite dans une session CLI pour un sondage rapide

835 </Accordion>

836 

837 <Accordion title="Travailler de n'importe où" icon="globe">

838 Les sessions ne sont pas liées à une seule surface. Déplacez le travail entre les environnements à mesure que votre contexte change :

839 

840 * Éloignez-vous de votre bureau et continuez à travailler depuis votre téléphone ou n'importe quel navigateur avec [Contrôle à distance](/fr/remote-control)

841 * Envoyez un message à [Dispatch](/fr/desktop#sessions-from-dispatch) une tâche depuis votre téléphone et ouvrez la session de bureau qu'il crée

842 * Lancez une tâche longue sur le [web](/fr/claude-code-on-the-web) ou l'[application iOS](https://apps.apple.com/app/claude-by-anthropic/id6473753684), puis tirez-la dans votre terminal avec `claude --teleport`

843 * Remettez une session de terminal à l'[application de bureau](/fr/desktop) avec `/desktop` pour un examen visuel des diffs

844 * Acheminez les tâches depuis le chat d'équipe : mentionnez `@Claude` dans [Slack](/fr/slack) avec un rapport de bogue et récupérez une demande de tirage

845 </Accordion>

846</AccordionGroup>

847 

848## Utiliser Claude Code partout

849 

850Chaque surface se connecte au même moteur Claude Code sous-jacent, donc vos fichiers CLAUDE.md, paramètres et serveurs MCP fonctionnent sur tous.

851 

852Au-delà des environnements [Terminal](/fr/quickstart), [VS Code](/fr/vs-code), [JetBrains](/fr/jetbrains), [Desktop](/fr/desktop) et [Web](/fr/claude-code-on-the-web) ci-dessus, Claude Code s'intègre avec les flux de travail CI/CD, chat et navigateur :

853 

854| Je veux... | Meilleure option |

855| ---------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |

856| Continuer une session locale depuis mon téléphone ou un autre appareil | [Contrôle à distance](/fr/remote-control) |

857| Envoyer des événements de Telegram, Discord, iMessage ou mes propres webhooks dans une session | [Canaux](/fr/channels) |

858| Démarrer une tâche localement, continuer sur mobile | [Web](/fr/claude-code-on-the-web) ou [application Claude iOS](https://apps.apple.com/app/claude-by-anthropic/id6473753684) |

859| Exécuter Claude selon un calendrier récurrent | [Routines](/fr/routines) ou [Tâches planifiées de bureau](/fr/desktop-scheduled-tasks) |

860| Automatiser les examens de PR et le triage des problèmes | [GitHub Actions](/fr/github-actions) ou [GitLab CI/CD](/fr/gitlab-ci-cd) |

861| Obtenir un examen automatique du code sur chaque PR | [Examen du code GitHub](/fr/code-review) |

862| Acheminer les rapports de bogues de Slack vers les demandes de tirage | [Slack](/fr/slack) |

863| Déboguer les applications web en direct | [Chrome](/fr/chrome) |

864| Créer des agents personnalisés pour vos propres flux de travail | [Agent SDK](/fr/agent-sdk/overview) |

865 

866## Étapes suivantes

867 

868Une fois que vous avez installé Claude Code, ces guides vous aident à approfondir.

869 

870* [Démarrage rapide](/fr/quickstart) : parcourez votre première tâche réelle, de l'exploration d'une base de code à la validation d'une correction

871* [Stocker les instructions et les mémoires](/fr/memory) : donnez à Claude des instructions persistantes avec les fichiers CLAUDE.md et la mémoire automatique

872* [Flux de travail courants](/fr/common-workflows) et [meilleures pratiques](/fr/best-practices) : modèles pour tirer le meilleur parti de Claude Code

873* [Paramètres](/fr/settings) : personnalisez Claude Code pour votre flux de travail

874* [Résolution des problèmes](/fr/troubleshooting) : solutions pour les problèmes courants

875* [code.claude.com](https://code.claude.com/) : démos, tarification et détails du produit

permission-modes.md +290 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Choisir un mode de permission

6 

7> Contrôlez si Claude demande avant de modifier les fichiers ou d'exécuter des commandes. Changez de mode avec Maj+Tab dans le CLI ou utilisez le sélecteur de mode dans VS Code, Desktop et claude.ai.

8 

9Quand Claude veut modifier un fichier, exécuter une commande shell ou effectuer une demande réseau, il s'arrête et vous demande d'approuver l'action. Les modes de permission contrôlent la fréquence de cette pause. Le mode que vous choisissez façonne le flux d'une session : le mode par défaut vous permet d'examiner chaque action au fur et à mesure, tandis que les modes plus souples permettent à Claude de travailler dans des étapes plus longues et ininterrompues et de faire un rapport quand c'est terminé. Choisissez une supervision plus importante pour les travaux sensibles, ou moins d'interruptions quand vous faites confiance à la direction.

10 

11## Modes disponibles

12 

13Chaque mode fait un compromis différent entre la commodité et la supervision. Le tableau ci-dessous montre ce que Claude peut faire sans invite de permission dans chaque mode.

14 

15| Mode | Ce qui s'exécute sans demander | Idéal pour |

16| :------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------- |

17| `default` | Lectures uniquement | Démarrage, travaux sensibles |

18| [`acceptEdits`](#auto-approve-file-edits-with-acceptedits-mode) | Lectures, modifications de fichiers et commandes courantes du système de fichiers (`mkdir`, `touch`, `mv`, `cp`, etc.) | Itération sur le code que vous examinez |

19| [`plan`](#analyze-before-you-edit-with-plan-mode) | Lectures uniquement | Explorer une base de code avant de la modifier |

20| [`auto`](#eliminate-prompts-with-auto-mode) | Tout, avec des vérifications de sécurité en arrière-plan | Tâches longues, réduction de la fatigue des invites |

21| [`dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode) | Uniquement les outils pré-approuvés | CI verrouillé et scripts |

22| [`bypassPermissions`](#skip-all-checks-with-bypasspermissions-mode) | Tout | Conteneurs et machines virtuelles isolés uniquement |

23 

24Dans tous les modes sauf `bypassPermissions`, les écritures dans les [chemins protégés](#protected-paths) ne sont jamais auto-approuvées, protégeant l'état du dépôt et la configuration propre de Claude contre la corruption accidentelle.

25 

26Les 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 dans n'importe quel mode sauf `bypassPermissions`, qui ignore complètement la couche de permission.

27 

28## Changer de mode de permission

29 

30Vous pouvez changer de mode en cours de session, au démarrage ou comme paramètre par défaut persistant. Le mode est défini via ces contrôles, pas en demandant à Claude dans le chat. Sélectionnez votre interface ci-dessous pour voir comment le modifier.

31 

32<Tabs>

33 <Tab title="CLI">

34 **Pendant une session** : appuyez sur `Maj+Tab` pour parcourir `default` → `acceptEdits` → `plan`. Le mode actuel apparaît dans la barre d'état. Tous les modes ne sont pas dans le cycle par défaut :

35 

36 * `auto` : apparaît quand votre compte répond aux [exigences du mode auto](#eliminate-prompts-with-auto-mode) ; le parcours vers auto affiche une invite d'acceptation jusqu'à ce que vous l'acceptiez, ou sélectionnez **Non, ne me le demandez plus** pour supprimer auto du cycle

37 * `bypassPermissions` : apparaît après que vous ayez démarré avec `--permission-mode bypassPermissions`, `--dangerously-skip-permissions`, ou `--allow-dangerously-skip-permissions` ; la variante `--allow-` ajoute le mode au cycle sans l'activer

38 * `dontAsk` : n'apparaît jamais dans le cycle ; définissez-le avec `--permission-mode dontAsk`

39 

40 Les modes optionnels activés s'insèrent après `plan`, avec `bypassPermissions` en premier et `auto` en dernier. Si vous avez les deux activés, vous parcourrez `bypassPermissions` en allant vers `auto`.

41 

42 **Au démarrage** : passez le mode comme drapeau.

43 

44 ```bash theme={null}

45 claude --permission-mode plan

46 ```

47 

48 **Par défaut** : définissez `defaultMode` dans les [paramètres](/fr/settings#settings-files).

49 

50 ```json theme={null}

51 {

52 "permissions": {

53 "defaultMode": "acceptEdits"

54 }

55 }

56 ```

57 

58 Le même drapeau `--permission-mode` fonctionne avec `-p` pour les [exécutions non-interactives](/fr/headless).

59 </Tab>

60 

61 <Tab title="VS Code">

62 **Pendant une session** : cliquez sur l'indicateur de mode en bas de la boîte d'invite.

63 

64 **Par défaut** : définissez `claudeCode.initialPermissionMode` dans les paramètres VS Code, ou utilisez le panneau de paramètres de l'extension Claude Code.

65 

66 L'indicateur de mode affiche ces étiquettes, mappées au mode auquel chacune s'applique :

67 

68 | Étiquette UI | Mode |

69 | :------------------------------- | :------------------ |

70 | Demander avant les modifications | `default` |

71 | Modifier automatiquement | `acceptEdits` |

72 | Mode de planification | `plan` |

73 | Mode auto | `auto` |

74 | Ignorer les permissions | `bypassPermissions` |

75 

76 Le mode auto apparaît dans l'indicateur de mode après que vous ayez activé **Autoriser l'ignorance dangereuse des permissions** dans les paramètres de l'extension, mais il reste indisponible jusqu'à ce que votre compte réponde à chaque exigence listée dans la [section mode auto](#eliminate-prompts-with-auto-mode). Le paramètre `claudeCode.initialPermissionMode` n'accepte pas `auto` ; pour démarrer en mode auto par défaut, définissez `defaultMode` dans votre [`settings.json`](/fr/settings#settings-files) Claude Code à la place.

77 

78 Ignorer les permissions nécessite également le bouton **Autoriser l'ignorance dangereuse des permissions** avant qu'il n'apparaisse dans l'indicateur de mode.

79 

80 Consultez le [guide VS Code](/fr/vs-code) pour les détails spécifiques à l'extension.

81 </Tab>

82 

83 <Tab title="JetBrains">

84 Le plugin JetBrains exécute Claude Code dans le terminal IDE, donc le changement de mode fonctionne de la même manière que dans le CLI : appuyez sur `Maj+Tab` pour parcourir, ou passez `--permission-mode` lors du lancement.

85 </Tab>

86 

87 <Tab title="Desktop">

88 Utilisez le sélecteur de mode à côté du bouton d'envoi. Auto et Ignorer les permissions n'apparaissent qu'après les avoir activés dans les paramètres Desktop. Consultez le [guide Desktop](/fr/desktop#choose-a-permission-mode).

89 </Tab>

90 

91 <Tab title="Web and mobile">

92 Utilisez le menu déroulant de mode à côté de la boîte d'invite sur [claude.ai/code](https://claude.ai/code) ou dans l'application mobile. Les invites de permission apparaissent dans claude.ai pour approbation. Les modes qui apparaissent dépendent de l'endroit où la session s'exécute :

93 

94 * **Sessions cloud** sur [Claude Code sur le web](/fr/claude-code-on-the-web) : Accepter automatiquement les modifications et Mode de planification. Demander les permissions, Auto et Ignorer les permissions ne sont pas disponibles.

95 * **Sessions [Contrôle à distance](/fr/remote-control)** sur votre machine locale : Demander les permissions, Accepter automatiquement les modifications et Mode de planification. Auto et Ignorer les permissions ne sont pas disponibles.

96 

97 Pour le Contrôle à distance, vous pouvez également définir le mode de démarrage lors du lancement de l'hôte :

98 

99 ```bash theme={null}

100 claude remote-control --permission-mode acceptEdits

101 ```

102 </Tab>

103</Tabs>

104 

105## Approuver automatiquement les modifications de fichiers avec le mode acceptEdits

106 

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

108 

109En plus des modifications de fichiers, le mode `acceptEdits` approuve automatiquement les commandes Bash courantes du système de fichiers : `mkdir`, `touch`, `rm`, `rmdir`, `mv`, `cp` et `sed`. Ces commandes sont également auto-approuvées quand elles sont préfixées avec des variables d'environnement sûres comme `LANG=C` ou `NO_COLOR=1`, ou des wrappers de processus comme `timeout`, `nice` ou `nohup`. Comme les modifications de fichiers, l'approbation automatique 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 dans les [chemins protégés](#protected-paths) et toutes les autres commandes Bash invitent toujours.

110 

111Quand l'[outil PowerShell](/fr/tools-reference#powershell-tool) est activé, le mode `acceptEdits` approuve également automatiquement `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 chemins protégés s'appliquent.

112 

113Utilisez `acceptEdits` quand vous voulez examiner les modifications dans votre éditeur ou via `git diff` après coup plutôt que d'approuver chaque modification en ligne. Appuyez sur `Maj+Tab` une fois depuis le mode par défaut pour l'entrer, ou démarrez directement avec :

114 

115```bash theme={null}

116claude --permission-mode acceptEdits

117```

118 

119## Analyser avant de modifier avec le mode de planification

120 

121Le mode de planification indique à Claude de rechercher et de proposer des modifications sans les apporter. Claude lit les fichiers, exécute des commandes shell pour explorer et écrit un plan, mais ne modifie pas votre source. Les invites de permission s'appliquent de la même manière que le mode par défaut.

122 

123Entrez le mode de planification en appuyant sur `Maj+Tab` ou en préfixant une seule invite avec `/plan`. Vous pouvez également démarrer en mode de planification depuis le CLI :

124 

125```bash theme={null}

126claude --permission-mode plan

127```

128 

129Appuyez sur `Maj+Tab` à nouveau pour quitter le mode de planification sans approuver un plan.

130 

131Quand le plan est prêt, Claude le présente et demande comment procéder. À partir de cette invite, vous pouvez :

132 

133* Approuver et démarrer en mode auto

134* Approuver et accepter les modifications

135* Approuver et examiner manuellement chaque modification

136* Continuer la planification avec des commentaires

137* Affiner avec [Ultraplan](/fr/ultraplan) pour un examen basé sur le navigateur

138 

139Chaque option d'approbation offre également d'effacer le contexte de planification en premier.

140 

141## Éliminer les invites avec le mode auto

142 

143<Note>

144 Le mode auto nécessite Claude Code v2.1.83 ou ultérieur.

145</Note>

146 

147Le mode auto permet à Claude d'exécuter sans invites de permission. Un modèle classificateur séparé examine les actions avant qu'elles ne s'exécutent, bloquant tout ce qui escalade au-delà de votre demande, cible une infrastructure non reconnue ou semble entraîné par du contenu hostile que Claude a lu.

148 

149<Warning>

150 Le mode auto est un aperçu de recherche. Il réduit les invites mais ne garantit pas la sécurité. Utilisez-le pour les tâches où vous faites confiance à la direction générale, pas comme remplacement de l'examen sur les opérations sensibles.

151</Warning>

152 

153Le mode auto n'est disponible que quand votre compte répond à toutes ces exigences :

154 

155* **Plan** : Max, Team, Enterprise ou API. Non disponible sur Pro.

156* **Admin** : sur Team et Enterprise, un administrateur doit l'activer dans les [paramètres d'administration Claude Code](https://claude.ai/admin-settings/claude-code) avant que les utilisateurs puissent l'activer. Les administrateurs peuvent également le verrouiller en définissant `permissions.disableAutoMode` sur `"disable"` dans les [paramètres gérés](/fr/permissions#managed-settings).

157* **Modèle** : Claude Sonnet 4.6, Opus 4.6 ou Opus 4.7 sur les plans Team, Enterprise et API ; Claude Opus 4.7 uniquement sur les plans Max. Les autres modèles, y compris Haiku et les modèles claude-3, ne sont pas supportés.

158* **Fournisseur** : API Anthropic uniquement. Non disponible sur Bedrock, Vertex ou Foundry.

159 

160Si Claude Code signale le mode auto comme indisponible, l'une de ces exigences n'est pas remplie ; ce n'est pas une panne transitoire. Un message séparé qui nomme un modèle et dit que le mode auto « ne peut pas déterminer la sécurité » d'une action est une panne transitoire du classificateur ; consultez la [référence d'erreur](/fr/errors#auto-mode-cannot-determine-the-safety-of-an-action).

161 

162### Ce que le classificateur bloque par défaut

163 

164Le classificateur fait confiance à votre répertoire de travail et aux télécommandes configurées de votre dépôt. Tout le reste est traité comme externe jusqu'à ce que vous [configuriez l'infrastructure de confiance](/fr/auto-mode-config).

165 

166**Bloqué par défaut** :

167 

168* Téléchargement et exécution de code, comme `curl | bash`

169* Envoi de données sensibles à des points de terminaison externes

170* Déploiements et migrations de production

171* Suppression en masse sur le stockage cloud

172* Octroi de permissions IAM ou de dépôt

173* Modification de l'infrastructure partagée

174* Destruction irréversible de fichiers qui existaient avant la session

175* Forçage ou poussée directe vers `main`

176 

177**Autorisé par défaut** :

178 

179* Opérations de fichiers locaux dans votre répertoire de travail

180* Installation de dépendances déclarées dans vos fichiers de verrouillage ou manifestes

181* Lecture de `.env` et envoi des identifiants à leur API correspondante

182* Demandes HTTP en lecture seule

183* Poussée vers la branche sur laquelle vous avez commencé ou celle créée par Claude

184 

185Les demandes d'accès réseau sandbox sont acheminées via le classificateur plutôt que d'être autorisées par défaut. Exécutez `claude auto-mode defaults` pour voir les listes de règles complètes. Si les actions courantes sont bloquées, un administrateur peut ajouter des dépôts de confiance, des compartiments et des services via le paramètre `autoMode.environment` : consultez [Configurer le mode auto](/fr/auto-mode-config).

186 

187### Limites que vous énoncez dans la conversation

188 

189Le classificateur traite les limites que vous énoncez dans la conversation comme un signal de blocage. Si vous dites à Claude « ne pousse pas » ou « attends que j'examine avant de déployer », le classificateur bloque les actions correspondantes même quand les règles par défaut les autoriseraient. Une limite reste en vigueur jusqu'à ce que vous la leviez dans un message ultérieur. Le propre jugement de Claude qu'une condition a été remplie ne la lève pas.

190 

191Les limites ne sont pas stockées comme des règles. Le classificateur les relit à partir de la transcription à chaque vérification, donc une limite peut être perdue si la [compaction de contexte](/fr/costs#reduce-token-usage) supprime le message qui l'a énoncée. Pour une garantie absolue, ajoutez une [règle de refus](/fr/permissions#permission-rule-syntax) à la place.

192 

193### Quand le mode auto revient en arrière

194 

195Chaque action refusée affiche une notification et apparaît dans `/permissions` sous l'onglet Récemment refusé, où vous pouvez appuyer sur `r` pour la réessayer avec une approbation manuelle.

196 

197Si le classificateur bloque une action 3 fois de suite ou 20 fois au total, le mode auto s'interrompt et Claude Code reprend l'invite. Approuver l'action invitée reprend le mode auto. Ces seuils ne sont pas configurables. Toute action autorisée réinitialise le compteur consécutif, tandis que le compteur total persiste pour la session et ne se réinitialise que quand sa propre limite déclenche un retour en arrière.

198 

199En [mode non-interactif](/fr/headless) avec le drapeau `-p`, les blocages répétés abandonnent la session puisqu'il n'y a pas d'utilisateur pour inviter.

200 

201Les blocages répétés signifient généralement que le classificateur manque de contexte sur votre infrastructure. Utilisez `/feedback` pour signaler les faux positifs, ou demandez à un administrateur de [configurer l'infrastructure de confiance](/fr/auto-mode-config).

202 

203<AccordionGroup>

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

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

206 

207 1. Les actions correspondant à vos [règles d'autorisation ou de refus](/fr/permissions#manage-permissions) se résolvent immédiatement

208 2. Les actions en lecture seule et les modifications de fichiers dans votre répertoire de travail sont auto-approuvées, sauf les écritures dans les [chemins protégés](#protected-paths)

209 3. Tout le reste va au classificateur

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

211 

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

213 

214 * `Bash(*)` sans restriction

215 * Interpréteurs avec caractères génériques comme `Bash(python*)`

216 * Commandes d'exécution du gestionnaire de paquets

217 * Règles `Agent`

218 

219 Les règles étroites comme `Bash(npm test)` sont conservées. Les règles supprimées sont restaurées quand vous quittez le mode auto.

220 

221 Le classificateur voit les messages utilisateur, les appels d'outils et votre contenu CLAUDE.md. Les résultats des outils sont supprimés, donc le contenu hostile dans un fichier ou une page web ne peut pas le manipuler directement. Une sonde côté serveur séparée analyse les résultats des outils entrants et signale le contenu suspect avant que Claude ne le lise. Pour plus d'informations sur la façon dont ces couches fonctionnent ensemble, consultez l'[annonce du mode auto](https://claude.com/blog/auto-mode) et l'[analyse technique approfondie](https://www.anthropic.com/engineering/claude-code-auto-mode).

222 </Accordion>

223 

224 <Accordion title="Comment le mode auto gère les sous-agents">

225 Le classificateur vérifie le travail des [sous-agents](/fr/sub-agents) à trois points :

226 

227 1. Avant qu'un sous-agent ne démarre, la description de la tâche déléguée est évaluée, donc une tâche qui semble dangereuse est bloquée au moment du lancement.

228 2. Pendant que le sous-agent s'exécute, chacune de ses actions passe par le classificateur avec les mêmes règles que la session parent, et tout `permissionMode` dans le frontmatter du sous-agent est ignoré.

229 3. Quand le sous-agent se termine, le classificateur examine son historique d'action complet ; si cette vérification de retour signale une préoccupation, un avertissement de sécurité est ajouté aux résultats du sous-agent.

230 </Accordion>

231 

232 <Accordion title="Coût et latence">

233 Le classificateur s'exécute sur un modèle configuré par le serveur qui est indépendant de votre sélection `/model`, donc changer de modèle ne change pas la disponibilité du classificateur. Les appels du classificateur comptent dans votre utilisation de jetons. Chaque vérification envoie une partie de la transcription plus l'action en attente, ajoutant un aller-retour avant l'exécution. Les lectures et les modifications de répertoire de travail en dehors des chemins protégés ignorent le classificateur, donc la surcharge provient principalement des commandes shell et des opérations réseau.

234 </Accordion>

235</AccordionGroup>

236 

237## Autoriser uniquement les outils pré-approuvés avec le mode dontAsk

238 

239Le mode `dontAsk` refuse automatiquement chaque appel d'outil qui inviterait autrement. Seules les actions correspondant à vos règles `permissions.allow` et les [commandes Bash en lecture seule](/fr/permissions#read-only-commands) peuvent s'exécuter ; les règles `ask` explicites sont refusées plutôt que d'inviter. 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.

240 

241Définissez-le au démarrage avec le drapeau :

242 

243```bash theme={null}

244claude --permission-mode dontAsk

245```

246 

247## Ignorer toutes les vérifications avec le mode bypassPermissions

248 

249Le mode `bypassPermissions` désactive les invites de permission et les vérifications de sécurité pour que les appels d'outils s'exécutent immédiatement. À partir de la v2.1.126, cela inclut les écritures dans les [chemins protégés](#protected-paths), que les versions antérieures invitaient toujours. 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. Utilisez ce mode uniquement dans les environnements isolés comme les conteneurs, les machines virtuelles ou les devcontainers sans accès à Internet, où Claude Code ne peut pas endommager votre système hôte.

250 

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

252 

253```bash theme={null}

254claude --permission-mode bypassPermissions

255```

256 

257Le drapeau `--dangerously-skip-permissions` est équivalent.

258 

259<Warning>

260 `bypassPermissions` n'offre aucune protection contre l'injection d'invite ou les actions involontaires. Pour les vérifications de sécurité en arrière-plan sans invites, utilisez le [mode auto](#eliminate-prompts-with-auto-mode) à la place. Les administrateurs peuvent bloquer ce mode en définissant `permissions.disableBypassPermissionsMode` sur `"disable"` dans les [paramètres gérés](/fr/permissions#managed-settings).

261</Warning>

262 

263## Chemins protégés

264 

265Les écritures dans un petit ensemble de chemins ne sont jamais auto-approuvées, dans tous les modes sauf `bypassPermissions`. Cela empêche la corruption accidentelle de l'état du dépôt et de la configuration propre de Claude. Dans `default`, `acceptEdits` et `plan`, ces écritures invitent ; dans `auto`, elles sont acheminées vers le classificateur ; dans `dontAsk`, elles sont refusées ; dans `bypassPermissions`, elles sont autorisées.

266 

267Répertoires protégés :

268 

269* `.git`

270* `.vscode`

271* `.idea`

272* `.husky`

273* `.claude`, sauf pour `.claude/commands`, `.claude/agents`, `.claude/skills` et `.claude/worktrees` où Claude crée régulièrement du contenu

274 

275Fichiers protégés :

276 

277* `.gitconfig`, `.gitmodules`

278* `.bashrc`, `.bash_profile`, `.zshrc`, `.zprofile`, `.profile`

279* `.ripgreprc`

280* `.mcp.json`, `.claude.json`

281 

282## Voir aussi

283 

284* [Permissions](/fr/permissions) : règles d'autorisation, de demande et de refus ; politiques gérées

285* [Configurer le mode auto](/fr/auto-mode-config) : indiquez au classificateur quelle infrastructure votre organisation fait confiance

286* [Hooks](/fr/hooks) : logique de permission personnalisée via les hooks `PreToolUse` et `PermissionRequest`

287* [Ultraplan](/fr/ultraplan) : exécutez le mode de planification dans une session Claude Code sur le web avec examen basé sur le navigateur

288* [Sécurité](/fr/security) : garanties de sécurité et meilleures pratiques

289* [Sandboxing](/fr/sandboxing) : isolation du système de fichiers et du réseau pour les commandes Bash

290* [Mode non-interactif](/fr/headless) : exécutez Claude Code avec le drapeau `-p`

permissions.md +473 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Configurer les autorisations

6 

7> Contrôlez ce que Claude Code peut accéder et faire avec des règles d'autorisation granulaires, des modes et des politiques gérées.

8 

9Claude Code prend en charge les autorisations granulaires afin que vous puissiez spécifier exactement ce que l'agent est autorisé à faire et ce qu'il ne peut pas faire. Les paramètres d'autorisation peuvent être archivés dans le contrôle de version et distribués à tous les développeurs de votre organisation, ainsi que personnalisés par les développeurs individuels.

10 

11## Système d'autorisation

12 

13Claude Code utilise un système d'autorisation à plusieurs niveaux pour équilibrer la puissance et la sécurité :

14 

15| Type d'outil | Exemple | Approbation requise | Comportement « Oui, ne pas demander à nouveau » |

16| :---------------------- | :--------------------------- | :------------------ | :---------------------------------------------- |

17| Lecture seule | Lectures de fichiers, Grep | Non | S/O |

18| Commandes Bash | Exécution shell | Oui | Permanent par répertoire de projet et commande |

19| Modification de fichier | Édition/écriture de fichiers | Oui | Jusqu'à la fin de la session |

20 

21## Gérer les autorisations

22 

23Vous pouvez afficher et gérer les autorisations d'outils de Claude Code avec `/permissions`. Cette interface utilisateur répertorie toutes les règles d'autorisation et le fichier settings.json dont elles proviennent.

24 

25* Les règles **Allow** permettent à Claude Code d'utiliser l'outil spécifié sans approbation manuelle.

26* Les règles **Ask** demandent une confirmation chaque fois que Claude Code essaie d'utiliser l'outil spécifié.

27* Les règles **Deny** empêchent Claude Code d'utiliser l'outil spécifié.

28 

29Les règles sont évaluées dans l'ordre : **deny -> ask -> allow**. La première règle correspondante gagne, donc les règles de refus ont toujours la priorité.

30 

31## Modes d'autorisation

32 

33Claude Code prend en charge plusieurs modes d'autorisation qui contrôlent la façon dont les outils sont approuvés. Consultez [Modes d'autorisation](/fr/permission-modes) pour savoir quand utiliser chacun. Définissez le `defaultMode` dans vos [fichiers de paramètres](/fr/settings#settings-files) :

34 

35| Mode | Description |

36| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

37| `default` | Comportement standard : demande une autorisation à la première utilisation de chaque outil |

38| `acceptEdits` | Accepte automatiquement les éditions de fichiers et les commandes courantes du système de fichiers (`mkdir`, `touch`, `mv`, `cp`, etc.) pour les chemins du répertoire de travail ou `additionalDirectories` |

39| `plan` | Plan Mode : Claude peut analyser mais pas modifier les fichiers ou exécuter les commandes |

40| `auto` | Approuve automatiquement les appels d'outils avec des vérifications de sécurité en arrière-plan qui vérifient que les actions s'alignent avec votre demande. Actuellement un aperçu de recherche |

41| `dontAsk` | Refuse automatiquement les outils sauf s'ils sont pré-approuvés via `/permissions` ou les règles `permissions.allow` |

42| `bypassPermissions` | Ignore tous les invites d'autorisation. Les suppressions ciblant la racine du système de fichiers ou le répertoire personnel, comme `rm -rf /` et `rm -rf ~`, demandent toujours comme disjoncteur de sécurité |

43 

44<Warning>

45 Le mode `bypassPermissions` ignore tous les invites d'autorisation, y compris les écritures dans `.git`, `.claude`, `.vscode`, `.idea` et `.husky`. Les suppressions ciblant la racine du système de fichiers ou le répertoire personnel, comme `rm -rf /` et `rm -rf ~`, demandent toujours comme disjoncteur de sécurité contre l'erreur du modèle. Utilisez ce mode uniquement dans des environnements isolés comme les conteneurs ou les machines virtuelles où Claude Code ne peut pas causer de dommages. Les administrateurs peuvent empêcher ce mode en définissant `permissions.disableBypassPermissionsMode` sur `"disable"` dans les [paramètres gérés](#managed-settings).

46</Warning>

47 

48Pour empêcher le mode `bypassPermissions` ou `auto` d'être utilisé, définissez `permissions.disableBypassPermissionsMode` ou `permissions.disableAutoMode` sur `"disable"` dans n'importe quel [fichier de paramètres](/fr/settings#settings-files). Ces paramètres sont particulièrement utiles dans les [paramètres gérés](#managed-settings) où ils ne peuvent pas être remplacés.

49 

50## Syntaxe des règles d'autorisation

51 

52Les règles d'autorisation suivent le format `Tool` ou `Tool(specifier)`.

53 

54### Correspondre à tous les usages d'un outil

55 

56Pour correspondre à tous les usages d'un outil, utilisez simplement le nom de l'outil sans parenthèses :

57 

58| Règle | Effet |

59| :--------- | :--------------------------------------------------- |

60| `Bash` | Correspond à toutes les commandes Bash |

61| `WebFetch` | Correspond à toutes les demandes de récupération web |

62| `Read` | Correspond à toutes les lectures de fichiers |

63 

64`Bash(*)` est équivalent à `Bash` et correspond à toutes les commandes Bash.

65 

66### Utiliser des spécificateurs pour un contrôle granulaire

67 

68Ajoutez un spécificateur entre parenthèses pour correspondre à des usages d'outils spécifiques :

69 

70| Règle | Effet |

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

72| `Bash(npm run build)` | Correspond à la commande exacte `npm run build` |

73| `Read(./.env)` | Correspond à la lecture du fichier `.env` dans le répertoire courant |

74| `WebFetch(domain:example.com)` | Correspond aux demandes de récupération vers example.com |

75 

76### Modèles de caractères génériques

77 

78Les règles Bash prennent en charge les modèles glob avec `*`. Les caractères génériques peuvent apparaître à n'importe quelle position dans la commande. Cette configuration permet les commandes npm et git commit tout en bloquant git push :

79 

80```json theme={null}

81{

82 "permissions": {

83 "allow": [

84 "Bash(npm run *)",

85 "Bash(git commit *)",

86 "Bash(git * main)",

87 "Bash(* --version)",

88 "Bash(* --help *)"

89 ],

90 "deny": [

91 "Bash(git push *)"

92 ]

93 }

94}

95```

96 

97L'espace avant `*` est important : `Bash(ls *)` correspond à `ls -la` mais pas à `lsof`, tandis que `Bash(ls*)` correspond aux deux. Le suffixe `:*` est une façon équivalente d'écrire un caractère générique de fin, donc `Bash(ls:*)` correspond aux mêmes commandes que `Bash(ls *)`.

98 

99La boîte de dialogue d'autorisation écrit la forme séparée par des espaces lorsque vous sélectionnez « Oui, ne pas demander à nouveau » pour un préfixe de commande. La forme `:*` n'est reconnue qu'à la fin d'un modèle. Dans un modèle comme `Bash(git:* push)`, le deux-points est traité comme un caractère littéral et ne correspondra pas aux commandes git.

100 

101## Règles d'autorisation spécifiques aux outils

102 

103### Bash

104 

105Les règles d'autorisation Bash prennent en charge la correspondance de caractères génériques avec `*`. Les caractères génériques peuvent apparaître à n'importe quelle position dans la commande, y compris au début, au milieu ou à la fin :

106 

107* `Bash(npm run build)` correspond à la commande Bash exacte `npm run build`

108* `Bash(npm run test *)` correspond aux commandes Bash commençant par `npm run test`

109* `Bash(npm *)` correspond à toute commande commençant par `npm `

110* `Bash(* install)` correspond à toute commande se terminant par ` install`

111* `Bash(git * main)` correspond à des commandes comme `git checkout main` et `git log --oneline main`

112 

113Un seul `*` correspond à n'importe quelle séquence de caractères, y compris les espaces, donc un caractère générique peut s'étendre sur plusieurs arguments. `Bash(git *)` correspond à `git log --oneline --all`, et `Bash(git * main)` correspond à `git push origin main` ainsi qu'à `git merge main`.

114 

115Lorsque `*` apparaît à la fin avec un espace avant (comme `Bash(ls *)`), il applique une limite de mot, exigeant que le préfixe soit suivi d'un espace ou de la fin de la chaîne. Par exemple, `Bash(ls *)` correspond à `ls -la` mais pas à `lsof`. En contraste, `Bash(ls*)` sans espace correspond aux deux `ls -la` et `lsof` car il n'y a pas de contrainte de limite de mot.

116 

117#### Commandes composées

118 

119<Tip>

120 Claude Code est conscient des opérateurs shell, donc une règle comme `Bash(safe-cmd *)` ne lui donnera pas la permission d'exécuter la commande `safe-cmd && other-cmd`. Les séparateurs de commande reconnus sont `&&`, `||`, `;`, `|`, `|&`, `&` et les sauts de ligne. Une règle doit correspondre à chaque sous-commande indépendamment.

121</Tip>

122 

123Lorsque vous approuvez une commande composée avec « Oui, ne pas demander à nouveau », Claude Code enregistre une règle séparée pour chaque sous-commande qui nécessite une approbation, plutôt qu'une seule règle pour la chaîne complète. Par exemple, approuver `git status && npm test` enregistre une règle pour `npm test`, donc les invocations futures de `npm test` sont reconnues indépendamment de ce qui précède le `&&`. Les sous-commandes comme `cd` dans un sous-répertoire génèrent leur propre règle Read pour ce chemin. Jusqu'à 5 règles peuvent être enregistrées pour une seule commande composée.

124 

125#### Wrappers de processus

126 

127Avant de correspondre aux règles Bash, Claude Code supprime un ensemble fixe de wrappers de processus afin qu'une règle comme `Bash(npm test *)` corresponde également à `timeout 30 npm test`. Les wrappers reconnus sont `timeout`, `time`, `nice`, `nohup` et `stdbuf`.

128 

129Le `xargs` nu est également supprimé, donc `Bash(grep *)` correspond à `xargs grep pattern`. La suppression s'applique uniquement lorsque `xargs` n'a pas de drapeaux : une invocation comme `xargs -n1 grep pattern` est mise en correspondance en tant que commande `xargs`, donc les règles écrites pour la commande interne ne la couvrent pas.

130 

131Cette liste de wrappers est intégrée et n'est pas configurable. Les exécuteurs d'environnement de développement tels que `direnv exec`, `devbox run`, `mise exec`, `npx` et `docker exec` ne figurent pas dans la liste. Parce que ces outils exécutent leurs arguments en tant que commande, une règle comme `Bash(devbox run *)` correspond à tout ce qui vient après `run`, y compris `devbox run rm -rf .`. Pour approuver le travail à l'intérieur d'un exécuteur d'environnement, écrivez une règle spécifique qui inclut à la fois l'exécuteur et la commande interne, comme `Bash(devbox run npm test)`. Ajoutez une règle par commande interne que vous souhaitez autoriser.

132 

133Les wrappers exec tels que `watch`, `setsid`, `ionice` et `flock` demandent toujours et ne peuvent pas être approuvés automatiquement par une règle de préfixe comme `Bash(watch *)`. Il en va de même pour `find` avec `-exec` ou `-delete` : une règle `Bash(find *)` ne couvre pas ces formes. Pour approuver une invocation spécifique, écrivez une règle de correspondance exacte pour la chaîne de commande complète.

134 

135#### Commandes en lecture seule

136 

137Claude Code reconnaît un ensemble intégré de commandes Bash comme étant en lecture seule et les exécute sans invite d'autorisation dans tous les modes. Ceux-ci incluent `ls`, `cat`, `head`, `tail`, `grep`, `find`, `wc`, `diff`, `stat`, `du`, `cd` et les formes en lecture seule de `git`. L'ensemble n'est pas configurable ; pour exiger une invite pour l'une de ces commandes, ajoutez une règle `ask` ou `deny` pour celle-ci.

138 

139Les modèles glob non cités sont autorisés pour les commandes dont chaque drapeau est en lecture seule, donc `ls *.ts` et `wc -l src/*.py` s'exécutent sans invite. Les commandes avec des drapeaux capables d'écriture ou d'exécution, tels que `find`, `sort`, `sed` et `git`, demandent toujours lorsqu'un glob non cité est présent car le glob pourrait s'étendre à un drapeau comme `-delete`.

140 

141Un `cd` dans un chemin à l'intérieur de votre répertoire de travail ou d'un [répertoire supplémentaire](#working-directories) est également en lecture seule. Une commande composée comme `cd packages/api && ls` s'exécute sans invite lorsque chaque partie se qualifie seule. La combinaison de `cd` avec `git` dans une seule commande composée demande toujours, indépendamment du répertoire cible.

142 

143<Warning>

144 Les modèles d'autorisation Bash qui tentent de contraindre les arguments de commande sont fragiles. Par exemple, `Bash(curl http://github.com/ *)` a l'intention de restreindre curl aux URL GitHub, mais ne correspondra pas aux variations comme :

145 

146 * Options avant l'URL : `curl -X GET http://github.com/...`

147 * Protocole différent : `curl https://github.com/...`

148 * Redirections : `curl -L http://bit.ly/xyz` (redirige vers github)

149 * Variables : `URL=http://github.com && curl $URL`

150 * Espaces supplémentaires : `curl http://github.com`

151 

152 Pour un filtrage d'URL plus fiable, envisagez :

153 

154 * **Restreindre les outils réseau Bash** : utilisez les règles de refus pour bloquer `curl`, `wget` et les commandes similaires, puis utilisez l'outil WebFetch avec l'autorisation `WebFetch(domain:github.com)` pour les domaines autorisés

155 * **Utiliser les hooks PreToolUse** : implémentez un hook qui valide les URL dans les commandes Bash et bloque les domaines non autorisés

156 * Instruire Claude Code sur vos modèles curl autorisés via CLAUDE.md

157 

158 Notez que l'utilisation de WebFetch seul n'empêche pas l'accès au réseau. Si Bash est autorisé, Claude peut toujours utiliser `curl`, `wget` ou d'autres outils pour atteindre n'importe quelle URL.

159</Warning>

160 

161### PowerShell

162 

163Les règles d'autorisation PowerShell utilisent la même forme que les règles Bash. Les caractères génériques avec `*` correspondent à n'importe quelle position, le suffixe `:*` est équivalent à un ` *` de fin, et un `PowerShell` nu ou `PowerShell(*)` correspond à chaque commande. Cette configuration permet les commandes `Get-ChildItem` et `git commit` tout en bloquant `Remove-Item` :

164 

165```json theme={null}

166{

167 "permissions": {

168 "allow": [

169 "PowerShell(Get-ChildItem *)",

170 "PowerShell(git commit *)"

171 ],

172 "deny": [

173 "PowerShell(Remove-Item *)"

174 ]

175 }

176}

177```

178 

179Les alias courants sont canonicalisés avant la correspondance. Une règle écrite pour le nom de la cmdlet correspond également à ses alias, donc `PowerShell(Get-ChildItem *)` correspond à `gci`, `ls` et `dir` aussi. La correspondance est insensible à la casse.

180 

181Claude Code analyse l'AST PowerShell et vérifie chaque commande dans une commande composée indépendamment. Les opérateurs de pipeline `|`, les séparateurs d'instruction `;` et sur PowerShell 7+ les opérateurs de chaîne `&&` et `||` divisent une commande composée en sous-commandes. Une règle doit correspondre à chaque sous-commande pour que la commande composée soit autorisée.

182 

183### Read et Edit

184 

185Les règles `Edit` s'appliquent à tous les outils intégrés qui éditent les fichiers. Claude fait un effort raisonnable pour appliquer les règles `Read` à tous les outils intégrés qui lisent les fichiers comme Grep et Glob.

186 

187<Warning>

188 Les règles de refus Read et Edit s'appliquent aux outils de fichiers intégrés de Claude, pas aux sous-processus Bash. Une règle de refus `Read(./.env)` bloque l'outil Read mais n'empêche pas `cat .env` dans Bash. Pour une application au niveau du système d'exploitation qui bloque tous les processus d'accéder à un chemin, [activez le sandbox](/fr/sandboxing).

189</Warning>

190 

191Les règles Read et Edit suivent toutes deux la spécification [gitignore](https://git-scm.com/docs/gitignore) avec quatre types de modèles distincts :

192 

193| Modèle | Signification | Exemple | Correspond |

194| ------------------ | -------------------------------------------------------------- | -------------------------------- | -------------------------------- |

195| `//path` | Chemin **absolu** à partir de la racine du système de fichiers | `Read(//Users/alice/secrets/**)` | `/Users/alice/secrets/**` |

196| `~/path` | Chemin à partir du répertoire **home** | `Read(~/Documents/*.pdf)` | `/Users/alice/Documents/*.pdf` |

197| `/path` | Chemin **relatif à la racine du projet** | `Edit(/src/**/*.ts)` | `<racine du projet>/src/**/*.ts` |

198| `path` ou `./path` | Chemin **relatif au répertoire courant** | `Read(*.env)` | `<cwd>/*.env` |

199 

200<Warning>

201 Un modèle comme `/Users/alice/file` n'est PAS un chemin absolu. Il est relatif à la racine du projet. Utilisez `//Users/alice/file` pour les chemins absolus.

202</Warning>

203 

204Sur Windows, les chemins sont normalisés en forme POSIX avant la correspondance. `C:\Users\alice` devient `/c/Users/alice`, donc utilisez `//c/**/.env` pour correspondre aux fichiers `.env` n'importe où sur ce lecteur. Pour correspondre sur tous les lecteurs, utilisez `//**/.env`.

205 

206Exemples :

207 

208* `Edit(/docs/**)` : édite dans `<projet>/docs/` (PAS `/docs/` et PAS `<projet>/.claude/docs/`)

209* `Read(~/.zshrc)` : lit le `.zshrc` de votre répertoire home

210* `Edit(//tmp/scratch.txt)` : édite le chemin absolu `/tmp/scratch.txt`

211* `Read(src/**)` : lit à partir de `<répertoire courant>/src/`

212 

213<Note>

214 Dans les modèles gitignore, `*` correspond aux fichiers dans un seul répertoire tandis que `**` correspond récursivement dans les répertoires. Pour autoriser tous les accès aux fichiers, utilisez simplement le nom de l'outil sans parenthèses : `Read`, `Edit` ou `Write`.

215</Note>

216 

217Lorsque Claude accède à un lien symbolique, les règles d'autorisation vérifient deux chemins : le lien symbolique lui-même et le fichier vers lequel il se résout. Les règles d'autorisation et de refus traitent cette paire différemment : les règles d'autorisation reviennent à vous inviter, tandis que les règles de refus bloquent carrément.

218 

219* **Règles d'autorisation** : s'appliquent uniquement lorsque le chemin du lien symbolique et sa cible correspondent tous les deux. Un lien symbolique à l'intérieur d'un répertoire autorisé qui pointe vers l'extérieur vous invite toujours.

220* **Règles de refus** : s'appliquent lorsque le chemin du lien symbolique ou sa cible correspond. Un lien symbolique qui pointe vers un fichier refusé est lui-même refusé.

221 

222Par exemple, avec `Read(./project/**)` autorisé et `Read(~/.ssh/**)` refusé, un lien symbolique à `./project/key` pointant vers `~/.ssh/id_rsa` est bloqué : la cible échoue à la règle d'autorisation et correspond à la règle de refus.

223 

224### WebFetch

225 

226* `WebFetch(domain:example.com)` correspond aux demandes de récupération vers example.com

227 

228### MCP

229 

230* `mcp__puppeteer` correspond à tout outil fourni par le serveur `puppeteer` (nom configuré dans Claude Code)

231* `mcp__puppeteer__*` syntaxe de caractère générique qui correspond également à tous les outils du serveur `puppeteer`

232* `mcp__puppeteer__puppeteer_navigate` correspond à l'outil `puppeteer_navigate` fourni par le serveur `puppeteer`

233 

234### Agent (subagents)

235 

236Utilisez les règles `Agent(AgentName)` pour contrôler quels [subagents](/fr/sub-agents) Claude peut utiliser :

237 

238* `Agent(Explore)` correspond au subagent Explore

239* `Agent(Plan)` correspond au subagent Plan

240* `Agent(my-custom-agent)` correspond à un subagent personnalisé nommé `my-custom-agent`

241 

242Ajoutez ces règles au tableau `deny` dans vos paramètres ou utilisez l'indicateur CLI `--disallowedTools` pour désactiver des agents spécifiques. Pour désactiver l'agent Explore :

243 

244```json theme={null}

245{

246 "permissions": {

247 "deny": ["Agent(Explore)"]

248 }

249}

250```

251 

252## Étendre les autorisations avec des hooks

253 

254Les [hooks Claude Code](/fr/hooks-guide) fournissent un moyen d'enregistrer des commandes shell personnalisées pour effectuer l'évaluation des autorisations à l'exécution. Lorsque Claude Code effectue un appel d'outil, les hooks PreToolUse s'exécutent avant l'invite d'autorisation. La sortie du hook peut refuser l'appel d'outil, forcer une invite ou ignorer l'invite pour laisser l'appel se poursuivre.

255 

256Les décisions du hook ne contournent pas les règles d'autorisation. Les règles de refus et de demande sont évaluées indépendamment de ce qu'un hook PreToolUse retourne, donc une règle de refus correspondante bloque l'appel et une règle de demande correspondante demande toujours même lorsque le hook a retourné `"allow"` ou `"ask"`. Cela préserve la précédence de refus en premier décrite dans [Gérer les autorisations](#manage-permissions), y compris les règles de refus définies dans les paramètres gérés.

257 

258Un hook de blocage prend également la priorité sur les règles d'autorisation. Un hook qui se termine avec le code 2 arrête l'appel d'outil avant que les règles d'autorisation ne soient évaluées, donc le blocage s'applique même lorsqu'une règle d'autorisation permettrait autrement l'appel. Pour exécuter toutes les commandes Bash sans invites sauf pour quelques-unes que vous voulez bloquer, ajoutez `"Bash"` à votre liste d'autorisation et enregistrez un hook PreToolUse qui rejette ces commandes spécifiques. Consultez [Bloquer les éditions des fichiers protégés](/fr/hooks-guide#block-edits-to-protected-files) pour un script de hook que vous pouvez adapter.

259 

260## Répertoires de travail

261 

262Par défaut, Claude a accès aux fichiers du répertoire où il a été lancé. Vous pouvez étendre cet accès :

263 

264* **Au démarrage** : utilisez l'argument CLI `--add-dir <path>`

265* **Pendant la session** : utilisez la commande `/add-dir`

266* **Configuration persistante** : ajoutez à `additionalDirectories` dans les [fichiers de paramètres](/fr/settings#settings-files)

267 

268Les fichiers dans les répertoires supplémentaires suivent les mêmes règles d'autorisation que le répertoire de travail d'origine : ils deviennent lisibles sans invites, et les autorisations d'édition de fichiers suivent le mode d'autorisation actuel.

269 

270### Les répertoires supplémentaires accordent l'accès aux fichiers, pas la configuration

271 

272L'ajout d'un répertoire étend l'endroit où Claude peut lire et éditer les fichiers. Cela ne fait pas de ce répertoire une racine de configuration complète : la plupart de la configuration `.claude/` n'est pas découverte à partir de répertoires supplémentaires, bien que quelques types soient chargés comme exceptions.

273 

274Les types de configuration suivants sont chargés à partir des répertoires `--add-dir` :

275 

276| Configuration | Chargé à partir de `--add-dir` |

277| :---------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

278| [Skills](/fr/skills) dans `.claude/skills/` | Oui, avec rechargement en direct |

279| Paramètres de plugin dans `.claude/settings.json` | `enabledPlugins` et `extraKnownMarketplaces` uniquement |

280| Fichiers [CLAUDE.md](/fr/memory), `.claude/rules/` et `CLAUDE.local.md` | Uniquement lorsque `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1` est défini. `CLAUDE.local.md` nécessite également le paramètre `local`, qui est activé par défaut |

281 

282Tout le reste, y compris les subagents, les commandes, les styles de sortie, les hooks et d'autres paramètres, est découvert uniquement à partir du répertoire de travail actuel et de ses parents, de votre répertoire utilisateur à `~/.claude/` et des paramètres gérés. Pour partager cette configuration entre les projets, utilisez l'une de ces approches :

283 

284* **Configuration au niveau utilisateur** : placez les fichiers dans `~/.claude/agents/`, `~/.claude/output-styles/` ou `~/.claude/settings.json` pour les rendre disponibles dans chaque projet

285* **Plugins** : empaquetez et distribuez la configuration en tant que [plugin](/fr/plugins) que les équipes peuvent installer

286* **Lancer à partir du répertoire de configuration** : exécutez Claude Code à partir du répertoire contenant la configuration `.claude/` que vous souhaitez

287 

288## Comment les autorisations interagissent avec le sandboxing

289 

290Les autorisations et le [sandboxing](/fr/sandboxing) sont des couches de sécurité complémentaires :

291 

292* **Les autorisations** contrôlent quels outils Claude Code peut utiliser et quels fichiers ou domaines il peut accéder. Elles s'appliquent à tous les outils (Bash, Read, Edit, WebFetch, MCP et autres).

293* **Le sandboxing** fournit une application au niveau du système d'exploitation qui restreint l'accès du système de fichiers et du réseau de l'outil Bash. Il s'applique uniquement aux commandes Bash et à leurs processus enfants.

294 

295Utilisez les deux pour une défense en profondeur :

296 

297* Les règles de refus d'autorisation empêchent Claude d'essayer même d'accéder aux ressources restreintes

298* Les restrictions de sandbox empêchent les commandes Bash d'atteindre les ressources en dehors des limites définies, même si une injection de prompt contourne la prise de décision de Claude

299* Les restrictions du système de fichiers dans le sandbox utilisent les règles de refus Read et Edit, pas une configuration de sandbox séparée

300* Les restrictions réseau combinent les règles d'autorisation WebFetch avec les listes `allowedDomains` et `deniedDomains` du sandbox

301 

302Lorsque le sandboxing est activé avec `autoAllowBashIfSandboxed: true`, qui est la valeur par défaut, les commandes Bash en sandbox s'exécutent sans invite même si vos autorisations incluent `ask: Bash(*)`. La limite du sandbox remplace l'invite par commande. Les règles de refus explicites s'appliquent toujours, et les commandes `rm` ou `rmdir` qui ciblent `/`, votre répertoire personnel ou d'autres chemins système critiques déclenchent toujours une invite. Consultez [modes sandbox](/fr/sandboxing#sandbox-modes) pour modifier ce comportement.

303 

304## Paramètres gérés

305 

306Pour les organisations qui ont besoin d'un contrôle centralisé sur la configuration de Claude Code, les administrateurs peuvent déployer des paramètres gérés qui ne peuvent pas être remplacés par les paramètres utilisateur ou projet. Ces paramètres de politique suivent le même format que les fichiers de paramètres réguliers et peuvent être livrés via des politiques MDM/au niveau du système d'exploitation, des fichiers de paramètres gérés ou des [paramètres gérés par le serveur](/fr/server-managed-settings). Consultez [fichiers de paramètres](/fr/settings#settings-files) pour les mécanismes de livraison et les emplacements de fichiers.

307 

308### Paramètres gérés uniquement

309 

310Les paramètres suivants ne sont efficaces que dans les paramètres gérés. Les placer dans les fichiers de paramètres utilisateur ou projet n'a aucun effet.

311 

312| Paramètre | Description |

313| :--------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

314| `allowedChannelPlugins` | Liste blanche des plugins de canal qui peuvent envoyer des messages. Remplace la liste blanche Anthropic par défaut lorsqu'elle est définie. Nécessite `channelsEnabled: true`. Consultez [Restreindre les plugins de canal qui peuvent s'exécuter](/fr/channels#restrict-which-channel-plugins-can-run) |

315| `allowManagedHooksOnly` | Lorsque `true`, seuls les hooks gérés, les hooks SDK et les hooks des plugins activés de force dans les paramètres gérés `enabledPlugins` sont chargés. Les hooks utilisateur, projet et tous les autres hooks de plugin sont bloqués |

316| `allowManagedMcpServersOnly` | Lorsque `true`, seuls les `allowedMcpServers` des paramètres gérés sont respectés. `deniedMcpServers` fusionne toujours à partir de toutes les sources. Consultez [Configuration MCP gérée](/fr/mcp#managed-mcp-configuration) |

317| `allowManagedPermissionRulesOnly` | Lorsque `true`, empêche les paramètres utilisateur et projet de définir les règles d'autorisation `allow`, `ask` ou `deny`. Seules les règles dans les paramètres gérés s'appliquent |

318| `blockedMarketplaces` | Liste noire des sources de marketplace. Les sources bloquées sont vérifiées avant le téléchargement, elles ne touchent donc jamais le système de fichiers. Consultez [restrictions de marketplace gérées](/fr/plugin-marketplaces#managed-marketplace-restrictions) |

319| `channelsEnabled` | Autoriser les [canaux](/fr/channels) pour les utilisateurs Team et Enterprise. Non défini ou `false` bloque la livraison des messages de canal indépendamment de ce que les utilisateurs passent à `--channels` |

320| `forceRemoteSettingsRefresh` | Lorsque `true`, bloque le démarrage de la CLI jusqu'à ce que les paramètres gérés distants soient fraîchement récupérés et se termine si la récupération échoue. Consultez [application fail-closed](/fr/server-managed-settings#enforce-fail-closed-startup) |

321| `pluginTrustMessage` | Message personnalisé ajouté à l'avertissement de confiance du plugin affiché avant l'installation |

322| `sandbox.filesystem.allowManagedReadPathsOnly` | Lorsque `true`, seuls les chemins `filesystem.allowRead` des paramètres gérés sont respectés. `denyRead` fusionne toujours à partir de toutes les sources |

323| `sandbox.network.allowManagedDomainsOnly` | Lorsque `true`, seuls les `allowedDomains` et les règles d'autorisation `WebFetch(domain:...)` des paramètres gérés sont respectés. Les domaines non autorisés sont bloqués automatiquement sans inviter l'utilisateur. Les domaines refusés fusionnent toujours à partir de toutes les sources |

324| `strictKnownMarketplaces` | Contrôle quels marketplaces de plugins les utilisateurs peuvent ajouter et installer des plugins à partir de. Consultez [restrictions de marketplace gérées](/fr/plugin-marketplaces#managed-marketplace-restrictions) |

325| `wslInheritsWindowsSettings` | Lorsque `true` dans la clé de registre Windows HKLM ou `C:\Program Files\ClaudeCode\managed-settings.json`, WSL lit les paramètres gérés à partir de la chaîne de politique Windows en plus de `/etc/claude-code`. Consultez [Fichiers de paramètres](/fr/settings#settings-files) |

326 

327`disableBypassPermissionsMode` est généralement placé dans les paramètres gérés pour appliquer la politique organisationnelle, mais il fonctionne à partir de n'importe quelle portée. Un utilisateur peut le définir dans ses propres paramètres pour se verrouiller hors du mode de contournement.

328 

329<Note>

330 L'accès à [Remote Control](/fr/remote-control) et aux [sessions web](/fr/claude-code-on-the-web) n'est pas contrôlé par une clé de paramètres gérés. Sur les plans Team et Enterprise, un administrateur active ou désactive ces fonctionnalités dans les [paramètres d'administration Claude Code](https://claude.ai/admin-settings/claude-code).

331</Note>

332 

333## Examiner les refus du mode auto

334 

335Lorsque le [mode auto](/fr/permission-modes#eliminate-prompts-with-auto-mode) refuse un appel d'outil, une notification apparaît et l'action refusée est enregistrée dans `/permissions` sous l'onglet Récemment refusé. Appuyez sur `r` sur une action refusée pour la marquer pour réessai : lorsque vous quittez la boîte de dialogue, Claude Code envoie un message indiquant au modèle qu'il peut réessayer cet appel d'outil et reprend la conversation.

336 

337Pour réagir aux refus par programmation, utilisez le [hook `PermissionDenied`](/fr/hooks#permissiondenied).

338 

339## Configurer le classificateur du mode auto

340 

341Le [mode auto](/fr/permission-modes#eliminate-prompts-with-auto-mode) utilise un modèle de classificateur pour décider si chaque action est sûre à exécuter sans inviter. Par défaut, il ne fait confiance qu'au répertoire de travail et, s'il est présent, aux remotes du référentiel actuel. Les actions comme pousser vers l'organisation de contrôle de source de votre entreprise ou écrire dans un bucket cloud d'équipe seront bloquées comme exfiltration de données potentielle.

342 

343Pour ajuster ce que le classificateur autorise ou bloque, ajoutez des instructions à votre fichier [CLAUDE.md](/fr/memory). Le classificateur lit CLAUDE.md à partir des répertoires approuvés aux côtés de la conversation, donc une instruction comme « ne jamais force push » oriente à la fois Claude et le classificateur en même temps. Commencez ici pour les conventions de projet et les règles de comportement.

344 

345Pour les règles qui s'appliquent à plusieurs projets, comme l'infrastructure approuvée ou les règles de refus à l'échelle de l'organisation, utilisez le bloc de paramètres `autoMode`. Le classificateur lit `autoMode` à partir des paramètres utilisateur, `.claude/settings.local.json` et des paramètres gérés. Il ne lit pas à partir des paramètres de projet partagés dans `.claude/settings.json`, car un référentiel archivé pourrait autrement injecter ses propres règles d'autorisation.

346 

347| Portée | Fichier | Utiliser pour |

348| :---------------------------- | :---------------------------- | :--------------------------------------------------------- |

349| Un développeur | `~/.claude/settings.json` | Infrastructure approuvée personnelle |

350| Un projet, un développeur | `.claude/settings.local.json` | Buckets ou services approuvés par projet, gitignored |

351| À l'échelle de l'organisation | Paramètres gérés | Infrastructure approuvée appliquée à tous les développeurs |

352 

353Les entrées de chaque portée sont combinées. Un développeur peut étendre `environment`, `allow` et `soft_deny` avec des entrées personnelles mais ne peut pas supprimer les entrées que les paramètres gérés fournissent. Parce que les règles d'autorisation agissent comme des exceptions aux règles de blocage à l'intérieur du classificateur, une entrée `allow` ajoutée par un développeur peut remplacer une entrée `soft_deny` d'organisation : la combinaison est additive, pas une limite de politique dure. Si vous avez besoin d'une règle que les développeurs ne peuvent pas contourner, utilisez plutôt `permissions.deny` dans les paramètres gérés, qui bloque les actions avant que le classificateur ne soit consulté.

354 

355### Définir l'infrastructure approuvée

356 

357Pour la plupart des organisations, `autoMode.environment` est le seul champ que vous devez définir. Il dit au classificateur quels référentiels, buckets et domaines sont approuvés, sans toucher aux règles de blocage et d'autorisation intégrées. Le classificateur utilise `environment` pour décider ce que signifie « externe » : toute destination non listée est une cible d'exfiltration potentielle.

358 

359```json theme={null}

360{

361 "autoMode": {

362 "environment": [

363 "Source control: github.example.com/acme-corp and all repos under it",

364 "Trusted cloud buckets: s3://acme-build-artifacts, gs://acme-ml-datasets",

365 "Trusted internal domains: *.corp.example.com, api.internal.example.com",

366 "Key internal services: Jenkins at ci.example.com, Artifactory at artifacts.example.com"

367 ]

368 }

369}

370```

371 

372Les entrées sont en prose, pas en regex ou en modèles d'outils. Le classificateur les lit comme des règles en langage naturel. Écrivez-les comme vous décririez votre infrastructure à un nouvel ingénieur. Une section d'environnement approfondie couvre :

373 

374* **Organisation** : le nom de votre entreprise et ce pour quoi Claude Code est principalement utilisé, comme le développement logiciel, l'automatisation de l'infrastructure ou l'ingénierie des données

375* **Contrôle de source** : chaque organisation GitHub, GitLab ou Bitbucket vers laquelle vos développeurs poussent

376* **Fournisseurs cloud et buckets approuvés** : noms de buckets ou préfixes que Claude devrait pouvoir lire et écrire

377* **Domaines internes approuvés** : noms d'hôtes pour les API, tableaux de bord et services à l'intérieur de votre réseau, comme `*.internal.example.com`

378* **Services internes clés** : CI, registres d'artefacts, index de packages internes, outils d'incident

379* **Contexte supplémentaire** : contraintes d'industrie réglementée, infrastructure multi-locataire ou exigences de conformité qui affectent ce que le classificateur devrait traiter comme risqué

380 

381Un modèle de démarrage utile : remplissez les champs entre crochets et supprimez les lignes qui ne s'appliquent pas :

382 

383```json theme={null}

384{

385 "autoMode": {

386 "environment": [

387 "Organization: {COMPANY_NAME}. Primary use: {PRIMARY_USE_CASE, e.g. software development, infrastructure automation}",

388 "Source control: {SOURCE_CONTROL, e.g. GitHub org github.example.com/acme-corp}",

389 "Cloud provider(s): {CLOUD_PROVIDERS, e.g. AWS, GCP, Azure}",

390 "Trusted cloud buckets: {TRUSTED_BUCKETS, e.g. s3://acme-builds, gs://acme-datasets}",

391 "Trusted internal domains: {TRUSTED_DOMAINS, e.g. *.internal.example.com, api.example.com}",

392 "Key internal services: {SERVICES, e.g. Jenkins at ci.example.com, Artifactory at artifacts.example.com}",

393 "Additional context: {EXTRA, e.g. regulated industry, multi-tenant infrastructure, compliance requirements}"

394 ]

395 }

396}

397```

398 

399Plus le contexte spécifique que vous donnez, mieux le classificateur peut distinguer les opérations internes de routine des tentatives d'exfiltration.

400 

401Vous n'avez pas besoin de tout remplir à la fois. Un déploiement raisonnable : commencez par les paramètres par défaut et ajoutez votre organisation de contrôle de source et vos services internes clés, ce qui résout les faux positifs les plus courants comme pousser vers vos propres référentiels. Ajoutez ensuite les domaines approuvés et les buckets cloud. Remplissez le reste à mesure que les blocages se produisent.

402 

403### Remplacer les règles de blocage et d'autorisation

404 

405Deux champs supplémentaires vous permettent de remplacer les listes de règles intégrées du classificateur : `autoMode.soft_deny` contrôle ce qui est bloqué, et `autoMode.allow` contrôle quelles exceptions s'appliquent. Chacun est un tableau de descriptions en prose, lu comme des règles en langage naturel.

406 

407À l'intérieur du classificateur, la précédence est : les règles `soft_deny` bloquent d'abord, puis les règles `allow` remplacent comme exceptions, puis l'intention explicite de l'utilisateur remplace les deux. Si le message de l'utilisateur décrit directement et spécifiquement l'action exacte que Claude est sur le point d'entreprendre, le classificateur l'autorise même si une règle `soft_deny` correspond. Les demandes générales ne comptent pas : demander à Claude de « nettoyer le référentiel » n'autorise pas un force-push, mais demander à Claude de « force-push cette branche » le fait.

408 

409Pour assouplir : supprimez les règles de `soft_deny` lorsque les paramètres par défaut bloquent quelque chose que votre pipeline protège déjà avec l'examen des PR, CI ou les environnements de staging, ou ajoutez à `allow` lorsque le classificateur signale à plusieurs reprises un modèle de routine que les exceptions par défaut ne couvrent pas. Pour renforcer : ajoutez à `soft_deny` pour les risques spécifiques à votre environnement que les paramètres par défaut manquent, ou supprimez de `allow` pour maintenir une exception par défaut aux règles de blocage. Dans tous les cas, exécutez `claude auto-mode defaults` pour obtenir les listes par défaut complètes, puis copiez et modifiez : ne commencez jamais par une liste vide.

410 

411```json theme={null}

412{

413 "autoMode": {

414 "environment": [

415 "Source control: github.example.com/acme-corp and all repos under it"

416 ],

417 "allow": [

418 "Deploying to the staging namespace is allowed: staging is isolated from production and resets nightly",

419 "Writing to s3://acme-scratch/ is allowed: ephemeral bucket with a 7-day lifecycle policy"

420 ],

421 "soft_deny": [

422 "Never run database migrations outside the migrations CLI, even against dev databases",

423 "Never modify files under infra/terraform/prod/: production infrastructure changes go through the review workflow",

424 "...copy full default soft_deny list here first, then add your rules..."

425 ]

426 }

427}

428```

429 

430<Danger>

431 Définir `allow` ou `soft_deny` remplace la liste par défaut entière pour cette section. Si vous définissez `soft_deny` avec une seule entrée, chaque règle de blocage intégrée est supprimée : force push, exfiltration de données, `curl | bash`, déploiements de production et toutes les autres règles de blocage par défaut deviennent autorisés. Pour personnaliser en toute sécurité, exécutez `claude auto-mode defaults` pour imprimer les règles intégrées, copiez-les dans votre fichier de paramètres, puis examinez chaque règle par rapport à votre propre pipeline et tolérance au risque. Supprimez uniquement les règles pour les risques que votre infrastructure atténue déjà.

432</Danger>

433 

434Les trois sections sont évaluées indépendamment, donc définir `environment` seul laisse les listes `allow` et `soft_deny` par défaut intactes.

435 

436### Inspecter les paramètres par défaut et votre configuration effective

437 

438Parce que définir `allow` ou `soft_deny` remplace les paramètres par défaut, commencez toute personnalisation en copiant les listes par défaut complètes. Trois sous-commandes CLI vous aident à inspecter et valider :

439 

440```bash theme={null}

441claude auto-mode defaults # the built-in environment, allow, and soft_deny rules

442claude auto-mode config # what the classifier actually uses: your settings where set, defaults otherwise

443claude auto-mode critique # get AI feedback on your custom allow and soft_deny rules

444```

445 

446Enregistrez la sortie de `claude auto-mode defaults` dans un fichier, modifiez les listes pour correspondre à votre politique et collez le résultat dans votre fichier de paramètres. Après l'enregistrement, exécutez `claude auto-mode config` pour confirmer que les règles effectives sont ce que vous attendez. Si vous avez écrit des règles personnalisées, `claude auto-mode critique` les examine et signale les entrées qui sont ambiguës, redondantes ou susceptibles de causer des faux positifs.

447 

448## Précédence des paramètres

449 

450Les règles d'autorisation suivent la même [précédence des paramètres](/fr/settings#settings-precedence) que tous les autres paramètres de Claude Code :

451 

4521. **Paramètres gérés** : ne peuvent pas être remplacés par aucun autre niveau, y compris les arguments de ligne de commande

4532. **Arguments de ligne de commande** : remplacements de session temporaires

4543. **Paramètres de projet local** (`.claude/settings.local.json`)

4554. **Paramètres de projet partagés** (`.claude/settings.json`)

4565. **Paramètres utilisateur** (`~/.claude/settings.json`)

457 

458Si un outil est refusé à n'importe quel niveau, aucun autre niveau ne peut l'autoriser. Par exemple, un refus de paramètres gérés ne peut pas être remplacé par `--allowedTools`, et `--disallowedTools` peut ajouter des restrictions au-delà de ce que les paramètres gérés définissent.

459 

460Si une autorisation est autorisée dans les paramètres utilisateur mais refusée dans les paramètres de projet, le paramètre de projet prend la priorité et l'autorisation est bloquée.

461 

462## Exemples de configurations

463 

464Ce [référentiel](https://github.com/anthropics/claude-code/tree/main/examples/settings) inclut des configurations de paramètres de démarrage pour les scénarios de déploiement courants. Utilisez-les comme points de départ et ajustez-les pour répondre à vos besoins.

465 

466## Voir aussi

467 

468* [Paramètres](/fr/settings) : référence de configuration complète incluant le tableau des paramètres d'autorisation

469* [Configurer le mode auto](/fr/auto-mode-config) : dites au classificateur du mode auto quelle infrastructure votre organisation approuve

470* [Sandboxing](/fr/sandboxing) : isolation du système de fichiers et du réseau au niveau du système d'exploitation pour les commandes Bash

471* [Authentification](/fr/authentication) : configurer l'accès utilisateur à Claude Code

472* [Sécurité](/fr/security) : garanties de sécurité et meilleures pratiques

473* [Hooks](/fr/hooks-guide) : automatiser les flux de travail et étendre l'évaluation des autorisations

platforms.md +78 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Plateformes et intégrations

6 

7> Choisissez où exécuter Claude Code et ce que vous y connecter. Comparez le CLI, Desktop, VS Code, JetBrains, le web et les intégrations comme Chrome, Slack et CI/CD.

8 

9Claude Code exécute le même moteur sous-jacent partout, mais chaque surface est adaptée à une façon différente de travailler. Cette page vous aide à choisir la bonne plateforme pour votre flux de travail et à connecter les outils que vous utilisez déjà.

10 

11## Où exécuter Claude Code

12 

13Choisissez une plateforme en fonction de votre façon de travailler et de l'endroit où se trouve votre projet.

14 

15| Plateforme | Idéale pour | Ce que vous obtenez |

16| :-------------------------------- | :----------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

17| [CLI](/fr/quickstart) | Flux de travail en terminal, scripts, serveurs distants | Ensemble complet de fonctionnalités, [Agent SDK](/fr/headless), fournisseurs tiers |

18| [Desktop](/fr/desktop) | Examen visuel, sessions parallèles, configuration gérée | Visionneuse de différences, aperçu de l'application, [utilisation de l'ordinateur](/fr/desktop#let-claude-use-your-computer) et [Dispatch](/fr/desktop#sessions-from-dispatch) sur Pro et Max |

19| [VS Code](/fr/vs-code) | Travailler dans VS Code sans basculer vers un terminal | Différences intégrées, terminal intégré, contexte de fichier |

20| [JetBrains](/fr/jetbrains) | Travailler dans IntelliJ, PyCharm, WebStorm ou d'autres IDE JetBrains | Visionneuse de différences, partage de sélection, session de terminal |

21| [Web](/fr/claude-code-on-the-web) | Tâches longues qui ne nécessitent pas beaucoup de direction, ou travail qui devrait continuer quand vous êtes hors ligne | Cloud géré par Anthropic, continue après votre déconnexion |

22 

23Le CLI est la surface la plus complète pour le travail natif en terminal : les scripts, les fournisseurs tiers et l'Agent SDK sont exclusifs au CLI. Desktop et les extensions IDE échangent certaines fonctionnalités exclusives au CLI contre un examen visuel et une intégration plus étroite de l'éditeur. Le web s'exécute dans le cloud d'Anthropic, donc les tâches continuent après votre déconnexion.

24 

25Vous pouvez mélanger les surfaces sur le même projet. La configuration, la mémoire du projet et les serveurs MCP sont partagés entre les surfaces locales.

26 

27## Connectez vos outils

28 

29Les intégrations permettent à Claude de travailler avec des services en dehors de votre base de code.

30 

31| Intégration | Ce qu'elle fait | Utilisez-la pour |

32| :----------------------------------- | :----------------------------------------------------- | :----------------------------------------------------------------------------------- |

33| [Chrome](/fr/chrome) | Contrôle votre navigateur avec vos sessions connectées | Tester les applications web, remplir les formulaires, automatiser les sites sans API |

34| [GitHub Actions](/fr/github-actions) | Exécute Claude dans votre pipeline CI | Examens automatisés des PR, triage des problèmes, maintenance programmée |

35| [GitLab CI/CD](/fr/gitlab-ci-cd) | Identique à GitHub Actions pour GitLab | Automatisation pilotée par CI sur GitLab |

36| [Code Review](/fr/code-review) | Examine automatiquement chaque PR | Détecter les bogues avant l'examen humain |

37| [Slack](/fr/slack) | Répond aux mentions `@Claude` dans vos canaux | Transformer les rapports de bogues en demandes de tirage à partir du chat d'équipe |

38 

39Pour les intégrations non listées ici, les [serveurs MCP](/fr/mcp) et les [connecteurs](/fr/desktop#connect-external-tools) vous permettent de connecter presque n'importe quoi : Linear, Notion, Google Drive ou vos propres API internes.

40 

41## Travaillez quand vous êtes loin de votre terminal

42 

43Claude Code offers several ways to work when you're not at your terminal. They differ in what triggers the work, where Claude runs, and how much you need to set up.

44 

45| | Trigger | Claude runs on | Setup | Best for |

46| :--------------------------------------------- | :--------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------ |

47| [Dispatch](/en/desktop#sessions-from-dispatch) | Message a task from the Claude mobile app | Your machine (Desktop) | [Pair the mobile app with Desktop](https://support.claude.com/en/articles/13947068) | Delegating work while you're away, minimal setup |

48| [Remote Control](/en/remote-control) | Drive a running session from [claude.ai/code](https://claude.ai/code) or the Claude mobile app | Your machine (CLI or VS Code) | Run `claude remote-control` | Steering in-progress work from another device |

49| [Channels](/en/channels) | Push events from a chat app like Telegram or Discord, or your own server | Your machine (CLI) | [Install a channel plugin](/en/channels#quickstart) or [build your own](/en/channels-reference) | Reacting to external events like CI failures or chat messages |

50| [Slack](/en/slack) | Mention `@Claude` in a team channel | Anthropic cloud | [Install the Slack app](/en/slack#setting-up-claude-code-in-slack) with [Claude Code on the web](/en/claude-code-on-the-web) enabled | PRs and reviews from team chat |

51| [Scheduled tasks](/en/scheduled-tasks) | Set a schedule | [CLI](/en/scheduled-tasks), [Desktop](/en/desktop-scheduled-tasks), or [cloud](/en/routines) | Pick a frequency | Recurring automation like daily reviews |

52 

53Si vous ne savez pas par où commencer, [installez le CLI](/fr/quickstart) et exécutez-le dans un répertoire de projet. Si vous préférez ne pas utiliser un terminal, [Desktop](/fr/desktop-quickstart) vous donne le même moteur avec une interface graphique.

54 

55## Ressources connexes

56 

57### Plateformes

58 

59* [Démarrage rapide CLI](/fr/quickstart) : installez et exécutez votre première commande dans le terminal

60* [Desktop](/fr/desktop) : examen visuel des différences, sessions parallèles, utilisation de l'ordinateur et Dispatch

61* [VS Code](/fr/vs-code) : l'extension Claude Code dans votre éditeur

62* [JetBrains](/fr/jetbrains) : l'extension pour IntelliJ, PyCharm et autres IDE JetBrains

63* [Claude Code sur le web](/fr/claude-code-on-the-web) : sessions cloud qui continuent à s'exécuter quand vous vous déconnectez

64 

65### Intégrations

66 

67* [Chrome](/fr/chrome) : automatisez les tâches du navigateur avec vos sessions connectées

68* [GitHub Actions](/fr/github-actions) : exécutez Claude dans votre pipeline CI

69* [GitLab CI/CD](/fr/gitlab-ci-cd) : la même chose pour GitLab

70* [Code Review](/fr/code-review) : examen automatique à chaque demande de tirage

71* [Slack](/fr/slack) : envoyez des tâches à partir du chat d'équipe, récupérez les PR en retour

72 

73### Accès à distance

74 

75* [Dispatch](/fr/desktop#sessions-from-dispatch) : envoyez un message avec une tâche depuis votre téléphone et il peut générer une session Desktop

76* [Remote Control](/fr/remote-control) : pilotez une session en cours depuis votre téléphone ou navigateur

77* [Channels](/fr/channels) : poussez les événements des applications de chat ou de vos propres serveurs dans une session

78* [Scheduled tasks](/fr/scheduled-tasks) : exécutez les invites selon un calendrier récurrent

plugin-dependencies.md +153 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Contraindre les versions des dépendances de plugin

6 

7> Déclarez des contraintes de version sur les dépendances de plugin afin que votre plugin continue de fonctionner lorsqu'un plugin en amont publie une modification incompatible.

8 

9Un plugin peut dépendre d'autres plugins en les listant dans `plugin.json` ou dans son entrée marketplace. Par défaut, une dépendance suit la dernière version disponible, donc une version en amont peut modifier la dépendance sans avertissement. Les contraintes de version vous permettent de maintenir une dépendance à une plage de version testée jusqu'à ce que vous décidiez de la mettre à jour.

10 

11Lorsque vous installez un plugin qui déclare des dépendances, Claude Code les résout et les installe automatiquement et liste les dépendances qui ont été ajoutées à la fin de la sortie d'installation. Si une dépendance disparaît ultérieurement, `/reload-plugins` et la mise à jour automatique des plugins en arrière-plan la réinstalleront, à condition que son marketplace soit déjà dans vos marketplaces configurés. Réexécuter `claude plugin install` sur le plugin dépendant, ou ajouter un marketplace avec `claude plugin marketplace add`, résout également toute dépendance manquante en attente. Les dépendances d'un marketplace que vous n'avez pas ajouté restent non résolues.

12 

13Ce guide est destiné aux auteurs de plugins qui déclarent des dépendances dans `plugin.json` et aux responsables de marketplace qui balisent les versions. Pour installer des plugins qui ont des dépendances, consultez [Découvrir et installer des plugins](/fr/discover-plugins). Pour le schéma de manifeste complet, consultez la [Référence des plugins](/fr/plugins-reference).

14 

15<Note>

16 Les contraintes de version des dépendances nécessitent Claude Code v2.1.110 ou version ultérieure.

17</Note>

18 

19## Pourquoi contraindre les versions des dépendances

20 

21Considérez un marketplace interne où deux équipes publient des plugins. L'équipe plateforme maintient `secrets-vault`, un serveur MCP qui encapsule un backend de secrets. L'équipe de déploiement maintient `deploy-kit`, qui appelle `secrets-vault` pour récupérer les identifiants lors des déploiements.

22 

23`deploy-kit` est testé contre `secrets-vault` v2.1.0. Sans contrainte de version, la prochaine fois que l'équipe plateforme balisera une version qui renomme un outil MCP, la mise à jour automatique déplacera chaque `secrets-vault` de l'ingénieur vers la nouvelle version et `deploy-kit` se cassera.

24 

25Avec une contrainte de version, `deploy-kit` déclare qu'il a besoin de `secrets-vault` dans la plage `~2.1.0`. Les ingénieurs avec `deploy-kit` installé restent sur le correctif `2.1.x` le plus élevé correspondant. L'équipe de déploiement effectue la mise à niveau selon son propre calendrier en publiant une nouvelle version de `deploy-kit` avec une contrainte plus large.

26 

27## Déclarer une dépendance avec une contrainte de version

28 

29Listez les dépendances dans le tableau `dependencies` du `plugin.json` de votre plugin. Chaque entrée est soit un nom de plugin, soit un objet avec une contrainte de version.

30 

31Le manifeste suivant déclare une dépendance sans version et une dépendance contrainte :

32 

33```json .claude-plugin/plugin.json theme={null}

34{

35 "name": "deploy-kit",

36 "version": "3.1.0",

37 "dependencies": [

38 "audit-logger",

39 { "name": "secrets-vault", "version": "~2.1.0" }

40 ]

41}

42```

43 

44Une entrée peut être une simple chaîne avec uniquement le nom du plugin, comme `"audit-logger"` dans l'exemple ci-dessus, qui dépend de la version que le marketplace de ce plugin fournit. Pour plus de contrôle, utilisez un objet avec ces champs :

45 

46| Champ | Type | Description |

47| :------------ | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

48| `name` | string | Nom du plugin. Se résout dans le même marketplace que le plugin déclarant. Obligatoire. |

49| `version` | string | Une [plage semver](https://github.com/npm/node-semver#ranges) telle que `~2.1.0`, `^2.0`, `>=1.4`, ou `=2.1.0`. La dépendance est récupérée à la version balisée la plus élevée qui satisfait cette plage. |

50| `marketplace` | string | Un marketplace différent pour résoudre `name` dans. Les dépendances inter-marketplace sont bloquées sauf si le marketplace cible est listé dans [`allowCrossMarketplaceDependenciesOn`](#depend-on-a-plugin-from-another-marketplace) dans le `marketplace.json` du marketplace racine. |

51 

52Le champ `version` accepte toute expression supportée par le package `semver` de Node, y compris les plages caret, tilde, hyphen et comparator. Les versions de pré-version telles que `2.0.0-beta.1` sont exclues sauf si votre plage opte pour un suffixe de pré-version comme `^2.0.0-0`.

53 

54## Dépendre d'un plugin d'un autre marketplace

55 

56Par défaut, Claude Code refuse d'installer automatiquement une dépendance qui se trouve dans un marketplace différent de celui du plugin qui la déclare. Cela empêche un marketplace de silencieusement extraire des plugins d'une source que vous n'avez pas examinée.

57 

58Pour l'autoriser, le responsable du marketplace racine ajoute le nom du marketplace cible à `allowCrossMarketplaceDependenciesOn` dans `marketplace.json`. Le marketplace racine est celui qui héberge le plugin que l'utilisateur installe ; seule sa liste d'autorisation est consultée, donc la confiance ne s'enchaîne pas à travers les marketplaces intermédiaires.

59 

60Le `marketplace.json` suivant permet à `deploy-kit` de dépendre d'un plugin de `acme-shared` :

61 

62```json .claude-plugin/marketplace.json theme={null}

63{

64 "name": "acme-tools",

65 "owner": { "name": "Acme" },

66 "allowCrossMarketplaceDependenciesOn": ["acme-shared"],

67 "plugins": [

68 {

69 "name": "deploy-kit",

70 "source": "./deploy-kit",

71 "dependencies": [

72 { "name": "audit-logger", "marketplace": "acme-shared" }

73 ]

74 }

75 ]

76}

77```

78 

79Si le champ est manquant ou n'inclut pas le marketplace cible, l'installation échoue avec une erreur `cross-marketplace` nommant le champ à définir. Les utilisateurs peuvent toujours installer la dépendance manuellement en premier, ce qui satisfait la contrainte sans modifier la liste d'autorisation.

80 

81## Baliser les versions de plugin pour la résolution de version

82 

83Les contraintes de version se résolvent par rapport aux balises git sur le référentiel du marketplace. Pour que Claude Code trouve les versions disponibles d'une dépendance, les versions du plugin en amont doivent être balisées en utilisant une convention de nommage spécifique.

84 

85Balisez chaque version comme `{plugin-name}--v{version}`, où `{version}` correspond au champ `version` dans le `plugin.json` de ce commit. À partir du répertoire du plugin, exécutez :

86 

87```bash theme={null}

88claude plugin tag --push

89```

90 

91La commande `claude plugin tag` dérive le nom de la balise à partir du manifeste du plugin et de l'entrée du marketplace qui l'entoure. Avant de créer la balise, elle valide le contenu du plugin, vérifie que `plugin.json` et l'entrée du marketplace s'accordent sur la version, exige un arbre de travail propre sous le répertoire du plugin, et refuse si la balise existe déjà. Ajoutez `--dry-run` pour voir ce qui serait balisé sans le créer. L'exécution directe de `git tag secrets-vault--v2.1.0` est équivalente si vous maintenez `plugin.json` et l'entrée du marketplace en synchronisation vous-même.

92 

93Le préfixe du nom du plugin permet à un référentiel de marketplace d'héberger plusieurs plugins avec des lignes de version indépendantes. Le séparateur `--v` est analysé comme une correspondance de préfixe sur le nom complet du plugin, donc les noms de plugins qui contiennent des traits d'union sont gérés correctement.

94 

95Lorsque vous installez un plugin qui déclare `{ "name": "secrets-vault", "version": "~2.1.0" }`, Claude Code liste les balises du marketplace, filtre celles commençant par `secrets-vault--v`, et récupère la version la plus élevée satisfaisant `~2.1.0`. Si aucune balise correspondante n'existe, le plugin dépendant est désactivé avec une erreur listant les versions disponibles.

96 

97Le semver de la balise résolue est enregistré séparément de la `version` du `plugin.json`, donc les vérifications de contrainte utilisent la balise qui a été réellement récupérée même si la `version` du `plugin.json` à ce commit a une valeur obsolète. Le nom du répertoire de cache pour une installation résolue par balise inclut un suffixe SHA de commit de 12 caractères, donc si un responsable force-déplace une balise vers un commit différent, l'installation suivante obtient un répertoire de cache frais au lieu de réutiliser du contenu obsolète.

98 

99<Note>

100 Pour les sources de marketplace `npm`, la contrainte ne contrôle pas quelle version est récupérée, car la résolution basée sur les balises s'applique uniquement aux sources soutenues par git. La contrainte est toujours vérifiée au moment du chargement, et le plugin dépendant est désactivé avec `dependency-version-unsatisfied` si la version installée ne la satisfait pas.

101</Note>

102 

103## Comment les contraintes interagissent

104 

105Lorsque plusieurs plugins installés contraignent la même dépendance, Claude Code intersecte leurs plages et résout la dépendance à la version la plus élevée qui satisfait tous les critères. Le tableau ci-dessous montre comment les combinaisons courantes se résolvent.

106 

107| Plugin A nécessite | Plugin B nécessite | Résultat |

108| :----------------- | :----------------- | :----------------------------------------------------------------------------------------------------------------------------- |

109| `^2.0` | `>=2.1` | Une installation à la balise `2.x` la plus élevée à ou au-dessus de `2.1.0`. Les deux plugins se chargent. |

110| `~2.1` | `~3.0` | L'installation du plugin B échoue avec `range-conflict`. Le plugin A et la dépendance restent comme ils étaient. |

111| `=2.1.0` | aucun | La dépendance reste à `2.1.0`. La mise à jour automatique ignore les versions plus récentes tant que le plugin A est installé. |

112 

113La mise à jour automatique récupère une dépendance contrainte à la balise git la plus élevée qui satisfait la plage de chaque plugin installé, plutôt qu'à la dernière version du marketplace, de sorte que la dépendance continue à recevoir des mises à jour dans sa plage autorisée. Si aucune balise ne satisfait toutes les plages, la mise à jour est ignorée et l'ignorance apparaît dans `/doctor` et l'onglet Erreurs de `/plugin`, en nommant le plugin contraignant.

114 

115Lorsque vous désinstallez le dernier plugin qui contraint une dépendance, la dépendance n'est plus maintenue et reprend le suivi de son entrée marketplace lors de la prochaine mise à jour.

116 

117## Supprimer les dépendances auto-installées orphelines

118 

119Les dépendances auto-installées restent sur le disque après la désinstallation des plugins qui les ont installées, au cas où vous réinstalliez un plugin dépendant ou souhaiteriez continuer à utiliser la dépendance directement. Pour les nettoyer, exécutez `claude plugin prune` pour lister les dépendances auto-installées qui n'ont plus aucun plugin installé les exigeant et les supprimer après une invite de confirmation. Cela nécessite Claude Code v2.1.121 ou version ultérieure.

120 

121```bash theme={null}

122claude plugin prune

123```

124 

125Par défaut, prune fonctionne à la portée utilisateur. Utilisez `--scope project` ou `--scope local` pour cibler une portée différente. Passez `--dry-run` pour lister ce qui serait supprimé sans rien modifier. Passez `-y` pour ignorer l'invite de confirmation. Lorsque stdin ou stdout n'est pas un terminal, prune liste les orphelins et se termine sans les supprimer sauf si `-y` est passé.

126 

127Pour nettoyer dans le cadre d'une désinstallation, passez `--prune` à `claude plugin uninstall`. Après suppression du plugin nommé, Claude Code analyse et supprime toute dépendance auto-installée qui est maintenant orpheline. Les plugins que vous avez installés vous-même ne sont jamais nettoyés, uniquement ceux installés automatiquement via le tableau `dependencies` d'un autre plugin.

128 

129Par exemple, pour désinstaller `deploy-kit` et nettoyer les dépendances qu'il laisse derrière :

130 

131```bash theme={null}

132claude plugin uninstall deploy-kit --prune

133```

134 

135## Résoudre les erreurs de dépendance

136 

137Les problèmes de dépendance apparaissent dans `claude plugin list`, dans l'interface `/plugin`, et dans `/doctor`. Le plugin affecté est désactivé jusqu'à ce que vous résolviez l'erreur. Les erreurs les plus courantes et leurs corrections sont listées ci-dessous.

138 

139| Erreur | Signification | Comment résoudre |

140| :------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

141| `dependency-unsatisfied` | Une dépendance déclarée n'est pas installée, ou elle est installée mais désactivée. | Exécutez la commande `claude plugin install` affichée dans le message d'erreur. Si la marketplace de la dépendance n'est pas encore configurée, ajoutez-la avec `claude plugin marketplace add` et Claude Code résout la dépendance automatiquement. Si la dépendance est désactivée, activez-la. |

142| `range-conflict` | Les exigences de version pour une dépendance ne peuvent pas être combinées. Le message d'erreur nomme la cause : aucune version ne satisfait toutes les plages, une plage n'est pas une syntaxe semver valide, ou les plages combinées sont trop complexes à intersectionner. | Désinstallez ou mettez à jour l'un des plugins en conflit, corrigez toute chaîne `version` invalide, simplifiez les longues chaînes `\|\|`, ou demandez à l'auteur en amont d'élargir sa contrainte. |

143| `dependency-version-unsatisfied` | La version de la dépendance installée est en dehors de la plage déclarée de ce plugin. | Exécutez `claude plugin install <dependency>@<marketplace>` pour re-résoudre la dépendance par rapport à toutes les contraintes actuelles. |

144| `no-matching-tag` | Le référentiel de la dépendance n'a pas de balise `{name}--v*` satisfaisant la plage. | Vérifiez que l'amont a balisé les versions en utilisant la convention ci-dessus, ou assouplissez votre plage. |

145 

146Pour vérifier ces erreurs par programmation, exécutez `claude plugin list --json` et lisez le champ `errors` sur chaque plugin.

147 

148## Voir aussi

149 

150* [Créer des plugins](/fr/plugins) : créez des plugins avec des skills, des agents et des hooks

151* [Créer et distribuer un marketplace de plugins](/fr/plugin-marketplaces) : hébergez des plugins pour votre équipe

152* [Référence des plugins](/fr/plugins-reference#plugin-manifest-schema) : le schéma complet de `plugin.json`

153* [Gestion des versions](/fr/plugins-reference#version-management) : comment la version propre d'un plugin est résolue et utilisée comme clé de cache

plugin-marketplaces.md +1054 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Créer et distribuer une place de marché de plugins

6 

7> Créez et hébergez des places de marché de plugins pour distribuer les extensions Claude Code dans vos équipes et communautés.

8 

9Une **place de marché de plugins** est un catalogue qui vous permet de distribuer des plugins à d'autres. Les places de marché offrent une découverte centralisée, un suivi des versions, des mises à jour automatiques et la prise en charge de plusieurs types de sources (dépôts git, chemins locaux, etc.). Ce guide vous montre comment créer votre propre place de marché pour partager des plugins avec votre équipe ou votre communauté.

10 

11Vous cherchez à installer des plugins à partir d'une place de marché existante ? Consultez [Découvrir et installer des plugins préconfigurés](/fr/discover-plugins).

12 

13## Aperçu

14 

15La création et la distribution d'une place de marché impliquent :

16 

171. **Créer des plugins** : créez un ou plusieurs plugins avec des compétences, des agents, des hooks, des serveurs MCP ou des serveurs LSP. Ce guide suppose que vous avez déjà des plugins à distribuer ; consultez [Créer des plugins](/fr/plugins) pour plus de détails sur la création de plugins.

182. **Créer un fichier de place de marché** : définissez un `marketplace.json` qui répertorie vos plugins et où les trouver (voir [Créer le fichier de place de marché](#create-the-marketplace-file)).

193. **Héberger la place de marché** : poussez vers GitHub, GitLab ou un autre hôte git (voir [Héberger et distribuer les places de marché](#host-and-distribute-marketplaces)).

204. **Partager avec les utilisateurs** : les utilisateurs ajoutent votre place de marché avec `/plugin marketplace add` et installent des plugins individuels (voir [Découvrir et installer des plugins](/fr/discover-plugins)).

21 

22Une fois votre place de marché en ligne, vous pouvez la mettre à jour en poussant les modifications vers votre dépôt. Les utilisateurs actualisent leur copie locale avec `/plugin marketplace update`.

23 

24## Procédure pas à pas : créer une place de marché locale

25 

26Cet exemple crée une place de marché avec un plugin : une compétence `/quality-review` pour les révisions de code. Vous allez créer la structure de répertoires, ajouter une compétence, créer le manifeste du plugin et le catalogue de la place de marché, puis l'installer et la tester.

27 

28<Steps>

29 <Step title="Créer la structure de répertoires">

30 ```bash theme={null}

31 mkdir -p my-marketplace/.claude-plugin

32 mkdir -p my-marketplace/plugins/quality-review-plugin/.claude-plugin

33 mkdir -p my-marketplace/plugins/quality-review-plugin/skills/quality-review

34 ```

35 </Step>

36 

37 <Step title="Créer la compétence">

38 Créez un fichier `SKILL.md` qui définit ce que fait la compétence `/quality-review`.

39 

40 ```markdown my-marketplace/plugins/quality-review-plugin/skills/quality-review/SKILL.md theme={null}

41 ---

42 description: Review code for bugs, security, and performance

43 disable-model-invocation: true

44 ---

45 

46 Review the code I've selected or the recent changes for:

47 - Potential bugs or edge cases

48 - Security concerns

49 - Performance issues

50 - Readability improvements

51 

52 Be concise and actionable.

53 ```

54 </Step>

55 

56 <Step title="Créer le manifeste du plugin">

57 Créez un fichier `plugin.json` qui décrit le plugin. Le manifeste se trouve dans le répertoire `.claude-plugin/`.

58 

59 ```json my-marketplace/plugins/quality-review-plugin/.claude-plugin/plugin.json theme={null}

60 {

61 "name": "quality-review-plugin",

62 "description": "Adds a /quality-review skill for quick code reviews",

63 "version": "1.0.0"

64 }

65 ```

66 

67 <Note>

68 La définition de `version` signifie que les utilisateurs ne reçoivent des mises à jour que lorsque vous modifiez ce champ, donc augmentez-le à chaque version. Si vous omettez `version` et hébergez cette place de marché dans git, chaque commit compte automatiquement comme une nouvelle version. Consultez [Version resolution](#version-resolution-and-release-channels) pour choisir la bonne approche.

69 </Note>

70 </Step>

71 

72 <Step title="Créer le fichier de place de marché">

73 Créez le catalogue de la place de marché qui répertorie votre plugin.

74 

75 ```json my-marketplace/.claude-plugin/marketplace.json theme={null}

76 {

77 "name": "my-plugins",

78 "owner": {

79 "name": "Your Name"

80 },

81 "plugins": [

82 {

83 "name": "quality-review-plugin",

84 "source": "./plugins/quality-review-plugin",

85 "description": "Adds a /quality-review skill for quick code reviews"

86 }

87 ]

88 }

89 ```

90 </Step>

91 

92 <Step title="Ajouter et installer">

93 Ajoutez la place de marché et installez le plugin.

94 

95 ```shell theme={null}

96 /plugin marketplace add ./my-marketplace

97 /plugin install quality-review-plugin@my-plugins

98 ```

99 </Step>

100 

101 <Step title="Essayer">

102 Sélectionnez du code dans votre éditeur et exécutez votre nouvelle compétence.

103 

104 ```shell theme={null}

105 /quality-review

106 ```

107 </Step>

108</Steps>

109 

110Pour en savoir plus sur ce que les plugins peuvent faire, notamment les hooks, les agents, les serveurs MCP et les serveurs LSP, consultez [Plugins](/fr/plugins).

111 

112<Note>

113 **Comment les plugins sont installés** : Lorsque les utilisateurs installent un plugin, Claude Code copie le répertoire du plugin vers un emplacement de cache. Cela signifie que les plugins ne peuvent pas référencer des fichiers en dehors de leur répertoire en utilisant des chemins comme `../shared-utils`, car ces fichiers ne seront pas copiés.

114 

115 Si vous devez partager des fichiers entre les plugins, utilisez des symlinks. Consultez [Plugin caching and file resolution](/fr/plugins-reference#plugin-caching-and-file-resolution) pour plus de détails.

116</Note>

117 

118## Créer le fichier de place de marché

119 

120Créez `.claude-plugin/marketplace.json` à la racine de votre dépôt. Ce fichier définit le nom de votre place de marché, les informations du propriétaire et une liste de plugins avec leurs sources.

121 

122Chaque entrée de plugin a besoin au minimum d'un `name` et d'une `source` (où la récupérer). Consultez le [schéma complet](#marketplace-schema) ci-dessous pour tous les champs disponibles.

123 

124```json theme={null}

125{

126 "name": "company-tools",

127 "owner": {

128 "name": "DevTools Team",

129 "email": "devtools@example.com"

130 },

131 "plugins": [

132 {

133 "name": "code-formatter",

134 "source": "./plugins/formatter",

135 "description": "Automatic code formatting on save",

136 "version": "2.1.0",

137 "author": {

138 "name": "DevTools Team"

139 }

140 },

141 {

142 "name": "deployment-tools",

143 "source": {

144 "source": "github",

145 "repo": "company/deploy-plugin"

146 },

147 "description": "Deployment automation tools"

148 }

149 ]

150}

151```

152 

153## Schéma de la place de marché

154 

155### Champs obligatoires

156 

157| Champ | Type | Description | Exemple |

158| :-------- | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------- |

159| `name` | string | Identifiant de la place de marché (kebab-case, sans espaces). C'est un élément public : les utilisateurs le voient lors de l'installation de plugins (par exemple, `/plugin install my-tool@your-marketplace`). | `"acme-tools"` |

160| `owner` | object | Informations du responsable de la place de marché ([voir les champs ci-dessous](#owner-fields)) | |

161| `plugins` | array | Liste des plugins disponibles | Voir ci-dessous |

162 

163<Note>

164 **Noms réservés** : Les noms de place de marché suivants sont réservés à l'usage officiel d'Anthropic et ne peuvent pas être utilisés par les places de marché tierces : `claude-code-marketplace`, `claude-code-plugins`, `claude-plugins-official`, `anthropic-marketplace`, `anthropic-plugins`, `agent-skills`, `knowledge-work-plugins`, `life-sciences`. Les noms qui usurpent l'identité de places de marché officielles (comme `official-claude-plugins` ou `anthropic-tools-v2`) sont également bloqués.

165</Note>

166 

167### Champs du propriétaire

168 

169| Champ | Type | Obligatoire | Description |

170| :------ | :----- | :---------- | :--------------------------------------- |

171| `name` | string | Oui | Nom du responsable ou de l'équipe |

172| `email` | string | Non | Adresse e-mail de contact du responsable |

173 

174### Champs optionnels

175 

176| Champ | Type | Description |

177| :------------------------------------ | :----- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

178| `$schema` | string | URL du schéma JSON pour l'autocomplétion et la validation de l'éditeur. Claude Code ignore ce champ au moment du chargement. |

179| `description` | string | Brève description de la place de marché |

180| `version` | string | Version du manifeste de la place de marché |

181| `metadata.pluginRoot` | string | Répertoire de base ajouté aux chemins de source de plugin relatifs (par exemple, `"./plugins"` vous permet d'écrire `"source": "formatter"` au lieu de `"source": "./plugins/formatter"`) |

182| `allowCrossMarketplaceDependenciesOn` | array | Autres places de marché sur lesquelles les plugins de cette place de marché peuvent dépendre. Les dépendances d'une place de marché non listée ici sont bloquées à l'installation. Voir [Dépendre d'un plugin d'une autre place de marché](/fr/plugin-dependencies#depend-on-a-plugin-from-another-marketplace). |

183 

184`description` et `version` sont également acceptés sous `metadata` pour la compatibilité rétroactive.

185 

186## Entrées de plugin

187 

188Chaque entrée de plugin dans le tableau `plugins` décrit un plugin et où le trouver. Vous pouvez inclure n'importe quel champ du [schéma du manifeste du plugin](/fr/plugins-reference#plugin-manifest-schema) (comme `description`, `version`, `author`, `commands`, `hooks`, etc.), plus ces champs spécifiques à la place de marché : `source`, `category`, `tags` et `strict`.

189 

190### Champs obligatoires

191 

192| Champ | Type | Description |

193| :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

194| `name` | string | Identifiant du plugin (kebab-case, sans espaces). C'est un élément public : les utilisateurs le voient lors de l'installation (par exemple, `/plugin install my-plugin@marketplace`). |

195| `source` | string\|object | Où récupérer le plugin (voir [Sources de plugin](#plugin-sources) ci-dessous) |

196 

197### Champs de plugin optionnels

198 

199**Champs de métadonnées standard :**

200 

201| Champ | Type | Description |

202| :------------ | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

203| `description` | string | Brève description du plugin |

204| `version` | string | Version du plugin. Si défini (ici ou dans `plugin.json`), le plugin est épinglé à cette chaîne et les utilisateurs ne reçoivent des mises à jour que lorsqu'elle change. Omettez pour revenir au SHA du commit git. Voir [Résolution de version](#version-resolution-and-release-channels). |

205| `author` | object | Informations sur l'auteur du plugin (`name` obligatoire, `email` optionnel) |

206| `homepage` | string | URL de la page d'accueil ou de la documentation du plugin |

207| `repository` | string | URL du dépôt du code source |

208| `license` | string | Identifiant de licence SPDX (par exemple, MIT, Apache-2.0) |

209| `keywords` | array | Balises pour la découverte et la catégorisation des plugins |

210| `category` | string | Catégorie du plugin pour l'organisation |

211| `tags` | array | Balises pour la recherche |

212| `strict` | boolean | Contrôle si `plugin.json` est l'autorité pour les définitions de composants (par défaut : true). Voir [Mode strict](#strict-mode) ci-dessous. |

213 

214**Champs de configuration des composants :**

215 

216| Champ | Type | Description |

217| :----------- | :------------- | :------------------------------------------------------------------------------------ |

218| `skills` | string\|array | Chemins personnalisés vers les répertoires de compétences contenant `<name>/SKILL.md` |

219| `commands` | string\|array | Chemins personnalisés vers les fichiers de compétences `.md` plats ou les répertoires |

220| `agents` | string\|array | Chemins personnalisés vers les fichiers d'agents |

221| `hooks` | string\|object | Configuration personnalisée des hooks ou chemin vers le fichier des hooks |

222| `mcpServers` | string\|object | Configurations du serveur MCP ou chemin vers la configuration MCP |

223| `lspServers` | string\|object | Configurations du serveur LSP ou chemin vers la configuration LSP |

224 

225## Sources de plugin

226 

227Les sources de plugin indiquent à Claude Code où récupérer chaque plugin individuel répertorié dans votre place de marché. Elles sont définies dans le champ `source` de chaque entrée de plugin dans `marketplace.json`.

228 

229Une fois qu'un plugin est cloné ou copié sur la machine locale, il est copié dans le cache de plugin local versionné à `~/.claude/plugins/cache`.

230 

231| Source | Type | Champs | Notes |

232| -------------- | -------------------------------------- | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

233| Chemin relatif | `string` (par exemple `"./my-plugin"`) | — | Répertoire local dans le dépôt de la place de marché. Doit commencer par `./`. Résolu par rapport à la racine de la place de marché, pas au répertoire `.claude-plugin/` |

234| `github` | object | `repo`, `ref?`, `sha?` | |

235| `url` | object | `url`, `ref?`, `sha?` | Source d'URL Git |

236| `git-subdir` | object | `url`, `path`, `ref?`, `sha?` | Sous-répertoire dans un dépôt git. Clone partiellement pour minimiser la bande passante pour les monodépôts |

237| `npm` | object | `package`, `version?`, `registry?` | Installé via `npm install` |

238 

239<Note>

240 **Sources de place de marché vs sources de plugin** : Ce sont des concepts différents qui contrôlent des choses différentes.

241 

242 * **Source de place de marché** — où récupérer le catalogue `marketplace.json` lui-même. Défini lorsque les utilisateurs exécutent `/plugin marketplace add` ou dans les paramètres `extraKnownMarketplaces`. Prend en charge `ref` (branche/tag) mais pas `sha`.

243 * **Source de plugin** — où récupérer un plugin individuel répertorié dans la place de marché. Défini dans le champ `source` de chaque entrée de plugin dans `marketplace.json`. Prend en charge à la fois `ref` (branche/tag) et `sha` (commit exact).

244 

245 Par exemple, une place de marché hébergée à `acme-corp/plugin-catalog` (source de place de marché) peut répertorier un plugin récupéré à partir de `acme-corp/code-formatter` (source de plugin). La source de place de marché et la source de plugin pointent vers des dépôts différents et sont épinglées indépendamment.

246</Note>

247 

248### Chemins relatifs

249 

250Pour les plugins dans le même dépôt, utilisez un chemin commençant par `./` :

251 

252```json theme={null}

253{

254 "name": "my-plugin",

255 "source": "./plugins/my-plugin"

256}

257```

258 

259Les chemins se résolvent par rapport à la racine de la place de marché, qui est le répertoire contenant `.claude-plugin/`. Dans l'exemple ci-dessus, `./plugins/my-plugin` pointe vers `<repo>/plugins/my-plugin`, même si `marketplace.json` se trouve à `<repo>/.claude-plugin/marketplace.json`. N'utilisez pas `../` pour référencer des chemins en dehors de la racine de la place de marché.

260 

261<Note>

262 Les chemins relatifs ne fonctionnent que lorsque les utilisateurs ajoutent votre place de marché via Git (GitHub, GitLab ou URL git). Si les utilisateurs ajoutent votre place de marché via une URL directe vers le fichier `marketplace.json`, les chemins relatifs ne se résoudront pas correctement. Pour la distribution basée sur les URL, utilisez plutôt les sources GitHub, npm ou URL git. Consultez [Dépannage](#plugins-with-relative-paths-fail-in-url-based-marketplaces) pour plus de détails.

263</Note>

264 

265### Dépôts GitHub

266 

267```json theme={null}

268{

269 "name": "github-plugin",

270 "source": {

271 "source": "github",

272 "repo": "owner/plugin-repo"

273 }

274}

275```

276 

277Vous pouvez épingler à une branche, un tag ou un commit spécifique :

278 

279```json theme={null}

280{

281 "name": "github-plugin",

282 "source": {

283 "source": "github",

284 "repo": "owner/plugin-repo",

285 "ref": "v2.0.0",

286 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

287 }

288}

289```

290 

291| Champ | Type | Description |

292| :----- | :----- | :--------------------------------------------------------------------------------------- |

293| `repo` | string | Obligatoire. Dépôt GitHub au format `owner/repo` |

294| `ref` | string | Optionnel. Branche ou tag Git (par défaut la branche par défaut du dépôt) |

295| `sha` | string | Optionnel. SHA de commit git complet de 40 caractères pour épingler à une version exacte |

296 

297### Dépôts Git

298 

299```json theme={null}

300{

301 "name": "git-plugin",

302 "source": {

303 "source": "url",

304 "url": "https://gitlab.com/team/plugin.git"

305 }

306}

307```

308 

309Vous pouvez épingler à une branche, un tag ou un commit spécifique :

310 

311```json theme={null}

312{

313 "name": "git-plugin",

314 "source": {

315 "source": "url",

316 "url": "https://gitlab.com/team/plugin.git",

317 "ref": "main",

318 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

319 }

320}

321```

322 

323| Champ | Type | Description |

324| :---- | :----- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

325| `url` | string | Obligatoire. URL complète du dépôt git (`https://` ou `git@`). Le suffixe `.git` est optionnel, donc les URL Azure DevOps et AWS CodeCommit sans le suffixe fonctionnent |

326| `ref` | string | Optionnel. Branche ou tag Git (par défaut la branche par défaut du dépôt) |

327| `sha` | string | Optionnel. SHA de commit git complet de 40 caractères pour épingler à une version exacte |

328 

329### Sous-répertoires Git

330 

331Utilisez `git-subdir` pour pointer vers un plugin qui se trouve dans un sous-répertoire d'un dépôt git. Claude Code utilise un clone partiel et clairsemé pour récupérer uniquement le sous-répertoire, minimisant la bande passante pour les grands monodépôts.

332 

333```json theme={null}

334{

335 "name": "my-plugin",

336 "source": {

337 "source": "git-subdir",

338 "url": "https://github.com/acme-corp/monorepo.git",

339 "path": "tools/claude-plugin"

340 }

341}

342```

343 

344Vous pouvez épingler à une branche, un tag ou un commit spécifique :

345 

346```json theme={null}

347{

348 "name": "my-plugin",

349 "source": {

350 "source": "git-subdir",

351 "url": "https://github.com/acme-corp/monorepo.git",

352 "path": "tools/claude-plugin",

353 "ref": "v2.0.0",

354 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

355 }

356}

357```

358 

359Le champ `url` accepte également un raccourci GitHub (`owner/repo`) ou des URL SSH (`git@github.com:owner/repo.git`).

360 

361| Champ | Type | Description |

362| :----- | :----- | :-------------------------------------------------------------------------------------------------------------- |

363| `url` | string | Obligatoire. URL du dépôt Git, raccourci GitHub `owner/repo` ou URL SSH |

364| `path` | string | Obligatoire. Chemin du sous-répertoire dans le dépôt contenant le plugin (par exemple, `"tools/claude-plugin"`) |

365| `ref` | string | Optionnel. Branche ou tag Git (par défaut la branche par défaut du dépôt) |

366| `sha` | string | Optionnel. SHA de commit git complet de 40 caractères pour épingler à une version exacte |

367 

368### Paquets npm

369 

370Les plugins distribués en tant que paquets npm sont installés à l'aide de `npm install`. Cela fonctionne avec n'importe quel paquet du registre npm public ou d'un registre privé que votre équipe héberge.

371 

372```json theme={null}

373{

374 "name": "my-npm-plugin",

375 "source": {

376 "source": "npm",

377 "package": "@acme/claude-plugin"

378 }

379}

380```

381 

382Pour épingler à une version spécifique, ajoutez le champ `version` :

383 

384```json theme={null}

385{

386 "name": "my-npm-plugin",

387 "source": {

388 "source": "npm",

389 "package": "@acme/claude-plugin",

390 "version": "2.1.0"

391 }

392}

393```

394 

395Pour installer à partir d'un registre privé ou interne, ajoutez le champ `registry` :

396 

397```json theme={null}

398{

399 "name": "my-npm-plugin",

400 "source": {

401 "source": "npm",

402 "package": "@acme/claude-plugin",

403 "version": "^2.0.0",

404 "registry": "https://npm.example.com"

405 }

406}

407```

408 

409| Champ | Type | Description |

410| :--------- | :----- | :---------------------------------------------------------------------------------------------------------- |

411| `package` | string | Obligatoire. Nom du paquet ou paquet scopé (par exemple, `@org/plugin`) |

412| `version` | string | Optionnel. Version ou plage de version (par exemple, `2.1.0`, `^2.0.0`, `~1.5.0`) |

413| `registry` | string | Optionnel. URL du registre npm personnalisé. Par défaut le registre npm du système (généralement npmjs.org) |

414 

415### Entrées de plugin avancées

416 

417Cet exemple montre une entrée de plugin utilisant de nombreux champs optionnels, notamment des chemins personnalisés pour les commandes, les agents, les hooks et les serveurs MCP :

418 

419```json theme={null}

420{

421 "name": "enterprise-tools",

422 "source": {

423 "source": "github",

424 "repo": "company/enterprise-plugin"

425 },

426 "description": "Enterprise workflow automation tools",

427 "version": "2.1.0",

428 "author": {

429 "name": "Enterprise Team",

430 "email": "enterprise@example.com"

431 },

432 "homepage": "https://docs.example.com/plugins/enterprise-tools",

433 "repository": "https://github.com/company/enterprise-plugin",

434 "license": "MIT",

435 "keywords": ["enterprise", "workflow", "automation"],

436 "category": "productivity",

437 "commands": [

438 "./commands/core/",

439 "./commands/enterprise/",

440 "./commands/experimental/preview.md"

441 ],

442 "agents": ["./agents/security-reviewer.md", "./agents/compliance-checker.md"],

443 "hooks": {

444 "PostToolUse": [

445 {

446 "matcher": "Write|Edit",

447 "hooks": [

448 {

449 "type": "command",

450 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/validate.sh"

451 }

452 ]

453 }

454 ]

455 },

456 "mcpServers": {

457 "enterprise-db": {

458 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",

459 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"]

460 }

461 },

462 "strict": false

463}

464```

465 

466Points clés à noter :

467 

468* **`commands` et `agents`** : Vous pouvez spécifier plusieurs répertoires ou fichiers individuels. Les chemins sont relatifs à la racine du plugin.

469* **`${CLAUDE_PLUGIN_ROOT}`** : Utilisez cette variable dans les hooks et les configurations du serveur MCP pour référencer les fichiers dans le répertoire d'installation du plugin. C'est nécessaire car les plugins sont copiés vers un emplacement de cache lors de l'installation. Pour les dépendances ou l'état qui doivent survivre aux mises à jour des plugins, utilisez [`${CLAUDE_PLUGIN_DATA}`](/fr/plugins-reference#persistent-data-directory) à la place.

470* **`strict: false`** : Puisque ceci est défini sur false, le plugin n'a pas besoin de son propre `plugin.json`. L'entrée de la place de marché définit tout. Voir [Mode strict](#strict-mode) ci-dessous.

471 

472### Mode strict

473 

474Le champ `strict` contrôle si `plugin.json` est l'autorité pour les définitions de composants (compétences, agents, hooks, serveurs MCP, styles de sortie).

475 

476| Valeur | Comportement |

477| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

478| `true` (par défaut) | `plugin.json` est l'autorité. L'entrée de la place de marché peut la compléter avec des composants supplémentaires, et les deux sources sont fusionnées. |

479| `false` | L'entrée de la place de marché est la définition complète. Si le plugin a également un `plugin.json` qui déclare des composants, c'est un conflit et le plugin ne se charge pas. |

480 

481**Quand utiliser chaque mode :**

482 

483* **`strict: true`** : le plugin a son propre `plugin.json` et gère ses propres composants. L'entrée de la place de marché peut ajouter des compétences ou des hooks supplémentaires par-dessus. C'est la valeur par défaut et fonctionne pour la plupart des plugins.

484* **`strict: false`** : l'opérateur de la place de marché veut le contrôle total. Le dépôt du plugin fournit des fichiers bruts, et l'entrée de la place de marché définit lesquels de ces fichiers sont exposés en tant que compétences, agents, hooks, etc. Utile lorsque la place de marché restructure ou sélectionne les composants d'un plugin différemment de ce que l'auteur du plugin avait prévu.

485 

486## Héberger et distribuer les places de marché

487 

488### Héberger sur GitHub (recommandé)

489 

490GitHub offre la méthode de distribution la plus facile :

491 

4921. **Créer un dépôt** : Configurez un nouveau dépôt pour votre place de marché

4932. **Ajouter le fichier de place de marché** : Créez `.claude-plugin/marketplace.json` avec vos définitions de plugins

4943. **Partager avec les équipes** : Les utilisateurs ajoutent votre place de marché avec `/plugin marketplace add owner/repo`

495 

496**Avantages** : Contrôle de version intégré, suivi des problèmes et fonctionnalités de collaboration d'équipe.

497 

498### Héberger sur d'autres services git

499 

500N'importe quel service d'hébergement git fonctionne, comme GitLab, Bitbucket et les serveurs auto-hébergés. Les utilisateurs ajoutent avec l'URL complète du dépôt :

501 

502```shell theme={null}

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

504```

505 

506### Dépôts privés

507 

508Claude Code prend en charge l'installation de plugins à partir de dépôts privés. Pour l'installation manuelle et les mises à jour, Claude Code utilise vos assistants de credentials git existants, donc l'accès HTTPS via `gh auth login`, Keychain macOS ou `git-credential-store` fonctionne de la même manière que dans votre terminal. L'accès SSH fonctionne tant que l'hôte est déjà dans votre fichier `known_hosts` et que la clé est chargée dans `ssh-agent`, puisque Claude Code supprime les invites SSH interactives pour l'empreinte digitale de l'hôte et la phrase de passe de la clé.

509 

510Les mises à jour automatiques en arrière-plan s'exécutent au démarrage sans assistants de credentials, car les invites interactives bloqueraient le démarrage de Claude Code. Pour activer les mises à jour automatiques pour les places de marché privées, définissez le jeton d'authentification approprié dans votre environnement :

511 

512| Fournisseur | Variables d'environnement | Notes |

513| :---------- | :--------------------------- | :--------------------------------------------------- |

514| GitHub | `GITHUB_TOKEN` ou `GH_TOKEN` | Jeton d'accès personnel ou jeton GitHub App |

515| GitLab | `GITLAB_TOKEN` ou `GL_TOKEN` | Jeton d'accès personnel ou jeton de projet |

516| Bitbucket | `BITBUCKET_TOKEN` | Mot de passe d'application ou jeton d'accès au dépôt |

517 

518Définissez le jeton dans votre configuration de shell (par exemple, `.bashrc`, `.zshrc`) ou passez-le lors de l'exécution de Claude Code :

519 

520```bash theme={null}

521export GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx

522```

523 

524<Note>

525 Pour les environnements CI/CD, configurez le jeton en tant que variable d'environnement secrète. GitHub Actions fournit automatiquement `GITHUB_TOKEN` pour les dépôts de la même organisation.

526</Note>

527 

528### Tester localement avant la distribution

529 

530Testez votre place de marché localement avant de la partager :

531 

532```shell theme={null}

533/plugin marketplace add ./my-local-marketplace

534/plugin install test-plugin@my-local-marketplace

535```

536 

537Pour la gamme complète de commandes add (GitHub, URL Git, chemins locaux, URL distantes), consultez [Ajouter des places de marché](/fr/discover-plugins#add-marketplaces).

538 

539### Exiger des places de marché pour votre équipe

540 

541Vous pouvez configurer votre dépôt pour que les membres de l'équipe soient automatiquement invités à installer votre place de marché lorsqu'ils font confiance au dossier du projet. Ajoutez votre place de marché à `.claude/settings.json` :

542 

543```json theme={null}

544{

545 "extraKnownMarketplaces": {

546 "company-tools": {

547 "source": {

548 "source": "github",

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

550 }

551 }

552 }

553}

554```

555 

556Vous pouvez également spécifier quels plugins doivent être activés par défaut :

557 

558```json theme={null}

559{

560 "enabledPlugins": {

561 "code-formatter@company-tools": true,

562 "deployment-tools@company-tools": true

563 }

564}

565```

566 

567Pour les options de configuration complètes, consultez [Paramètres des plugins](/fr/settings#plugin-settings).

568 

569<Note>

570 Si vous utilisez une source `directory` ou `file` locale avec un chemin relatif, le chemin se résout par rapport au checkout principal de votre dépôt. Lorsque vous exécutez Claude Code à partir d'une worktree git, le chemin pointe toujours vers le checkout principal, donc toutes les worktrees partagent le même emplacement de place de marché. L'état de la place de marché est stocké une fois par utilisateur dans `~/.claude/plugins/known_marketplaces.json`, pas par projet.

571</Note>

572 

573### Pré-remplir les plugins pour les conteneurs

574 

575Pour les images de conteneur et les environnements CI, vous pouvez pré-remplir un répertoire de plugins au moment de la construction afin que Claude Code démarre avec des places de marché et des plugins déjà disponibles, sans rien cloner au moment de l'exécution. Définissez la variable d'environnement `CLAUDE_CODE_PLUGIN_SEED_DIR` pour pointer vers ce répertoire.

576 

577Pour superposer plusieurs répertoires de seed, séparez les chemins avec `:` sur Unix ou `;` sur Windows. Claude Code recherche chaque répertoire dans l'ordre, et le premier seed qui contient une place de marché ou un cache de plugin donné gagne.

578 

579Le répertoire de seed reflète la structure de `~/.claude/plugins` :

580 

581```

582$CLAUDE_CODE_PLUGIN_SEED_DIR/

583 known_marketplaces.json

584 marketplaces/<name>/...

585 cache/<marketplace>/<plugin>/<version>/...

586```

587 

588Pour construire un répertoire de seed, exécutez Claude Code une fois lors de la construction de l'image, installez les plugins dont vous avez besoin, puis copiez le répertoire `~/.claude/plugins` résultant dans votre image et pointez `CLAUDE_CODE_PLUGIN_SEED_DIR` vers lui.

589 

590Pour ignorer l'étape de copie, définissez `CLAUDE_CODE_PLUGIN_CACHE_DIR` sur votre chemin de seed cible lors de la construction afin que les plugins s'installent directement là :

591 

592```bash theme={null}

593CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed claude plugin marketplace add your-org/plugins

594CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed claude plugin install my-tool@your-plugins

595```

596 

597Ensuite, définissez `CLAUDE_CODE_PLUGIN_SEED_DIR=/opt/claude-seed` dans l'environnement d'exécution de votre conteneur afin que Claude Code lise à partir du seed au démarrage.

598 

599Au démarrage, Claude Code enregistre les places de marché trouvées dans le `known_marketplaces.json` du seed dans la configuration principale, et utilise les caches de plugins trouvés sous `cache/` en place sans re-cloner. Cela fonctionne à la fois en mode interactif et en mode non-interactif avec le drapeau `-p`.

600 

601Détails du comportement :

602 

603* **Lecture seule** : le répertoire de seed n'est jamais écrit. Les mises à jour automatiques sont désactivées pour les places de marché de seed puisque git pull échouerait sur un système de fichiers en lecture seule.

604* **Les entrées de seed ont la priorité** : les places de marché déclarées dans le seed remplacent toutes les entrées correspondantes dans la configuration de l'utilisateur à chaque démarrage. Pour refuser un plugin de seed, utilisez `/plugin disable` plutôt que de supprimer la place de marché.

605* **Résolution des chemins** : Claude Code localise le contenu de la place de marché en sondant `$CLAUDE_CODE_PLUGIN_SEED_DIR/marketplaces/<name>/` au moment de l'exécution, pas en faisant confiance aux chemins stockés dans le JSON du seed. Cela signifie que le seed fonctionne correctement même lorsqu'il est monté à un chemin différent de celui où il a été construit.

606* **La mutation est bloquée** : l'exécution de `/plugin marketplace remove` ou `/plugin marketplace update` contre une place de marché gérée par seed échoue avec des conseils pour demander à votre administrateur de mettre à jour l'image de seed.

607* **Compose avec les paramètres** : si `extraKnownMarketplaces` ou `enabledPlugins` déclarent une place de marché qui existe déjà dans le seed, Claude Code utilise la copie du seed au lieu de cloner.

608 

609### Restrictions des places de marché gérées

610 

611Pour les organisations nécessitant un contrôle strict sur les sources de plugins, les administrateurs peuvent restreindre les places de marché de plugins que les utilisateurs sont autorisés à ajouter en utilisant le paramètre [`strictKnownMarketplaces`](/fr/settings#strictknownmarketplaces) dans les paramètres gérés.

612 

613Lorsque `strictKnownMarketplaces` est configuré dans les paramètres gérés, le comportement de restriction dépend de la valeur :

614 

615| Valeur | Comportement |

616| ----------------------- | ------------------------------------------------------------------------------------------------------------------- |

617| Non défini (par défaut) | Aucune restriction. Les utilisateurs peuvent ajouter n'importe quelle place de marché |

618| Tableau vide `[]` | Verrouillage complet. Les utilisateurs ne peuvent pas ajouter de nouvelles places de marché |

619| Liste de sources | Les utilisateurs ne peuvent ajouter que les places de marché qui correspondent exactement à la liste d'autorisation |

620 

621#### Configurations courantes

622 

623Désactiver tous les ajouts de place de marché :

624 

625```json theme={null}

626{

627 "strictKnownMarketplaces": []

628}

629```

630 

631Autoriser uniquement les places de marché spécifiques :

632 

633```json theme={null}

634{

635 "strictKnownMarketplaces": [

636 {

637 "source": "github",

638 "repo": "acme-corp/approved-plugins"

639 },

640 {

641 "source": "github",

642 "repo": "acme-corp/security-tools",

643 "ref": "v2.0"

644 },

645 {

646 "source": "url",

647 "url": "https://plugins.example.com/marketplace.json"

648 }

649 ]

650}

651```

652 

653Autoriser toutes les places de marché d'un serveur git interne en utilisant la correspondance de motif regex sur l'hôte. C'est l'approche recommandée pour [GitHub Enterprise Server](/fr/github-enterprise-server#plugin-marketplaces-on-ghes) ou les instances GitLab auto-hébergées :

654 

655```json theme={null}

656{

657 "strictKnownMarketplaces": [

658 {

659 "source": "hostPattern",

660 "hostPattern": "^github\\.example\\.com$"

661 }

662 ]

663}

664```

665 

666Autoriser les places de marché basées sur le système de fichiers à partir d'un répertoire spécifique en utilisant la correspondance de motif regex sur le chemin :

667 

668```json theme={null}

669{

670 "strictKnownMarketplaces": [

671 {

672 "source": "pathPattern",

673 "pathPattern": "^/opt/approved/"

674 }

675 ]

676}

677```

678 

679Utilisez `".*"` comme `pathPattern` pour autoriser n'importe quel chemin du système de fichiers tout en contrôlant les sources réseau avec `hostPattern`.

680 

681<Note>

682 `strictKnownMarketplaces` restreint ce que les utilisateurs peuvent ajouter, mais n'enregistre pas les places de marché par lui-même. Pour rendre les places de marché autorisées disponibles automatiquement sans que les utilisateurs exécutent `/plugin marketplace add`, associez-le à [`extraKnownMarketplaces`](/fr/settings#extraknownmarketplaces) dans le même `managed-settings.json`. Voir [Utiliser les deux ensemble](/fr/settings#strictknownmarketplaces).

683</Note>

684 

685#### Comment fonctionnent les restrictions

686 

687Les restrictions sont vérifiées avant toute opération réseau ou système de fichiers. La vérification s'exécute lors de l'ajout de place de marché et lors de l'installation, la mise à jour, l'actualisation et la mise à jour automatique du plugin. Si une place de marché a été ajoutée avant la configuration de la politique et que sa source ne correspond plus à la liste d'autorisation, Claude Code refuse d'installer ou de mettre à jour les plugins à partir de celle-ci. L'application de la même restriction s'applique à `blockedMarketplaces`.

688 

689La liste d'autorisation utilise la correspondance exacte pour la plupart des types de sources. Pour qu'une place de marché soit autorisée, tous les champs spécifiés doivent correspondre exactement :

690 

691* Pour les sources GitHub : `repo` est obligatoire, et `ref` ou `path` doivent également correspondre s'ils sont spécifiés dans la liste d'autorisation

692* Pour les sources URL : l'URL complète doit correspondre exactement

693* Pour les sources `hostPattern` : l'hôte de la place de marché est comparé au motif regex

694* Pour les sources `pathPattern` : le chemin du système de fichiers de la place de marché est comparé au motif regex

695 

696Parce que `strictKnownMarketplaces` est défini dans les [paramètres gérés](/fr/settings#settings-files), les configurations individuelles des utilisateurs et des projets ne peuvent pas contourner ces restrictions.

697 

698Pour les détails de configuration complets, y compris tous les types de sources pris en charge et la comparaison avec `extraKnownMarketplaces`, consultez la [référence strictKnownMarketplaces](/fr/settings#strictknownmarketplaces).

699 

700### Résolution des versions et canaux de publication

701 

702Les versions des plugins déterminent les chemins du cache et la détection des mises à jour : si la version résolue correspond à ce qu'un utilisateur possède déjà, `/plugin update` et la mise à jour automatique ignorent le plugin.

703 

704Claude Code résout la version d'un plugin à partir du premier de ces éléments qui est défini :

705 

7061. `version` dans le `plugin.json` du plugin

7072. `version` dans l'entrée de la place de marché du plugin

7083. Le SHA du commit git de la source du plugin

709 

710Pour les types de sources basés sur git `github`, `url`, `git-subdir` et les chemins relatifs à l'intérieur d'une place de marché hébergée sur git, vous pouvez omettre entièrement `version` et chaque nouveau commit est traité comme une nouvelle version. C'est la configuration la plus simple pour les plugins internes ou en développement actif.

711 

712<Warning>

713 Définir `version` épingle le plugin. Si `plugin.json` déclare `"version": "1.0.0"`, pousser de nouveaux commits sans changer cette chaîne ne fait rien pour les utilisateurs existants, car Claude Code voit la même version et conserve la copie en cache. Augmentez le champ à chaque publication, ou omettez-le pour utiliser le SHA du commit.

714 

715 Évitez de définir `version` à la fois dans `plugin.json` et dans l'entrée de la place de marché. La valeur `plugin.json` gagne toujours silencieusement, donc une version de manifeste obsolète peut masquer une version que vous avez définie dans `marketplace.json`.

716</Warning>

717 

718#### Configurer les canaux de publication

719 

720Pour prendre en charge les canaux de publication « stable » et « latest » pour vos plugins, vous pouvez configurer deux places de marché qui pointent vers différentes refs ou SHAs du même dépôt. Vous pouvez ensuite assigner les deux places de marché à différents groupes d'utilisateurs via les [paramètres gérés](/fr/settings#settings-files).

721 

722<Warning>

723 Chaque canal doit se résoudre en une version différente. Si vous utilisez des versions explicites, `plugin.json` doit déclarer une `version` différente à chaque ref ou SHA épinglé. Si vous omettez `version`, les SHAs de commit distincts distinguent déjà les canaux. Si deux refs se résolvent en la même chaîne de version, Claude Code les traite comme identiques et ignore la mise à jour.

724</Warning>

725 

726##### Exemple

727 

728```json theme={null}

729{

730 "name": "stable-tools",

731 "plugins": [

732 {

733 "name": "code-formatter",

734 "source": {

735 "source": "github",

736 "repo": "acme-corp/code-formatter",

737 "ref": "stable"

738 }

739 }

740 ]

741}

742```

743 

744```json theme={null}

745{

746 "name": "latest-tools",

747 "plugins": [

748 {

749 "name": "code-formatter",

750 "source": {

751 "source": "github",

752 "repo": "acme-corp/code-formatter",

753 "ref": "latest"

754 }

755 }

756 ]

757}

758```

759 

760##### Assigner les canaux aux groupes d'utilisateurs

761 

762Assignez chaque place de marché au groupe d'utilisateurs approprié via les paramètres gérés. Par exemple, le groupe stable reçoit :

763 

764```json theme={null}

765{

766 "extraKnownMarketplaces": {

767 "stable-tools": {

768 "source": {

769 "source": "github",

770 "repo": "acme-corp/stable-tools"

771 }

772 }

773 }

774}

775```

776 

777Le groupe early-access reçoit `latest-tools` à la place :

778 

779```json theme={null}

780{

781 "extraKnownMarketplaces": {

782 "latest-tools": {

783 "source": {

784 "source": "github",

785 "repo": "acme-corp/latest-tools"

786 }

787 }

788 }

789}

790```

791 

792#### Épingler les versions des dépendances

793 

794Un plugin peut contraindre ses dépendances à une plage semver afin que les mises à jour d'une dépendance ne cassent pas le plugin dépendant. Consultez [Contraindre les versions des dépendances de plugins](/fr/plugin-dependencies) pour la convention de balise git `{plugin-name}--v{version}`, la syntaxe de plage et la façon dont plusieurs contraintes sur la même dépendance sont combinées.

795 

796## Validation et test

797 

798Testez votre place de marché avant de la partager.

799 

800Validez la syntaxe JSON de votre place de marché :

801 

802```bash theme={null}

803claude plugin validate .

804```

805 

806Ou depuis Claude Code :

807 

808```shell theme={null}

809/plugin validate .

810```

811 

812Ajoutez la place de marché pour le test :

813 

814```shell theme={null}

815/plugin marketplace add ./path/to/marketplace

816```

817 

818Installez un plugin de test pour vérifier que tout fonctionne :

819 

820```shell theme={null}

821/plugin install test-plugin@marketplace-name

822```

823 

824Pour les flux de travail complets de test de plugins, consultez [Tester vos plugins localement](/fr/plugins#test-your-plugins-locally). Pour le dépannage technique, consultez [Référence des plugins](/fr/plugins-reference).

825 

826## Gérer les places de marché à partir de la CLI

827 

828Claude Code fournit des sous-commandes `claude plugin marketplace` non-interactives pour les scripts et l'automatisation. Elles sont équivalentes aux commandes `/plugin marketplace` disponibles dans une session interactive.

829 

830### Plugin marketplace add

831 

832Ajoutez une place de marché à partir d'un dépôt GitHub, d'une URL git, d'une URL distante ou d'un chemin local.

833 

834```bash theme={null}

835claude plugin marketplace add <source> [options]

836```

837 

838**Arguments :**

839 

840* `<source>` : Raccourci GitHub `owner/repo`, URL git, URL distante vers un fichier `marketplace.json` ou chemin de répertoire local. Pour épingler à une branche ou un tag, ajoutez `@ref` au raccourci GitHub ou `#ref` à une URL git

841 

842**Options :**

843 

844| Option | Description | Par défaut |

845| :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------- |

846| `--scope <scope>` | Où déclarer la place de marché : `user`, `project` ou `local`. Voir [Portées d'installation des plugins](/fr/plugins-reference#plugin-installation-scopes) | `user` |

847| `--sparse <paths...>` | Limiter le checkout à des répertoires spécifiques via git sparse-checkout. Utile pour les monodépôts | |

848 

849Ajoutez une place de marché à partir de GitHub en utilisant le raccourci `owner/repo` :

850 

851```bash theme={null}

852claude plugin marketplace add acme-corp/claude-plugins

853```

854 

855Épinglez à une branche ou un tag spécifique avec `@ref` :

856 

857```bash theme={null}

858claude plugin marketplace add acme-corp/claude-plugins@v2.0

859```

860 

861Ajoutez à partir d'une URL git sur un hôte non-GitHub :

862 

863```bash theme={null}

864claude plugin marketplace add https://gitlab.example.com/team/plugins.git

865```

866 

867Ajoutez à partir d'une URL distante qui sert le fichier `marketplace.json` directement :

868 

869```bash theme={null}

870claude plugin marketplace add https://example.com/marketplace.json

871```

872 

873Ajoutez à partir d'un répertoire local pour le test :

874 

875```bash theme={null}

876claude plugin marketplace add ./my-marketplace

877```

878 

879Déclarez la place de marché à la portée du projet afin qu'elle soit partagée avec votre équipe via `.claude/settings.json` :

880 

881```bash theme={null}

882claude plugin marketplace add acme-corp/claude-plugins --scope project

883```

884 

885Pour un monodépôt, limitez le checkout aux répertoires qui contiennent le contenu du plugin :

886 

887```bash theme={null}

888claude plugin marketplace add acme-corp/monorepo --sparse .claude-plugin plugins

889```

890 

891### Plugin marketplace list

892 

893Listez toutes les places de marché configurées.

894 

895```bash theme={null}

896claude plugin marketplace list [options]

897```

898 

899**Options :**

900 

901| Option | Description |

902| :------- | :------------- |

903| `--json` | Sortie en JSON |

904 

905### Plugin marketplace remove

906 

907Supprimez une place de marché configurée. L'alias `rm` est également accepté.

908 

909```bash theme={null}

910claude plugin marketplace remove <name>

911```

912 

913**Arguments :**

914 

915* `<name>` : nom de la place de marché à supprimer, comme indiqué par `claude plugin marketplace list`. C'est le `name` de `marketplace.json`, pas la source que vous avez passée à `add`

916 

917<Warning>

918 La suppression d'une place de marché désinstalle également tous les plugins que vous avez installés à partir de celle-ci. Pour actualiser une place de marché sans perdre les plugins installés, utilisez `claude plugin marketplace update` à la place.

919</Warning>

920 

921### Plugin marketplace update

922 

923Actualisez les places de marché à partir de leurs sources pour récupérer les nouveaux plugins et les changements de version.

924 

925```bash theme={null}

926claude plugin marketplace update [name]

927```

928 

929**Arguments :**

930 

931* `[name]` : nom de la place de marché à mettre à jour, comme indiqué par `claude plugin marketplace list`. Met à jour toutes les places de marché si omis

932 

933À la fois `remove` et `update` échouent lorsqu'ils sont exécutés contre une place de marché gérée par seed, qui est en lecture seule. Lors de la mise à jour de toutes les places de marché, les entrées gérées par seed sont ignorées et les autres places de marché se mettent toujours à jour. Pour modifier les plugins fournis par seed, demandez à votre administrateur de mettre à jour l'image de seed. Voir [Pré-remplir les plugins pour les conteneurs](#pre-populate-plugins-for-containers).

934 

935## Dépannage

936 

937### La place de marché ne se charge pas

938 

939**Symptômes** : Impossible d'ajouter la place de marché ou de voir les plugins qu'elle contient

940 

941**Solutions** :

942 

943* Vérifiez que l'URL de la place de marché est accessible

944* Vérifiez que `.claude-plugin/marketplace.json` existe au chemin spécifié

945* Assurez-vous que la syntaxe JSON est valide et que le frontmatter est bien formé en utilisant `claude plugin validate` ou `/plugin validate`

946* Pour les dépôts privés, confirmez que vous avez les permissions d'accès

947 

948### Erreurs de validation de la place de marché

949 

950Exécutez `claude plugin validate .` ou `/plugin validate .` à partir de votre répertoire de place de marché pour vérifier les problèmes. Le validateur vérifie `plugin.json`, le frontmatter des compétences/agents/commandes et `hooks/hooks.json` pour les erreurs de syntaxe et de schéma. Erreurs courantes :

951 

952| Erreur | Cause | Solution |

953| :------------------------------------------------ | :------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------ |

954| `File not found: .claude-plugin/marketplace.json` | Manifeste manquant | Créez `.claude-plugin/marketplace.json` avec les champs obligatoires |

955| `Invalid JSON syntax: Unexpected token...` | Erreur de syntaxe JSON dans marketplace.json | Vérifiez les virgules manquantes, les virgules supplémentaires ou les chaînes non citées |

956| `Duplicate plugin name "x" found in marketplace` | Deux plugins partagent le même nom | Donnez à chaque plugin une valeur `name` unique |

957| `plugins[0].source: Path contains ".."` | Le chemin source contient `..` | Utilisez des chemins relatifs à la racine de la place de marché sans `..`. Voir [Chemins relatifs](#relative-paths) |

958| `YAML frontmatter failed to parse: ...` | YAML invalide dans un fichier de compétence, d'agent ou de commande | Corrigez la syntaxe YAML dans le bloc frontmatter. À l'exécution, ce fichier se charge sans métadonnées. |

959| `Invalid JSON syntax: ...` (hooks.json) | `hooks/hooks.json` mal formé | Corrigez la syntaxe JSON. Un `hooks/hooks.json` mal formé empêche le chargement du plugin entier. |

960 

961**Avertissements** (non bloquants) :

962 

963* `Marketplace has no plugins defined` : ajoutez au moins un plugin au tableau `plugins`

964* `No marketplace description provided` : ajoutez une `description` au niveau supérieur pour aider les utilisateurs à comprendre votre place de marché

965* `Plugin name "x" is not kebab-case` : le nom du plugin contient des lettres majuscules, des espaces ou des caractères spéciaux. Renommez en minuscules, chiffres et tirets uniquement (par exemple, `my-plugin`). Claude Code accepte d'autres formes, mais la synchronisation de la place de marché Claude.ai les rejette.

966 

967### Échecs d'installation de plugins

968 

969**Symptômes** : La place de marché apparaît mais l'installation du plugin échoue

970 

971**Solutions** :

972 

973* Vérifiez que les URL sources des plugins sont accessibles

974* Vérifiez que les répertoires des plugins contiennent les fichiers requis

975* Pour les sources GitHub, assurez-vous que les dépôts sont publics ou que vous avez accès

976* Testez manuellement les sources de plugins en les clonant/téléchargeant

977 

978### L'authentification du dépôt privé échoue

979 

980**Symptômes** : Erreurs d'authentification lors de l'installation de plugins à partir de dépôts privés

981 

982**Solutions** :

983 

984Pour l'installation manuelle et les mises à jour :

985 

986* Vérifiez que vous êtes authentifié auprès de votre fournisseur git (par exemple, exécutez `gh auth status` pour GitHub)

987* Vérifiez que votre assistant de credentials est configuré correctement : `git config --global credential.helper`

988* Essayez de cloner le dépôt manuellement pour vérifier que vos credentials fonctionnent

989 

990Pour les mises à jour automatiques en arrière-plan :

991 

992* Définissez le jeton approprié dans votre environnement : `echo $GITHUB_TOKEN`

993* Vérifiez que le jeton a les permissions requises (accès en lecture au dépôt)

994* Pour GitHub, assurez-vous que le jeton a la portée `repo` pour les dépôts privés

995* Pour GitLab, assurez-vous que le jeton a au moins la portée `read_repository`

996* Vérifiez que le jeton n'a pas expiré

997 

998### Les mises à jour de la place de marché échouent dans les environnements hors ligne

999 

1000**Symptômes** : Le `git pull` de la place de marché échoue et Claude Code efface le cache existant, rendant les plugins indisponibles.

1001 

1002**Cause** : Par défaut, lorsqu'un `git pull` échoue, Claude Code supprime le clone obsolète et tente de re-cloner. Dans les environnements hors ligne ou isolés, le re-clonage échoue de la même manière, laissant le répertoire de la place de marché vide.

1003 

1004**Solution** : Définissez `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1` pour conserver le cache existant lorsque le pull échoue au lieu de l'effacer :

1005 

1006```bash theme={null}

1007export CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1

1008```

1009 

1010Avec cette variable définie, Claude Code conserve le clone obsolète de la place de marché en cas d'échec de `git pull` et continue d'utiliser le dernier état connu bon. Pour les déploiements entièrement hors ligne où le dépôt ne sera jamais accessible, utilisez [`CLAUDE_CODE_PLUGIN_SEED_DIR`](#pre-populate-plugins-for-containers) pour pré-remplir le répertoire des plugins au moment de la construction à la place.

1011 

1012### Les opérations Git expirent

1013 

1014**Symptômes** : L'installation du plugin ou les mises à jour de la place de marché échouent avec une erreur de délai d'expiration comme « Git clone timed out after 120s » ou « Git pull timed out after 120s ».

1015 

1016**Cause** : Claude Code utilise un délai d'expiration de 120 secondes pour toutes les opérations git, y compris le clonage des dépôts de plugins et l'extraction des mises à jour de la place de marché. Les grands dépôts ou les connexions réseau lentes peuvent dépasser cette limite.

1017 

1018**Solution** : Augmentez le délai d'expiration en utilisant la variable d'environnement `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS`. La valeur est en millisecondes :

1019 

1020```bash theme={null}

1021export CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS=300000 # 5 minutes

1022```

1023 

1024### Les plugins avec chemins relatifs échouent dans les places de marché basées sur les URL

1025 

1026**Symptômes** : Vous avez ajouté une place de marché via URL (comme `https://example.com/marketplace.json`), mais les plugins avec des sources de chemin relatif comme `"./plugins/my-plugin"` échouent à installer avec des erreurs « path not found ».

1027 

1028**Cause** : Les places de marché basées sur les URL téléchargent uniquement le fichier `marketplace.json` lui-même. Elles ne téléchargent pas les fichiers de plugins du serveur. Les chemins relatifs dans l'entrée de la place de marché référencent des fichiers sur le serveur distant qui n'ont pas été téléchargés.

1029 

1030**Solutions** :

1031 

1032* **Utiliser des sources externes** : Changez les entrées de plugins pour utiliser les sources GitHub, npm ou URL git au lieu des chemins relatifs :

1033 ```json theme={null}

1034 { "name": "my-plugin", "source": { "source": "github", "repo": "owner/repo" } }

1035 ```

1036* **Utiliser une place de marché basée sur Git** : Hébergez votre place de marché dans un dépôt Git et ajoutez-la avec l'URL git. Les places de marché basées sur Git clonent le dépôt entier, ce qui rend les chemins relatifs fonctionnels.

1037 

1038### Fichiers non trouvés après l'installation

1039 

1040**Symptômes** : Le plugin s'installe mais les références aux fichiers échouent, en particulier les fichiers en dehors du répertoire du plugin

1041 

1042**Cause** : Les plugins sont copiés vers un répertoire de cache plutôt que d'être utilisés sur place. Les chemins qui référencent des fichiers en dehors du répertoire du plugin (comme `../shared-utils`) ne fonctionneront pas car ces fichiers ne sont pas copiés.

1043 

1044**Solutions** : Consultez [Plugin caching and file resolution](/fr/plugins-reference#plugin-caching-and-file-resolution) pour les solutions de contournement, y compris les symlinks et la restructuration des répertoires.

1045 

1046Pour des outils de débogage supplémentaires et des problèmes courants, consultez [Debugging and development tools](/fr/plugins-reference#debugging-and-development-tools).

1047 

1048## Voir aussi

1049 

1050* [Découvrir et installer des plugins préconfigurés](/fr/discover-plugins) - Installation de plugins à partir de places de marché existantes

1051* [Plugins](/fr/plugins) - Création de vos propres plugins

1052* [Référence des plugins](/fr/plugins-reference) - Spécifications techniques complètes et schémas

1053* [Paramètres des plugins](/fr/settings#plugin-settings) - Options de configuration des plugins

1054* [Référence strictKnownMarketplaces](/fr/settings#strictknownmarketplaces) - Restrictions des places de marché gérées

plugins.md +454 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Créer des plugins

6 

7> Créez des plugins personnalisés pour étendre Claude Code avec des skills, des agents, des hooks et des serveurs MCP.

8 

9Les plugins vous permettent d'étendre Claude Code avec des fonctionnalités personnalisées qui peuvent être partagées entre les projets et les équipes. Ce guide couvre la création de vos propres plugins avec des skills, des agents, des hooks et des serveurs MCP.

10 

11Vous cherchez à installer des plugins existants ? Consultez [Découvrir et installer des plugins](/fr/discover-plugins). Pour les spécifications techniques complètes, consultez [Référence des plugins](/fr/plugins-reference).

12 

13## Quand utiliser les plugins par rapport à la configuration autonome

14 

15Claude Code prend en charge deux façons d'ajouter des skills, des agents et des hooks personnalisés :

16 

17| Approche | Noms des skills | Idéal pour |

18| :---------------------------------------------------------- | :------------------- | :------------------------------------------------------------------------------------------------------------ |

19| **Autonome** (répertoire `.claude/`) | `/hello` | Flux de travail personnels, personnalisations spécifiques au projet, expériences rapides |

20| **Plugins** (répertoires avec `.claude-plugin/plugin.json`) | `/plugin-name:hello` | Partage avec les coéquipiers, distribution à la communauté, versions publiées, réutilisable entre les projets |

21 

22**Utilisez la configuration autonome quand** :

23 

24* Vous personnalisez Claude Code pour un seul projet

25* La configuration est personnelle et n'a pas besoin d'être partagée

26* Vous expérimentez avec des skills ou des hooks avant de les empaqueter

27* Vous voulez des noms de skills courts comme `/hello` ou `/deploy`

28 

29**Utilisez les plugins quand** :

30 

31* Vous voulez partager des fonctionnalités avec votre équipe ou la communauté

32* Vous avez besoin des mêmes skills/agents sur plusieurs projets

33* Vous voulez le contrôle de version et les mises à jour faciles pour vos extensions

34* Vous distribuez via une marketplace

35* Vous êtes d'accord avec les skills avec espace de noms comme `/my-plugin:hello` (l'espace de noms prévient les conflits entre les plugins)

36 

37<Tip>

38 Commencez par la configuration autonome dans `.claude/` pour une itération rapide, puis [convertissez en plugin](#convert-existing-configurations-to-plugins) quand vous êtes prêt à partager.

39</Tip>

40 

41## Démarrage rapide

42 

43Ce démarrage rapide vous guide dans la création d'un plugin avec un skill personnalisé. Vous allez créer un manifeste (le fichier de configuration qui définit votre plugin), ajouter un skill et le tester localement en utilisant le drapeau `--plugin-dir`.

44 

45### Prérequis

46 

47* Claude Code [installé et authentifié](/fr/quickstart#step-1-install-claude-code)

48 

49<Note>

50 Si vous ne voyez pas la commande `/plugin`, mettez à jour Claude Code vers la dernière version. Consultez [Dépannage](/fr/troubleshooting) pour les instructions de mise à niveau.

51</Note>

52 

53### Créez votre premier plugin

54 

55<Steps>

56 <Step title="Créez le répertoire du plugin">

57 Chaque plugin se trouve dans son propre répertoire contenant un manifeste et vos skills, agents ou hooks. Créez-en un maintenant :

58 

59 ```bash theme={null}

60 mkdir my-first-plugin

61 ```

62 </Step>

63 

64 <Step title="Créez le manifeste du plugin">

65 Le fichier manifeste à `.claude-plugin/plugin.json` définit l'identité de votre plugin : son nom, sa description et sa version. Claude Code utilise ces métadonnées pour afficher votre plugin dans le gestionnaire de plugins.

66 

67 Créez le répertoire `.claude-plugin` à l'intérieur de votre dossier de plugin :

68 

69 ```bash theme={null}

70 mkdir my-first-plugin/.claude-plugin

71 ```

72 

73 Ensuite, créez `my-first-plugin/.claude-plugin/plugin.json` avec ce contenu :

74 

75 ```json my-first-plugin/.claude-plugin/plugin.json theme={null}

76 {

77 "name": "my-first-plugin",

78 "description": "A greeting plugin to learn the basics",

79 "version": "1.0.0",

80 "author": {

81 "name": "Your Name"

82 }

83 }

84 ```

85 

86 | Champ | Objectif |

87 | :------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

88 | `name` | Identifiant unique et espace de noms du skill. Les skills sont préfixés avec ceci (par exemple, `/my-first-plugin:hello`). |

89 | `description` | Affiché dans le gestionnaire de plugins lors de la navigation ou de l'installation de plugins. |

90 | `version` | Optionnel. S'il est défini, les utilisateurs ne reçoivent les mises à jour que lorsque vous augmentez ce champ. S'il est omis et que votre plugin est distribué via git, le SHA du commit est utilisé et chaque commit compte comme une nouvelle version. Consultez [gestion des versions](/fr/plugins-reference#version-management). |

91 | `author` | Optionnel. Utile pour l'attribution. |

92 

93 Pour les champs supplémentaires comme `homepage`, `repository` et `license`, consultez le [schéma manifeste complet](/fr/plugins-reference#plugin-manifest-schema).

94 </Step>

95 

96 <Step title="Ajoutez un skill">

97 Les skills se trouvent dans le répertoire `skills/`. Chaque skill est un dossier contenant un fichier `SKILL.md`. Le nom du dossier devient le nom du skill, préfixé par l'espace de noms du plugin (`hello/` dans un plugin nommé `my-first-plugin` crée `/my-first-plugin:hello`).

98 

99 Créez un répertoire de skill dans votre dossier de plugin :

100 

101 ```bash theme={null}

102 mkdir -p my-first-plugin/skills/hello

103 ```

104 

105 Ensuite, créez `my-first-plugin/skills/hello/SKILL.md` avec ce contenu :

106 

107 ```markdown my-first-plugin/skills/hello/SKILL.md theme={null}

108 ---

109 description: Greet the user with a friendly message

110 disable-model-invocation: true

111 ---

112 

113 Greet the user warmly and ask how you can help them today.

114 ```

115 </Step>

116 

117 <Step title="Testez votre plugin">

118 Exécutez Claude Code avec le drapeau `--plugin-dir` pour charger votre plugin :

119 

120 ```bash theme={null}

121 claude --plugin-dir ./my-first-plugin

122 ```

123 

124 Une fois Claude Code démarré, essayez votre nouveau skill :

125 

126 ```shell theme={null}

127 /my-first-plugin:hello

128 ```

129 

130 Vous verrez Claude répondre avec un salut. Exécutez `/help` pour voir votre skill listé sous l'espace de noms du plugin.

131 

132 <Note>

133 **Pourquoi l'espace de noms ?** Les skills des plugins sont toujours avec espace de noms (comme `/my-first-plugin:hello`) pour prévenir les conflits quand plusieurs plugins ont des skills avec le même nom.

134 

135 Pour changer le préfixe d'espace de noms, mettez à jour le champ `name` dans `plugin.json`.

136 </Note>

137 </Step>

138 

139 <Step title="Ajoutez des arguments au skill">

140 Rendez votre skill dynamique en acceptant l'entrée de l'utilisateur. L'espace réservé `$ARGUMENTS` capture tout texte que l'utilisateur fournit après le nom du skill.

141 

142 Mettez à jour votre fichier `SKILL.md` :

143 

144 ```markdown my-first-plugin/skills/hello/SKILL.md theme={null}

145 ---

146 description: Greet the user with a personalized message

147 ---

148 

149 # Hello Skill

150 

151 Greet the user named "$ARGUMENTS" warmly and ask how you can help them today. Make the greeting personal and encouraging.

152 ```

153 

154 Exécutez `/reload-plugins` pour récupérer les modifications, puis essayez le skill avec votre nom :

155 

156 ```shell theme={null}

157 /my-first-plugin:hello Alex

158 ```

159 

160 Claude vous saluera par votre nom. Pour plus d'informations sur la transmission d'arguments aux skills, consultez [Skills](/fr/skills#pass-arguments-to-skills).

161 </Step>

162</Steps>

163 

164Vous avez créé et testé avec succès un plugin avec ces composants clés :

165 

166* **Manifeste du plugin** (`.claude-plugin/plugin.json`) : décrit les métadonnées de votre plugin

167* **Répertoire des skills** (`skills/`) : contient vos skills personnalisés

168* **Arguments du skill** (`$ARGUMENTS`) : capture l'entrée de l'utilisateur pour un comportement dynamique

169 

170<Tip>

171 Le drapeau `--plugin-dir` est utile pour le développement et les tests. Quand vous êtes prêt à partager votre plugin avec d'autres, consultez [Créer et distribuer une marketplace de plugins](/fr/plugin-marketplaces).

172</Tip>

173 

174## Aperçu de la structure du plugin

175 

176Vous avez créé un plugin avec un skill, mais les plugins peuvent inclure beaucoup plus : des agents personnalisés, des hooks, des serveurs MCP, des serveurs LSP et des moniteurs en arrière-plan.

177 

178<Warning>

179 **Erreur courante** : Ne mettez pas `commands/`, `agents/`, `skills/` ou `hooks/` à l'intérieur du répertoire `.claude-plugin/`. Seul `plugin.json` va à l'intérieur de `.claude-plugin/`. Tous les autres répertoires doivent être au niveau racine du plugin.

180</Warning>

181 

182| Répertoire | Emplacement | Objectif |

183| :---------------- | :--------------- | :------------------------------------------------------------------------------------------------------ |

184| `.claude-plugin/` | Racine du plugin | Contient le manifeste `plugin.json` (optionnel si les composants utilisent les emplacements par défaut) |

185| `skills/` | Racine du plugin | Skills en tant que répertoires `<name>/SKILL.md` |

186| `commands/` | Racine du plugin | Skills en tant que fichiers Markdown plats. Utilisez `skills/` pour les nouveaux plugins |

187| `agents/` | Racine du plugin | Définitions d'agents personnalisés |

188| `hooks/` | Racine du plugin | Gestionnaires d'événements dans `hooks.json` |

189| `.mcp.json` | Racine du plugin | Configurations du serveur MCP |

190| `.lsp.json` | Racine du plugin | Configurations du serveur LSP pour l'intelligence du code |

191| `monitors/` | Racine du plugin | Configurations du moniteur en arrière-plan dans `monitors.json` |

192| `bin/` | Racine du plugin | Exécutables ajoutés au `PATH` de l'outil Bash tandis que le plugin est activé |

193| `settings.json` | Racine du plugin | [Paramètres](/fr/settings) par défaut appliqués quand le plugin est activé |

194 

195<Note>

196 **Prochaines étapes** : Prêt à ajouter plus de fonctionnalités ? Allez à [Développer des plugins plus complexes](#develop-more-complex-plugins) pour ajouter des agents, des hooks, des serveurs MCP et des serveurs LSP. Pour les spécifications techniques complètes de tous les composants du plugin, consultez [Référence des plugins](/fr/plugins-reference).

197</Note>

198 

199## Développer des plugins plus complexes

200 

201Une fois que vous êtes à l'aise avec les plugins de base, vous pouvez créer des extensions plus sophistiquées.

202 

203### Ajoutez des Skills à votre plugin

204 

205Les plugins peuvent inclure des [Agent Skills](/fr/skills) pour étendre les capacités de Claude. Les skills sont invoqués par le modèle : Claude les utilise automatiquement en fonction du contexte de la tâche.

206 

207Ajoutez un répertoire `skills/` à la racine de votre plugin avec des dossiers de Skill contenant des fichiers `SKILL.md` :

208 

209```text theme={null}

210my-plugin/

211├── .claude-plugin/

212│ └── plugin.json

213└── skills/

214 └── code-review/

215 └── SKILL.md

216```

217 

218Chaque `SKILL.md` contient un frontmatter YAML et des instructions. Incluez une `description` pour que Claude sache quand utiliser le skill :

219 

220```yaml theme={null}

221---

222description: Reviews code for best practices and potential issues. Use when reviewing code, checking PRs, or analyzing code quality.

223---

224 

225When reviewing code, check for:

2261. Code organization and structure

2272. Error handling

2283. Security concerns

2294. Test coverage

230```

231 

232Après l'installation du plugin, exécutez `/reload-plugins` pour charger les Skills. Pour des conseils complets sur la création de Skills incluant la divulgation progressive et les restrictions d'outils, consultez [Agent Skills](/fr/skills).

233 

234### Ajoutez des serveurs LSP à votre plugin

235 

236<Tip>

237 Pour les langages courants comme TypeScript, Python et Rust, installez les plugins LSP pré-construits à partir de la marketplace officielle. Créez des plugins LSP personnalisés uniquement quand vous avez besoin de support pour des langages non encore couverts.

238</Tip>

239 

240Les plugins LSP (Language Server Protocol) donnent à Claude l'intelligence du code en temps réel. Si vous avez besoin de supporter un langage qui n'a pas de plugin LSP officiel, vous pouvez en créer un en ajoutant un fichier `.lsp.json` à votre plugin :

241 

242```json .lsp.json theme={null}

243{

244 "go": {

245 "command": "gopls",

246 "args": ["serve"],

247 "extensionToLanguage": {

248 ".go": "go"

249 }

250 }

251}

252```

253 

254Les utilisateurs qui installent votre plugin doivent avoir le binaire du serveur de langage installé sur leur machine.

255 

256Pour les options de configuration LSP complètes, consultez [Serveurs LSP](/fr/plugins-reference#lsp-servers).

257 

258### Ajoutez des moniteurs en arrière-plan à votre plugin

259 

260Les moniteurs en arrière-plan permettent à votre plugin de surveiller les journaux, les fichiers ou l'état externe en arrière-plan et de notifier Claude à mesure que les événements arrivent. Claude Code démarre automatiquement chaque moniteur quand le plugin est actif, donc vous n'avez pas besoin d'instruire Claude pour démarrer la surveillance.

261 

262Ajoutez un fichier `monitors/monitors.json` à la racine du plugin avec un tableau d'entrées de moniteur :

263 

264```json monitors/monitors.json theme={null}

265[

266 {

267 "name": "error-log",

268 "command": "tail -F ./logs/error.log",

269 "description": "Application error log"

270 }

271]

272```

273 

274Chaque ligne stdout de `command` est livrée à Claude en tant que notification pendant la session. Pour le schéma complet, incluant le déclencheur `when` et la substitution de variables, consultez [Moniteurs](/fr/plugins-reference#monitors).

275 

276### Livrez les paramètres par défaut avec votre plugin

277 

278Les plugins peuvent inclure un fichier `settings.json` à la racine du plugin pour appliquer la configuration par défaut quand le plugin est activé. Actuellement, seules les clés `agent` et `subagentStatusLine` sont supportées.

279 

280Définir `agent` active l'un des [agents personnalisés](/fr/sub-agents) du plugin en tant que thread principal, en appliquant son invite système, ses restrictions d'outils et son modèle. Cela permet à un plugin de changer le comportement par défaut de Claude Code quand il est activé.

281 

282```json settings.json theme={null}

283{

284 "agent": "security-reviewer"

285}

286```

287 

288Cet exemple active l'agent `security-reviewer` défini dans le répertoire `agents/` du plugin. Les paramètres de `settings.json` ont priorité sur les `settings` déclarés dans `plugin.json`. Les clés inconnues sont silencieusement ignorées.

289 

290### Organisez les plugins complexes

291 

292Pour les plugins avec de nombreux composants, organisez votre structure de répertoires par fonctionnalité. Pour les dispositions de répertoires complètes et les modèles d'organisation, consultez [Structure du répertoire du plugin](/fr/plugins-reference#plugin-directory-structure).

293 

294### Testez vos plugins localement

295 

296Utilisez le drapeau `--plugin-dir` pour tester les plugins pendant le développement. Cela charge votre plugin directement sans nécessiter d'installation.

297 

298```bash theme={null}

299claude --plugin-dir ./my-plugin

300```

301 

302Quand un plugin `--plugin-dir` a le même nom qu'un plugin marketplace installé, la copie locale prend la priorité pour cette session. Cela vous permet de tester les modifications d'un plugin que vous avez déjà installé sans le désinstaller d'abord. Les plugins marketplace forcément activés par les paramètres gérés sont la seule exception et ne peuvent pas être remplacés.

303 

304À mesure que vous apportez des modifications à votre plugin, exécutez `/reload-plugins` pour récupérer les mises à jour sans redémarrer. Cela recharge les plugins, les skills, les agents, les hooks, les serveurs MCP du plugin et les serveurs LSP du plugin. Testez vos composants de plugin :

305 

306* Essayez vos skills avec `/plugin-name:skill-name`

307* Vérifiez que les agents apparaissent dans `/agents`

308* Vérifiez que les hooks fonctionnent comme prévu

309 

310<Tip>

311 Vous pouvez charger plusieurs plugins à la fois en spécifiant le drapeau plusieurs fois :

312 

313 ```bash theme={null}

314 claude --plugin-dir ./plugin-one --plugin-dir ./plugin-two

315 ```

316</Tip>

317 

318### Déboguez les problèmes de plugin

319 

320Si votre plugin ne fonctionne pas comme prévu :

321 

3221. **Vérifiez la structure** : Assurez-vous que vos répertoires sont à la racine du plugin, pas à l'intérieur de `.claude-plugin/`

3232. **Testez les composants individuellement** : Vérifiez chaque skill, agent et hook séparément

3243. **Utilisez les outils de validation et de débogage** : Consultez [Outils de débogage et de développement](/fr/plugins-reference#debugging-and-development-tools) pour les commandes CLI et les techniques de dépannage

325 

326### Partagez vos plugins

327 

328Quand votre plugin est prêt à être partagé :

329 

3301. **Ajoutez de la documentation** : Incluez un `README.md` avec les instructions d'installation et d'utilisation

3312. **Choisissez une stratégie de versioning** : Décidez si vous allez définir une `version` explicite ou vous fier au SHA du commit git. Consultez [gestion des versions](/fr/plugins-reference#version-management)

3323. **Créez ou utilisez une marketplace** : Distribuez via des [marketplaces de plugins](/fr/plugin-marketplaces) pour l'installation

3334. **Testez avec d'autres** : Faites tester le plugin par les membres de l'équipe avant une distribution plus large

334 

335Une fois que votre plugin est dans une marketplace, d'autres peuvent l'installer en utilisant les instructions dans [Découvrir et installer des plugins](/fr/discover-plugins). Pour garder un plugin interne à votre équipe, hébergez la marketplace dans un [référentiel privé](/fr/plugin-marketplaces#private-repositories).

336 

337### Soumettez votre plugin à la marketplace officielle

338 

339Pour soumettre un plugin à la marketplace officielle d'Anthropic, utilisez l'un des formulaires de soumission dans l'application :

340 

341* **Claude.ai** : [claude.ai/settings/plugins/submit](https://claude.ai/settings/plugins/submit)

342* **Console** : [platform.claude.com/plugins/submit](https://platform.claude.com/plugins/submit)

343 

344Une fois que votre plugin est listé, vous pouvez avoir votre propre CLI qui invite les utilisateurs de Claude Code à l'installer. Consultez [Recommander votre plugin à partir de votre CLI](/fr/plugin-hints).

345 

346<Note>

347 Pour les spécifications techniques complètes, les techniques de débogage et les stratégies de distribution, consultez [Référence des plugins](/fr/plugins-reference).

348</Note>

349 

350## Convertir les configurations existantes en plugins

351 

352Si vous avez déjà des skills ou des hooks dans votre répertoire `.claude/`, vous pouvez les convertir en plugin pour un partage et une distribution plus faciles.

353 

354### Étapes de migration

355 

356<Steps>

357 <Step title="Créez la structure du plugin">

358 Créez un nouveau répertoire de plugin :

359 

360 ```bash theme={null}

361 mkdir -p my-plugin/.claude-plugin

362 ```

363 

364 Créez le fichier manifeste à `my-plugin/.claude-plugin/plugin.json` :

365 

366 ```json my-plugin/.claude-plugin/plugin.json theme={null}

367 {

368 "name": "my-plugin",

369 "description": "Migrated from standalone configuration",

370 "version": "1.0.0"

371 }

372 ```

373 </Step>

374 

375 <Step title="Copiez vos fichiers existants">

376 Copiez vos configurations existantes dans le répertoire du plugin :

377 

378 ```bash theme={null}

379 # Copy commands

380 cp -r .claude/commands my-plugin/

381 

382 # Copy agents (if any)

383 cp -r .claude/agents my-plugin/

384 

385 # Copy skills (if any)

386 cp -r .claude/skills my-plugin/

387 ```

388 </Step>

389 

390 <Step title="Migrez les hooks">

391 Si vous avez des hooks dans vos paramètres, créez un répertoire de hooks :

392 

393 ```bash theme={null}

394 mkdir my-plugin/hooks

395 ```

396 

397 Créez `my-plugin/hooks/hooks.json` avec votre configuration de hooks. Copiez l'objet `hooks` de votre `.claude/settings.json` ou `settings.local.json`, car le format est le même. La commande reçoit l'entrée du hook en tant que JSON sur stdin, donc utilisez `jq` pour extraire le chemin du fichier :

398 

399 ```json my-plugin/hooks/hooks.json theme={null}

400 {

401 "hooks": {

402 "PostToolUse": [

403 {

404 "matcher": "Write|Edit",

405 "hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npm run lint:fix" }]

406 }

407 ]

408 }

409 }

410 ```

411 </Step>

412 

413 <Step title="Testez votre plugin migré">

414 Chargez votre plugin pour vérifier que tout fonctionne :

415 

416 ```bash theme={null}

417 claude --plugin-dir ./my-plugin

418 ```

419 

420 Testez chaque composant : exécutez vos commandes, vérifiez que les agents apparaissent dans `/agents` et vérifiez que les hooks se déclenchent correctement.

421 </Step>

422</Steps>

423 

424### Ce qui change lors de la migration

425 

426| Autonome (`.claude/`) | Plugin |

427| :----------------------------------------- | :------------------------------------- |

428| Disponible uniquement dans un projet | Peut être partagé via des marketplaces |

429| Fichiers dans `.claude/commands/` | Fichiers dans `plugin-name/commands/` |

430| Hooks dans `settings.json` | Hooks dans `hooks/hooks.json` |

431| Doit être copié manuellement pour partager | Installer avec `/plugin install` |

432 

433<Note>

434 Après la migration, vous pouvez supprimer les fichiers originaux de `.claude/` pour éviter les doublons. La version du plugin aura la priorité quand elle est chargée.

435</Note>

436 

437## Prochaines étapes

438 

439Maintenant que vous comprenez le système de plugins de Claude Code, voici les chemins suggérés pour différents objectifs :

440 

441### Pour les utilisateurs de plugins

442 

443* [Découvrir et installer des plugins](/fr/discover-plugins) : parcourir les marketplaces et installer des plugins

444* [Configurer les marketplaces d'équipe](/fr/discover-plugins#configure-team-marketplaces) : configurer les plugins au niveau du référentiel pour votre équipe

445 

446### Pour les développeurs de plugins

447 

448* [Créer et distribuer une marketplace](/fr/plugin-marketplaces) : empaqueter et partager vos plugins

449* [Référence des plugins](/fr/plugins-reference) : spécifications techniques complètes

450* Approfondissez les composants spécifiques du plugin :

451 * [Skills](/fr/skills) : détails du développement des skills

452 * [Subagents](/fr/sub-agents) : configuration et capacités des agents

453 * [Hooks](/fr/hooks) : gestion des événements et automatisation

454 * [MCP](/fr/mcp) : intégration d'outils externes

plugins-reference.md +1011 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Référence des plugins

6 

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 

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).

11</Tip>

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.

14 

15Un **plugin** est un répertoire autonome de composants qui étend Claude Code avec des fonctionnalités personnalisées. Les composants de plugin incluent les skills, les agents, les hooks, les serveurs MCP, les serveurs LSP et les moniteurs.

16 

17## Référence des composants de plugin

18 

19### Skills

20 

21Les plugins ajoutent des skills à Claude Code, créant des raccourcis `/name` que vous ou Claude pouvez invoquer.

22 

23**Emplacement** : répertoire `skills/` ou `commands/` à la racine du plugin

24 

25**Format de fichier** : Les skills sont des répertoires avec `SKILL.md` ; les commandes sont des fichiers markdown simples

26 

27**Structure des skills** :

28 

29```text theme={null}

30skills/

31├── pdf-processor/

32│ ├── SKILL.md

33│ ├── reference.md (optionnel)

34│ └── scripts/ (optionnel)

35└── code-reviewer/

36 └── SKILL.md

37```

38 

39**Comportement d'intégration** :

40 

41* Les skills et les commandes sont découverts automatiquement lors de l'installation du plugin

42* Claude peut les invoquer automatiquement en fonction du contexte de la tâche

43* Les skills peuvent inclure des fichiers de support à côté de SKILL.md

44 

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

46 

47### Agents

48 

49Les plugins peuvent fournir des subagents spécialisés pour des tâches spécifiques que Claude peut invoquer automatiquement si approprié.

50 

51**Emplacement** : répertoire `agents/` à la racine du plugin

52 

53**Format de fichier** : Fichiers markdown décrivant les capacités de l'agent

54 

55**Structure de l'agent** :

56 

57```markdown theme={null}

58---

59name: agent-name

60description: Ce dans quoi cet agent se spécialise et quand Claude devrait l'invoquer

61model: sonnet

62effort: medium

63maxTurns: 20

64disallowedTools: Write, Edit

65---

66 

67Invite système détaillée pour l'agent décrivant son rôle, son expertise et son comportement.

68```

69 

70Les agents de plugin prennent en charge les champs frontmatter `name`, `description`, `model`, `effort`, `maxTurns`, `tools`, `disallowedTools`, `skills`, `memory`, `background` et `isolation`. La seule valeur `isolation` valide est `"worktree"`. Pour des raisons de sécurité, `hooks`, `mcpServers` et `permissionMode` ne sont pas pris en charge pour les agents fournis par les plugins.

71 

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

73 

74* Les agents apparaissent dans l'interface `/agents`

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

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

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

78 

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

80 

81### Hooks

82 

83Les plugins peuvent fournir des gestionnaires d'événements qui répondent automatiquement aux événements de Claude Code.

84 

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

86 

87**Format** : Configuration JSON avec des correspondances d'événements et des actions

88 

89**Configuration des hooks** :

90 

91```json theme={null}

92{

93 "hooks": {

94 "PostToolUse": [

95 {

96 "matcher": "Write|Edit",

97 "hooks": [

98 {

99 "type": "command",

100 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/format-code.sh"

101 }

102 ]

103 }

104 ]

105 }

106}

107```

108 

109Les hooks de plugin répondent aux mêmes événements de cycle de vie que les [hooks définis par l'utilisateur](/fr/hooks) :

110 

111| Event | When it fires |

112| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |

113| `SessionStart` | When a session begins or resumes |

114| `Setup` | When you start Claude Code with `--init-only`, or with `--init` or `--maintenance` in `-p` mode. For one-time preparation in CI or scripts |

115| `UserPromptSubmit` | When you submit a prompt, before Claude processes it |

116| `UserPromptExpansion` | When a user-typed command expands into a prompt, before it reaches Claude. Can block the expansion |

117| `PreToolUse` | Before a tool call executes. Can block it |

118| `PermissionRequest` | When a permission dialog appears |

119| `PermissionDenied` | When a tool call is denied by the auto mode classifier. Return `{retry: true}` to tell the model it may retry the denied tool call |

120| `PostToolUse` | After a tool call succeeds |

121| `PostToolUseFailure` | After a tool call fails |

122| `PostToolBatch` | After a full batch of parallel tool calls resolves, before the next model call |

123| `Notification` | When Claude Code sends a notification |

124| `SubagentStart` | When a subagent is spawned |

125| `SubagentStop` | When a subagent finishes |

126| `TaskCreated` | When a task is being created via `TaskCreate` |

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

128| `Stop` | When Claude finishes responding |

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

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

131| `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 |

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

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

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

135| `WorktreeCreate` | When a worktree is being created via `--worktree` or `isolation: "worktree"`. Replaces default git behavior |

136| `WorktreeRemove` | When a worktree is being removed, either at session exit or when a subagent finishes |

137| `PreCompact` | Before context compaction |

138| `PostCompact` | After context compaction completes |

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

140| `ElicitationResult` | After a user responds to an MCP elicitation, before the response is sent back to the server |

141| `SessionEnd` | When a session terminates |

142 

143**Types de hooks** :

144 

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

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

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

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

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

150 

151### Serveurs MCP

152 

153Les plugins peuvent regrouper des serveurs Model Context Protocol (MCP) pour connecter Claude Code avec des outils et services externes.

154 

155**Emplacement** : `.mcp.json` à la racine du plugin, ou en ligne dans plugin.json

156 

157**Format** : Configuration standard du serveur MCP

158 

159**Configuration du serveur MCP** :

160 

161```json theme={null}

162{

163 "mcpServers": {

164 "plugin-database": {

165 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",

166 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],

167 "env": {

168 "DB_PATH": "${CLAUDE_PLUGIN_ROOT}/data"

169 }

170 },

171 "plugin-api-client": {

172 "command": "npx",

173 "args": ["@company/mcp-server", "--plugin-mode"],

174 "cwd": "${CLAUDE_PLUGIN_ROOT}"

175 }

176 }

177}

178```

179 

180**Comportement d'intégration** :

181 

182* Les serveurs MCP de plugin démarrent automatiquement quand le plugin est activé

183* Les serveurs apparaissent comme des outils MCP standard dans la boîte à outils de Claude

184* Les capacités du serveur s'intègrent de manière transparente avec les outils existants de Claude

185* Les serveurs de plugin peuvent être configurés indépendamment des serveurs MCP de l'utilisateur

186 

187### Serveurs LSP

188 

189<Tip>

190 Vous cherchez à utiliser des plugins LSP ? Installez-les depuis la marketplace officielle : recherchez « lsp » dans l'onglet Découvrir de `/plugin`. Cette section documente comment créer des plugins LSP pour les langages non couverts par la marketplace officielle.

191</Tip>

192 

193Les plugins peuvent fournir des serveurs [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) (LSP) pour donner à Claude une intelligence de code en temps réel lors du travail sur votre base de code.

194 

195L'intégration LSP fournit :

196 

197* **Diagnostics instantanés** : Claude voit les erreurs et les avertissements immédiatement après chaque modification

198* **Navigation de code** : aller à la définition, trouver les références et les informations au survol

199* **Sensibilisation au langage** : informations de type et documentation pour les symboles de code

200 

201**Emplacement** : `.lsp.json` à la racine du plugin, ou en ligne dans `plugin.json`

202 

203**Format** : Configuration JSON mappant les noms des serveurs de langage à leurs configurations

204 

205**Format du fichier `.lsp.json`** :

206 

207```json theme={null}

208{

209 "go": {

210 "command": "gopls",

211 "args": ["serve"],

212 "extensionToLanguage": {

213 ".go": "go"

214 }

215 }

216}

217```

218 

219**En ligne dans `plugin.json`** :

220 

221```json theme={null}

222{

223 "name": "my-plugin",

224 "lspServers": {

225 "go": {

226 "command": "gopls",

227 "args": ["serve"],

228 "extensionToLanguage": {

229 ".go": "go"

230 }

231 }

232 }

233}

234```

235 

236**Champs obligatoires :**

237 

238| Champ | Description |

239| :-------------------- | :---------------------------------------------------------- |

240| `command` | Le binaire LSP à exécuter (doit être dans PATH) |

241| `extensionToLanguage` | Mappe les extensions de fichier aux identifiants de langage |

242 

243**Champs optionnels :**

244 

245| Champ | Description |

246| :---------------------- | :----------------------------------------------------------------- |

247| `args` | Arguments de ligne de commande pour le serveur LSP |

248| `transport` | Transport de communication : `stdio` (par défaut) ou `socket` |

249| `env` | Variables d'environnement à définir au démarrage du serveur |

250| `initializationOptions` | Options transmises au serveur lors de l'initialisation |

251| `settings` | Paramètres transmis via `workspace/didChangeConfiguration` |

252| `workspaceFolder` | Chemin du dossier de l'espace de travail pour le serveur |

253| `startupTimeout` | Temps maximum d'attente du démarrage du serveur (millisecondes) |

254| `shutdownTimeout` | Temps maximum d'attente de l'arrêt gracieux (millisecondes) |

255| `restartOnCrash` | S'il faut redémarrer automatiquement le serveur en cas de plantage |

256| `maxRestarts` | Nombre maximum de tentatives de redémarrage avant d'abandonner |

257 

258<Warning>

259 **Vous devez installer le binaire du serveur de langage séparément.** Les plugins LSP configurent comment Claude Code se connecte à un serveur de langage, mais ils n'incluent pas le serveur lui-même. Si vous voyez `Executable not found in $PATH` dans l'onglet Erreurs de `/plugin`, installez le binaire requis pour votre langage.

260</Warning>

261 

262**Plugins LSP disponibles :**

263 

264| Plugin | Serveur de langage | Commande d'installation |

265| :--------------- | :------------------------- | :----------------------------------------------------------------------------------------------- |

266| `pyright-lsp` | Pyright (Python) | `pip install pyright` ou `npm install -g pyright` |

267| `typescript-lsp` | TypeScript Language Server | `npm install -g typescript-language-server typescript` |

268| `rust-lsp` | rust-analyzer | [Voir l'installation de rust-analyzer](https://rust-analyzer.github.io/manual.html#installation) |

269 

270Installez d'abord le serveur de langage, puis installez le plugin depuis la marketplace.

271 

272### Moniteurs

273 

274Les 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.

275 

276Les 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.

277 

278<Note>

279 Les moniteurs de plugin nécessitent Claude Code v2.1.105 ou ultérieur.

280</Note>

281 

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

283 

284**Format** : Tableau JSON d'entrées de moniteur

285 

286Le `monitors/monitors.json` suivant surveille un point de terminaison de statut de déploiement et un journal d'erreurs local :

287 

288```json theme={null}

289[

290 {

291 "name": "deploy-status",

292 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/poll-deploy.sh ${user_config.api_endpoint}",

293 "description": "Changements de statut de déploiement"

294 },

295 {

296 "name": "error-log",

297 "command": "tail -F ./logs/error.log",

298 "description": "Journal d'erreurs de l'application",

299 "when": "on-skill-invoke:debug"

300 }

301]

302```

303 

304Pour déclarer les moniteurs en ligne, définissez la clé `monitors` dans `plugin.json` sur le même tableau. Pour charger à partir d'un chemin non par défaut, définissez `monitors` sur une chaîne de chemin relatif telle que `"./config/monitors.json"`.

305 

306**Champs obligatoires :**

307 

308| Champ | Description |

309| :------------ | :------------------------------------------------------------------------------------------------------------------------------------ |

310| `name` | Identifiant unique dans le plugin. Empêche les processus en double quand le plugin se recharge ou qu'une skill est invoquée à nouveau |

311| `command` | Commande shell exécutée en tant que processus en arrière-plan persistant dans le répertoire de travail de la session |

312| `description` | Résumé court de ce qui est surveillé. Affiché dans le panneau des tâches et dans les résumés de notification |

313 

314**Champs optionnels :**

315 

316| Champ | Description |

317| :----- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

318| `when` | Contrôle quand le moniteur démarre. `"always"` le démarre au démarrage de la session et au rechargement du plugin, et est la valeur par défaut. `"on-skill-invoke:<skill-name>"` le démarre la première fois que la skill nommée dans ce plugin est envoyée |

319 

320La valeur `command` prend en charge les mêmes [substitutions de variables](#environment-variables) que les configurations des serveurs MCP et LSP : `${CLAUDE_PLUGIN_ROOT}`, `${CLAUDE_PLUGIN_DATA}`, `${user_config.*}` et 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.

321 

322La 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.

323 

324### Thèmes

325 

326Les plugins peuvent livrer des thèmes de couleur qui apparaissent dans `/theme` aux côtés des présets intégrés et des thèmes locaux de l'utilisateur. Un thème est un fichier JSON dans `themes/` avec un préset `base` et une carte `overrides` clairsemée de jetons de couleur.

327 

328```json theme={null}

329{

330 "name": "Dracula",

331 "base": "dark",

332 "overrides": {

333 "claude": "#bd93f9",

334 "error": "#ff5555",

335 "success": "#50fa7b"

336 }

337}

338```

339 

340La sélection d'un thème de plugin persiste `custom:<plugin-name>:<slug>` dans la configuration de l'utilisateur. Les thèmes de plugin sont en lecture seule ; appuyer sur `Ctrl+E` sur l'un d'eux dans `/theme` le copie dans `~/.claude/themes/` afin que l'utilisateur puisse modifier la copie.

341 

342***

343 

344## Portées d'installation des plugins

345 

346Quand vous installez un plugin, vous choisissez une **portée** qui détermine où le plugin est disponible et qui d'autre peut l'utiliser :

347 

348| Portée | Fichier de paramètres | Cas d'usage |

349| :-------- | :---------------------------------------------- | :---------------------------------------------------------------- |

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

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

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

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

354 

355Les 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).

356 

357***

358 

359## Schéma du manifeste du plugin

360 

361Le fichier `.claude-plugin/plugin.json` définit les métadonnées et la configuration de votre plugin. Cette section documente tous les champs et options pris en charge.

362 

363Le manifeste est optionnel. S'il est omis, Claude Code découvre automatiquement les composants dans les [emplacements par défaut](#file-locations-reference) et dérive le nom du plugin du nom du répertoire. Utilisez un manifeste quand vous devez fournir des métadonnées ou des chemins de composants personnalisés.

364 

365### Schéma complet

366 

367```json theme={null}

368{

369 "name": "plugin-name",

370 "version": "1.2.0",

371 "description": "Brief plugin description",

372 "author": {

373 "name": "Author Name",

374 "email": "author@example.com",

375 "url": "https://github.com/author"

376 },

377 "homepage": "https://docs.example.com/plugin",

378 "repository": "https://github.com/author/plugin",

379 "license": "MIT",

380 "keywords": ["keyword1", "keyword2"],

381 "skills": "./custom/skills/",

382 "commands": ["./custom/commands/special.md"],

383 "agents": ["./custom/agents/reviewer.md"],

384 "hooks": "./config/hooks.json",

385 "mcpServers": "./mcp-config.json",

386 "outputStyles": "./styles/",

387 "themes": "./themes/",

388 "lspServers": "./.lsp.json",

389 "monitors": "./monitors.json",

390 "dependencies": [

391 "helper-lib",

392 { "name": "secrets-vault", "version": "~2.1.0" }

393 ]

394}

395```

396 

397### Champs obligatoires

398 

399Si vous incluez un manifeste, `name` est le seul champ obligatoire.

400 

401| Champ | Type | Description | Exemple |

402| :----- | :----- | :--------------------------------------------- | :------------------- |

403| `name` | string | Identifiant unique (kebab-case, pas d'espaces) | `"deployment-tools"` |

404 

405Ce 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`.

406 

407### Champs de métadonnées

408 

409| Champ | Type | Description | Exemple |

410| :------------ | :----- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------- |

411| `$schema` | string | URL du schéma JSON pour l'autocomplétion et la validation de l'éditeur. Claude Code ignore ce champ au moment du chargement. | `"https://json.schemastore.org/claude-code-plugin-manifest.json"` |

412| `version` | string | Optionnel. Version sémantique. La définir épingle le plugin à cette chaîne de version, de sorte que les utilisateurs ne reçoivent des mises à jour que lorsque vous la modifiez. Si elle est omise, Claude Code revient au SHA du commit git, de sorte que chaque commit est traité comme une nouvelle version. Si elle est également définie dans l'entrée de la marketplace, `plugin.json` a la priorité. Consultez [Gestion des versions](#version-management). | `"2.1.0"` |

413| `description` | string | Explication brève de l'objectif du plugin | `"Deployment automation tools"` |

414| `author` | object | Informations sur l'auteur | `{"name": "Dev Team", "email": "dev@company.com"}` |

415| `homepage` | string | URL de documentation | `"https://docs.example.com"` |

416| `repository` | string | URL du code source | `"https://github.com/user/plugin"` |

417| `license` | string | Identifiant de licence | `"MIT"`, `"Apache-2.0"` |

418| `keywords` | array | Balises de découverte | `["deployment", "ci-cd"]` |

419 

420### Champs de chemin de composant

421 

422| Champ | Type | Description | Exemple |

423| :------------- | :-------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------- |

424| `skills` | string\|array | Répertoires de skills personnalisés contenant `<name>/SKILL.md` (remplace le répertoire par défaut `skills/`) | `"./custom/skills/"` |

425| `commands` | string\|array | Fichiers de skill markdown plats personnalisés ou répertoires (remplace le répertoire par défaut `commands/`) | `"./custom/cmd.md"` ou `["./cmd1.md"]` |

426| `agents` | string\|array | Fichiers d'agents personnalisés (remplace le répertoire par défaut `agents/`) | `"./custom/agents/reviewer.md"` |

427| `hooks` | string\|array\|object | Chemins de configuration des hooks ou configuration en ligne | `"./my-extra-hooks.json"` |

428| `mcpServers` | string\|array\|object | Chemins de configuration MCP ou configuration en ligne | `"./my-extra-mcp-config.json"` |

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

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

431| `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"` |

432| `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"` |

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

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

435| `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" }]` |

436 

437### Configuration utilisateur

438 

439Le champ `userConfig` déclare les valeurs que Claude Code demande à l'utilisateur lors de l'activation du plugin. Utilisez ceci au lieu d'exiger que les utilisateurs modifient manuellement `settings.json`.

440 

441```json theme={null}

442{

443 "userConfig": {

444 "api_endpoint": {

445 "type": "string",

446 "title": "Point de terminaison API",

447 "description": "Le point de terminaison API de votre équipe"

448 },

449 "api_token": {

450 "type": "string",

451 "title": "Jeton API",

452 "description": "Jeton d'authentification API",

453 "sensitive": true

454 }

455 }

456}

457```

458 

459Les clés doivent être des identifiants valides. Chaque option prend en charge ces champs :

460 

461| Champ | Obligatoire | Description |

462| :------------ | :---------- | :-------------------------------------------------------------------------------------------------- |

463| `type` | Oui | L'un de `string`, `number`, `boolean`, `directory`, ou `file` |

464| `title` | Oui | Étiquette affichée dans la boîte de dialogue de configuration |

465| `description` | Oui | Texte d'aide affiché sous le champ |

466| `sensitive` | Non | Si `true`, masque l'entrée et stocke la valeur dans le stockage sécurisé au lieu de `settings.json` |

467| `required` | Non | Si `true`, la validation échoue quand le champ est vide |

468| `default` | Non | Valeur utilisée quand l'utilisateur ne fournit rien |

469| `multiple` | Non | Pour le type `string`, autoriser un tableau de chaînes |

470| `min` / `max` | Non | Limites pour le type `number` |

471 

472Chaque valeur est disponible pour la substitution en tant que `${user_config.KEY}` dans les configurations de serveurs MCP et LSP, les commandes de hook, les commandes de moniteur, et (pour les valeurs non sensibles uniquement) le contenu des skills et des agents. Toutes les valeurs sont exportées vers les sous-processus du plugin en tant que variables d'environnement `CLAUDE_PLUGIN_OPTION_<KEY>`.

473 

474Les valeurs non sensibles sont stockées dans `settings.json` sous `pluginConfigs[<plugin-id>].options`. Les valeurs sensibles vont au trousseau système (ou `~/.claude/.credentials.json` où le trousseau n'est pas 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.

475 

476### Canaux

477 

478Le champ `channels` permet à un plugin de déclarer un ou plusieurs canaux de messages qui injectent du contenu dans la conversation. Chaque canal se lie à un serveur MCP que le plugin fournit.

479 

480```json theme={null}

481{

482 "channels": [

483 {

484 "server": "telegram",

485 "userConfig": {

486 "bot_token": {

487 "type": "string",

488 "title": "Jeton de bot",

489 "description": "Jeton de bot Telegram",

490 "sensitive": true

491 },

492 "owner_id": {

493 "type": "string",

494 "title": "ID du propriétaire",

495 "description": "Votre ID utilisateur Telegram"

496 }

497 }

498 }

499 ]

500}

501```

502 

503Le champ `server` est obligatoire et doit correspondre à une clé dans les `mcpServers` du plugin. Le `userConfig` optionnel par canal utilise le même schéma que le champ de niveau supérieur, permettant au plugin de demander des jetons de bot ou des ID de propriétaire lors de l'activation du plugin.

504 

505### Règles de comportement des chemins

506 

507Pour `skills`, `commands`, `agents`, `outputStyles`, `themes` et `monitors`, un chemin personnalisé remplace le répertoire par défaut. Si le manifeste spécifie `skills`, le répertoire par défaut `skills/` n'est pas analysé ; si il spécifie `monitors`, le fichier par défaut `monitors/monitors.json` n'est pas chargé. Les [Hooks](#hooks), les [Serveurs MCP](#mcp-servers) et les [Serveurs LSP](#lsp-servers) ont une sémantique différente pour gérer plusieurs sources.

508 

509* Tous les chemins doivent être relatifs à la racine du plugin et commencer par `./`

510* Les composants des chemins personnalisés utilisent les mêmes règles de nommage et d'espace de noms

511* Plusieurs chemins peuvent être spécifiés sous forme de tableaux

512* Pour conserver le répertoire par défaut et ajouter d'autres chemins pour les skills, les commandes, les agents ou les styles de sortie, incluez le répertoire par défaut dans votre tableau : `"skills": ["./skills/", "./extras/"]`

513* Quand un chemin de skill pointe vers un répertoire qui contient directement un `SKILL.md`, par exemple `"skills": ["./"]` pointant vers la racine du plugin, le champ frontmatter `name` dans `SKILL.md` détermine le nom d'invocation de la skill. Cela donne un nom stable indépendamment du répertoire d'installation. Si `name` n'est pas défini dans le frontmatter, le nom de base du répertoire est utilisé comme secours.

514 

515**Exemples de chemins** :

516 

517```json theme={null}

518{

519 "commands": [

520 "./specialized/deploy.md",

521 "./utilities/batch-process.md"

522 ],

523 "agents": [

524 "./custom-agents/reviewer.md",

525 "./custom-agents/tester.md"

526 ]

527}

528```

529 

530### Variables d'environnement

531 

532Claude Code fournit deux variables pour référencer les chemins des plugins. Les deux sont substituées en ligne partout où elles apparaissent dans le contenu des skills, le contenu des agents, les commandes de hook, les commandes de moniteur, et les configurations des serveurs MCP ou LSP. Les deux sont également exportées en tant que variables d'environnement vers les processus de hook et les sous-processus des serveurs MCP ou LSP.

533 

534**`${CLAUDE_PLUGIN_ROOT}`** : le chemin absolu du répertoire d'installation de votre plugin. Utilisez ceci pour référencer les scripts, les binaires et les fichiers de configuration fournis avec le plugin. Ce chemin change quand le plugin se met à jour, donc les fichiers que vous écrivez ici ne survivent pas à une mise à jour.

535 

536**`${CLAUDE_PLUGIN_DATA}`** : un répertoire persistant pour l'état du plugin qui survit aux mises à jour. Utilisez ceci pour les dépendances installées telles que `node_modules` ou les environnements virtuels Python, le code généré, les caches et tous les autres fichiers qui doivent persister entre les versions du plugin. Le répertoire est créé automatiquement la première fois que cette variable est référencée.

537 

538```json theme={null}

539{

540 "hooks": {

541 "PostToolUse": [

542 {

543 "hooks": [

544 {

545 "type": "command",

546 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/process.sh"

547 }

548 ]

549 }

550 ]

551 }

552}

553```

554 

555#### Répertoire de données persistantes

556 

557Le répertoire `${CLAUDE_PLUGIN_DATA}` se résout en `~/.claude/plugins/data/{id}/`, où `{id}` est l'identifiant du plugin avec les caractères en dehors de `a-z`, `A-Z`, `0-9`, `_` et `-` remplacés par `-`. Pour un plugin installé en tant que `formatter@my-marketplace`, le répertoire est `~/.claude/plugins/data/formatter-my-marketplace/`.

558 

559Un usage courant est d'installer les dépendances de langage une fois et de les réutiliser entre les sessions et les mises à jour du plugin. Parce que le répertoire de données survit à n'importe quelle version unique du plugin, une vérification de l'existence du répertoire seul ne peut pas détecter quand une mise à jour change le manifeste de dépendance du plugin. Le motif recommandé compare le manifeste fourni par rapport à une copie dans le répertoire de données et réinstalle quand ils diffèrent.

560 

561Ce hook `SessionStart` installe `node_modules` à la première exécution et à nouveau chaque fois qu'une mise à jour du plugin inclut un `package.json` modifié :

562 

563```json theme={null}

564{

565 "hooks": {

566 "SessionStart": [

567 {

568 "hooks": [

569 {

570 "type": "command",

571 "command": "diff -q \"${CLAUDE_PLUGIN_ROOT}/package.json\" \"${CLAUDE_PLUGIN_DATA}/package.json\" >/dev/null 2>&1 || (cd \"${CLAUDE_PLUGIN_DATA}\" && cp \"${CLAUDE_PLUGIN_ROOT}/package.json\" . && npm install) || rm -f \"${CLAUDE_PLUGIN_DATA}/package.json\""

572 }

573 ]

574 }

575 ]

576 }

577}

578```

579 

580Le `diff` sort avec un code non nul quand la copie stockée est manquante ou diffère de celle fournie, couvrant à la fois la première exécution et les mises à jour changeant les dépendances. Si `npm install` échoue, le `rm` final supprime le manifeste copié pour que la session suivante réessaie.

581 

582Les scripts fournis dans `${CLAUDE_PLUGIN_ROOT}` peuvent ensuite s'exécuter contre les `node_modules` persistants :

583 

584```json theme={null}

585{

586 "mcpServers": {

587 "routines": {

588 "command": "node",

589 "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"],

590 "env": {

591 "NODE_PATH": "${CLAUDE_PLUGIN_DATA}/node_modules"

592 }

593 }

594 }

595}

596```

597 

598Le répertoire de données est supprimé automatiquement quand vous désinstallez le plugin de la dernière portée où il est installé. L'interface `/plugin` affiche la taille du répertoire et demande une confirmation avant la suppression. La CLI supprime par défaut ; passez [`--keep-data`](#plugin-uninstall) pour le conserver.

599 

600***

601 

602## Mise en cache des plugins et résolution des fichiers

603 

604Les plugins sont spécifiés de deux façons :

605 

606* Via `claude --plugin-dir`, pour la durée d'une session.

607* Via une marketplace, installés pour les sessions futures.

608 

609À des fins de sécurité et de vérification, Claude Code copie les plugins de *marketplace* dans le **cache de plugins** local de l'utilisateur (`~/.claude/plugins/cache`) plutôt que de les utiliser sur place. Comprendre ce comportement est important lors du développement de plugins qui référencent des fichiers externes.

610 

611Chaque version installée est un répertoire séparé dans le cache. Quand vous mettez à jour ou désinstallez un plugin, le répertoire de version précédente est marqué comme orphelin et supprimé automatiquement 7 jours plus tard. La période de grâce permet aux sessions Claude Code concurrentes qui ont déjà chargé l'ancienne version de continuer à fonctionner sans erreurs.

612 

613Les outils Glob et Grep de Claude ignorent les répertoires de version orphelins lors des recherches, donc les résultats de fichiers n'incluent pas le code de plugin obsolète.

614 

615### Limitations de traversée de répertoires

616 

617Les plugins installés ne peuvent pas référencer des fichiers en dehors de leur répertoire. Les chemins qui traversent en dehors de la racine du plugin (comme `../shared-utils`) ne fonctionneront pas après l'installation car ces fichiers externes ne sont pas copiés dans le cache.

618 

619### Travail avec les dépendances externes

620 

621Si votre plugin doit accéder à des fichiers en dehors de son répertoire, vous pouvez créer des liens symboliques vers des fichiers externes dans votre répertoire de plugin. Les liens symboliques sont préservés dans le cache plutôt que d'être déréférencés, et ils se résolvent à leur cible au moment de l'exécution. La commande suivante crée un lien à partir de l'intérieur de votre répertoire de plugin vers un emplacement d'utilitaires partagés :

622 

623```bash theme={null}

624ln -s /path/to/shared-utils ./shared-utils

625```

626 

627Cela offre de la flexibilité tout en maintenant les avantages de sécurité du système de mise en cache.

628 

629***

630 

631## Structure du répertoire des plugins

632 

633### Disposition standard des plugins

634 

635Un plugin complet suit cette structure :

636 

637```text theme={null}

638enterprise-plugin/

639├── .claude-plugin/ # Répertoire de métadonnées (optionnel)

640│ └── plugin.json # manifeste du plugin

641├── skills/ # Skills

642│ ├── code-reviewer/

643│ │ └── SKILL.md

644│ └── pdf-processor/

645│ ├── SKILL.md

646│ └── scripts/

647├── commands/ # Skills en tant que fichiers markdown plats

648│ ├── status.md

649│ └── logs.md

650├── agents/ # Définitions de subagent

651│ ├── security-reviewer.md

652│ ├── performance-tester.md

653│ └── compliance-checker.md

654├── output-styles/ # Définitions de style de sortie

655│ └── terse.md

656├── themes/ # Définitions de thème de couleur

657│ └── dracula.json

658├── monitors/ # Configurations de moniteur en arrière-plan

659│ └── monitors.json

660├── hooks/ # Configurations des hooks

661│ ├── hooks.json # Configuration principale des hooks

662│ └── security-hooks.json # Hooks supplémentaires

663├── bin/ # Exécutables de plugin ajoutés à PATH

664│ └── my-tool # Invocable en tant que commande nue dans l'outil Bash

665├── settings.json # Paramètres par défaut pour le plugin

666├── .mcp.json # Définitions du serveur MCP

667├── .lsp.json # Configurations du serveur LSP

668├── scripts/ # Scripts de hooks et d'utilitaires

669│ ├── security-scan.sh

670│ ├── format-code.py

671│ └── deploy.js

672├── LICENSE # Fichier de licence

673└── CHANGELOG.md # Historique des versions

674```

675 

676<Warning>

677 Le répertoire `.claude-plugin/` contient le fichier `plugin.json`. Tous les autres répertoires (commands/, agents/, skills/, output-styles/, themes/, monitors/, hooks/) doivent être à la racine du plugin, pas à l'intérieur de `.claude-plugin/`.

678</Warning>

679 

680### Référence des emplacements de fichiers

681 

682| Composant | Emplacement par défaut | Objectif |

683| :------------------- | :--------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

684| **Manifeste** | `.claude-plugin/plugin.json` | Métadonnées et configuration du plugin (optionnel) |

685| **Skills** | `skills/` | Skills avec structure `<name>/SKILL.md` |

686| **Commandes** | `commands/` | Skills en tant que fichiers Markdown plats. Utilisez `skills/` pour les nouveaux plugins |

687| **Agents** | `agents/` | Fichiers Markdown de subagent |

688| **Styles de sortie** | `output-styles/` | Définitions de style de sortie |

689| **Thèmes** | `themes/` | Définitions de thème de couleur |

690| **Hooks** | `hooks/hooks.json` | Configuration des hooks |

691| **Serveurs MCP** | `.mcp.json` | Définitions du serveur MCP |

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

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

694| **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é |

695| **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 |

696 

697***

698 

699## Référence des commandes CLI

700 

701Claude Code fournit des commandes CLI pour la gestion des plugins non interactive, utile pour les scripts et l'automatisation.

702 

703### plugin install

704 

705Installez un plugin à partir des marketplaces disponibles.

706 

707```bash theme={null}

708claude plugin install <plugin> [options]

709```

710 

711**Arguments :**

712 

713* `<plugin>` : Nom du plugin ou `plugin-name@marketplace-name` pour une marketplace spécifique

714 

715**Options :**

716 

717| Option | Description | Par défaut |

718| :-------------------- | :---------------------------------------------------- | :--------- |

719| `-s, --scope <scope>` | Portée d'installation : `user`, `project`, ou `local` | `user` |

720| `-h, --help` | Afficher l'aide pour la commande | |

721 

722La portée détermine quel fichier de paramètres le plugin installé est ajouté. Par exemple, `--scope project` écrit dans `enabledPlugins` dans .claude/settings.json, rendant le plugin disponible à tous ceux qui clonent le référentiel du projet.

723 

724**Exemples :**

725 

726```bash theme={null}

727# Installer dans la portée utilisateur (par défaut)

728claude plugin install formatter@my-marketplace

729 

730# Installer dans la portée du projet (partagé avec l'équipe)

731claude plugin install formatter@my-marketplace --scope project

732 

733# Installer dans la portée locale (ignorée par git)

734claude plugin install formatter@my-marketplace --scope local

735```

736 

737### plugin uninstall

738 

739Supprimez un plugin installé.

740 

741```bash theme={null}

742claude plugin uninstall <plugin> [options]

743```

744 

745**Arguments :**

746 

747* `<plugin>` : Nom du plugin ou `plugin-name@marketplace-name`

748 

749**Options :**

750 

751| Option | Description | Par défaut |

752| :-------------------- | :------------------------------------------------------------------------------------------------------------------------- | :--------- |

753| `-s, --scope <scope>` | Désinstaller de la portée : `user`, `project`, ou `local` | `user` |

754| `--keep-data` | Conserver le [répertoire de données persistantes](#persistent-data-directory) du plugin | |

755| `--prune` | Supprimer également les dépendances auto-installées qu'aucun autre plugin ne nécessite. Voir [plugin prune](#plugin-prune) | |

756| `-y, --yes` | Ignorer l'invite de confirmation `--prune`. Requis quand stdin n'est pas un TTY | |

757| `-h, --help` | Afficher l'aide pour la commande | |

758 

759**Alias :** `remove`, `rm`

760 

761Par défaut, la désinstallation de la dernière portée restante supprime également le répertoire `${CLAUDE_PLUGIN_DATA}` du plugin. Utilisez `--keep-data` pour le conserver, par exemple lors de la réinstallation après le test d'une nouvelle version.

762 

763### plugin prune

764 

765Supprimez 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.

766 

767```bash theme={null}

768claude plugin prune [options]

769```

770 

771**Options :**

772 

773| Option | Description | Par défaut |

774| :-------------------- | :-------------------------------------------------------------------- | :--------- |

775| `-s, --scope <scope>` | Nettoyer à la portée : `user`, `project`, ou `local` | `user` |

776| `--dry-run` | Lister ce qui serait supprimé sans rien supprimer | |

777| `-y, --yes` | Ignorer l'invite de confirmation. Requis quand stdin n'est pas un TTY | |

778| `-h, --help` | Afficher l'aide pour la commande | |

779 

780**Alias :** `autoremove`

781 

782La commande liste les dépendances orphelines et demande une confirmation avant de les supprimer. Pour supprimer un plugin et nettoyer ses dépendances en une seule étape, exécutez `claude plugin uninstall <plugin> --prune`.

783 

784<Note>

785 `claude plugin prune` nécessite Claude Code v2.1.121 ou ultérieur.

786</Note>

787 

788### plugin enable

789 

790Activez un plugin désactivé.

791 

792```bash theme={null}

793claude plugin enable <plugin> [options]

794```

795 

796**Arguments :**

797 

798* `<plugin>` : Nom du plugin ou `plugin-name@marketplace-name`

799 

800**Options :**

801 

802| Option | Description | Par défaut |

803| :-------------------- | :----------------------------------------------- | :--------- |

804| `-s, --scope <scope>` | Portée à activer : `user`, `project`, ou `local` | `user` |

805| `-h, --help` | Afficher l'aide pour la commande | |

806 

807### plugin disable

808 

809Désactivez un plugin sans le désinstaller.

810 

811```bash theme={null}

812claude plugin disable <plugin> [options]

813```

814 

815**Arguments :**

816 

817* `<plugin>` : Nom du plugin ou `plugin-name@marketplace-name`

818 

819**Options :**

820 

821| Option | Description | Par défaut |

822| :-------------------- | :-------------------------------------------------- | :--------- |

823| `-s, --scope <scope>` | Portée à désactiver : `user`, `project`, ou `local` | `user` |

824| `-h, --help` | Afficher l'aide pour la commande | |

825 

826### plugin update

827 

828Mettez à jour un plugin vers la dernière version.

829 

830```bash theme={null}

831claude plugin update <plugin> [options]

832```

833 

834**Arguments :**

835 

836* `<plugin>` : Nom du plugin ou `plugin-name@marketplace-name`

837 

838**Options :**

839 

840| Option | Description | Par défaut |

841| :-------------------- | :---------------------------------------------------------------- | :--------- |

842| `-s, --scope <scope>` | Portée à mettre à jour : `user`, `project`, `local`, ou `managed` | `user` |

843| `-h, --help` | Afficher l'aide pour la commande | |

844 

845***

846 

847### plugin list

848 

849Listez les plugins installés avec leur version, la marketplace source et le statut d'activation.

850 

851```bash theme={null}

852claude plugin list [options]

853```

854 

855**Options :**

856 

857| Option | Description | Par défaut |

858| :------------ | :------------------------------------------------------------------- | :--------- |

859| `--json` | Sortie en JSON | |

860| `--available` | Inclure les plugins disponibles des marketplaces. Nécessite `--json` | |

861| `-h, --help` | Afficher l'aide pour la commande | |

862 

863### plugin tag

864 

865Cré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).

866 

867```bash theme={null}

868claude plugin tag [options]

869```

870 

871**Options :**

872 

873| Option | Description | Par défaut |

874| :------------ | :------------------------------------------------------------------------------------- | :--------- |

875| `--push` | Pousser la balise vers le serveur distant après sa création | |

876| `--dry-run` | Afficher ce qui serait balisé sans créer la balise | |

877| `-f, --force` | Créer la balise même si l'arborescence de travail est sale ou si la balise existe déjà | |

878| `-h, --help` | Afficher l'aide pour la commande | |

879 

880***

881 

882## Outils de débogage et de développement

883 

884### Commandes de débogage

885 

886Utilisez `claude --debug` pour voir les détails du chargement des plugins :

887 

888Cela affiche :

889 

890* Quels plugins sont en cours de chargement

891* Toute erreur dans les manifestes de plugins

892* Enregistrement des skills, agents et hooks

893* Initialisation du serveur MCP

894 

895### Problèmes courants

896 

897| Problème | Cause | Solution |

898| :---------------------------------- | :--------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

899| Plugin ne se charge pas | `plugin.json` invalide | Exécutez `claude plugin validate` ou `/plugin validate` pour vérifier `plugin.json`, le frontmatter des skills/agents/commandes et `hooks/hooks.json` pour les erreurs de syntaxe et de schéma |

900| Les skills n'apparaissent pas | Structure de répertoire incorrecte | Assurez-vous que `skills/` ou `commands/` est à la racine du plugin, pas à l'intérieur de `.claude-plugin/` |

901| Les hooks ne se déclenchent pas | Le script n'est pas exécutable | Exécutez `chmod +x script.sh` |

902| Le serveur MCP échoue | `${CLAUDE_PLUGIN_ROOT}` manquant | Utilisez la variable pour tous les chemins de plugin |

903| Erreurs de chemin | Chemins absolus utilisés | Tous les chemins doivent être relatifs et commencer par `./` |

904| LSP `Executable not found in $PATH` | Serveur de langage non installé | Installez le binaire (par exemple, `npm install -g typescript-language-server typescript`) |

905 

906### Exemples de messages d'erreur

907 

908**Erreurs de validation du manifeste** :

909 

910* `Invalid JSON syntax: Unexpected token } in JSON at position 142` : vérifiez les virgules manquantes, les virgules supplémentaires ou les chaînes non citées

911* `Plugin has an invalid manifest file at .claude-plugin/plugin.json. Validation errors: name: Required` : un champ obligatoire est manquant

912* `Plugin has a corrupt manifest file at .claude-plugin/plugin.json. JSON parse error: ...` : erreur de syntaxe JSON

913 

914**Erreurs de chargement du plugin** :

915 

916* `Warning: No commands found in plugin my-plugin custom directory: ./cmds. Expected .md files or SKILL.md in subdirectories.` : le chemin de commande existe mais ne contient aucun fichier de commande valide

917* `Plugin directory not found at path: ./plugins/my-plugin. Check that the marketplace entry has the correct path.` : le chemin `source` dans marketplace.json pointe vers un répertoire inexistant

918* `Plugin my-plugin has conflicting manifests: both plugin.json and marketplace entry specify components.` : supprimez les définitions de composants en double ou supprimez `strict: false` dans l'entrée de la marketplace

919 

920### Dépannage des hooks

921 

922**Le script du hook ne s'exécute pas** :

923 

9241. Vérifiez que le script est exécutable : `chmod +x ./scripts/your-script.sh`

9252. Vérifiez la ligne shebang : La première ligne doit être `#!/bin/bash` ou `#!/usr/bin/env bash`

9263. Vérifiez que le chemin utilise `${CLAUDE_PLUGIN_ROOT}` : `"command": "${CLAUDE_PLUGIN_ROOT}/scripts/your-script.sh"`

9274. Testez le script manuellement : `./scripts/your-script.sh`

928 

929**Le hook ne se déclenche pas sur les événements attendus** :

930 

9311. Vérifiez que le nom de l'événement est correct (sensible à la casse) : `PostToolUse`, pas `postToolUse`

9322. Vérifiez que le motif de correspondance correspond à vos outils : `"matcher": "Write|Edit"` pour les opérations de fichier

9333. Confirmez que le type de hook est valide : `command`, `http`, `mcp_tool`, `prompt`, ou `agent`

934 

935### Dépannage du serveur MCP

936 

937**Le serveur ne démarre pas** :

938 

9391. Vérifiez que la commande existe et est exécutable

9402. Vérifiez que tous les chemins utilisent la variable `${CLAUDE_PLUGIN_ROOT}`

9413. Vérifiez les journaux du serveur MCP : `claude --debug` affiche les erreurs d'initialisation

9424. Testez le serveur manuellement en dehors de Claude Code

943 

944**Les outils du serveur n'apparaissent pas** :

945 

9461. Assurez-vous que le serveur est correctement configuré dans `.mcp.json` ou `plugin.json`

9472. Vérifiez que le serveur implémente correctement le protocole MCP

9483. Vérifiez les délais d'expiration de la connexion dans la sortie de débogage

949 

950### Erreurs de structure de répertoire

951 

952**Symptômes** : Le plugin se charge mais les composants (skills, agents, hooks) sont manquants.

953 

954**Structure correcte** : Les composants doivent être à la racine du plugin, pas à l'intérieur de `.claude-plugin/`. Seul `plugin.json` appartient à `.claude-plugin/`.

955 

956```text theme={null}

957my-plugin/

958├── .claude-plugin/

959│ └── plugin.json ← Seul le manifeste ici

960├── commands/ ← Au niveau racine

961├── agents/ ← Au niveau racine

962└── hooks/ ← Au niveau racine

963```

964 

965Si vos composants sont à l'intérieur de `.claude-plugin/`, déplacez-les à la racine du plugin.

966 

967**Liste de contrôle de débogage** :

968 

9691. Exécutez `claude --debug` et recherchez les messages « loading plugin »

9702. Vérifiez que chaque répertoire de composants est listé dans la sortie de débogage

9713. Vérifiez que les permissions de fichier permettent de lire les fichiers du plugin

972 

973***

974 

975## Référence de distribution et de versioning

976 

977### Gestion des versions

978 

979Claude Code utilise la version du plugin comme clé de cache qui détermine si une mise à jour est disponible. Lorsque vous exécutez `/plugin update` ou que la mise à jour automatique se déclenche, Claude Code calcule la version actuelle et ignore la mise à jour si elle correspond à celle déjà installée.

980 

981La version est résolue à partir du premier de ces éléments qui est défini :

982 

9831. Le champ `version` dans le `plugin.json` du plugin

9842. Le champ `version` dans l'entrée marketplace du plugin dans `marketplace.json`

9853. Le SHA du commit git du plugin source, pour les sources `github`, `url`, `git-subdir` et relative-path dans une marketplace hébergée sur git

9864. `unknown`, pour les sources `npm` ou les répertoires locaux ne se trouvant pas dans un référentiel git

987 

988Cela vous donne deux façons de versionner un plugin :

989 

990| Approche | Comment | Comportement de mise à jour | Idéal pour |

991| :------------------------ | :---------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------- |

992| **Version explicite** | Définissez `"version": "2.1.0"` dans `plugin.json` | Les utilisateurs reçoivent les mises à jour uniquement lorsque vous augmentez ce champ. Pousser de nouveaux commits sans l'augmenter n'a aucun effet, et `/plugin update` signale « déjà à la dernière version ». | Plugins publiés avec des cycles de publication stables |

993| **Version SHA du commit** | Omettez `version` à la fois de `plugin.json` et de l'entrée marketplace | Les utilisateurs reçoivent les mises à jour à chaque nouveau commit vers la source git du plugin | Plugins internes ou d'équipe en développement actif |

994 

995<Warning>

996 Si vous définissez `version` dans `plugin.json`, vous devez l'augmenter chaque fois que vous souhaitez que les utilisateurs reçoivent les modifications. Pousser de nouveaux commits seul ne suffit pas, car Claude Code voit la même chaîne de version et conserve la copie en cache. Si vous itérez rapidement, laissez `version` non défini afin que le SHA du commit git soit utilisé à la place.

997</Warning>

998 

999Si vous utilisez des versions explicites, suivez le [versioning sémantique](https://semver.org) (`MAJOR.MINOR.PATCH`) : augmentez MAJOR pour les changements cassants, MINOR pour les nouvelles fonctionnalités, PATCH pour les corrections de bugs. Documentez les modifications dans un `CHANGELOG.md`.

1000 

1001***

1002 

1003## Voir aussi

1004 

1005* [Plugins](/fr/plugins) - Tutoriels et utilisation pratique

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

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

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

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

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

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

quickstart.md +976 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Démarrage rapide

6 

7> Bienvenue dans Claude Code !

8 

9export const InstallConfigurator = ({defaultSurface = 'terminal'}) => {

10 const TERM = {

11 mac: {

12 label: 'macOS / Linux',

13 cmd: 'curl -fsSL https://claude.ai/install.sh | bash'

14 },

15 win: {

16 label: 'Windows'

17 },

18 brew: {

19 label: 'Homebrew',

20 cmd: 'brew install --cask claude-code'

21 },

22 winget: {

23 label: 'WinGet',

24 cmd: 'winget install Anthropic.ClaudeCode'

25 }

26 };

27 const WIN_VARIANTS = {

28 ps: 'irm https://claude.ai/install.ps1 | iex',

29 cmd: 'curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd'

30 };

31 const TABS = [{

32 key: 'terminal',

33 label: 'Terminal'

34 }, {

35 key: 'desktop',

36 label: 'Desktop'

37 }, {

38 key: 'vscode',

39 label: 'VS Code'

40 }, {

41 key: 'jetbrains',

42 label: 'JetBrains'

43 }];

44 const ALT_TARGETS = {

45 desktop: {

46 name: 'Desktop',

47 tagline: 'The full agent in a native app for macOS and Windows.',

48 installLabel: 'Download the app',

49 installHref: 'https://claude.com/download?utm_source=claude_code&utm_medium=docs&utm_content=configurator_desktop_download',

50 guideHref: '/en/desktop-quickstart'

51 },

52 vscode: {

53 name: 'VS Code',

54 tagline: 'Review diffs, manage context, and chat without leaving your editor.',

55 installLabel: 'Install from Marketplace',

56 installHref: 'https://marketplace.visualstudio.com/items?itemName=anthropic.claude-code',

57 altCmd: 'code --install-extension anthropic.claude-code',

58 guideHref: '/en/vs-code'

59 },

60 jetbrains: {

61 name: 'JetBrains',

62 tagline: 'Native plugin for IntelliJ, PyCharm, WebStorm, and other JetBrains IDEs.',

63 installLabel: 'Install from Marketplace',

64 installHref: 'https://plugins.jetbrains.com/plugin/27310-claude-code-beta-',

65 guideHref: '/en/jetbrains'

66 }

67 };

68 const PROVIDERS = [{

69 key: 'anthropic',

70 label: 'Anthropic'

71 }, {

72 key: 'bedrock',

73 label: 'Amazon Bedrock'

74 }, {

75 key: 'foundry',

76 label: 'Microsoft Foundry'

77 }, {

78 key: 'vertex',

79 label: 'Google Vertex AI'

80 }];

81 const PROVIDER_NOTICE = {

82 bedrock: <>

83 <strong>Configure your AWS account first.</strong> Running on Bedrock

84 requires model access enabled in the AWS console and IAM credentials.{' '}

85 <a href="/en/amazon-bedrock">Bedrock setup guide →</a>

86 </>,

87 vertex: <>

88 <strong>Configure your GCP project first.</strong> Running on Vertex AI

89 requires the Vertex API enabled and a service account with the right

90 permissions.{' '}

91 <a href="/en/google-vertex-ai">Vertex setup guide →</a>

92 </>,

93 foundry: <>

94 <strong>Configure your Azure resources first.</strong> Running on

95 Microsoft Foundry requires an Azure subscription with a Foundry resource

96 and model deployments provisioned.{' '}

97 <a href="/en/microsoft-foundry">Foundry setup guide →</a>

98 </>

99 };

100 const iconCheck = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="3" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

101 <polyline points="20 6 9 17 4 12" />

102 </svg>;

103 const iconCopy = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

104 <rect x="9" y="9" width="13" height="13" rx="2" />

105 <path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" />

106 </svg>;

107 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

108 <line x1="5" y1="12" x2="19" y2="12" />

109 <polyline points="12 5 19 12 12 19" />

110 </svg>;

111 const iconArrowUpRight = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

112 <line x1="7" y1="17" x2="17" y2="7" />

113 <polyline points="7 7 17 7 17 17" />

114 </svg>;

115 const iconInfo = (size = 16) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

116 <circle cx="12" cy="12" r="10" />

117 <line x1="12" y1="16" x2="12" y2="12" />

118 <line x1="12" y1="8" x2="12.01" y2="8" />

119 </svg>;

120 const [target, setTarget] = useState(defaultSurface);

121 const [team, setTeam] = useState(false);

122 const [provider, setProvider] = useState('anthropic');

123 const [pkg, setPkg] = useState(() => (/Win/).test(navigator.userAgent) ? 'win' : 'mac');

124 const [winCmd, setWinCmd] = useState(false);

125 const [copied, setCopied] = useState(null);

126 const copyTimer = useRef(null);

127 const handleCopy = async (text, key) => {

128 try {

129 await navigator.clipboard.writeText(text);

130 } catch {

131 const ta = document.createElement('textarea');

132 ta.value = text;

133 document.body.appendChild(ta);

134 ta.select();

135 document.execCommand('copy');

136 document.body.removeChild(ta);

137 }

138 clearTimeout(copyTimer.current);

139 setCopied(key);

140 copyTimer.current = setTimeout(() => setCopied(null), 1800);

141 };

142 const cardBodyCmd = (cmd, prompt) => {

143 const on = copied === 'term';

144 return <div className="cc-ic-card-body">

145 <span className="cc-ic-prompt">{prompt || '$'}</span>

146 <div className="cc-ic-cmd">{cmd}</div>

147 <button type="button" className={'cc-ic-copy' + (on ? ' cc-ic-copied' : '')} onClick={() => handleCopy(cmd, 'term')}>

148 {on ? iconCheck(13) : iconCopy(13)}

149 <span>{on ? 'Copied' : 'Copy'}</span>

150 </button>

151 </div>;

152 };

153 const isWinInstaller = pkg === 'win';

154 const isWinPrompt = pkg === 'win' || pkg === 'winget';

155 const terminalCmd = isWinInstaller ? WIN_VARIANTS[winCmd ? 'cmd' : 'ps'] : TERM[pkg].cmd;

156 const alt = ALT_TARGETS[target];

157 const showNotice = team && provider !== 'anthropic';

158 const STYLES = `

159.cc-ic {

160 --ic-slate: #141413;

161 --ic-clay: #d97757;

162 --ic-clay-deep: #c6613f;

163 --ic-gray-000: #ffffff;

164 --ic-gray-150: #f0eee6;

165 --ic-gray-550: #73726c;

166 --ic-gray-700: #3d3d3a;

167 --ic-border-subtle: rgba(31, 30, 29, 0.08);

168 --ic-border-default: rgba(31, 30, 29, 0.15);

169 --ic-border-strong: rgba(31, 30, 29, 0.3);

170 --ic-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, 'Courier New', monospace;

171 font-family: 'Anthropic Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

172 font-size: 14px; line-height: 1.5; color: var(--ic-slate);

173 margin: 8px 0 32px;

174}

175.dark .cc-ic {

176 --ic-slate: #f0eee6;

177 --ic-gray-000: #262624;

178 --ic-gray-150: #1f1e1d;

179 --ic-gray-550: #91908a;

180 --ic-gray-700: #bfbdb4;

181 --ic-border-subtle: rgba(240, 238, 230, 0.08);

182 --ic-border-default: rgba(240, 238, 230, 0.14);

183 --ic-border-strong: rgba(240, 238, 230, 0.28);

184}

185.dark .cc-ic-check { background: transparent; }

186.dark .cc-ic-card { border: 0.5px solid var(--ic-border-subtle); }

187.dark .cc-ic-p-pill.cc-ic-active { box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); }

188.cc-ic *, .cc-ic *::before, .cc-ic *::after { box-sizing: border-box; }

189.cc-ic a { text-decoration: none; }

190.cc-ic a:not([class]) { color: inherit; }

191.cc-ic button { font-family: inherit; cursor: pointer; }

192 

193.cc-ic-tab-strip {

194 display: inline-flex; gap: 2px;

195 padding: 4px; background: var(--ic-gray-150);

196 border-radius: 10px; overflow-x: auto;

197 max-width: 100%;

198}

199.cc-ic-tab {

200 appearance: none; background: none; border: none;

201 padding: 10px 18px; font-size: 15px; font-weight: 430;

202 color: var(--ic-gray-550); border-radius: 7px;

203 white-space: nowrap;

204 transition: color 0.12s, background-color 0.12s;

205}

206.cc-ic-tab:hover { color: var(--ic-gray-700); }

207.cc-ic-tab.cc-ic-active {

208 color: var(--ic-slate); font-weight: 500;

209 background: var(--ic-gray-000);

210 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);

211}

212.dark .cc-ic-tab.cc-ic-active { box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); }

213 

214.cc-ic-team-wrap { padding: 16px 0 20px; }

215.cc-ic-team-toggle {

216 display: flex; align-items: center; gap: 12px; font-family: inherit;

217 padding: 12px 16px; font-size: 14px; font-weight: 430;

218 color: var(--ic-gray-700); cursor: pointer; user-select: none;

219 width: fit-content; background: var(--ic-gray-150);

220 border: 0.5px solid var(--ic-border-subtle); border-radius: 8px;

221 transition: border-color 0.15s;

222}

223.cc-ic-team-toggle:hover { border-color: var(--ic-border-default); }

224.cc-ic-team-toggle.cc-ic-checked {

225 background: rgba(217, 119, 87, 0.08);

226 border-color: rgba(217, 119, 87, 0.25);

227}

228.cc-ic-check {

229 width: 16px; height: 16px;

230 border: 1px solid var(--ic-border-strong); border-radius: 4px;

231 background: var(--ic-gray-000);

232 display: flex; align-items: center; justify-content: center;

233 flex-shrink: 0;

234}

235.cc-ic-check svg { color: #fff; display: none; }

236.cc-ic-team-toggle.cc-ic-checked .cc-ic-check { background: var(--ic-clay-deep); border-color: var(--ic-clay-deep); }

237.cc-ic-team-toggle.cc-ic-checked .cc-ic-check svg { display: block; }

238 

239.cc-ic-team-reveal { display: flex; flex-direction: column; gap: 12px; margin-bottom: 16px; }

240.cc-ic-sales {

241 display: flex; align-items: center; justify-content: space-between;

242 gap: 16px; padding: 14px 16px;

243 background: var(--ic-gray-000); border: 0.5px solid var(--ic-border-default);

244 border-radius: 8px; flex-wrap: wrap;

245}

246.cc-ic-sales-text { font-size: 13px; color: var(--ic-gray-700); line-height: 1.5; flex: 1; min-width: 200px; }

247.cc-ic-sales-text strong { font-weight: 550; color: var(--ic-slate); }

248.cc-ic-sales-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

249.cc-ic-btn-clay {

250 display: inline-flex; align-items: center; gap: 8px;

251 background: var(--ic-clay-deep); color: #fff; border: none;

252 border-radius: 8px; padding: 8px 14px;

253 font-size: 13px; font-weight: 500;

254 transition: background-color 0.15s; white-space: nowrap;

255}

256.cc-ic-btn-clay:hover { background: var(--ic-clay); }

257.cc-ic-btn-ghost {

258 display: inline-flex; align-items: center; gap: 8px;

259 background: transparent; color: var(--ic-gray-700);

260 border: 0.5px solid var(--ic-border-default);

261 border-radius: 8px; padding: 8px 14px;

262 font-size: 13px; font-weight: 500;

263}

264.cc-ic-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

265 

266.cc-ic-provider-bar {

267 display: flex; align-items: center; gap: 12px;

268 padding: 14px 16px; background: var(--ic-gray-150);

269 border-radius: 8px; font-size: 13px; flex-wrap: wrap;

270}

271.cc-ic-provider-bar .cc-ic-label { color: var(--ic-gray-550); flex-shrink: 0; }

272.cc-ic-provider-pills { display: flex; gap: 4px; flex-wrap: wrap; }

273.cc-ic-p-pill {

274 appearance: none; border: none; background: transparent;

275 padding: 6px 12px; border-radius: 6px;

276 font-size: 13px; font-weight: 430; color: var(--ic-gray-700);

277 white-space: nowrap;

278}

279.cc-ic-p-pill:hover { background: rgba(0, 0, 0, 0.04); }

280.cc-ic-p-pill.cc-ic-active {

281 background: var(--ic-gray-000); color: var(--ic-slate);

282 font-weight: 500; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);

283}

284.cc-ic-provider-notice {

285 display: flex; padding: 16px 18px;

286 background: var(--ic-gray-000); border: 0.5px solid var(--ic-border-default);

287 border-radius: 8px; gap: 14px; align-items: flex-start;

288}

289.cc-ic-provider-notice > svg { color: var(--ic-gray-550); margin-top: 2px; flex-shrink: 0; }

290.cc-ic-provider-notice-body { font-size: 14px; line-height: 1.55; color: var(--ic-gray-700); }

291.cc-ic-provider-notice-body strong { font-weight: 550; color: var(--ic-slate); }

292.cc-ic-provider-notice-body a { color: var(--ic-clay-deep); font-weight: 500; }

293.cc-ic-provider-notice-body a:hover { text-decoration: underline; }

294 

295.cc-ic-card { background: #141413; border-radius: 12px; overflow: hidden; }

296.cc-ic-subtabs {

297 display: flex; align-items: center;

298 background: #1a1918;

299 border-bottom: 0.5px solid rgba(255, 255, 255, 0.08);

300 padding: 0 8px; overflow-x: auto;

301}

302.cc-ic-subtab {

303 appearance: none; background: none; border: none;

304 padding: 12px 16px; font-size: 12px;

305 color: rgba(255, 255, 255, 0.5);

306 position: relative; white-space: nowrap;

307}

308.cc-ic-subtab:hover { color: rgba(255, 255, 255, 0.75); }

309.cc-ic-subtab.cc-ic-active { color: #fff; }

310.cc-ic-subtab.cc-ic-active::after {

311 content: ''; position: absolute;

312 left: 12px; right: 12px; bottom: -0.5px;

313 height: 2px; background: var(--ic-clay);

314}

315.cc-ic-shell-switch {

316 display: inline-flex; gap: 2px;

317 margin: 14px 26px 0; padding: 3px;

318 background: rgba(255, 255, 255, 0.06);

319 border: 0.5px solid rgba(255, 255, 255, 0.08);

320 border-radius: 8px;

321 font-family: inherit;

322}

323.cc-ic-shell-option {

324 font: inherit; font-size: 12px; font-weight: 500;

325 padding: 5px 12px; border-radius: 6px;

326 background: transparent; border: none;

327 color: rgba(255, 255, 255, 0.55);

328 cursor: pointer; user-select: none; white-space: nowrap;

329 transition: color 120ms ease, background-color 120ms ease;

330}

331.cc-ic-shell-option:hover { color: rgba(255, 255, 255, 0.85); }

332.cc-ic-shell-option.cc-ic-active {

333 background: rgba(255, 255, 255, 0.12);

334 color: #fff;

335 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);

336}

337 

338.cc-ic-card-body { padding: 24px 26px; display: flex; align-items: flex-start; gap: 14px; }

339.cc-ic-prompt {

340 color: var(--ic-clay); font-family: var(--ic-font-mono);

341 font-size: 17px; user-select: none; padding-top: 2px;

342}

343.cc-ic-cmd {

344 flex: 1; font-family: var(--ic-font-mono);

345 font-size: 17px; color: #f0eee6;

346 line-height: 1.55; white-space: pre-wrap; word-break: break-word;

347}

348.cc-ic-copy {

349 display: inline-flex; align-items: center; gap: 6px;

350 background: rgba(255, 255, 255, 0.08);

351 border: 0.5px solid rgba(255, 255, 255, 0.12);

352 color: rgba(255, 255, 255, 0.85);

353 padding: 7px 13px; border-radius: 8px;

354 font-size: 13px; font-weight: 500; flex-shrink: 0;

355}

356.cc-ic-copy:hover { background: rgba(255, 255, 255, 0.14); }

357.cc-ic-copy.cc-ic-copied { background: var(--ic-clay-deep); border-color: var(--ic-clay-deep); color: #fff; }

358 

359.cc-ic-below {

360 margin-top: 12px; font-size: 13px; color: var(--ic-gray-550);

361 display: flex; gap: 16px; flex-wrap: wrap; align-items: baseline;

362}

363.cc-ic-below a { color: var(--ic-gray-700); border-bottom: 0.5px solid var(--ic-border-default); }

364.cc-ic-below a:hover { color: var(--ic-clay-deep); border-bottom-color: var(--ic-clay-deep); }

365.cc-ic-handoff {

366 padding: 22px 24px;

367 background: linear-gradient(180deg, #faf9f4 0%, #f3f1e9 100%);

368 border: 0.5px solid var(--ic-border-default);

369 border-radius: 12px;

370 box-shadow: 0 1px 2px rgba(31, 30, 29, 0.04), 0 6px 16px -4px rgba(31, 30, 29, 0.06);

371}

372.dark .cc-ic-handoff {

373 background: linear-gradient(180deg, #262624 0%, #1f1e1d 100%);

374 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3), 0 6px 16px -4px rgba(0, 0, 0, 0.4);

375}

376.cc-ic-handoff-title {

377 font-size: 16px; font-weight: 550; color: var(--ic-slate);

378 letter-spacing: -0.01em; margin-bottom: 4px;

379}

380.cc-ic-handoff-sub {

381 font-size: 14px; line-height: 1.5; color: var(--ic-gray-700);

382 margin-bottom: 18px;

383}

384.cc-ic-handoff-actions { display: flex; gap: 10px; flex-wrap: wrap; }

385.cc-ic-handoff-alt {

386 margin-top: 12px; font-size: 12px; color: var(--ic-gray-550);

387}

388.cc-ic-handoff-alt code {

389 font-family: var(--ic-font-mono); font-size: 11px;

390 background: var(--ic-gray-150); padding: 2px 6px;

391 border-radius: 4px; color: var(--ic-gray-700);

392}

393.cc-ic-copy-sm {

394 appearance: none; border: none;

395 display: inline-flex; align-items: center; justify-content: center;

396 width: 22px; height: 22px;

397 margin-left: 4px; vertical-align: middle;

398 background: var(--ic-gray-150); color: var(--ic-gray-550);

399 border-radius: 4px;

400 transition: color 0.1s, background-color 0.1s;

401}

402.cc-ic-copy-sm:hover { color: var(--ic-gray-700); background: var(--ic-border-default); }

403.cc-ic-copy-sm.cc-ic-copied { background: var(--ic-clay-deep); color: #fff; }

404 

405@media (max-width: 720px) {

406 .cc-ic-tab { padding: 12px 14px; font-size: 14px; }

407 .cc-ic-sales-actions { width: 100%; }

408 .cc-ic-card-body { padding: 20px; }

409 .cc-ic-cmd { font-size: 15px; }

410}

411`;

412 return <div className="cc-ic not-prose">

413 <style>{STYLES}</style>

414 

415 {}

416 <div className="cc-ic-tab-strip" role="tablist">

417 {TABS.map(t => <button key={t.key} type="button" role="tab" aria-selected={target === t.key} className={'cc-ic-tab' + (target === t.key ? ' cc-ic-active' : '')} onClick={() => setTarget(t.key)}>

418 {t.label}

419 </button>)}

420 </div>

421 

422 {}

423 <div className="cc-ic-team-wrap">

424 <button type="button" role="switch" aria-checked={team} className={'cc-ic-team-toggle' + (team ? ' cc-ic-checked' : '')} onClick={() => setTeam(!team)}>

425 <span className="cc-ic-check">{iconCheck(11)}</span>

426 <span>

427 I’m buying for a team or company (SSO, AWS/Azure/GCP, central billing)

428 </span>

429 </button>

430 </div>

431 

432 {}

433 {team && <div className="cc-ic-team-reveal">

434 <div className="cc-ic-sales">

435 <div className="cc-ic-sales-text">

436 <strong>Set up your team:</strong> self-serve or talk to sales.

437 </div>

438 <div className="cc-ic-sales-actions">

439 <a href="https://claude.ai/upgrade?initialPlanType=team&amp;utm_source=claude_code&amp;utm_medium=docs&amp;utm_content=configurator_team_get_started" className="cc-ic-btn-ghost">

440 Get started

441 </a>

442 <a href="https://www.anthropic.com/contact-sales?utm_source=claude_code&amp;utm_medium=docs&amp;utm_content=configurator_team_contact_sales" className="cc-ic-btn-clay">

443 Contact sales {iconArrowRight()}

444 </a>

445 </div>

446 </div>

447 

448 <div className="cc-ic-provider-bar">

449 <span className="cc-ic-label">Run on</span>

450 <div className="cc-ic-provider-pills" role="radiogroup" aria-label="Provider">

451 {PROVIDERS.map(p => <button key={p.key} type="button" role="radio" aria-checked={provider === p.key} className={'cc-ic-p-pill' + (provider === p.key ? ' cc-ic-active' : '')} onClick={() => setProvider(p.key)}>

452 {p.label}

453 </button>)}

454 </div>

455 </div>

456 

457 {showNotice && <div className="cc-ic-provider-notice">

458 {iconInfo()}

459 <div className="cc-ic-provider-notice-body">

460 {PROVIDER_NOTICE[provider]}

461 </div>

462 </div>}

463 </div>}

464 

465 {}

466 {target === 'terminal' && <div className="cc-ic-card">

467 <div className="cc-ic-subtabs" role="tablist" aria-label="Install method">

468 {Object.keys(TERM).map(k => <button key={k} type="button" role="tab" aria-selected={pkg === k} className={'cc-ic-subtab' + (pkg === k ? ' cc-ic-active' : '')} onClick={() => setPkg(k)}>

469 {TERM[k].label}

470 </button>)}

471 </div>

472 {isWinInstaller && <div className="cc-ic-shell-switch" role="tablist" aria-label="Shell">

473 {[{

474 k: 'ps',

475 label: 'PowerShell'

476 }, {

477 k: 'cmd',

478 label: 'CMD'

479 }].map(({k, label}) => {

480 const active = k === 'cmd' === winCmd;

481 return <button key={k} type="button" role="tab" aria-selected={active} className={'cc-ic-shell-option' + (active ? ' cc-ic-active' : '')} onClick={() => setWinCmd(k === 'cmd')}>

482 {label}

483 </button>;

484 })}

485 </div>}

486 {cardBodyCmd(terminalCmd, isWinPrompt ? '>' : '$')}

487 </div>}

488 

489 {}

490 {target === 'terminal' && <div className="cc-ic-below">

491 {isWinInstaller && <span>

492 <a href="https://git-scm.com/downloads/win" target="_blank" rel="noopener">

493 Git for Windows

494 </a>{' '}

495 recommended. PowerShell is used if Git Bash is absent.

496 </span>}

497 {(pkg === 'brew' || pkg === 'winget') && <span>

498 Does not auto-update. Run{' '}

499 <code>{pkg === 'brew' ? 'brew upgrade claude-code' : 'winget upgrade Anthropic.ClaudeCode'}</code>{' '}

500 periodically.

501 </span>}

502 <a href="/en/troubleshoot-install">Installation troubleshooting</a>

503 </div>}

504 

505 {alt && <div className="cc-ic-handoff">

506 <div className="cc-ic-handoff-title">Claude Code for {alt.name}</div>

507 <div className="cc-ic-handoff-sub">{alt.tagline}</div>

508 <div className="cc-ic-handoff-actions">

509 <a href={alt.installHref} className="cc-ic-btn-clay" {...alt.installHref.startsWith('http') ? {

510 target: '_blank',

511 rel: 'noopener'

512 } : {}}>

513 {alt.installLabel} {iconArrowUpRight(13)}

514 </a>

515 <a href={alt.guideHref} className="cc-ic-btn-ghost">

516 {alt.name} guide {iconArrowRight(12)}

517 </a>

518 </div>

519 {alt.altCmd && <div className="cc-ic-handoff-alt">

520 or run <code>{alt.altCmd}</code>

521 <button type="button" className={'cc-ic-copy-sm' + (copied === 'alt' ? ' cc-ic-copied' : '')} onClick={() => handleCopy(alt.altCmd, 'alt')} aria-label="Copy command">

522 {copied === 'alt' ? iconCheck(11) : iconCopy(11)}

523 </button>

524 </div>}

525 </div>}

526 </div>;

527};

528 

529export const Experiment = ({flag, treatment, children}) => {

530 const VID_KEY = 'exp_vid';

531 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

532 const fnv1a = s => {

533 let h = 0x811c9dc5;

534 for (let i = 0; i < s.length; i++) {

535 h ^= s.charCodeAt(i);

536 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

537 }

538 return h >>> 0;

539 };

540 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

541 const [decision] = useState(() => {

542 const params = new URLSearchParams(location.search);

543 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

544 const force = params.get('gb-force');

545 if (force) {

546 for (const p of force.split(',')) {

547 const [k, v] = p.split(':');

548 if (k === flag) return {

549 variant: v || 'treatment',

550 track: false

551 };

552 }

553 }

554 if (navigator.globalPrivacyControl) {

555 return {

556 variant: 'control',

557 track: false

558 };

559 }

560 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

561 if (prefsMatch) {

562 try {

563 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

564 return {

565 variant: 'control',

566 track: false

567 };

568 }

569 } catch {

570 return {

571 variant: 'control',

572 track: false

573 };

574 }

575 } else {

576 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

577 if (!country || CONSENT_COUNTRIES.has(country)) {

578 return {

579 variant: 'control',

580 track: false

581 };

582 }

583 }

584 let vid;

585 try {

586 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

587 if (ajsMatch) {

588 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

589 } else {

590 vid = localStorage.getItem(VID_KEY);

591 if (!vid) {

592 vid = crypto.randomUUID();

593 }

594 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

595 }

596 try {

597 localStorage.setItem(VID_KEY, vid);

598 } catch {}

599 } catch {

600 return {

601 variant: 'control',

602 track: false

603 };

604 }

605 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

606 return {

607 variant,

608 track: true,

609 vid

610 };

611 });

612 useEffect(() => {

613 if (!decision.track) return;

614 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

615 method: 'POST',

616 headers: {

617 'Content-Type': 'application/json',

618 'x-service-name': 'claude_code_docs'

619 },

620 body: JSON.stringify({

621 events: [{

622 event_type: 'GrowthbookExperimentEvent',

623 event_data: {

624 device_id: decision.vid,

625 anonymous_id: decision.vid,

626 timestamp: new Date().toISOString(),

627 experiment_id: flag,

628 variation_id: decision.variant === 'treatment' ? 1 : 0,

629 environment: 'production'

630 }

631 }]

632 }),

633 keepalive: true

634 }).catch(() => {});

635 }, []);

636 return decision.variant === 'treatment' ? treatment : children;

637};

638 

639Ce guide de démarrage rapide vous permettra d'utiliser l'assistance au codage alimentée par l'IA en quelques minutes. À la fin, vous comprendrez comment utiliser Claude Code pour les tâches de développement courantes.

640 

641<Experiment flag="quickstart-install-configurator" treatment={<InstallConfigurator />} />

642 

643## Avant de commencer

644 

645Assurez-vous que vous avez :

646 

647* Un terminal ou une invite de commande ouvert

648 * Si vous n'avez jamais utilisé le terminal auparavant, consultez le [guide du terminal](/fr/terminal-guide)

649* Un projet de code avec lequel travailler

650* Un [abonnement Claude](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_prereq) (Pro, Max, Teams ou Enterprise), un compte [Claude Console](https://console.anthropic.com/), ou un accès via un [fournisseur cloud pris en charge](/fr/third-party-integrations)

651 

652<Note>

653 Ce guide couvre le CLI du terminal. Claude Code est également disponible sur le [web](https://claude.ai/code), en tant qu'[application de bureau](/fr/desktop), dans [VS Code](/fr/vs-code) et [les IDE JetBrains](/fr/jetbrains), dans [Slack](/fr/slack), et en CI/CD avec [GitHub Actions](/fr/github-actions) et [GitLab](/fr/gitlab-ci-cd). Voir [toutes les interfaces](/fr/overview#use-claude-code-everywhere).

654</Note>

655 

656## Étape 1 : Installer Claude Code

657 

658To install Claude Code, use one of the following methods:

659 

660<Tabs>

661 <Tab title="Native Install (Recommended)">

662 **macOS, Linux, WSL:**

663 

664 ```bash theme={null}

665 curl -fsSL https://claude.ai/install.sh | bash

666 ```

667 

668 **Windows PowerShell:**

669 

670 ```powershell theme={null}

671 irm https://claude.ai/install.ps1 | iex

672 ```

673 

674 **Windows CMD:**

675 

676 ```batch theme={null}

677 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

678 ```

679 

680 If you see `The token '&&' is not a valid statement separator`, you're in PowerShell, not CMD. If you see `'irm' is not recognized as an internal or external command`, you're in CMD, not PowerShell. Your prompt shows `PS C:\` when you're in PowerShell and `C:\` without the `PS` when you're in CMD.

681 

682 [Git for Windows](https://git-scm.com/downloads/win) is recommended on native Windows so Claude Code can use the Bash tool. If Git for Windows is not installed, Claude Code uses PowerShell as the shell tool instead. WSL setups do not need Git for Windows.

683 

684 <Info>

685 Native installations automatically update in the background to keep you on the latest version.

686 </Info>

687 </Tab>

688 

689 <Tab title="Homebrew">

690 ```bash theme={null}

691 brew install --cask claude-code

692 ```

693 

694 Homebrew offers two casks. `claude-code` tracks the stable release channel, which is typically about a week behind and skips releases with major regressions. `claude-code@latest` tracks the latest channel and receives new versions as soon as they ship.

695 

696 <Info>

697 Homebrew installations do not auto-update. Run `brew upgrade claude-code` or `brew upgrade claude-code@latest`, depending on which cask you installed, to get the latest features and security fixes.

698 </Info>

699 </Tab>

700 

701 <Tab title="WinGet">

702 ```powershell theme={null}

703 winget install Anthropic.ClaudeCode

704 ```

705 

706 <Info>

707 WinGet installations do not auto-update. Run `winget upgrade Anthropic.ClaudeCode` periodically to get the latest features and security fixes.

708 </Info>

709 </Tab>

710</Tabs>

711 

712You can also install with [apt, dnf, or apk](/en/setup#install-with-linux-package-managers) on Debian, Fedora, RHEL, and Alpine.

713 

714## Étape 2 : Se connecter à votre compte

715 

716Claude Code nécessite un compte pour être utilisé. Lorsque vous démarrez une session interactive avec la commande `claude`, vous devrez vous connecter :

717 

718```bash theme={null}

719claude

720# Vous serez invité à vous connecter lors de la première utilisation

721```

722 

723```bash theme={null}

724/login

725# Suivez les invites pour vous connecter avec votre compte

726```

727 

728Vous pouvez vous connecter en utilisant l'un de ces types de compte :

729 

730* [Claude Pro, Max, Teams ou Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_login) (recommandé)

731* [Claude Console](https://console.anthropic.com/) (accès API avec crédits prépayés). Lors de la première connexion, un espace de travail « Claude Code » est automatiquement créé dans la Console pour un suivi centralisé des coûts.

732* [Amazon Bedrock, Google Vertex AI ou Microsoft Foundry](/fr/third-party-integrations) (fournisseurs cloud d'entreprise)

733 

734Une fois connecté, vos identifiants sont stockés et vous n'aurez pas besoin de vous reconnecter. Pour changer de compte plus tard, utilisez la commande `/login`.

735 

736## Étape 3 : Démarrer votre première session

737 

738Ouvrez votre terminal dans n'importe quel répertoire de projet et démarrez Claude Code :

739 

740```bash theme={null}

741cd /path/to/your/project

742claude

743```

744 

745Vous verrez l'écran de bienvenue de Claude Code avec les informations de votre session, les conversations récentes et les dernières mises à jour. Tapez `/help` pour les commandes disponibles ou `/resume` pour continuer une conversation précédente.

746 

747<Tip>

748 Après vous être connecté (Étape 2), vos identifiants sont stockés sur votre système. En savoir plus dans [Gestion des identifiants](/fr/authentication#credential-management).

749</Tip>

750 

751## Étape 4 : Posez votre première question

752 

753Commençons par comprendre votre base de code. Essayez l'une de ces commandes :

754 

755```text theme={null}

756what does this project do?

757```

758 

759Claude analysera vos fichiers et fournira un résumé. Vous pouvez également poser des questions plus spécifiques :

760 

761```text theme={null}

762what technologies does this project use?

763```

764 

765```text theme={null}

766where is the main entry point?

767```

768 

769```text theme={null}

770explain the folder structure

771```

772 

773Vous pouvez également demander à Claude ses propres capacités :

774 

775```text theme={null}

776what can Claude Code do?

777```

778 

779```text theme={null}

780how do I create custom skills in Claude Code?

781```

782 

783```text theme={null}

784can Claude Code work with Docker?

785```

786 

787<Note>

788 Claude Code lit vos fichiers de projet selon les besoins. Vous n'avez pas à ajouter manuellement du contexte.

789</Note>

790 

791## Étape 5 : Effectuez votre première modification de code

792 

793Maintenant, faisons en sorte que Claude Code fasse du vrai codage. Essayez une tâche simple :

794 

795```text theme={null}

796add a hello world function to the main file

797```

798 

799Claude Code va :

800 

8011. Trouver le fichier approprié

8022. Vous montrer les modifications proposées

8033. Demander votre approbation

8044. Effectuer la modification

805 

806<Note>

807 Claude Code demande toujours la permission avant de modifier les fichiers. Vous pouvez approuver les modifications individuelles ou activer le mode « Accepter tout » pour une session.

808</Note>

809 

810## Étape 6 : Utiliser Git avec Claude Code

811 

812Claude Code rend les opérations Git conversationnelles :

813 

814```text theme={null}

815what files have I changed?

816```

817 

818```text theme={null}

819commit my changes with a descriptive message

820```

821 

822Vous pouvez également demander des opérations Git plus complexes :

823 

824```text theme={null}

825create a new branch called feature/quickstart

826```

827 

828```text theme={null}

829show me the last 5 commits

830```

831 

832```text theme={null}

833help me resolve merge conflicts

834```

835 

836## Étape 7 : Corriger un bug ou ajouter une fonctionnalité

837 

838Claude est compétent pour le débogage et l'implémentation de fonctionnalités.

839 

840Décrivez ce que vous voulez en langage naturel :

841 

842```text theme={null}

843add input validation to the user registration form

844```

845 

846Ou corrigez les problèmes existants :

847 

848```text theme={null}

849there's a bug where users can submit empty forms - fix it

850```

851 

852Claude Code va :

853 

854* Localiser le code pertinent

855* Comprendre le contexte

856* Implémenter une solution

857* Exécuter les tests si disponibles

858 

859## Étape 8 : Testez d'autres flux de travail courants

860 

861Il existe plusieurs façons de travailler avec Claude :

862 

863**Refactoriser le code**

864 

865```text theme={null}

866refactor the authentication module to use async/await instead of callbacks

867```

868 

869**Écrire des tests**

870 

871```text theme={null}

872write unit tests for the calculator functions

873```

874 

875**Mettre à jour la documentation**

876 

877```text theme={null}

878update the README with installation instructions

879```

880 

881**Révision de code**

882 

883```text theme={null}

884review my changes and suggest improvements

885```

886 

887<Tip>

888 Parlez à Claude comme vous le feriez avec un collègue utile. Décrivez ce que vous voulez réaliser, et il vous aidera à y arriver.

889</Tip>

890 

891## Commandes essentielles

892 

893Voici les commandes les plus importantes pour l'utilisation quotidienne :

894 

895| Commande | Ce qu'elle fait | Exemple |

896| ------------------- | ------------------------------------------------------------------- | ----------------------------------- |

897| `claude` | Démarrer le mode interactif | `claude` |

898| `claude "task"` | Exécuter une tâche unique | `claude "fix the build error"` |

899| `claude -p "query"` | Exécuter une requête unique, puis quitter | `claude -p "explain this function"` |

900| `claude -c` | Continuer la conversation la plus récente dans le répertoire actuel | `claude -c` |

901| `claude -r` | Reprendre une conversation précédente | `claude -r` |

902| `claude commit` | Créer un commit Git | `claude commit` |

903| `/clear` | Effacer l'historique des conversations | `/clear` |

904| `/help` | Afficher les commandes disponibles | `/help` |

905| `exit` ou Ctrl+C | Quitter Claude Code | `exit` |

906 

907Voir la [référence CLI](/fr/cli-reference) pour une liste complète des commandes.

908 

909## Conseils professionnels pour les débutants

910 

911Pour plus d'informations, voir [les meilleures pratiques](/fr/best-practices) et [les flux de travail courants](/fr/common-workflows).

912 

913<AccordionGroup>

914 <Accordion title="Soyez spécifique dans vos demandes">

915 Au lieu de : ' corriger le bug '

916 

917 Essayez : ' corriger le bug de connexion où les utilisateurs voient un écran vide après avoir entré des identifiants incorrects '

918 </Accordion>

919 

920 <Accordion title="Utilisez des instructions étape par étape">

921 Divisez les tâches complexes en étapes :

922 

923 ```text theme={null}

924 1. create a new database table for user profiles

925 2. create an API endpoint to get and update user profiles

926 3. build a webpage that allows users to see and edit their information

927 ```

928 </Accordion>

929 

930 <Accordion title="Laissez Claude explorer d'abord">

931 Avant de faire des modifications, laissez Claude comprendre votre code :

932 

933 ```text theme={null}

934 analyze the database schema

935 ```

936 

937 ```text theme={null}

938 build a dashboard showing products that are most frequently returned by our UK customers

939 ```

940 </Accordion>

941 

942 <Accordion title="Gagnez du temps avec les raccourcis">

943 * Appuyez sur `?` pour voir tous les raccourcis clavier disponibles

944 * Utilisez Tab pour la complétion des commandes

945 * Appuyez sur ↑ pour l'historique des commandes

946 * Tapez `/` pour voir toutes les commandes et skills

947 </Accordion>

948</AccordionGroup>

949 

950## Prochaines étapes

951 

952Maintenant que vous avez appris les bases, explorez des fonctionnalités plus avancées :

953 

954<CardGroup cols={2}>

955 <Card title="Comment fonctionne Claude Code" icon="microchip" href="/fr/how-claude-code-works">

956 Comprendre la boucle agentique, les outils intégrés et comment Claude Code interagit avec votre projet

957 </Card>

958 

959 <Card title="Meilleures pratiques" icon="star" href="/fr/best-practices">

960 Obtenez de meilleurs résultats avec un prompting efficace et une configuration de projet appropriée

961 </Card>

962 

963 <Card title="Flux de travail courants" icon="graduation-cap" href="/fr/common-workflows">

964 Guides étape par étape pour les tâches courantes

965 </Card>

966 

967 <Card title="Étendre Claude Code" icon="puzzle-piece" href="/fr/features-overview">

968 Personnalisez avec CLAUDE.md, skills, hooks, MCP et bien plus

969 </Card>

970</CardGroup>

971 

972## Obtenir de l'aide

973 

974* **Dans Claude Code** : Tapez `/help` ou demandez « how do I... »

975* **Documentation** : Vous êtes ici ! Parcourez les autres guides

976* **Communauté** : Rejoignez notre [Discord](https://www.anthropic.com/discord) pour des conseils et du support

remote-control.md +259 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Continuer les sessions locales depuis n'importe quel appareil avec Remote Control

6 

7> Continuez une session Claude Code locale depuis votre téléphone, tablette ou n'importe quel navigateur en utilisant Remote Control. Fonctionne avec claude.ai/code et l'application Claude mobile.

8 

9<Note>

10 Remote Control est en aperçu de recherche et disponible sur tous les plans. Sur Team et Enterprise, il est désactivé par défaut jusqu'à ce qu'un administrateur active le bouton Remote Control dans les [paramètres d'administration Claude Code](https://claude.ai/admin-settings/claude-code).

11</Note>

12 

13Remote Control connecte [claude.ai/code](https://claude.ai/code) ou l'application Claude pour [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) et [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude) à une session Claude Code s'exécutant sur votre machine. Commencez une tâche à votre bureau, puis reprenez-la depuis votre téléphone sur le canapé ou un navigateur sur un autre ordinateur.

14 

15Lorsque vous démarrez une session Remote Control sur votre machine, Claude continue à s'exécuter localement à tout moment, donc rien ne se déplace vers le cloud. Avec Remote Control, vous pouvez :

16 

17* **Utiliser votre environnement local complet à distance** : votre système de fichiers, [serveurs MCP](/fr/mcp), outils et configuration de projet restent tous disponibles, et taper `@` complète automatiquement les chemins de fichiers de votre projet local

18* **Travailler depuis les deux surfaces à la fois** : la conversation reste synchronisée sur tous les appareils connectés, vous pouvez donc envoyer des messages depuis votre terminal, navigateur et téléphone de manière interchangeable

19* **Survivre aux interruptions** : si votre ordinateur portable s'endort ou votre réseau tombe en panne, la session se reconnecte automatiquement lorsque votre machine revient en ligne

20 

21Contrairement à [Claude Code sur le web](/fr/claude-code-on-the-web), qui s'exécute sur l'infrastructure cloud, les sessions Remote Control s'exécutent directement sur votre machine et interagissent avec votre système de fichiers local. Les interfaces web et mobile ne sont qu'une fenêtre dans cette session locale.

22 

23<Note>

24 Remote Control nécessite Claude Code v2.1.51 ou version ultérieure. Vérifiez votre version avec `claude --version`.

25</Note>

26 

27Cette page couvre la configuration, comment démarrer et se connecter aux sessions, et comment Remote Control se compare à Claude Code sur le web.

28 

29## Conditions requises

30 

31Avant d'utiliser Remote Control, confirmez que votre environnement répond à ces conditions :

32 

33* **Abonnement** : disponible sur les plans Pro, Max, Team et Enterprise. Les clés API ne sont pas prises en charge. Sur Team et Enterprise, un administrateur doit d'abord activer le bouton Remote Control dans les [paramètres d'administration Claude Code](https://claude.ai/admin-settings/claude-code).

34* **Authentification** : exécutez `claude` et utilisez `/login` pour vous connecter via claude.ai si vous ne l'avez pas déjà fait.

35* **Confiance de l'espace de travail** : exécutez `claude` dans votre répertoire de projet au moins une fois pour accepter la boîte de dialogue de confiance de l'espace de travail.

36 

37## Démarrer une session Remote Control

38 

39Vous pouvez démarrer une session Remote Control à partir de la CLI ou de l'extension VS Code. La CLI offre trois modes d'invocation ; VS Code utilise la commande `/remote-control`.

40 

41<Tabs>

42 <Tab title="Mode serveur">

43 Accédez à votre répertoire de projet et exécutez :

44 

45 ```bash theme={null}

46 claude remote-control

47 ```

48 

49 Le processus reste en cours d'exécution dans votre terminal en mode serveur, en attente de connexions distantes. Il affiche une URL de session que vous pouvez utiliser pour [vous connecter depuis un autre appareil](#connect-from-another-device), et vous pouvez appuyer sur la barre d'espace pour afficher un code QR pour un accès rapide depuis votre téléphone. Pendant qu'une session distante est active, le terminal affiche l'état de la connexion et l'activité des outils.

50 

51 Drapeaux disponibles :

52 

53 | Drapeau | Description |

54 | ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

55 | `--name "My Project"` | Définissez un titre de session personnalisé visible dans la liste des sessions sur claude.ai/code. |

56 | `--remote-control-session-name-prefix <prefix>` | Préfixe pour les noms de session générés automatiquement lorsqu'aucun nom explicite n'est défini. Par défaut, le nom d'hôte de votre machine, produisant des noms comme `myhost-graceful-unicorn`. Définissez `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` pour le même effet. |

57 | `--spawn <mode>` | Comment le serveur crée les sessions.<br />• `same-dir` (par défaut) : toutes les sessions partagent le répertoire de travail actuel, elles peuvent donc entrer en conflit si elles modifient les mêmes fichiers.<br />• `worktree` : chaque session à la demande obtient sa propre [git worktree](/fr/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees). Nécessite un référentiel git.<br />• `session` : mode session unique. Sert exactement une session et rejette les connexions supplémentaires. Défini au démarrage uniquement.<br />Appuyez sur `w` à l'exécution pour basculer entre `same-dir` et `worktree`. |

58 | `--capacity <N>` | Nombre maximum de sessions concurrentes. La valeur par défaut est 32. Ne peut pas être utilisé avec `--spawn=session`. |

59 | `--verbose` | Afficher les journaux de connexion et de session détaillés. |

60 | `--sandbox` / `--no-sandbox` | Activer ou désactiver le [sandboxing](/fr/sandboxing) pour l'isolation du système de fichiers et du réseau. Désactivé par défaut. |

61 </Tab>

62 

63 <Tab title="Session interactive">

64 Pour démarrer une session Claude Code interactive normale avec Remote Control activé, utilisez le drapeau `--remote-control` (ou `--rc`) :

65 

66 ```bash theme={null}

67 claude --remote-control

68 ```

69 

70 Passez éventuellement un nom pour la session :

71 

72 ```bash theme={null}

73 claude --remote-control "My Project"

74 ```

75 

76 Cela vous donne une session interactive complète dans votre terminal que vous pouvez également contrôler depuis claude.ai ou l'application Claude. Contrairement à `claude remote-control` (mode serveur), vous pouvez taper des messages localement tandis que la session est également disponible à distance.

77 </Tab>

78 

79 <Tab title="À partir d'une session existante">

80 Si vous êtes déjà dans une session Claude Code et que vous souhaitez la continuer à distance, utilisez la commande `/remote-control` (ou `/rc`) :

81 

82 ```text theme={null}

83 /remote-control

84 ```

85 

86 Passez un nom comme argument pour définir un titre de session personnalisé :

87 

88 ```text theme={null}

89 /remote-control My Project

90 ```

91 

92 Cela démarre une session Remote Control qui reprend votre historique de conversation actuel et affiche une URL de session et un code QR que vous pouvez utiliser pour [vous connecter depuis un autre appareil](#connect-from-another-device). Les drapeaux `--verbose`, `--sandbox` et `--no-sandbox` ne sont pas disponibles avec cette commande.

93 </Tab>

94 

95 <Tab title="VS Code">

96 Dans l'[extension VS Code Claude Code](/fr/vs-code), tapez `/remote-control` ou `/rc` dans la zone de saisie, ou ouvrez le menu de commande avec `/` et sélectionnez-le. Nécessite Claude Code v2.1.79 ou version ultérieure.

97 

98 ```text theme={null}

99 /remote-control

100 ```

101 

102 Une bannière apparaît au-dessus de la zone de saisie montrant l'état de la connexion. Une fois connecté, cliquez sur **Open in browser** dans la bannière pour accéder directement à la session, ou trouvez-la dans la liste des sessions sur [claude.ai/code](https://claude.ai/code). L'URL de la session est également affichée dans la conversation.

103 

104 Pour vous déconnecter, cliquez sur l'icône de fermeture sur la bannière ou exécutez `/remote-control` à nouveau.

105 

106 Contrairement à la CLI, la commande VS Code n'accepte pas d'argument de nom et n'affiche pas de code QR. Le titre de la session est dérivé de votre historique de conversation ou de votre premier message.

107 </Tab>

108</Tabs>

109 

110### Se connecter depuis un autre appareil

111 

112Une fois qu'une session Remote Control est active, vous avez plusieurs façons de vous connecter depuis un autre appareil :

113 

114* **Ouvrez l'URL de la session** dans n'importe quel navigateur pour accéder directement à la session sur [claude.ai/code](https://claude.ai/code).

115* **Scannez le code QR** affiché à côté de l'URL de la session pour l'ouvrir directement dans l'application Claude. Avec `claude remote-control`, appuyez sur la barre d'espace pour basculer l'affichage du code QR.

116* **Ouvrez [claude.ai/code](https://claude.ai/code) ou l'application Claude** et trouvez la session par nom dans la liste des sessions. Les sessions Remote Control affichent une icône d'ordinateur avec un point d'état vert lorsqu'elles sont en ligne.

117 

118Le titre de la session distante est choisi dans cet ordre :

119 

1201. Le nom que vous avez passé à `--name`, `--remote-control`, ou `/remote-control`

1212. Le titre que vous avez défini avec `/rename`

1223. Le dernier message significatif dans l'historique de conversation existant

1234. Un nom généré automatiquement comme `myhost-graceful-unicorn`, où `myhost` est le nom d'hôte de votre machine ou le préfixe que vous avez défini avec `--remote-control-session-name-prefix`

124 

125Si vous n'avez pas défini de nom explicite, le titre se met à jour pour refléter votre message une fois que vous en envoyez un.

126 

127Si l'environnement a déjà une session active, vous serez invité à choisir si vous souhaitez la continuer ou en démarrer une nouvelle.

128 

129Si vous n'avez pas encore l'application Claude, utilisez la commande `/mobile` dans Claude Code pour afficher un code QR de téléchargement pour [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) ou [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude).

130 

131### Activer Remote Control pour toutes les sessions

132 

133Par défaut, Remote Control ne s'active que lorsque vous exécutez explicitement `claude remote-control`, `claude --remote-control`, ou `/remote-control`. Pour l'activer automatiquement pour chaque session interactive, exécutez `/config` dans Claude Code et définissez **Enable Remote Control for all sessions** sur `true`. Définissez-le sur `false` pour le désactiver.

134 

135Avec ce paramètre activé, chaque processus Claude Code interactif enregistre une session distante. Si vous exécutez plusieurs instances, chacune obtient son propre environnement et sa propre session. Pour exécuter plusieurs sessions concurrentes à partir d'un seul processus, utilisez plutôt le mode serveur.

136 

137## Connexion et sécurité

138 

139Votre session Claude Code locale effectue uniquement des requêtes HTTPS sortantes et n'ouvre jamais de ports entrants sur votre machine. Lorsque vous démarrez Remote Control, il s'enregistre auprès de l'API Anthropic et interroge le travail. Lorsque vous vous connectez depuis un autre appareil, le serveur achemine les messages entre le client web ou mobile et votre session locale sur une connexion en continu.

140 

141Tout le trafic passe par l'API Anthropic sur TLS, le même transport de sécurité que n'importe quelle session Claude Code. La connexion utilise plusieurs identifiants de courte durée, chacun limité à un seul objectif et expirant indépendamment.

142 

143## Remote Control vs Claude Code sur le web

144 

145Remote Control et [Claude Code sur le web](/fr/claude-code-on-the-web) utilisent tous deux l'interface claude.ai/code. La différence clé est l'endroit où la session s'exécute : Remote Control s'exécute sur votre machine, donc vos serveurs MCP locaux, outils et configuration de projet restent disponibles. Claude Code sur le web s'exécute dans l'infrastructure cloud gérée par Anthropic.

146 

147Utilisez Remote Control lorsque vous êtes au milieu d'un travail local et que vous souhaitez continuer depuis un autre appareil. Utilisez Claude Code sur le web lorsque vous souhaitez lancer une tâche sans aucune configuration locale, travailler sur un référentiel que vous n'avez pas cloné, ou exécuter plusieurs tâches en parallèle.

148 

149## Notifications push mobiles

150 

151Lorsque Remote Control est actif, Claude peut envoyer des notifications push à votre téléphone.

152 

153Claude décide quand envoyer une notification. Il en envoie généralement une lorsqu'une tâche longue se termine ou lorsqu'il a besoin d'une décision de votre part pour continuer. Vous pouvez également demander une notification dans votre message, par exemple `notify me when the tests finish`. Au-delà du bouton marche/arrêt ci-dessous, il n'y a pas de configuration par événement.

154 

155<Note>

156 Les notifications push mobiles nécessitent Claude Code v2.1.110 ou version ultérieure.

157</Note>

158 

159Pour configurer les notifications push mobiles :

160 

161<Steps>

162 <Step title="Installer l'application Claude mobile">

163 Téléchargez l'application Claude pour [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) ou [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude).

164 </Step>

165 

166 <Step title="Connectez-vous avec votre compte Claude Code">

167 Utilisez le même compte et la même organisation que vous utilisez pour Claude Code dans le terminal.

168 </Step>

169 

170 <Step title="Autoriser les notifications">

171 Acceptez l'invite de permission de notification du système d'exploitation.

172 </Step>

173 

174 <Step title="Activer les notifications dans Claude Code">

175 Dans votre terminal, exécutez `/config` et activez **Push when Claude decides**.

176 </Step>

177</Steps>

178 

179Si les notifications n'arrivent pas :

180 

181* Si `/config` affiche **No mobile registered**, ouvrez l'application Claude sur votre téléphone pour qu'elle puisse actualiser son jeton push. L'avertissement disparaît la prochaine fois que Remote Control se connecte.

182* Sur iOS, les modes Focus et les résumés de notifications peuvent supprimer ou retarder les notifications. Vérifiez Paramètres → Notifications → Claude.

183* Sur Android, l'optimisation agressive de la batterie peut retarder la livraison. Exemptez l'application Claude de l'optimisation de la batterie dans les paramètres système.

184 

185## Limitations

186 

187* **Une session distante par processus interactif** : en dehors du mode serveur, chaque instance Claude Code prend en charge une session distante à la fois. Utilisez le [mode serveur](#start-a-remote-control-session) pour exécuter plusieurs sessions concurrentes à partir d'un seul processus.

188* **Le processus local doit continuer à s'exécuter** : Remote Control s'exécute en tant que processus local. Si vous fermez le terminal, quittez VS Code, ou arrêtez autrement le processus `claude`, la session se termine.

189* **Panne réseau prolongée** : si votre machine est allumée mais incapable d'atteindre le réseau pendant plus de dix minutes environ, la session expire et le processus se termine. Exécutez `claude remote-control` à nouveau pour démarrer une nouvelle session.

190* **Ultraplan déconnecte Remote Control** : le démarrage d'une session [ultraplan](/fr/ultraplan) déconnecte toute session Remote Control active car les deux fonctionnalités occupent l'interface claude.ai/code et une seule peut être connectée à la fois.

191* **Certaines commandes sont locales uniquement** : les commandes qui ouvrent un sélecteur interactif dans le terminal, telles que `/mcp`, `/plugin`, ou `/resume`, fonctionnent uniquement à partir de la CLI locale. Les commandes qui produisent une sortie textuelle, y compris `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/extra-usage`, `/recap`, et `/reload-plugins`, fonctionnent à partir du mobile et du web.

192 

193## Dépannage

194 

195### « Remote Control requires a claude.ai subscription »

196 

197Vous n'êtes pas authentifié avec un compte claude.ai. Exécutez `claude auth login` et choisissez l'option claude.ai. Si `ANTHROPIC_API_KEY` est défini dans votre environnement, désactivez-le d'abord.

198 

199### « Remote Control requires a full-scope login token »

200 

201Vous êtes authentifié avec un jeton de longue durée de `claude setup-token` ou la variable d'environnement `CLAUDE_CODE_OAUTH_TOKEN`. Ces jetons sont limités à l'inférence uniquement et ne peuvent pas établir de sessions Remote Control. Exécutez `claude auth login` pour vous authentifier avec un jeton de session à portée complète à la place.

202 

203### « Unable to determine your organization for Remote Control eligibility »

204 

205Vos informations de compte en cache sont obsolètes ou incomplètes. Exécutez `claude auth login` pour les actualiser.

206 

207### « Remote Control is not yet enabled for your account »

208 

209La vérification d'admissibilité peut échouer avec certaines variables d'environnement présentes :

210 

211* `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` ou `DISABLE_TELEMETRY` : désactivez-les et réessayez.

212* `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX`, ou `CLAUDE_CODE_USE_FOUNDRY` : Remote Control nécessite l'authentification claude.ai et ne fonctionne pas avec les fournisseurs tiers.

213 

214Si aucun de ceux-ci n'est défini, exécutez `/logout` puis `/login` pour actualiser.

215 

216### « Remote Control is disabled by your organization's policy »

217 

218Cette erreur a trois causes distinctes. Exécutez d'abord `/status` pour voir quelle méthode de connexion et quel abonnement vous utilisez.

219 

220* **Vous êtes authentifié avec une clé API ou un compte Console** : Remote Control nécessite OAuth claude.ai. Exécutez `/login` et choisissez l'option claude.ai. Si `ANTHROPIC_API_KEY` est défini dans votre environnement, désactivez-le.

221* **Votre administrateur Team ou Enterprise ne l'a pas activé** : Remote Control est désactivé par défaut sur ces plans. Un administrateur peut l'activer sur [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) en activant le bouton **Remote Control**. C'est un paramètre d'organisation côté serveur, pas une clé de [paramètres gérés](/fr/permissions#managed-only-settings).

222* **Le bouton d'administration est grisé** : votre organisation a une configuration de rétention des données ou de conformité incompatible avec Remote Control. Cela ne peut pas être modifié à partir du panneau d'administration. Contactez le support Anthropic pour discuter des options.

223 

224### « Remote credentials fetch failed »

225 

226Claude Code n'a pas pu obtenir une accréditation de courte durée auprès de l'API Anthropic pour établir la connexion. Réexécutez avec `--verbose` pour voir l'erreur complète :

227 

228```bash theme={null}

229claude remote-control --verbose

230```

231 

232Causes courantes :

233 

234* Non connecté : exécutez `claude` et utilisez `/login` pour vous authentifier avec votre compte claude.ai. L'authentification par clé API n'est pas prise en charge pour Remote Control.

235* Problème de réseau ou de proxy : un pare-feu ou un proxy peut bloquer la requête HTTPS sortante. Remote Control nécessite l'accès à l'API Anthropic sur le port 443.

236* Échec de la création de session : si vous voyez également `Session creation failed — see debug log`, l'échec s'est produit plus tôt dans la configuration. Vérifiez que votre abonnement est actif.

237 

238## Choisir la bonne approche

239 

240Claude Code offers several ways to work when you're not at your terminal. They differ in what triggers the work, where Claude runs, and how much you need to set up.

241 

242| | Trigger | Claude runs on | Setup | Best for |

243| :--------------------------------------------- | :--------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------ |

244| [Dispatch](/en/desktop#sessions-from-dispatch) | Message a task from the Claude mobile app | Your machine (Desktop) | [Pair the mobile app with Desktop](https://support.claude.com/en/articles/13947068) | Delegating work while you're away, minimal setup |

245| [Remote Control](/en/remote-control) | Drive a running session from [claude.ai/code](https://claude.ai/code) or the Claude mobile app | Your machine (CLI or VS Code) | Run `claude remote-control` | Steering in-progress work from another device |

246| [Channels](/en/channels) | Push events from a chat app like Telegram or Discord, or your own server | Your machine (CLI) | [Install a channel plugin](/en/channels#quickstart) or [build your own](/en/channels-reference) | Reacting to external events like CI failures or chat messages |

247| [Slack](/en/slack) | Mention `@Claude` in a team channel | Anthropic cloud | [Install the Slack app](/en/slack#setting-up-claude-code-in-slack) with [Claude Code on the web](/en/claude-code-on-the-web) enabled | PRs and reviews from team chat |

248| [Scheduled tasks](/en/scheduled-tasks) | Set a schedule | [CLI](/en/scheduled-tasks), [Desktop](/en/desktop-scheduled-tasks), or [cloud](/en/routines) | Pick a frequency | Recurring automation like daily reviews |

249 

250## Ressources connexes

251 

252* [Claude Code sur le web](/fr/claude-code-on-the-web) : exécutez des sessions dans des environnements cloud gérés par Anthropic au lieu de sur votre machine

253* [Ultraplan](/fr/ultraplan) : lancez une session de planification cloud depuis votre terminal et examinez le plan dans votre navigateur

254* [Canaux](/fr/channels) : transférez Telegram, Discord ou iMessage dans une session afin que Claude réagisse aux messages pendant que vous êtes absent

255* [Dispatch](/fr/desktop#sessions-from-dispatch) : envoyez un message avec une tâche depuis votre téléphone et il peut générer une session Desktop pour la gérer

256* [Authentification](/fr/authentication) : configurez `/login` et gérez les identifiants pour claude.ai

257* [Référence CLI](/fr/cli-reference) : liste complète des drapeaux et commandes incluant `claude remote-control`

258* [Sécurité](/fr/security) : comment les sessions Remote Control s'intègrent dans le modèle de sécurité Claude Code

259* [Utilisation des données](/fr/data-usage) : quelles données circulent via l'API Anthropic lors des sessions locales et distantes

routines.md +317 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Automatiser le travail avec les routines

6 

7> Mettez Claude Code en pilotage automatique. Définissez des routines qui s'exécutent selon un calendrier, se déclenchent sur des appels API, ou réagissent aux événements GitHub à partir de l'infrastructure cloud gérée par Anthropic.

8 

9<Note>

10 Les routines sont en aperçu de recherche. Le comportement, les limites et la surface de l'API peuvent changer.

11</Note>

12 

13Une routine est une configuration Claude Code enregistrée : une invite, un ou plusieurs référentiels, et un ensemble de [connecteurs](/fr/mcp), empaquetés une fois et exécutés automatiquement. Les routines s'exécutent sur l'infrastructure cloud gérée par Anthropic, de sorte qu'elles continuent de fonctionner lorsque votre ordinateur portable est fermé.

14 

15Chaque routine peut avoir un ou plusieurs déclencheurs attachés :

16 

17* **Planifiée** : s'exécute selon une cadence récurrente comme toutes les heures, chaque nuit ou chaque semaine

18* **API** : se déclenche à la demande en envoyant une requête HTTP POST à un point de terminaison par routine avec un jeton porteur

19* **GitHub** : s'exécute automatiquement en réponse aux événements du référentiel tels que les demandes de tirage ou les versions

20 

21Une seule routine peut combiner des déclencheurs. Par exemple, une routine d'examen des PR peut s'exécuter chaque nuit, se déclencher à partir d'un script de déploiement, et réagir également à chaque nouvelle PR.

22 

23Les routines sont disponibles sur les plans Pro, Max, Team et Enterprise avec [Claude Code sur le web](/fr/claude-code-on-the-web) activé. Créez et gérez-les sur [claude.ai/code/routines](https://claude.ai/code/routines), ou à partir de la CLI avec `/schedule`.

24 

25Cette page couvre la création d'une routine, la configuration de chaque type de déclencheur, la gestion des exécutions et la façon dont les limites d'utilisation s'appliquent.

26 

27## Exemples de cas d'usage

28 

29Chaque exemple associe un type de déclencheur au type de travail pour lequel les routines sont adaptées : sans surveillance, répétable et lié à un résultat clair.

30 

31**Maintenance du carnet de commandes.** Un déclencheur de calendrier s'exécute chaque soir en semaine sur votre suivi des problèmes via un connecteur. La routine lit les problèmes ouverts depuis la dernière exécution, applique des étiquettes, assigne les propriétaires en fonction de la zone de code référencée, et publie un résumé sur Slack afin que l'équipe commence la journée avec une file d'attente organisée.

32 

33**Triage des alertes.** Votre outil de surveillance appelle le point de terminaison API de la routine lorsqu'un seuil d'erreur est dépassé, en transmettant le corps de l'alerte en tant que `text`. La routine extrait la trace de pile, la met en corrélation avec les commits récents du référentiel, et ouvre une demande de tirage brouillon avec un correctif proposé et un lien vers l'alerte. L'équipe d'astreinte examine la PR au lieu de commencer à partir d'un terminal vierge.

34 

35**Examen du code sur mesure.** Un déclencheur GitHub s'exécute sur `pull_request.opened`. La routine applique la liste de contrôle d'examen de votre équipe, laisse des commentaires en ligne pour les problèmes de sécurité, de performance et de style, et ajoute un commentaire récapitulatif afin que les examinateurs humains puissent se concentrer sur la conception plutôt que sur les vérifications mécaniques.

36 

37**Vérification du déploiement.** Votre pipeline CD appelle le point de terminaison API de la routine après chaque déploiement en production. La routine exécute des vérifications de fumée sur la nouvelle version, analyse les journaux d'erreurs pour détecter les régressions, et publie un feu vert ou un feu rouge sur le canal de version avant la fermeture de la fenêtre de déploiement.

38 

39**Dérive de la documentation.** Un déclencheur de calendrier s'exécute chaque semaine. La routine analyse les PR fusionnées depuis la dernière exécution, signale la documentation qui référence les API modifiées, et ouvre des PR de mise à jour par rapport au référentiel de documentation pour qu'un éditeur les examine.

40 

41**Portage de bibliothèque.** Un déclencheur GitHub s'exécute sur `pull_request.closed` filtré pour les PR fusionnées dans un référentiel SDK. La routine porte la modification vers un SDK parallèle dans une autre langue et ouvre une PR correspondante, en gardant les deux bibliothèques synchronisées sans qu'un humain ne réimplémente chaque modification.

42 

43Les sections ci-dessous expliquent comment créer une routine et configurer chacun de ces types de déclencheurs.

44 

45## Créer une routine

46 

47Créez une routine à partir du web, de l'application de bureau ou de la CLI. Les trois surfaces écrivent dans le même compte cloud, de sorte qu'une routine que vous créez dans la CLI apparaît immédiatement sur claude.ai/code/routines. Dans l'application de bureau, cliquez sur **New task** et choisissez **New remote task** ; choisir **New local task** à la place crée une [tâche planifiée locale de bureau](/fr/desktop-scheduled-tasks), qui s'exécute sur votre machine et n'est pas une routine.

48 

49Le formulaire de création configure l'invite de la routine, les référentiels, l'environnement, les connecteurs et les déclencheurs.

50 

51Les routines s'exécutent de manière autonome en tant que sessions cloud Claude Code complètes : il n'y a pas de sélecteur de mode de permission et pas d'invites d'approbation pendant une exécution. La session peut exécuter des commandes shell, utiliser des [skills](/fr/skills) validées dans le référentiel cloné, et appeler tous les connecteurs que vous incluez. Ce qu'une routine peut atteindre est déterminé par les référentiels que vous sélectionnez et leur paramètre de branche-push, l'accès réseau et les variables de l'[environnement](/fr/claude-code-on-the-web#the-cloud-environment), et les connecteurs que vous incluez. Limitez chacun de ces éléments à ce dont la routine a réellement besoin.

52 

53Les routines appartiennent à votre compte claude.ai individuel. Elles ne sont pas partagées avec les coéquipiers, et elles comptent dans votre allocation quotidienne d'exécutions. Tout ce qu'une routine fait via votre identité GitHub connectée ou les connecteurs apparaît comme vous : les commits et les demandes de tirage portent votre utilisateur GitHub, et les messages Slack, les tickets Linear ou d'autres actions de connecteur utilisent vos comptes liés pour ces services.

54 

55### Créer à partir du web

56 

57<Steps>

58 <Step title="Ouvrir le formulaire de création">

59 Visitez [claude.ai/code/routines](https://claude.ai/code/routines) et cliquez sur **New routine**.

60 </Step>

61 

62 <Step title="Nommer la routine et écrire l'invite">

63 Donnez à la routine un nom descriptif et écrivez l'invite que Claude exécute à chaque fois. L'invite est la partie la plus importante : la routine s'exécute de manière autonome, donc l'invite doit être autonome et explicite sur ce qu'il faut faire et à quoi ressemble le succès.

64 

65 L'entrée d'invite inclut un sélecteur de modèle. Claude utilise le modèle sélectionné à chaque exécution.

66 </Step>

67 

68 <Step title="Sélectionner les référentiels">

69 Ajoutez un ou plusieurs référentiels GitHub pour que Claude y travaille. Chaque référentiel est cloné au début d'une exécution, en commençant par la branche par défaut. Claude crée des branches préfixées par `claude/` pour ses modifications. Pour autoriser les poussées vers n'importe quelle branche, activez **Allow unrestricted branch pushes** pour ce référentiel.

70 </Step>

71 

72 <Step title="Sélectionner un environnement">

73 Choisissez un [environnement cloud](/fr/claude-code-on-the-web#the-cloud-environment) pour la routine. Les environnements contrôlent ce à quoi la session cloud a accès :

74 

75 * **Network access** : définissez le niveau d'accès à Internet disponible pendant chaque exécution

76 * **Environment variables** : fournissez des clés API, des jetons ou d'autres secrets que Claude peut utiliser

77 * **Setup script** : installez les dépendances et les outils dont la routine a besoin. Le résultat est [mis en cache](/fr/claude-code-on-the-web#environment-caching), de sorte que le script ne se réexécute pas à chaque session

78 

79 Un environnement **Default** est fourni. Pour utiliser un environnement personnalisé, [créez-en un](/fr/claude-code-on-the-web#the-cloud-environment) avant de créer la routine.

80 </Step>

81 

82 <Step title="Sélectionner un déclencheur">

83 Sous **Select a trigger**, choisissez comment la routine démarre. Vous pouvez choisir un type de déclencheur ou en combiner plusieurs.

84 

85 <Tabs>

86 <Tab title="Schedule">

87 Choisissez une fréquence prédéfinie : toutes les heures, quotidienne, les jours de semaine ou hebdomadaire. Consultez [Add a schedule trigger](#add-a-schedule-trigger) pour la gestion des fuseaux horaires, l'échelonnement et les intervalles cron personnalisés.

88 </Tab>

89 

90 <Tab title="GitHub event">

91 Sélectionnez le référentiel, l'événement auquel réagir et les filtres optionnels. Consultez [Add a GitHub trigger](#add-a-github-trigger) pour la liste complète des événements pris en charge et des champs de filtre.

92 </Tab>

93 

94 <Tab title="API">

95 Sélectionnez **API** ici, puis enregistrez la routine. L'URL et le jeton sont générés après l'enregistrement de la routine, car ils dépendent de l'ID de la routine. Consultez [Add an API trigger](#add-an-api-trigger) pour copier l'URL et générer un jeton.

96 </Tab>

97 </Tabs>

98 </Step>

99 

100 <Step title="Examiner les connecteurs">

101 Tous vos [connecteurs MCP](/fr/mcp) connectés sont inclus par défaut. Supprimez tous ceux dont la routine n'a pas besoin. Les connecteurs donnent à Claude accès aux services externes comme Slack, Linear ou Google Drive pendant chaque exécution.

102 </Step>

103 

104 <Step title="Créer la routine">

105 Cliquez sur **Create**. La routine apparaît dans la liste et s'exécute la prochaine fois que l'un de ses déclencheurs correspond. Pour démarrer une exécution immédiatement, cliquez sur **Run now** sur la page de détail de la routine.

106 

107 Chaque exécution crée une nouvelle session aux côtés de vos autres sessions, où vous pouvez voir ce que Claude a fait, examiner les modifications et créer une demande de tirage.

108 </Step>

109</Steps>

110 

111### Créer à partir de la CLI

112 

113Exécutez `/schedule` dans n'importe quelle session pour créer une routine planifiée de manière conversationnelle. Vous pouvez également transmettre une description directement, comme dans `/schedule daily PR review at 9am`. Claude parcourt les mêmes informations que le formulaire web collecte, puis enregistre la routine sur votre compte.

114 

115`/schedule` dans la CLI crée uniquement des routines planifiées. Pour ajouter un déclencheur API ou GitHub, modifiez la routine sur le web sur [claude.ai/code/routines](https://claude.ai/code/routines).

116 

117La CLI prend également en charge la gestion des routines existantes. Exécutez `/schedule list` pour voir toutes les routines, `/schedule update` pour en modifier une, ou `/schedule run` pour la déclencher immédiatement.

118 

119### Créer à partir de l'application de bureau

120 

121Ouvrez la page **Schedule** dans l'application de bureau, cliquez sur **New task**, et choisissez **New remote task**. L'application de bureau affiche à la fois les tâches planifiées locales et les routines dans la même grille. Consultez [Desktop scheduled tasks](/fr/desktop-scheduled-tasks) pour plus de détails sur l'option locale.

122 

123## Configurer les déclencheurs

124 

125Une routine démarre lorsque l'un de ses déclencheurs correspond. Vous pouvez attacher n'importe quelle combinaison de déclencheurs de calendrier, API et GitHub à la même routine, et les ajouter ou les supprimer à tout moment à partir de la section **Select a trigger** du formulaire d'édition de la routine.

126 

127### Ajouter un déclencheur de calendrier

128 

129Un déclencheur de calendrier exécute la routine selon une cadence récurrente. Choisissez une fréquence prédéfinie dans la section **Select a trigger** : toutes les heures, quotidienne, les jours de semaine ou hebdomadaire. Les heures sont entrées dans votre fuseau horaire local et converties automatiquement, de sorte que la routine s'exécute à cette heure murale indépendamment de l'endroit où se trouve l'infrastructure cloud.

130 

131Les exécutions peuvent démarrer quelques minutes après l'heure planifiée en raison de l'échelonnement. Le décalage est cohérent pour chaque routine.

132 

133Pour un intervalle personnalisé tel que toutes les deux heures ou le premier de chaque mois, choisissez la prédéfinie la plus proche dans le formulaire, puis exécutez `/schedule update` dans la CLI pour définir une expression cron spécifique. L'intervalle minimum est d'une heure ; les expressions qui s'exécutent plus fréquemment sont rejetées.

134 

135### Ajouter un déclencheur API

136 

137Un déclencheur API donne à une routine un point de terminaison HTTP dédié. POSTer sur le point de terminaison avec le jeton porteur de la routine démarre une nouvelle session et retourne une URL de session. Utilisez ceci pour intégrer Claude Code dans les systèmes d'alerte, les pipelines de déploiement, les outils internes ou n'importe où vous pouvez faire une requête HTTP authentifiée.

138 

139Les déclencheurs API sont ajoutés à une routine existante à partir du web. La CLI ne peut actuellement pas créer ou révoquer des jetons.

140 

141<Steps>

142 <Step title="Ouvrir la routine pour l'édition">

143 Allez sur [claude.ai/code/routines](https://claude.ai/code/routines), cliquez sur la routine que vous souhaitez déclencher via API, puis cliquez sur l'icône de crayon pour ouvrir **Edit routine**.

144 </Step>

145 

146 <Step title="Ajouter un déclencheur API">

147 Faites défiler jusqu'à la section **Select a trigger** sous l'invite, cliquez sur **Add another trigger**, et choisissez **API**.

148 </Step>

149 

150 <Step title="Copier l'URL et générer un jeton">

151 La fenêtre modale affiche l'URL de cette routine ainsi qu'un exemple de commande curl. Copiez l'URL, puis cliquez sur **Generate token** et copiez le jeton immédiatement. Le jeton est affiché une seule fois et ne peut pas être récupéré ultérieurement, alors stockez-le quelque part de sécurisé comme le magasin de secrets de votre outil d'alerte.

152 </Step>

153 

154 <Step title="Appeler le point de terminaison">

155 Envoyez le jeton dans l'en-tête `Authorization: Bearer` lorsque vous POSTez sur l'URL. La section [Trigger a routine](#trigger-a-routine) ci-dessous montre un exemple complet.

156 </Step>

157</Steps>

158 

159Chaque routine a son propre jeton, limité au déclenchement de cette routine uniquement. Pour le faire tourner ou le révoquer, retournez à la même fenêtre modale et cliquez sur **Regenerate** ou **Revoke**.

160 

161#### Déclencher une routine

162 

163Envoyez une requête POST au point de terminaison `/fire` avec le jeton porteur dans l'en-tête `Authorization`. Le corps de la requête accepte un champ `text` optionnel pour le contexte spécifique à l'exécution tel qu'un corps d'alerte ou un journal défaillant, transmis à la routine aux côtés de son invite enregistrée. La valeur est du texte libre et n'est pas analysée : si vous envoyez JSON ou une autre charge utile structurée, la routine la reçoit comme une chaîne littérale.

164 

165L'exemple ci-dessous déclenche une routine à partir d'un shell :

166 

167```bash theme={null}

168curl -X POST https://api.anthropic.com/v1/claude_code/routines/trig_01ABCDEFGHJKLMNOPQRSTUVW/fire \

169 -H "Authorization: Bearer sk-ant-oat01-xxxxx" \

170 -H "anthropic-beta: experimental-cc-routine-2026-04-01" \

171 -H "anthropic-version: 2023-06-01" \

172 -H "Content-Type: application/json" \

173 -d '{"text": "Sentry alert SEN-4521 fired in prod. Stack trace attached."}'

174```

175 

176Une requête réussie retourne un corps JSON avec le nouvel ID de session et l'URL :

177 

178```json theme={null}

179{

180 "type": "routine_fire",

181 "claude_code_session_id": "session_01HJKLMNOPQRSTUVWXYZ",

182 "claude_code_session_url": "https://claude.ai/code/session_01HJKLMNOPQRSTUVWXYZ"

183}

184```

185 

186Ouvrez l'URL de session dans un navigateur pour regarder l'exécution en temps réel, examiner les modifications ou continuer la conversation manuellement.

187 

188<Warning>

189 Le point de terminaison `/fire` est livré sous l'en-tête bêta `experimental-cc-routine-2026-04-01`. Les formes de requête et de réponse, les limites de débit et la sémantique des jetons peuvent changer pendant que la fonctionnalité est en aperçu de recherche. Les modifications de rupture sont livrées derrière les nouvelles versions d'en-tête bêta datées, et les deux versions d'en-tête précédentes les plus récentes continuent de fonctionner afin que les appelants aient le temps de migrer.

190</Warning>

191 

192#### Référence API

193 

194Pour la référence API complète, y compris toutes les réponses d'erreur, les règles de validation et les limites de champs, consultez [Trigger a routine via API](https://platform.claude.com/docs/fr/api/claude-code/routines-fire) dans la documentation de la plateforme Claude.

195 

196Le point de terminaison `/fire` est disponible pour les utilisateurs de claude.ai uniquement et ne fait pas partie de la surface de l'API Claude Platform.

197 

198### Ajouter un déclencheur GitHub

199 

200Un déclencheur GitHub démarre une nouvelle session automatiquement lorsqu'un événement correspondant se produit sur un référentiel connecté. Chaque événement correspondant démarre sa propre session.

201 

202<Note>

203 Pendant l'aperçu de recherche, les événements webhook GitHub sont soumis à des limites horaires par routine et par compte. Les événements au-delà de la limite sont supprimés jusqu'à la réinitialisation de la fenêtre. Consultez vos limites actuelles sur [claude.ai/code/routines](https://claude.ai/code/routines).

204</Note>

205 

206Les déclencheurs GitHub sont configurés uniquement à partir de l'interface utilisateur web.

207 

208<Steps>

209 <Step title="Ouvrir la routine pour l'édition">

210 Allez sur [claude.ai/code/routines](https://claude.ai/code/routines), cliquez sur la routine, puis cliquez sur l'icône de crayon pour ouvrir **Edit routine**.

211 </Step>

212 

213 <Step title="Ajouter un déclencheur d'événement GitHub">

214 Faites défiler jusqu'à la section **Select a trigger**, cliquez sur **Add another trigger**, et choisissez **GitHub event**.

215 </Step>

216 

217 <Step title="Installer l'application Claude GitHub">

218 L'application Claude GitHub doit être installée sur le référentiel auquel vous souhaitez vous abonner. La configuration du déclencheur vous invite à l'installer si ce n'est pas déjà fait.

219 

220 <Note>

221 L'exécution de `/web-setup` dans la CLI accorde l'accès au référentiel pour le clonage, mais elle n'installe pas l'application Claude GitHub et n'active pas la livraison des webhooks. Les déclencheurs GitHub nécessitent l'installation de l'application Claude GitHub, que la configuration du déclencheur vous invite à faire.

222 </Note>

223 </Step>

224 

225 <Step title="Configurer le déclencheur">

226 Sélectionnez le référentiel, choisissez un événement dans la liste des [événements pris en charge](#supported-events), et ajoutez éventuellement des filtres. Enregistrez le déclencheur.

227 </Step>

228</Steps>

229 

230#### Événements pris en charge

231 

232Les déclencheurs GitHub peuvent s'abonner à l'une des catégories d'événements suivantes. Dans chaque catégorie, vous pouvez choisir une action spécifique, comme `pull_request.opened`, ou réagir à toutes les actions de la catégorie.

233 

234| Événement | Se déclenche quand |

235| :----------- | :------------------------------------------------------------------------------------- |

236| Pull request | Une PR est ouverte, fermée, assignée, étiquetée, synchronisée ou autrement mise à jour |

237| Release | Une version est créée, publiée, modifiée ou supprimée |

238 

239#### Filtrer les demandes de tirage

240 

241Utilisez les filtres pour affiner les demandes de tirage qui démarrent une nouvelle session. Toutes les conditions de filtre doivent correspondre pour que la routine se déclenche. Les champs de filtre disponibles sont :

242 

243| Filtre | Correspond à |

244| :---------- | :-------------------------------------------- |

245| Author | Nom d'utilisateur GitHub de l'auteur de la PR |

246| Title | Texte du titre de la PR |

247| Body | Texte de la description de la PR |

248| Base branch | Branche ciblée par la PR |

249| Head branch | Branche d'où provient la PR |

250| Labels | Étiquettes appliquées à la PR |

251| Is draft | Si la PR est à l'état brouillon |

252| Is merged | Si la PR a été fusionnée |

253 

254Chaque filtre associe un champ à un opérateur : égal à, contient, commence par, est l'un de, n'est pas l'un de, ou correspond à regex.

255 

256L'opérateur `matches regex` teste la valeur de champ entière, pas une sous-chaîne à l'intérieur. Pour correspondre à n'importe quel titre contenant `hotfix`, écrivez `.*hotfix.*`. Sans le `.*` environnant, le filtre correspond uniquement à un titre qui est exactement `hotfix` sans rien avant ou après. Pour la correspondance de sous-chaîne littérale sans syntaxe regex, utilisez l'opérateur `contains` à la place.

257 

258Quelques exemples de combinaisons de filtres :

259 

260* **Examen du module d'authentification** : branche de base `main`, branche de tête contient `auth-provider`. Envoie toute PR qui touche l'authentification à un examinateur ciblé.

261* **Prêt pour l'examen uniquement** : est brouillon est `false`. Ignore les brouillons afin que la routine s'exécute uniquement lorsque la PR est prête pour l'examen.

262* **Portage contrôlé par étiquette** : les étiquettes incluent `needs-backport`. Déclenche une routine de portage vers une autre branche uniquement lorsqu'un responsable marque la PR.

263 

264#### Comment les sessions correspondent aux événements

265 

266Chaque événement GitHub correspondant démarre une nouvelle session. La réutilisation de session entre les événements n'est pas disponible pour les routines déclenchées par GitHub, de sorte que deux mises à jour de PR produisent deux sessions indépendantes.

267 

268## Gérer les routines

269 

270Cliquez sur une routine dans la liste pour ouvrir sa page de détail. La page de détail affiche les référentiels de la routine, les connecteurs, l'invite, le calendrier, les jetons API, les déclencheurs GitHub et une liste des exécutions passées.

271 

272### Afficher et interagir avec les exécutions

273 

274Cliquez sur n'importe quelle exécution pour l'ouvrir en tant que session complète. À partir de là, vous pouvez voir ce que Claude a fait, examiner les modifications, créer une demande de tirage ou continuer la conversation. Chaque session d'exécution fonctionne comme n'importe quelle autre session : utilisez le menu déroulant à côté du titre de la session pour la renommer, l'archiver ou la supprimer.

275 

276### Éditer et contrôler les routines

277 

278À partir de la page de détail de la routine, vous pouvez :

279 

280* Cliquer sur **Run now** pour démarrer une exécution immédiatement sans attendre l'heure planifiée suivante.

281* Utiliser le bouton bascule dans la section **Repeats** pour mettre en pause ou reprendre le calendrier. Les routines en pause conservent leur configuration mais ne s'exécutent pas jusqu'à ce que vous les réactiviez.

282* Cliquer sur l'icône de crayon pour ouvrir **Edit routine** et modifier le nom, l'invite, les référentiels, l'environnement, les connecteurs ou l'un des déclencheurs de la routine. La section **Select a trigger** est l'endroit où vous ajoutez ou supprimez les calendriers, les jetons API et les déclencheurs d'événements GitHub.

283* Cliquer sur l'icône de suppression pour supprimer la routine. Les sessions passées créées par la routine restent dans votre liste de sessions.

284 

285### Référentiels et permissions de branche

286 

287Les routines ont besoin d'un accès GitHub pour cloner les référentiels. Lorsque vous créez une routine à partir de la CLI avec `/schedule`, Claude vérifie si votre compte a GitHub connecté et vous invite à exécuter `/web-setup` si ce n'est pas le cas. Consultez [GitHub authentication options](/fr/claude-code-on-the-web#github-authentication-options) pour les deux façons d'accorder l'accès.

288 

289Chaque référentiel que vous ajoutez est cloné à chaque exécution. Claude commence à partir de la branche par défaut du référentiel sauf si votre invite spécifie le contraire.

290 

291Par défaut, Claude ne peut pousser que vers les branches préfixées par `claude/`. Cela empêche les routines de modifier accidentellement les branches protégées ou longue durée. Pour supprimer cette restriction pour un référentiel spécifique, activez **Allow unrestricted branch pushes** pour ce référentiel lors de la création ou de l'édition de la routine.

292 

293### Connecteurs

294 

295Les routines peuvent utiliser vos connecteurs MCP connectés pour lire et écrire dans les services externes pendant chaque exécution. Par exemple, une routine qui trie les demandes d'assistance peut lire à partir d'un canal Slack et créer des problèmes dans Linear.

296 

297Lorsque vous créez une routine, tous vos connecteurs actuellement connectés sont inclus par défaut. Supprimez tous ceux qui ne sont pas nécessaires pour limiter les outils auxquels Claude a accès pendant l'exécution. Vous pouvez également ajouter des connecteurs directement à partir du formulaire de routine.

298 

299Pour gérer ou ajouter des connecteurs en dehors du formulaire de routine, visitez **Settings > Connectors** sur claude.ai ou utilisez `/schedule update` dans la CLI.

300 

301### Environnements

302 

303Chaque routine s'exécute dans un [environnement cloud](/fr/claude-code-on-the-web#the-cloud-environment) qui contrôle l'accès réseau, les variables d'environnement et les scripts de configuration. Configurez les environnements avant de créer une routine pour donner à Claude accès aux API, installer les dépendances ou restreindre la portée du réseau. Consultez [cloud environment](/fr/claude-code-on-the-web#the-cloud-environment) pour le guide de configuration complet.

304 

305## Utilisation et limites

306 

307Les routines réduisent l'utilisation de l'abonnement de la même manière que les sessions interactives. En plus des limites d'abonnement standard, les routines ont un plafond quotidien sur le nombre d'exécutions qui peuvent démarrer par compte. Consultez votre consommation actuelle et vos exécutions de routine quotidiennes restantes sur [claude.ai/code/routines](https://claude.ai/code/routines) ou [claude.ai/settings/usage](https://claude.ai/settings/usage).

308 

309Lorsqu'une routine atteint le plafond quotidien ou votre limite d'utilisation d'abonnement, les organisations avec utilisation supplémentaire activée peuvent continuer à exécuter les routines sur dépassement mesuré. Sans utilisation supplémentaire, les exécutions supplémentaires sont rejetées jusqu'à la réinitialisation de la fenêtre. Activez l'utilisation supplémentaire à partir de **Settings > Billing** sur claude.ai.

310 

311## Ressources connexes

312 

313* [`/loop` et planification en session](/fr/scheduled-tasks) : planifiez les tâches locales dans une session CLI ouverte

314* [Desktop scheduled tasks](/fr/desktop-scheduled-tasks) : tâches planifiées locales qui s'exécutent sur votre machine avec accès aux fichiers locaux

315* [Cloud environment](/fr/claude-code-on-the-web#the-cloud-environment) : configurez l'environnement d'exécution pour les sessions cloud

316* [MCP connectors](/fr/mcp) : connectez les services externes comme Slack, Linear et Google Drive

317* [GitHub Actions](/fr/github-actions) : exécutez Claude dans votre pipeline CI sur les événements du référentiel

sandboxing.md +329 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Sandboxing

6 

7> Découvrez comment l'outil bash en sandbox de Claude Code fournit une isolation du système de fichiers et du réseau pour une exécution d'agent plus sûre et plus autonome.

8 

9## Aperçu

10 

11Claude Code dispose d'un sandboxing natif pour fournir un environnement plus sécurisé pour l'exécution des agents tout en réduisant le besoin de demandes de permission constantes. Au lieu de demander une permission pour chaque commande bash, le sandboxing crée des limites définies à l'avance où Claude Code peut travailler plus librement avec un risque réduit.

12 

13L'outil bash en sandbox utilise des primitives au niveau du système d'exploitation pour appliquer à la fois l'isolation du système de fichiers et du réseau.

14 

15## Pourquoi le sandboxing est important

16 

17La sécurité basée sur les permissions traditionnelles nécessite une approbation constante de l'utilisateur pour les commandes bash. Bien que cela offre un contrôle, cela peut entraîner :

18 

19* **Fatigue d'approbation** : Cliquer répétitivement sur « approuver » peut amener les utilisateurs à prêter moins attention à ce qu'ils approuvent

20* **Productivité réduite** : Les interruptions constantes ralentissent les flux de travail de développement

21* **Autonomie limitée** : Claude Code ne peut pas fonctionner aussi efficacement en attendant les approbations

22 

23Le sandboxing résout ces défis en :

24 

251. **Définissant des limites claires** : Spécifiez exactement quels répertoires et hôtes réseau Claude Code peut accéder

262. **Réduisant les demandes de permission** : Les commandes sûres dans le sandbox ne nécessitent pas d'approbation

273. **Maintenant la sécurité** : Les tentatives d'accès aux ressources en dehors du sandbox déclenchent des notifications immédiates

284. **Permettant l'autonomie** : Claude Code peut fonctionner plus indépendamment dans les limites définies

29 

30<Warning>

31 Un sandboxing efficace nécessite **à la fois** l'isolation du système de fichiers et du réseau. Sans isolation réseau, un agent compromis pourrait exfiltrer des fichiers sensibles comme les clés SSH. Sans isolation du système de fichiers, un agent compromis pourrait installer une porte dérobée sur les ressources système pour accéder au réseau. Lors de la configuration du sandboxing, il est important de s'assurer que vos paramètres configurés ne créent pas de contournements dans ces systèmes.

32</Warning>

33 

34## Comment ça marche

35 

36### Isolation du système de fichiers

37 

38L'outil bash en sandbox restreint l'accès au système de fichiers à des répertoires spécifiques :

39 

40* **Comportement d'écriture par défaut** : Accès en lecture et écriture au répertoire de travail actuel et à ses sous-répertoires

41* **Comportement de lecture par défaut** : Accès en lecture à l'ensemble de l'ordinateur, sauf certains répertoires refusés

42* **Accès bloqué** : Impossible de modifier les fichiers en dehors du répertoire de travail actuel sans permission explicite

43* **Configurable** : Définissez des chemins autorisés et refusés personnalisés via les paramètres

44 

45Vous pouvez accorder l'accès en écriture à des chemins supplémentaires en utilisant `sandbox.filesystem.allowWrite` dans vos paramètres. Ces restrictions sont appliquées au niveau du système d'exploitation (Seatbelt sur macOS, bubblewrap sur Linux), elles s'appliquent donc à toutes les commandes de sous-processus, y compris les outils comme `kubectl`, `terraform` et `npm`, pas seulement aux outils de fichiers de Claude.

46 

47### Isolation réseau

48 

49L'accès réseau est contrôlé via un serveur proxy s'exécutant en dehors du sandbox :

50 

51* **Restrictions de domaine** : Seuls les domaines approuvés peuvent être accédés

52* **Confirmation de l'utilisateur** : Les nouvelles demandes de domaine déclenchent des demandes de permission (sauf si [`allowManagedDomainsOnly`](/fr/settings#sandbox-settings) est activé, ce qui bloque automatiquement les domaines non autorisés)

53* **Support de proxy personnalisé** : Les utilisateurs avancés peuvent implémenter des règles personnalisées sur le trafic sortant

54* **Couverture complète** : Les restrictions s'appliquent à tous les scripts, programmes et sous-processus générés par les commandes

55 

56### Application au niveau du système d'exploitation

57 

58L'outil bash en sandbox exploite les primitives de sécurité du système d'exploitation :

59 

60* **macOS** : Utilise Seatbelt pour l'application du sandbox

61* **Linux** : Utilise [bubblewrap](https://github.com/containers/bubblewrap) pour l'isolation

62* **WSL2** : Utilise bubblewrap, comme Linux

63 

64WSL1 n'est pas supporté car bubblewrap nécessite des fonctionnalités du noyau uniquement disponibles dans WSL2.

65 

66Ces restrictions au niveau du système d'exploitation garantissent que tous les processus enfants générés par les commandes de Claude Code héritent des mêmes limites de sécurité.

67 

68## Démarrage

69 

70### Prérequis

71 

72Sur **macOS**, le sandboxing fonctionne directement en utilisant le framework Seatbelt intégré.

73 

74Sur **Linux et WSL2**, installez d'abord les packages requis :

75 

76<Tabs>

77 <Tab title="Ubuntu/Debian">

78 ```bash theme={null}

79 sudo apt-get install bubblewrap socat

80 ```

81 </Tab>

82 

83 <Tab title="Fedora">

84 ```bash theme={null}

85 sudo dnf install bubblewrap socat

86 ```

87 </Tab>

88</Tabs>

89 

90WSL1 ne supporte pas le sandboxing car il manque les primitives d'espace de noms Linux requises. Si vous voyez `Sandboxing requires WSL2`, mettez à niveau votre distribution vers WSL2 ou exécutez Claude Code sans sandboxing.

91 

92Sur WSL2, les commandes sandboxées ne peuvent pas lancer les binaires Windows tels que `cmd.exe`, `powershell.exe`, ou quoi que ce soit sous `/mnt/c/`. WSL les transmet à l'hôte Windows via un socket Unix, que le sandbox bloque. Si une commande doit invoquer un binaire Windows, ajoutez-le à [`excludedCommands`](/fr/settings#sandbox-settings) pour qu'il s'exécute en dehors du sandbox.

93 

94### Activer le sandboxing

95 

96Vous pouvez activer le sandboxing en exécutant la commande `/sandbox` :

97 

98```text theme={null}

99/sandbox

100```

101 

102Cela ouvre un menu où vous pouvez choisir entre les modes de sandbox. Si les dépendances requises sont manquantes (comme `bubblewrap` ou `socat` sur Linux), le menu affiche les instructions d'installation pour votre plateforme.

103 

104Par défaut, si le sandbox ne peut pas démarrer (dépendances manquantes ou plateforme non supportée), Claude Code affiche un avertissement et exécute les commandes sans sandboxing. Pour en faire un échec dur à la place, définissez [`sandbox.failIfUnavailable`](/fr/settings#sandbox-settings) sur `true`. Ceci est destiné aux déploiements gérés qui nécessitent le sandboxing comme porte de sécurité.

105 

106### Modes de sandbox

107 

108Claude Code offre deux modes de sandbox :

109 

110**Mode auto-allow** : Les commandes Bash tenteront de s'exécuter dans le sandbox et sont automatiquement autorisées sans nécessiter de permission. Les commandes qui ne peuvent pas être sandboxées (comme celles nécessitant un accès réseau à des hôtes non autorisés) reviennent au flux de permission régulier. Les règles de refus explicites sont toujours respectées, et les commandes `rm` ou `rmdir` qui ciblent `/`, votre répertoire personnel ou d'autres chemins système critiques déclenchent toujours une invite de permission. Les règles Ask s'appliquent uniquement aux commandes qui reviennent au flux de permission régulier.

111 

112**Mode permissions régulières** : Toutes les commandes bash passent par le flux de permission standard, même lorsqu'elles sont sandboxées. Cela offre plus de contrôle mais nécessite plus d'approbations.

113 

114Dans les deux modes, le sandbox applique les mêmes restrictions de système de fichiers et de réseau. La différence réside uniquement dans le fait que les commandes sandboxées sont auto-approuvées ou nécessitent une permission explicite.

115 

116<Info>

117 Le mode auto-allow fonctionne indépendamment de votre paramètre de mode de permission. Même si vous n'êtes pas en mode « accepter les modifications », les commandes bash sandboxées s'exécuteront automatiquement lorsque l'auto-allow est activé. Cela signifie que les commandes bash qui modifient les fichiers dans les limites du sandbox s'exécuteront sans invite, même lorsque les outils de modification de fichiers nécessiteraient normalement une approbation.

118</Info>

119 

120### Configurer le sandboxing

121 

122Personnalisez le comportement du sandbox via votre fichier `settings.json`. Consultez [Paramètres](/fr/settings#sandbox-settings) pour la référence de configuration complète.

123 

124#### Accorder l'accès en écriture des sous-processus à des chemins spécifiques

125 

126Par défaut, les commandes sandboxées ne peuvent écrire que dans le répertoire de travail actuel. Si les commandes de sous-processus comme `kubectl`, `terraform` ou `npm` doivent écrire en dehors du répertoire du projet, utilisez `sandbox.filesystem.allowWrite` pour accorder l'accès à des chemins spécifiques :

127 

128```json theme={null}

129{

130 "sandbox": {

131 "enabled": true,

132 "filesystem": {

133 "allowWrite": ["~/.kube", "/tmp/build"]

134 }

135 }

136}

137```

138 

139Ces chemins sont appliqués au niveau du système d'exploitation, donc toutes les commandes s'exécutant dans le sandbox, y compris leurs processus enfants, les respectent. C'est l'approche recommandée lorsqu'un outil a besoin d'un accès en écriture à un emplacement spécifique, plutôt que d'exclure complètement l'outil du sandbox avec `excludedCommands`.

140 

141Lorsque `allowWrite` (ou `denyWrite`/`denyRead`/`allowRead`) est défini dans plusieurs [portées de paramètres](/fr/settings#settings-precedence), les tableaux sont **fusionnés**, ce qui signifie que les chemins de chaque portée sont combinés, non remplacés. Par exemple, si les paramètres gérés autorisent les écritures à `/opt/company-tools` et qu'un utilisateur ajoute `~/.kube` dans ses paramètres personnels, les deux chemins sont inclus dans la configuration finale du sandbox. Cela signifie que les utilisateurs et les projets peuvent étendre la liste sans dupliquer ou remplacer les chemins définis par les portées de priorité plus élevée.

142 

143Les préfixes de chemin contrôlent la façon dont les chemins sont résolus :

144 

145| Préfixe | Signification | Exemple |

146| :--------------------- | :------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------------- |

147| `/` | Chemin absolu à partir de la racine du système de fichiers | `/tmp/build` reste `/tmp/build` |

148| `~/` | Relatif au répertoire personnel | `~/.kube` devient `$HOME/.kube` |

149| `./` ou pas de préfixe | Relatif à la racine du projet pour les paramètres du projet, ou à `~/.claude` pour les paramètres utilisateur | `./output` dans `.claude/settings.json` se résout en `<project-root>/output` |

150 

151Le préfixe plus ancien `//path` pour les chemins absolus fonctionne toujours. Si vous aviez précédemment utilisé un seul slash `/path` en s'attendant à une résolution relative au projet, passez à `./path`. Cette syntaxe diffère des [règles de permission Read et Edit](/fr/permissions#read-and-edit), qui utilisent `//path` pour absolu et `/path` pour relatif au projet. Les chemins du système de fichiers du sandbox utilisent les conventions standard : `/tmp/build` est un chemin absolu.

152 

153Vous pouvez également refuser l'accès en écriture ou en lecture en utilisant `sandbox.filesystem.denyWrite` et `sandbox.filesystem.denyRead`. Ceux-ci sont fusionnés avec tous les chemins des règles de permission `Edit(...)` et `Read(...)`. Pour réautoriser la lecture de chemins spécifiques dans une région refusée, utilisez `sandbox.filesystem.allowRead`, qui a priorité sur `denyRead`. Lorsque `allowManagedReadPathsOnly` est activé dans les paramètres gérés, seules les entrées `allowRead` gérées sont respectées ; les entrées `allowRead` utilisateur, projet et local sont ignorées. `denyRead` est toujours fusionné à partir de toutes les sources.

154 

155Par exemple, pour bloquer la lecture de l'ensemble du répertoire personnel tout en autorisant les lectures du projet actuel, ajoutez ceci au `.claude/settings.json` de votre projet :

156 

157```json theme={null}

158{

159 "sandbox": {

160 "enabled": true,

161 "filesystem": {

162 "denyRead": ["~/"],

163 "allowRead": ["."]

164 }

165 }

166}

167```

168 

169Le `.` dans `allowRead` se résout à la racine du projet car cette configuration se trouve dans les paramètres du projet. Si vous aviez placé la même configuration dans `~/.claude/settings.json`, `.` se résoudrait à `~/.claude` à la place, et les fichiers du projet resteraient bloqués par la règle `denyRead`.

170 

171<Tip>

172 Toutes les commandes ne sont pas compatibles avec le sandboxing directement. Quelques notes qui peuvent vous aider à tirer le meilleur parti du sandbox :

173 

174 * De nombreux outils CLI nécessitent d'accéder à certains hôtes. Au fur et à mesure que vous utilisez ces outils, ils demanderont la permission d'accéder à certains hôtes. Accorder la permission leur permettra d'accéder à ces hôtes maintenant et à l'avenir, leur permettant de s'exécuter en toute sécurité dans le sandbox.

175 * `watchman` est incompatible avec l'exécution dans le sandbox. Si vous exécutez `jest`, envisagez d'utiliser `jest --no-watchman`

176 * `docker` est incompatible avec l'exécution dans le sandbox. Envisagez de spécifier `docker *` dans `excludedCommands` pour le forcer à s'exécuter en dehors du sandbox.

177</Tip>

178 

179<Note>

180 Claude Code inclut un mécanisme d'échappatoire intentionnel qui permet aux commandes de s'exécuter en dehors du sandbox si nécessaire. Lorsqu'une commande échoue en raison des restrictions du sandbox (comme les problèmes de connectivité réseau ou les outils incompatibles), Claude est invité à analyser l'échec et peut réessayer la commande avec le paramètre `dangerouslyDisableSandbox`. Les commandes qui utilisent ce paramètre passent par le flux de permissions normal de Claude Code nécessitant une permission de l'utilisateur pour s'exécuter. Cela permet à Claude Code de gérer les cas limites où certains outils ou opérations réseau ne peuvent pas fonctionner dans les contraintes du sandbox.

181 

182 Vous pouvez désactiver cet échappatoire en définissant `"allowUnsandboxedCommands": false` dans vos [paramètres de sandbox](/fr/settings#sandbox-settings). Lorsqu'il est désactivé, le paramètre `dangerouslyDisableSandbox` est complètement ignoré et toutes les commandes doivent s'exécuter sandboxées ou être explicitement listées dans `excludedCommands`.

183</Note>

184 

185## Avantages de sécurité

186 

187### Protection contre l'injection de prompt

188 

189Même si un attaquant manipule avec succès le comportement de Claude Code par injection de prompt, le sandbox garantit que votre système reste sécurisé :

190 

191**Protection du système de fichiers :**

192 

193* Impossible de modifier les fichiers de configuration critiques tels que `~/.bashrc`

194* Impossible de modifier les fichiers au niveau du système dans `/bin/`

195* Impossible de lire les fichiers qui sont refusés dans vos [paramètres de permission Claude](/fr/permissions#manage-permissions)

196 

197**Protection réseau :**

198 

199* Impossible d'exfiltrer les données vers des serveurs contrôlés par l'attaquant

200* Impossible de télécharger des scripts malveillants à partir de domaines non autorisés

201* Impossible de faire des appels API inattendus vers des services non approuvés

202* Impossible de contacter des domaines non explicitement autorisés

203 

204**Surveillance et contrôle :**

205 

206* Toutes les tentatives d'accès en dehors du sandbox sont bloquées au niveau du système d'exploitation

207* Vous recevez des notifications immédiates lorsque les limites sont testées

208* Vous pouvez choisir de refuser, d'autoriser une fois ou de mettre à jour définitivement votre configuration

209 

210### Surface d'attaque réduite

211 

212Le sandboxing limite les dommages potentiels causés par :

213 

214* **Dépendances malveillantes** : Packages NPM ou autres dépendances avec du code nuisible

215* **Scripts compromis** : Scripts de construction ou outils avec des vulnérabilités de sécurité

216* **Ingénierie sociale** : Attaques qui trompent les utilisateurs pour qu'ils exécutent des commandes dangereuses

217* **Injection de prompt** : Attaques qui trompent Claude pour qu'il exécute des commandes dangereuses

218 

219### Fonctionnement transparent

220 

221Lorsque Claude Code tente d'accéder à des ressources réseau en dehors du sandbox :

222 

2231. L'opération est bloquée au niveau du système d'exploitation

2242. Vous recevez une notification immédiate

2253. Vous pouvez choisir de :

226 * Refuser la demande

227 * L'autoriser une fois

228 * Mettre à jour votre configuration de sandbox pour l'autoriser définitivement

229 

230## Limitations de sécurité

231 

232* Limitations du sandboxing réseau : Le système de filtrage réseau fonctionne en restreignant les domaines auxquels les processus sont autorisés à se connecter. Il n'inspecte pas autrement le trafic passant par le proxy et les utilisateurs sont responsables de s'assurer qu'ils n'autorisent que les domaines de confiance dans leur politique.

233 

234<Warning>

235 Les utilisateurs doivent être conscients des risques potentiels liés à l'autorisation de domaines larges comme `github.com` qui peuvent permettre l'exfiltration de données. De plus, dans certains cas, il peut être possible de contourner le filtrage réseau via [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting).

236</Warning>

237 

238* Escalade de privilèges via les sockets Unix : La configuration `allowUnixSockets` peut accorder involontairement l'accès à des services système puissants qui pourraient entraîner des contournements du sandbox. Par exemple, si elle est utilisée pour autoriser l'accès à `/var/run/docker.sock`, cela accorderait effectivement l'accès au système hôte en exploitant le socket docker. Les utilisateurs sont encouragés à examiner attentivement tous les sockets Unix qu'ils autorisent via le sandbox.

239* Escalade de permissions du système de fichiers : Les permissions d'écriture du système de fichiers trop larges peuvent permettre des attaques d'escalade de privilèges. Autoriser les écritures dans les répertoires contenant des exécutables dans `$PATH`, les répertoires de configuration système ou les fichiers de configuration du shell utilisateur (`.bashrc`, `.zshrc`) peut entraîner l'exécution de code dans différents contextes de sécurité lorsque d'autres utilisateurs ou processus système accèdent à ces fichiers.

240* Force du sandbox Linux : L'implémentation Linux fournit une isolation forte du système de fichiers et du réseau mais inclut un mode `enableWeakerNestedSandbox` qui lui permet de fonctionner à l'intérieur des environnements Docker sans espaces de noms privilégiés. Cette option affaiblit considérablement la sécurité et ne doit être utilisée que dans les cas où une isolation supplémentaire est autrement appliquée.

241 

242## Comment le sandboxing se rapporte aux permissions

243 

244Le sandboxing et les [permissions](/fr/permissions) sont des couches de sécurité complémentaires qui fonctionnent ensemble :

245 

246* **Les permissions** contrôlent quels outils Claude Code peut utiliser et sont évaluées avant l'exécution de tout outil. Elles s'appliquent à tous les outils : Bash, Read, Edit, WebFetch, MCP et autres.

247* **Le sandboxing** fournit une application au niveau du système d'exploitation qui restreint ce que les commandes Bash peuvent accéder au niveau du système de fichiers et du réseau. Il s'applique uniquement aux commandes Bash et à leurs processus enfants.

248 

249Les restrictions du système de fichiers et du réseau sont configurées via les paramètres de sandbox et les règles de permission :

250 

251* Utilisez `sandbox.filesystem.allowWrite` pour accorder l'accès en écriture des sous-processus à des chemins en dehors du répertoire de travail

252* Utilisez `sandbox.filesystem.denyWrite` et `sandbox.filesystem.denyRead` pour bloquer l'accès des sous-processus à des chemins spécifiques

253* Utilisez `sandbox.filesystem.allowRead` pour réautoriser la lecture de chemins spécifiques dans une région refusée

254* Utilisez les règles de refus `Read` et `Edit` pour bloquer l'accès à des fichiers ou répertoires spécifiques

255* Utilisez les règles d'autorisation/refus `WebFetch` pour contrôler l'accès au domaine

256* Utilisez les `allowedDomains` du sandbox pour contrôler quels domaines les commandes Bash peuvent atteindre

257* Utilisez les `deniedDomains` du sandbox pour bloquer des domaines spécifiques même lorsqu'un wildcard `allowedDomains` plus large les autoriserait autrement

258 

259Les chemins des paramètres `sandbox.filesystem` et des règles de permission sont fusionnés dans la configuration finale du sandbox.

260 

261Ce [référentiel](https://github.com/anthropics/claude-code/tree/main/examples/settings) inclut des configurations de paramètres de démarrage pour les scénarios de déploiement courants, y compris des exemples spécifiques au sandbox. Utilisez-les comme points de départ et ajustez-les selon vos besoins.

262 

263## Utilisation avancée

264 

265### Configuration de proxy personnalisée

266 

267Pour les organisations nécessitant une sécurité réseau avancée, vous pouvez implémenter un proxy personnalisé pour :

268 

269* Déchiffrer et inspecter le trafic HTTPS

270* Appliquer des règles de filtrage personnalisées

271* Enregistrer toutes les demandes réseau

272* Intégrer avec l'infrastructure de sécurité existante

273 

274```json theme={null}

275{

276 "sandbox": {

277 "network": {

278 "httpProxyPort": 8080,

279 "socksProxyPort": 8081

280 }

281 }

282}

283```

284 

285### Intégration avec les outils de sécurité existants

286 

287L'outil bash en sandbox fonctionne aux côtés de :

288 

289* **Règles de permission** : Combinez avec les [paramètres de permission](/fr/permissions) pour une défense en profondeur

290* **Conteneurs de développement** : Utilisez avec [devcontainers](/fr/devcontainer) pour une isolation supplémentaire

291* **Politiques d'entreprise** : Appliquez les configurations de sandbox via les [paramètres gérés](/fr/settings#settings-precedence)

292 

293## Meilleures pratiques

294 

2951. **Commencez restrictif** : Commencez avec des permissions minimales et développez selon les besoins

2962. **Surveillez les journaux** : Examinez les tentatives de violation du sandbox pour comprendre les besoins de Claude Code

2973. **Utilisez des configurations spécifiques à l'environnement** : Différentes règles de sandbox pour les contextes de développement par rapport à la production

2984. **Combinez avec les permissions** : Utilisez le sandboxing aux côtés des politiques IAM pour une sécurité complète

2995. **Testez les configurations** : Vérifiez que vos paramètres de sandbox ne bloquent pas les flux de travail légitimes

300 

301## Open source

302 

303Le runtime du sandbox est disponible en tant que package npm open source pour une utilisation dans vos propres projets d'agent. Cela permet à la communauté plus large des agents IA de construire des systèmes autonomes plus sûrs et plus sécurisés. Cela peut également être utilisé pour sandboxer d'autres programmes que vous souhaitez exécuter. Par exemple, pour sandboxer un serveur MCP, vous pouvez exécuter :

304 

305```bash theme={null}

306npx @anthropic-ai/sandbox-runtime <command-to-sandbox>

307```

308 

309Pour les détails d'implémentation et le code source, visitez le [référentiel GitHub](https://github.com/anthropic-experimental/sandbox-runtime).

310 

311## Limitations

312 

313* **Surcharge de performance** : Minimale, mais certaines opérations du système de fichiers peuvent être légèrement plus lentes

314* **Compatibilité** : Certains outils qui nécessitent des modèles d'accès système spécifiques peuvent nécessiter des ajustements de configuration, ou même devront être exécutés en dehors du sandbox

315* **Support de plateforme** : Supporte macOS, Linux et WSL2. WSL1 n'est pas supporté. Le support natif de Windows est prévu.

316 

317## Ce que le sandboxing ne couvre pas

318 

319Le sandbox isole les sous-processus Bash. Les autres outils fonctionnent sous des limites différentes :

320 

321* **Outils de fichiers intégrés** : Read, Edit et Write utilisent le système de permissions directement plutôt que de s'exécuter via le sandbox. Consultez [permissions](/fr/permissions).

322* **Utilisation de l'ordinateur** : Lorsque Claude ouvre des applications et contrôle votre écran, il s'exécute sur votre bureau réel plutôt que dans un environnement isolé. Les invites de permission par application contrôlent chaque application. Consultez [utilisation de l'ordinateur dans la CLI](/fr/computer-use) ou [utilisation de l'ordinateur dans Desktop](/fr/desktop#let-claude-use-your-computer).

323 

324## Voir aussi

325 

326* [Sécurité](/fr/security) - Fonctionnalités de sécurité complètes et meilleures pratiques

327* [Permissions](/fr/permissions) - Configuration des permissions et contrôle d'accès

328* [Paramètres](/fr/settings) - Référence de configuration complète

329* [Référence CLI](/fr/cli-reference) - Options de ligne de commande

scheduled-tasks.md +213 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Exécuter des prompts selon un calendrier

6 

7> Utilisez /loop et les outils de planification cron pour exécuter des prompts de manière répétée, interroger l'état ou définir des rappels ponctuels dans une session Claude Code.

8 

9<Note>

10 Les tâches planifiées nécessitent Claude Code v2.1.72 ou version ultérieure. Vérifiez votre version avec `claude --version`.

11</Note>

12 

13Les tâches planifiées permettent à Claude de réexécuter automatiquement un prompt à intervalles réguliers. Utilisez-les pour interroger un déploiement, surveiller une PR, vérifier une compilation longue ou vous rappeler de faire quelque chose plus tard dans la session. Pour réagir aux événements au fur et à mesure qu'ils se produisent au lieu d'interroger, consultez [Channels](/fr/channels) : votre CI peut pousser l'échec directement dans la session.

14 

15Les tâches sont limitées à la session : elles vivent dans la conversation actuelle et s'arrêtent quand vous en commencez une nouvelle. La reprise avec `--resume` ou `--continue` ramène toute tâche qui n'a pas [expiré](#seven-day-expiry) : une tâche récurrente créée au cours des 7 derniers jours, ou une tâche ponctuelle dont l'heure planifiée n'a pas encore passé. Pour une planification qui survit indépendamment de toute session, utilisez [Routines](/fr/routines), [Tâches planifiées sur le bureau](/fr/desktop-scheduled-tasks) ou [GitHub Actions](/fr/github-actions).

16 

17## Comparer les options de planification

18 

19Claude Code offers three ways to schedule recurring or one-off work:

20 

21| | [Cloud](/en/routines) | [Desktop](/en/desktop-scheduled-tasks) | [`/loop`](/en/scheduled-tasks) |

22| :------------------------- | :----------------------------- | :------------------------------------- | :---------------------------------- |

23| Runs on | Anthropic cloud | Your machine | Your machine |

24| Requires machine on | No | Yes | Yes |

25| Requires open session | No | No | Yes |

26| Persistent across restarts | Yes | Yes | Restored on `--resume` if unexpired |

27| Access to local files | No (fresh clone) | Yes | Yes |

28| MCP servers | Connectors configured per task | [Config files](/en/mcp) and connectors | Inherits from session |

29| Permission prompts | No (runs autonomously) | Configurable per task | Inherits from session |

30| Customizable schedule | Via `/schedule` in the CLI | Yes | Yes |

31| Minimum interval | 1 hour | 1 minute | 1 minute |

32 

33<Tip>

34 Use **cloud tasks** for work that should run reliably without your machine. Use **Desktop tasks** when you need access to local files and tools. Use **`/loop`** for quick polling during a session.

35</Tip>

36 

37## Exécuter un prompt de manière répétée avec /loop

38 

39La [compétence groupée](/fr/commands) `/loop` est le moyen le plus rapide d'exécuter un prompt de manière répétée pendant que la session reste ouverte. L'intervalle et le prompt sont tous deux optionnels, et ce que vous fournissez détermine le comportement de la boucle.

40 

41| Ce que vous fournissez | Exemple | Ce qui se passe |

42| :----------------------------- | :-------------------------- | :----------------------------------------------------------------------------------------------------------------------- |

43| Intervalle et prompt | `/loop 5m check the deploy` | Votre prompt s'exécute selon un [calendrier fixe](#run-on-a-fixed-interval) |

44| Prompt uniquement | `/loop check the deploy` | Votre prompt s'exécute à un [intervalle choisi par Claude](#let-claude-choose-the-interval) à chaque itération |

45| Intervalle uniquement, ou rien | `/loop` | Le [prompt de maintenance intégré](#run-the-built-in-maintenance-prompt) s'exécute, ou votre `loop.md` s'il en existe un |

46 

47Vous pouvez également passer une autre commande en tant que prompt, par exemple `/loop 20m /review-pr 1234`, pour réexécuter un flux de travail empaqueté à chaque itération.

48 

49### Exécuter selon un intervalle fixe

50 

51Lorsque vous fournissez un intervalle, Claude le convertit en expression cron, planifie la tâche et confirme la cadence et l'ID de la tâche.

52 

53```text theme={null}

54/loop 5m check if the deployment finished and tell me what happened

55```

56 

57L'intervalle peut précéder le prompt en tant que jeton nu comme `30m`, ou le suivre en tant que clause comme `every 2 hours`. Les unités prises en charge sont `s` pour les secondes, `m` pour les minutes, `h` pour les heures et `d` pour les jours.

58 

59Les secondes sont arrondies à la minute la plus proche puisque cron a une granularité d'une minute. Les intervalles qui ne correspondent pas à une étape cron propre, comme `7m` ou `90m`, sont arrondis à l'intervalle le plus proche et Claude vous indique ce qu'il a choisi.

60 

61### Laisser Claude choisir l'intervalle

62 

63Lorsque vous omettez l'intervalle, Claude en choisit un dynamiquement au lieu de s'exécuter selon un calendrier cron fixe. Après chaque itération, il choisit un délai entre une minute et une heure en fonction de ce qu'il a observé : des attentes courtes pendant qu'une compilation se termine ou qu'une PR est active, des attentes plus longues quand rien n'est en attente. Le délai choisi et la raison de ce choix sont imprimés à la fin de chaque itération.

64 

65L'exemple ci-dessous vérifie CI et les commentaires d'examen, Claude attendant plus longtemps entre les itérations une fois que la PR devient silencieuse :

66 

67```text theme={null}

68/loop check whether CI passed and address any review comments

69```

70 

71Lorsque vous demandez un calendrier `/loop` dynamique, Claude peut utiliser l'[outil Monitor](/fr/tools-reference#monitor-tool) directement. Monitor exécute un script en arrière-plan et diffuse chaque ligne de sortie, ce qui évite complètement l'interrogation et est souvent plus efficace en termes de jetons et plus réactif que de réexécuter un prompt à intervalles réguliers.

72 

73Une boucle planifiée dynamiquement apparaît dans votre [liste de tâches planifiées](#manage-scheduled-tasks) comme n'importe quelle autre tâche, vous pouvez donc la lister ou l'annuler de la même manière. Les [règles de gigue](#jitter) ne s'appliquent pas à elle, mais l'[expiration de sept jours](#seven-day-expiry) s'applique : la boucle se termine automatiquement sept jours après son démarrage.

74 

75<Note>

76 Sur Bedrock, Vertex AI et Microsoft Foundry, un prompt sans intervalle s'exécute selon un calendrier fixe de 10 minutes à la place.

77</Note>

78 

79### Exécuter le prompt de maintenance intégré

80 

81Lorsque vous omettez le prompt, Claude utilise un prompt de maintenance intégré au lieu d'un que vous fournissez. À chaque itération, il travaille sur les éléments suivants, dans l'ordre :

82 

83* continuer tout travail inachevé de la conversation

84* s'occuper de la demande de fusion de la branche actuelle : examiner les commentaires, les exécutions CI échouées, les conflits de fusion

85* exécuter des passes de nettoyage telles que la chasse aux bogues ou la simplification quand rien d'autre n'est en attente

86 

87Claude ne lance pas de nouvelles initiatives en dehors de cette portée, et les actions irréversibles telles que pousser ou supprimer ne procèdent que lorsqu'elles continuent quelque chose que la transcription a déjà autorisé.

88 

89```text theme={null}

90/loop

91```

92 

93Un `/loop` nu exécute ce prompt à un [intervalle choisi dynamiquement](#let-claude-choose-the-interval). Ajoutez un intervalle, par exemple `/loop 15m`, pour l'exécuter selon un calendrier fixe à la place. Pour remplacer le prompt intégré par le vôtre, consultez [Personnaliser le prompt par défaut avec loop.md](#customize-the-default-prompt-with-loop-md).

94 

95<Note>

96 Sur Bedrock, Vertex AI et Microsoft Foundry, `/loop` sans prompt imprime le message d'utilisation au lieu de démarrer la boucle de maintenance.

97</Note>

98 

99### Personnaliser le prompt par défaut avec loop.md

100 

101Un fichier `loop.md` remplace le prompt de maintenance intégré par vos propres instructions. Il définit un seul prompt par défaut pour un `/loop` nu, pas une liste de tâches planifiées séparées, et est ignoré chaque fois que vous fournissez un prompt sur la ligne de commande. Pour planifier des prompts supplémentaires à côté de celui-ci, utilisez `/loop <prompt>` ou [demandez directement à Claude](#manage-scheduled-tasks).

102 

103Claude recherche le fichier dans deux emplacements et utilise le premier qu'il trouve.

104 

105| Chemin | Portée |

106| :------------------ | :---------------------------------------------------------------------------------- |

107| `.claude/loop.md` | Au niveau du projet. Prend la priorité quand les deux fichiers existent. |

108| `~/.claude/loop.md` | Au niveau de l'utilisateur. S'applique dans tout projet qui ne définit pas le sien. |

109 

110Le fichier est du Markdown simple sans structure requise. Écrivez-le comme si vous tapiez le prompt `/loop` directement. L'exemple suivant maintient une branche de version saine :

111 

112```markdown title=".claude/loop.md" theme={null}

113Check the `release/next` PR. If CI is red, pull the failing job log,

114diagnose, and push a minimal fix. If new review comments have arrived,

115address each one and resolve the thread. If everything is green and

116quiet, say so in one line.

117```

118 

119Les modifications apportées à `loop.md` prennent effet à la prochaine itération, vous pouvez donc affiner les instructions pendant qu'une boucle s'exécute. Quand aucun `loop.md` n'existe dans l'un ou l'autre emplacement, la boucle revient au prompt de maintenance intégré. Gardez le fichier concis : le contenu au-delà de 25 000 octets est tronqué.

120 

121### Arrêter une boucle

122 

123Pour arrêter un `/loop` pendant qu'il attend la prochaine itération, appuyez sur `Esc`. Cela efface le réveil en attente afin que la boucle ne se déclenche pas à nouveau. Les tâches que vous avez planifiées en [demandant directement à Claude](#manage-scheduled-tasks) ne sont pas affectées par `Esc` et restent en place jusqu'à ce que vous les supprimiez.

124 

125## Définir un rappel ponctuel

126 

127Pour les rappels ponctuels, décrivez ce que vous voulez en langage naturel au lieu d'utiliser `/loop`. Claude planifie une tâche à usage unique qui se supprime après son exécution.

128 

129```text theme={null}

130remind me at 3pm to push the release branch

131```

132 

133```text theme={null}

134in 45 minutes, check whether the integration tests passed

135```

136 

137Claude épingle l'heure d'exécution à une minute et une heure spécifiques en utilisant une expression cron et confirme quand elle s'exécutera.

138 

139## Gérer les tâches planifiées

140 

141Demandez à Claude en langage naturel de lister ou d'annuler les tâches, ou référencez directement les outils sous-jacents.

142 

143```text theme={null}

144what scheduled tasks do I have?

145```

146 

147```text theme={null}

148cancel the deploy check job

149```

150 

151Sous le capot, Claude utilise ces outils :

152 

153| Outil | Objectif |

154| :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------ |

155| `CronCreate` | Planifier une nouvelle tâche. Accepte une expression cron à 5 champs, le prompt à exécuter et si elle est récurrente ou s'exécute une seule fois. |

156| `CronList` | Lister toutes les tâches planifiées avec leurs ID, leurs calendriers et leurs prompts. |

157| `CronDelete` | Annuler une tâche par ID. |

158 

159Chaque tâche planifiée a un ID de 8 caractères que vous pouvez passer à `CronDelete`. Une session peut contenir jusqu'à 50 tâches planifiées à la fois.

160 

161## Comment les tâches planifiées s'exécutent

162 

163Le planificateur vérifie chaque seconde les tâches dues et les met en file d'attente à faible priorité. Un prompt planifié s'exécute entre vos tours, pas pendant que Claude répond. Si Claude est occupé quand une tâche arrive à échéance, le prompt attend la fin du tour actuel.

164 

165Tous les horaires sont interprétés dans votre fuseau horaire local. Une expression cron comme `0 9 * * *` signifie 9h là où vous exécutez Claude Code, pas UTC.

166 

167### Gigue

168 

169Pour éviter que chaque session ne frappe l'API au même moment mural, le planificateur ajoute un petit décalage déterministe aux heures d'exécution :

170 

171* Les tâches récurrentes s'exécutent jusqu'à 10 % de leur période en retard, plafonnées à 15 minutes. Une tâche horaire peut s'exécuter n'importe où de `:00` à `:06`.

172* Les tâches ponctuelles planifiées pour le haut ou le bas de l'heure s'exécutent jusqu'à 90 secondes plus tôt.

173 

174Le décalage est dérivé de l'ID de la tâche, donc la même tâche obtient toujours le même décalage. Si le timing exact est important, choisissez une minute qui n'est pas `:00` ou `:30`, par exemple `3 9 * * *` au lieu de `0 9 * * *`, et la gigue ponctuelle ne s'appliquera pas.

175 

176### Expiration de sept jours

177 

178Les tâches récurrentes expirent automatiquement 7 jours après leur création. La tâche s'exécute une dernière fois, puis se supprime. Cela limite la durée pendant laquelle une boucle oubliée peut s'exécuter. Si vous avez besoin qu'une tâche récurrente dure plus longtemps, annulez et recréez-la avant son expiration, ou utilisez [Routines](/fr/routines) ou [Tâches planifiées sur le bureau](/fr/desktop-scheduled-tasks) pour une planification durable.

179 

180## Référence d'expression cron

181 

182`CronCreate` accepte les expressions cron standard à 5 champs : `minute heure jour-du-mois mois jour-de-la-semaine`. Tous les champs prennent en charge les caractères génériques (`*`), les valeurs uniques (`5`), les étapes (`*/15`), les plages (`1-5`) et les listes séparées par des virgules (`1,15,30`).

183 

184| Exemple | Signification |

185| :------------- | :------------------------------- |

186| `*/5 * * * *` | Toutes les 5 minutes |

187| `0 * * * *` | Chaque heure à l'heure pile |

188| `7 * * * *` | Chaque heure à 7 minutes passées |

189| `0 9 * * *` | Chaque jour à 9h local |

190| `0 9 * * 1-5` | Jours de semaine à 9h local |

191| `30 14 15 3 *` | 15 mars à 14h30 local |

192 

193Le jour de la semaine utilise `0` ou `7` pour dimanche jusqu'à `6` pour samedi. La syntaxe étendue comme `L`, `W`, `?` et les alias de noms tels que `MON` ou `JAN` ne sont pas pris en charge.

194 

195Lorsque le jour du mois et le jour de la semaine sont tous deux contraints, une date correspond si l'un ou l'autre champ correspond. Cela suit la sémantique standard de vixie-cron.

196 

197## Désactiver les tâches planifiées

198 

199Définissez `CLAUDE_CODE_DISABLE_CRON=1` dans votre environnement pour désactiver complètement le planificateur. Les outils cron et `/loop` deviennent indisponibles, et toutes les tâches déjà planifiées cessent de s'exécuter. Consultez [Variables d'environnement](/fr/env-vars) pour la liste complète des drapeaux de désactivation.

200 

201## Limitations

202 

203La planification limitée à la session a des contraintes inhérentes :

204 

205* Les tâches ne s'exécutent que pendant que Claude Code s'exécute et est inactif. Fermer le terminal ou laisser la session se terminer arrête leur exécution.

206* Pas de rattrapage pour les exécutions manquées. Si l'heure planifiée d'une tâche passe pendant que Claude est occupé par une demande longue, elle s'exécute une fois quand Claude devient inactif, pas une fois par intervalle manqué.

207* Démarrer une nouvelle conversation efface toutes les tâches limitées à la session. La reprise avec `claude --resume` ou `claude --continue` restaure les tâches qui n'ont pas expiré : les tâches récurrentes dans les sept jours suivant leur création, et les tâches ponctuelles dont l'heure planifiée n'a pas encore passé. Les tâches Bash en arrière-plan et les tâches de surveillance ne sont jamais restaurées à la reprise.

208 

209Pour l'automatisation pilotée par cron qui doit s'exécuter sans surveillance :

210 

211* [Routines](/fr/routines) : s'exécutent sur l'infrastructure gérée par Anthropic selon un calendrier, via un appel API ou sur des événements GitHub

212* [GitHub Actions](/fr/github-actions) : utilisez un déclencheur `schedule` dans CI

213* [Tâches planifiées sur le bureau](/fr/desktop-scheduled-tasks) : s'exécutent localement sur votre machine

security.md +143 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Sécurité

6 

7> Découvrez les protections de sécurité de Claude Code et les meilleures pratiques pour une utilisation sûre.

8 

9## Comment nous abordons la sécurité

10 

11### Fondation de sécurité

12 

13La sécurité de votre code est primordiale. Claude Code est construit avec la sécurité au cœur, développé selon le programme de sécurité complet d'Anthropic. En savoir plus et accéder aux ressources (rapport SOC 2 Type 2, certificat ISO 27001, etc.) sur le [Centre de confiance Anthropic](https://trust.anthropic.com).

14 

15### Architecture basée sur les permissions

16 

17Claude Code utilise des permissions strictes en lecture seule par défaut. Lorsque des actions supplémentaires sont nécessaires (édition de fichiers, exécution de tests, exécution de commandes), Claude Code demande une permission explicite. Les utilisateurs contrôlent s'il faut approuver les actions une seule fois ou les autoriser automatiquement.

18 

19Nous avons conçu Claude Code pour être transparent et sécurisé. Par exemple, nous exigeons une approbation pour les commandes bash avant de les exécuter, vous donnant un contrôle direct. Cette approche permet aux utilisateurs et aux organisations de configurer les permissions directement.

20 

21Pour une configuration détaillée des permissions, consultez [Permissions](/fr/permissions).

22 

23### Protections intégrées

24 

25Pour atténuer les risques dans les systèmes agentiques :

26 

27* **Outil bash en sandbox** : [Sandbox](/fr/sandboxing) les commandes bash avec isolation du système de fichiers et du réseau, réduisant les invites de permission tout en maintenant la sécurité. Activez avec `/sandbox` pour définir les limites où Claude Code peut travailler de manière autonome

28* **Restriction d'accès en écriture** : Claude Code ne peut écrire que dans le dossier où il a été démarré et ses sous-dossiers—il ne peut pas modifier les fichiers dans les répertoires parents sans permission explicite. Bien que Claude Code puisse lire les fichiers en dehors du répertoire de travail (utile pour accéder aux bibliothèques système et aux dépendances), les opérations d'écriture sont strictement limitées à la portée du projet, créant une limite de sécurité claire

29* **Atténuation de la fatigue des invites** : Support pour la liste blanche des commandes sûres fréquemment utilisées par utilisateur, par base de code ou par organisation

30* **Mode Accepter les modifications** : Accepter par lot plusieurs modifications tout en maintenant les invites de permission pour les commandes avec effets secondaires

31 

32### Responsabilité de l'utilisateur

33 

34Claude Code n'a que les permissions que vous lui accordez. Vous êtes responsable de l'examen du code et des commandes proposés pour la sécurité avant approbation.

35 

36## Protégez-vous contre l'injection de prompt

37 

38L'injection de prompt est une technique où un attaquant tente de contourner ou de manipuler les instructions d'un assistant IA en insérant du texte malveillant. Claude Code inclut plusieurs protections contre ces attaques :

39 

40### Protections principales

41 

42* **Système de permissions** : Les opérations sensibles nécessitent une approbation explicite

43* **Analyse contextuelle** : Détecte les instructions potentiellement nuisibles en analysant la demande complète

44* **Assainissement des entrées** : Prévient l'injection de commandes en traitant les entrées utilisateur

45* **Liste noire de commandes** : Bloque les commandes risquées qui récupèrent du contenu arbitraire sur le web comme `curl` et `wget` par défaut. Lorsqu'elles sont explicitement autorisées, soyez conscient des [limitations des modèles de permission](/fr/permissions#tool-specific-permission-rules)

46 

47### Protections de la vie privée

48 

49Nous avons mis en place plusieurs protections pour protéger vos données, notamment :

50 

51* Périodes de rétention limitées pour les informations sensibles (consultez le [Centre de confidentialité](https://privacy.anthropic.com/en/articles/10023548-how-long-do-you-store-my-data) pour en savoir plus)

52* Accès restreint aux données de session utilisateur

53* Contrôle utilisateur sur les préférences de formation des données. Les utilisateurs consommateurs peuvent modifier leurs [paramètres de confidentialité](https://claude.ai/settings/privacy) à tout moment.

54 

55Pour plus de détails, veuillez consulter nos [Conditions commerciales](https://www.anthropic.com/legal/commercial-terms) (pour les utilisateurs Team, Enterprise et API) ou [Conditions pour les consommateurs](https://www.anthropic.com/legal/consumer-terms) (pour les utilisateurs Free, Pro et Max) et [Politique de confidentialité](https://www.anthropic.com/legal/privacy).

56 

57### Protections supplémentaires

58 

59* **Approbation des demandes réseau** : Les outils qui effectuent des demandes réseau nécessitent une approbation utilisateur par défaut

60* **Fenêtres de contexte isolées** : Web fetch utilise une fenêtre de contexte séparée pour éviter d'injecter des prompts potentiellement malveillants

61* **Vérification de confiance** : Les premières exécutions de base de code et les nouveaux serveurs MCP nécessitent une vérification de confiance

62 * Remarque : La vérification de confiance est désactivée lors de l'exécution non-interactive avec le drapeau `-p`

63* **Détection d'injection de commande** : Les commandes bash suspectes nécessitent une approbation manuelle même si elles ont été précédemment autorisées

64* **Correspondance en cas d'échec fermé** : Les commandes non appariées par défaut nécessitent une approbation manuelle

65* **Descriptions en langage naturel** : Les commandes bash complexes incluent des explications pour la compréhension de l'utilisateur

66* **Stockage sécurisé des identifiants** : Les clés API et les tokens sont chiffrés. Consultez [Gestion des identifiants](/fr/authentication#credential-management)

67 

68<Warning>

69 **Risque de sécurité WebDAV Windows** : Lors de l'exécution de Claude Code sur Windows, nous recommandons de ne pas activer WebDAV ou de permettre à Claude Code d'accéder à des chemins tels que `\\*` qui peuvent contenir des sous-répertoires WebDAV. [WebDAV a été déprécié par Microsoft](https://learn.microsoft.com/en-us/windows/whats-new/deprecated-features#:~:text=The%20Webclient%20\(WebDAV\)%20service%20is%20deprecated) en raison de risques de sécurité. L'activation de WebDAV peut permettre à Claude Code de déclencher des demandes réseau vers des hôtes distants, contournant le système de permissions.

70</Warning>

71 

72**Meilleures pratiques pour travailler avec du contenu non fiable** :

73 

741. Examinez les commandes suggérées avant approbation

752. Évitez de diriger le contenu non fiable directement vers Claude

763. Vérifiez les modifications proposées aux fichiers critiques

774. Utilisez des machines virtuelles (VM) pour exécuter des scripts et effectuer des appels d'outils, en particulier lors de l'interaction avec des services web externes

785. Signalez les comportements suspects avec `/feedback`

79 

80<Warning>

81 Bien que ces protections réduisent considérablement les risques, aucun système n'est complètement

82 immunisé contre toutes les attaques. Maintenez toujours de bonnes pratiques de sécurité lors du travail

83 avec n'importe quel outil IA.

84</Warning>

85 

86## Sécurité MCP

87 

88Claude Code permet aux utilisateurs de configurer les serveurs Model Context Protocol (MCP). La liste des serveurs MCP autorisés est configurée dans votre code source, dans le cadre des paramètres Claude Code que les ingénieurs enregistrent dans le contrôle de source.

89 

90Nous vous encourageons à écrire vos propres serveurs MCP ou à utiliser des serveurs MCP de fournisseurs en qui vous avez confiance. Vous pouvez configurer les permissions Claude Code pour les serveurs MCP. Anthropic ne gère ni n'audite aucun serveur MCP.

91 

92## Sécurité IDE

93 

94Consultez [Sécurité et confidentialité VS Code](/fr/vs-code#security-and-privacy) pour plus d'informations sur l'exécution de Claude Code dans un IDE.

95 

96## Sécurité de l'exécution cloud

97 

98Lors de l'utilisation de [Claude Code sur le web](/fr/claude-code-on-the-web), des contrôles de sécurité supplémentaires sont en place :

99 

100* **Machines virtuelles isolées** : Chaque session cloud s'exécute dans une VM isolée gérée par Anthropic

101* **Contrôles d'accès réseau** : L'accès réseau est limité par défaut et peut être configuré pour être désactivé ou autoriser uniquement des domaines spécifiques

102* **Protection des identifiants** : L'authentification est gérée via un proxy sécurisé qui utilise un identifiant limité à l'intérieur du sandbox, qui est ensuite traduit en votre jeton d'authentification GitHub réel

103* **Restrictions de branche** : Les opérations de push Git sont limitées à la branche de travail actuelle

104* **Journalisation d'audit** : Toutes les opérations dans les environnements cloud sont enregistrées à des fins de conformité et d'audit

105* **Nettoyage automatique** : Les environnements cloud sont automatiquement terminés après la fin de la session

106 

107Pour plus de détails sur l'exécution cloud, consultez [Claude Code sur le web](/fr/claude-code-on-the-web).

108 

109Les sessions de [Contrôle à distance](/fr/remote-control) fonctionnent différemment : l'interface web se connecte à un processus Claude Code s'exécutant sur votre machine locale. Toute l'exécution du code et l'accès aux fichiers restent locaux, et les mêmes données qui circulent lors de toute session Claude Code locale transitent par l'API Anthropic via TLS. Aucune VM cloud ou sandbox n'est impliquée. La connexion utilise plusieurs identifiants de courte durée et à portée étroite, chacun limité à un objectif spécifique et expirant indépendamment, pour limiter le rayon d'explosion de tout identifiant compromis unique.

110 

111## Meilleures pratiques de sécurité

112 

113### Travail avec du code sensible

114 

115* Examinez toutes les modifications suggérées avant approbation

116* Utilisez les paramètres de permission spécifiques au projet pour les référentiels sensibles

117* Envisagez d'utiliser les [devcontainers](/fr/devcontainer) pour une isolation supplémentaire

118* Auditez régulièrement vos paramètres de permission avec `/permissions`

119 

120### Sécurité d'équipe

121 

122* Utilisez les [paramètres gérés](/fr/settings#settings-files) pour appliquer les normes organisationnelles

123* Partagez les configurations de permission approuvées via le contrôle de source

124* Formez les membres de l'équipe aux meilleures pratiques de sécurité

125* Surveillez l'utilisation de Claude Code via les [métriques OpenTelemetry](/fr/monitoring-usage)

126* Auditez ou bloquez les modifications de paramètres pendant les sessions avec les [hooks `ConfigChange`](/fr/hooks#configchange)

127 

128### Signalement des problèmes de sécurité

129 

130Si vous découvrez une vulnérabilité de sécurité dans Claude Code :

131 

1321. Ne la divulguez pas publiquement

1332. Signalez-la via notre [programme HackerOne](https://hackerone.com/4f1f16ba-10d3-4d09-9ecc-c721aad90f24/embedded_submissions/new)

1343. Incluez les étapes de reproduction détaillées

1354. Accordez-nous du temps pour résoudre le problème avant la divulgation publique

136 

137## Ressources connexes

138 

139* [Sandboxing](/fr/sandboxing) - Isolation du système de fichiers et du réseau pour les commandes bash

140* [Permissions](/fr/permissions) - Configurer les permissions et les contrôles d'accès

141* [Surveillance de l'utilisation](/fr/monitoring-usage) - Suivre et auditer l'activité Claude Code

142* [Conteneurs de développement](/fr/devcontainer) - Environnements sécurisés et isolés

143* [Centre de confiance Anthropic](https://trust.anthropic.com) - Certifications de sécurité et conformité

server-managed-settings.md +224 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Configurer les paramètres gérés par le serveur

6 

7> Configurez centralement Claude Code pour votre organisation via des paramètres livrés par le serveur, sans nécessiter d'infrastructure de gestion des appareils.

8 

9Les paramètres gérés par le serveur permettent aux administrateurs de configurer centralement Claude Code via une interface web sur Claude.ai. Les clients Claude Code reçoivent automatiquement ces paramètres lorsque les utilisateurs s'authentifient avec leurs identifiants d'organisation.

10 

11Cette approche est conçue pour les organisations qui n'ont pas d'infrastructure de gestion des appareils en place, ou qui ont besoin de gérer les paramètres pour les utilisateurs sur des appareils non gérés.

12 

13<Note>

14 Les paramètres gérés par le serveur sont disponibles pour les clients [Claude for Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=server_settings_teams#team-&-enterprise) et [Claude for Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=server_settings_enterprise).

15</Note>

16 

17## Conditions requises

18 

19Pour utiliser les paramètres gérés par le serveur, vous avez besoin de :

20 

21* Un plan Claude for Teams ou Claude for Enterprise

22* Claude Code version 2.1.38 ou ultérieure pour Claude for Teams, ou version 2.1.30 ou ultérieure pour Claude for Enterprise

23* Un accès réseau à `api.anthropic.com`

24 

25## Choisir entre les paramètres gérés par le serveur et gérés par le point de terminaison

26 

27Claude Code prend en charge deux approches pour la configuration centralisée. Les paramètres gérés par le serveur livrent la configuration à partir des serveurs d'Anthropic. Les [paramètres gérés par le point de terminaison](/fr/settings#settings-files) sont déployés directement sur les appareils via des stratégies natives du système d'exploitation (préférences gérées macOS, registre Windows) ou des fichiers de paramètres gérés.

28 

29| Approche | Idéal pour | Modèle de sécurité |

30| :------------------------------------------------------------------------------ | :------------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------- |

31| **Paramètres gérés par le serveur** | Organisations sans MDM, ou utilisateurs sur des appareils non gérés | Paramètres livrés à partir des serveurs d'Anthropic au moment de l'authentification |

32| **[Paramètres gérés par le point de terminaison](/fr/settings#settings-files)** | Organisations avec MDM ou gestion des points de terminaison | Paramètres déployés sur les appareils via des profils de configuration MDM, des stratégies de registre ou des fichiers de paramètres gérés |

33 

34Si vos appareils sont inscrits dans une solution MDM ou de gestion des points de terminaison, les paramètres gérés par le point de terminaison offrent des garanties de sécurité plus fortes car le fichier de paramètres peut être protégé contre les modifications de l'utilisateur au niveau du système d'exploitation.

35 

36## Configurer les paramètres gérés par le serveur

37 

38<Steps>

39 <Step title="Ouvrir la console d'administration">

40 Dans [Claude.ai](https://claude.ai), accédez à **Admin Settings > Claude Code > Managed settings**.

41 </Step>

42 

43 <Step title="Définir vos paramètres">

44 Ajoutez votre configuration en JSON. Tous les [paramètres disponibles dans `settings.json`](/fr/settings#available-settings) sont pris en charge, y compris les [hooks](/fr/hooks), les [variables d'environnement](/fr/env-vars) et les [paramètres réservés à la gestion](/fr/permissions#managed-only-settings) comme `allowManagedPermissionRulesOnly`.

45 

46 Cet exemple applique une liste de refus de permissions, empêche les utilisateurs de contourner les permissions et restreint les règles de permission à celles définies dans les paramètres gérés :

47 

48 ```json theme={null}

49 {

50 "permissions": {

51 "deny": [

52 "Bash(curl *)",

53 "Read(./.env)",

54 "Read(./.env.*)",

55 "Read(./secrets/**)"

56 ],

57 "disableBypassPermissionsMode": "disable"

58 },

59 "allowManagedPermissionRulesOnly": true

60 }

61 ```

62 

63 Les hooks utilisent le même format que dans `settings.json`.

64 

65 Cet exemple exécute un script d'audit après chaque modification de fichier dans toute l'organisation :

66 

67 ```json theme={null}

68 {

69 "hooks": {

70 "PostToolUse": [

71 {

72 "matcher": "Edit|Write",

73 "hooks": [

74 { "type": "command", "command": "/usr/local/bin/audit-edit.sh" }

75 ]

76 }

77 ]

78 }

79 }

80 ```

81 

82 Pour configurer le classificateur du [mode auto](/fr/permission-modes#eliminate-prompts-with-auto-mode) afin qu'il connaisse les dépôts, les buckets et les domaines de confiance de votre organisation :

83 

84 ```json theme={null}

85 {

86 "autoMode": {

87 "environment": [

88 "Source control: github.example.com/acme-corp and all repos under it",

89 "Trusted cloud buckets: s3://acme-build-artifacts, gs://acme-ml-datasets",

90 "Trusted internal domains: *.corp.example.com"

91 ]

92 }

93 }

94 ```

95 

96 Parce que les hooks exécutent des commandes shell, les utilisateurs voient une [boîte de dialogue d'approbation de sécurité](#security-approval-dialogs) avant qu'elles ne soient appliquées. Consultez [Configurer le mode auto](/fr/auto-mode-config) pour savoir comment les entrées `autoMode` affectent ce que le classificateur bloque et les avertissements importants concernant les champs `allow` et `soft_deny`.

97 </Step>

98 

99 <Step title="Enregistrer et déployer">

100 Enregistrez vos modifications. Les clients Claude Code reçoivent les paramètres mis à jour au prochain démarrage ou lors du cycle d'interrogation horaire.

101 </Step>

102</Steps>

103 

104### Vérifier la livraison des paramètres

105 

106Pour confirmer que les paramètres sont appliqués, demandez à un utilisateur de redémarrer Claude Code. Si la configuration inclut des paramètres qui déclenchent la [boîte de dialogue d'approbation de sécurité](#security-approval-dialogs), l'utilisateur voit une invite décrivant les paramètres gérés au démarrage. Vous pouvez également vérifier que les règles de permission gérées sont actives en demandant à un utilisateur d'exécuter `/permissions` pour afficher ses règles de permission effectives.

107 

108### Contrôle d'accès

109 

110Les rôles suivants peuvent gérer les paramètres gérés par le serveur :

111 

112* **Propriétaire principal**

113* **Propriétaire**

114 

115Limitez l'accès au personnel de confiance, car les modifications de paramètres s'appliquent à tous les utilisateurs de l'organisation.

116 

117### Paramètres réservés à la gestion

118 

119La plupart des [clés de paramètres](/fr/settings#available-settings) fonctionnent dans n'importe quel domaine. Une poignée de clés ne sont lues que dans les paramètres gérés et n'ont aucun effet lorsqu'elles sont placées dans les fichiers de paramètres utilisateur ou projet. Consultez [paramètres réservés à la gestion](/fr/permissions#managed-only-settings) pour la liste complète. Tout paramètre ne figurant pas sur cette liste peut toujours être placé dans les paramètres gérés et prend la plus haute priorité.

120 

121### Limitations actuelles

122 

123Les paramètres gérés par le serveur ont les limitations suivantes :

124 

125* Les paramètres s'appliquent uniformément à tous les utilisateurs de l'organisation. Les configurations par groupe ne sont pas encore prises en charge.

126* Les [configurations de serveur MCP](/fr/mcp#managed-mcp-configuration) ne peuvent pas être distribuées via les paramètres gérés par le serveur.

127 

128## Livraison des paramètres

129 

130### Précédence des paramètres

131 

132Les paramètres gérés par le serveur et les [paramètres gérés par le point de terminaison](/fr/settings#settings-files) occupent tous deux le niveau le plus élevé dans la [hiérarchie des paramètres](/fr/settings#settings-precedence) de Claude Code. Aucun autre niveau de paramètres ne peut les remplacer, y compris les arguments de ligne de commande.

133 

134Au sein du niveau géré, la première source qui livre une configuration non vide gagne. Les paramètres gérés par le serveur sont vérifiés en premier, puis les paramètres gérés par le point de terminaison. Les sources ne fusionnent pas : si les paramètres gérés par le serveur livrent des clés, les paramètres gérés par le point de terminaison sont complètement ignorés. Si les paramètres gérés par le serveur ne livrent rien, les paramètres gérés par le point de terminaison s'appliquent.

135 

136Si vous effacez votre configuration de paramètres gérés par le serveur dans la console d'administration avec l'intention de revenir à une stratégie plist ou registre gérée par le point de terminaison, sachez que les [paramètres en cache](#fetch-and-caching-behavior) persistent sur les machines clientes jusqu'à la prochaine récupération réussie. Exécutez `/status` pour voir quelle source gérée est active.

137 

138### Comportement de récupération et de mise en cache

139 

140Claude Code récupère les paramètres à partir des serveurs d'Anthropic au démarrage et interroge les mises à jour toutes les heures pendant les sessions actives.

141 

142**Premier lancement sans paramètres en cache :**

143 

144* Claude Code récupère les paramètres de manière asynchrone

145* Si la récupération échoue, Claude Code continue sans paramètres gérés

146* Il y a une brève fenêtre avant le chargement des paramètres où les restrictions ne sont pas encore appliquées

147 

148**Lancements ultérieurs avec paramètres en cache :**

149 

150* Les paramètres en cache s'appliquent immédiatement au démarrage

151* Claude Code récupère les paramètres actualisés en arrière-plan

152* Les paramètres en cache persistent en cas de défaillance réseau

153 

154Claude Code applique les mises à jour des paramètres automatiquement sans redémarrage, sauf pour les paramètres avancés comme la configuration OpenTelemetry, qui nécessitent un redémarrage complet pour prendre effet.

155 

156### Appliquer un démarrage fermé par défaut

157 

158Par défaut, si la récupération des paramètres distants échoue au démarrage, l'interface de ligne de commande continue sans paramètres gérés. Pour les environnements où cette brève fenêtre non appliquée est inacceptable, définissez `forceRemoteSettingsRefresh: true` dans vos paramètres gérés.

159 

160Lorsque ce paramètre est actif, l'interface de ligne de commande se bloque au démarrage jusqu'à ce que les paramètres distants soient récupérés à nouveau. Si la récupération échoue, l'interface de ligne de commande se ferme plutôt que de continuer sans la stratégie. Ce paramètre s'auto-perpétue : une fois livré par le serveur, il est également mis en cache localement afin que les démarrages ultérieurs appliquent le même comportement même avant la première récupération réussie d'une nouvelle session.

161 

162Pour activer cela, ajoutez la clé à votre configuration de paramètres gérés :

163 

164```json theme={null}

165{

166 "forceRemoteSettingsRefresh": true

167}

168```

169 

170Avant d'activer ce paramètre, assurez-vous que vos stratégies réseau permettent la connectivité à `api.anthropic.com`. Si ce point de terminaison est inaccessible, l'interface de ligne de commande se ferme au démarrage et les utilisateurs ne peuvent pas démarrer Claude Code.

171 

172### Boîtes de dialogue d'approbation de sécurité

173 

174Certains paramètres qui pourraient présenter des risques de sécurité nécessitent une approbation explicite de l'utilisateur avant d'être appliqués :

175 

176* **Paramètres de commande shell** : paramètres qui exécutent des commandes shell

177* **Variables d'environnement personnalisées** : variables ne figurant pas dans la liste de sécurité connue

178* **Configurations de hook** : toute définition de hook

179 

180Lorsque ces paramètres sont présents, les utilisateurs voient une boîte de dialogue de sécurité expliquant ce qui est configuré. Les utilisateurs doivent approuver pour continuer. Si un utilisateur rejette les paramètres, Claude Code se ferme.

181 

182<Note>

183 En mode non interactif avec l'indicateur `-p`, Claude Code ignore les boîtes de dialogue de sécurité et applique les paramètres sans approbation de l'utilisateur.

184</Note>

185 

186## Disponibilité de la plateforme

187 

188Les paramètres gérés par le serveur nécessitent une connexion directe à `api.anthropic.com` et ne sont pas disponibles lors de l'utilisation de fournisseurs de modèles tiers :

189 

190* Amazon Bedrock

191* Google Vertex AI

192* Microsoft Foundry

193* Points de terminaison API personnalisés via `ANTHROPIC_BASE_URL` ou [passerelles LLM](/fr/llm-gateway)

194 

195## Journalisation d'audit

196 

197Les événements du journal d'audit pour les modifications de paramètres sont disponibles via l'API de conformité ou l'export du journal d'audit. Contactez votre équipe de compte Anthropic pour accéder.

198 

199Les événements d'audit incluent le type d'action effectuée, le compte et l'appareil qui ont effectué l'action, et les références aux valeurs précédentes et nouvelles.

200 

201## Considérations de sécurité

202 

203Les paramètres gérés par le serveur fournissent une application de stratégie centralisée, mais ils fonctionnent comme un contrôle côté client. Sur les appareils non gérés, les utilisateurs ayant un accès administrateur ou sudo peuvent modifier le binaire Claude Code, le système de fichiers ou la configuration réseau.

204 

205| Scénario | Comportement |

206| :------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

207| L'utilisateur modifie le fichier de paramètres en cache | Le fichier falsifié s'applique au démarrage, mais les paramètres corrects se restaurent lors de la prochaine récupération du serveur |

208| L'utilisateur supprime le fichier de paramètres en cache | Le comportement du premier lancement se produit : les paramètres sont récupérés de manière asynchrone avec une brève fenêtre non appliquée |

209| L'API est indisponible | Les paramètres en cache s'appliquent s'ils sont disponibles, sinon les paramètres gérés ne sont pas appliqués jusqu'à la prochaine récupération réussie. Avec `forceRemoteSettingsRefresh: true`, l'interface de ligne de commande se ferme au lieu de continuer |

210| L'utilisateur s'authentifie avec une organisation différente | Les paramètres ne sont pas livrés pour les comptes en dehors de l'organisation gérée |

211| L'utilisateur configure un [fournisseur de modèle tiers](#platform-availability) | Les paramètres gérés par le serveur sont contournés. Cela inclut la définition de `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_MANTLE`, `CLAUDE_CODE_USE_VERTEX`, `CLAUDE_CODE_USE_FOUNDRY`, ou un `ANTHROPIC_BASE_URL` non défini par défaut |

212 

213Pour détecter les modifications de configuration au moment de l'exécution, utilisez les [hooks `ConfigChange`](/fr/hooks#configchange) pour enregistrer les modifications ou bloquer les modifications non autorisées avant qu'elles ne prennent effet.

214 

215Pour des garanties d'application plus fortes, utilisez les [paramètres gérés par le point de terminaison](/fr/settings#settings-files) sur les appareils inscrits dans une solution MDM.

216 

217## Voir aussi

218 

219Pages connexes pour gérer la configuration de Claude Code :

220 

221* [Paramètres](/fr/settings) : référence de configuration complète incluant tous les paramètres disponibles

222* [Paramètres gérés par le point de terminaison](/fr/settings#settings-files) : paramètres gérés déployés sur les appareils par l'informatique

223* [Authentification](/fr/authentication) : configurer l'accès des utilisateurs à Claude Code

224* [Sécurité](/fr/security) : garanties de sécurité et meilleures pratiques

settings.md +914 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Paramètres Claude Code

6 

7> Configurez Claude Code avec des paramètres globaux et au niveau du projet, ainsi que des variables d'environnement.

8 

9Claude Code offre une variété de paramètres pour configurer son comportement selon vos besoins. Vous pouvez configurer Claude Code en exécutant la commande `/config` lors de l'utilisation du REPL interactif, ce qui ouvre une interface Paramètres avec onglets où vous pouvez afficher les informations d'état et modifier les options de configuration.

10 

11## Portées de configuration

12 

13Claude Code utilise un **système de portées** pour déterminer où les configurations s'appliquent et qui les partage. Comprendre les portées vous aide à décider comment configurer Claude Code pour un usage personnel, une collaboration d'équipe ou un déploiement en entreprise.

14 

15### Portées disponibles

16 

17| Portée | Emplacement | Qui est affecté | Partagé avec l'équipe ? |

18| :---------- | :---------------------------------------------------------------------------------------------- | :---------------------------------------- | :------------------------- |

19| **Managed** | Paramètres gérés par le serveur, plist / registre, ou `managed-settings.json` au niveau système | Tous les utilisateurs de la machine | Oui (déployé par l'IT) |

20| **User** | Répertoire `~/.claude/` | Vous, dans tous les projets | Non |

21| **Project** | `.claude/` dans le référentiel | Tous les collaborateurs de ce référentiel | Oui (commité dans git) |

22| **Local** | `.claude/settings.local.json` | Vous, dans ce référentiel uniquement | Non (ignoré par gitignore) |

23 

24### Quand utiliser chaque portée

25 

26La portée **Managed** est pour :

27 

28* Les politiques de sécurité qui doivent être appliquées à l'échelle de l'organisation

29* Les exigences de conformité qui ne peuvent pas être contournées

30* Les configurations standardisées déployées par l'IT/DevOps

31 

32La portée **User** est idéale pour :

33 

34* Les préférences personnelles que vous voulez partout (thèmes, paramètres d'éditeur)

35* Les outils et plugins que vous utilisez dans tous les projets

36* Les clés API et l'authentification (stockées de manière sécurisée)

37 

38La portée **Project** est idéale pour :

39 

40* Les paramètres partagés par l'équipe (permissions, hooks, MCP servers)

41* Les plugins que toute l'équipe devrait avoir

42* La standardisation des outils entre collaborateurs

43 

44La portée **Local** est idéale pour :

45 

46* Les remplacements personnels pour un projet spécifique

47* Tester les configurations avant de les partager avec l'équipe

48* Les paramètres spécifiques à la machine qui ne fonctionneront pas pour les autres

49 

50### Comment les portées interagissent

51 

52Quand le même paramètre est configuré dans plusieurs portées, les portées plus spécifiques ont la priorité :

53 

541. **Managed** (la plus élevée) - ne peut pas être contournée par quoi que ce soit

552. **Arguments de ligne de commande** - remplacements de session temporaires

563. **Local** - remplace les paramètres de projet et d'utilisateur

574. **Project** - remplace les paramètres d'utilisateur

585. **User** (la plus basse) - s'applique quand rien d'autre ne spécifie le paramètre

59 

60Par exemple, si une permission est autorisée dans les paramètres utilisateur mais refusée dans les paramètres de projet, le paramètre de projet a la priorité et la permission est bloquée.

61 

62### Ce qui utilise les portées

63 

64Les portées s'appliquent à de nombreuses fonctionnalités de Claude Code :

65 

66| Fonctionnalité | Emplacement utilisateur | Emplacement projet | Emplacement local |

67| :-------------- | :------------------------ | :--------------------------------- | :---------------------------- |

68| **Settings** | `~/.claude/settings.json` | `.claude/settings.json` | `.claude/settings.local.json` |

69| **Subagents** | `~/.claude/agents/` | `.claude/agents/` | Aucun |

70| **MCP servers** | `~/.claude.json` | `.mcp.json` | `~/.claude.json` (par projet) |

71| **Plugins** | `~/.claude/settings.json` | `.claude/settings.json` | `.claude/settings.local.json` |

72| **CLAUDE.md** | `~/.claude/CLAUDE.md` | `CLAUDE.md` ou `.claude/CLAUDE.md` | `CLAUDE.local.md` |

73 

74***

75 

76## Fichiers de paramètres

77 

78Le fichier `settings.json` est le mécanisme officiel pour configurer Claude Code via des paramètres hiérarchiques :

79 

80* Les **paramètres utilisateur** sont définis dans `~/.claude/settings.json` et s'appliquent à tous les projets.

81* Les **paramètres de projet** sont enregistrés dans votre répertoire de projet :

82 * `.claude/settings.json` pour les paramètres qui sont vérifiés dans le contrôle de source et partagés avec votre équipe

83 * `.claude/settings.local.json` pour les paramètres qui ne sont pas vérifiés, utiles pour les préférences personnelles et l'expérimentation. Claude Code configurera git pour ignorer `.claude/settings.local.json` quand il est créé.

84* **Paramètres gérés** : Pour les organisations qui ont besoin d'un contrôle centralisé, Claude Code supporte plusieurs mécanismes de livraison pour les paramètres gérés. Tous utilisent le même format JSON et ne peuvent pas être contournés par les paramètres utilisateur ou de projet :

85 

86 * **Paramètres gérés par le serveur** : livrés depuis les serveurs d'Anthropic via la console d'administration Claude.ai. Voir [paramètres gérés par le serveur](/fr/server-managed-settings).

87 * **Politiques MDM/au niveau du système d'exploitation** : livrées via la gestion native des appareils sur macOS et Windows :

88 * macOS : domaine de préférences gérées `com.anthropic.claudecode`. Les clés de niveau supérieur du plist reflètent `managed-settings.json`, avec les paramètres imbriqués comme dictionnaires et les tableaux comme tableaux plist. Déployez via des profils de configuration dans Jamf, Iru (Kandji), ou d'autres outils MDM similaires.

89 * Windows : clé de registre `HKLM\SOFTWARE\Policies\ClaudeCode` avec une valeur `Settings` (REG\_SZ ou REG\_EXPAND\_SZ) contenant du JSON (déployé via Group Policy ou Intune)

90 * Windows (au niveau utilisateur) : `HKCU\SOFTWARE\Policies\ClaudeCode` (priorité de politique la plus basse, utilisée uniquement quand aucune source au niveau administrateur n'existe)

91 * **Basé sur fichier** : `managed-settings.json` et `managed-mcp.json` déployés dans les répertoires système :

92 

93 * macOS : `/Library/Application Support/ClaudeCode/`

94 * Linux et WSL : `/etc/claude-code/`

95 * Windows : `C:\Program Files\ClaudeCode\`

96 

97 <Warning>

98 Le chemin Windows hérité `C:\ProgramData\ClaudeCode\managed-settings.json` n'est plus supporté à partir de v2.1.75. Les administrateurs qui ont déployé des paramètres à cet emplacement doivent migrer les fichiers vers `C:\Program Files\ClaudeCode\managed-settings.json`.

99 </Warning>

100 

101 Les paramètres gérés basés sur fichier supportent également un répertoire drop-in à `managed-settings.d/` dans le même répertoire système à côté de `managed-settings.json`. Cela permet à des équipes séparées de déployer des fragments de politique indépendants sans coordonner les modifications d'un seul fichier.

102 

103 Suivant la convention systemd, `managed-settings.json` est fusionné en premier comme base, puis tous les fichiers `*.json` dans le répertoire drop-in sont triés alphabétiquement et fusionnés par-dessus. Les fichiers ultérieurs remplacent les fichiers antérieurs pour les valeurs scalaires ; les tableaux sont concaténés et dédupliqués ; les objets sont fusionnés en profondeur. Les fichiers cachés commençant par `.` sont ignorés.

104 

105 Utilisez des préfixes numériques pour contrôler l'ordre de fusion, par exemple `10-telemetry.json` et `20-security.json`.

106 

107 Voir [paramètres gérés](/fr/permissions#managed-only-settings) et [Configuration MCP gérée](/fr/mcp#managed-mcp-configuration) pour plus de détails.

108 

109 Ce [référentiel](https://github.com/anthropics/claude-code/tree/main/examples/mdm) inclut des modèles de déploiement de démarrage pour Jamf, Iru (Kandji), Intune, et Group Policy. Utilisez-les comme points de départ et ajustez-les selon vos besoins.

110 

111 <Note>

112 Les déploiements gérés peuvent également restreindre les **ajouts de marketplace de plugins** en utilisant `strictKnownMarketplaces`. Pour plus d'informations, voir [Restrictions de marketplace gérées](/fr/plugin-marketplaces#managed-marketplace-restrictions).

113 </Note>

114* **Autre configuration** est stockée dans `~/.claude.json`. Ce fichier contient votre session OAuth, les configurations de [MCP server](/fr/mcp) pour les portées utilisateur et locale, l'état par projet (outils autorisés, paramètres de confiance), et divers caches. Les MCP servers au niveau du projet sont stockés séparément dans `.mcp.json`.

115 

116<Note>

117 Claude Code crée automatiquement des sauvegardes horodatées des fichiers de configuration et conserve les cinq sauvegardes les plus récentes pour prévenir la perte de données.

118</Note>

119 

120```JSON Exemple settings.json theme={null}

121{

122 "$schema": "https://json.schemastore.org/claude-code-settings.json",

123 "permissions": {

124 "allow": [

125 "Bash(npm run lint)",

126 "Bash(npm run test *)",

127 "Read(~/.zshrc)"

128 ],

129 "deny": [

130 "Bash(curl *)",

131 "Read(./.env)",

132 "Read(./.env.*)",

133 "Read(./secrets/**)"

134 ]

135 },

136 "env": {

137 "CLAUDE_CODE_ENABLE_TELEMETRY": "1",

138 "OTEL_METRICS_EXPORTER": "otlp"

139 },

140 "companyAnnouncements": [

141 "Welcome to Acme Corp! Review our code guidelines at docs.acme.com",

142 "Reminder: Code reviews required for all PRs",

143 "New security policy in effect"

144 ]

145}

146```

147 

148La ligne `$schema` dans l'exemple ci-dessus pointe vers le [schéma JSON officiel](https://json.schemastore.org/claude-code-settings.json) pour les paramètres Claude Code. L'ajouter à votre `settings.json` active l'autocomplétion et la validation en ligne dans VS Code, Cursor, et tout autre éditeur qui supporte la validation de schéma JSON.

149 

150Le schéma publié est mis à jour périodiquement et peut ne pas inclure les paramètres ajoutés dans les versions CLI les plus récentes, donc un avertissement de validation sur un champ récemment documenté ne signifie pas nécessairement que votre configuration est invalide.

151 

152### Paramètres disponibles

153 

154`settings.json` supporte un certain nombre d'options :

155 

156| Clé | Description | Exemple |

157| :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------- |

158| `agent` | Exécuter le thread principal en tant que subagent nommé. Applique l'invite système, les restrictions d'outils et le modèle de ce subagent. Voir [Invoquer les subagents explicitement](/fr/sub-agents#invoke-subagents-explicitly) | `"code-reviewer"` |

159| `allowedChannelPlugins` | (Paramètres gérés uniquement) Liste blanche des plugins de channel qui peuvent envoyer des messages. Remplace la liste blanche Anthropic par défaut quand défini. Non défini = revenir à la valeur par défaut, tableau vide = bloquer tous les plugins de channel. Nécessite `channelsEnabled: true`. Voir [Restreindre quels plugins de channel peuvent s'exécuter](/fr/channels#restrict-which-channel-plugins-can-run) | `[{ "marketplace": "claude-plugins-official", "plugin": "telegram" }]` |

160| `allowedHttpHookUrls` | Liste blanche des modèles d'URL que les hooks HTTP peuvent cibler. Supporte `*` comme caractère générique. Quand défini, les hooks avec des URL non correspondantes sont bloqués. Non défini = pas de restriction, tableau vide = bloquer tous les hooks HTTP. Les tableaux fusionnent entre les sources de paramètres. Voir [Configuration des hooks](#hook-configuration) | `["https://hooks.example.com/*"]` |

161| `allowedMcpServers` | Quand défini dans managed-settings.json, liste blanche des MCP servers que les utilisateurs peuvent configurer. Non défini = pas de restrictions, tableau vide = verrouillage. S'applique à toutes les portées. La liste noire a la priorité. Voir [Configuration MCP gérée](/fr/mcp#managed-mcp-configuration) | `[{ "serverName": "github" }]` |

162| `allowManagedHooksOnly` | (Paramètres gérés uniquement) Seuls les hooks gérés, les hooks SDK, et les hooks des plugins force-activés dans les paramètres gérés `enabledPlugins` sont chargés. Les hooks utilisateur, projet et tous les autres hooks de plugin sont bloqués. Voir [Configuration des hooks](#hook-configuration) | `true` |

163| `allowManagedMcpServersOnly` | (Paramètres gérés uniquement) Seul `allowedMcpServers` à partir des paramètres gérés est respecté. `deniedMcpServers` fusionne toujours à partir de toutes les sources. Les utilisateurs peuvent toujours ajouter des MCP servers, mais seule la liste blanche définie par l'administrateur s'applique. Voir [Configuration MCP gérée](/fr/mcp#managed-mcp-configuration) | `true` |

164| `allowManagedPermissionRulesOnly` | (Paramètres gérés uniquement) Empêcher les paramètres utilisateur et projet de définir les règles de permission `allow`, `ask`, ou `deny`. Seules les règles dans les paramètres gérés s'appliquent. Voir [Paramètres gérés uniquement](/fr/permissions#managed-only-settings) | `true` |

165| `alwaysThinkingEnabled` | Activer la [réflexion étendue](/fr/model-config#extended-thinking) par défaut pour toutes les sessions. Généralement configuré via la commande `/config` plutôt que d'éditer directement | `true` |

166| `apiKeyHelper` | Script personnalisé, à exécuter dans `/bin/sh`, pour générer une valeur d'authentification. Cette valeur sera envoyée comme en-têtes `X-Api-Key` et `Authorization: Bearer` pour les demandes de modèle | `/bin/generate_temp_api_key.sh` |

167| `attribution` | Personnalisez l'attribution pour les commits git et les pull requests. Voir [Paramètres d'attribution](#attribution-settings) | `{"commit": "🤖 Generated with Claude Code", "pr": ""}` |

168| `autoMemoryDirectory` | Répertoire personnalisé pour le stockage de la [mémoire automatique](/fr/memory#storage-location). Accepte un chemin absolu ou un chemin préfixé par `~/`. Accepté à partir des paramètres de politique et utilisateur, et à partir de l'indicateur `--settings`. Non accepté à partir des paramètres de projet ou locaux, car un référentiel cloné pourrait fournir l'un ou l'autre fichier pour rediriger les écritures de mémoire vers des emplacements sensibles | `"~/my-memory-dir"` |

169| `autoMode` | Personnalisez ce que le classificateur du [mode auto](/fr/permission-modes#eliminate-prompts-with-auto-mode) bloque et autorise. Contient les tableaux `environment`, `allow`, et `soft_deny` de règles en prose. Incluez la chaîne littérale `"$defaults"` dans un tableau pour hériter des règles intégrées à cette position. Voir [Configurer le mode auto](/fr/auto-mode-config). Non lu à partir des paramètres de projet partagés | `{"soft_deny": ["$defaults", "Never run terraform apply"]}` |

170| `autoScrollEnabled` | Dans le [rendu fullscreen](/fr/fullscreen), suivre la nouvelle sortie vers le bas de la conversation. Par défaut : `true`. Apparaît dans `/config` comme **Auto-scroll**. Les invites de permission font toujours défiler dans la vue quand ceci est désactivé | `false` |

171| `autoUpdatesChannel` | Canal de version à suivre pour les mises à jour. Utilisez `"stable"` pour une version généralement une semaine ancienne et qui ignore les versions avec des régressions majeures, ou `"latest"` (par défaut) pour la version la plus récente | `"stable"` |

172| `availableModels` | Restreindre les modèles que les utilisateurs peuvent sélectionner via `/model`, `--model`, ou `ANTHROPIC_MODEL`. N'affecte pas l'option Par défaut. Voir [Restreindre la sélection de modèle](/fr/model-config#restrict-model-selection) | `["sonnet", "haiku"]` |

173| `awaySummaryEnabled` | Afficher un récapitulatif de session d'une ligne quand vous revenez au terminal après quelques minutes d'absence. Définir à `false` ou désactiver le récapitulatif de session dans `/config` pour désactiver. Identique à [`CLAUDE_CODE_ENABLE_AWAY_SUMMARY`](/fr/env-vars) | `true` |

174| `awsAuthRefresh` | Script personnalisé qui modifie le répertoire `.aws` (voir [configuration avancée des identifiants](/fr/amazon-bedrock#advanced-credential-configuration)) | `aws sso login --profile myprofile` |

175| `awsCredentialExport` | Script personnalisé qui génère du JSON avec les identifiants AWS (voir [configuration avancée des identifiants](/fr/amazon-bedrock#advanced-credential-configuration)) | `/bin/generate_aws_grant.sh` |

176| `blockedMarketplaces` | (Paramètres gérés uniquement) Liste noire des sources de marketplace. Appliquée lors de l'ajout de marketplace et lors de l'installation, la mise à jour, l'actualisation et la mise à jour automatique du plugin, donc une marketplace ajoutée avant que la politique soit définie ne peut pas être utilisée pour récupérer les plugins. Les sources bloquées sont vérifiées avant le téléchargement, donc elles ne touchent jamais le système de fichiers. Voir [Restrictions de marketplace gérées](/fr/plugin-marketplaces#managed-marketplace-restrictions) | `[{ "source": "github", "repo": "untrusted/plugins" }]` |

177| `channelsEnabled` | (Paramètres gérés uniquement) Autoriser les [channels](/fr/channels) pour les utilisateurs Team et Enterprise. Non défini ou `false` bloque la livraison des messages de channel indépendamment de ce que les utilisateurs passent à `--channels` | `true` |

178| `cleanupPeriodDays` | Les sessions inactives pendant plus longtemps que cette période sont supprimées au démarrage (par défaut : 30 jours, minimum 1). Définir à `0` est rejeté avec une erreur de validation. Contrôle également le seuil d'âge pour la suppression automatique des [worktrees de subagent orphelins](/fr/worktrees#clean-up-worktrees) au démarrage. Pour désactiver complètement les écritures de transcript, définissez la variable d'environnement [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/fr/env-vars), ou en mode non interactif (`-p`) utilisez l'indicateur `--no-session-persistence` ou l'option SDK `persistSession: false`. | `20` |

179| `companyAnnouncements` | Annonce à afficher aux utilisateurs au démarrage. Si plusieurs annonces sont fournies, elles seront affichées aléatoirement. | `["Welcome to Acme Corp! Review our code guidelines at docs.acme.com"]` |

180| `defaultShell` | Shell par défaut pour les commandes `!` de la boîte d'entrée. Accepte `"bash"` (par défaut) ou `"powershell"`. Définir à `"powershell"` achemine les commandes `!` interactives via PowerShell sur Windows. Nécessite `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`. Voir [Outil PowerShell](/fr/tools-reference#powershell-tool) | `"powershell"` |

181| `deniedMcpServers` | Quand défini dans managed-settings.json, liste noire des MCP servers qui sont explicitement bloqués. S'applique à toutes les portées y compris les servers gérés. La liste noire a la priorité sur la liste blanche. Voir [Configuration MCP gérée](/fr/mcp#managed-mcp-configuration) | `[{ "serverName": "filesystem" }]` |

182| `disableAllHooks` | Désactiver tous les [hooks](/fr/hooks) et toute [ligne d'état](/fr/statusline) personnalisée | `true` |

183| `disableAutoMode` | Définir à `"disable"` pour empêcher l'activation du [mode auto](/fr/permission-modes#eliminate-prompts-with-auto-mode). Supprime `auto` du cycle `Shift+Tab` et rejette `--permission-mode auto` au démarrage. Très utile dans les [paramètres gérés](/fr/permissions#managed-settings) où les utilisateurs ne peuvent pas le contourner | `"disable"` |

184| `disableDeepLinkRegistration` | Définir à `"disable"` pour empêcher Claude Code d'enregistrer le gestionnaire de protocole `claude-cli://` auprès du système d'exploitation au démarrage. Les [liens profonds](/fr/deep-links) permettent aux outils externes d'ouvrir une session Claude Code avec une invite pré-remplie. Utile dans les environnements où l'enregistrement du gestionnaire de protocole est restreint ou géré séparément | `"disable"` |

185| `disabledMcpjsonServers` | Liste des MCP servers spécifiques à partir des fichiers `.mcp.json` à rejeter | `["filesystem"]` |

186| `disableSkillShellExecution` | Désactiver l'exécution de shell en ligne pour `` !`...` `` et ` ```! ` blocs dans les [skills](/fr/skills) et les commandes personnalisées à partir des sources utilisateur, projet, plugin ou répertoire supplémentaire. Les commandes sont remplacées par `[shell command execution disabled by policy]` au lieu d'être exécutées. Les skills bundlés et gérés ne sont pas affectés. Très utile dans les [paramètres gérés](/fr/permissions#managed-settings) où les utilisateurs ne peuvent pas le contourner | `true` |

187| `editorMode` | Mode de liaison de touches pour l'invite d'entrée : `"normal"` ou `"vim"`. Par défaut : `"normal"`. Apparaît dans `/config` comme **Editor mode** | `"vim"` |

188| `effortLevel` | Persister le [niveau d'effort](/fr/model-config#adjust-effort-level) entre les sessions. Accepte `"low"`, `"medium"`, `"high"`, ou `"xhigh"`. Écrit automatiquement quand vous exécutez `/effort` avec l'une de ces valeurs. Voir [Ajuster le niveau d'effort](/fr/model-config#adjust-effort-level) pour les modèles supportés | `"xhigh"` |

189| `enableAllProjectMcpServers` | Approuver automatiquement tous les MCP servers définis dans les fichiers `.mcp.json` du projet | `true` |

190| `enabledMcpjsonServers` | Liste des MCP servers spécifiques à partir des fichiers `.mcp.json` à approuver | `["memory", "github"]` |

191| `env` | Variables d'environnement qui seront appliquées à chaque session | `{"FOO": "bar"}` |

192| `fastModePerSessionOptIn` | Quand `true`, le mode rapide ne persiste pas entre les sessions. Chaque session commence avec le mode rapide désactivé, nécessitant que les utilisateurs l'activent avec `/fast`. La préférence de mode rapide de l'utilisateur est toujours enregistrée. Voir [Exiger l'opt-in par session](/fr/fast-mode#require-per-session-opt-in) | `true` |

193| `feedbackSurveyRate` | Probabilité (0–1) que l'[enquête de qualité de session](/fr/data-usage#session-quality-surveys) apparaisse quand elle est admissible. Définir à `0` pour supprimer complètement. Utile lors de l'utilisation de Bedrock, Vertex, ou Foundry où le taux d'échantillonnage par défaut ne s'applique pas | `0.05` |

194| `fileSuggestion` | Configurez un script personnalisé pour l'autocomplétion de fichier `@`. Voir [Paramètres de suggestion de fichier](#file-suggestion-settings) | `{"type": "command", "command": "~/.claude/file-suggestion.sh"}` |

195| `forceLoginMethod` | Utilisez `claudeai` pour restreindre la connexion aux comptes Claude.ai, `console` pour restreindre la connexion aux comptes Claude Console (facturation d'utilisation d'API) | `claudeai` |

196| `forceLoginOrgUUID` | Exiger que la connexion appartienne à une organisation spécifique. Accepte une seule chaîne UUID, qui pré-sélectionne également cette organisation lors de la connexion, ou un tableau d'UUID où n'importe quelle organisation listée est acceptée sans pré-sélection. Quand défini dans les paramètres gérés, la connexion échoue si le compte authentifié n'appartient pas à une organisation listée ; un tableau vide échoue fermé et bloque la connexion avec un message de mauvaise configuration | `"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"` ou `["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"]` |

197| `forceRemoteSettingsRefresh` | (Paramètres gérés uniquement) Bloquer le démarrage de la CLI jusqu'à ce que les paramètres gérés distants soient fraîchement récupérés du serveur. Si la récupération échoue, la CLI se termine plutôt que de continuer avec les paramètres en cache ou aucun paramètre. Quand non défini, le démarrage continue sans attendre les paramètres distants. Voir [application fail-closed](/fr/server-managed-settings#enforce-fail-closed-startup) | `true` |

198| `hooks` | Configurez des commandes personnalisées à exécuter lors d'événements du cycle de vie. Voir [documentation des hooks](/fr/hooks) pour le format | Voir [hooks](/fr/hooks) |

199| `httpHookAllowedEnvVars` | Liste blanche des noms de variables d'environnement que les hooks HTTP peuvent interpoler dans les en-têtes. Quand défini, le `allowedEnvVars` effectif de chaque hook est l'intersection avec cette liste. Non défini = pas de restriction. Les tableaux fusionnent entre les sources de paramètres. Voir [Configuration des hooks](#hook-configuration) | `["MY_TOKEN", "HOOK_SECRET"]` |

200| `includeCoAuthoredBy` | **Déprécié** : Utilisez `attribution` à la place. S'il faut inclure la ligne `co-authored-by Claude` dans les commits git et les pull requests (par défaut : `true`) | `false` |

201| `includeGitInstructions` | Inclure les instructions de workflow de commit et PR intégrées et l'instantané du statut git dans l'invite système de Claude (par défaut : `true`). Définir à `false` pour supprimer les deux, par exemple lors de l'utilisation de vos propres skills de workflow git. La variable d'environnement `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` a la priorité sur ce paramètre quand elle est définie | `false` |

202| `language` | Configurez la langue de réponse préférée de Claude (par exemple, `"japanese"`, `"spanish"`, `"french"`). Claude répondra dans cette langue par défaut. Définit également la langue de la [dictée vocale](/fr/voice-dictation#change-the-dictation-language) | `"japanese"` |

203| `minimumVersion` | Plancher qui empêche les auto-mises à jour de fond et `claude update` d'installer une version inférieure à celle-ci. Passer du canal `"latest"` à `"stable"` via `/config` vous invite à rester sur la version actuelle ou à autoriser la rétrogradation. Choisir de rester définit cette valeur. Également utile dans les [paramètres gérés](/fr/permissions#managed-settings) pour épingler une version minimale à l'échelle de l'organisation | `"2.1.100"` |

204| `model` | Remplacer le modèle par défaut à utiliser pour Claude Code | `"claude-sonnet-4-6"` |

205| `modelOverrides` | Mapper les ID de modèle Anthropic aux ID de modèle spécifiques au fournisseur tels que les ARN de profil d'inférence Bedrock. Chaque entrée du sélecteur de modèle utilise sa valeur mappée lors de l'appel de l'API du fournisseur. Voir [Remplacer les ID de modèle par version](/fr/model-config#override-model-ids-per-version) | `{"claude-opus-4-6": "arn:aws:bedrock:..."}` |

206| `otelHeadersHelper` | Script pour générer des en-têtes OpenTelemetry dynamiques. S'exécute au démarrage et périodiquement (voir [En-têtes dynamiques](/fr/monitoring-usage#dynamic-headers)) | `/bin/generate_otel_headers.sh` |

207| `outputStyle` | Configurez un style de sortie pour ajuster l'invite système. Voir [documentation des styles de sortie](/fr/output-styles) | `"Explanatory"` |

208| `permissions` | Voir le tableau ci-dessous pour la structure des permissions. | |

209| `plansDirectory` | Personnalisez où les fichiers de plan sont stockés. Le chemin est relatif à la racine du projet. Par défaut : `~/.claude/plans` | `"./plans"` |

210| `pluginTrustMessage` | (Paramètres gérés uniquement) Message personnalisé ajouté à l'avertissement de confiance du plugin affiché avant l'installation. Utilisez ceci pour ajouter du contexte spécifique à l'organisation, par exemple pour confirmer que les plugins de votre marketplace interne sont vérifiés. | `"All plugins from our marketplace are approved by IT"` |

211| `preferredNotifChannel` | Méthode pour les notifications de tâche terminée et d'invite de permission : `"auto"`, `"terminal_bell"`, `"iterm2"`, `"iterm2_with_bell"`, `"kitty"`, `"ghostty"`, ou `"notifications_disabled"`. Par défaut : `"auto"`, qui envoie une notification de bureau dans iTerm2, Ghostty, et Kitty et ne fait rien dans les autres terminaux. Définir à `"terminal_bell"` pour sonner le caractère de cloche dans n'importe quel terminal. Apparaît dans `/config` comme **Notifications**. Voir [Obtenir une cloche de terminal ou une notification](/fr/terminal-config#get-a-terminal-bell-or-notification) | `"terminal_bell"` |

212| `prefersReducedMotion` | Réduire ou désactiver les animations de l'interface utilisateur (spinners, shimmer, effets flash) pour l'accessibilité | `true` |

213| `prUrlTemplate` | Modèle d'URL pour le badge PR affiché dans le pied de page et dans les résumés de résultats d'outils. Substitue `{host}`, `{owner}`, `{repo}`, `{number}`, et `{url}` à partir de l'URL PR rapportée par `gh`. Utilisez pour pointer les liens PR vers un outil d'examen de code interne au lieu de `github.com`. N'affecte pas les autolinks `#123` dans la prose de Claude | `"https://reviews.example.com/{owner}/{repo}/pull/{number}"` |

214| `respectGitignore` | Contrôler si le sélecteur de fichier `@` respecte les modèles `.gitignore`. Quand `true` (par défaut), les fichiers correspondant aux modèles `.gitignore` sont exclus des suggestions | `false` |

215| `showClearContextOnPlanAccept` | Afficher l'option « effacer le contexte » sur l'écran d'acceptation du plan. Par défaut : `false`. Définir à `true` pour restaurer l'option | `true` |

216| `showThinkingSummaries` | Afficher les résumés de [réflexion étendue](/fr/model-config#extended-thinking) dans les sessions interactives. Quand non défini ou `false` (par défaut en mode interactif), les blocs de réflexion sont redactés par l'API et affichés comme un stub réduit. La redaction change uniquement ce que vous voyez, pas ce que le modèle génère : pour réduire les dépenses de réflexion, [réduisez le budget ou désactivez la réflexion](/fr/model-config#extended-thinking) à la place. Le mode non interactif (`-p`) et les appelants SDK reçoivent toujours les résumés indépendamment de ce paramètre | `true` |

217| `showTurnDuration` | Afficher les messages de durée de tour après les réponses, par exemple « Cooked for 1m 6s ». Par défaut : `true`. Apparaît dans `/config` comme **Show turn duration** | `false` |

218| `skipWebFetchPreflight` | Ignorer la [vérification de sécurité du domaine WebFetch](/fr/data-usage#webfetch-domain-safety-check) qui envoie chaque nom d'hôte demandé à `api.anthropic.com` avant la récupération. Définir à `true` dans les environnements qui bloquent le trafic vers Anthropic, tels que les déploiements Bedrock, Vertex AI, ou Foundry avec une sortie restrictive. Quand ignorée, WebFetch tente n'importe quelle URL sans consulter la liste de blocage | `true` |

219| `spinnerTipsEnabled` | Afficher les conseils dans le spinner pendant que Claude travaille. Définir à `false` pour désactiver les conseils (par défaut : `true`) | `false` |

220| `spinnerTipsOverride` | Remplacer les conseils du spinner par des chaînes personnalisées. `tips` : tableau de chaînes de conseil. `excludeDefault` : si `true`, afficher uniquement les conseils personnalisés ; si `false` ou absent, les conseils personnalisés sont fusionnés avec les conseils intégrés | `{ "excludeDefault": true, "tips": ["Use our internal tool X"] }` |

221| `spinnerVerbs` | Personnalisez les verbes d'action affichés dans le spinner et les messages de durée de tour. Définir `mode` à `"replace"` pour utiliser uniquement vos verbes, ou `"append"` pour les ajouter aux valeurs par défaut | `{"mode": "append", "verbs": ["Pondering", "Crafting"]}` |

222| `sshConfigs` | Connexions SSH à afficher dans la liste déroulante de l'environnement [Desktop](/fr/desktop#pre-configure-ssh-connections-for-your-team). Chaque entrée nécessite `id`, `name`, et `sshHost` ; `sshPort`, `sshIdentityFile`, et `startDirectory` sont optionnels. Quand défini dans les paramètres gérés, les connexions sont en lecture seule pour les utilisateurs. Lus à partir des paramètres gérés et utilisateur uniquement | `[{"id": "dev-vm", "name": "Dev VM", "sshHost": "user@dev.example.com"}]` |

223| `statusLine` | Configurez une ligne d'état personnalisée pour afficher le contexte. Voir [documentation `statusLine`](/fr/statusline) | `{"type": "command", "command": "~/.claude/statusline.sh"}` |

224| `strictKnownMarketplaces` | (Paramètres gérés uniquement) Liste blanche des sources de marketplace de plugins. Non défini = pas de restrictions, tableau vide = verrouillage. Appliquée lors de l'ajout de marketplace et lors de l'installation, la mise à jour, l'actualisation et la mise à jour automatique du plugin, donc une marketplace ajoutée avant que la politique soit définie ne peut pas être utilisée pour récupérer les plugins. Voir [Restrictions de marketplace gérées](/fr/plugin-marketplaces#managed-marketplace-restrictions) | `[{ "source": "github", "repo": "acme-corp/plugins" }]` |

225| `teammateMode` | Comment les coéquipiers de l'[équipe d'agents](/fr/agent-teams) s'affichent : `auto` (choisit les volets divisés dans tmux ou iTerm2, en processus sinon), `in-process`, ou `tmux`. Voir [configurer un mode d'affichage](/fr/agent-teams#choose-a-display-mode) | `"in-process"` |

226| `terminalProgressBarEnabled` | Afficher la barre de progression du terminal dans les terminaux supportés : ConEmu, Ghostty 1.2.0+, et iTerm2 3.6.6+. Par défaut : `true`. Apparaît dans `/config` comme **Terminal progress bar** | `false` |

227| `tui` | Moteur de rendu de l'interface utilisateur du terminal. Utilisez `"fullscreen"` pour le moteur de rendu [alt-screen](/fr/fullscreen) sans scintillement avec défilement virtualisé. Utilisez `"default"` pour le moteur de rendu classique d'écran principal. Définir via `/tui` | `"fullscreen"` |

228| `useAutoModeDuringPlan` | Si le mode plan utilise la sémantique du mode auto quand le mode auto est disponible. Par défaut : `true`. Non lu à partir des paramètres de projet partagés. Apparaît dans `/config` comme « Utiliser le mode auto pendant le plan » | `false` |

229| `viewMode` | Mode d'affichage de transcript par défaut au démarrage : `"default"`, `"verbose"`, ou `"focus"`. Remplace la sélection sticky `/focus` quand défini | `"verbose"` |

230| `voice` | Paramètres de [dictée vocale](/fr/voice-dictation) : `enabled` active la dictée, `mode` sélectionne `"hold"` ou `"tap"`, et `autoSubmit` envoie l'invite à la libération de la touche en mode hold. Écrit automatiquement quand vous exécutez `/voice`. Nécessite un compte Claude.ai | `{ "enabled": true, "mode": "tap" }` |

231| `voiceEnabled` | Alias hérité pour `voice.enabled`. Préférez l'objet `voice` | `true` |

232| `wslInheritsWindowsSettings` | (Paramètres gérés Windows uniquement) Quand `true`, Claude Code sur WSL lit les paramètres gérés à partir de la chaîne de politique Windows en plus de `/etc/claude-code`, avec les sources Windows ayant la priorité. Honoré uniquement quand défini dans la clé de registre HKLM ou `C:\Program Files\ClaudeCode\managed-settings.json`, qui nécessitent tous deux l'administrateur Windows pour écrire. Pour que la politique HKCU s'applique également sur WSL, l'indicateur doit également être défini dans HKCU lui-même. N'a aucun effet sur Windows natif | `true` |

233 

234### Paramètres de configuration globale

235 

236Ces paramètres sont stockés dans `~/.claude.json` plutôt que dans `settings.json`. Les ajouter à `settings.json` déclenchera une erreur de validation de schéma.

237 

238<Note>

239 Les versions antérieures à v2.1.119 stockent également `autoScrollEnabled`, `editorMode`, `showTurnDuration`, `teammateMode`, et `terminalProgressBarEnabled` ici au lieu de dans `settings.json`.

240</Note>

241 

242| Clé | Description | Exemple |

243| :------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------ |

244| `autoConnectIde` | Se connecter automatiquement à un IDE en cours d'exécution quand Claude Code démarre à partir d'un terminal externe. Par défaut : `false`. Apparaît dans `/config` comme **Auto-connect to IDE (external terminal)** lors de l'exécution en dehors d'un terminal VS Code ou JetBrains | `true` |

245| `autoInstallIdeExtension` | Installer automatiquement l'extension Claude Code IDE lors de l'exécution à partir d'un terminal VS Code. Par défaut : `true`. Apparaît dans `/config` comme **Auto-install IDE extension** lors de l'exécution dans un terminal VS Code ou JetBrains. Vous pouvez également définir la variable d'environnement [`CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL`](/fr/env-vars) | `false` |

246| `externalEditorContext` | Ajouter la réponse précédente de Claude comme contexte commenté avec `#` quand vous ouvrez l'éditeur externe avec `Ctrl+G`. Par défaut : `false`. Apparaît dans `/config` comme **Show last response in external editor** | `true` |

247 

248### Paramètres de worktree

249 

250Configurez comment `--worktree` crée et gère les git worktrees. Utilisez ces paramètres pour réduire l'utilisation du disque et le temps de démarrage dans les grands monorepos.

251 

252| Clé | Description | Exemple |

253| :---------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------ |

254| `worktree.symlinkDirectories` | Répertoires à créer en lien symbolique à partir du référentiel principal dans chaque worktree pour éviter de dupliquer les grands répertoires sur le disque. Aucun répertoire n'est créé en lien symbolique par défaut | `["node_modules", ".cache"]` |

255| `worktree.sparsePaths` | Répertoires à extraire dans chaque worktree via git sparse-checkout (mode cone). Seuls les chemins listés sont écrits sur le disque, ce qui est plus rapide dans les grands monorepos | `["packages/my-app", "shared/utils"]` |

256 

257Pour copier les fichiers ignorés par git comme `.env` dans les nouveaux worktrees, utilisez un [fichier `.worktreeinclude`](/fr/worktrees#copy-gitignored-files-into-worktrees) dans la racine de votre projet à la place d'un paramètre.

258 

259### Paramètres de permission

260 

261| Clés | Description | Exemple |

262| :---------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------- |

263| `allow` | Tableau de règles de permission pour autoriser l'utilisation d'outils. Voir [Syntaxe de règle de permission](#permission-rule-syntax) ci-dessous pour les détails de correspondance de modèle | `[ "Bash(git diff *)" ]` |

264| `ask` | Tableau de règles de permission pour demander une confirmation lors de l'utilisation d'outils. Voir [Syntaxe de règle de permission](#permission-rule-syntax) ci-dessous | `[ "Bash(git push *)" ]` |

265| `deny` | Tableau de règles de permission pour refuser l'utilisation d'outils. Utilisez ceci pour exclure les fichiers sensibles de l'accès de Claude Code. Voir [Syntaxe de règle de permission](#permission-rule-syntax) et [Limitations de permission Bash](/fr/permissions#tool-specific-permission-rules) | `[ "WebFetch", "Bash(curl *)", "Read(./.env)", "Read(./secrets/**)" ]` |

266| `additionalDirectories` | [Répertoires de travail](/fr/permissions#working-directories) supplémentaires pour l'accès aux fichiers. La plupart de la configuration `.claude/` n'est [pas découverte](/fr/permissions#additional-directories-grant-file-access-not-configuration) à partir de ces répertoires | `[ "../docs/" ]` |

267| `defaultMode` | [Mode de permission](/fr/permission-modes) par défaut lors de l'ouverture de Claude Code. Valeurs valides : `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, `bypassPermissions`. L'indicateur CLI `--permission-mode` remplace ce paramètre pour une seule session | `"acceptEdits"` |

268| `disableBypassPermissionsMode` | Définir à `"disable"` pour empêcher l'activation du mode `bypassPermissions`. Ceci désactive l'indicateur de ligne de commande `--dangerously-skip-permissions`. Généralement placé dans les [paramètres gérés](/fr/permissions#managed-settings) pour appliquer la politique organisationnelle, mais fonctionne à partir de n'importe quelle portée | `"disable"` |

269| `skipDangerousModePermissionPrompt` | Ignorer l'invite de confirmation affichée avant d'entrer en mode bypass permissions via `--dangerously-skip-permissions` ou `defaultMode: "bypassPermissions"`. Ignoré quand défini dans les paramètres de projet (`.claude/settings.json`) pour empêcher les référentiels non fiables d'auto-contourner l'invite | `true` |

270 

271### Syntaxe de règle de permission

272 

273Les règles de permission suivent le format `Tool` ou `Tool(specifier)`. Les règles sont évaluées dans l'ordre : d'abord les règles de refus, puis de demande, puis d'autorisation. La première règle correspondante gagne.

274 

275Exemples rapides :

276 

277| Règle | Effet |

278| :----------------------------- | :------------------------------------------------------- |

279| `Bash` | Correspond à toutes les commandes Bash |

280| `Bash(npm run *)` | Correspond aux commandes commençant par `npm run` |

281| `Read(./.env)` | Correspond à la lecture du fichier `.env` |

282| `WebFetch(domain:example.com)` | Correspond aux demandes de récupération vers example.com |

283 

284Pour la référence complète de la syntaxe des règles, y compris le comportement des caractères génériques, les modèles spécifiques aux outils pour Read, Edit, WebFetch, MCP, et Agent, et les limitations de sécurité des modèles Bash, voir [Syntaxe de règle de permission](/fr/permissions#permission-rule-syntax).

285 

286### Paramètres de sandbox

287 

288Configurez le comportement avancé du sandboxing. Le sandboxing isole les commandes bash de votre système de fichiers et réseau. Voir [Sandboxing](/fr/sandboxing) pour plus de détails.

289 

290| Clés | Description | Exemple |

291| :------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------- |

292| `enabled` | Activer le sandboxing bash (macOS, Linux, et WSL2). Par défaut : false | `true` |

293| `failIfUnavailable` | Quitter avec une erreur au démarrage si `sandbox.enabled` est true mais que le sandbox ne peut pas démarrer (dépendances manquantes ou plateforme non supportée). Quand false (par défaut), un avertissement est affiché et les commandes s'exécutent sans sandbox. Destiné aux déploiements de paramètres gérés qui nécessitent le sandboxing comme une porte dure | `true` |

294| `autoAllowBashIfSandboxed` | Approuver automatiquement les commandes bash quand sandboxées. Par défaut : true | `true` |

295| `excludedCommands` | Commandes qui doivent s'exécuter en dehors du sandbox | `["docker *"]` |

296| `allowUnsandboxedCommands` | Autoriser les commandes à s'exécuter en dehors du sandbox via le paramètre `dangerouslyDisableSandbox`. Quand défini à `false`, l'échappatoire `dangerouslyDisableSandbox` est complètement désactivée et toutes les commandes doivent s'exécuter en sandbox (ou être dans `excludedCommands`). Utile pour les politiques d'entreprise qui nécessitent un sandboxing strict. Par défaut : true | `false` |

297| `filesystem.allowWrite` | Chemins supplémentaires où les commandes sandboxées peuvent écrire. Les tableaux sont fusionnés dans toutes les portées de paramètres : les chemins utilisateur, projet et gérés sont combinés, non remplacés. Également fusionnés avec les chemins des règles de permission `Edit(...)` allow. Voir [préfixes de chemin sandbox](#sandbox-path-prefixes) ci-dessous. | `["/tmp/build", "~/.kube"]` |

298| `filesystem.denyWrite` | Chemins où les commandes sandboxées ne peuvent pas écrire. Les tableaux sont fusionnés dans toutes les portées de paramètres. Également fusionnés avec les chemins des règles de permission `Edit(...)` deny. | `["/etc", "/usr/local/bin"]` |

299| `filesystem.denyRead` | Chemins où les commandes sandboxées ne peuvent pas lire. Les tableaux sont fusionnés dans toutes les portées de paramètres. Également fusionnés avec les chemins des règles de permission `Read(...)` deny. | `["~/.aws/credentials"]` |

300| `filesystem.allowRead` | Chemins à réautoriser pour la lecture dans les régions `denyRead`. A la priorité sur `denyRead`. Les tableaux sont fusionnés dans toutes les portées de paramètres. Utilisez ceci pour créer des modèles d'accès en lecture spécifiques à l'espace de travail. | `["."]` |

301| `filesystem.allowManagedReadPathsOnly` | (Paramètres gérés uniquement) Seuls les chemins `allowRead` à partir des paramètres gérés sont respectés. `denyRead` fusionne toujours à partir de toutes les sources. Par défaut : false | `true` |

302| `network.allowUnixSockets` | (macOS uniquement) Chemins de socket Unix accessibles dans le sandbox. Ignoré sur Linux et WSL2, où le filtre seccomp ne peut pas inspecter les chemins de socket ; utilisez `allowAllUnixSockets` à la place. | `["~/.ssh/agent-socket"]` |

303| `network.allowAllUnixSockets` | Autoriser toutes les connexions de socket Unix dans le sandbox. Sur Linux et WSL2, c'est le seul moyen de permettre les sockets Unix, car il ignore le filtre seccomp qui bloque autrement les appels `socket(AF_UNIX, ...)`. Par défaut : false | `true` |

304| `network.allowLocalBinding` | Autoriser la liaison aux ports localhost (macOS uniquement). Par défaut : false | `true` |

305| `network.allowMachLookup` | Noms de service XPC/Mach supplémentaires que le sandbox peut rechercher (macOS uniquement). Supporte un seul `*` de fin pour la correspondance de préfixe. Nécessaire pour les outils qui communiquent via XPC tels que le simulateur iOS ou Playwright. | `["com.apple.coresimulator.*"]` |

306| `network.allowedDomains` | Tableau de domaines à autoriser pour le trafic réseau sortant. Supporte les caractères génériques (par exemple, `*.example.com`). | `["github.com", "*.npmjs.org"]` |

307| `network.deniedDomains` | Tableau de domaines à bloquer pour le trafic réseau sortant. Supporte la même syntaxe de caractère générique que `allowedDomains`. A la priorité sur `allowedDomains` quand les deux correspondent. Fusionné à partir de toutes les sources de paramètres indépendamment de `allowManagedDomainsOnly`. | `["sensitive.cloud.example.com"]` |

308| `network.allowManagedDomainsOnly` | (Paramètres gérés uniquement) Seul `allowedDomains` et les règles allow `WebFetch(domain:...)` à partir des paramètres gérés sont respectés. Les domaines à partir des paramètres utilisateur, projet et locaux sont ignorés. Les domaines non autorisés sont bloqués automatiquement sans inviter l'utilisateur. Les domaines refusés sont toujours respectés à partir de toutes les sources. Par défaut : false | `true` |

309| `network.httpProxyPort` | Port du proxy HTTP utilisé si vous souhaitez apporter votre propre proxy. S'il n'est pas spécifié, Claude exécutera son propre proxy. | `8080` |

310| `network.socksProxyPort` | Port du proxy SOCKS5 utilisé si vous souhaitez apporter votre propre proxy. S'il n'est pas spécifié, Claude exécutera son propre proxy. | `8081` |

311| `enableWeakerNestedSandbox` | Activer un sandbox plus faible pour les environnements Docker non privilégiés (Linux et WSL2 uniquement). **Réduit la sécurité.** Par défaut : false | `true` |

312| `enableWeakerNetworkIsolation` | (macOS uniquement) Autoriser l'accès au service de confiance TLS du système (`com.apple.trustd.agent`) dans le sandbox. Requis pour que les outils basés sur Go comme `gh`, `gcloud`, et `terraform` vérifient les certificats TLS lors de l'utilisation de `httpProxyPort` avec un proxy MITM et une CA personnalisée. **Réduit la sécurité** en ouvrant un chemin potentiel d'exfiltration de données. Par défaut : false | `true` |

313 

314#### Préfixes de chemin sandbox

315 

316Les chemins dans `filesystem.allowWrite`, `filesystem.denyWrite`, `filesystem.denyRead`, et `filesystem.allowRead` supportent ces préfixes :

317 

318| Préfixe | Signification | Exemple |

319| :--------------------- | :------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------------- |

320| `/` | Chemin absolu à partir de la racine du système de fichiers | `/tmp/build` reste `/tmp/build` |

321| `~/` | Relatif au répertoire personnel | `~/.kube` devient `$HOME/.kube` |

322| `./` ou pas de préfixe | Relatif à la racine du projet pour les paramètres de projet, ou à `~/.claude` pour les paramètres utilisateur | `./output` dans `.claude/settings.json` se résout en `<project-root>/output` |

323 

324Le préfixe plus ancien `//path` pour les chemins absolus fonctionne toujours. Si vous aviez précédemment utilisé `/path` en s'attendant à une résolution relative au projet, passez à `./path`. Cette syntaxe diffère des [règles de permission Read et Edit](/fr/permissions#read-and-edit), qui utilisent `//path` pour absolu et `/path` pour relatif au projet. Les chemins du système de fichiers sandbox utilisent les conventions standard : `/tmp/build` est un chemin absolu.

325 

326**Exemple de configuration :**

327 

328```json theme={null}

329{

330 "sandbox": {

331 "enabled": true,

332 "autoAllowBashIfSandboxed": true,

333 "excludedCommands": ["docker *"],

334 "filesystem": {

335 "allowWrite": ["/tmp/build", "~/.kube"],

336 "denyRead": ["~/.aws/credentials"]

337 },

338 "network": {

339 "allowedDomains": ["github.com", "*.npmjs.org", "registry.yarnpkg.com"],

340 "deniedDomains": ["uploads.github.com"],

341 "allowUnixSockets": [

342 "/var/run/docker.sock"

343 ],

344 "allowLocalBinding": true

345 }

346 }

347}

348```

349 

350Les **restrictions de système de fichiers et réseau** peuvent être configurées de deux façons qui sont fusionnées ensemble :

351 

352* **Paramètres `sandbox.filesystem`** (affichés ci-dessus) : Contrôlez les chemins à la limite du sandbox au niveau du système d'exploitation. Ces restrictions s'appliquent à toutes les commandes de sous-processus (par exemple, `kubectl`, `terraform`, `npm`), pas seulement aux outils de fichier de Claude.

353* **Règles de permission** : Utilisez les règles allow/deny `Edit` pour contrôler l'accès à l'outil de fichier de Claude, les règles deny `Read` pour bloquer les lectures, et les règles allow/deny `WebFetch` pour contrôler les domaines réseau. Les chemins de ces règles sont également fusionnés dans la configuration du sandbox.

354 

355### Paramètres d'attribution

356 

357Claude Code ajoute l'attribution aux commits git et aux pull requests. Ceux-ci sont configurés séparément :

358 

359* Les commits utilisent les [trailers git](https://git-scm.com/docs/git-interpret-trailers) (comme `Co-Authored-By`) par défaut, qui peuvent être personnalisés ou désactivés

360* Les descriptions de pull request sont du texte brut

361 

362| Clés | Description |

363| :------- | :----------------------------------------------------------------------------------------------------------- |

364| `commit` | Attribution pour les commits git, y compris tous les trailers. La chaîne vide masque l'attribution de commit |

365| `pr` | Attribution pour les descriptions de pull request. La chaîne vide masque l'attribution de pull request |

366 

367**Attribution de commit par défaut :**

368 

369```text theme={null}

370🤖 Generated with [Claude Code](https://claude.com/claude-code)

371 

372 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

373```

374 

375**Attribution de pull request par défaut :**

376 

377```text theme={null}

378🤖 Generated with [Claude Code](https://claude.com/claude-code)

379```

380 

381**Exemple :**

382 

383```json theme={null}

384{

385 "attribution": {

386 "commit": "Generated with AI\n\nCo-Authored-By: AI <ai@example.com>",

387 "pr": ""

388 }

389}

390```

391 

392<Note>

393 Le paramètre `attribution` a la priorité sur le paramètre déprécié `includeCoAuthoredBy`. Pour masquer toute attribution, définissez `commit` et `pr` à des chaînes vides.

394</Note>

395 

396### Paramètres de suggestion de fichier

397 

398Configurez une commande personnalisée pour l'autocomplétion de chemin de fichier `@`. La suggestion de fichier intégrée utilise la traversée rapide du système de fichiers, mais les grands monorepos peuvent bénéficier d'une indexation spécifique au projet telle qu'un index de fichier pré-construit ou un outillage personnalisé.

399 

400```json theme={null}

401{

402 "fileSuggestion": {

403 "type": "command",

404 "command": "~/.claude/file-suggestion.sh"

405 }

406}

407```

408 

409La commande s'exécute avec les mêmes variables d'environnement que les [hooks](/fr/hooks), y compris `CLAUDE_PROJECT_DIR`. Elle reçoit du JSON via stdin avec un champ `query` :

410 

411```json theme={null}

412{"query": "src/comp"}

413```

414 

415Générez les chemins de fichier séparés par des sauts de ligne vers stdout (actuellement limité à 15) :

416 

417```text theme={null}

418src/components/Button.tsx

419src/components/Modal.tsx

420src/components/Form.tsx

421```

422 

423**Exemple :**

424 

425```bash theme={null}

426#!/bin/bash

427query=$(cat | jq -r '.query')

428your-repo-file-index --query "$query" | head -20

429```

430 

431### Configuration des hooks

432 

433Ces paramètres contrôlent quels hooks sont autorisés à s'exécuter et ce que les hooks HTTP peuvent accéder. Le paramètre `allowManagedHooksOnly` ne peut être configuré que dans les [paramètres gérés](#settings-files). Les listes blanches d'URL et de variables d'environnement peuvent être définies à n'importe quel niveau de paramètres et fusionnent entre les sources.

434 

435**Comportement quand `allowManagedHooksOnly` est `true` :**

436 

437* Les hooks gérés et les hooks SDK sont chargés

438* Les hooks des plugins force-activés dans les paramètres gérés `enabledPlugins` sont chargés. Cela permet aux administrateurs de distribuer des hooks vérifiés via une marketplace organisationnelle tout en bloquant tout le reste. La confiance est accordée par l'ID complet `plugin@marketplace`, donc un plugin avec le même nom d'une marketplace différente reste bloqué

439* Les hooks utilisateur, projet et tous les autres hooks de plugin sont bloqués

440 

441**Restreindre les URL des hooks HTTP :**

442 

443Limitez les URL que les hooks HTTP peuvent cibler. Supporte `*` comme caractère générique pour la correspondance. Quand le tableau est défini, les hooks HTTP ciblant des URL non correspondantes sont silencieusement bloqués.

444 

445```json theme={null}

446{

447 "allowedHttpHookUrls": ["https://hooks.example.com/*", "http://localhost:*"]

448}

449```

450 

451**Restreindre les variables d'environnement des hooks HTTP :**

452 

453Limitez les noms de variables d'environnement que les hooks HTTP peuvent interpoler dans les valeurs d'en-tête. Le `allowedEnvVars` effectif de chaque hook est l'intersection de sa propre liste et ce paramètre.

454 

455```json theme={null}

456{

457 "httpHookAllowedEnvVars": ["MY_TOKEN", "HOOK_SECRET"]

458}

459```

460 

461### Précédence des paramètres

462 

463Les paramètres s'appliquent dans l'ordre de précédence. Du plus élevé au plus bas :

464 

4651. **Paramètres gérés** ([gérés par le serveur](/fr/server-managed-settings), [politiques MDM/au niveau du système d'exploitation](#configuration-scopes), ou [paramètres gérés](/fr/settings#settings-files))

466 * Politiques déployées par l'IT via la livraison par serveur, les profils de configuration MDM, les politiques de registre, ou les fichiers de paramètres gérés

467 * Ne peuvent pas être contournés par aucun autre niveau, y compris les arguments de ligne de commande

468 * Au sein du niveau géré, la précédence est : gérés par le serveur > politiques MDM/au niveau du système d'exploitation > fichiers (`managed-settings.d/*.json` + `managed-settings.json`) > registre HKCU (Windows uniquement). Une seule source gérée est utilisée ; les sources ne fusionnent pas entre les niveaux. Au sein du niveau basé sur fichier, les fichiers drop-in et le fichier de base sont fusionnés ensemble.

469 

4702. **Arguments de ligne de commande**

471 * Remplacements temporaires pour une session spécifique

472 

4733. **Paramètres de projet local** (`.claude/settings.local.json`)

474 * Paramètres personnels spécifiques au projet

475 

4764. **Paramètres de projet partagés** (`.claude/settings.json`)

477 * Paramètres de projet partagés par l'équipe dans le contrôle de source

478 

4795. **Paramètres utilisateur** (`~/.claude/settings.json`)

480 * Paramètres globaux personnels

481 

482Cette hiérarchie garantit que les politiques organisationnelles sont toujours appliquées tout en permettant aux équipes et aux individus de personnaliser leur expérience. La même précédence s'applique que vous exécutiez Claude Code à partir de la CLI, de l'[extension VS Code](/fr/vs-code), ou d'un [IDE JetBrains](/fr/jetbrains).

483 

484Par exemple, si vos paramètres utilisateur autorisent `Bash(npm run *)` mais que les paramètres partagés d'un projet le refusent, le paramètre de projet a la priorité et la commande est bloquée.

485 

486<Note>

487 **Les paramètres de tableau fusionnent entre les portées.** Quand le même paramètre avec valeur de tableau (tel que `sandbox.filesystem.allowWrite` ou `permissions.allow`) apparaît dans plusieurs portées, les tableaux sont **concaténés et dédupliqués**, non remplacés. Cela signifie que les portées de priorité inférieure peuvent ajouter des entrées sans remplacer celles définies par les portées de priorité supérieure, et vice versa. Par exemple, si les paramètres gérés définissent `allowWrite` à `["/opt/company-tools"]` et qu'un utilisateur ajoute `["~/.kube"]`, les deux chemins sont inclus dans la configuration finale.

488</Note>

489 

490### Vérifier les paramètres actifs

491 

492Exécutez `/status` dans Claude Code pour voir quelles sources de paramètres sont actives et d'où elles proviennent. La sortie affiche chaque couche de configuration (gérée, utilisateur, projet) ainsi que son origine, telle que `Enterprise managed settings (remote)`, `Enterprise managed settings (plist)`, `Enterprise managed settings (HKLM)`, `Enterprise managed settings (HKCU)`, ou `Enterprise managed settings (file)`. Si un fichier de paramètres contient des erreurs, `/status` signale le problème pour que vous puissiez le corriger.

493 

494### Points clés du système de configuration

495 

496* **Fichiers de mémoire (`CLAUDE.md`)** : Contiennent les instructions et le contexte que Claude charge au démarrage

497* **Fichiers de paramètres (JSON)** : Configurez les permissions, les variables d'environnement, et le comportement des outils

498* **Skills** : Invites personnalisées qui peuvent être invoquées avec `/skill-name` ou chargées automatiquement par Claude

499* **MCP servers** : Étendez Claude Code avec des outils et des intégrations supplémentaires

500* **Précédence** : Les configurations de niveau supérieur (Managed) remplacent celles de niveau inférieur (User/Project)

501* **Héritage** : Les paramètres sont fusionnés, avec les paramètres plus spécifiques s'ajoutant à ou remplaçant les paramètres plus larges

502 

503### Invite système

504 

505L'invite système interne de Claude Code n'est pas publiée. Pour ajouter des instructions personnalisées, utilisez les fichiers `CLAUDE.md` ou l'indicateur `--append-system-prompt`.

506 

507### Exclure les fichiers sensibles

508 

509Pour empêcher Claude Code d'accéder aux fichiers contenant des informations sensibles comme les clés API, les secrets, et les fichiers d'environnement, utilisez le paramètre `permissions.deny` dans votre fichier `.claude/settings.json` :

510 

511```json theme={null}

512{

513 "permissions": {

514 "deny": [

515 "Read(./.env)",

516 "Read(./.env.*)",

517 "Read(./secrets/**)",

518 "Read(./config/credentials.json)",

519 "Read(./build)"

520 ]

521 }

522}

523```

524 

525Ceci remplace la configuration dépréciée `ignorePatterns`. Les fichiers correspondant à ces modèles sont exclus de la découverte de fichiers et des résultats de recherche, et les opérations de lecture sur ces fichiers sont refusées.

526 

527## Configuration des subagents

528 

529Claude Code supporte les subagents IA personnalisés qui peuvent être configurés aux niveaux utilisateur et projet. Ces subagents sont stockés en tant que fichiers Markdown avec du frontmatter YAML :

530 

531* **Subagents utilisateur** : `~/.claude/agents/` - Disponibles dans tous vos projets

532* **Subagents de projet** : `.claude/agents/` - Spécifiques à votre projet et peuvent être partagés avec votre équipe

533 

534Les fichiers de subagent définissent des assistants IA spécialisés avec des invites personnalisées et des permissions d'outils. En savoir plus sur la création et l'utilisation des subagents dans la [documentation des subagents](/fr/sub-agents).

535 

536## Configuration des plugins

537 

538Claude Code supporte un système de plugins qui vous permet d'étendre les fonctionnalités avec des skills, des agents, des hooks, et des MCP servers. Les plugins sont distribués via des marketplaces et peuvent être configurés aux niveaux utilisateur et référentiel.

539 

540### Paramètres des plugins

541 

542Paramètres liés aux plugins dans `settings.json` :

543 

544```json theme={null}

545{

546 "enabledPlugins": {

547 "formatter@acme-tools": true,

548 "deployer@acme-tools": true,

549 "analyzer@security-plugins": false

550 },

551 "extraKnownMarketplaces": {

552 "acme-tools": {

553 "source": "github",

554 "repo": "acme-corp/claude-plugins"

555 }

556 }

557}

558```

559 

560#### `enabledPlugins`

561 

562Contrôle quels plugins sont activés. Format : `"plugin-name@marketplace-name": true/false`

563 

564**Portées** :

565 

566* **Paramètres utilisateur** (`~/.claude/settings.json`) : Préférences personnelles de plugin

567* **Paramètres de projet** (`.claude/settings.json`) : Plugins spécifiques au projet partagés avec l'équipe

568* **Paramètres locaux** (`.claude/settings.local.json`) : Remplacements par machine (non commités)

569* **Paramètres gérés** (`managed-settings.json`) : Remplacements de politique au niveau de l'organisation qui bloquent l'installation à toutes les portées et masquent le plugin de la marketplace

570 

571**Exemple** :

572 

573```json theme={null}

574{

575 "enabledPlugins": {

576 "code-formatter@team-tools": true,

577 "deployment-tools@team-tools": true,

578 "experimental-features@personal": false

579 }

580}

581```

582 

583#### `extraKnownMarketplaces`

584 

585Définit les marketplaces supplémentaires qui doivent être mises à disposition pour le référentiel. Généralement utilisé dans les paramètres au niveau du référentiel pour s'assurer que les membres de l'équipe ont accès aux sources de plugins requises.

586 

587**Quand un référentiel inclut `extraKnownMarketplaces`** :

588 

5891. Les membres de l'équipe sont invités à installer la marketplace quand ils font confiance au dossier

5902. Les membres de l'équipe sont ensuite invités à installer les plugins de cette marketplace

5913. Les utilisateurs peuvent ignorer les marketplaces ou plugins indésirables (stockés dans les paramètres utilisateur)

5924. L'installation respecte les limites de confiance et nécessite un consentement explicite

593 

594**Exemple** :

595 

596```json theme={null}

597{

598 "extraKnownMarketplaces": {

599 "acme-tools": {

600 "source": {

601 "source": "github",

602 "repo": "acme-corp/claude-plugins"

603 }

604 },

605 "security-plugins": {

606 "source": {

607 "source": "git",

608 "url": "https://git.example.com/security/plugins.git"

609 }

610 }

611 }

612}

613```

614 

615**Types de source de marketplace** :

616 

617* `github` : Référentiel GitHub (utilise `repo`)

618* `git` : N'importe quelle URL git (utilise `url`)

619* `directory` : Chemin du système de fichiers local (utilise `path`, pour le développement uniquement)

620* `hostPattern` : Modèle regex pour correspondre aux hôtes de marketplace (utilise `hostPattern`)

621* `settings` : marketplace en ligne déclarée directement dans settings.json sans référentiel hébergé séparé (utilise `name` et `plugins`)

622 

623Utilisez `source: 'settings'` pour déclarer un petit ensemble de plugins en ligne sans configurer un référentiel de marketplace hébergé. Les plugins listés ici doivent référencer des sources externes telles que GitHub ou npm. Vous devez toujours activer chaque plugin séparément dans `enabledPlugins`.

624 

625```json theme={null}

626{

627 "extraKnownMarketplaces": {

628 "team-tools": {

629 "source": {

630 "source": "settings",

631 "name": "team-tools",

632 "plugins": [

633 {

634 "name": "code-formatter",

635 "source": {

636 "source": "github",

637 "repo": "acme-corp/code-formatter"

638 }

639 }

640 ]

641 }

642 }

643 }

644}

645```

646 

647#### `strictKnownMarketplaces`

648 

649**Paramètres gérés uniquement** : Contrôle quelles marketplaces de plugins les utilisateurs sont autorisés à ajouter et installer des plugins à partir de. Ce paramètre ne peut être configuré que dans les [paramètres gérés](/fr/settings#settings-files) et fournit aux administrateurs un contrôle strict sur les sources de marketplace.

650 

651**Emplacements des fichiers de paramètres gérés** :

652 

653* **macOS** : `/Library/Application Support/ClaudeCode/managed-settings.json`

654* **Linux et WSL** : `/etc/claude-code/managed-settings.json`

655* **Windows** : `C:\Program Files\ClaudeCode\managed-settings.json`

656 

657**Caractéristiques clés** :

658 

659* Disponible uniquement dans les paramètres gérés (`managed-settings.json`)

660* Ne peut pas être contourné par les paramètres utilisateur ou projet (précédence la plus élevée)

661* Appliqué AVANT les opérations de réseau/système de fichiers (les sources bloquées ne s'exécutent jamais)

662* Utilise la correspondance exacte pour les spécifications de source (y compris `ref`, `path` pour les sources git), sauf `hostPattern`, qui utilise la correspondance regex

663 

664**Comportement de la liste blanche** :

665 

666* `undefined` (par défaut) : Pas de restrictions - les utilisateurs peuvent ajouter n'importe quelle marketplace

667* Tableau vide `[]` : Verrouillage complet - les utilisateurs ne peuvent pas ajouter de nouvelles marketplaces

668* Liste de sources : Les utilisateurs ne peuvent ajouter que les marketplaces qui correspondent exactement

669 

670**Tous les types de source supportés** :

671 

672La liste blanche supporte plusieurs types de source de marketplace. La plupart des sources utilisent la correspondance exacte, tandis que `hostPattern` utilise la correspondance regex par rapport à l'hôte de la marketplace.

673 

6741. **Référentiels GitHub** :

675 

676```json theme={null}

677{ "source": "github", "repo": "acme-corp/approved-plugins" }

678{ "source": "github", "repo": "acme-corp/security-tools", "ref": "v2.0" }

679{ "source": "github", "repo": "acme-corp/plugins", "ref": "main", "path": "marketplace" }

680```

681 

682Champs : `repo` (requis), `ref` (optionnel : branche/tag/SHA), `path` (optionnel : sous-répertoire)

683 

6842. **Référentiels Git** :

685 

686```json theme={null}

687{ "source": "git", "url": "https://gitlab.example.com/tools/plugins.git" }

688{ "source": "git", "url": "https://bitbucket.org/acme-corp/plugins.git", "ref": "production" }

689{ "source": "git", "url": "ssh://git@git.example.com/plugins.git", "ref": "v3.1", "path": "approved" }

690```

691 

692Champs : `url` (requis), `ref` (optionnel : branche/tag/SHA), `path` (optionnel : sous-répertoire)

693 

6943. **Marketplaces basées sur URL** :

695 

696```json theme={null}

697{ "source": "url", "url": "https://plugins.example.com/marketplace.json" }

698{ "source": "url", "url": "https://cdn.example.com/marketplace.json", "headers": { "Authorization": "Bearer ${TOKEN}" } }

699```

700 

701Champs : `url` (requis), `headers` (optionnel : en-têtes HTTP pour l'accès authentifié)

702 

703<Note>

704 Les marketplaces basées sur URL téléchargent uniquement le fichier `marketplace.json`. Elles ne téléchargent pas les fichiers de plugin à partir du serveur. Les plugins dans les marketplaces basées sur URL doivent utiliser des sources externes (URLs GitHub, npm, ou git) plutôt que des chemins relatifs. Pour les plugins avec des chemins relatifs, utilisez une marketplace basée sur Git à la place. Voir [Dépannage](/fr/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces) pour plus de détails.

705</Note>

706 

7074. **Packages NPM** :

708 

709```json theme={null}

710{ "source": "npm", "package": "@acme-corp/claude-plugins" }

711{ "source": "npm", "package": "@acme-corp/approved-marketplace" }

712```

713 

714Champs : `package` (requis, supporte les packages scoped)

715 

7165. **Chemins de fichier** :

717 

718```json theme={null}

719{ "source": "file", "path": "/usr/local/share/claude/acme-marketplace.json" }

720{ "source": "file", "path": "/opt/acme-corp/plugins/marketplace.json" }

721```

722 

723Champs : `path` (requis : chemin absolu vers le fichier marketplace.json)

724 

7256. **Chemins de répertoire** :

726 

727```json theme={null}

728{ "source": "directory", "path": "/usr/local/share/claude/acme-plugins" }

729{ "source": "directory", "path": "/opt/acme-corp/approved-marketplaces" }

730```

731 

732Champs : `path` (requis : chemin absolu vers le répertoire contenant `.claude-plugin/marketplace.json`)

733 

7347. **Correspondance de modèle d'hôte** :

735 

736```json theme={null}

737{ "source": "hostPattern", "hostPattern": "^github\\.example\\.com$" }

738{ "source": "hostPattern", "hostPattern": "^gitlab\\.internal\\.example\\.com$" }

739```

740 

741Champs : `hostPattern` (requis : modèle regex pour correspondre à l'hôte de la marketplace)

742 

743Utilisez la correspondance de modèle d'hôte quand vous voulez autoriser toutes les marketplaces d'un hôte spécifique sans énumérer chaque référentiel individuellement. Ceci est utile pour les organisations avec des serveurs GitHub Enterprise ou GitLab internes où les développeurs créent leurs propres marketplaces.

744 

745Extraction d'hôte par type de source :

746 

747* `github` : correspond toujours à `github.com`

748* `git` : extrait le nom d'hôte de l'URL (supporte les formats HTTPS et SSH)

749* `url` : extrait le nom d'hôte de l'URL

750* `npm`, `file`, `directory` : non supporté pour la correspondance de modèle d'hôte

751 

752**Exemples de configuration** :

753 

754Exemple : autoriser uniquement les marketplaces spécifiques :

755 

756```json theme={null}

757{

758 "strictKnownMarketplaces": [

759 {

760 "source": "github",

761 "repo": "acme-corp/approved-plugins"

762 },

763 {

764 "source": "github",

765 "repo": "acme-corp/security-tools",

766 "ref": "v2.0"

767 },

768 {

769 "source": "url",

770 "url": "https://plugins.example.com/marketplace.json"

771 },

772 {

773 "source": "npm",

774 "package": "@acme-corp/compliance-plugins"

775 }

776 ]

777}

778```

779 

780Exemple - Désactiver tous les ajouts de marketplace :

781 

782```json theme={null}

783{

784 "strictKnownMarketplaces": []

785}

786```

787 

788Exemple : autoriser toutes les marketplaces d'un serveur git interne :

789 

790```json theme={null}

791{

792 "strictKnownMarketplaces": [

793 {

794 "source": "hostPattern",

795 "hostPattern": "^github\\.example\\.com$"

796 }

797 ]

798}

799```

800 

801**Exigences de correspondance exacte** :

802 

803Les sources de marketplace doivent correspondre **exactement** pour qu'un ajout d'utilisateur soit autorisé. Pour les sources basées sur git (`github` et `git`), cela inclut tous les champs optionnels :

804 

805* Le `repo` ou `url` doit correspondre exactement

806* Le champ `ref` doit correspondre exactement (ou les deux être non définis)

807* Le champ `path` doit correspondre exactement (ou les deux être non définis)

808 

809Exemples de sources qui **NE correspondent PAS** :

810 

811```json theme={null}

812// Ce sont des sources DIFFÉRENTES :

813{ "source": "github", "repo": "acme-corp/plugins" }

814{ "source": "github", "repo": "acme-corp/plugins", "ref": "main" }

815 

816// Ce sont aussi DIFFÉRENTES :

817{ "source": "github", "repo": "acme-corp/plugins", "path": "marketplace" }

818{ "source": "github", "repo": "acme-corp/plugins" }

819```

820 

821**Comparaison avec `extraKnownMarketplaces`** :

822 

823| Aspect | `strictKnownMarketplaces` | `extraKnownMarketplaces` |

824| ------------------------- | -------------------------------------------------- | ---------------------------------------------------- |

825| **Objectif** | Application de la politique organisationnelle | Commodité de l'équipe |

826| **Fichier de paramètres** | `managed-settings.json` uniquement | N'importe quel fichier de paramètres |

827| **Comportement** | Bloque les ajouts non autorisés | Installe automatiquement les marketplaces manquantes |

828| **Quand appliqué** | Avant les opérations de réseau/système de fichiers | Après l'invite de confiance de l'utilisateur |

829| **Peut être contourné** | Non (précédence la plus élevée) | Oui (par les paramètres de précédence supérieure) |

830| **Format de source** | Objet de source direct | Marketplace nommée avec source imbriquée |

831| **Cas d'usage** | Conformité, restrictions de sécurité | Intégration, standardisation |

832 

833**Différence de format** :

834 

835`strictKnownMarketplaces` utilise des objets de source directs :

836 

837```json theme={null}

838{

839 "strictKnownMarketplaces": [

840 { "source": "github", "repo": "acme-corp/plugins" }

841 ]

842}

843```

844 

845`extraKnownMarketplaces` nécessite des marketplaces nommées :

846 

847```json theme={null}

848{

849 "extraKnownMarketplaces": {

850 "acme-tools": {

851 "source": { "source": "github", "repo": "acme-corp/plugins" }

852 }

853 }

854}

855```

856 

857**Utiliser les deux ensemble** :

858 

859`strictKnownMarketplaces` est une porte de politique : elle contrôle ce que les utilisateurs peuvent ajouter mais n'enregistre aucune marketplace. Pour à la fois restreindre et pré-enregistrer une marketplace pour tous les utilisateurs, définissez les deux dans `managed-settings.json` :

860 

861```json theme={null}

862{

863 "strictKnownMarketplaces": [

864 { "source": "github", "repo": "acme-corp/plugins" }

865 ],

866 "extraKnownMarketplaces": {

867 "acme-tools": {

868 "source": { "source": "github", "repo": "acme-corp/plugins" }

869 }

870 }

871}

872```

873 

874Avec uniquement `strictKnownMarketplaces` défini, les utilisateurs peuvent toujours ajouter la marketplace autorisée manuellement via `/plugin marketplace add`, mais elle n'est pas disponible automatiquement.

875 

876**Notes importantes** :

877 

878* Les restrictions sont vérifiées AVANT toute demande réseau ou opération de système de fichiers

879* Quand bloquée, les utilisateurs voient des messages d'erreur clairs indiquant que la source est bloquée par la politique gérée

880* La restriction s'applique à l'ajout de marketplace et à l'installation, la mise à jour, l'actualisation et la mise à jour automatique de plugins. Une marketplace ajoutée avant que la politique soit définie ne peut pas être utilisée pour installer ou mettre à jour des plugins une fois que sa source ne correspond plus à la liste blanche

881* Les paramètres gérés ont la précédence la plus élevée et ne peuvent pas être contournés

882 

883Voir [Restrictions de marketplace gérées](/fr/plugin-marketplaces#managed-marketplace-restrictions) pour la documentation destinée aux utilisateurs.

884 

885### Gérer les plugins

886 

887Utilisez la commande `/plugin` pour gérer les plugins de manière interactive :

888 

889* Parcourir les plugins disponibles à partir des marketplaces

890* Installer/désinstaller les plugins

891* Activer/désactiver les plugins

892* Afficher les détails du plugin (skills, agents, hooks fournis)

893* Ajouter/supprimer les marketplaces

894 

895En savoir plus sur le système de plugins dans la [documentation des plugins](/fr/plugins).

896 

897## Variables d'environnement

898 

899Les variables d'environnement vous permettent de contrôler le comportement de Claude Code sans éditer les fichiers de paramètres. N'importe quelle variable peut également être configurée dans [`settings.json`](#available-settings) sous la clé `env` pour l'appliquer à chaque session ou la déployer à votre équipe.

900 

901Voir la [référence des variables d'environnement](/fr/env-vars) pour la liste complète.

902 

903## Outils disponibles pour Claude

904 

905Claude Code a accès à un ensemble d'outils pour lire, éditer, rechercher, exécuter des commandes, et orchestrer les subagents. Les noms d'outils sont les chaînes exactes que vous utilisez dans les règles de permission et les correspondances de hooks.

906 

907Voir la [référence des outils](/fr/tools-reference) pour la liste complète et les détails du comportement de l'outil Bash.

908 

909## Voir aussi

910 

911* [Permissions](/fr/permissions) : système de permissions, syntaxe des règles, modèles spécifiques aux outils, et politiques gérées

912* [Authentification](/fr/authentication) : configurer l'accès utilisateur à Claude Code

913* [Déboguer votre configuration](/fr/debug-your-config) : diagnostiquer pourquoi un paramètre, un hook, ou un serveur MCP ne prend pas effet

914* [Dépannage de l'installation et de la connexion](/fr/troubleshoot-install) : problèmes d'installation, d'authentification, et de plateforme

setup.md +606 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Configuration avancée

6 

7> Configuration requise, installation spécifique à la plateforme, gestion des versions et désinstallation pour Claude Code.

8 

9Cette page couvre la configuration requise, les détails d'installation spécifiques à la plateforme, les mises à jour et la désinstallation. Pour une présentation guidée de votre première session, consultez le [démarrage rapide](/fr/quickstart). Si vous n'avez jamais utilisé un terminal auparavant, consultez le [guide du terminal](/fr/terminal-guide).

10 

11## Configuration requise

12 

13Claude Code s'exécute sur les plateformes et configurations suivantes :

14 

15* **Système d'exploitation** :

16 * macOS 13.0+

17 * Windows 10 1809+ ou Windows Server 2019+

18 * Ubuntu 20.04+

19 * Debian 10+

20 * Alpine Linux 3.19+

21* **Matériel** : 4 Go+ de RAM, processeur x64 ou ARM64

22* **Réseau** : connexion Internet requise. Consultez la [configuration réseau](/fr/network-config#network-access-requirements).

23* **Shell** : Bash, Zsh, PowerShell ou CMD. Sur Windows natif, [Git for Windows](https://git-scm.com/downloads/win) est recommandé ; Claude Code bascule vers PowerShell en l'absence de Git Bash. Les configurations WSL ne nécessitent pas Git for Windows.

24* **Localisation** : [pays supportés par Anthropic](https://www.anthropic.com/supported-countries)

25 

26### Dépendances supplémentaires

27 

28* **ripgrep** : généralement inclus avec Claude Code. Si la recherche échoue, consultez le [dépannage de la recherche](/fr/troubleshooting#search-and-discovery-issues).

29 

30## Installer Claude Code

31 

32<Tip>

33 Préférez une interface graphique ? L'[application de bureau](/fr/desktop-quickstart) vous permet d'utiliser Claude Code sans le terminal. Téléchargez-la pour [macOS](https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code\&utm_medium=docs) ou [Windows](https://claude.com/download?utm_source=claude_code\&utm_medium=docs).

34 

35 Nouveau sur le terminal ? Consultez le [guide du terminal](/fr/terminal-guide) pour des instructions étape par étape.

36</Tip>

37 

38To install Claude Code, use one of the following methods:

39 

40<Tabs>

41 <Tab title="Native Install (Recommended)">

42 **macOS, Linux, WSL:**

43 

44 ```bash theme={null}

45 curl -fsSL https://claude.ai/install.sh | bash

46 ```

47 

48 **Windows PowerShell:**

49 

50 ```powershell theme={null}

51 irm https://claude.ai/install.ps1 | iex

52 ```

53 

54 **Windows CMD:**

55 

56 ```batch theme={null}

57 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

58 ```

59 

60 If you see `The token '&&' is not a valid statement separator`, you're in PowerShell, not CMD. If you see `'irm' is not recognized as an internal or external command`, you're in CMD, not PowerShell. Your prompt shows `PS C:\` when you're in PowerShell and `C:\` without the `PS` when you're in CMD.

61 

62 [Git for Windows](https://git-scm.com/downloads/win) is recommended on native Windows so Claude Code can use the Bash tool. If Git for Windows is not installed, Claude Code uses PowerShell as the shell tool instead. WSL setups do not need Git for Windows.

63 

64 <Info>

65 Native installations automatically update in the background to keep you on the latest version.

66 </Info>

67 </Tab>

68 

69 <Tab title="Homebrew">

70 ```bash theme={null}

71 brew install --cask claude-code

72 ```

73 

74 Homebrew offers two casks. `claude-code` tracks the stable release channel, which is typically about a week behind and skips releases with major regressions. `claude-code@latest` tracks the latest channel and receives new versions as soon as they ship.

75 

76 <Info>

77 Homebrew installations do not auto-update. Run `brew upgrade claude-code` or `brew upgrade claude-code@latest`, depending on which cask you installed, to get the latest features and security fixes.

78 </Info>

79 </Tab>

80 

81 <Tab title="WinGet">

82 ```powershell theme={null}

83 winget install Anthropic.ClaudeCode

84 ```

85 

86 <Info>

87 WinGet installations do not auto-update. Run `winget upgrade Anthropic.ClaudeCode` periodically to get the latest features and security fixes.

88 </Info>

89 </Tab>

90</Tabs>

91 

92You can also install with [apt, dnf, or apk](/en/setup#install-with-linux-package-managers) on Debian, Fedora, RHEL, and Alpine.

93 

94Une fois l'installation terminée, ouvrez un terminal dans le projet sur lequel vous souhaitez travailler et démarrez Claude Code :

95 

96```bash theme={null}

97claude

98```

99 

100Si vous rencontrez des problèmes lors de l'installation, consultez [Dépannage de l'installation et de la connexion](/fr/troubleshoot-install).

101 

102### Configuration sur Windows

103 

104Vous pouvez exécuter Claude Code nativement sur Windows ou à l'intérieur de WSL. Choisissez en fonction de l'endroit où vos projets sont situés et des fonctionnalités dont vous avez besoin :

105 

106| Option | Nécessite | [Sandboxing](/fr/sandboxing) | Quand l'utiliser |

107| ------------- | ------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------------- |

108| Windows natif | [Git for Windows](https://git-scm.com/downloads/win) recommandé ; PowerShell utilisé en l'absence de celui-ci | Non supporté | Projets et outils Windows natifs |

109| WSL 2 | WSL 2 activé | Supporté | Chaînes d'outils Linux ou exécution de commandes en sandbox |

110| WSL 1 | WSL 1 activé | Non supporté | Si WSL 2 n'est pas disponible |

111 

112**Option 1 : Windows natif avec Git Bash**

113 

114Installez [Git for Windows](https://git-scm.com/downloads/win), puis exécutez la commande d'installation à partir de PowerShell ou CMD. Vous n'avez pas besoin d'exécuter en tant qu'administrateur.

115 

116Que vous installiez à partir de PowerShell ou CMD affecte uniquement la commande d'installation que vous exécutez. Votre invite affiche `PS C:\Users\VotreNom>` dans PowerShell et `C:\Users\VotreNom>` sans le `PS` dans CMD. Si vous êtes nouveau sur le terminal, le [guide du terminal](/fr/terminal-guide#windows) vous guide à travers chaque étape.

117 

118Après l'installation, lancez `claude` à partir de PowerShell, CMD ou Git Bash. Lorsque Git Bash est installé, Claude Code l'utilise en interne pour exécuter les commandes quel que soit l'endroit d'où vous l'avez lancé. Si Claude Code ne trouve pas votre installation de Git Bash, définissez le chemin dans votre [fichier settings.json](/fr/settings) :

119 

120```json theme={null}

121{

122 "env": {

123 "CLAUDE_CODE_GIT_BASH_PATH": "C:\\Program Files\\Git\\bin\\bash.exe"

124 }

125}

126```

127 

128Claude Code peut également exécuter PowerShell nativement sur Windows. Lorsque Git Bash est installé, l'outil PowerShell est déployé progressivement en tant qu'option supplémentaire : définissez `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` pour l'activer ou `0` pour le désactiver. Consultez [outil PowerShell](/fr/tools-reference#powershell-tool) pour la configuration et les limitations.

129 

130**Option 2 : WSL**

131 

132Ouvrez votre distribution WSL et exécutez le programme d'installation Linux à partir des [instructions d'installation](#install-claude-code) ci-dessus. Vous installez et lancez `claude` à l'intérieur du terminal WSL, pas à partir de PowerShell ou CMD.

133 

134### Alpine Linux et distributions basées sur musl

135 

136L'installateur natif sur Alpine et autres distributions basées sur musl/uClibc nécessite `libgcc`, `libstdc++` et `ripgrep`. Installez-les à l'aide du gestionnaire de paquets de votre distribution, puis définissez `USE_BUILTIN_RIPGREP=0`.

137 

138Cet exemple installe les paquets requis sur Alpine :

139 

140```bash theme={null}

141apk add libgcc libstdc++ ripgrep

142```

143 

144Ensuite, définissez `USE_BUILTIN_RIPGREP` à `0` dans votre fichier [`settings.json`](/fr/settings#available-settings) :

145 

146```json theme={null}

147{

148 "env": {

149 "USE_BUILTIN_RIPGREP": "0"

150 }

151}

152```

153 

154## Vérifier votre installation

155 

156Après l'installation, confirmez que Claude Code fonctionne :

157 

158```bash theme={null}

159claude --version

160```

161 

162Si cela échoue avec `command not found` ou une autre erreur, consultez [Dépannage de l'installation et de la connexion](/fr/troubleshoot-install).

163 

164Pour une vérification plus détaillée de votre installation et configuration, exécutez [`claude doctor`](/fr/troubleshooting#get-more-help) :

165 

166```bash theme={null}

167claude doctor

168```

169 

170## S'authentifier

171 

172Claude Code nécessite un compte Pro, Max, Team, Enterprise ou Console. Le plan gratuit Claude.ai n'inclut pas l'accès à Claude Code. Vous pouvez également utiliser Claude Code avec un fournisseur d'API tiers comme [Amazon Bedrock](/fr/amazon-bedrock), [Google Vertex AI](/fr/google-vertex-ai) ou [Microsoft Foundry](/fr/microsoft-foundry).

173 

174Après l'installation, connectez-vous en exécutant `claude` et en suivant les invites du navigateur. Consultez [Authentification](/fr/authentication) pour tous les types de comptes et les options de configuration d'équipe.

175 

176## Mettre à jour Claude Code

177 

178Les installations natives se mettent à jour automatiquement en arrière-plan. Vous pouvez [configurer le canal de version](#configure-release-channel) pour contrôler si vous recevez les mises à jour immédiatement ou selon un calendrier stable retardé, ou [désactiver les mises à jour automatiques](#disable-auto-updates) entièrement. Les installations Homebrew, WinGet et [gestionnaire de paquets Linux](#install-with-linux-package-managers) nécessitent des mises à jour manuelles.

179 

180### Mises à jour automatiques

181 

182Claude Code vérifie les mises à jour au démarrage et périodiquement pendant l'exécution. Les mises à jour se téléchargent et s'installent en arrière-plan, puis prennent effet la prochaine fois que vous démarrez Claude Code.

183 

184<Note>

185 Les installations Homebrew, WinGet, apt, dnf et apk ne se mettent pas à jour automatiquement. Pour Homebrew, exécutez `brew upgrade claude-code` ou `brew upgrade claude-code@latest`, selon le cask que vous avez installé. Pour WinGet, exécutez `winget upgrade Anthropic.ClaudeCode`. Pour les gestionnaires de paquets Linux, consultez les commandes de mise à niveau dans [Installer avec les gestionnaires de paquets Linux](#install-with-linux-package-managers).

186 

187 **Problème connu :** Claude Code peut vous notifier des mises à jour avant que la nouvelle version soit disponible dans ces gestionnaires de paquets. Si une mise à niveau échoue, attendez et réessayez plus tard.

188 

189 Homebrew conserve les anciennes versions sur le disque après les mises à niveau. Exécutez `brew cleanup` périodiquement pour récupérer de l'espace disque.

190</Note>

191 

192### Configurer le canal de version

193 

194Contrôlez le canal de version que Claude Code suit pour les mises à jour automatiques et `claude update` avec le paramètre `autoUpdatesChannel` :

195 

196* `"latest"`, la valeur par défaut : recevez les nouvelles fonctionnalités dès qu'elles sont publiées

197* `"stable"` : utilisez une version qui a généralement environ une semaine, en ignorant les versions avec des régressions majeures

198 

199Configurez ceci via `/config` → **Canal de mise à jour automatique**, ou ajoutez-le à votre [fichier settings.json](/fr/settings) :

200 

201```json theme={null}

202{

203 "autoUpdatesChannel": "stable"

204}

205```

206 

207Pour les déploiements d'entreprise, vous pouvez appliquer un canal de version cohérent dans votre organisation à l'aide des [paramètres gérés](/fr/permissions#managed-settings).

208 

209Les installations Homebrew choisissent un canal par nom de cask au lieu de ce paramètre : `claude-code` suit stable et `claude-code@latest` suit latest.

210 

211### Épingler une version minimale

212 

213Le paramètre `minimumVersion` établit un plancher. Les mises à jour automatiques en arrière-plan et `claude update` refusent d'installer toute version inférieure à cette valeur, donc passer au canal `"stable"` ne vous rétrograde pas si vous êtes déjà sur une version `"latest"` plus récente.

214 

215Passer de `"latest"` à `"stable"` via `/config` vous invite à rester sur la version actuelle ou à autoriser la rétrogradation. Choisir de rester définit `minimumVersion` à cette version. Revenir à `"latest"` l'efface.

216 

217Ajoutez-le à votre [fichier settings.json](/fr/settings) pour épingler un plancher explicitement :

218 

219```json theme={null}

220{

221 "autoUpdatesChannel": "stable",

222 "minimumVersion": "2.1.100"

223}

224```

225 

226Dans les [paramètres gérés](/fr/permissions#managed-settings), cela applique un minimum à l'échelle de l'organisation que les paramètres utilisateur et projet ne peuvent pas remplacer.

227 

228### Désactiver les mises à jour automatiques

229 

230Définissez `DISABLE_AUTOUPDATER` à `"1"` dans la clé `env` de votre fichier [`settings.json`](/fr/settings#available-settings) :

231 

232```json theme={null}

233{

234 "env": {

235 "DISABLE_AUTOUPDATER": "1"

236 }

237}

238```

239 

240`DISABLE_AUTOUPDATER` arrête uniquement la vérification en arrière-plan ; `claude update` et `claude install` fonctionnent toujours. Pour bloquer tous les chemins de mise à jour, y compris les mises à jour manuelles, définissez [`DISABLE_UPDATES`](/fr/env-vars) à la place. Utilisez ceci lorsque vous distribuez Claude Code via vos propres canaux et que vous avez besoin que les utilisateurs restent sur la version que vous fournissez.

241 

242### Mettre à jour manuellement

243 

244Pour appliquer une mise à jour immédiatement sans attendre la prochaine vérification en arrière-plan, exécutez :

245 

246```bash theme={null}

247claude update

248```

249 

250## Options d'installation avancées

251 

252Ces options sont destinées à l'épinglage de version, aux gestionnaires de paquets Linux, à npm et à la vérification de l'intégrité des binaires.

253 

254### Installer une version spécifique

255 

256L'installateur natif accepte soit un numéro de version spécifique, soit un canal de version (`latest` ou `stable`). Le canal que vous choisissez au moment de l'installation devient votre valeur par défaut pour les mises à jour automatiques. Consultez [configurer le canal de version](#configure-release-channel) pour plus d'informations.

257 

258Pour installer la dernière version (par défaut) :

259 

260<Tabs>

261 <Tab title="macOS, Linux, WSL">

262 ```bash theme={null}

263 curl -fsSL https://claude.ai/install.sh | bash

264 ```

265 </Tab>

266 

267 <Tab title="Windows PowerShell">

268 ```powershell theme={null}

269 irm https://claude.ai/install.ps1 | iex

270 ```

271 </Tab>

272 

273 <Tab title="Windows CMD">

274 ```batch theme={null}

275 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

276 ```

277 </Tab>

278</Tabs>

279 

280Pour installer la version stable :

281 

282<Tabs>

283 <Tab title="macOS, Linux, WSL">

284 ```bash theme={null}

285 curl -fsSL https://claude.ai/install.sh | bash -s stable

286 ```

287 </Tab>

288 

289 <Tab title="Windows PowerShell">

290 ```powershell theme={null}

291 & ([scriptblock]::Create((irm https://claude.ai/install.ps1))) stable

292 ```

293 </Tab>

294 

295 <Tab title="Windows CMD">

296 ```batch theme={null}

297 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd stable && del install.cmd

298 ```

299 </Tab>

300</Tabs>

301 

302Pour installer un numéro de version spécifique :

303 

304<Tabs>

305 <Tab title="macOS, Linux, WSL">

306 ```bash theme={null}

307 curl -fsSL https://claude.ai/install.sh | bash -s 2.1.89

308 ```

309 </Tab>

310 

311 <Tab title="Windows PowerShell">

312 ```powershell theme={null}

313 & ([scriptblock]::Create((irm https://claude.ai/install.ps1))) 2.1.89

314 ```

315 </Tab>

316 

317 <Tab title="Windows CMD">

318 ```batch theme={null}

319 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd 2.1.89 && del install.cmd

320 ```

321 </Tab>

322</Tabs>

323 

324### Installer avec les gestionnaires de paquets Linux

325 

326Claude Code publie des dépôts apt, dnf et apk signés. Remplacez `stable` par `latest` pour le canal de roulement. Les installations du gestionnaire de paquets ne se mettent pas à jour automatiquement via Claude Code ; les mises à jour arrivent via votre flux de mise à niveau système normal.

327 

328Tous les dépôts sont signés avec la [clé de signature de version Claude Code](#binary-integrity-and-code-signing). Avant de faire confiance à la clé, vérifiez-la comme décrit dans chaque onglet.

329 

330<Tabs>

331 <Tab title="apt">

332 Pour Debian et Ubuntu. Pour utiliser le canal de roulement, modifiez les deux occurrences de `stable` dans la ligne `deb` : le chemin d'URL et le nom de la suite.

333 

334 ```bash theme={null}

335 sudo install -d -m 0755 /etc/apt/keyrings

336 sudo curl -fsSL https://downloads.claude.ai/keys/claude-code.asc \

337 -o /etc/apt/keyrings/claude-code.asc

338 echo "deb [signed-by=/etc/apt/keyrings/claude-code.asc] https://downloads.claude.ai/claude-code/apt/stable stable main" \

339 | sudo tee /etc/apt/sources.list.d/claude-code.list

340 sudo apt update

341 sudo apt install claude-code

342 ```

343 

344 Vérifiez l'empreinte digitale de la clé GPG avant de lui faire confiance : `gpg --show-keys /etc/apt/keyrings/claude-code.asc` devrait signaler `31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE`.

345 

346 Pour mettre à jour ultérieurement, exécutez `sudo apt update && sudo apt upgrade claude-code`.

347 </Tab>

348 

349 <Tab title="dnf">

350 Pour Fedora et RHEL :

351 

352 ```bash theme={null}

353 sudo tee /etc/yum.repos.d/claude-code.repo <<'EOF'

354 [claude-code]

355 name=Claude Code

356 baseurl=https://downloads.claude.ai/claude-code/rpm/stable

357 enabled=1

358 gpgcheck=1

359 gpgkey=https://downloads.claude.ai/keys/claude-code.asc

360 EOF

361 sudo dnf install claude-code

362 ```

363 

364 dnf télécharge la clé lors de la première installation et vous demande de confirmer l'empreinte digitale. Vérifiez qu'elle correspond à `31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE` avant d'accepter.

365 

366 Pour mettre à jour ultérieurement, exécutez `sudo dnf upgrade claude-code`.

367 </Tab>

368 

369 <Tab title="apk">

370 Pour Alpine Linux :

371 

372 ```sh theme={null}

373 wget -O /etc/apk/keys/claude-code.rsa.pub \

374 https://downloads.claude.ai/keys/claude-code.rsa.pub

375 echo "https://downloads.claude.ai/claude-code/apk/stable" >> /etc/apk/repositories

376 apk add claude-code

377 ```

378 

379 Vérifiez la clé téléchargée avec `sha256sum /etc/apk/keys/claude-code.rsa.pub`, qui devrait signaler `395759c1f7449ef4cdef305a42e820f3c766d6090d142634ebdb049f113168b6`.

380 

381 Pour mettre à jour ultérieurement, exécutez `apk update && apk upgrade claude-code`.

382 </Tab>

383</Tabs>

384 

385### Installer avec npm

386 

387Vous pouvez également installer Claude Code en tant que paquet npm global. Le paquet nécessite [Node.js 18 ou ultérieur](https://nodejs.org/en/download).

388 

389```bash theme={null}

390npm install -g @anthropic-ai/claude-code

391```

392 

393Le paquet npm installe le même binaire natif que l'installateur autonome. npm récupère le binaire via une dépendance optionnelle par plateforme telle que `@anthropic-ai/claude-code-darwin-arm64`, et une étape postinstallation le lie en place. Le binaire `claude` installé n'invoque pas lui-même Node.

394 

395Les plateformes d'installation npm supportées sont `darwin-arm64`, `darwin-x64`, `linux-x64`, `linux-arm64`, `linux-x64-musl`, `linux-arm64-musl`, `win32-x64` et `win32-arm64`. Votre gestionnaire de paquets doit autoriser les dépendances optionnelles. Consultez le [dépannage](/fr/troubleshoot-install#native-binary-not-found-after-npm-install) si le binaire est manquant après l'installation.

396 

397<Warning>

398 N'utilisez PAS `sudo npm install -g` car cela peut entraîner des problèmes de permissions et des risques de sécurité. Si vous rencontrez des erreurs de permissions, consultez le [dépannage des erreurs de permissions](/fr/troubleshoot-install#permission-errors-during-installation).

399</Warning>

400 

401### Intégrité des binaires et signature du code

402 

403Chaque version publie un `manifest.json` contenant les sommes de contrôle SHA256 pour chaque binaire de plateforme. Le manifeste est signé avec une clé GPG Anthropic, donc vérifier la signature sur le manifeste vérifie transitivement chaque binaire qu'il répertorie.

404 

405#### Vérifier la signature du manifeste

406 

407Les étapes 1 à 3 nécessitent un shell POSIX avec `gpg` et `curl`. Sur Windows, exécutez-les dans Git Bash ou WSL. L'étape 4 inclut une option PowerShell.

408 

409<Steps>

410 <Step title="Télécharger et importer la clé publique">

411 La clé de signature de version est publiée à une URL fixe.

412 

413 ```bash theme={null}

414 curl -fsSL https://downloads.claude.ai/keys/claude-code.asc | gpg --import

415 ```

416 

417 Afficher l'empreinte digitale de la clé importée.

418 

419 ```bash theme={null}

420 gpg --fingerprint security@anthropic.com

421 ```

422 

423 Confirmez que la sortie inclut cette empreinte digitale :

424 

425 ```text theme={null}

426 31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE

427 ```

428 </Step>

429 

430 <Step title="Télécharger le manifeste et la signature">

431 Définissez `VERSION` sur la version que vous souhaitez vérifier.

432 

433 ```bash theme={null}

434 REPO=https://downloads.claude.ai/claude-code-releases

435 VERSION=2.1.89

436 curl -fsSLO "$REPO/$VERSION/manifest.json"

437 curl -fsSLO "$REPO/$VERSION/manifest.json.sig"

438 ```

439 </Step>

440 

441 <Step title="Vérifier la signature">

442 Vérifiez la signature détachée par rapport au manifeste.

443 

444 ```bash theme={null}

445 gpg --verify manifest.json.sig manifest.json

446 ```

447 

448 Un résultat valide signale `Good signature from "Anthropic Claude Code Release Signing <security@anthropic.com>"`.

449 

450 `gpg` imprime également `WARNING: This key is not certified with a trusted signature!` pour toute clé nouvellement importée. C'est attendu. La ligne `Good signature` confirme que la vérification cryptographique a réussi. La comparaison d'empreinte digitale à l'étape 1 confirme que la clé elle-même est authentique.

451 </Step>

452 

453 <Step title="Vérifier le binaire par rapport au manifeste">

454 Comparez la somme de contrôle SHA256 de votre binaire téléchargé avec la valeur répertoriée sous `platforms.<platform>.checksum` dans `manifest.json`.

455 

456 <Tabs>

457 <Tab title="Linux">

458 ```bash theme={null}

459 sha256sum claude

460 ```

461 </Tab>

462 

463 <Tab title="macOS">

464 ```bash theme={null}

465 shasum -a 256 claude

466 ```

467 </Tab>

468 

469 <Tab title="Windows PowerShell">

470 ```powershell theme={null}

471 (Get-FileHash claude.exe -Algorithm SHA256).Hash.ToLower()

472 ```

473 </Tab>

474 </Tabs>

475 </Step>

476</Steps>

477 

478<Note>

479 Les signatures de manifeste sont disponibles pour les versions à partir de `2.1.89`. Les versions antérieures publient les sommes de contrôle dans `manifest.json` sans signature détachée.

480</Note>

481 

482#### Signatures de code de plateforme

483 

484En plus du manifeste signé, les binaires individuels portent des signatures de code natives de plateforme où supportées.

485 

486* **macOS** : signé par « Anthropic PBC » et notarié par Apple. Vérifiez avec `codesign --verify --verbose ./claude`.

487* **Windows** : signé par « Anthropic, PBC ». Vérifiez avec `Get-AuthenticodeSignature .\claude.exe`.

488* **Linux** : les binaires ne sont pas individuellement signés en code. Si vous téléchargez directement depuis le bucket `claude-code-releases` ou utilisez l'installateur natif, vérifiez l'intégrité avec la signature de manifeste ci-dessus. Si vous installez avec [apt, dnf ou apk](#install-with-linux-package-managers), votre gestionnaire de paquets vérifie automatiquement les signatures en utilisant la clé de signature du dépôt.

489 

490## Désinstaller Claude Code

491 

492Pour supprimer Claude Code, suivez les instructions correspondant à votre méthode d'installation.

493 

494### Installation native

495 

496Supprimez le binaire Claude Code et les fichiers de version :

497 

498<Tabs>

499 <Tab title="macOS, Linux, WSL">

500 ```bash theme={null}

501 rm -f ~/.local/bin/claude

502 rm -rf ~/.local/share/claude

503 ```

504 </Tab>

505 

506 <Tab title="Windows PowerShell">

507 ```powershell theme={null}

508 Remove-Item -Path "$env:USERPROFILE\.local\bin\claude.exe" -Force

509 Remove-Item -Path "$env:USERPROFILE\.local\share\claude" -Recurse -Force

510 ```

511 </Tab>

512</Tabs>

513 

514### Installation Homebrew

515 

516Supprimez le cask Homebrew que vous avez installé. Si vous avez installé le cask stable :

517 

518```bash theme={null}

519brew uninstall --cask claude-code

520```

521 

522Si vous avez installé le cask latest :

523 

524```bash theme={null}

525brew uninstall --cask claude-code@latest

526```

527 

528### Installation WinGet

529 

530Supprimez le paquet WinGet :

531 

532```powershell theme={null}

533winget uninstall Anthropic.ClaudeCode

534```

535 

536### apt / dnf / apk

537 

538Supprimez le paquet et la configuration du référentiel :

539 

540<Tabs>

541 <Tab title="apt">

542 ```bash theme={null}

543 sudo apt remove claude-code

544 sudo rm /etc/apt/sources.list.d/claude-code.list /etc/apt/keyrings/claude-code.asc

545 ```

546 </Tab>

547 

548 <Tab title="dnf">

549 ```bash theme={null}

550 sudo dnf remove claude-code

551 sudo rm /etc/yum.repos.d/claude-code.repo

552 ```

553 </Tab>

554 

555 <Tab title="apk">

556 ```sh theme={null}

557 apk del claude-code

558 sed -i '\|downloads.claude.ai/claude-code/apk|d' /etc/apk/repositories

559 rm /etc/apk/keys/claude-code.rsa.pub

560 ```

561 </Tab>

562</Tabs>

563 

564### npm

565 

566Supprimez le paquet npm global :

567 

568```bash theme={null}

569npm uninstall -g @anthropic-ai/claude-code

570```

571 

572### Supprimer les fichiers de configuration

573 

574<Warning>

575 La suppression des fichiers de configuration supprimera tous vos paramètres, outils autorisés, configurations de serveur MCP et historique de session.

576</Warning>

577 

578L'extension VS Code, le plugin JetBrains et l'application de bureau écrivent également dans `~/.claude/`. Si l'un d'eux est toujours installé, le répertoire est recréé la prochaine fois qu'il s'exécute. Pour supprimer Claude Code complètement, désinstallez l'[extension VS Code](/fr/vs-code#uninstall-the-extension), le plugin JetBrains et l'application de bureau avant de supprimer ces fichiers.

579 

580Pour supprimer les paramètres et données en cache de Claude Code :

581 

582<Tabs>

583 <Tab title="macOS, Linux, WSL">

584 ```bash theme={null}

585 # Supprimer les paramètres utilisateur et l'état

586 rm -rf ~/.claude

587 rm ~/.claude.json

588 

589 # Supprimer les paramètres spécifiques au projet (exécutez depuis votre répertoire de projet)

590 rm -rf .claude

591 rm -f .mcp.json

592 ```

593 </Tab>

594 

595 <Tab title="Windows PowerShell">

596 ```powershell theme={null}

597 # Supprimer les paramètres utilisateur et l'état

598 Remove-Item -Path "$env:USERPROFILE\.claude" -Recurse -Force

599 Remove-Item -Path "$env:USERPROFILE\.claude.json" -Force

600 

601 # Supprimer les paramètres spécifiques au projet (exécutez depuis votre répertoire de projet)

602 Remove-Item -Path ".claude" -Recurse -Force

603 Remove-Item -Path ".mcp.json" -Force

604 ```

605 </Tab>

606</Tabs>

skills.md +728 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Étendre Claude avec des skills

6 

7> Créez, gérez et partagez des skills pour étendre les capacités de Claude dans Claude Code. Inclut les commandes personnalisées et les skills groupées.

8 

9Les skills étendent ce que Claude peut faire. Créez un fichier `SKILL.md` avec des instructions, et Claude l'ajoute à sa boîte à outils. Claude utilise les skills quand c'est pertinent, ou vous pouvez en invoquer une directement avec `/skill-name`.

10 

11Créez une skill quand vous continuez à coller le même playbook, checklist ou procédure multi-étapes dans le chat, ou quand une section de CLAUDE.md s'est transformée en procédure plutôt qu'en fait. Contrairement au contenu de CLAUDE.md, le corps d'une skill ne se charge que quand elle est utilisée, donc le matériel de référence long coûte presque rien jusqu'à ce que vous en ayez besoin.

12 

13<Note>

14 Pour les commandes intégrées comme `/help` et `/compact`, et les skills groupées comme `/debug` et `/simplify`, consultez la [référence des commandes](/fr/commands).

15 

16 **Les commandes personnalisées ont été fusionnées dans les skills.** Un fichier à `.claude/commands/deploy.md` et une skill à `.claude/skills/deploy/SKILL.md` créent tous les deux `/deploy` et fonctionnent de la même manière. Vos fichiers `.claude/commands/` existants continuent de fonctionner. Les skills ajoutent des fonctionnalités optionnelles : un répertoire pour les fichiers de support, un frontmatter pour [contrôler si vous ou Claude invoquez la skill](#control-who-invokes-a-skill), et la capacité pour Claude de les charger automatiquement quand c'est pertinent.

17</Note>

18 

19Les skills Claude Code suivent la norme ouverte [Agent Skills](https://agentskills.io), qui fonctionne sur plusieurs outils d'IA. Claude Code étend la norme avec des fonctionnalités supplémentaires comme le [contrôle d'invocation](#control-who-invokes-a-skill), l'[exécution de subagent](#run-skills-in-a-subagent), et l'[injection de contexte dynamique](#inject-dynamic-context).

20 

21## Skills groupées

22 

23Claude Code inclut un ensemble de skills groupées qui sont disponibles dans chaque session, notamment `/simplify`, `/batch`, `/debug`, `/loop` et `/claude-api`. Contrairement à la plupart des commandes intégrées, qui exécutent une logique fixe directement, les skills groupées sont basées sur des prompts : elles donnent à Claude un playbook détaillé et le laissent orchestrer le travail en utilisant ses outils. Vous les invoquez de la même manière que n'importe quelle autre skill, en tapant `/` suivi du nom de la skill.

24 

25Les skills groupées sont listées aux côtés des commandes intégrées dans la [référence des commandes](/fr/commands), marquées **Skill** dans la colonne Objectif.

26 

27## Démarrage

28 

29### Créer votre première skill

30 

31Cet exemple crée une skill qui enseigne à Claude comment expliquer le code en utilisant des diagrammes visuels et des analogies. Puisqu'elle utilise le frontmatter par défaut, Claude peut la charger automatiquement quand vous demandez comment quelque chose fonctionne, ou vous pouvez l'invoquer directement avec `/explain-code`.

32 

33<Steps>

34 <Step title="Créer le répertoire de la skill">

35 Créez un répertoire pour la skill dans votre dossier de skills personnelles. Les skills personnelles sont disponibles dans tous vos projets.

36 

37 ```bash theme={null}

38 mkdir -p ~/.claude/skills/explain-code

39 ```

40 </Step>

41 

42 <Step title="Écrire SKILL.md">

43 Chaque skill a besoin d'un fichier `SKILL.md` avec deux parties : un frontmatter YAML (entre les marqueurs `---`) qui dit à Claude quand utiliser la skill, et du contenu markdown avec les instructions que Claude suit quand la skill est invoquée. Le nom du répertoire devient la `/slash-command`, et la `description` aide Claude à décider quand la charger automatiquement.

44 

45 Créez `~/.claude/skills/explain-code/SKILL.md` :

46 

47 ```yaml theme={null}

48 ---

49 description: Explains code with visual diagrams and analogies. Use when explaining how code works, teaching about a codebase, or when the user asks "how does this work?"

50 ---

51 

52 When explaining code, always include:

53 

54 1. **Start with an analogy**: Compare the code to something from everyday life

55 2. **Draw a diagram**: Use ASCII art to show the flow, structure, or relationships

56 3. **Walk through the code**: Explain step-by-step what happens

57 4. **Highlight a gotcha**: What's a common mistake or misconception?

58 

59 Keep explanations conversational. For complex concepts, use multiple analogies.

60 ```

61 </Step>

62 

63 <Step title="Tester la skill">

64 Vous pouvez la tester de deux façons :

65 

66 **Laisser Claude l'invoquer automatiquement** en posant une question qui correspond à la description :

67 

68 ```text theme={null}

69 How does this code work?

70 ```

71 

72 **Ou l'invoquer directement** avec le nom de la skill :

73 

74 ```text theme={null}

75 /explain-code src/auth/login.ts

76 ```

77 

78 De l'une ou l'autre façon, Claude devrait inclure une analogie et un diagramme ASCII dans son explication.

79 </Step>

80</Steps>

81 

82### Où vivent les skills

83 

84L'endroit où vous stockez une skill détermine qui peut l'utiliser :

85 

86| Localisation | Chemin | S'applique à |

87| :----------- | :--------------------------------------------------- | :------------------------------------------ |

88| Entreprise | Voir [paramètres gérés](/fr/settings#settings-files) | Tous les utilisateurs de votre organisation |

89| Personnel | `~/.claude/skills/<skill-name>/SKILL.md` | Tous vos projets |

90| Projet | `.claude/skills/<skill-name>/SKILL.md` | Ce projet uniquement |

91| Plugin | `<plugin>/skills/<skill-name>/SKILL.md` | Où le plugin est activé |

92 

93Quand les skills partagent le même nom à différents niveaux, l'entreprise remplace le personnel, et le personnel remplace le projet. Les skills de plugin utilisent un espace de noms `plugin-name:skill-name`, donc elles ne peuvent pas entrer en conflit avec d'autres niveaux. Si vous avez des fichiers dans `.claude/commands/`, ils fonctionnent de la même manière, mais si une skill et une commande partagent le même nom, la skill a la priorité.

94 

95#### Détection de changement en direct

96 

97Claude Code surveille les répertoires de skills pour les changements de fichiers. Ajouter, modifier ou supprimer une skill sous `~/.claude/skills/`, le `.claude/skills/` du projet, ou un `.claude/skills/` à l'intérieur d'un répertoire `--add-dir` prend effet dans la session actuelle sans redémarrage. Créer un répertoire de skills de haut niveau qui n'existait pas quand la session a commencé nécessite de redémarrer Claude Code pour que le nouveau répertoire puisse être surveillé.

98 

99#### Découverte automatique à partir de répertoires imbriqués

100 

101Quand vous travaillez avec des fichiers dans des sous-répertoires, Claude Code découvre automatiquement les skills à partir des répertoires `.claude/skills/` imbriqués. Par exemple, si vous modifiez un fichier dans `packages/frontend/`, Claude Code recherche également les skills dans `packages/frontend/.claude/skills/`. Cela supporte les configurations monorepo où les packages ont leurs propres skills.

102 

103Chaque skill est un répertoire avec `SKILL.md` comme point d'entrée :

104 

105```text theme={null}

106my-skill/

107├── SKILL.md # Instructions principales (obligatoire)

108├── template.md # Modèle pour que Claude remplisse

109├── examples/

110│ └── sample.md # Exemple de sortie montrant le format attendu

111└── scripts/

112 └── validate.sh # Script que Claude peut exécuter

113```

114 

115Le `SKILL.md` contient les instructions principales et est obligatoire. Les autres fichiers sont optionnels et vous permettent de créer des skills plus puissantes : des modèles pour que Claude remplisse, des exemples de sortie montrant le format attendu, des scripts que Claude peut exécuter, ou une documentation de référence détaillée. Référencez ces fichiers à partir de votre `SKILL.md` pour que Claude sache ce qu'ils contiennent et quand les charger. Voir [Ajouter des fichiers de support](#add-supporting-files) pour plus de détails.

116 

117<Note>

118 Les fichiers dans `.claude/commands/` fonctionnent toujours et supportent le même [frontmatter](#frontmatter-reference). Les skills sont recommandées puisqu'elles supportent des fonctionnalités supplémentaires comme les fichiers de support.

119</Note>

120 

121#### Skills à partir de répertoires supplémentaires

122 

123Le drapeau `--add-dir` [accorde l'accès aux fichiers](/fr/permissions#additional-directories-grant-file-access-not-configuration) plutôt que la découverte de configuration, mais les skills sont une exception : `.claude/skills/` dans un répertoire ajouté est chargé automatiquement. Voir [Détection de changement en direct](#live-change-detection) pour savoir comment les modifications sont détectées pendant une session.

124 

125Les autres configurations `.claude/` comme les subagents, les commandes et les styles de sortie ne sont pas chargées à partir de répertoires supplémentaires. Voir le [tableau des exceptions](/fr/permissions#additional-directories-grant-file-access-not-configuration) pour la liste complète de ce qui est et n'est pas chargé, et les façons recommandées de partager la configuration entre les projets.

126 

127<Note>

128 Les fichiers CLAUDE.md des répertoires `--add-dir` ne sont pas chargés par défaut. Pour les charger, définissez `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1`. Voir [Charger à partir de répertoires supplémentaires](/fr/memory#load-from-additional-directories).

129</Note>

130 

131## Configurer les skills

132 

133Les skills sont configurées via le frontmatter YAML en haut de `SKILL.md` et le contenu markdown qui suit.

134 

135### Types de contenu de skill

136 

137Les fichiers de skill peuvent contenir n'importe quelles instructions, mais réfléchir à la façon dont vous voulez les invoquer aide à guider ce qu'il faut inclure :

138 

139**Le contenu de référence** ajoute des connaissances que Claude applique à votre travail actuel. Conventions, modèles, guides de style, connaissances du domaine. Ce contenu s'exécute en ligne pour que Claude puisse l'utiliser aux côtés du contexte de votre conversation.

140 

141```yaml theme={null}

142---

143name: api-conventions

144description: API design patterns for this codebase

145---

146 

147When writing API endpoints:

148- Use RESTful naming conventions

149- Return consistent error formats

150- Include request validation

151```

152 

153**Le contenu de tâche** donne à Claude des instructions étape par étape pour une action spécifique, comme les déploiements, les commits ou la génération de code. Ce sont souvent des actions que vous voulez invoquer directement avec `/skill-name` plutôt que de laisser Claude décider quand les exécuter. Ajoutez `disable-model-invocation: true` pour empêcher Claude de la déclencher automatiquement.

154 

155```yaml theme={null}

156---

157name: deploy

158description: Deploy the application to production

159context: fork

160disable-model-invocation: true

161---

162 

163Deploy the application:

1641. Run the test suite

1652. Build the application

1663. Push to the deployment target

167```

168 

169Votre `SKILL.md` peut contenir n'importe quoi, mais réfléchir à la façon dont vous voulez que la skill soit invoquée (par vous, par Claude, ou les deux) et où vous voulez qu'elle s'exécute (en ligne ou dans un subagent) aide à guider ce qu'il faut inclure. Pour les skills complexes, vous pouvez également [ajouter des fichiers de support](#add-supporting-files) pour garder la skill principale concentrée.

170 

171### Référence du frontmatter

172 

173Au-delà du contenu markdown, vous pouvez configurer le comportement de la skill en utilisant les champs du frontmatter YAML entre les marqueurs `---` en haut de votre fichier `SKILL.md` :

174 

175```yaml theme={null}

176---

177name: my-skill

178description: What this skill does

179disable-model-invocation: true

180allowed-tools: Read Grep

181---

182 

183Your skill instructions here...

184```

185 

186Tous les champs sont optionnels. Seul `description` est recommandé pour que Claude sache quand utiliser la skill.

187 

188| Champ | Obligatoire | Description |

189| :------------------------- | :---------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

190| `name` | Non | Nom d'affichage pour la skill. S'il est omis, utilise le nom du répertoire. Lettres minuscules, chiffres et tirets uniquement (max 64 caractères). |

191| `description` | Recommandé | Ce que fait la skill et quand l'utiliser. Claude utilise ceci pour décider quand appliquer la skill. S'il est omis, utilise le premier paragraphe du contenu markdown. Mettez en avant le cas d'utilisation clé : le texte combiné `description` et `when_to_use` est tronqué à 1 536 caractères dans la liste des skills pour réduire l'utilisation du contexte. |

192| `when_to_use` | Non | Contexte supplémentaire pour quand Claude devrait invoquer la skill, comme les phrases déclencheurs ou les demandes d'exemple. Ajouté à `description` dans la liste des skills et compte vers le plafond de 1 536 caractères. |

193| `argument-hint` | Non | Indice affiché lors de l'autocomplétion pour indiquer les arguments attendus. Exemple : `[issue-number]` ou `[filename] [format]`. |

194| `arguments` | Non | Arguments positionnels nommés pour la [substitution `$name`](#available-string-substitutions) dans le contenu de la skill. Accepte une chaîne séparée par des espaces ou une liste YAML. Les noms correspondent aux positions d'argument dans l'ordre. |

195| `disable-model-invocation` | Non | Définissez à `true` pour empêcher Claude de charger automatiquement cette skill. Utilisez pour les workflows que vous voulez déclencher manuellement avec `/name`. Empêche également la skill d'être [préchargée dans les subagents](/fr/sub-agents#preload-skills-into-subagents). Par défaut : `false`. |

196| `user-invocable` | Non | Définissez à `false` pour masquer du menu `/`. Utilisez pour les connaissances de base que les utilisateurs ne devraient pas invoquer directement. Par défaut : `true`. |

197| `allowed-tools` | Non | Outils que Claude peut utiliser sans demander la permission quand cette skill est active. Accepte une chaîne séparée par des espaces ou une liste YAML. |

198| `model` | Non | Modèle à utiliser quand cette skill est active. Le remplacement s'applique pour le reste du tour actuel et n'est pas sauvegardé dans les paramètres ; le modèle de session reprend à votre prochain prompt. Accepte les mêmes valeurs que [`/model`](/fr/model-config), ou `inherit` pour garder le modèle actif. |

199| `effort` | Non | [Niveau d'effort](/fr/model-config#adjust-effort-level) quand cette skill est active. Remplace le niveau d'effort de la session. Par défaut : hérite de la session. Options : `low`, `medium`, `high`, `xhigh`, `max` ; les niveaux disponibles dépendent du modèle. |

200| `context` | Non | Définissez à `fork` pour exécuter dans un contexte de subagent forké. |

201| `agent` | Non | Quel type de subagent utiliser quand `context: fork` est défini. |

202| `hooks` | Non | Hooks limités au cycle de vie de cette skill. Voir [Hooks dans les skills et les agents](/fr/hooks#hooks-in-skills-and-agents) pour le format de configuration. |

203| `paths` | Non | Modèles Glob qui limitent quand cette skill est activée. Accepte une chaîne séparée par des virgules ou une liste YAML. Quand défini, Claude charge la skill automatiquement uniquement quand vous travaillez avec des fichiers correspondant aux modèles. Utilise le même format que les [règles spécifiques au chemin](/fr/memory#path-specific-rules). |

204| `shell` | Non | Shell à utiliser pour `` !`command` `` et ` ```! ` blocs dans cette skill. Accepte `bash` (par défaut) ou `powershell`. Définir `powershell` exécute les commandes shell en ligne via PowerShell sur Windows. Nécessite `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`. |

205 

206#### Substitutions de chaîne disponibles

207 

208Les skills supportent la substitution de chaîne pour les valeurs dynamiques dans le contenu de la skill :

209 

210| Variable | Description |

211| :--------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

212| `$ARGUMENTS` | Tous les arguments passés lors de l'invocation de la skill. Si `$ARGUMENTS` n'est pas présent dans le contenu, les arguments sont ajoutés comme `ARGUMENTS: <value>`. |

213| `$ARGUMENTS[N]` | Accédez à un argument spécifique par index basé sur 0, comme `$ARGUMENTS[0]` pour le premier argument. |

214| `$N` | Raccourci pour `$ARGUMENTS[N]`, comme `$0` pour le premier argument ou `$1` pour le deuxième. |

215| `$name` | Argument nommé déclaré dans la liste du frontmatter [`arguments`](#frontmatter-reference). Les noms correspondent aux positions dans l'ordre, donc avec `arguments: [issue, branch]` l'espace réservé `$issue` se développe en le premier argument et `$branch` en le deuxième. |

216| `${CLAUDE_SESSION_ID}` | L'ID de session actuel. Utile pour la journalisation, la création de fichiers spécifiques à la session, ou la corrélation de la sortie de la skill avec les sessions. |

217| `${CLAUDE_EFFORT}` | Le niveau d'effort actuel : `low`, `medium`, `high`, `xhigh`, ou `max`. Utilisez ceci pour adapter les instructions de la skill au paramètre d'effort actif. |

218| `${CLAUDE_SKILL_DIR}` | Le répertoire contenant le fichier `SKILL.md` de la skill. Pour les skills de plugin, c'est le sous-répertoire de la skill dans le plugin, pas la racine du plugin. Utilisez ceci dans les commandes d'injection bash pour référencer les scripts ou les fichiers groupés avec la skill, indépendamment du répertoire de travail actuel. |

219 

220Les arguments indexés utilisent le guillemettage de style shell, donc enveloppez les valeurs multi-mots entre guillemets pour les passer comme un seul argument. Par exemple, `/my-skill "hello world" second` fait que `$0` se développe en `hello world` et `$1` en `second`. L'espace réservé `$ARGUMENTS` se développe toujours en la chaîne d'argument complète telle que tapée.

221 

222**Exemple utilisant les substitutions :**

223 

224```yaml theme={null}

225---

226name: session-logger

227description: Log activity for this session

228---

229 

230Log the following to logs/${CLAUDE_SESSION_ID}.log:

231 

232$ARGUMENTS

233```

234 

235### Ajouter des fichiers de support

236 

237Les skills peuvent inclure plusieurs fichiers dans leur répertoire. Cela garde `SKILL.md` concentré sur l'essentiel tout en permettant à Claude d'accéder au matériel de référence détaillé uniquement quand c'est nécessaire. Les grandes docs de référence, les spécifications d'API, ou les collections d'exemples n'ont pas besoin de se charger dans le contexte à chaque fois que la skill s'exécute.

238 

239```text theme={null}

240my-skill/

241├── SKILL.md (obligatoire - aperçu et navigation)

242├── reference.md (docs API détaillées - chargées quand nécessaire)

243├── examples.md (exemples d'utilisation - chargés quand nécessaire)

244└── scripts/

245 └── helper.py (script utilitaire - exécuté, pas chargé)

246```

247 

248Référencez les fichiers de support à partir de `SKILL.md` pour que Claude sache ce que chaque fichier contient et quand le charger :

249 

250```markdown theme={null}

251## Ressources supplémentaires

252 

253- Pour les détails complets de l'API, voir [reference.md](reference.md)

254- Pour les exemples d'utilisation, voir [examples.md](examples.md)

255```

256 

257<Tip>Gardez `SKILL.md` sous 500 lignes. Déplacez le matériel de référence détaillé vers des fichiers séparés.</Tip>

258 

259### Contrôler qui invoque une skill

260 

261Par défaut, vous et Claude pouvez tous les deux invoquer n'importe quelle skill. Vous pouvez taper `/skill-name` pour l'invoquer directement, et Claude peut la charger automatiquement quand c'est pertinent pour votre conversation. Deux champs du frontmatter vous permettent de restreindre ceci :

262 

263* **`disable-model-invocation: true`** : Seul vous pouvez invoquer la skill. Utilisez ceci pour les workflows avec des effets secondaires ou que vous voulez contrôler le timing, comme `/commit`, `/deploy`, ou `/send-slack-message`. Vous ne voulez pas que Claude décide de déployer parce que votre code semble prêt.

264 

265* **`user-invocable: false`** : Seul Claude peut invoquer la skill. Utilisez ceci pour les connaissances de base qui ne sont pas actionnables comme une commande. Une skill `legacy-system-context` explique comment fonctionne un ancien système. Claude devrait le savoir quand c'est pertinent, mais `/legacy-system-context` n'est pas une action significative pour les utilisateurs.

266 

267Cet exemple crée une skill de déploiement que seul vous pouvez déclencher. Le champ `disable-model-invocation: true` empêche Claude de l'exécuter automatiquement :

268 

269```yaml theme={null}

270---

271name: deploy

272description: Deploy the application to production

273disable-model-invocation: true

274---

275 

276Deploy $ARGUMENTS to production:

277 

2781. Run the test suite

2792. Build the application

2803. Push to the deployment target

2814. Verify the deployment succeeded

282```

283 

284Voici comment les deux champs affectent l'invocation et le chargement du contexte :

285 

286| Frontmatter | Vous pouvez invoquer | Claude peut invoquer | Quand chargé dans le contexte |

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

288| (par défaut) | Oui | Oui | Description toujours dans le contexte, la skill complète se charge quand invoquée |

289| `disable-model-invocation: true` | Oui | Non | Description pas dans le contexte, la skill complète se charge quand vous l'invoquez |

290| `user-invocable: false` | Non | Oui | Description toujours dans le contexte, la skill complète se charge quand invoquée |

291 

292<Note>

293 Dans une session régulière, les descriptions de skills sont chargées dans le contexte pour que Claude sache ce qui est disponible, mais le contenu complet de la skill ne se charge que quand elle est invoquée. [Les subagents avec des skills préchargées](/fr/sub-agents#preload-skills-into-subagents) fonctionnent différemment : le contenu complet de la skill est injecté au démarrage.

294</Note>

295 

296### Cycle de vie du contenu de la skill

297 

298Quand vous ou Claude invoquez une skill, le contenu `SKILL.md` rendu entre dans la conversation comme un seul message et y reste pour le reste de la session. Claude Code ne relit pas le fichier de skill aux tours suivants, donc écrivez les directives qui devraient s'appliquer tout au long d'une tâche comme des instructions permanentes plutôt que des étapes ponctuelles.

299 

300[L'auto-compaction](/fr/how-claude-code-works#when-context-fills-up) porte les skills invoquées en avant dans un budget de tokens. Quand la conversation est résumée pour libérer du contexte, Claude Code réattache l'invocation la plus récente de chaque skill après le résumé, en gardant les premiers 5 000 tokens de chacune. Les skills réattachées partagent un budget combiné de 25 000 tokens. Claude Code remplit ce budget en commençant par la skill la plus récemment invoquée, donc les skills plus anciennes peuvent être entièrement supprimées après la compaction si vous en avez invoqué beaucoup dans une session.

301 

302Si une skill semble cesser d'influencer le comportement après la première réponse, le contenu est généralement toujours présent et le modèle choisit d'autres outils ou approches. Renforcez la `description` et les instructions de la skill pour que le modèle continue à la préférer, ou utilisez [hooks](/fr/hooks) pour appliquer le comportement de manière déterministe. Si la skill est grande ou vous avez invoqué plusieurs autres après elle, réinvoquez-la après la compaction pour restaurer le contenu complet.

303 

304### Pré-approuver les outils pour une skill

305 

306Le champ `allowed-tools` accorde la permission pour les outils listés tandis que la skill est active, pour que Claude puisse les utiliser sans vous demander l'approbation par utilisation. Il ne restreint pas quels outils sont disponibles : chaque outil reste appelable, et vos [paramètres de permission](/fr/permissions) gouvernent toujours les outils qui ne sont pas listés.

307 

308Cette skill permet à Claude d'exécuter les commandes git sans approbation par utilisation chaque fois que vous l'invoquez :

309 

310```yaml theme={null}

311---

312name: commit

313description: Stage and commit the current changes

314disable-model-invocation: true

315allowed-tools: Bash(git add *) Bash(git commit *) Bash(git status *)

316---

317```

318 

319Pour bloquer une skill d'utiliser certains outils, ajoutez plutôt des règles de refus dans vos [paramètres de permission](/fr/permissions).

320 

321### Passer des arguments aux skills

322 

323Vous et Claude pouvez tous les deux passer des arguments lors de l'invocation d'une skill. Les arguments sont disponibles via l'espace réservé `$ARGUMENTS`.

324 

325Cette skill corrige un problème GitHub par numéro. L'espace réservé `$ARGUMENTS` est remplacé par tout ce qui suit le nom de la skill :

326 

327```yaml theme={null}

328---

329name: fix-issue

330description: Fix a GitHub issue

331disable-model-invocation: true

332---

333 

334Fix GitHub issue $ARGUMENTS following our coding standards.

335 

3361. Read the issue description

3372. Understand the requirements

3383. Implement the fix

3394. Write tests

3405. Create a commit

341```

342 

343Quand vous exécutez `/fix-issue 123`, Claude reçoit « Fix GitHub issue 123 following our coding standards... »

344 

345Si vous invoquez une skill avec des arguments mais que la skill n'inclut pas `$ARGUMENTS`, Claude Code ajoute `ARGUMENTS: <your input>` à la fin du contenu de la skill pour que Claude voie toujours ce que vous avez tapé.

346 

347Pour accéder aux arguments individuels par position, utilisez `$ARGUMENTS[N]` ou le raccourci plus court `$N` :

348 

349```yaml theme={null}

350---

351name: migrate-component

352description: Migrate a component from one framework to another

353---

354 

355Migrate the $ARGUMENTS[0] component from $ARGUMENTS[1] to $ARGUMENTS[2].

356Preserve all existing behavior and tests.

357```

358 

359Exécuter `/migrate-component SearchBar React Vue` remplace `$ARGUMENTS[0]` par `SearchBar`, `$ARGUMENTS[1]` par `React`, et `$ARGUMENTS[2]` par `Vue`. La même skill utilisant le raccourci `$N` :

360 

361```yaml theme={null}

362---

363name: migrate-component

364description: Migrate a component from one framework to another

365---

366 

367Migrate the $0 component from $1 to $2.

368Preserve all existing behavior and tests.

369```

370 

371## Modèles avancés

372 

373### Injecter du contexte dynamique

374 

375La syntaxe `` !`<command>` `` exécute les commandes shell avant que le contenu de la skill soit envoyé à Claude. La sortie de la commande remplace l'espace réservé, donc Claude reçoit les données réelles, pas la commande elle-même.

376 

377Cette skill résume une pull request en récupérant les données de PR en direct avec le CLI GitHub. Les commandes `` !`gh pr diff` `` et autres s'exécutent d'abord, et leur sortie est insérée dans le prompt :

378 

379```yaml theme={null}

380---

381name: pr-summary

382description: Summarize changes in a pull request

383context: fork

384agent: Explore

385allowed-tools: Bash(gh *)

386---

387 

388## Pull request context

389- PR diff: !`gh pr diff`

390- PR comments: !`gh pr view --comments`

391- Changed files: !`gh pr diff --name-only`

392 

393## Your task

394Summarize this pull request...

395```

396 

397Quand cette skill s'exécute :

398 

3991. Chaque `` !`<command>` `` s'exécute immédiatement (avant que Claude ne voie quoi que ce soit)

4002. La sortie remplace l'espace réservé dans le contenu de la skill

4013. Claude reçoit le prompt complètement rendu avec les données réelles de PR

402 

403C'est du prétraitement, pas quelque chose que Claude exécute. Claude ne voit que le résultat final.

404 

405Pour les commandes multi-lignes, utilisez un bloc de code clôturé ouvert avec ` ```! ` au lieu de la forme en ligne :

406 

407````markdown theme={null}

408## Environment

409```!

410node --version

411npm --version

412git status --short

413```

414````

415 

416Pour désactiver ce comportement pour les skills et les commandes personnalisées des sources utilisateur, projet, plugin ou [répertoire supplémentaire](#skills-from-additional-directories), définissez `"disableSkillShellExecution": true` dans [paramètres](/fr/settings). Chaque commande est remplacée par `[shell command execution disabled by policy]` au lieu d'être exécutée. Les skills groupées et gérées ne sont pas affectées. Ce paramètre est très utile dans les [paramètres gérés](/fr/permissions#managed-settings), où les utilisateurs ne peuvent pas le remplacer.

417 

418<Tip>

419 Pour activer la [réflexion étendue](/fr/common-workflows#use-extended-thinking-thinking-mode) dans une skill, incluez le mot « ultrathink » n'importe où dans le contenu de votre skill.

420</Tip>

421 

422### Exécuter les skills dans un subagent

423 

424Ajoutez `context: fork` à votre frontmatter quand vous voulez qu'une skill s'exécute en isolation. Le contenu de la skill devient le prompt qui pilote le subagent. Il n'aura pas accès à votre historique de conversation.

425 

426<Warning>

427 `context: fork` n'a de sens que pour les skills avec des instructions explicites. Si votre skill contient des directives comme « utiliser ces conventions d'API » sans une tâche, le subagent reçoit les directives mais pas de prompt actionnable, et retourne sans sortie significative.

428</Warning>

429 

430Les skills et les [subagents](/fr/sub-agents) fonctionnent ensemble dans deux directions :

431 

432| Approche | Prompt système | Tâche | Charge également |

433| :--------------------------- | :---------------------------------------- | :------------------------------ | :----------------------------- |

434| Skill avec `context: fork` | Du type d'agent (`Explore`, `Plan`, etc.) | Contenu de SKILL.md | CLAUDE.md |

435| Subagent avec champ `skills` | Corps markdown du subagent | Message de délégation de Claude | Skills préchargées + CLAUDE.md |

436 

437Avec `context: fork`, vous écrivez la tâche dans votre skill et choisissez un type d'agent pour l'exécuter. Pour l'inverse (définir un subagent personnalisé qui utilise les skills comme matériel de référence), voir [Subagents](/fr/sub-agents#preload-skills-into-subagents).

438 

439#### Exemple : Skill de recherche utilisant l'agent Explore

440 

441Cette skill exécute la recherche dans un agent Explore forké. Le contenu de la skill devient la tâche, et l'agent fournit des outils en lecture seule optimisés pour l'exploration de la base de code :

442 

443```yaml theme={null}

444---

445name: deep-research

446description: Research a topic thoroughly

447context: fork

448agent: Explore

449---

450 

451Research $ARGUMENTS thoroughly:

452 

4531. Find relevant files using Glob and Grep

4542. Read and analyze the code

4553. Summarize findings with specific file references

456```

457 

458Quand cette skill s'exécute :

459 

4601. Un nouveau contexte isolé est créé

4612. Le subagent reçoit le contenu de la skill comme son prompt (« Research \$ARGUMENTS thoroughly... »)

4623. Le champ `agent` détermine l'environnement d'exécution (modèle, outils et permissions)

4634. Les résultats sont résumés et retournés à votre conversation principale

464 

465Le champ `agent` spécifie quelle configuration de subagent utiliser. Les options incluent les agents intégrés (`Explore`, `Plan`, `general-purpose`) ou n'importe quel subagent personnalisé de `.claude/agents/`. S'il est omis, utilise `general-purpose`.

466 

467### Restreindre l'accès aux skills de Claude

468 

469Par défaut, Claude peut invoquer n'importe quelle skill qui n'a pas `disable-model-invocation: true` défini. Les skills qui définissent `allowed-tools` accordent à Claude l'accès à ces outils sans approbation par utilisation quand la skill est active. Vos [paramètres de permission](/fr/permissions) gouvernent toujours le comportement d'approbation de base pour tous les autres outils. Quelques commandes intégrées sont également disponibles via l'outil Skill, notamment `/init`, `/review` et `/security-review`. Les autres commandes intégrées comme `/compact` ne le sont pas.

470 

471Trois façons de contrôler quelles skills Claude peut invoquer :

472 

473**Désactiver toutes les skills** en refusant l'outil Skill dans `/permissions` :

474 

475```text theme={null}

476# Add to deny rules:

477Skill

478```

479 

480**Autoriser ou refuser des skills spécifiques** en utilisant les [règles de permission](/fr/permissions) :

481 

482```text theme={null}

483# Allow only specific skills

484Skill(commit)

485Skill(review-pr *)

486 

487# Deny specific skills

488Skill(deploy *)

489```

490 

491Syntaxe de permission : `Skill(name)` pour une correspondance exacte, `Skill(name *)` pour une correspondance de préfixe avec n'importe quels arguments.

492 

493**Masquer les skills individuelles** en ajoutant `disable-model-invocation: true` à leur frontmatter. Cela supprime la skill du contexte de Claude entièrement.

494 

495<Note>

496 Le champ `user-invocable` contrôle uniquement la visibilité du menu, pas l'accès à l'outil Skill. Utilisez `disable-model-invocation: true` pour bloquer l'invocation programmatique.

497</Note>

498 

499## Partager les skills

500 

501Les skills peuvent être distribuées à différentes portées selon votre audience :

502 

503* **Skills de projet** : Validez `.claude/skills/` dans le contrôle de version

504* **Plugins** : Créez un répertoire `skills/` dans votre [plugin](/fr/plugins)

505* **Gérées** : Déployez à l'échelle de l'organisation via les [paramètres gérés](/fr/settings#settings-files)

506 

507### Générer une sortie visuelle

508 

509Les skills peuvent grouper et exécuter des scripts dans n'importe quel langage, donnant à Claude des capacités au-delà de ce qui est possible dans un seul prompt. Un modèle puissant est la génération de sortie visuelle : des fichiers HTML interactifs qui s'ouvrent dans votre navigateur pour explorer les données, déboguer ou créer des rapports.

510 

511Cet exemple crée un explorateur de base de code : une vue d'arbre interactive où vous pouvez développer et réduire les répertoires, voir les tailles de fichiers en un coup d'œil, et identifier les types de fichiers par couleur.

512 

513Créez le répertoire Skill :

514 

515```bash theme={null}

516mkdir -p ~/.claude/skills/codebase-visualizer/scripts

517```

518 

519Créez `~/.claude/skills/codebase-visualizer/SKILL.md`. La description dit à Claude quand activer cette Skill, et les instructions disent à Claude d'exécuter le script groupé :

520 

521````yaml theme={null}

522---

523name: codebase-visualizer

524description: Generate an interactive collapsible tree visualization of your codebase. Use when exploring a new repo, understanding project structure, or identifying large files.

525allowed-tools: Bash(python *)

526---

527 

528# Codebase Visualizer

529 

530Generate an interactive HTML tree view that shows your project's file structure with collapsible directories.

531 

532## Usage

533 

534Run the visualization script from your project root:

535 

536```bash

537python ~/.claude/skills/codebase-visualizer/scripts/visualize.py .

538```

539 

540This creates `codebase-map.html` in the current directory and opens it in your default browser.

541 

542## What the visualization shows

543 

544- **Collapsible directories**: Click folders to expand/collapse

545- **File sizes**: Displayed next to each file

546- **Colors**: Different colors for different file types

547- **Directory totals**: Shows aggregate size of each folder

548````

549 

550Créez `~/.claude/skills/codebase-visualizer/scripts/visualize.py`. Ce script analyse une arborescence de répertoires et génère un fichier HTML autonome avec :

551 

552* Une **barre latérale de résumé** montrant le nombre de fichiers, le nombre de répertoires, la taille totale et le nombre de types de fichiers

553* Un **graphique en barres** décomposant la base de code par type de fichier (top 8 par taille)

554* Un **arbre réductible** où vous pouvez développer et réduire les répertoires, avec des indicateurs de type de fichier codés par couleur

555 

556Le script nécessite Python mais utilise uniquement les bibliothèques intégrées, donc il n'y a pas de packages à installer :

557 

558```python expandable theme={null}

559#!/usr/bin/env python3

560"""Generate an interactive collapsible tree visualization of a codebase."""

561 

562import json

563import sys

564import webbrowser

565from pathlib import Path

566from collections import Counter

567 

568IGNORE = {'.git', 'node_modules', '__pycache__', '.venv', 'venv', 'dist', 'build'}

569 

570def scan(path: Path, stats: dict) -> dict:

571 result = {"name": path.name, "children": [], "size": 0}

572 try:

573 for item in sorted(path.iterdir()):

574 if item.name in IGNORE or item.name.startswith('.'):

575 continue

576 if item.is_file():

577 size = item.stat().st_size

578 ext = item.suffix.lower() or '(no ext)'

579 result["children"].append({"name": item.name, "size": size, "ext": ext})

580 result["size"] += size

581 stats["files"] += 1

582 stats["extensions"][ext] += 1

583 stats["ext_sizes"][ext] += size

584 elif item.is_dir():

585 stats["dirs"] += 1

586 child = scan(item, stats)

587 if child["children"]:

588 result["children"].append(child)

589 result["size"] += child["size"]

590 except PermissionError:

591 pass

592 return result

593 

594def generate_html(data: dict, stats: dict, output: Path) -> None:

595 ext_sizes = stats["ext_sizes"]

596 total_size = sum(ext_sizes.values()) or 1

597 sorted_exts = sorted(ext_sizes.items(), key=lambda x: -x[1])[:8]

598 colors = {

599 '.js': '#f7df1e', '.ts': '#3178c6', '.py': '#3776ab', '.go': '#00add8',

600 '.rs': '#dea584', '.rb': '#cc342d', '.css': '#264de4', '.html': '#e34c26',

601 '.json': '#6b7280', '.md': '#083fa1', '.yaml': '#cb171e', '.yml': '#cb171e',

602 '.mdx': '#083fa1', '.tsx': '#3178c6', '.jsx': '#61dafb', '.sh': '#4eaa25',

603 }

604 lang_bars = "".join(

605 f'<div class="bar-row"><span class="bar-label">{ext}</span>'

606 f'<div class="bar" style="width:{(size/total_size)*100}%;background:{colors.get(ext,"#6b7280")}"></div>'

607 f'<span class="bar-pct">{(size/total_size)*100:.1f}%</span></div>'

608 for ext, size in sorted_exts

609 )

610 def fmt(b):

611 if b < 1024: return f"{b} B"

612 if b < 1048576: return f"{b/1024:.1f} KB"

613 return f"{b/1048576:.1f} MB"

614 

615 html = f'''<!DOCTYPE html>

616<html><head>

617 <meta charset="utf-8"><title>Codebase Explorer</title>

618 <style>

619 body {{ font: 14px/1.5 system-ui, sans-serif; margin: 0; background: #1a1a2e; color: #eee; }}

620 .container {{ display: flex; height: 100vh; }}

621 .sidebar {{ width: 280px; background: #252542; padding: 20px; border-right: 1px solid #3d3d5c; overflow-y: auto; flex-shrink: 0; }}

622 .main {{ flex: 1; padding: 20px; overflow-y: auto; }}

623 h1 {{ margin: 0 0 10px 0; font-size: 18px; }}

624 h2 {{ margin: 20px 0 10px 0; font-size: 14px; color: #888; text-transform: uppercase; }}

625 .stat {{ display: flex; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid #3d3d5c; }}

626 .stat-value {{ font-weight: bold; }}

627 .bar-row {{ display: flex; align-items: center; margin: 6px 0; }}

628 .bar-label {{ width: 55px; font-size: 12px; color: #aaa; }}

629 .bar {{ height: 18px; border-radius: 3px; }}

630 .bar-pct {{ margin-left: 8px; font-size: 12px; color: #666; }}

631 .tree {{ list-style: none; padding-left: 20px; }}

632 details {{ cursor: pointer; }}

633 summary {{ padding: 4px 8px; border-radius: 4px; }}

634 summary:hover {{ background: #2d2d44; }}

635 .folder {{ color: #ffd700; }}

636 .file {{ display: flex; align-items: center; padding: 4px 8px; border-radius: 4px; }}

637 .file:hover {{ background: #2d2d44; }}

638 .size {{ color: #888; margin-left: auto; font-size: 12px; }}

639 .dot {{ width: 8px; height: 8px; border-radius: 50%; margin-right: 8px; }}

640 </style>

641</head><body>

642 <div class="container">

643 <div class="sidebar">

644 <h1>📊 Summary</h1>

645 <div class="stat"><span>Files</span><span class="stat-value">{stats["files"]:,}</span></div>

646 <div class="stat"><span>Directories</span><span class="stat-value">{stats["dirs"]:,}</span></div>

647 <div class="stat"><span>Total size</span><span class="stat-value">{fmt(data["size"])}</span></div>

648 <div class="stat"><span>File types</span><span class="stat-value">{len(stats["extensions"])}</span></div>

649 <h2>By file type</h2>

650 {lang_bars}

651 </div>

652 <div class="main">

653 <h1>📁 {data["name"]}</h1>

654 <ul class="tree" id="root"></ul>

655 </div>

656 </div>

657 <script>

658 const data = {json.dumps(data)};

659 const colors = {json.dumps(colors)};

660 function fmt(b) {{ if (b < 1024) return b + ' B'; if (b < 1048576) return (b/1024).toFixed(1) + ' KB'; return (b/1048576).toFixed(1) + ' MB'; }}

661 function render(node, parent) {{

662 if (node.children) {{

663 const det = document.createElement('details');

664 det.open = parent === document.getElementById('root');

665 det.innerHTML = `<summary><span class="folder">📁 ${{node.name}}</span><span class="size">${{fmt(node.size)}}</span></summary>`;

666 const ul = document.createElement('ul'); ul.className = 'tree';

667 node.children.sort((a,b) => (b.children?1:0)-(a.children?1:0) || a.name.localeCompare(b.name));

668 node.children.forEach(c => render(c, ul));

669 det.appendChild(ul);

670 const li = document.createElement('li'); li.appendChild(det); parent.appendChild(li);

671 }} else {{

672 const li = document.createElement('li'); li.className = 'file';

673 li.innerHTML = `<span class="dot" style="background:${{colors[node.ext]||'#6b7280'}}"></span>${{node.name}}<span class="size">${{fmt(node.size)}}</span>`;

674 parent.appendChild(li);

675 }}

676 }}

677 data.children.forEach(c => render(c, document.getElementById('root')));

678 </script>

679</body></html>'''

680 output.write_text(html)

681 

682if __name__ == '__main__':

683 target = Path(sys.argv[1] if len(sys.argv) > 1 else '.').resolve()

684 stats = {"files": 0, "dirs": 0, "extensions": Counter(), "ext_sizes": Counter()}

685 data = scan(target, stats)

686 out = Path('codebase-map.html')

687 generate_html(data, stats, out)

688 print(f'Generated {out.absolute()}')

689 webbrowser.open(f'file://{out.absolute()}')

690```

691 

692Pour tester, ouvrez Claude Code dans n'importe quel projet et demandez « Visualize this codebase. » Claude exécute le script, génère `codebase-map.html`, et l'ouvre dans votre navigateur.

693 

694Ce modèle fonctionne pour n'importe quelle sortie visuelle : graphiques de dépendances, rapports de couverture de test, documentation d'API, ou visualisations de schéma de base de données. Le script groupé fait le gros du travail tandis que Claude gère l'orchestration.

695 

696## Dépannage

697 

698### Skill ne se déclenche pas

699 

700Si Claude n'utilise pas votre skill quand attendu :

701 

7021. Vérifiez que la description inclut les mots-clés que les utilisateurs diraient naturellement

7032. Vérifiez que la skill apparaît dans « What skills are available? »

7043. Essayez de reformuler votre demande pour correspondre plus étroitement à la description

7054. Invoquez-la directement avec `/skill-name` si la skill est invocable par l'utilisateur

706 

707### Skill se déclenche trop souvent

708 

709Si Claude utilise votre skill quand vous ne le voulez pas :

710 

7111. Rendez la description plus spécifique

7122. Ajoutez `disable-model-invocation: true` si vous voulez uniquement l'invocation manuelle

713 

714### Les descriptions de skills sont coupées court

715 

716Les descriptions de skills sont chargées dans le contexte pour que Claude sache ce qui est disponible. Tous les noms de skills sont toujours inclus, mais si vous avez beaucoup de skills, les descriptions sont raccourcies pour tenir dans le budget de caractères, ce qui peut supprimer les mots-clés dont Claude a besoin pour correspondre à votre demande. Le budget s'adapte dynamiquement à 1 % de la fenêtre de contexte, avec un repli de 8 000 caractères.

717 

718Pour augmenter la limite, définissez la variable d'environnement `SLASH_COMMAND_TOOL_CHAR_BUDGET`. Ou raccourcissez les descriptions à la source : mettez en avant le cas d'utilisation clé, puisque chaque entrée est limitée à 1 536 caractères indépendamment du budget.

719 

720## Ressources connexes

721 

722* **[Déboguer votre configuration](/fr/debug-your-config)** : diagnostiquer pourquoi un skill n'apparaît pas ou ne se déclenche pas

723* **[Subagents](/fr/sub-agents)** : déléguer les tâches à des agents spécialisés

724* **[Plugins](/fr/plugins)** : empaqueter et distribuer les skills avec d'autres extensions

725* **[Hooks](/fr/hooks)** : automatiser les workflows autour des événements d'outils

726* **[Memory](/fr/memory)** : gérer les fichiers CLAUDE.md pour le contexte persistant

727* **[Commands](/fr/commands)** : référence pour les commandes intégrées et les skills groupées

728* **[Permissions](/fr/permissions)** : contrôler l'accès aux outils et aux skills

slack.md +210 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Claude Code dans Slack

6 

7> Déléguez les tâches de codage directement depuis votre espace de travail Slack

8 

9Claude Code dans Slack apporte la puissance de Claude Code directement dans votre espace de travail Slack. Lorsque vous mentionnez `@Claude` avec une tâche de codage, Claude détecte automatiquement l'intention et crée une session Claude Code sur le web, vous permettant de déléguer le travail de développement sans quitter vos conversations d'équipe.

10 

11Cette intégration est construite sur l'application Claude existante pour Slack, mais ajoute un routage intelligent vers Claude Code sur le web pour les demandes liées au codage.

12 

13## Cas d'usage

14 

15* **Enquête et correction de bugs** : Demandez à Claude d'enquêter et de corriger les bugs dès qu'ils sont signalés dans les canaux Slack.

16* **Révisions de code rapides et modifications** : Faites en sorte que Claude implémente de petites fonctionnalités ou refactorise le code en fonction des commentaires de l'équipe.

17* **Débogage collaboratif** : Lorsque les discussions d'équipe fournissent un contexte crucial (par exemple, les reproductions d'erreurs ou les rapports d'utilisateurs), Claude peut utiliser ces informations pour éclairer son approche du débogage.

18* **Exécution de tâches parallèles** : Lancez des tâches de codage dans Slack tout en continuant d'autres travaux, en recevant des notifications à la fin.

19 

20## Conditions préalables

21 

22Avant d'utiliser Claude Code dans Slack, assurez-vous d'avoir les éléments suivants :

23 

24| Condition | Détails |

25| :--------------------- | :------------------------------------------------------------------------------ |

26| Plan Claude | Pro, Max, Team ou Enterprise avec accès à Claude Code (sièges premium) |

27| Claude Code sur le web | L'accès à [Claude Code sur le web](/fr/claude-code-on-the-web) doit être activé |

28| Compte GitHub | Connecté à Claude Code sur le web avec au moins un référentiel authentifié |

29| Authentification Slack | Votre compte Slack lié à votre compte Claude via l'application Claude |

30 

31## Configuration de Claude Code dans Slack

32 

33<Steps>

34 <Step title="Installer l'application Claude dans Slack">

35 Un administrateur de l'espace de travail doit installer l'application Claude à partir de la Slack App Marketplace. Visitez la [Slack App Marketplace](https://slack.com/marketplace/A08SF47R6P4) et cliquez sur « Ajouter à Slack » pour commencer le processus d'installation.

36 </Step>

37 

38 <Step title="Connectez votre compte Claude">

39 Une fois l'application installée, authentifiez votre compte Claude individuel :

40 

41 1. Ouvrez l'application Claude dans Slack en cliquant sur « Claude » dans votre section Applications

42 2. Accédez à l'onglet Accueil de l'application

43 3. Cliquez sur « Connecter » pour lier votre compte Slack à votre compte Claude

44 4. Complétez le flux d'authentification dans votre navigateur

45 </Step>

46 

47 <Step title="Configurez Claude Code sur le web">

48 Assurez-vous que votre Claude Code sur le web est correctement configuré :

49 

50 * Visitez [claude.ai/code](https://claude.ai/code) et connectez-vous avec le même compte que celui que vous avez connecté à Slack

51 * Connectez votre compte GitHub s'il n'est pas déjà connecté

52 * Authentifiez au moins un référentiel avec lequel vous souhaitez que Claude travaille

53 </Step>

54 

55 <Step title="Choisissez votre mode de routage">

56 Après avoir connecté vos comptes, configurez la façon dont Claude gère vos messages dans Slack. Accédez à l'Accueil de l'application Claude dans Slack pour trouver le paramètre **Mode de routage**.

57 

58 | Mode | Comportement |

59 | :------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

60 | **Code uniquement** | Claude achemine toutes les @mentions vers les sessions Claude Code. Idéal pour les équipes utilisant Claude dans Slack exclusivement pour les tâches de développement. |

61 | **Code + Chat** | Claude analyse chaque message et achemine intelligemment entre Claude Code (pour les tâches de codage) et Claude Chat (pour la rédaction, l'analyse et les questions générales). Idéal pour les équipes qui souhaitent un point d'entrée @Claude unique pour tous les types de travail. |

62 

63 <Note>

64 En mode Code + Chat, si Claude achemine un message vers Chat mais que vous vouliez une session de codage, vous pouvez cliquer sur « Réessayer en tant que Code » pour créer une session Claude Code à la place. De même, s'il est acheminé vers Code mais que vous vouliez une session Chat, vous pouvez choisir cette option dans ce fil.

65 </Note>

66 </Step>

67</Steps>

68 

69## Fonctionnement

70 

71### Détection automatique

72 

73Lorsque vous mentionnez @Claude dans un canal ou un fil Slack, Claude analyse automatiquement votre message pour déterminer s'il s'agit d'une tâche de codage. Si Claude détecte une intention de codage, il acheminera votre demande vers Claude Code sur le web au lieu de répondre en tant qu'assistant de chat ordinaire.

74 

75Vous pouvez également dire explicitement à Claude de traiter une demande en tant que tâche de codage, même s'il ne la détecte pas automatiquement.

76 

77<Note>

78 Claude Code dans Slack ne fonctionne que dans les canaux (publics ou privés). Il ne fonctionne pas dans les messages directs (DM).

79</Note>

80 

81### Collecte de contexte

82 

83**À partir des fils** : Lorsque vous @mentionnez Claude dans un fil, il recueille le contexte de tous les messages de ce fil pour comprendre la conversation complète.

84 

85**À partir des canaux** : Lorsqu'il est mentionné directement dans un canal, Claude examine les messages récents du canal pour un contexte pertinent.

86 

87Ce contexte aide Claude à comprendre le problème, à sélectionner le référentiel approprié et à éclairer son approche de la tâche.

88 

89<Warning>

90 Lorsque @Claude est invoqué dans Slack, Claude a accès au contexte de la conversation pour mieux comprendre votre demande. Claude peut suivre les directives d'autres messages dans le contexte, donc les utilisateurs doivent s'assurer d'utiliser Claude uniquement dans des conversations Slack de confiance.

91</Warning>

92 

93### Flux de session

94 

951. **Initiation** : Vous @mentionnez Claude avec une demande de codage

962. **Détection** : Claude analyse votre message et détecte l'intention de codage

973. **Création de session** : Une nouvelle session Claude Code est créée sur claude.ai/code

984. **Mises à jour de progression** : Claude publie des mises à jour de statut dans votre fil Slack au fur et à mesure de la progression du travail

995. **Achèvement** : Une fois terminé, Claude vous @mentionne avec un résumé et des boutons d'action

1006. **Révision** : Cliquez sur « Afficher la session » pour voir la transcription complète, ou « Créer une PR » pour ouvrir une demande de tirage

101 

102## Éléments de l'interface utilisateur

103 

104### Accueil de l'application

105 

106L'onglet Accueil de l'application affiche votre statut de connexion et vous permet de connecter ou de déconnecter votre compte Claude de Slack.

107 

108### Actions de message

109 

110* **Afficher la session** : Ouvre la session Claude Code complète dans votre navigateur où vous pouvez voir tout le travail effectué, continuer la session ou faire des demandes supplémentaires.

111* **Créer une PR** : Crée une demande de tirage directement à partir des modifications de la session.

112* **Réessayer en tant que Code** : Si Claude a initialement répondu en tant qu'assistant de chat mais que vous vouliez une session de codage, cliquez sur ce bouton pour réessayer la demande en tant que tâche Claude Code.

113* **Changer de référentiel** : Vous permet de sélectionner un référentiel différent si Claude a mal choisi.

114 

115### Sélection du référentiel

116 

117Claude sélectionne automatiquement un référentiel en fonction du contexte de votre conversation Slack. Si plusieurs référentiels pourraient s'appliquer, Claude peut afficher une liste déroulante vous permettant de choisir le bon.

118 

119## Accès et permissions

120 

121### Accès au niveau utilisateur

122 

123| Type d'accès | Condition |

124| :------------------------------ | :------------------------------------------------------------------------------------------- |

125| Sessions Claude Code | Chaque utilisateur exécute les sessions sous son propre compte Claude |

126| Utilisation et limites de débit | Les sessions comptent par rapport aux limites du plan de l'utilisateur individuel |

127| Accès au référentiel | Les utilisateurs ne peuvent accéder qu'aux référentiels qu'ils ont personnellement connectés |

128| Historique des sessions | Les sessions apparaissent dans votre historique Claude Code sur claude.ai/code |

129 

130### Permissions d'administrateur de l'espace de travail

131 

132Les administrateurs de l'espace de travail Slack contrôlent si l'application Claude peut être installée dans l'espace de travail. Les utilisateurs individuels s'authentifient ensuite avec leurs propres comptes Claude pour utiliser l'intégration.

133 

134## Ce qui est accessible où

135 

136**Dans Slack** : Vous verrez les mises à jour de statut, les résumés d'achèvement et les boutons d'action. La transcription complète est préservée et toujours accessible.

137 

138**Sur le web** : La session Claude Code complète avec l'historique complet de la conversation, tous les changements de code, les opérations de fichiers et la possibilité de continuer la session ou de créer des demandes de tirage.

139 

140## Meilleures pratiques

141 

142### Rédaction de demandes efficaces

143 

144* **Soyez précis** : Incluez les noms de fichiers, les noms de fonctions ou les messages d'erreur si pertinent.

145* **Fournissez du contexte** : Mentionnez le référentiel ou le projet s'il n'est pas clair à partir de la conversation.

146* **Définissez le succès** : Expliquez à quoi ressemble « terminé » — Claude devrait-il écrire des tests ? Mettre à jour la documentation ? Créer une PR ?

147* **Utilisez les fils** : Répondez dans les fils lors de la discussion de bugs ou de fonctionnalités afin que Claude puisse recueillir le contexte complet.

148 

149### Quand utiliser Slack par rapport au web

150 

151**Utilisez Slack quand** : Le contexte existe déjà dans une discussion Slack, vous souhaitez lancer une tâche de manière asynchrone, ou vous collaborez avec des coéquipiers qui ont besoin de visibilité.

152 

153**Utilisez le web directement quand** : Vous devez télécharger des fichiers, souhaitez une interaction en temps réel pendant le développement, ou travaillez sur des tâches plus longues et plus complexes.

154 

155## Dépannage

156 

157### Les sessions ne démarrent pas

158 

1591. Vérifiez que votre compte Claude est connecté dans l'Accueil de l'application Claude

1602. Vérifiez que vous avez accès à Claude Code sur le web activé

1613. Assurez-vous que vous avez au moins un référentiel GitHub connecté à Claude Code

162 

163### Le référentiel ne s'affiche pas

164 

1651. Connectez le référentiel dans Claude Code sur le web à [claude.ai/code](https://claude.ai/code)

1662. Vérifiez vos permissions GitHub pour ce référentiel

1673. Essayez de déconnecter et de reconnecter votre compte GitHub

168 

169### Mauvais référentiel sélectionné

170 

1711. Cliquez sur le bouton « Changer de référentiel » pour sélectionner un référentiel différent

1722. Incluez le nom du référentiel dans votre demande pour une sélection plus précise

173 

174### Erreurs d'authentification

175 

1761. Déconnectez et reconnectez votre compte Claude dans l'Accueil de l'application

1772. Assurez-vous que vous êtes connecté au bon compte Claude dans votre navigateur

1783. Vérifiez que votre plan Claude inclut l'accès à Claude Code

179 

180### Expiration de la session

181 

1821. Les sessions restent accessibles dans votre historique Claude Code sur le web

1832. Vous pouvez continuer ou référencer les sessions passées à partir de [claude.ai/code](https://claude.ai/code)

184 

185## Limitations actuelles

186 

187* **GitHub uniquement** : Prend actuellement en charge les référentiels sur GitHub.

188* **Une PR à la fois** : Chaque session peut créer une demande de tirage.

189* **Les limites de débit s'appliquent** : Les sessions utilisent les limites de débit du plan Claude individuel.

190* **Accès web requis** : Les utilisateurs doivent avoir accès à Claude Code sur le web ; ceux qui ne l'ont pas recevront uniquement des réponses de chat Claude standard.

191 

192## Ressources connexes

193 

194<CardGroup>

195 <Card title="Claude Code sur le web" icon="globe" href="/fr/claude-code-on-the-web">

196 En savoir plus sur Claude Code sur le web

197 </Card>

198 

199 <Card title="Claude pour Slack" icon="slack" href="https://claude.com/claude-and-slack">

200 Documentation générale de Claude pour Slack

201 </Card>

202 

203 <Card title="Slack App Marketplace" icon="store" href="https://slack.com/marketplace/A08SF47R6P4">

204 Installez l'application Claude à partir de la Slack Marketplace

205 </Card>

206 

207 <Card title="Centre d'aide Claude" icon="circle-question" href="https://support.claude.com">

208 Obtenir un support supplémentaire

209 </Card>

210</CardGroup>

statusline.md +1060 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Personnalisez votre barre de statut

6 

7> Configurez une barre de statut personnalisée pour surveiller l'utilisation de la fenêtre de contexte, les coûts et l'état git dans Claude Code

8 

9La barre de statut est une barre personnalisable en bas de Claude Code qui exécute n'importe quel script shell que vous configurez. Elle reçoit les données de session JSON sur stdin et affiche tout ce que votre script imprime, vous donnant une vue persistante et en un coup d'œil de l'utilisation du contexte, des coûts, de l'état git, ou de tout ce que vous voulez suivre.

10 

11Les barres de statut sont utiles quand vous :

12 

13* Voulez surveiller l'utilisation de la fenêtre de contexte pendant que vous travaillez

14* Avez besoin de suivre les coûts de session

15* Travaillez sur plusieurs sessions et avez besoin de les distinguer

16* Voulez que la branche git et l'état soient toujours visibles

17 

18Voici un exemple d'une [barre de statut multi-lignes](#display-multiple-lines) qui affiche les informations git sur la première ligne et une barre de contexte codée par couleur sur la deuxième.

19 

20<Frame>

21 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-multiline.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=60f11387658acc9ff75158ae85f2ac87" alt="Une barre de statut multi-lignes affichant le nom du modèle, le répertoire, la branche git sur la première ligne, et une barre de progression d'utilisation du contexte avec le coût et la durée sur la deuxième ligne" width="776" height="212" data-path="images/statusline-multiline.png" />

22</Frame>

23 

24Cette page vous guide à travers [la configuration d'une barre de statut basique](#set-up-a-status-line), explique [comment les données circulent](#how-status-lines-work) de Claude Code à votre script, liste [tous les champs que vous pouvez afficher](#available-data), et fournit [des exemples prêts à l'emploi](#examples) pour les modèles courants comme l'état git, le suivi des coûts et les barres de progression.

25 

26## Configurer une barre de statut

27 

28Utilisez la [commande `/statusline`](#use-the-%2Fstatusline-command) pour que Claude Code génère un script pour vous, ou [créez manuellement un script](#manually-configure-a-status-line) et ajoutez-le à vos paramètres.

29 

30### Utiliser la commande /statusline

31 

32La commande `/statusline` accepte des instructions en langage naturel décrivant ce que vous voulez afficher. Claude Code génère un fichier script dans `~/.claude/` et met à jour vos paramètres automatiquement :

33 

34```text theme={null}

35/statusline show model name and context percentage with a progress bar

36```

37 

38### Configurer manuellement une barre de statut

39 

40Ajoutez un champ `statusLine` à vos paramètres utilisateur (`~/.claude/settings.json`, où `~` est votre répertoire personnel) ou [paramètres de projet](/fr/settings#settings-files). Définissez `type` sur `"command"` et pointez `command` vers un chemin de script ou une commande shell en ligne. Pour une procédure complète de création d'un script, voir [Construire une barre de statut étape par étape](#build-a-status-line-step-by-step).

41 

42```json theme={null}

43{

44 "statusLine": {

45 "type": "command",

46 "command": "~/.claude/statusline.sh",

47 "padding": 2

48 }

49}

50```

51 

52Le champ `command` s'exécute dans un shell, vous pouvez donc aussi utiliser des commandes en ligne au lieu d'un fichier script. Cet exemple utilise `jq` pour analyser l'entrée JSON et afficher le nom du modèle et le pourcentage de contexte :

53 

54```json theme={null}

55{

56 "statusLine": {

57 "type": "command",

58 "command": "jq -r '\"[\\(.model.display_name)] \\(.context_window.used_percentage // 0)% context\"'"

59 }

60}

61```

62 

63Le champ optionnel `padding` ajoute un espacement horizontal supplémentaire (en caractères) au contenu de la barre de statut. Par défaut `0`. Cet espacement s'ajoute à l'espacement intégré de l'interface, il contrôle donc l'indentation relative plutôt que la distance absolue du bord du terminal.

64 

65Le champ optionnel `refreshInterval` réexécute votre commande toutes les N secondes en plus des [mises à jour basées sur les événements](#how-status-lines-work). Le minimum est `1`. Définissez ceci quand votre barre de statut affiche des données basées sur le temps comme une horloge, ou quand les sous-agents en arrière-plan modifient l'état git pendant que la session principale est inactive. Laissez-le non défini pour s'exécuter uniquement sur les événements.

66 

67Le champ optionnel `hideVimModeIndicator` supprime le texte intégré `-- INSERT --` sous l'invite. Définissez ceci sur `true` quand votre script affiche [`vim.mode`](#available-data) lui-même, afin que le mode ne soit pas affiché deux fois.

68 

69### Désactiver la barre de statut

70 

71Exécutez `/statusline` et demandez-lui de supprimer ou d'effacer votre barre de statut (par exemple, `/statusline delete`, `/statusline clear`, `/statusline remove it`). Vous pouvez aussi supprimer manuellement le champ `statusLine` de votre settings.json.

72 

73## Construire une barre de statut étape par étape

74 

75Cette procédure montre ce qui se passe sous le capot en créant manuellement une barre de statut qui affiche le modèle actuel, le répertoire de travail et le pourcentage d'utilisation de la fenêtre de contexte.

76 

77<Note>L'exécution de [`/statusline`](#use-the-%2Fstatusline-command) avec une description de ce que vous voulez configure tout cela automatiquement pour vous.</Note>

78 

79Ces exemples utilisent des scripts Bash, qui fonctionnent sur macOS et Linux. Sur Windows, voir [Configuration Windows](#windows-configuration) pour des exemples PowerShell et Git Bash.

80 

81<Frame>

82 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-quickstart.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=696445e59ca0059213250651ad23db6b" alt="Une barre de statut affichant le nom du modèle, le répertoire et le pourcentage de contexte" width="726" height="164" data-path="images/statusline-quickstart.png" />

83</Frame>

84 

85<Steps>

86 <Step title="Créer un script qui lit JSON et imprime la sortie">

87 Claude Code envoie les données JSON à votre script via stdin. Ce script utilise [`jq`](https://jqlang.github.io/jq/), un analyseur JSON en ligne de commande que vous devrez peut-être installer, pour extraire le nom du modèle, le répertoire et le pourcentage de contexte, puis imprime une ligne formatée.

88 

89 Enregistrez ceci dans `~/.claude/statusline.sh` (où `~` est votre répertoire personnel, tel que `/Users/username` sur macOS ou `/home/username` sur Linux) :

90 

91 ```bash theme={null}

92 #!/bin/bash

93 # Read JSON data that Claude Code sends to stdin

94 input=$(cat)

95 

96 # Extract fields using jq

97 MODEL=$(echo "$input" | jq -r '.model.display_name')

98 DIR=$(echo "$input" | jq -r '.workspace.current_dir')

99 # The "// 0" provides a fallback if the field is null

100 PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)

101 

102 # Output the status line - ${DIR##*/} extracts just the folder name

103 echo "[$MODEL] 📁 ${DIR##*/} | ${PCT}% context"

104 ```

105 </Step>

106 

107 <Step title="Le rendre exécutable">

108 Marquez le script comme exécutable pour que votre shell puisse l'exécuter :

109 

110 ```bash theme={null}

111 chmod +x ~/.claude/statusline.sh

112 ```

113 </Step>

114 

115 <Step title="Ajouter aux paramètres">

116 Dites à Claude Code d'exécuter votre script comme barre de statut. Ajoutez cette configuration à `~/.claude/settings.json`, qui définit `type` sur `"command"` (ce qui signifie « exécuter cette commande shell ») et pointe `command` vers votre script :

117 

118 ```json theme={null}

119 {

120 "statusLine": {

121 "type": "command",

122 "command": "~/.claude/statusline.sh"

123 }

124 }

125 ```

126 

127 Votre barre de statut apparaît en bas de l'interface. Les paramètres se rechargent automatiquement, mais les modifications n'apparaîtront pas avant votre prochaine interaction avec Claude Code.

128 </Step>

129</Steps>

130 

131## Comment fonctionnent les barres de statut

132 

133Claude Code exécute votre script et envoie les [données de session JSON](#available-data) via stdin. Votre script lit le JSON, extrait ce dont il a besoin et imprime du texte sur stdout. Claude Code affiche tout ce que votre script imprime.

134 

135**Quand elle se met à jour**

136 

137Votre script s'exécute après chaque nouveau message d'assistant, quand le mode de permission change, ou quand le mode vim bascule. Les mises à jour sont débogées à 300 ms, ce qui signifie que les changements rapides se regroupent et votre script s'exécute une fois que les choses se stabilisent. Si une nouvelle mise à jour se déclenche pendant que votre script s'exécute encore, l'exécution en cours est annulée. Si vous modifiez votre script, les modifications n'apparaîtront pas avant que votre prochaine interaction avec Claude Code ne déclenche une mise à jour.

138 

139Ces déclencheurs peuvent devenir silencieux quand la session principale est inactive, par exemple pendant qu'un coordinateur attend les sous-agents en arrière-plan. Pour garder les segments basés sur le temps ou provenant de sources externes à jour pendant les périodes inactives, définissez [`refreshInterval`](#manually-configure-a-status-line) pour aussi réexécuter la commande sur un minuteur fixe.

140 

141**Ce que votre script peut afficher**

142 

143* **Plusieurs lignes** : chaque instruction `echo` ou `print` s'affiche comme une ligne séparée. Voir l'[exemple multi-lignes](#display-multiple-lines).

144* **Couleurs** : utilisez les [codes d'échappement ANSI](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors) comme `\033[32m` pour le vert (le terminal doit les supporter). Voir l'[exemple d'état git](#git-status-with-colors).

145* **Liens** : utilisez les [séquences d'échappement OSC 8](https://en.wikipedia.org/wiki/ANSI_escape_code#OSC) pour rendre le texte cliquable (Cmd+clic sur macOS, Ctrl+clic sur Windows/Linux). Nécessite un terminal qui supporte les hyperliens comme iTerm2, Kitty ou WezTerm. Voir l'[exemple de liens cliquables](#clickable-links).

146 

147<Note>La barre de statut s'exécute localement et ne consomme pas de jetons API. Elle se cache temporairement pendant certaines interactions UI, y compris les suggestions d'autocomplétion, le menu d'aide et les invites de permission.</Note>

148 

149## Données disponibles

150 

151Claude Code envoie les champs JSON suivants à votre script via stdin :

152 

153| Champ | Description |

154| -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

155| `model.id`, `model.display_name` | Identifiant du modèle actuel et nom d'affichage |

156| `cwd`, `workspace.current_dir` | Répertoire de travail actuel. Les deux champs contiennent la même valeur ; `workspace.current_dir` est préféré pour la cohérence avec `workspace.project_dir`. |

157| `workspace.project_dir` | Répertoire où Claude Code a été lancé, qui peut différer de `cwd` si le répertoire de travail change pendant une session |

158| `workspace.added_dirs` | Répertoires supplémentaires ajoutés via `/add-dir` ou `--add-dir`. Tableau vide si aucun n'a été ajouté |

159| `workspace.git_worktree` | Nom du git worktree quand le répertoire actuel se trouve à l'intérieur d'un worktree lié créé avec `git worktree add`. Absent dans le worktree principal. Rempli pour n'importe quel git worktree, contrairement à `worktree.*` qui s'applique uniquement aux sessions `--worktree` |

160| `cost.total_cost_usd` | Coût total estimé de la session en USD, calculé côté client. Peut différer de votre facture réelle |

161| `cost.total_duration_ms` | Temps écoulé total depuis le début de la session, en millisecondes |

162| `cost.total_api_duration_ms` | Temps total passé à attendre les réponses API en millisecondes |

163| `cost.total_lines_added`, `cost.total_lines_removed` | Lignes de code modifiées |

164| `context_window.total_input_tokens`, `context_window.total_output_tokens` | Comptages de jetons cumulatifs dans la session |

165| `context_window.context_window_size` | Taille maximale de la fenêtre de contexte en jetons. 200 000 par défaut, ou 1 000 000 pour les modèles avec contexte étendu. |

166| `context_window.used_percentage` | Pourcentage pré-calculé de fenêtre de contexte utilisée |

167| `context_window.remaining_percentage` | Pourcentage pré-calculé de fenêtre de contexte restante |

168| `context_window.current_usage` | Comptages de jetons du dernier appel API, décrits dans [champs de fenêtre de contexte](#context-window-fields) |

169| `exceeds_200k_tokens` | Si le comptage total de jetons (jetons d'entrée, de cache et de sortie combinés) de la réponse API la plus récente dépasse 200 k. C'est un seuil fixe indépendamment de la taille réelle de la fenêtre de contexte. |

170| `rate_limits.five_hour.used_percentage`, `rate_limits.seven_day.used_percentage` | Pourcentage de la limite de débit de 5 heures ou 7 jours consommée, de 0 à 100 |

171| `rate_limits.five_hour.resets_at`, `rate_limits.seven_day.resets_at` | Secondes d'époque Unix quand la fenêtre de limite de débit de 5 heures ou 7 jours se réinitialise |

172| `session_id` | Identifiant de session unique |

173| `session_name` | Nom de session personnalisé défini avec l'indicateur `--name` ou `/rename`. Absent si aucun nom personnalisé n'a été défini |

174| `transcript_path` | Chemin vers le fichier de transcription de conversation |

175| `version` | Version de Claude Code |

176| `output_style.name` | Nom du style de sortie actuel |

177| `vim.mode` | Mode vim actuel (`NORMAL`, `INSERT`, `VISUAL`, ou `VISUAL LINE`) quand le [mode vim](/fr/interactive-mode#vim-editor-mode) est activé |

178| `agent.name` | Nom de l'agent lors de l'exécution avec l'indicateur `--agent` ou les paramètres d'agent configurés |

179| `worktree.name` | Nom du worktree actif. Présent uniquement pendant les sessions `--worktree` |

180| `worktree.path` | Chemin absolu vers le répertoire du worktree |

181| `worktree.branch` | Nom de la branche git pour le worktree (par exemple, `"worktree-my-feature"`). Absent pour les worktrees basés sur des hooks |

182| `worktree.original_cwd` | Le répertoire dans lequel Claude se trouvait avant d'entrer dans le worktree |

183| `worktree.original_branch` | Branche git extraite avant d'entrer dans le worktree. Absent pour les worktrees basés sur des hooks |

184 

185<Accordion title="Schéma JSON complet">

186 Votre commande de barre de statut reçoit cette structure JSON via stdin :

187 

188 ```json theme={null}

189 {

190 "cwd": "/current/working/directory",

191 "session_id": "abc123...",

192 "session_name": "my-session",

193 "transcript_path": "/path/to/transcript.jsonl",

194 "model": {

195 "id": "claude-opus-4-7",

196 "display_name": "Opus"

197 },

198 "workspace": {

199 "current_dir": "/current/working/directory",

200 "project_dir": "/original/project/directory",

201 "added_dirs": [],

202 "git_worktree": "feature-xyz"

203 },

204 "version": "2.1.90",

205 "output_style": {

206 "name": "default"

207 },

208 "cost": {

209 "total_cost_usd": 0.01234,

210 "total_duration_ms": 45000,

211 "total_api_duration_ms": 2300,

212 "total_lines_added": 156,

213 "total_lines_removed": 23

214 },

215 "context_window": {

216 "total_input_tokens": 15234,

217 "total_output_tokens": 4521,

218 "context_window_size": 200000,

219 "used_percentage": 8,

220 "remaining_percentage": 92,

221 "current_usage": {

222 "input_tokens": 8500,

223 "output_tokens": 1200,

224 "cache_creation_input_tokens": 5000,

225 "cache_read_input_tokens": 2000

226 }

227 },

228 "exceeds_200k_tokens": false,

229 "effort": {

230 "level": "high"

231 },

232 "thinking": {

233 "enabled": true

234 },

235 "rate_limits": {

236 "five_hour": {

237 "used_percentage": 23.5,

238 "resets_at": 1738425600

239 },

240 "seven_day": {

241 "used_percentage": 41.2,

242 "resets_at": 1738857600

243 }

244 },

245 "vim": {

246 "mode": "NORMAL"

247 },

248 "agent": {

249 "name": "security-reviewer"

250 },

251 "worktree": {

252 "name": "my-feature",

253 "path": "/path/to/.claude/worktrees/my-feature",

254 "branch": "worktree-my-feature",

255 "original_cwd": "/path/to/project",

256 "original_branch": "main"

257 }

258 }

259 ```

260 

261 **Champs qui peuvent être absents** (non présents dans JSON) :

262 

263 * `session_name` : apparaît uniquement quand un nom personnalisé a été défini avec `--name` ou `/rename`

264 * `workspace.git_worktree` : apparaît uniquement quand le répertoire actuel se trouve à l'intérieur d'un git worktree lié

265 * `effort` : apparaît uniquement quand le modèle actuel supporte le paramètre d'effort de raisonnement

266 * `vim` : apparaît uniquement quand le mode vim est activé

267 * `agent` : apparaît uniquement lors de l'exécution avec l'indicateur `--agent` ou les paramètres d'agent configurés

268 * `worktree` : apparaît uniquement pendant les sessions `--worktree`. Quand présent, `branch` et `original_branch` peuvent aussi être absents pour les worktrees basés sur des hooks

269 * `rate_limits` : apparaît uniquement pour les abonnés Claude.ai (Pro/Max) après la première réponse API dans la session. Chaque fenêtre (`five_hour`, `seven_day`) peut être indépendamment absente. Utilisez `jq -r '.rate_limits.five_hour.used_percentage // empty'` pour gérer l'absence avec élégance.

270 

271 **Champs qui peuvent être `null`** :

272 

273 * `context_window.current_usage` : `null` avant le premier appel API dans une session

274 * `context_window.used_percentage`, `context_window.remaining_percentage` : peuvent être `null` au début de la session

275 

276 Gérez les champs manquants avec un accès conditionnel et les valeurs null avec des valeurs par défaut de secours dans vos scripts.

277</Accordion>

278 

279### Champs de fenêtre de contexte

280 

281L'objet `context_window` fournit deux façons de suivre l'utilisation du contexte :

282 

283* **Totaux cumulatifs** (`total_input_tokens`, `total_output_tokens`) : somme de tous les jetons dans toute la session, utile pour suivre la consommation totale

284* **Utilisation actuelle** (`current_usage`) : comptages de jetons du dernier appel API, utilisez ceci pour un pourcentage de contexte précis car il reflète l'état réel du contexte

285 

286L'objet `current_usage` contient :

287 

288* `input_tokens` : jetons d'entrée dans le contexte actuel

289* `output_tokens` : jetons de sortie générés

290* `cache_creation_input_tokens` : jetons écrits dans le cache

291* `cache_read_input_tokens` : jetons lus du cache

292 

293Le champ `used_percentage` est calculé à partir des jetons d'entrée uniquement : `input_tokens + cache_creation_input_tokens + cache_read_input_tokens`. Il n'inclut pas `output_tokens`.

294 

295Si vous calculez le pourcentage de contexte manuellement à partir de `current_usage`, utilisez la même formule d'entrée uniquement pour correspondre à `used_percentage`.

296 

297L'objet `current_usage` est `null` avant le premier appel API dans une session.

298 

299## Exemples

300 

301Ces exemples montrent les modèles courants de barre de statut. Pour utiliser n'importe quel exemple :

302 

3031. Enregistrez le script dans un fichier comme `~/.claude/statusline.sh` (ou `.py`/`.js`)

3042. Le rendre exécutable : `chmod +x ~/.claude/statusline.sh`

3053. Ajouter le chemin à vos [paramètres](#manually-configure-a-status-line)

306 

307Les exemples Bash utilisent [`jq`](https://jqlang.github.io/jq/) pour analyser JSON. Python et Node.js ont l'analyse JSON intégrée.

308 

309### Utilisation de la fenêtre de contexte

310 

311Affiche le modèle actuel et l'utilisation de la fenêtre de contexte avec une barre de progression visuelle. Chaque script lit JSON depuis stdin, extrait le champ `used_percentage` et construit une barre de 10 caractères où les blocs remplis (▓) représentent l'utilisation :

312 

313<Frame>

314 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-context-window-usage.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=15b58ab3602f036939145dde3165c6f7" alt="Une barre de statut affichant le nom du modèle et une barre de progression avec pourcentage" width="448" height="152" data-path="images/statusline-context-window-usage.png" />

315</Frame>

316 

317<CodeGroup>

318 ```bash Bash theme={null}

319 #!/bin/bash

320 # Read all of stdin into a variable

321 input=$(cat)

322 

323 # Extract fields with jq, "// 0" provides fallback for null

324 MODEL=$(echo "$input" | jq -r '.model.display_name')

325 PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)

326 

327 # Build progress bar: printf -v creates a run of spaces, then

328 # ${var// /▓} replaces each space with a block character

329 BAR_WIDTH=10

330 FILLED=$((PCT * BAR_WIDTH / 100))

331 EMPTY=$((BAR_WIDTH - FILLED))

332 BAR=""

333 [ "$FILLED" -gt 0 ] && printf -v FILL "%${FILLED}s" && BAR="${FILL// /▓}"

334 [ "$EMPTY" -gt 0 ] && printf -v PAD "%${EMPTY}s" && BAR="${BAR}${PAD// /░}"

335 

336 echo "[$MODEL] $BAR $PCT%"

337 ```

338 

339 ```python Python theme={null}

340 #!/usr/bin/env python3

341 import json, sys

342 

343 # json.load reads and parses stdin in one step

344 data = json.load(sys.stdin)

345 model = data['model']['display_name']

346 # "or 0" handles null values

347 pct = int(data.get('context_window', {}).get('used_percentage', 0) or 0)

348 

349 # String multiplication builds the bar

350 filled = pct * 10 // 100

351 bar = '▓' * filled + '░' * (10 - filled)

352 

353 print(f"[{model}] {bar} {pct}%")

354 ```

355 

356 ```javascript Node.js theme={null}

357 #!/usr/bin/env node

358 // Node.js reads stdin asynchronously with events

359 let input = '';

360 process.stdin.on('data', chunk => input += chunk);

361 process.stdin.on('end', () => {

362 const data = JSON.parse(input);

363 const model = data.model.display_name;

364 // Optional chaining (?.) safely handles null fields

365 const pct = Math.floor(data.context_window?.used_percentage || 0);

366 

367 // String.repeat() builds the bar

368 const filled = Math.floor(pct * 10 / 100);

369 const bar = '▓'.repeat(filled) + '░'.repeat(10 - filled);

370 

371 console.log(`[${model}] ${bar} ${pct}%`);

372 });

373 ```

374</CodeGroup>

375 

376### État git avec couleurs

377 

378Affiche la branche git avec des indicateurs codés par couleur pour les fichiers en attente et modifiés. Ce script utilise les [codes d'échappement ANSI](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors) pour les couleurs de terminal : `\033[32m` est vert, `\033[33m` est jaune, et `\033[0m` réinitialise à la valeur par défaut.

379 

380<Frame>

381 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-git-context.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=e656f34f90d1d9a1d0e220988914345f" alt="Une barre de statut affichant le modèle, le répertoire, la branche git et des indicateurs colorés pour les fichiers en attente et modifiés" width="742" height="178" data-path="images/statusline-git-context.png" />

382</Frame>

383 

384Chaque script vérifie si le répertoire actuel est un dépôt git, compte les fichiers en attente et modifiés, et affiche des indicateurs codés par couleur :

385 

386<CodeGroup>

387 ```bash Bash theme={null}

388 #!/bin/bash

389 input=$(cat)

390 

391 MODEL=$(echo "$input" | jq -r '.model.display_name')

392 DIR=$(echo "$input" | jq -r '.workspace.current_dir')

393 

394 GREEN='\033[32m'

395 YELLOW='\033[33m'

396 RESET='\033[0m'

397 

398 if git rev-parse --git-dir > /dev/null 2>&1; then

399 BRANCH=$(git branch --show-current 2>/dev/null)

400 STAGED=$(git diff --cached --numstat 2>/dev/null | wc -l | tr -d ' ')

401 MODIFIED=$(git diff --numstat 2>/dev/null | wc -l | tr -d ' ')

402 

403 GIT_STATUS=""

404 [ "$STAGED" -gt 0 ] && GIT_STATUS="${GREEN}+${STAGED}${RESET}"

405 [ "$MODIFIED" -gt 0 ] && GIT_STATUS="${GIT_STATUS}${YELLOW}~${MODIFIED}${RESET}"

406 

407 echo -e "[$MODEL] 📁 ${DIR##*/} | 🌿 $BRANCH $GIT_STATUS"

408 else

409 echo "[$MODEL] 📁 ${DIR##*/}"

410 fi

411 ```

412 

413 ```python Python theme={null}

414 #!/usr/bin/env python3

415 import json, sys, subprocess, os

416 

417 data = json.load(sys.stdin)

418 model = data['model']['display_name']

419 directory = os.path.basename(data['workspace']['current_dir'])

420 

421 GREEN, YELLOW, RESET = '\033[32m', '\033[33m', '\033[0m'

422 

423 try:

424 subprocess.check_output(['git', 'rev-parse', '--git-dir'], stderr=subprocess.DEVNULL)

425 branch = subprocess.check_output(['git', 'branch', '--show-current'], text=True).strip()

426 staged_output = subprocess.check_output(['git', 'diff', '--cached', '--numstat'], text=True).strip()

427 modified_output = subprocess.check_output(['git', 'diff', '--numstat'], text=True).strip()

428 staged = len(staged_output.split('\n')) if staged_output else 0

429 modified = len(modified_output.split('\n')) if modified_output else 0

430 

431 git_status = f"{GREEN}+{staged}{RESET}" if staged else ""

432 git_status += f"{YELLOW}~{modified}{RESET}" if modified else ""

433 

434 print(f"[{model}] 📁 {directory} | 🌿 {branch} {git_status}")

435 except:

436 print(f"[{model}] 📁 {directory}")

437 ```

438 

439 ```javascript Node.js theme={null}

440 #!/usr/bin/env node

441 const { execSync } = require('child_process');

442 const path = require('path');

443 

444 let input = '';

445 process.stdin.on('data', chunk => input += chunk);

446 process.stdin.on('end', () => {

447 const data = JSON.parse(input);

448 const model = data.model.display_name;

449 const dir = path.basename(data.workspace.current_dir);

450 

451 const GREEN = '\x1b[32m', YELLOW = '\x1b[33m', RESET = '\x1b[0m';

452 

453 try {

454 execSync('git rev-parse --git-dir', { stdio: 'ignore' });

455 const branch = execSync('git branch --show-current', { encoding: 'utf8' }).trim();

456 const staged = execSync('git diff --cached --numstat', { encoding: 'utf8' }).trim().split('\n').filter(Boolean).length;

457 const modified = execSync('git diff --numstat', { encoding: 'utf8' }).trim().split('\n').filter(Boolean).length;

458 

459 let gitStatus = staged ? `${GREEN}+${staged}${RESET}` : '';

460 gitStatus += modified ? `${YELLOW}~${modified}${RESET}` : '';

461 

462 console.log(`[${model}] 📁 ${dir} | 🌿 ${branch} ${gitStatus}`);

463 } catch {

464 console.log(`[${model}] 📁 ${dir}`);

465 }

466 });

467 ```

468</CodeGroup>

469 

470### Suivi des coûts et de la durée

471 

472Suivez les coûts API de votre session et le temps écoulé. Le champ `cost.total_cost_usd` accumule le coût estimé de tous les appels API dans la session actuelle. Le champ `cost.total_duration_ms` mesure le temps écoulé total depuis le début de la session, tandis que `cost.total_api_duration_ms` suit uniquement le temps passé à attendre les réponses API.

473 

474Chaque script formate le coût en devise et convertit les millisecondes en minutes et secondes :

475 

476<Frame>

477 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-cost-tracking.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=e3444a51fe6f3440c134bd5f1f08ad29" alt="Une barre de statut affichant le nom du modèle, le coût de session et la durée" width="588" height="180" data-path="images/statusline-cost-tracking.png" />

478</Frame>

479 

480<CodeGroup>

481 ```bash Bash theme={null}

482 #!/bin/bash

483 input=$(cat)

484 

485 MODEL=$(echo "$input" | jq -r '.model.display_name')

486 COST=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')

487 DURATION_MS=$(echo "$input" | jq -r '.cost.total_duration_ms // 0')

488 

489 COST_FMT=$(printf '$%.2f' "$COST")

490 DURATION_SEC=$((DURATION_MS / 1000))

491 MINS=$((DURATION_SEC / 60))

492 SECS=$((DURATION_SEC % 60))

493 

494 echo "[$MODEL] 💰 $COST_FMT | ⏱️ ${MINS}m ${SECS}s"

495 ```

496 

497 ```python Python theme={null}

498 #!/usr/bin/env python3

499 import json, sys

500 

501 data = json.load(sys.stdin)

502 model = data['model']['display_name']

503 cost = data.get('cost', {}).get('total_cost_usd', 0) or 0

504 duration_ms = data.get('cost', {}).get('total_duration_ms', 0) or 0

505 

506 duration_sec = duration_ms // 1000

507 mins, secs = duration_sec // 60, duration_sec % 60

508 

509 print(f"[{model}] 💰 ${cost:.2f} | ⏱️ {mins}m {secs}s")

510 ```

511 

512 ```javascript Node.js theme={null}

513 #!/usr/bin/env node

514 let input = '';

515 process.stdin.on('data', chunk => input += chunk);

516 process.stdin.on('end', () => {

517 const data = JSON.parse(input);

518 const model = data.model.display_name;

519 const cost = data.cost?.total_cost_usd || 0;

520 const durationMs = data.cost?.total_duration_ms || 0;

521 

522 const durationSec = Math.floor(durationMs / 1000);

523 const mins = Math.floor(durationSec / 60);

524 const secs = durationSec % 60;

525 

526 console.log(`[${model}] 💰 $${cost.toFixed(2)} | ⏱️ ${mins}m ${secs}s`);

527 });

528 ```

529</CodeGroup>

530 

531### Afficher plusieurs lignes

532 

533Votre script peut afficher plusieurs lignes pour créer un affichage plus riche. Chaque instruction `echo` produit une ligne séparée dans la zone de statut.

534 

535<Frame>

536 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-multiline.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=60f11387658acc9ff75158ae85f2ac87" alt="Une barre de statut multi-lignes affichant le nom du modèle, le répertoire, la branche git sur la première ligne, et une barre de progression d'utilisation du contexte avec le coût et la durée sur la deuxième ligne" width="776" height="212" data-path="images/statusline-multiline.png" />

537</Frame>

538 

539Cet exemple combine plusieurs techniques : couleurs basées sur des seuils (vert sous 70 %, jaune 70-89 %, rouge 90 %+), une barre de progression et des informations de branche git. Chaque instruction `print` ou `echo` crée une ligne séparée :

540 

541<CodeGroup>

542 ```bash Bash theme={null}

543 #!/bin/bash

544 input=$(cat)

545 

546 MODEL=$(echo "$input" | jq -r '.model.display_name')

547 DIR=$(echo "$input" | jq -r '.workspace.current_dir')

548 COST=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')

549 PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)

550 DURATION_MS=$(echo "$input" | jq -r '.cost.total_duration_ms // 0')

551 

552 CYAN='\033[36m'; GREEN='\033[32m'; YELLOW='\033[33m'; RED='\033[31m'; RESET='\033[0m'

553 

554 # Pick bar color based on context usage

555 if [ "$PCT" -ge 90 ]; then BAR_COLOR="$RED"

556 elif [ "$PCT" -ge 70 ]; then BAR_COLOR="$YELLOW"

557 else BAR_COLOR="$GREEN"; fi

558 

559 FILLED=$((PCT / 10)); EMPTY=$((10 - FILLED))

560 printf -v FILL "%${FILLED}s"; printf -v PAD "%${EMPTY}s"

561 BAR="${FILL// /█}${PAD// /░}"

562 

563 MINS=$((DURATION_MS / 60000)); SECS=$(((DURATION_MS % 60000) / 1000))

564 

565 BRANCH=""

566 git rev-parse --git-dir > /dev/null 2>&1 && BRANCH=" | 🌿 $(git branch --show-current 2>/dev/null)"

567 

568 echo -e "${CYAN}[$MODEL]${RESET} 📁 ${DIR##*/}$BRANCH"

569 COST_FMT=$(printf '$%.2f' "$COST")

570 echo -e "${BAR_COLOR}${BAR}${RESET} ${PCT}% | ${YELLOW}${COST_FMT}${RESET} | ⏱️ ${MINS}m ${SECS}s"

571 ```

572 

573 ```python Python theme={null}

574 #!/usr/bin/env python3

575 import json, sys, subprocess, os

576 

577 data = json.load(sys.stdin)

578 model = data['model']['display_name']

579 directory = os.path.basename(data['workspace']['current_dir'])

580 cost = data.get('cost', {}).get('total_cost_usd', 0) or 0

581 pct = int(data.get('context_window', {}).get('used_percentage', 0) or 0)

582 duration_ms = data.get('cost', {}).get('total_duration_ms', 0) or 0

583 

584 CYAN, GREEN, YELLOW, RED, RESET = '\033[36m', '\033[32m', '\033[33m', '\033[31m', '\033[0m'

585 

586 bar_color = RED if pct >= 90 else YELLOW if pct >= 70 else GREEN

587 filled = pct // 10

588 bar = '█' * filled + '░' * (10 - filled)

589 

590 mins, secs = duration_ms // 60000, (duration_ms % 60000) // 1000

591 

592 try:

593 branch = subprocess.check_output(['git', 'branch', '--show-current'], text=True, stderr=subprocess.DEVNULL).strip()

594 branch = f" | 🌿 {branch}" if branch else ""

595 except:

596 branch = ""

597 

598 print(f"{CYAN}[{model}]{RESET} 📁 {directory}{branch}")

599 print(f"{bar_color}{bar}{RESET} {pct}% | {YELLOW}${cost:.2f}{RESET} | ⏱️ {mins}m {secs}s")

600 ```

601 

602 ```javascript Node.js theme={null}

603 #!/usr/bin/env node

604 const { execSync } = require('child_process');

605 const path = require('path');

606 

607 let input = '';

608 process.stdin.on('data', chunk => input += chunk);

609 process.stdin.on('end', () => {

610 const data = JSON.parse(input);

611 const model = data.model.display_name;

612 const dir = path.basename(data.workspace.current_dir);

613 const cost = data.cost?.total_cost_usd || 0;

614 const pct = Math.floor(data.context_window?.used_percentage || 0);

615 const durationMs = data.cost?.total_duration_ms || 0;

616 

617 const CYAN = '\x1b[36m', GREEN = '\x1b[32m', YELLOW = '\x1b[33m', RED = '\x1b[31m', RESET = '\x1b[0m';

618 

619 const barColor = pct >= 90 ? RED : pct >= 70 ? YELLOW : GREEN;

620 const filled = Math.floor(pct / 10);

621 const bar = '█'.repeat(filled) + '░'.repeat(10 - filled);

622 

623 const mins = Math.floor(durationMs / 60000);

624 const secs = Math.floor((durationMs % 60000) / 1000);

625 

626 let branch = '';

627 try {

628 branch = execSync('git branch --show-current', { encoding: 'utf8', stdio: ['pipe', 'pipe', 'ignore'] }).trim();

629 branch = branch ? ` | 🌿 ${branch}` : '';

630 } catch {}

631 

632 console.log(`${CYAN}[${model}]${RESET} 📁 ${dir}${branch}`);

633 console.log(`${barColor}${bar}${RESET} ${pct}% | ${YELLOW}$${cost.toFixed(2)}${RESET} | ⏱️ ${mins}m ${secs}s`);

634 });

635 ```

636</CodeGroup>

637 

638### Liens cliquables

639 

640Cet exemple crée un lien cliquable vers votre dépôt GitHub. Il lit l'URL du dépôt distant, convertit le format SSH en HTTPS avec `sed` et enveloppe le nom du dépôt dans les codes d'échappement OSC 8. Maintenez Cmd (macOS) ou Ctrl (Windows/Linux) et cliquez pour ouvrir le lien dans votre navigateur.

641 

642<Frame>

643 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-links.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=4bcc6e7deb7cf52f41ab85a219b52661" alt="Une barre de statut affichant un lien cliquable vers un dépôt GitHub" width="726" height="198" data-path="images/statusline-links.png" />

644</Frame>

645 

646Chaque script obtient l'URL du dépôt distant, convertit le format SSH en HTTPS et enveloppe le nom du dépôt dans les codes d'échappement OSC 8. La version Bash utilise `printf '%b'` qui interprète les échappements de barre oblique inverse de manière plus fiable que `echo -e` sur différents shells :

647 

648<CodeGroup>

649 ```bash Bash theme={null}

650 #!/bin/bash

651 input=$(cat)

652 

653 MODEL=$(echo "$input" | jq -r '.model.display_name')

654 

655 # Convert git SSH URL to HTTPS

656 REMOTE=$(git remote get-url origin 2>/dev/null | sed 's/git@github.com:/https:\/\/github.com\//' | sed 's/\.git$//')

657 

658 if [ -n "$REMOTE" ]; then

659 REPO_NAME=$(basename "$REMOTE")

660 # OSC 8 format: \e]8;;URL\a then TEXT then \e]8;;\a

661 # printf %b interprets escape sequences reliably across shells

662 printf '%b' "[$MODEL] 🔗 \e]8;;${REMOTE}\a${REPO_NAME}\e]8;;\a\n"

663 else

664 echo "[$MODEL]"

665 fi

666 ```

667 

668 ```python Python theme={null}

669 #!/usr/bin/env python3

670 import json, sys, subprocess, re, os

671 

672 data = json.load(sys.stdin)

673 model = data['model']['display_name']

674 

675 # Get git remote URL

676 try:

677 remote = subprocess.check_output(

678 ['git', 'remote', 'get-url', 'origin'],

679 stderr=subprocess.DEVNULL, text=True

680 ).strip()

681 # Convert SSH to HTTPS format

682 remote = re.sub(r'^git@github\.com:', 'https://github.com/', remote)

683 remote = re.sub(r'\.git$', '', remote)

684 repo_name = os.path.basename(remote)

685 # OSC 8 escape sequences

686 link = f"\033]8;;{remote}\a{repo_name}\033]8;;\a"

687 print(f"[{model}] 🔗 {link}")

688 except:

689 print(f"[{model}]")

690 ```

691 

692 ```javascript Node.js theme={null}

693 #!/usr/bin/env node

694 const { execSync } = require('child_process');

695 const path = require('path');

696 

697 let input = '';

698 process.stdin.on('data', chunk => input += chunk);

699 process.stdin.on('end', () => {

700 const data = JSON.parse(input);

701 const model = data.model.display_name;

702 

703 try {

704 let remote = execSync('git remote get-url origin', { encoding: 'utf8', stdio: ['pipe', 'pipe', 'ignore'] }).trim();

705 // Convert SSH to HTTPS format

706 remote = remote.replace(/^git@github\.com:/, 'https://github.com/').replace(/\.git$/, '');

707 const repoName = path.basename(remote);

708 // OSC 8 escape sequences

709 const link = `\x1b]8;;${remote}\x07${repoName}\x1b]8;;\x07`;

710 console.log(`[${model}] 🔗 ${link}`);

711 } catch {

712 console.log(`[${model}]`);

713 }

714 });

715 ```

716</CodeGroup>

717 

718### Utilisation des limites de débit

719 

720Affiche l'utilisation des limites de débit d'abonnement Claude.ai dans la barre de statut. L'objet `rate_limits` contient `five_hour` (fenêtre glissante de 5 heures) et `seven_day` (fenêtres hebdomadaires). Chaque fenêtre fournit `used_percentage` (0-100) et `resets_at` (secondes d'époque Unix quand la fenêtre se réinitialise).

721 

722Ce champ n'est présent que pour les abonnés Claude.ai (Pro/Max) après la première réponse API. Chaque script gère le champ absent avec élégance :

723 

724<CodeGroup>

725 ```bash Bash theme={null}

726 #!/bin/bash

727 input=$(cat)

728 

729 MODEL=$(echo "$input" | jq -r '.model.display_name')

730 # "// empty" produces no output when rate_limits is absent

731 FIVE_H=$(echo "$input" | jq -r '.rate_limits.five_hour.used_percentage // empty')

732 WEEK=$(echo "$input" | jq -r '.rate_limits.seven_day.used_percentage // empty')

733 

734 LIMITS=""

735 [ -n "$FIVE_H" ] && LIMITS="5h: $(printf '%.0f' "$FIVE_H")%"

736 [ -n "$WEEK" ] && LIMITS="${LIMITS:+$LIMITS }7d: $(printf '%.0f' "$WEEK")%"

737 

738 [ -n "$LIMITS" ] && echo "[$MODEL] | $LIMITS" || echo "[$MODEL]"

739 ```

740 

741 ```python Python theme={null}

742 #!/usr/bin/env python3

743 import json, sys

744 

745 data = json.load(sys.stdin)

746 model = data['model']['display_name']

747 

748 parts = []

749 rate = data.get('rate_limits', {})

750 five_h = rate.get('five_hour', {}).get('used_percentage')

751 week = rate.get('seven_day', {}).get('used_percentage')

752 

753 if five_h is not None:

754 parts.append(f"5h: {five_h:.0f}%")

755 if week is not None:

756 parts.append(f"7d: {week:.0f}%")

757 

758 if parts:

759 print(f"[{model}] | {' '.join(parts)}")

760 else:

761 print(f"[{model}]")

762 ```

763 

764 ```javascript Node.js theme={null}

765 #!/usr/bin/env node

766 let input = '';

767 process.stdin.on('data', chunk => input += chunk);

768 process.stdin.on('end', () => {

769 const data = JSON.parse(input);

770 const model = data.model.display_name;

771 

772 const parts = [];

773 const fiveH = data.rate_limits?.five_hour?.used_percentage;

774 const week = data.rate_limits?.seven_day?.used_percentage;

775 

776 if (fiveH != null) parts.push(`5h: ${Math.round(fiveH)}%`);

777 if (week != null) parts.push(`7d: ${Math.round(week)}%`);

778 

779 console.log(parts.length ? `[${model}] | ${parts.join(' ')}` : `[${model}]`);

780 });

781 ```

782</CodeGroup>

783 

784### Mettre en cache les opérations coûteuses

785 

786Votre script de barre de statut s'exécute fréquemment pendant les sessions actives. Les commandes comme `git status` ou `git diff` peuvent être lentes, surtout dans les grands dépôts. Cet exemple met en cache les informations git dans un fichier temporaire et ne les actualise que toutes les 5 secondes.

787 

788Le nom du fichier de cache doit être stable dans les invocations de barre de statut au sein d'une session, mais unique dans les sessions afin que les sessions concurrentes dans différents dépôts ne lisent pas l'état git en cache les unes des autres. Les identifiants basés sur les processus comme `$$`, `os.getpid()` ou `process.pid` changent à chaque invocation et annulent le cache. Utilisez plutôt le `session_id` de l'entrée JSON : il est stable pour la durée de vie d'une session et unique par session.

789 

790Chaque script vérifie si le fichier de cache est manquant ou plus ancien que 5 secondes avant d'exécuter les commandes git :

791 

792<CodeGroup>

793 ```bash Bash theme={null}

794 #!/bin/bash

795 input=$(cat)

796 

797 MODEL=$(echo "$input" | jq -r '.model.display_name')

798 DIR=$(echo "$input" | jq -r '.workspace.current_dir')

799 SESSION_ID=$(echo "$input" | jq -r '.session_id')

800 

801 CACHE_FILE="/tmp/statusline-git-cache-$SESSION_ID"

802 CACHE_MAX_AGE=5 # seconds

803 

804 cache_is_stale() {

805 [ ! -f "$CACHE_FILE" ] || \

806 # stat -f %m is macOS, stat -c %Y is Linux

807 [ $(($(date +%s) - $(stat -f %m "$CACHE_FILE" 2>/dev/null || stat -c %Y "$CACHE_FILE" 2>/dev/null || echo 0))) -gt $CACHE_MAX_AGE ]

808 }

809 

810 if cache_is_stale; then

811 if git rev-parse --git-dir > /dev/null 2>&1; then

812 BRANCH=$(git branch --show-current 2>/dev/null)

813 STAGED=$(git diff --cached --numstat 2>/dev/null | wc -l | tr -d ' ')

814 MODIFIED=$(git diff --numstat 2>/dev/null | wc -l | tr -d ' ')

815 echo "$BRANCH|$STAGED|$MODIFIED" > "$CACHE_FILE"

816 else

817 echo "||" > "$CACHE_FILE"

818 fi

819 fi

820 

821 IFS='|' read -r BRANCH STAGED MODIFIED < "$CACHE_FILE"

822 

823 if [ -n "$BRANCH" ]; then

824 echo "[$MODEL] 📁 ${DIR##*/} | 🌿 $BRANCH +$STAGED ~$MODIFIED"

825 else

826 echo "[$MODEL] 📁 ${DIR##*/}"

827 fi

828 ```

829 

830 ```python Python theme={null}

831 #!/usr/bin/env python3

832 import json, sys, subprocess, os, time

833 

834 data = json.load(sys.stdin)

835 model = data['model']['display_name']

836 directory = os.path.basename(data['workspace']['current_dir'])

837 session_id = data['session_id']

838 

839 CACHE_FILE = f"/tmp/statusline-git-cache-{session_id}"

840 CACHE_MAX_AGE = 5 # seconds

841 

842 def cache_is_stale():

843 if not os.path.exists(CACHE_FILE):

844 return True

845 return time.time() - os.path.getmtime(CACHE_FILE) > CACHE_MAX_AGE

846 

847 if cache_is_stale():

848 try:

849 subprocess.check_output(['git', 'rev-parse', '--git-dir'], stderr=subprocess.DEVNULL)

850 branch = subprocess.check_output(['git', 'branch', '--show-current'], text=True).strip()

851 staged = subprocess.check_output(['git', 'diff', '--cached', '--numstat'], text=True).strip()

852 modified = subprocess.check_output(['git', 'diff', '--numstat'], text=True).strip()

853 staged_count = len(staged.split('\n')) if staged else 0

854 modified_count = len(modified.split('\n')) if modified else 0

855 with open(CACHE_FILE, 'w') as f:

856 f.write(f"{branch}|{staged_count}|{modified_count}")

857 except:

858 with open(CACHE_FILE, 'w') as f:

859 f.write("||")

860 

861 with open(CACHE_FILE) as f:

862 branch, staged, modified = f.read().strip().split('|')

863 

864 if branch:

865 print(f"[{model}] 📁 {directory} | 🌿 {branch} +{staged} ~{modified}")

866 else:

867 print(f"[{model}] 📁 {directory}")

868 ```

869 

870 ```javascript Node.js theme={null}

871 #!/usr/bin/env node

872 const { execSync } = require('child_process');

873 const fs = require('fs');

874 const path = require('path');

875 

876 let input = '';

877 process.stdin.on('data', chunk => input += chunk);

878 process.stdin.on('end', () => {

879 const data = JSON.parse(input);

880 const model = data.model.display_name;

881 const dir = path.basename(data.workspace.current_dir);

882 const sessionId = data.session_id;

883 

884 const CACHE_FILE = `/tmp/statusline-git-cache-${sessionId}`;

885 const CACHE_MAX_AGE = 5; // seconds

886 

887 const cacheIsStale = () => {

888 if (!fs.existsSync(CACHE_FILE)) return true;

889 return (Date.now() / 1000) - fs.statSync(CACHE_FILE).mtimeMs / 1000 > CACHE_MAX_AGE;

890 };

891 

892 if (cacheIsStale()) {

893 try {

894 execSync('git rev-parse --git-dir', { stdio: 'ignore' });

895 const branch = execSync('git branch --show-current', { encoding: 'utf8' }).trim();

896 const staged = execSync('git diff --cached --numstat', { encoding: 'utf8' }).trim().split('\n').filter(Boolean).length;

897 const modified = execSync('git diff --numstat', { encoding: 'utf8' }).trim().split('\n').filter(Boolean).length;

898 fs.writeFileSync(CACHE_FILE, `${branch}|${staged}|${modified}`);

899 } catch {

900 fs.writeFileSync(CACHE_FILE, '||');

901 }

902 }

903 

904 const [branch, staged, modified] = fs.readFileSync(CACHE_FILE, 'utf8').trim().split('|');

905 

906 if (branch) {

907 console.log(`[${model}] 📁 ${dir} | 🌿 ${branch} +${staged} ~${modified}`);

908 } else {

909 console.log(`[${model}] 📁 ${dir}`);

910 }

911 });

912 ```

913</CodeGroup>

914 

915### Configuration Windows

916 

917Sur Windows, Claude Code exécute les commandes de barre de statut via Git Bash quand Git Bash est installé, ou via PowerShell quand Git Bash est absent. Pour exécuter un script PowerShell comme votre barre de statut, invoquez-le via `powershell` ; cela fonctionne à partir de l'un ou l'autre shell :

918 

919<CodeGroup>

920 ```json settings.json theme={null}

921 {

922 "statusLine": {

923 "type": "command",

924 "command": "powershell -NoProfile -File C:/Users/username/.claude/statusline.ps1"

925 }

926 }

927 ```

928 

929 ```powershell statusline.ps1 theme={null}

930 $input_json = $input | Out-String | ConvertFrom-Json

931 $cwd = $input_json.cwd

932 $model = $input_json.model.display_name

933 $used = $input_json.context_window.used_percentage

934 $dirname = Split-Path $cwd -Leaf

935 

936 if ($used) {

937 Write-Host "$dirname [$model] ctx: $used%"

938 } else {

939 Write-Host "$dirname [$model]"

940 }

941 ```

942</CodeGroup>

943 

944Ou, quand Git Bash est installé, exécutez un script Bash directement :

945 

946<CodeGroup>

947 ```json settings.json theme={null}

948 {

949 "statusLine": {

950 "type": "command",

951 "command": "~/.claude/statusline.sh"

952 }

953 }

954 ```

955 

956 ```bash statusline.sh theme={null}

957 #!/usr/bin/env bash

958 input=$(cat)

959 cwd=$(echo "$input" | grep -o '"cwd":"[^"]*"' | cut -d'"' -f4)

960 model=$(echo "$input" | grep -o '"display_name":"[^"]*"' | cut -d'"' -f4)

961 dirname="${cwd##*[/\\]}"

962 echo "$dirname [$model]"

963 ```

964</CodeGroup>

965 

966## Barres de statut des sous-agents

967 

968Le paramètre `subagentStatusLine` rend un corps de ligne personnalisé pour chaque [sous-agent](/fr/sub-agents) affiché dans le panneau d'agent sous l'invite. Utilisez-le pour remplacer la ligne par défaut `name · description · token count` par votre propre formatage.

969 

970```json theme={null}

971{

972 "subagentStatusLine": {

973 "type": "command",

974 "command": "~/.claude/subagent-statusline.sh"

975 }

976}

977```

978 

979La commande s'exécute une fois par cycle d'actualisation avec toutes les lignes de sous-agent visibles passées en tant qu'objet JSON unique sur stdin. L'entrée inclut les [champs d'entrée de hook de base](/fr/hooks#common-input-fields) plus `columns` (la largeur de ligne utilisable) et un tableau `tasks`, où chaque tâche a `id`, `name`, `type`, `status`, `description`, `label`, `startTime`, `tokenCount`, `tokenSamples` et `cwd`.

980 

981Écrivez une ligne JSON sur stdout par ligne que vous voulez remplacer, sous la forme `{"id": "<task id>", "content": "<row body>"}`. La chaîne `content` est rendue telle quelle, y compris les couleurs ANSI et les hyperliens OSC 8. Omettez le `id` d'une tâche pour conserver le rendu par défaut pour cette ligne ; émettez une chaîne `content` vide pour la masquer.

982 

983Les mêmes portes de confiance et `disableAllHooks` qui s'appliquent à `statusLine` s'appliquent ici. Les plugins peuvent expédier un `subagentStatusLine` par défaut dans leur [`settings.json`](/fr/plugins-reference#standard-plugin-layout).

984 

985## Conseils

986 

987* **Tester avec une entrée fictive** : `echo '{"model":{"display_name":"Opus"},"workspace":{"current_dir":"/home/user/project"},"context_window":{"used_percentage":25},"session_id":"test-session-abc"}' | ./statusline.sh`

988* **Garder la sortie courte** : la barre de statut a une largeur limitée, donc une sortie longue peut être tronquée ou s'enrouler maladroitement

989* **Mettre en cache les opérations lentes** : votre script s'exécute fréquemment pendant les sessions actives, donc les commandes comme `git status` peuvent causer des ralentissements. Voir l'[exemple de mise en cache](#cache-expensive-operations) pour savoir comment gérer cela.

990 

991Les projets communautaires comme [ccstatusline](https://github.com/sirmalloc/ccstatusline) et [starship-claude](https://github.com/martinemde/starship-claude) fournissent des configurations pré-construites avec des thèmes et des fonctionnalités supplémentaires.

992 

993## Dépannage

994 

995**La barre de statut n'apparaît pas**

996 

997* Vérifiez que votre script est exécutable : `chmod +x ~/.claude/statusline.sh`

998* Vérifiez que votre script affiche sur stdout, pas stderr

999* Exécutez votre script manuellement pour vérifier qu'il produit une sortie

1000* Si `disableAllHooks` est défini sur `true` dans vos paramètres, la barre de statut est également désactivée. Supprimez ce paramètre ou définissez-le sur `false` pour le réactiver.

1001* Exécutez `claude --debug` pour enregistrer le code de sortie et stderr de la première invocation de barre de statut dans une session

1002* Demandez à Claude de lire votre fichier de paramètres et d'exécuter la commande `statusLine` directement pour afficher les erreurs

1003 

1004**La barre de statut affiche `--` ou des valeurs vides**

1005 

1006* Les champs peuvent être `null` avant la fin de la première réponse API

1007* Gérez les valeurs null dans votre script avec des valeurs par défaut de secours telles que `// 0` dans jq

1008* Redémarrez Claude Code si les valeurs restent vides après plusieurs messages

1009 

1010**Le pourcentage de contexte affiche des valeurs inattendues**

1011 

1012* Utilisez `used_percentage` pour un état de contexte précis plutôt que les totaux cumulatifs

1013* Les `total_input_tokens` et `total_output_tokens` sont cumulatifs dans la session et peuvent dépasser la taille de la fenêtre de contexte

1014* Le pourcentage de contexte peut différer de la sortie `/context` en raison du moment où chacun est calculé

1015 

1016**Les liens OSC 8 ne sont pas cliquables**

1017 

1018* Vérifiez que votre terminal supporte les hyperliens OSC 8 (iTerm2, Kitty, WezTerm)

1019 

1020* Terminal.app ne supporte pas les liens cliquables

1021 

1022* Si le texte du lien apparaît mais n'est pas cliquable, Claude Code peut ne pas avoir détecté le support des hyperliens dans votre terminal. Cela affecte couramment Windows Terminal et d'autres émulateurs ne figurant pas dans la liste de détection automatique. Définissez la variable d'environnement `FORCE_HYPERLINK` pour remplacer la détection avant de lancer Claude Code :

1023 

1024 ```bash theme={null}

1025 FORCE_HYPERLINK=1 claude

1026 ```

1027 

1028 Dans PowerShell, définissez d'abord la variable dans la session actuelle :

1029 

1030 ```powershell theme={null}

1031 $env:FORCE_HYPERLINK = "1"; claude

1032 ```

1033 

1034* Les sessions SSH et tmux peuvent supprimer les séquences OSC selon la configuration

1035 

1036* Si les séquences d'échappement apparaissent comme du texte littéral comme `\e]8;;`, utilisez `printf '%b'` au lieu de `echo -e` pour une gestion plus fiable des échappements

1037 

1038**Problèmes d'affichage avec les séquences d'échappement**

1039 

1040* Les séquences d'échappement complexes (couleurs ANSI, liens OSC 8) peuvent occasionnellement causer une sortie brouillée si elles chevauchent d'autres mises à jour UI

1041* Si vous voyez du texte corrompu, essayez de simplifier votre script en sortie en texte brut

1042* Les barres de statut multi-lignes avec codes d'échappement sont plus sujettes aux problèmes de rendu que le texte brut sur une seule ligne

1043 

1044**Confiance de l'espace de travail requise**

1045 

1046* La commande de barre de statut s'exécute uniquement si vous avez accepté la boîte de dialogue de confiance de l'espace de travail pour le répertoire actuel. Parce que `statusLine` exécute une commande shell, elle nécessite la même acceptation de confiance que les hooks et autres paramètres exécutant des shells.

1047* Si la confiance n'est pas acceptée, vous verrez la notification `statusline skipped · restart to fix` au lieu de votre sortie de barre de statut. Redémarrez Claude Code et acceptez l'invite de confiance pour l'activer.

1048 

1049**Erreurs de script ou blocages**

1050 

1051* Les scripts qui se terminent avec des codes non nuls ou ne produisent aucune sortie font que la barre de statut devient vide

1052* Les scripts lents bloquent la barre de statut de se mettre à jour jusqu'à ce qu'ils se terminent. Gardez les scripts rapides pour éviter une sortie obsolète.

1053* Si une nouvelle mise à jour se déclenche pendant qu'un script lent s'exécute, le script en cours est annulé

1054* Testez votre script indépendamment avec une entrée fictive avant de le configurer

1055 

1056**Les notifications partagent la ligne de la barre de statut**

1057 

1058* Les notifications système comme les erreurs de serveur MCP et les mises à jour automatiques s'affichent sur le côté droit de la même ligne que votre barre de statut. Les notifications transitoires telles que l'avertissement de contexte faible circulent également dans cette zone.

1059* L'activation du mode verbeux ajoute un compteur de jetons à cette zone

1060* Sur les terminaux étroits, ces notifications peuvent tronquer votre sortie de barre de statut

sub-agents.md +1011 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Créer des sous-agents personnalisés

6 

7> Créez et utilisez des sous-agents IA spécialisés dans Claude Code pour des workflows spécifiques à des tâches et une meilleure gestion du contexte.

8 

9Les sous-agents sont des assistants IA spécialisés qui gèrent des types de tâches spécifiques. Utilisez-en un lorsqu'une tâche secondaire inonderait votre conversation principale avec des résultats de recherche, des journaux ou des contenus de fichiers que vous ne référencerez plus : le sous-agent effectue ce travail dans son propre contexte et retourne uniquement le résumé. Définissez un sous-agent personnalisé lorsque vous générez constamment le même type de travailleur avec les mêmes instructions.

10 

11Chaque sous-agent s'exécute dans sa propre fenêtre de contexte avec une invite système personnalisée, un accès à des outils spécifiques et des permissions indépendantes. Lorsque Claude rencontre une tâche qui correspond à la description d'un sous-agent, il délègue à ce sous-agent, qui fonctionne indépendamment et retourne les résultats. Pour voir les économies de contexte en pratique, la [visualisation de la fenêtre de contexte](/fr/context-window) vous guide à travers une session où un sous-agent gère la recherche dans sa propre fenêtre séparée.

12 

13<Note>

14 Si vous avez besoin de plusieurs agents travaillant en parallèle et communiquant entre eux, consultez plutôt [les équipes d'agents](/fr/agent-teams). Les sous-agents fonctionnent au sein d'une seule session ; les équipes d'agents coordonnent les sessions séparées.

15</Note>

16 

17Les sous-agents vous aident à :

18 

19* **Préserver le contexte** en gardant l'exploration et l'implémentation en dehors de votre conversation principale

20* **Appliquer des contraintes** en limitant les outils qu'un sous-agent peut utiliser

21* **Réutiliser les configurations** dans les projets avec des sous-agents au niveau utilisateur

22* **Spécialiser le comportement** avec des invites système ciblées pour des domaines spécifiques

23* **Contrôler les coûts** en acheminant les tâches vers des modèles plus rapides et moins chers comme Haiku

24 

25Claude utilise la description de chaque sous-agent pour décider quand déléguer les tâches. Lorsque vous créez un sous-agent, écrivez une description claire pour que Claude sache quand l'utiliser.

26 

27Claude Code inclut plusieurs sous-agents intégrés comme **Explore**, **Plan** et **general-purpose**. Vous pouvez également créer des sous-agents personnalisés pour gérer des tâches spécifiques. Cette page couvre :

28 

29* [Sous-agents intégrés](#built-in-subagents)

30* [Comment créer les vôtres](#quickstart-create-your-first-subagent)

31* [Options de configuration complètes](#configure-subagents)

32* [Modèles de travail avec les sous-agents](#work-with-subagents)

33* [Sous-agents dupliqués](#fork-the-current-conversation)

34* [Exemples de sous-agents](#example-subagents)

35 

36## Sous-agents intégrés

37 

38Claude Code inclut des sous-agents intégrés que Claude utilise automatiquement le cas échéant. Chacun hérite des permissions de la conversation parent avec des restrictions d'outils supplémentaires.

39 

40<Tabs>

41 <Tab title="Explore">

42 Un agent rapide et en lecture seule optimisé pour la recherche et l'analyse de bases de code.

43 

44 * **Modèle** : Haiku (rapide, faible latence)

45 * **Outils** : Outils en lecture seule (accès refusé aux outils Write et Edit)

46 * **Objectif** : Découverte de fichiers, recherche de code, exploration de base de code

47 

48 Claude délègue à Explore lorsqu'il doit rechercher ou comprendre une base de code sans apporter de modifications. Cela garde les résultats d'exploration en dehors du contexte de votre conversation principale.

49 

50 Lors de l'invocation d'Explore, Claude spécifie un niveau de minutie : **quick** pour les recherches ciblées, **medium** pour l'exploration équilibrée, ou **very thorough** pour l'analyse complète.

51 </Tab>

52 

53 <Tab title="Plan">

54 Un agent de recherche utilisé pendant le [mode plan](/fr/common-workflows#use-plan-mode-for-safe-code-analysis) pour rassembler le contexte avant de présenter un plan.

55 

56 * **Modèle** : Hérité de la conversation principale

57 * **Outils** : Outils en lecture seule (accès refusé aux outils Write et Edit)

58 * **Objectif** : Recherche de base de code pour la planification

59 

60 Lorsque vous êtes en mode plan et que Claude doit comprendre votre base de code, il délègue la recherche au sous-agent Plan. Cela empêche l'imbrication infinie (les sous-agents ne peuvent pas générer d'autres sous-agents) tout en rassemblant le contexte nécessaire.

61 </Tab>

62 

63 <Tab title="General-purpose">

64 Un agent capable pour les tâches complexes et multi-étapes qui nécessitent à la fois l'exploration et l'action.

65 

66 * **Modèle** : Hérité de la conversation principale

67 * **Outils** : Tous les outils

68 * **Objectif** : Recherche complexe, opérations multi-étapes, modifications de code

69 

70 Claude délègue à general-purpose lorsque la tâche nécessite à la fois l'exploration et la modification, un raisonnement complexe pour interpréter les résultats, ou plusieurs étapes dépendantes.

71 </Tab>

72 

73 <Tab title="Other">

74 Claude Code inclut des agents d'assistance supplémentaires pour des tâches spécifiques. Ceux-ci sont généralement invoqués automatiquement, vous n'avez donc pas besoin de les utiliser directement.

75 

76 | Agent | Modèle | Quand Claude l'utilise |

77 | :---------------- | :----- | :---------------------------------------------------------------------- |

78 | statusline-setup | Sonnet | Lorsque vous exécutez `/statusline` pour configurer votre ligne d'état |

79 | Claude Code Guide | Haiku | Lorsque vous posez des questions sur les fonctionnalités de Claude Code |

80 </Tab>

81</Tabs>

82 

83Au-delà de ces sous-agents intégrés, vous pouvez créer les vôtres avec des invites personnalisées, des restrictions d'outils, des modes de permission, des hooks et des skills. Les sections suivantes montrent comment commencer et personnaliser les sous-agents.

84 

85## Démarrage rapide : créer votre premier sous-agent

86 

87Les sous-agents sont définis dans des fichiers Markdown avec du frontmatter YAML. Vous pouvez les [créer manuellement](#write-subagent-files) ou utiliser la commande `/agents`.

88 

89Cette procédure pas à pas vous guide dans la création d'un sous-agent au niveau utilisateur avec la commande `/agents`. Le sous-agent examine le code et suggère des améliorations pour la base de code.

90 

91<Steps>

92 <Step title="Ouvrir l'interface des sous-agents">

93 Dans Claude Code, exécutez :

94 

95 ```text theme={null}

96 /agents

97 ```

98 </Step>

99 

100 <Step title="Choisir un emplacement">

101 Basculez vers l'onglet **Library**, sélectionnez **Create new agent**, puis choisissez **Personal**. Cela enregistre le sous-agent dans `~/.claude/agents/` pour qu'il soit disponible dans tous vos projets.

102 </Step>

103 

104 <Step title="Générer avec Claude">

105 Sélectionnez **Generate with Claude**. Lorsque vous y êtes invité, décrivez le sous-agent :

106 

107 ```text theme={null}

108 A code improvement agent that scans files and suggests improvements

109 for readability, performance, and best practices. It should explain

110 each issue, show the current code, and provide an improved version.

111 ```

112 

113 Claude génère l'identifiant, la description et l'invite système pour vous.

114 </Step>

115 

116 <Step title="Sélectionner les outils">

117 Pour un examinateur en lecture seule, désélectionnez tout sauf **Read-only tools**. Si vous gardez tous les outils sélectionnés, le sous-agent hérite de tous les outils disponibles pour la conversation principale.

118 </Step>

119 

120 <Step title="Sélectionner le modèle">

121 Choisissez le modèle que le sous-agent utilise. Pour cet exemple d'agent, sélectionnez **Sonnet**, qui équilibre la capacité et la vitesse pour analyser les modèles de code.

122 </Step>

123 

124 <Step title="Choisir une couleur">

125 Choisissez une couleur de fond pour le sous-agent. Cela vous aide à identifier quel sous-agent s'exécute dans l'interface utilisateur.

126 </Step>

127 

128 <Step title="Configurer la mémoire">

129 Sélectionnez **User scope** pour donner au sous-agent un [répertoire de mémoire persistante](#enable-persistent-memory) à `~/.claude/agent-memory/`. Le sous-agent utilise ceci pour accumuler des insights dans les conversations, comme les modèles de base de code et les problèmes récurrents. Sélectionnez **None** si vous ne souhaitez pas que le sous-agent persiste les apprentissages.

130 </Step>

131 

132 <Step title="Enregistrer et essayer">

133 Examinez le résumé de la configuration. Appuyez sur `s` ou `Entrée` pour enregistrer, ou appuyez sur `e` pour enregistrer et modifier le fichier dans votre éditeur. Le sous-agent est disponible immédiatement. Essayez-le :

134 

135 ```text theme={null}

136 Use the code-improver agent to suggest improvements in this project

137 ```

138 

139 Claude délègue à votre nouveau sous-agent, qui analyse la base de code et retourne les suggestions d'amélioration.

140 </Step>

141</Steps>

142 

143Vous avez maintenant un sous-agent que vous pouvez utiliser dans n'importe quel projet sur votre machine pour analyser les bases de code et suggérer des améliorations.

144 

145Vous pouvez également créer des sous-agents manuellement en tant que fichiers Markdown, les définir via des drapeaux CLI ou les distribuer via des plugins. Les sections suivantes couvrent toutes les options de configuration.

146 

147## Configurer les sous-agents

148 

149### Utiliser la commande /agents

150 

151La commande `/agents` ouvre une interface à onglets pour gérer les sous-agents. L'onglet **Running** affiche les sous-agents en direct et vous permet de les ouvrir ou de les arrêter. L'onglet **Library** vous permet de :

152 

153* Afficher tous les sous-agents disponibles (intégrés, utilisateur, projet et plugin)

154* Créer de nouveaux sous-agents avec une configuration guidée ou une génération Claude

155* Modifier la configuration des sous-agents existants et l'accès aux outils

156* Supprimer les sous-agents personnalisés

157* Voir quels sous-agents sont actifs en cas de doublons

158 

159C'est la méthode recommandée pour créer et gérer les sous-agents. Pour la création manuelle ou l'automatisation, vous pouvez également ajouter des fichiers de sous-agent directement.

160 

161Pour lister tous les sous-agents configurés à partir de la ligne de commande sans démarrer une session interactive, exécutez `claude agents`. Cela affiche les agents groupés par source et indique lesquels sont remplacés par des définitions de priorité plus élevée.

162 

163### Choisir la portée du sous-agent

164 

165Les sous-agents sont des fichiers Markdown avec du frontmatter YAML. Stockez-les dans différents emplacements selon la portée. Lorsque plusieurs sous-agents partagent le même nom, l'emplacement de priorité plus élevée gagne.

166 

167| Emplacement | Portée | Priorité | Comment créer |

168| :----------------------------- | :---------------------------- | :----------------- | :------------------------------------------- |

169| Paramètres gérés | À l'échelle de l'organisation | 1 (la plus élevée) | Déployé via [paramètres gérés](/fr/settings) |

170| Drapeau CLI `--agents` | Session actuelle | 2 | Passer JSON lors du lancement de Claude Code |

171| `.claude/agents/` | Projet actuel | 3 | Interactif ou manuel |

172| `~/.claude/agents/` | Tous vos projets | 4 | Interactif ou manuel |

173| Répertoire `agents/` du plugin | Où le plugin est activé | 5 (la plus basse) | Installé avec les [plugins](/fr/plugins) |

174 

175**Les sous-agents de projet** (`.claude/agents/`) sont idéaux pour les sous-agents spécifiques à une base de code. Enregistrez-les dans le contrôle de version pour que votre équipe puisse les utiliser et les améliorer de manière collaborative.

176 

177Les sous-agents de projet sont découverts en remontant à partir du répertoire de travail actuel. Les répertoires ajoutés avec `--add-dir` [accordent uniquement l'accès aux fichiers](/fr/permissions#additional-directories-grant-file-access-not-configuration) et ne sont pas analysés pour les sous-agents. Pour partager les sous-agents entre les projets, utilisez `~/.claude/agents/` ou un [plugin](/fr/plugins).

178 

179**Les sous-agents utilisateur** (`~/.claude/agents/`) sont des sous-agents personnels disponibles dans tous vos projets.

180 

181**Les sous-agents définis par CLI** sont passés en JSON lors du lancement de Claude Code. Ils n'existent que pour cette session et ne sont pas enregistrés sur le disque, ce qui les rend utiles pour les tests rapides ou les scripts d'automatisation. Vous pouvez définir plusieurs sous-agents dans un seul appel `--agents` :

182 

183```bash theme={null}

184claude --agents '{

185 "code-reviewer": {

186 "description": "Expert code reviewer. Use proactively after code changes.",

187 "prompt": "You are a senior code reviewer. Focus on code quality, security, and best practices.",

188 "tools": ["Read", "Grep", "Glob", "Bash"],

189 "model": "sonnet"

190 },

191 "debugger": {

192 "description": "Debugging specialist for errors and test failures.",

193 "prompt": "You are an expert debugger. Analyze errors, identify root causes, and provide fixes."

194 }

195}'

196```

197 

198Le drapeau `--agents` accepte JSON avec les mêmes champs de [frontmatter](#supported-frontmatter-fields) que les sous-agents basés sur fichier : `description`, `prompt`, `tools`, `disallowedTools`, `model`, `permissionMode`, `mcpServers`, `hooks`, `maxTurns`, `skills`, `initialPrompt`, `memory`, `effort`, `background`, `isolation` et `color`. Utilisez `prompt` pour l'invite système, équivalent au corps markdown dans les sous-agents basés sur fichier.

199 

200**Les sous-agents gérés** sont déployés par les administrateurs de l'organisation. Placez les fichiers markdown dans `.claude/agents/` à l'intérieur du [répertoire des paramètres gérés](/fr/settings#settings-files), en utilisant le même format de frontmatter que les sous-agents de projet et utilisateur. Les définitions gérées prennent précédence sur les sous-agents de projet et utilisateur portant le même nom.

201 

202**Les sous-agents de plugin** proviennent des [plugins](/fr/plugins) que vous avez installés. Ils apparaissent dans `/agents` aux côtés de vos sous-agents personnalisés. Consultez la [référence des composants de plugin](/fr/plugins-reference#agents) pour plus de détails sur la création de sous-agents de plugin.

203 

204<Note>

205 Pour des raisons de sécurité, les sous-agents de plugin ne prennent pas en charge les champs frontmatter `hooks`, `mcpServers` ou `permissionMode`. Ces champs sont ignorés lors du chargement des agents à partir d'un plugin. Si vous en avez besoin, copiez le fichier d'agent dans `.claude/agents/` ou `~/.claude/agents/`. Vous pouvez également ajouter des règles à [`permissions.allow`](/fr/settings#permission-settings) dans `settings.json` ou `settings.local.json`, mais ces règles s'appliquent à l'ensemble de la session, pas seulement au sous-agent du plugin.

206</Note>

207 

208Les définitions de sous-agent de l'une de ces portées sont également disponibles pour les [équipes d'agents](/fr/agent-teams#use-subagent-definitions-for-teammates) : lors du lancement d'un coéquipier, vous pouvez référencer un type de sous-agent et le coéquipier utilise ses `tools` et son `model`, avec le corps de la définition ajouté à l'invite système du coéquipier comme instructions supplémentaires. Consultez [équipes d'agents](/fr/agent-teams#use-subagent-definitions-for-teammates) pour voir quels champs de frontmatter s'appliquent sur ce chemin.

209 

210### Écrire des fichiers de sous-agent

211 

212Les fichiers de sous-agent utilisent du frontmatter YAML pour la configuration, suivi de l'invite système en Markdown :

213 

214<Note>

215 Les sous-agents sont chargés au démarrage de la session. Si vous créez un sous-agent en ajoutant manuellement un fichier, redémarrez votre session ou utilisez `/agents` pour le charger immédiatement.

216</Note>

217 

218```markdown theme={null}

219---

220name: code-reviewer

221description: Reviews code for quality and best practices

222tools: Read, Glob, Grep

223model: sonnet

224---

225 

226You are a code reviewer. When invoked, analyze the code and provide

227specific, actionable feedback on quality, security, and best practices.

228```

229 

230Le frontmatter définit les métadonnées et la configuration du sous-agent. Le corps devient l'invite système qui guide le comportement du sous-agent. Les sous-agents reçoivent uniquement cette invite système (plus les détails d'environnement de base comme le répertoire de travail), pas l'invite système complète de Claude Code.

231 

232Un sous-agent démarre dans le répertoire de travail actuel de la conversation principale. Au sein d'un sous-agent, les commandes `cd` ne persistent pas entre les appels d'outils Bash ou PowerShell et n'affectent pas le répertoire de travail de la conversation principale. Pour donner au sous-agent une copie isolée du référentiel à la place, définissez [`isolation: worktree`](#supported-frontmatter-fields).

233 

234#### Champs de frontmatter pris en charge

235 

236Les champs suivants peuvent être utilisés dans le frontmatter YAML. Seuls `name` et `description` sont obligatoires.

237 

238| Champ | Obligatoire | Description |

239| :---------------- | :---------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

240| `name` | Oui | Identifiant unique utilisant des lettres minuscules et des tirets |

241| `description` | Oui | Quand Claude doit déléguer à ce sous-agent |

242| `tools` | Non | [Outils](#available-tools) que le sous-agent peut utiliser. Hérite de tous les outils s'il est omis |

243| `disallowedTools` | Non | Outils à refuser, supprimés de la liste héritée ou spécifiée |

244| `model` | Non | [Modèle](#choose-a-model) à utiliser : `sonnet`, `opus`, `haiku`, un ID de modèle complet (par exemple, `claude-opus-4-7`), ou `inherit`. Par défaut `inherit` |

245| `permissionMode` | Non | [Mode de permission](#permission-modes) : `default`, `acceptEdits`, `auto`, `dontAsk`, `bypassPermissions` ou `plan`. Ignoré pour les [sous-agents de plugin](#choose-the-subagent-scope) |

246| `maxTurns` | Non | Nombre maximum de tours d'agent avant que le sous-agent s'arrête |

247| `skills` | Non | [Skills](/fr/skills) à charger dans le contexte du sous-agent au démarrage. Le contenu complet de la skill est injecté, pas seulement mis à disposition pour l'invocation. Les sous-agents n'héritent pas des skills de la conversation parent |

248| `mcpServers` | Non | [Serveurs MCP](/fr/mcp) disponibles pour ce sous-agent. Chaque entrée est soit un nom de serveur référençant un serveur déjà configuré (par exemple, `"slack"`) soit une définition en ligne avec le nom du serveur comme clé et une [configuration de serveur MCP](/fr/mcp#installing-mcp-servers) complète comme valeur. Ignoré pour les [sous-agents de plugin](#choose-the-subagent-scope) |

249| `hooks` | Non | [Hooks de cycle de vie](#define-hooks-for-subagents) limités à ce sous-agent. Ignoré pour les [sous-agents de plugin](#choose-the-subagent-scope) |

250| `memory` | Non | [Portée de la mémoire persistante](#enable-persistent-memory) : `user`, `project` ou `local`. Active l'apprentissage entre sessions |

251| `background` | Non | Définir sur `true` pour toujours exécuter ce sous-agent en tant que [tâche d'arrière-plan](#run-subagents-in-foreground-or-background). Par défaut : `false` |

252| `effort` | Non | Niveau d'effort lorsque ce sous-agent est actif. Remplace le niveau d'effort de la session. Par défaut : hérite de la session. Options : `low`, `medium`, `high`, `xhigh`, `max` ; les niveaux disponibles dépendent du modèle |

253| `isolation` | Non | Définir sur `worktree` pour exécuter le sous-agent dans un [git worktree](/fr/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees) temporaire, ce qui lui donne une copie isolée du référentiel. Le worktree est automatiquement nettoyé si le sous-agent n'apporte aucune modification |

254| `color` | Non | Couleur d'affichage pour le sous-agent dans la liste des tâches et la transcription. Accepte `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink` ou `cyan` |

255| `initialPrompt` | Non | Auto-soumis comme le premier tour utilisateur lorsque cet agent s'exécute en tant qu'agent de session principal (via `--agent` ou le paramètre `agent`). Les [commandes](/fr/commands) et les [skills](/fr/skills) sont traitées. Préfixé à tout invite fourni par l'utilisateur |

256 

257### Choisir un modèle

258 

259Le champ `model` contrôle quel [modèle IA](/fr/model-config) le sous-agent utilise :

260 

261* **Alias de modèle** : Utilisez l'un des alias disponibles : `sonnet`, `opus` ou `haiku`

262* **ID de modèle complet** : Utilisez un ID de modèle complet tel que `claude-opus-4-7` ou `claude-sonnet-4-6`. Accepte les mêmes valeurs que le drapeau `--model`

263* **inherit** : Utilisez le même modèle que la conversation principale

264* **Omis** : S'il n'est pas spécifié, par défaut `inherit` (utilise le même modèle que la conversation principale)

265 

266Lorsque Claude invoque un sous-agent, il peut également passer un paramètre `model` pour cette invocation spécifique. Claude Code résout le modèle du sous-agent dans cet ordre :

267 

2681. La variable d'environnement [`CLAUDE_CODE_SUBAGENT_MODEL`](/fr/model-config#environment-variables), si elle est définie

2692. Le paramètre `model` par invocation

2703. Le frontmatter `model` de la définition du sous-agent

2714. Le modèle de la conversation principale

272 

273### Contrôler les capacités des sous-agents

274 

275Vous pouvez contrôler ce que les sous-agents peuvent faire via l'accès aux outils, les modes de permission et les règles conditionnelles.

276 

277#### Outils disponibles

278 

279Les sous-agents peuvent utiliser n'importe lequel des [outils internes](/fr/tools-reference) de Claude Code. Par défaut, les sous-agents héritent de tous les outils de la conversation principale, y compris les outils MCP.

280 

281Pour restreindre les outils, utilisez soit le champ `tools` (liste blanche) soit le champ `disallowedTools` (liste noire). Cet exemple utilise `tools` pour autoriser exclusivement Read, Grep, Glob et Bash. Le sous-agent ne peut pas modifier les fichiers, écrire des fichiers ou utiliser des outils MCP :

282 

283```yaml theme={null}

284---

285name: safe-researcher

286description: Research agent with restricted capabilities

287tools: Read, Grep, Glob, Bash

288---

289```

290 

291Cet exemple utilise `disallowedTools` pour hériter de tous les outils de la conversation principale sauf Write et Edit. Le sous-agent conserve Bash, les outils MCP et tout le reste :

292 

293```yaml theme={null}

294---

295name: no-writes

296description: Inherits every tool except file writes

297disallowedTools: Write, Edit

298---

299```

300 

301Si les deux sont définis, `disallowedTools` est appliqué en premier, puis `tools` est résolu par rapport au pool restant. Un outil listé dans les deux est supprimé.

302 

303#### Restreindre les sous-agents qui peuvent être générés

304 

305Lorsqu'un agent s'exécute en tant que thread principal avec `claude --agent`, il peut générer des sous-agents à l'aide de l'outil Agent. Pour restreindre les types de sous-agents qu'il peut générer, utilisez la syntaxe `Agent(agent_type)` dans le champ `tools`.

306 

307<Note>Dans la version 2.1.63, l'outil Task a été renommé en Agent. Les références `Task(...)` existantes dans les paramètres et les définitions d'agent fonctionnent toujours comme des alias.</Note>

308 

309```yaml theme={null}

310---

311name: coordinator

312description: Coordinates work across specialized agents

313tools: Agent(worker, researcher), Read, Bash

314---

315```

316 

317C'est une liste blanche : seuls les sous-agents `worker` et `researcher` peuvent être générés. Si l'agent essaie de générer un autre type, la demande échoue et l'agent ne voit que les types autorisés dans son invite. Pour bloquer des agents spécifiques tout en autorisant tous les autres, utilisez plutôt [`permissions.deny`](#disable-specific-subagents).

318 

319Pour autoriser la génération de n'importe quel sous-agent sans restrictions, utilisez `Agent` sans parenthèses :

320 

321```yaml theme={null}

322tools: Agent, Read, Bash

323```

324 

325Si `Agent` est complètement omis de la liste `tools`, l'agent ne peut générer aucun sous-agent. Cette restriction s'applique uniquement aux agents s'exécutant en tant que thread principal avec `claude --agent`. Les sous-agents ne peuvent pas générer d'autres sous-agents, donc `Agent(agent_type)` n'a aucun effet dans les définitions de sous-agent.

326 

327#### Limiter les serveurs MCP à un sous-agent

328 

329Utilisez le champ `mcpServers` pour donner à un sous-agent l'accès aux serveurs [MCP](/fr/mcp) qui ne sont pas disponibles dans la conversation principale. Les serveurs en ligne définis ici sont connectés au démarrage du sous-agent et déconnectés à la fin. Les références de chaîne partagent la connexion de la session parent.

330 

331<Note>

332 Le champ `mcpServers` s'applique dans les deux contextes où un fichier d'agent peut s'exécuter :

333 

334 * En tant que sous-agent, généré via l'outil Agent ou une @-mention

335 * En tant que session principale, lancée avec [`--agent`](#invoke-subagents-explicitly) ou le paramètre `agent`

336 

337 Lorsque l'agent est la session principale, les définitions de serveur en ligne se connectent au démarrage aux côtés des serveurs de [`.mcp.json`](/fr/mcp) et des fichiers de paramètres.

338</Note>

339 

340Chaque entrée de la liste est soit une définition de serveur en ligne, soit une chaîne référençant un serveur MCP déjà configuré dans votre session :

341 

342```yaml theme={null}

343---

344name: browser-tester

345description: Tests features in a real browser using Playwright

346mcpServers:

347 # Inline definition: scoped to this subagent only

348 - playwright:

349 type: stdio

350 command: npx

351 args: ["-y", "@playwright/mcp@latest"]

352 # Reference by name: reuses an already-configured server

353 - github

354---

355 

356Use the Playwright tools to navigate, screenshot, and interact with pages.

357```

358 

359Les définitions en ligne utilisent le même schéma que les entrées de serveur `.mcp.json` (`stdio`, `http`, `sse`, `ws`), indexées par le nom du serveur.

360 

361Pour garder un serveur MCP en dehors de la conversation principale et éviter que ses descriptions d'outils ne consomment du contexte, définissez-le en ligne ici plutôt que dans `.mcp.json`. Le sous-agent obtient les outils ; la conversation parent ne les obtient pas.

362 

363#### Modes de permission

364 

365Le champ `permissionMode` contrôle comment le sous-agent gère les invites de permission. Les sous-agents héritent du contexte de permission de la conversation principale et peuvent remplacer le mode, sauf lorsque le mode parent prend précédence comme décrit ci-dessous.

366 

367| Mode | Comportement |

368| :------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------- |

369| `default` | Vérification de permission standard avec invites |

370| `acceptEdits` | Auto-accepter les modifications de fichiers et les commandes courantes du système de fichiers pour les chemins du répertoire de travail ou `additionalDirectories` |

371| `auto` | [Mode auto](/fr/permission-modes#eliminate-prompts-with-auto-mode) : un classificateur IA évalue chaque appel d'outil |

372| `dontAsk` | Auto-refuser les invites de permission (les outils explicitement autorisés fonctionnent toujours) |

373| `bypassPermissions` | Ignorer les invites de permission |

374| `plan` | Mode plan (exploration en lecture seule) |

375 

376<Warning>

377 Utilisez `bypassPermissions` avec prudence. Il ignore les invites de permission, permettant au sous-agent d'exécuter des opérations sans approbation, y compris les écritures dans `.git`, `.claude`, `.vscode`, `.idea` et `.husky`. Les suppressions du répertoire racine et du répertoire personnel comme `rm -rf /` demandent toujours une confirmation en tant que disjoncteur. Consultez [modes de permission](/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) pour plus de détails.

378</Warning>

379 

380Si le parent utilise `bypassPermissions` ou `acceptEdits`, cela prend précédence et ne peut pas être remplacé. Si le parent utilise le [mode auto](/fr/permission-modes#eliminate-prompts-with-auto-mode), le sous-agent hérite du mode auto et tout `permissionMode` dans son frontmatter est ignoré : le classificateur évalue les appels d'outils du sous-agent avec les mêmes règles de blocage et d'autorisation que la session parent.

381 

382#### Précharger les skills dans les sous-agents

383 

384Utilisez le champ `skills` pour injecter le contenu de la skill dans le contexte du sous-agent au démarrage. Cela donne au sous-agent des connaissances de domaine sans qu'il ait besoin de découvrir et charger les skills pendant l'exécution.

385 

386```yaml theme={null}

387---

388name: api-developer

389description: Implement API endpoints following team conventions

390skills:

391 - api-conventions

392 - error-handling-patterns

393---

394 

395Implement API endpoints. Follow the conventions and patterns from the preloaded skills.

396```

397 

398Le contenu complet de chaque skill est injecté dans le contexte du sous-agent, pas seulement mis à disposition pour l'invocation. Les sous-agents n'héritent pas des skills de la conversation parent ; vous devez les lister explicitement.

399 

400Vous ne pouvez pas précharger les skills qui définissent [`disable-model-invocation: true`](/fr/skills#control-who-invokes-a-skill), car le préchargement provient du même ensemble de skills que Claude peut invoquer. Si une skill listée est manquante ou désactivée, Claude Code la saute et enregistre un avertissement dans le journal de débogage.

401 

402<Note>

403 C'est l'inverse de [l'exécution d'une skill dans un sous-agent](/fr/skills#run-skills-in-a-subagent). Avec `skills` dans un sous-agent, le sous-agent contrôle l'invite système et charge le contenu de la skill. Avec `context: fork` dans une skill, le contenu de la skill est injecté dans l'agent que vous spécifiez. Les deux utilisent le même système sous-jacent.

404</Note>

405 

406#### Activer la mémoire persistante

407 

408Le champ `memory` donne au sous-agent un répertoire persistant qui survit aux conversations. Le sous-agent utilise ce répertoire pour accumuler des connaissances au fil du temps, comme les modèles de base de code, les insights de débogage et les décisions architecturales.

409 

410```yaml theme={null}

411---

412name: code-reviewer

413description: Reviews code for quality and best practices

414memory: user

415---

416 

417You are a code reviewer. As you review code, update your agent memory with

418patterns, conventions, and recurring issues you discover.

419```

420 

421Choisissez une portée en fonction de la largeur d'application de la mémoire :

422 

423| Portée | Emplacement | Utiliser quand |

424| :-------- | :-------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------- |

425| `user` | `~/.claude/agent-memory/<name-of-agent>/` | le sous-agent doit se souvenir des apprentissages dans tous les projets |

426| `project` | `.claude/agent-memory/<name-of-agent>/` | les connaissances du sous-agent sont spécifiques au projet et partageables via le contrôle de version |

427| `local` | `.claude/agent-memory-local/<name-of-agent>/` | les connaissances du sous-agent sont spécifiques au projet mais ne doivent pas être enregistrées dans le contrôle de version |

428 

429Lorsque la mémoire est activée :

430 

431* L'invite système du sous-agent inclut des instructions pour lire et écrire dans le répertoire de mémoire.

432* L'invite système du sous-agent inclut également les 200 premières lignes ou 25 KB de `MEMORY.md` dans le répertoire de mémoire, selon ce qui est le moins important, avec des instructions pour organiser `MEMORY.md` s'il dépasse cette limite.

433* Les outils Read, Write et Edit sont automatiquement activés pour que le sous-agent puisse gérer ses fichiers de mémoire.

434 

435##### Conseils de mémoire persistante

436 

437* `project` est la portée par défaut recommandée. Elle rend les connaissances du sous-agent partageables via le contrôle de version. Utilisez `user` lorsque les connaissances du sous-agent sont largement applicables dans les projets, ou `local` lorsque les connaissances ne doivent pas être enregistrées dans le contrôle de version.

438* Demandez au sous-agent de consulter sa mémoire avant de commencer le travail : « Examinez cette PR et consultez votre mémoire pour les modèles que vous avez vus auparavant. »

439* Demandez au sous-agent de mettre à jour sa mémoire après avoir terminé une tâche : « Maintenant que vous avez terminé, enregistrez ce que vous avez appris dans votre mémoire. » Au fil du temps, cela crée une base de connaissances qui rend le sous-agent plus efficace.

440* Incluez les instructions de mémoire directement dans le fichier markdown du sous-agent pour qu'il maintienne proactivement sa propre base de connaissances :

441 

442 ```markdown theme={null}

443 Update your agent memory as you discover codepaths, patterns, library

444 locations, and key architectural decisions. This builds up institutional

445 knowledge across conversations. Write concise notes about what you found

446 and where.

447 ```

448 

449#### Règles conditionnelles avec hooks

450 

451Pour un contrôle plus dynamique de l'utilisation des outils, utilisez les hooks `PreToolUse` pour valider les opérations avant leur exécution. C'est utile lorsque vous devez autoriser certaines opérations d'un outil tout en en bloquer d'autres.

452 

453Cet exemple crée un sous-agent qui n'autorise que les requêtes de base de données en lecture seule. Le hook `PreToolUse` exécute le script spécifié dans `command` avant chaque commande Bash :

454 

455```yaml theme={null}

456---

457name: db-reader

458description: Execute read-only database queries

459tools: Bash

460hooks:

461 PreToolUse:

462 - matcher: "Bash"

463 hooks:

464 - type: command

465 command: "./scripts/validate-readonly-query.sh"

466---

467```

468 

469Claude Code [passe l'entrée du hook en JSON](/fr/hooks#pretooluse-input) via stdin aux commandes du hook. Le script de validation lit ce JSON, extrait la commande Bash et [quitte avec le code 2](/fr/hooks#exit-code-2-behavior-per-event) pour bloquer les opérations d'écriture :

470 

471```bash theme={null}

472#!/bin/bash

473# ./scripts/validate-readonly-query.sh

474 

475INPUT=$(cat)

476COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty')

477 

478# Block SQL write operations (case-insensitive)

479if echo "$COMMAND" | grep -iE '\b(INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|TRUNCATE)\b' > /dev/null; then

480 echo "Blocked: Only SELECT queries are allowed" >&2

481 exit 2

482fi

483 

484exit 0

485```

486 

487Consultez [Hook input](/fr/hooks#pretooluse-input) pour le schéma d'entrée complet et [exit codes](/fr/hooks#exit-code-output) pour savoir comment les codes de sortie affectent le comportement.

488 

489#### Désactiver des sous-agents spécifiques

490 

491Vous pouvez empêcher Claude d'utiliser des sous-agents spécifiques en les ajoutant au tableau `deny` dans vos [paramètres](/fr/settings#permission-settings). Utilisez le format `Agent(subagent-name)` où `subagent-name` correspond au champ name du sous-agent.

492 

493```json theme={null}

494{

495 "permissions": {

496 "deny": ["Agent(Explore)", "Agent(my-custom-agent)"]

497 }

498}

499```

500 

501Cela fonctionne pour les sous-agents intégrés et personnalisés. Vous pouvez également utiliser le drapeau CLI `--disallowedTools` :

502 

503```bash theme={null}

504claude --disallowedTools "Agent(Explore)"

505```

506 

507Consultez la [documentation Permissions](/fr/permissions#tool-specific-permission-rules) pour plus de détails sur les règles de permission.

508 

509### Définir les hooks pour les sous-agents

510 

511Les sous-agents peuvent définir des [hooks](/fr/hooks) qui s'exécutent pendant le cycle de vie du sous-agent. Il y a deux façons de configurer les hooks :

512 

5131. **Dans le frontmatter du sous-agent** : Définir les hooks qui s'exécutent uniquement pendant que ce sous-agent spécifique est actif

5142. **Dans `settings.json`** : Définir les hooks qui s'exécutent dans la session principale lorsque les sous-agents démarrent ou s'arrêtent

515 

516#### Hooks dans le frontmatter du sous-agent

517 

518Définissez les hooks directement dans le fichier markdown du sous-agent. Ces hooks s'exécutent uniquement pendant que ce sous-agent spécifique est actif et sont nettoyés à la fin.

519 

520<Note>

521 Les hooks de frontmatter se déclenchent lorsque l'agent est généré en tant que sous-agent via l'outil Agent ou une @-mention, et lorsque l'agent s'exécute en tant que principal de session via [`--agent`](#invoke-subagents-explicitly) ou le paramètre `agent`. Dans le cas de la session principale, ils s'exécutent aux côtés de tous les hooks définis dans [`settings.json`](/fr/hooks).

522</Note>

523 

524Tous les [événements de hook](/fr/hooks#hook-events) sont pris en charge. Les événements les plus courants pour les sous-agents sont :

525 

526| Événement | Entrée du matcher | Quand il se déclenche |

527| :------------ | :---------------- | :------------------------------------------------------------------------ |

528| `PreToolUse` | Nom de l'outil | Avant que le sous-agent utilise un outil |

529| `PostToolUse` | Nom de l'outil | Après que le sous-agent utilise un outil |

530| `Stop` | (aucun) | Quand le sous-agent se termine (converti en `SubagentStop` à l'exécution) |

531 

532Cet exemple valide les commandes Bash avec le hook `PreToolUse` et exécute un linter après les modifications de fichiers avec `PostToolUse` :

533 

534```yaml theme={null}

535---

536name: code-reviewer

537description: Review code changes with automatic linting

538hooks:

539 PreToolUse:

540 - matcher: "Bash"

541 hooks:

542 - type: command

543 command: "./scripts/validate-command.sh $TOOL_INPUT"

544 PostToolUse:

545 - matcher: "Edit|Write"

546 hooks:

547 - type: command

548 command: "./scripts/run-linter.sh"

549---

550```

551 

552Lorsque l'agent est invoqué en tant que sous-agent, les hooks `Stop` dans le frontmatter sont automatiquement convertis en événements `SubagentStop`.

553 

554#### Hooks au niveau du projet pour les événements de sous-agent

555 

556Configurez les hooks dans `settings.json` qui répondent aux événements du cycle de vie du sous-agent dans la session principale.

557 

558| Événement | Entrée du matcher | Quand il se déclenche |

559| :-------------- | :------------------ | :--------------------------------------- |

560| `SubagentStart` | Nom du type d'agent | Quand un sous-agent commence l'exécution |

561| `SubagentStop` | Nom du type d'agent | Quand un sous-agent se termine |

562 

563Les deux événements prennent en charge les matchers pour cibler des types d'agents spécifiques par nom. Cet exemple exécute un script de configuration uniquement lorsque le sous-agent `db-agent` démarre, et un script de nettoyage lorsque n'importe quel sous-agent s'arrête :

564 

565```json theme={null}

566{

567 "hooks": {

568 "SubagentStart": [

569 {

570 "matcher": "db-agent",

571 "hooks": [

572 { "type": "command", "command": "./scripts/setup-db-connection.sh" }

573 ]

574 }

575 ],

576 "SubagentStop": [

577 {

578 "hooks": [

579 { "type": "command", "command": "./scripts/cleanup-db-connection.sh" }

580 ]

581 }

582 ]

583 }

584}

585```

586 

587Consultez [Hooks](/fr/hooks) pour le format de configuration complet des hooks.

588 

589## Travailler avec les sous-agents

590 

591### Comprendre la délégation automatique

592 

593Claude délègue automatiquement les tâches en fonction de la description de la tâche dans votre demande, du champ `description` dans les configurations de sous-agent et du contexte actuel. Pour encourager la délégation proactive, incluez des phrases comme « use proactively » dans le champ description de votre sous-agent.

594 

595### Invoquer les sous-agents explicitement

596 

597Lorsque la délégation automatique ne suffit pas, vous pouvez demander un sous-agent vous-même. Trois modèles escaladent d'une suggestion ponctuelle à une valeur par défaut au niveau de la session :

598 

599* **Langage naturel** : nommez le sous-agent dans votre invite ; Claude décide s'il faut déléguer

600* **@-mention** : garantit que le sous-agent s'exécute pour une tâche

601* **Au niveau de la session** : la session entière utilise l'invite système, les restrictions d'outils et le modèle de ce sous-agent via le drapeau `--agent` ou le paramètre `agent`

602 

603Pour le langage naturel, il n'y a pas de syntaxe spéciale. Nommez le sous-agent et Claude délègue généralement :

604 

605```text theme={null}

606Use the test-runner subagent to fix failing tests

607Have the code-reviewer subagent look at my recent changes

608```

609 

610**@-mentionnez le sous-agent.** Tapez `@` et choisissez le sous-agent dans la saisie semi-automatique, de la même manière que vous @-mentionnez les fichiers. Cela garantit que ce sous-agent spécifique s'exécute plutôt que de laisser le choix à Claude :

611 

612```text theme={null}

613@"code-reviewer (agent)" look at the auth changes

614```

615 

616Votre message complet va toujours à Claude, qui écrit l'invite de tâche du sous-agent en fonction de ce que vous avez demandé. La @-mention contrôle quel sous-agent Claude invoque, pas quelle invite il reçoit.

617 

618Les sous-agents fournis par un [plugin](/fr/plugins) activé apparaissent dans la saisie semi-automatique comme `<plugin-name>:<agent-name>`. Les sous-agents d'arrière-plan nommés actuellement en cours d'exécution dans la session apparaissent également dans la saisie semi-automatique, affichant leur statut à côté du nom. Vous pouvez également taper la mention manuellement sans utiliser le sélecteur : `@agent-<name>` pour les sous-agents locaux, ou `@agent-<plugin-name>:<agent-name>` pour les sous-agents de plugin.

619 

620**Exécutez la session entière en tant que sous-agent.** Passez [`--agent <name>`](/fr/cli-reference) pour démarrer une session où le thread principal lui-même prend l'invite système, les restrictions d'outils et le modèle de ce sous-agent :

621 

622```bash theme={null}

623claude --agent code-reviewer

624```

625 

626L'invite système du sous-agent remplace complètement l'invite système par défaut de Claude Code, de la même manière que [`--system-prompt`](/fr/cli-reference) le fait. Les fichiers `CLAUDE.md` et la mémoire du projet se chargent toujours via le flux de messages normal. Le nom de l'agent apparaît comme `@<name>` dans l'en-tête de démarrage pour que vous puissiez confirmer qu'il est actif.

627 

628Cela fonctionne avec les sous-agents intégrés et personnalisés, et le choix persiste lorsque vous reprenez la session.

629 

630Pour un sous-agent fourni par un plugin, passez le nom délimité : `claude --agent <plugin-name>:<agent-name>`.

631 

632Pour en faire la valeur par défaut pour chaque session dans un projet, définissez `agent` dans `.claude/settings.json` :

633 

634```json theme={null}

635{

636 "agent": "code-reviewer"

637}

638```

639 

640Le drapeau CLI remplace le paramètre si les deux sont présents.

641 

642### Exécuter les sous-agents au premier plan ou en arrière-plan

643 

644Les sous-agents peuvent s'exécuter au premier plan (bloquant) ou en arrière-plan (concurrent) :

645 

646* **Les sous-agents au premier plan** bloquent la conversation principale jusqu'à la fin. Les invites de permission et les questions de clarification (comme [`AskUserQuestion`](/fr/tools-reference)) vous sont transmises.

647* **Les sous-agents en arrière-plan** s'exécutent simultanément pendant que vous continuez à travailler. Avant le lancement, Claude Code vous demande les permissions d'outils dont le sous-agent aura besoin, en s'assurant qu'il a les approbations nécessaires à l'avance. Une fois en cours d'exécution, le sous-agent hérite de ces permissions et auto-refuse tout ce qui n'est pas pré-approuvé. Si un sous-agent en arrière-plan doit poser des questions de clarification, cet appel d'outil échoue mais le sous-agent continue.

648 

649Si un sous-agent en arrière-plan échoue en raison de permissions manquantes, vous pouvez démarrer un nouveau sous-agent au premier plan avec la même tâche pour réessayer avec des invites interactives.

650 

651Claude décide si les sous-agents s'exécutent au premier plan ou en arrière-plan en fonction de la tâche. Vous pouvez également :

652 

653* Demander à Claude de « run this in the background »

654* Appuyer sur **Ctrl+B** pour mettre une tâche en arrière-plan

655 

656Pour désactiver toute la fonctionnalité de tâche en arrière-plan, définissez la variable d'environnement `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` sur `1`. Consultez [Variables d'environnement](/fr/env-vars).

657 

658Lorsque le [mode fork](#fork-the-current-conversation) est activé, chaque génération de sous-agent s'exécute en arrière-plan indépendamment du champ `background`. Les forks affichent toujours les invites de permission dans votre terminal au fur et à mesure qu'elles se produisent au lieu de pré-approuver ; les sous-agents nommés suivent le flux de pré-approbation ci-dessus.

659 

660### Modèles courants

661 

662#### Isoler les opérations à haut volume

663 

664L'une des utilisations les plus efficaces des sous-agents est l'isolation des opérations qui produisent de grandes quantités de résultats. L'exécution de tests, la récupération de documentation ou le traitement de fichiers journaux peuvent consommer un contexte important. En déléguant ces tâches à un sous-agent, la sortie détaillée reste dans le contexte du sous-agent tandis que seul le résumé pertinent revient à votre conversation principale.

665 

666```text theme={null}

667Use a subagent to run the test suite and report only the failing tests with their error messages

668```

669 

670#### Exécuter la recherche en parallèle

671 

672Pour les investigations indépendantes, générez plusieurs sous-agents pour travailler simultanément :

673 

674```text theme={null}

675Research the authentication, database, and API modules in parallel using separate subagents

676```

677 

678Chaque sous-agent explore son domaine indépendamment, puis Claude synthétise les résultats. Cela fonctionne mieux lorsque les chemins de recherche ne dépendent pas les uns des autres.

679 

680<Warning>

681 Lorsque les sous-agents se terminent, leurs résultats reviennent à votre conversation principale. L'exécution de nombreux sous-agents qui retournent chacun des résultats détaillés peut consommer un contexte important.

682</Warning>

683 

684Pour les tâches qui nécessitent un parallélisme soutenu ou qui dépassent votre fenêtre de contexte, les [équipes d'agents](/fr/agent-teams) donnent à chaque travailleur son propre contexte indépendant.

685 

686#### Chaîner les sous-agents

687 

688Pour les workflows multi-étapes, demandez à Claude d'utiliser les sous-agents en séquence. Chaque sous-agent termine sa tâche et retourne les résultats à Claude, qui transmet ensuite le contexte pertinent au sous-agent suivant.

689 

690```text theme={null}

691Use the code-reviewer subagent to find performance issues, then use the optimizer subagent to fix them

692```

693 

694### Choisir entre les sous-agents et la conversation principale

695 

696Utilisez la **conversation principale** quand :

697 

698* La tâche nécessite des allers-retours fréquents ou un raffinement itératif

699* Plusieurs phases partagent un contexte important (planification → implémentation → test)

700* Vous apportez une modification rapide et ciblée

701* La latence est importante. Les sous-agents commencent à zéro et peuvent avoir besoin de temps pour rassembler le contexte

702 

703Utilisez les **sous-agents** quand :

704 

705* La tâche produit une sortie détaillée dont vous n'avez pas besoin dans votre contexte principal

706* Vous souhaitez appliquer des restrictions d'outils ou des permissions spécifiques

707* Le travail est autonome et peut retourner un résumé

708 

709Envisagez plutôt les [Skills](/fr/skills) lorsque vous souhaitez des invites ou des workflows réutilisables qui s'exécutent dans le contexte de la conversation principale plutôt que dans un contexte de sous-agent isolé.

710 

711Pour une question rapide sur quelque chose déjà dans votre conversation, utilisez [`/btw`](/fr/interactive-mode#side-questions-with-%2Fbtw) au lieu d'un sous-agent. Il voit votre contexte complet mais n'a pas d'accès aux outils, et la réponse est ignorée plutôt que d'être ajoutée à l'historique.

712 

713<Note>

714 Les sous-agents ne peuvent pas générer d'autres sous-agents. Si votre workflow nécessite une délégation imbriquée, utilisez les [Skills](/fr/skills) ou [chaînez les sous-agents](#chain-subagents) à partir de la conversation principale.

715</Note>

716 

717### Gérer le contexte du sous-agent

718 

719#### Reprendre les sous-agents

720 

721Chaque invocation de sous-agent crée une nouvelle instance avec un contexte frais. Pour continuer le travail d'un sous-agent existant au lieu de recommencer, demandez à Claude de le reprendre.

722 

723Les sous-agents repris conservent leur historique de conversation complet, y compris tous les appels d'outils précédents, les résultats et le raisonnement. Le sous-agent reprend exactement où il s'était arrêté plutôt que de recommencer à zéro.

724 

725Lorsqu'un sous-agent se termine, Claude reçoit son ID d'agent. Claude utilise l'outil `SendMessage` avec l'ID de l'agent comme champ `to` pour le reprendre. L'outil `SendMessage` n'est disponible que lorsque les [équipes d'agents](/fr/agent-teams) sont activées via `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1`.

726 

727Pour reprendre un sous-agent, demandez à Claude de continuer le travail précédent :

728 

729```text theme={null}

730Use the code-reviewer subagent to review the authentication module

731[Agent completes]

732 

733Continue that code review and now analyze the authorization logic

734[Claude resumes the subagent with full context from previous conversation]

735```

736 

737Si un sous-agent arrêté reçoit un `SendMessage`, il se reprend automatiquement en arrière-plan sans nécessiter une nouvelle invocation `Agent`.

738 

739Vous pouvez également demander à Claude l'ID d'agent si vous souhaitez le référencer explicitement, ou trouver les ID dans les fichiers de transcription à `~/.claude/projects/{project}/{sessionId}/subagents/`. Chaque transcription est stockée sous la forme `agent-{agentId}.jsonl`.

740 

741Les transcriptions de sous-agent persistent indépendamment de la conversation principale :

742 

743* **Compaction de la conversation principale** : Lorsque la conversation principale se compacte, les transcriptions de sous-agent ne sont pas affectées. Elles sont stockées dans des fichiers séparés.

744* **Persistance de session** : Les transcriptions de sous-agent persistent au sein de leur session. Vous pouvez [reprendre un sous-agent](#resume-subagents) après le redémarrage de Claude Code en reprenant la même session.

745* **Nettoyage automatique** : Les transcriptions sont nettoyées en fonction du paramètre `cleanupPeriodDays` (par défaut : 30 jours).

746 

747#### Auto-compaction

748 

749Les sous-agents prennent en charge la compaction automatique en utilisant la même logique que la conversation principale. Par défaut, la compaction automatique se déclenche à environ 95 % de capacité. Pour déclencher la compaction plus tôt, définissez `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` sur un pourcentage inférieur (par exemple, `50`). Consultez [variables d'environnement](/fr/env-vars) pour plus de détails.

750 

751Les événements de compaction sont enregistrés dans les fichiers de transcription de sous-agent :

752 

753```json theme={null}

754{

755 "type": "system",

756 "subtype": "compact_boundary",

757 "compactMetadata": {

758 "trigger": "auto",

759 "preTokens": 167189

760 }

761}

762```

763 

764La valeur `preTokens` indique le nombre de tokens utilisés avant la compaction.

765 

766## Dupliquer la conversation actuelle

767 

768<Note>

769 Les sous-agents dupliqués sont expérimentaux et nécessitent Claude Code v2.1.117 ou version ultérieure. Le comportement et la configuration peuvent changer dans les versions futures. Activez-les en définissant la variable d'environnement [`CLAUDE_CODE_FORK_SUBAGENT`](/fr/env-vars) sur `1`. La variable est honorée en mode interactif et via le SDK ou `claude -p`.

770</Note>

771 

772Un fork est un sous-agent qui hérite de l'intégralité de la conversation jusqu'à présent au lieu de commencer à zéro. Cela supprime l'isolation d'entrée que les sous-agents fournissent autrement : un fork voit la même invite système, les mêmes outils, le même modèle et l'historique des messages que la session principale, vous pouvez donc lui confier une tâche secondaire sans réexpliquer la situation. Les appels d'outils du fork restent en dehors de votre conversation et seul son résultat final revient, donc votre fenêtre de contexte principal reste propre. Utilisez un fork lorsqu'un sous-agent nommé aurait besoin de trop de contexte pour être utile, ou lorsque vous souhaitez essayer plusieurs approches en parallèle à partir du même point de départ.

773 

774L'activation du mode fork change Claude Code de trois façons :

775 

776* Claude génère un fork chaque fois qu'il utiliserait autrement le sous-agent [general-purpose](#built-in-subagents). Les sous-agents nommés tels que Explore se génèrent comme avant.

777* Chaque génération de sous-agent s'exécute en [arrière-plan](#run-subagents-in-foreground-or-background), qu'il s'agisse d'un fork ou d'un sous-agent nommé. Définissez `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` sur `1` pour garder les générations synchrones.

778* La commande `/fork` génère un fork au lieu d'agir comme un alias pour [`/branch`](/fr/commands).

779 

780Vous pouvez démarrer un fork vous-même avec `/fork` suivi d'une directive. Claude Code nomme le fork à partir des premiers mots de la directive. L'exemple suivant duplique la conversation pour rédiger des cas de test pendant que vous continuez avec l'implémentation dans la session principale :

781 

782```text theme={null}

783/fork draft unit tests for the parser changes so far

784```

785 

786Le fork apparaît dans un panneau sous votre invite et s'exécute en arrière-plan pendant que vous continuez à travailler. Lorsqu'il se termine, son résultat arrive sous forme de message dans votre conversation principale. La section suivante couvre les contrôles du panneau pour observer et diriger les forks pendant qu'ils s'exécutent.

787 

788### Observer et diriger les forks en cours d'exécution

789 

790Les forks en cours d'exécution apparaissent dans un panneau sous l'entrée d'invite, avec une ligne pour la session principale et une pour chaque fork. Utilisez ces touches pour interagir avec le panneau :

791 

792| Touche | Action |

793| :-------- | :------------------------------------------------------------------------------- |

794| `↑` / `↓` | Se déplacer entre les lignes |

795| `Entrée` | Ouvrir la transcription du fork sélectionné et lui envoyer des messages de suivi |

796| `x` | Ignorer un fork terminé ou arrêter un fork en cours d'exécution |

797| `Échap` | Retourner le focus à l'entrée d'invite |

798 

799### Comment les forks diffèrent des sous-agents nommés

800 

801Un fork hérite de tout ce que la session principale a au moment où il se génère. Un sous-agent nommé démarre à partir de sa propre définition.

802 

803| | Fork | Sous-agent nommé |

804| :----------------------- | :------------------------------------------ | :-------------------------------------------------------------------------------------------------- |

805| Contexte | Historique de conversation complet | Contexte frais avec l'invite que vous transmettez |

806| Invite système et outils | Identique à la session principale | À partir du [fichier de définition](#write-subagent-files) du sous-agent |

807| Modèle | Identique à la session principale | À partir du champ `model` du sous-agent |

808| Permissions | Les invites s'affichent dans votre terminal | [Pré-approuvées](#run-subagents-in-foreground-or-background) avant le lancement, puis auto-refusées |

809| Cache d'invite | Partagé avec la session principale | Cache séparé |

810 

811Parce que l'invite système d'un fork et les définitions d'outils sont identiques au parent, sa première demande réutilise le cache d'invite du parent. Cela rend le forking moins cher que la génération d'un sous-agent frais pour les tâches qui ont besoin du même contexte.

812 

813Lorsque Claude génère un fork via l'outil Agent, il peut passer `isolation: "worktree"` pour que les modifications de fichiers du fork soient écrites dans un git worktree séparé au lieu de votre extraction.

814 

815### Limitations

816 

817Le paramètre `CLAUDE_CODE_FORK_SUBAGENT=1` active le mode fork dans les sessions interactives, le [mode non-interactif](/fr/headless), et le SDK Agent. Un fork ne peut pas générer d'autres forks.

818 

819## Exemples de sous-agents

820 

821Ces exemples démontrent des modèles efficaces pour construire des sous-agents. Utilisez-les comme points de départ, ou générez une version personnalisée avec Claude.

822 

823<Tip>

824 **Meilleures pratiques :**

825 

826 * **Concevoir des sous-agents ciblés :** chaque sous-agent doit exceller dans une tâche spécifique

827 * **Écrire des descriptions détaillées :** Claude utilise la description pour décider quand déléguer

828 * **Limiter l'accès aux outils :** accordez uniquement les permissions nécessaires pour la sécurité et la concentration

829 * **Enregistrer dans le contrôle de version :** partagez les sous-agents de projet avec votre équipe

830</Tip>

831 

832### Examinateur de code

833 

834Un sous-agent en lecture seule qui examine le code sans le modifier. Cet exemple montre comment concevoir un sous-agent ciblé avec un accès limité aux outils (pas d'Edit ou Write) et une invite détaillée qui spécifie exactement ce qu'il faut chercher et comment formater la sortie.

835 

836```markdown theme={null}

837---

838name: code-reviewer

839description: Expert code review specialist. Proactively reviews code for quality, security, and maintainability. Use immediately after writing or modifying code.

840tools: Read, Grep, Glob, Bash

841model: inherit

842---

843 

844You are a senior code reviewer ensuring high standards of code quality and security.

845 

846When invoked:

8471. Run git diff to see recent changes

8482. Focus on modified files

8493. Begin review immediately

850 

851Review checklist:

852- Code is clear and readable

853- Functions and variables are well-named

854- No duplicated code

855- Proper error handling

856- No exposed secrets or API keys

857- Input validation implemented

858- Good test coverage

859- Performance considerations addressed

860 

861Provide feedback organized by priority:

862- Critical issues (must fix)

863- Warnings (should fix)

864- Suggestions (consider improving)

865 

866Include specific examples of how to fix issues.

867```

868 

869### Débogueur

870 

871Un sous-agent qui peut à la fois analyser et corriger les problèmes. Contrairement à l'examinateur de code, celui-ci inclut Edit car corriger les bugs nécessite de modifier le code. L'invite fournit un workflow clair du diagnostic à la vérification.

872 

873```markdown theme={null}

874---

875name: debugger

876description: Debugging specialist for errors, test failures, and unexpected behavior. Use proactively when encountering any issues.

877tools: Read, Edit, Bash, Grep, Glob

878---

879 

880You are an expert debugger specializing in root cause analysis.

881 

882When invoked:

8831. Capture error message and stack trace

8842. Identify reproduction steps

8853. Isolate the failure location

8864. Implement minimal fix

8875. Verify solution works

888 

889Debugging process:

890- Analyze error messages and logs

891- Check recent code changes

892- Form and test hypotheses

893- Add strategic debug logging

894- Inspect variable states

895 

896For each issue, provide:

897- Root cause explanation

898- Evidence supporting the diagnosis

899- Specific code fix

900- Testing approach

901- Prevention recommendations

902 

903Focus on fixing the underlying issue, not the symptoms.

904```

905 

906### Data scientist

907 

908Un sous-agent spécialisé dans le domaine pour le travail d'analyse de données. Cet exemple montre comment créer des sous-agents pour des workflows spécialisés en dehors des tâches de codage typiques. Il définit explicitement `model: sonnet` pour une analyse plus capable.

909 

910```markdown theme={null}

911---

912name: data-scientist

913description: Data analysis expert for SQL queries, BigQuery operations, and data insights. Use proactively for data analysis tasks and queries.

914tools: Bash, Read, Write

915model: sonnet

916---

917 

918You are a data scientist specializing in SQL and BigQuery analysis.

919 

920When invoked:

9211. Understand the data analysis requirement

9222. Write efficient SQL queries

9233. Use BigQuery command line tools (bq) when appropriate

9244. Analyze and summarize results

9255. Present findings clearly

926 

927Key practices:

928- Write optimized SQL queries with proper filters

929- Use appropriate aggregations and joins

930- Include comments explaining complex logic

931- Format results for readability

932- Provide data-driven recommendations

933 

934For each analysis:

935- Explain the query approach

936- Document any assumptions

937- Highlight key findings

938- Suggest next steps based on data

939 

940Always ensure queries are efficient and cost-effective.

941```

942 

943### Validateur de requête de base de données

944 

945Un sous-agent qui autorise l'accès à Bash mais valide les commandes pour n'autoriser que les requêtes SQL en lecture seule. Cet exemple montre comment utiliser les hooks `PreToolUse` pour la validation conditionnelle lorsque vous avez besoin d'un contrôle plus fin que le champ `tools` ne le permet.

946 

947```markdown theme={null}

948---

949name: db-reader

950description: Execute read-only database queries. Use when analyzing data or generating reports.

951tools: Bash

952hooks:

953 PreToolUse:

954 - matcher: "Bash"

955 hooks:

956 - type: command

957 command: "./scripts/validate-readonly-query.sh"

958---

959 

960You are a database analyst with read-only access. Execute SELECT queries to answer questions about the data.

961 

962When asked to analyze data:

9631. Identify which tables contain the relevant data

9642. Write efficient SELECT queries with appropriate filters

9653. Present results clearly with context

966 

967You cannot modify data. If asked to INSERT, UPDATE, DELETE, or modify schema, explain that you only have read access.

968```

969 

970Claude Code [passe l'entrée du hook en JSON](/fr/hooks#pretooluse-input) via stdin aux commandes du hook. Le script de validation lit ce JSON, extrait la commande en cours d'exécution et la vérifie par rapport à une liste d'opérations d'écriture SQL. Si une opération d'écriture est détectée, le script [quitte avec le code 2](/fr/hooks#exit-code-2-behavior-per-event) pour bloquer l'exécution et retourne un message d'erreur à Claude via stderr.

971 

972Créez le script de validation n'importe où dans votre projet. Le chemin doit correspondre au champ `command` dans votre configuration de hook :

973 

974```bash theme={null}

975#!/bin/bash

976# Blocks SQL write operations, allows SELECT queries

977 

978# Read JSON input from stdin

979INPUT=$(cat)

980 

981# Extract the command field from tool_input using jq

982COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty')

983 

984if [ -z "$COMMAND" ]; then

985 exit 0

986fi

987 

988# Block write operations (case-insensitive)

989if echo "$COMMAND" | grep -iE '\b(INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|TRUNCATE|REPLACE|MERGE)\b' > /dev/null; then

990 echo "Blocked: Write operations not allowed. Use SELECT queries only." >&2

991 exit 2

992fi

993 

994exit 0

995```

996 

997Rendez le script exécutable :

998 

999```bash theme={null}

1000chmod +x ./scripts/validate-readonly-query.sh

1001```

1002 

1003Le hook reçoit JSON via stdin avec la commande Bash dans `tool_input.command`. Le code de sortie 2 bloque l'opération et renvoie le message d'erreur à Claude. Consultez [Hooks](/fr/hooks#exit-code-output) pour plus de détails sur les codes de sortie et [Hook input](/fr/hooks#pretooluse-input) pour le schéma d'entrée complet.

1004 

1005## Étapes suivantes

1006 

1007Maintenant que vous comprenez les sous-agents, explorez ces fonctionnalités connexes :

1008 

1009* [Distribuer les sous-agents avec les plugins](/fr/plugins) pour partager les sous-agents entre les équipes ou les projets

1010* [Exécuter Claude Code par programmation](/fr/headless) avec le SDK Agent pour CI/CD et l'automatisation

1011* [Utiliser les serveurs MCP](/fr/mcp) pour donner aux sous-agents l'accès aux outils et données externes

terminal-config.md +307 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Configurez votre terminal pour Claude Code

6 

7> Corrigez Maj+Entrée pour les sauts de ligne, recevez une notification sonore du terminal lorsque Claude termine, configurez tmux, adaptez le thème de couleur et activez le mode Vim dans l'interface CLI de Claude Code.

8 

9Claude Code fonctionne dans n'importe quel terminal sans configuration. Cette page est destinée aux cas où quelque chose de spécifique ne se comporte pas comme prévu. Trouvez votre symptôme ci-dessous. Si tout vous semble déjà correct, vous n'avez pas besoin de cette page.

10 

11* [Maj+Entrée soumet au lieu d'insérer un saut de ligne](#enter-multiline-prompts)

12* [Les raccourcis avec la touche Option ne font rien sur macOS](#enable-option-key-shortcuts-on-macos)

13* [Aucun son ou alerte lorsque Claude termine](#get-a-terminal-bell-or-notification)

14* [Vous exécutez Claude Code dans tmux](#configure-tmux)

15* [L'affichage scintille ou le défilement saute](#switch-to-fullscreen-rendering)

16* [Vous voulez les touches Vim dans l'invite](#edit-prompts-with-vim-keybindings)

17 

18Cette page concerne la configuration de votre terminal pour envoyer les bons signaux à Claude Code. Pour modifier les touches auxquelles Claude Code lui-même répond, consultez plutôt [keybindings](/fr/keybindings).

19 

20## Entrer des invites multilignes

21 

22Appuyer sur Entrée soumet votre message. Pour ajouter un saut de ligne sans soumettre, appuyez sur Ctrl+J, ou tapez `\` puis appuyez sur Entrée. Les deux fonctionnent dans tous les terminaux sans configuration.

23 

24Dans la plupart des terminaux, vous pouvez également appuyer sur Maj+Entrée, mais le support varie selon l'émulateur de terminal :

25 

26| Terminal | Maj+Entrée pour saut de ligne |

27| :---------------------------------------------------------------------------------- | :-------------------------------------------------- |

28| Ghostty, Kitty, iTerm2, WezTerm, Warp, Apple Terminal | Fonctionne sans configuration |

29| VS Code, Cursor, Windsurf, Alacritty, Zed | Exécutez `/terminal-setup` une fois |

30| Windows Terminal, gnome-terminal, JetBrains IDEs tels que PyCharm et Android Studio | Non disponible ; utilisez Ctrl+J ou `\` puis Entrée |

31 

32Pour VS Code, Cursor, Windsurf, Alacritty et Zed, `/terminal-setup` écrit Maj+Entrée et d'autres liaisons de clavier dans le fichier de configuration du terminal. Dans VS Code, Cursor et Windsurf, il définit également `terminal.integrated.mouseWheelScrollSensitivity` dans les paramètres de l'éditeur pour un défilement plus fluide en [mode plein écran](/fr/fullscreen). Les liaisons et paramètres existants sont conservés ; si vous voyez un message tel que `VSCode terminal Shift+Enter key binding already configured`, aucune modification n'a été apportée. Exécutez `/terminal-setup` directement dans le terminal hôte plutôt qu'à l'intérieur de tmux ou screen, car il doit écrire dans la configuration du terminal hôte.

33 

34Si vous exécutez à l'intérieur de tmux, Maj+Entrée nécessite également la [configuration tmux ci-dessous](#configure-tmux) même lorsque le terminal externe la supporte.

35 

36Pour lier le saut de ligne à une touche différente, ou pour inverser le comportement afin qu'Entrée insère un saut de ligne et Maj+Entrée soumet, mappez les actions `chat:newline` et `chat:submit` dans votre [fichier keybindings](/fr/keybindings).

37 

38## Activer les raccourcis de la touche Option sur macOS

39 

40Certains raccourcis de Claude Code utilisent la touche Option, comme Option+Entrée pour un saut de ligne ou Option+P pour changer de modèle. Sur macOS, la plupart des terminaux n'envoient pas Option comme modificateur par défaut, donc ces raccourcis ne font rien jusqu'à ce que vous l'activiez. Le paramètre du terminal pour cela est généralement étiqueté « Use Option as Meta Key » ; Meta est le nom Unix historique de la touche maintenant étiquetée Option ou Alt.

41 

42<Tabs>

43 <Tab title="Apple Terminal">

44 Ouvrez Paramètres → Profils → Clavier et cochez ' Utiliser Option comme touche Meta '.

45 

46 Si vous avez accepté l'invite de premier lancement de Claude Code qui proposait ' Option+Entrée pour les sauts de ligne et la cloche visuelle ', c'est déjà fait. Cette invite exécute `/terminal-setup` pour vous, ce qui active Option comme Meta et bascule la cloche audio vers un flash d'écran visuel dans votre profil Apple Terminal.

47 </Tab>

48 

49 <Tab title="iTerm2">

50 Ouvrez Paramètres → Profils → Touches → Général et définissez la touche Option gauche et la touche Option droite sur « Esc+ ».

51 

52 L'exécution de `/terminal-setup` dans iTerm2 active « Applications in terminal may access clipboard » sous Paramètres → Général → Sélection afin que la commande `/copy` puisse écrire dans votre presse-papiers système. La commande détecte iTerm2 même lorsqu'elle est exécutée depuis tmux. Redémarrez iTerm2 pour que la modification prenne effet.

53 </Tab>

54 

55 <Tab title="VS Code">

56 Ajoutez `"terminal.integrated.macOptionIsMeta": true` à vos paramètres VS Code.

57 </Tab>

58</Tabs>

59 

60Pour Ghostty, Kitty et d'autres terminaux, recherchez un paramètre Option-as-Alt ou Option-as-Meta dans le fichier de configuration du terminal.

61 

62## Obtenir une cloche de terminal ou une notification

63 

64Lorsque Claude termine une tâche ou s'arrête pour une invite de permission, il déclenche un événement de notification. Afficher cela comme une cloche de terminal ou une notification de bureau vous permet de passer à d'autres tâches pendant qu'une longue tâche s'exécute.

65 

66Par défaut, Claude Code envoie une notification de bureau uniquement dans Ghostty, Kitty et iTerm2. Dans les autres terminaux, définissez [`preferredNotifChannel`](/fr/settings#available-settings) sur `"terminal_bell"` pour sonner la cloche du terminal à la place, ou configurez un [hook Notification](#play-a-sound-with-a-notification-hook) pour un son personnalisé ou une commande.

67 

68La notification de bureau atteint votre machine locale via SSH, donc une session distante peut toujours vous alerter. Ghostty et Kitty la transmettent à votre centre de notifications du système d'exploitation sans configuration supplémentaire. iTerm2 nécessite que vous activiez la transmission :

69 

70<Steps>

71 <Step title="Ouvrir les paramètres de notification iTerm2">

72 Allez à Paramètres → Profils → Terminal.

73 </Step>

74 

75 <Step title="Activer les alertes">

76 Cochez « Notification Center Alerts », puis cliquez sur « Filter Alerts » et activez « Send escape sequence-generated alerts ».

77 </Step>

78</Steps>

79 

80Si les notifications n'apparaissent toujours pas, confirmez que votre application de terminal dispose de la permission de notification dans vos paramètres du système d'exploitation, et si vous exécutez à l'intérieur de tmux, [activez le passthrough](#configure-tmux).

81 

82### Jouer un son avec un hook Notification

83 

84Dans n'importe quel terminal, vous pouvez configurer un [hook Notification](/fr/hooks-guide#get-notified-when-claude-needs-input) pour jouer un son ou exécuter une commande personnalisée lorsque Claude a besoin de votre attention. Les hooks s'exécutent aux côtés de la notification de bureau plutôt que de la remplacer, donc les terminaux qui ne reçoivent pas de notification de bureau, comme Warp ou le terminal intégré de VS Code, peuvent utiliser un hook ou définir `preferredNotifChannel` sur `"terminal_bell"` à la place.

85 

86L'exemple ci-dessous joue un son système sur macOS. Le guide lié contient des commandes de notification de bureau pour macOS, Linux et Windows.

87 

88```json ~/.claude/settings.json theme={null}

89{

90 "hooks": {

91 "Notification": [

92 {

93 "hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" }]

94 }

95 ]

96 }

97}

98```

99 

100## Configurer tmux

101 

102Lorsque Claude Code s'exécute à l'intérieur de tmux, deux choses se cassent par défaut : Maj+Entrée soumet au lieu d'insérer un saut de ligne, et les notifications de bureau et la [barre de progression](/fr/settings#available-settings) n'atteignent jamais le terminal externe. Ajoutez ces lignes à `~/.tmux.conf`, puis exécutez `tmux source-file ~/.tmux.conf` pour les appliquer au serveur en cours d'exécution :

103 

104```bash ~/.tmux.conf theme={null}

105set -g allow-passthrough on

106set -s extended-keys on

107set -as terminal-features 'xterm*:extkeys'

108```

109 

110La ligne `allow-passthrough` permet aux notifications et aux mises à jour de progression d'atteindre iTerm2, Ghostty ou Kitty au lieu d'être avalées par tmux. Les lignes `extended-keys` permettent à tmux de distinguer Maj+Entrée de la simple Entrée afin que le raccourci de saut de ligne fonctionne.

111 

112## Adapter le thème de couleur

113 

114Utilisez la commande `/theme`, ou le sélecteur de thème dans `/config`, pour choisir un thème Claude Code qui correspond à votre terminal. La sélection de l'option auto détecte le fond clair ou sombre de votre terminal, de sorte que le thème suit les changements d'apparence du système d'exploitation chaque fois que votre terminal le fait. Claude Code ne contrôle pas le schéma de couleurs du terminal lui-même, qui est défini par l'application de terminal.

115 

116Pour personnaliser ce qui apparaît en bas de l'interface, configurez une [ligne d'état personnalisée](/fr/statusline) qui affiche le modèle actuel, le répertoire de travail, la branche git ou d'autres contextes.

117 

118### Créer un thème personnalisé

119 

120<Note>

121 Les thèmes personnalisés nécessitent Claude Code v2.1.118 ou version ultérieure.

122</Note>

123 

124En plus des présets intégrés, `/theme` répertorie tous les thèmes personnalisés que vous avez définis et tous les thèmes contribués par les [plugins](/fr/plugins-reference#themes) installés. Sélectionnez **Nouveau thème personnalisé…** à la fin de la liste pour en créer un de manière interactive : vous nommez le thème, puis choisissez les jetons de couleur individuels à remplacer. Appuyez sur `Ctrl+E` tandis qu'un thème personnalisé est en surbrillance pour le modifier.

125 

126Chaque thème personnalisé est un fichier JSON dans `~/.claude/themes/`. Le nom de fichier sans l'extension `.json` est le slug du thème, et la sélection du thème stocke `custom:<slug>` comme préférence de thème. Le fichier a trois champs optionnels :

127 

128| Champ | Type | Description |

129| :---------- | :----- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- |

130| `name` | string | Étiquette d'affichage affichée dans `/theme`. Par défaut, le slug du nom de fichier |

131| `base` | string | Preset intégré à partir duquel le thème commence : `dark`, `light`, `dark-daltonized`, `light-daltonized`, `dark-ansi`, ou `light-ansi`. Par défaut `dark` |

132| `overrides` | object | Mappage des noms de jetons de couleur aux valeurs de couleur. Les jetons non listés ici passent au preset de base |

133 

134Les valeurs de couleur acceptent `#rrggbb`, `#rgb`, `rgb(r,g,b)`, `ansi256(n)`, ou `ansi:<name>` où `<name>` est l'un des 16 noms de couleur ANSI standard tels que `red` ou `cyanBright`. Les jetons inconnus et les valeurs de couleur invalides sont ignorés, donc une faute de frappe ne peut pas casser le rendu.

135 

136L'exemple suivant définit un thème qui conserve le preset sombre mais recolore l'accent d'invite, le texte d'erreur et le texte de succès :

137 

138```json ~/.claude/themes/dracula.json theme={null}

139{

140 "name": "Dracula",

141 "base": "dark",

142 "overrides": {

143 "claude": "#bd93f9",

144 "error": "#ff5555",

145 "success": "#50fa7b"

146 }

147}

148```

149 

150Claude Code surveille `~/.claude/themes/` et recharge lorsqu'un fichier change, de sorte que les modifications apportées dans votre éditeur s'appliquent à une session en cours sans redémarrage.

151 

152La référence ci-dessous couvre les jetons que vous pouvez définir dans `overrides`. L'éditeur interactif dans `/theme` affiche les mêmes jetons avec un aperçu en direct, plus quelques accents à usage unique tels que les couleurs de l'écran d'intégration qui sont omis ici.

153 

154<Accordion title="Référence des jetons de couleur">

155 L'exemple suivant combine les jetons de plusieurs groupes ci-dessous : l'accent de marque, la bordure du mode plan, les arrière-plans de diff et l'arrière-plan du message en plein écran.

156 

157 ```json ~/.claude/themes/midnight.json theme={null}

158 {

159 "name": "Midnight",

160 "base": "dark",

161 "overrides": {

162 "claude": "#a78bfa",

163 "planMode": "#38bdf8",

164 "diffAdded": "#14532d",

165 "diffRemoved": "#7f1d1d",

166 "userMessageBackground": "#1e1b4b"

167 }

168 }

169 ```

170 

171 #### Couleurs de texte et d'accent

172 

173 Contrôlez l'accent de marque principal et les nuances de texte de premier plan utilisées dans toute l'interface.

174 

175 | Jeton | Contrôle |

176 | :------------ | :------------------------------------------------------------------------------- |

177 | `claude` | Accent de marque principal, utilisé pour le spinner et l'étiquette d'assistant |

178 | `text` | Texte de premier plan par défaut |

179 | `inverseText` | Texte dessiné sur un arrière-plan coloré, comme les badges de statut |

180 | `inactive` | Texte secondaire tel que les indices, les horodatages et les éléments désactivés |

181 | `subtle` | Bordures faibles et texte secondaire désaccentué |

182 | `suggestion` | Suggestions d'autocomplétion et surbrillance de sélection dans les sélecteurs |

183 | `permission` | Bordures de dialogue, y compris les invites de permission et les sélecteurs |

184 | `remember` | Indicateurs de mémoire et `CLAUDE.md` |

185 

186 #### Couleurs de statut

187 

188 Signalez les états de succès, d'échec et d'avertissement dans les messages et les indicateurs.

189 

190 | Jeton | Contrôle |

191 | :-------- | :----------------------------------------------------------- |

192 | `success` | Messages de succès et vérifications réussies |

193 | `error` | Messages d'erreur et échecs |

194 | `warning` | Avertissements, messages de prudence et bordure du mode auto |

195 | `merged` | Statut de demande de tirage fusionnée |

196 

197 #### Boîte d'entrée et indicateurs de mode

198 

199 Définissez la couleur de bordure de la boîte d'entrée et l'accent affiché tandis qu'un mode de permission ou un indicateur est actif.

200 

201 | Jeton | Contrôle |

202 | :------------- | :--------------------------------------------------------------------- |

203 | `promptBorder` | Bordure de la boîte d'entrée en mode permission par défaut |

204 | `planMode` | Accent et bordure du mode plan |

205 | `autoAccept` | Accent et bordure du mode acceptation des modifications |

206 | `bashBorder` | Bordure de la boîte d'entrée lors de l'entrée d'une commande shell `!` |

207 | `ide` | Indicateur de connexion IDE |

208 | `fastMode` | Indicateur du mode rapide |

209 

210 #### Rendu des diffs

211 

212 Colorez le code ajouté et supprimé dans les modifications et révisions de fichiers.

213 

214 | Jeton | Contrôle |

215 | :------------------ | :----------------------------------------------------------- |

216 | `diffAdded` | Arrière-plan des lignes ajoutées |

217 | `diffRemoved` | Arrière-plan des lignes supprimées |

218 | `diffAddedDimmed` | Arrière-plan du contexte inchangé près des lignes ajoutées |

219 | `diffRemovedDimmed` | Arrière-plan du contexte inchangé près des lignes supprimées |

220 | `diffAddedWord` | Surbrillance au niveau des mots dans une ligne ajoutée |

221 | `diffRemovedWord` | Surbrillance au niveau des mots dans une ligne supprimée |

222 

223 #### Mode plein écran

224 

225 S'applique uniquement en [mode de rendu plein écran](/fr/fullscreen), où les messages ont un remplissage d'arrière-plan.

226 

227 | Jeton | Contrôle |

228 | :--------------------------- | :---------------------------------------------------------------------------------- |

229 | `userMessageBackground` | Arrière-plan derrière vos messages dans la transcription |

230 | `userMessageBackgroundHover` | Arrière-plan derrière un message lors du survol ou de l'expansion |

231 | `messageActionsBackground` | Arrière-plan derrière le message sélectionné lorsque la barre d'actions est ouverte |

232 | `bashMessageBackgroundColor` | Arrière-plan derrière les entrées de commande shell `!` dans la transcription |

233 | `memoryBackgroundColor` | Arrière-plan derrière les entrées de mémoire `#` dans la transcription |

234 | `selectionBg` | Arrière-plan du texte sélectionné à la souris |

235 

236 #### Jauge d'utilisation et étiquettes de haut-parleur

237 

238 Ajustez la barre affichée dans la vue `/usage` et les étiquettes qui distinguent vos messages de ceux de Claude.

239 

240 | Jeton | Contrôle |

241 | :----------------- | :----------------------------------------------------------- |

242 | `rate_limit_fill` | Portion remplie de la jauge d'utilisation |

243 | `rate_limit_empty` | Portion non remplie de la jauge d'utilisation |

244 | `briefLabelYou` | Couleur de l'étiquette `You` sur vos messages |

245 | `briefLabelClaude` | Couleur de l'étiquette `Claude` sur les messages d'assistant |

246 

247 #### Variantes de scintillement et couleurs des sous-agents

248 

249 Plusieurs jetons ont une variante de scintillement appariée qui fournit la couleur plus claire utilisée dans le dégradé animé du spinner. Remplacez le scintillement aux côtés de son jeton de base si l'animation semble mal assortie.

250 

251 * `claude` et `claudeShimmer`

252 * `warning` et `warningShimmer`

253 * `permission` et `permissionShimmer`

254 * `promptBorder` et `promptBorderShimmer`

255 * `inactive` et `inactiveShimmer`

256 * `fastMode` et `fastModeShimmer`

257 

258 Chaque [sous-agent](/fr/sub-agents) et tâche parallèle est affiché dans l'une des huit couleurs nommées afin que vous puissiez les distinguer dans la transcription. Les noms de jetons suivent le modèle `<color>_FOR_SUBAGENTS_ONLY`, où `<color>` est `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, ou `cyan`. Remplacez-les pour modifier l'apparence de chaque couleur nommée. Par exemple, un sous-agent avec `color: blue` dans sa définition est dessiné en utilisant la valeur `blue_FOR_SUBAGENTS_ONLY`.

259 

260 Les mots-clés [`ultrathink`](/fr/model-config#use-ultrathink-for-one-off-deep-reasoning) et [`ultraplan`](/fr/ultraplan) dans l'entrée d'invite sont rendus avec un dégradé arc-en-ciel à sept couleurs. Les noms de jetons suivent le modèle `rainbow_<color>` et `rainbow_<color>_shimmer`, où `<color>` est `red`, `orange`, `yellow`, `green`, `blue`, `indigo`, ou `violet`.

261</Accordion>

262 

263## Basculer vers le rendu en plein écran

264 

265Si l'affichage scintille ou la position de défilement saute pendant que Claude travaille, basculez vers le [mode de rendu en plein écran](/fr/fullscreen). Il dessine sur un écran séparé que le terminal réserve aux applications en plein écran au lieu d'ajouter à votre défilement normal, ce qui maintient l'utilisation de la mémoire plate et ajoute le support de la souris pour le défilement et la sélection. Dans ce mode, vous faites défiler avec la souris ou PageUp à l'intérieur de Claude Code plutôt qu'avec le défilement natif de votre terminal ; consultez la [page plein écran](/fr/fullscreen#search-and-review-the-conversation) pour savoir comment rechercher et copier.

266 

267Exécutez `/tui fullscreen` pour basculer dans la session actuelle avec votre conversation intacte. Pour en faire la valeur par défaut, définissez la variable d'environnement `CLAUDE_CODE_NO_FLICKER` avant de démarrer Claude Code :

268 

269<CodeGroup>

270 ```bash Bash and Zsh theme={null}

271 CLAUDE_CODE_NO_FLICKER=1 claude

272 ```

273 

274 ```powershell PowerShell theme={null}

275 $env:CLAUDE_CODE_NO_FLICKER = "1"; claude

276 ```

277 

278 ```json ~/.claude/settings.json theme={null}

279 {

280 "env": {

281 "CLAUDE_CODE_NO_FLICKER": "1"

282 }

283 }

284 ```

285</CodeGroup>

286 

287## Coller du contenu volumineux

288 

289Lorsque vous collez plus de 10 000 caractères dans l'invite, Claude Code réduit l'entrée à un espace réservé `[Pasted text]` afin que la boîte d'entrée reste utilisable. Le contenu complet est toujours envoyé à Claude lorsque vous soumettez.

290 

291Le terminal intégré VS Code peut supprimer des caractères des très grands collages avant qu'ils n'atteignent Claude Code, donc préférez les flux basés sur des fichiers là-bas. Pour les très grandes entrées telles que des fichiers entiers ou de longs journaux, écrivez le contenu dans un fichier et demandez à Claude de le lire au lieu de coller. Cela maintient la transcription de la conversation lisible et permet à Claude de référencer le fichier par chemin dans les tours ultérieurs.

292 

293## Éditer les invites avec les liaisons de clavier Vim

294 

295Claude Code inclut un mode d'édition de style Vim pour l'entrée d'invite. Activez-le via `/config` → Editor mode, ou en définissant [`editorMode`](/fr/settings#available-settings) sur `"vim"` dans `~/.claude/settings.json`. Définissez Editor mode à nouveau sur `normal` pour le désactiver.

296 

297Le mode Vim supporte un sous-ensemble de motions et d'opérateurs en mode NORMAL et VISUAL, tels que la navigation `hjkl`, la sélection `v`/`V`, et `d`/`c`/`y` avec des objets texte. Consultez la [référence du mode éditeur Vim](/fr/interactive-mode#vim-editor-mode) pour la table de clés complète. Les motions Vim ne sont pas remappables via le fichier keybindings.

298 

299Appuyer sur Entrée soumet toujours votre invite en mode INSERT, contrairement à Vim standard. Utilisez `o` ou `O` en mode NORMAL, ou Ctrl+J, pour insérer un saut de ligne à la place.

300 

301## Ressources connexes

302 

303* [Mode interactif](/fr/interactive-mode) : référence complète des raccourcis clavier et table de clés Vim

304* [Keybindings](/fr/keybindings) : remappez n'importe quel raccourci Claude Code, y compris Entrée et Maj+Entrée

305* [Rendu en plein écran](/fr/fullscreen) : détails sur le défilement, la recherche et la copie en mode plein écran

306* [Guide des hooks](/fr/hooks-guide) : plus d'exemples de hooks Notification pour Linux et Windows

307* [Dépannage](/fr/troubleshooting) : corrections pour les problèmes en dehors de la configuration du terminal

third-party-integrations.md +262 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Aperçu du déploiement en entreprise

6 

7> Découvrez comment Claude Code peut s'intégrer à divers services tiers et infrastructures pour répondre aux exigences de déploiement en entreprise.

8 

9Les organisations peuvent déployer Claude Code directement via Anthropic ou via un fournisseur de cloud. Cette page vous aide à choisir la bonne configuration.

10 

11## Comparer les options de déploiement

12 

13Pour la plupart des organisations, Claude for Teams ou Claude for Enterprise offre la meilleure expérience. Les membres de l'équipe ont accès à la fois à Claude Code et à Claude sur le web avec un seul abonnement, une facturation centralisée et aucune configuration d'infrastructure requise.

14 

15**Claude for Teams** est en libre-service et inclut des fonctionnalités de collaboration, des outils d'administration et la gestion de la facturation. Idéal pour les petites équipes qui ont besoin de démarrer rapidement.

16 

17**Claude for Enterprise** ajoute SSO et la capture de domaine, les autorisations basées sur les rôles, l'accès à l'API de conformité et les paramètres de politique gérés pour déployer des configurations Claude Code à l'échelle de l'organisation. Idéal pour les grandes organisations ayant des exigences de sécurité et de conformité.

18 

19En savoir plus sur les [plans d'équipe](https://support.claude.com/en/articles/9266767-what-is-the-team-plan) et les [plans d'entreprise](https://support.claude.com/en/articles/9797531-what-is-the-enterprise-plan).

20 

21Si votre organisation a des exigences d'infrastructure spécifiques, comparez les options ci-dessous :

22 

23<table>

24 <thead>

25 <tr>

26 <th>Fonctionnalité</th>

27 <th>Claude for Teams/Enterprise</th>

28 <th>Anthropic Console</th>

29 <th>Amazon Bedrock</th>

30 <th>Google Vertex AI</th>

31 <th>Microsoft Foundry</th>

32 </tr>

33 </thead>

34 

35 <tbody>

36 <tr>

37 <td>Idéal pour</td>

38 <td>La plupart des organisations (recommandé)</td>

39 <td>Développeurs individuels</td>

40 <td>Déploiements natifs AWS</td>

41 <td>Déploiements natifs GCP</td>

42 <td>Déploiements natifs Azure</td>

43 </tr>

44 

45 <tr>

46 <td>Facturation</td>

47 <td><strong>Teams :</strong> 150 \$/siège (Premium) avec PAYG disponible<br /><strong>Enterprise :</strong> <a href="https://claude.com/contact-sales?utm_source=claude_code&utm_medium=docs&utm_content=third_party_enterprise">Contacter les ventes</a></td>

48 <td>PAYG</td>

49 <td>PAYG via AWS</td>

50 <td>PAYG via GCP</td>

51 <td>PAYG via Azure</td>

52 </tr>

53 

54 <tr>

55 <td>Régions</td>

56 <td>[Pays](https://www.anthropic.com/supported-countries) supportés</td>

57 <td>[Pays](https://www.anthropic.com/supported-countries) supportés</td>

58 <td>Plusieurs [régions](https://docs.aws.amazon.com/bedrock/latest/userguide/models-regions.html) AWS</td>

59 <td>Plusieurs [régions](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/locations) GCP</td>

60 <td>Plusieurs [régions](https://azure.microsoft.com/en-us/explore/global-infrastructure/products-by-region/) Azure</td>

61 </tr>

62 

63 <tr>

64 <td>Prompt caching</td>

65 <td>Activé par défaut</td>

66 <td>Activé par défaut</td>

67 <td>Activé par défaut</td>

68 <td>Activé par défaut</td>

69 <td>Activé par défaut</td>

70 </tr>

71 

72 <tr>

73 <td>Authentification</td>

74 <td>Claude.ai SSO ou email</td>

75 <td>Clé API</td>

76 <td>Clé API ou identifiants AWS</td>

77 <td>Identifiants GCP</td>

78 <td>Clé API ou Microsoft Entra ID</td>

79 </tr>

80 

81 <tr>

82 <td>Suivi des coûts</td>

83 <td>Tableau de bord d'utilisation</td>

84 <td>Tableau de bord d'utilisation</td>

85 <td>AWS Cost Explorer</td>

86 <td>Facturation GCP</td>

87 <td>Gestion des coûts Azure</td>

88 </tr>

89 

90 <tr>

91 <td>Inclut Claude sur le web</td>

92 <td>Oui</td>

93 <td>Non</td>

94 <td>Non</td>

95 <td>Non</td>

96 <td>Non</td>

97 </tr>

98 

99 <tr>

100 <td>Fonctionnalités d'entreprise</td>

101 <td>Gestion d'équipe, SSO, surveillance de l'utilisation</td>

102 <td>Aucune</td>

103 <td>Politiques IAM, CloudTrail</td>

104 <td>Rôles IAM, journaux d'audit cloud</td>

105 <td>Politiques RBAC, Azure Monitor</td>

106 </tr>

107 </tbody>

108</table>

109 

110Sélectionnez une option de déploiement pour afficher les instructions de configuration :

111 

112* [Claude for Teams ou Enterprise](/fr/authentication#claude-for-teams-or-enterprise)

113* [Anthropic Console](/fr/authentication#claude-console-authentication)

114* [Amazon Bedrock](/fr/amazon-bedrock)

115* [Google Vertex AI](/fr/google-vertex-ai)

116* [Microsoft Foundry](/fr/microsoft-foundry)

117 

118## Configurer les proxies et les passerelles

119 

120La plupart des organisations peuvent utiliser un fournisseur de cloud directement sans configuration supplémentaire. Cependant, vous devrez peut-être configurer un proxy d'entreprise ou une passerelle LLM si votre organisation a des exigences réseau ou de gestion spécifiques. Il s'agit de configurations différentes qui peuvent être utilisées ensemble :

121 

122* **Proxy d'entreprise** : Achemine le trafic via un proxy HTTP/HTTPS. Utilisez ceci si votre organisation exige que tout le trafic sortant passe par un serveur proxy pour la surveillance de la sécurité, la conformité ou l'application des politiques réseau. Configurez avec les variables d'environnement `HTTPS_PROXY` ou `HTTP_PROXY`. En savoir plus dans [Configuration du réseau d'entreprise](/fr/network-config).

123* **Passerelle LLM** : Un service qui se situe entre Claude Code et le fournisseur de cloud pour gérer l'authentification et le routage. Utilisez ceci si vous avez besoin d'un suivi centralisé de l'utilisation entre les équipes, d'une limitation de débit personnalisée ou de budgets, ou d'une gestion centralisée de l'authentification. Configurez avec les variables d'environnement `ANTHROPIC_BASE_URL`, `ANTHROPIC_BEDROCK_BASE_URL` ou `ANTHROPIC_VERTEX_BASE_URL`. En savoir plus dans [Configuration de la passerelle LLM](/fr/llm-gateway).

124 

125Les exemples suivants montrent les variables d'environnement à définir dans votre shell ou profil shell (`.bashrc`, `.zshrc`). Voir [Paramètres](/fr/settings) pour d'autres méthodes de configuration.

126 

127### Amazon Bedrock

128 

129<Tabs>

130 <Tab title="Proxy d'entreprise">

131 Acheminez le trafic Bedrock via votre proxy d'entreprise en définissant les [variables d'environnement](/fr/env-vars) suivantes :

132 

133 ```bash theme={null}

134 # Enable Bedrock

135 export CLAUDE_CODE_USE_BEDROCK=1

136 export AWS_REGION=us-east-1

137 

138 # Configure corporate proxy

139 export HTTPS_PROXY='https://proxy.example.com:8080'

140 ```

141 </Tab>

142 

143 <Tab title="Passerelle LLM">

144 Acheminez le trafic Bedrock via votre passerelle LLM en définissant les [variables d'environnement](/fr/env-vars) suivantes :

145 

146 ```bash theme={null}

147 # Enable Bedrock

148 export CLAUDE_CODE_USE_BEDROCK=1

149 

150 # Configure LLM gateway

151 export ANTHROPIC_BEDROCK_BASE_URL='https://your-llm-gateway.com/bedrock'

152 export CLAUDE_CODE_SKIP_BEDROCK_AUTH=1 # If gateway handles AWS auth

153 ```

154 </Tab>

155</Tabs>

156 

157### Microsoft Foundry

158 

159<Tabs>

160 <Tab title="Proxy d'entreprise">

161 Acheminez le trafic Foundry via votre proxy d'entreprise en définissant les [variables d'environnement](/fr/env-vars) suivantes :

162 

163 ```bash theme={null}

164 # Enable Microsoft Foundry

165 export CLAUDE_CODE_USE_FOUNDRY=1

166 export ANTHROPIC_FOUNDRY_RESOURCE=your-resource

167 export ANTHROPIC_FOUNDRY_API_KEY=your-api-key # Or omit for Entra ID auth

168 

169 # Configure corporate proxy

170 export HTTPS_PROXY='https://proxy.example.com:8080'

171 ```

172 </Tab>

173 

174 <Tab title="Passerelle LLM">

175 Acheminez le trafic Foundry via votre passerelle LLM en définissant les [variables d'environnement](/fr/env-vars) suivantes :

176 

177 ```bash theme={null}

178 # Enable Microsoft Foundry

179 export CLAUDE_CODE_USE_FOUNDRY=1

180 

181 # Configure LLM gateway

182 export ANTHROPIC_FOUNDRY_BASE_URL='https://your-llm-gateway.com'

183 export CLAUDE_CODE_SKIP_FOUNDRY_AUTH=1 # If gateway handles Azure auth

184 ```

185 </Tab>

186</Tabs>

187 

188### Google Vertex AI

189 

190<Tabs>

191 <Tab title="Proxy d'entreprise">

192 Acheminez le trafic Vertex AI via votre proxy d'entreprise en définissant les [variables d'environnement](/fr/env-vars) suivantes :

193 

194 ```bash theme={null}

195 # Enable Vertex

196 export CLAUDE_CODE_USE_VERTEX=1

197 export CLOUD_ML_REGION=us-east5

198 export ANTHROPIC_VERTEX_PROJECT_ID=your-project-id

199 

200 # Configure corporate proxy

201 export HTTPS_PROXY='https://proxy.example.com:8080'

202 ```

203 </Tab>

204 

205 <Tab title="Passerelle LLM">

206 Acheminez le trafic Vertex AI via votre passerelle LLM en définissant les [variables d'environnement](/fr/env-vars) suivantes :

207 

208 ```bash theme={null}

209 # Enable Vertex

210 export CLAUDE_CODE_USE_VERTEX=1

211 

212 # Configure LLM gateway

213 export ANTHROPIC_VERTEX_BASE_URL='https://your-llm-gateway.com/vertex'

214 export CLAUDE_CODE_SKIP_VERTEX_AUTH=1 # If gateway handles GCP auth

215 ```

216 </Tab>

217</Tabs>

218 

219<Tip>

220 Utilisez `/status` dans Claude Code pour vérifier que votre configuration de proxy et de passerelle est appliquée correctement.

221</Tip>

222 

223## Meilleures pratiques pour les organisations

224 

225### Investir dans la documentation et la mémoire

226 

227Nous recommandons vivement d'investir dans la documentation afin que Claude Code comprenne votre base de code. Les organisations peuvent déployer des fichiers CLAUDE.md à plusieurs niveaux :

228 

229* **À l'échelle de l'organisation** : Déployez dans des répertoires système comme `/Library/Application Support/ClaudeCode/CLAUDE.md` (macOS) pour les normes à l'échelle de l'entreprise

230* **Au niveau du référentiel** : Créez des fichiers `CLAUDE.md` dans les racines de référentiel contenant l'architecture du projet, les commandes de compilation et les directives de contribution. Vérifiez-les dans le contrôle de source afin que tous les utilisateurs en bénéficient

231 

232En savoir plus dans [Mémoire et fichiers CLAUDE.md](/fr/memory).

233 

234### Simplifier le déploiement

235 

236Si vous avez un environnement de développement personnalisé, nous constatons que créer un moyen « en un clic » d'installer Claude Code est essentiel pour augmenter l'adoption dans une organisation.

237 

238### Commencer par une utilisation guidée

239 

240Encouragez les nouveaux utilisateurs à essayer Claude Code pour les questions sur la base de code, ou sur les corrections de bogues plus petites ou les demandes de fonctionnalités. Demandez à Claude Code de faire un plan. Vérifiez les suggestions de Claude et donnez des commentaires si c'est hors piste. Au fil du temps, à mesure que les utilisateurs comprendront mieux ce nouveau paradigme, ils seront plus efficaces pour laisser Claude Code fonctionner de manière plus agentique.

241 

242### Épingler les versions de modèle pour les fournisseurs de cloud

243 

244Si vous déployez via [Bedrock](/fr/amazon-bedrock), [Vertex AI](/fr/google-vertex-ai) ou [Foundry](/fr/microsoft-foundry), épinglez les versions de modèle spécifiques en utilisant `ANTHROPIC_DEFAULT_OPUS_MODEL`, `ANTHROPIC_DEFAULT_SONNET_MODEL` et `ANTHROPIC_DEFAULT_HAIKU_MODEL`. Sans épinglage, les alias Claude Code se résolvent à la dernière version, ce qui peut casser les utilisateurs lorsqu'Anthropic publie un nouveau modèle qui n'est pas encore activé dans votre compte. Voir [Configuration du modèle](/fr/model-config#pin-models-for-third-party-deployments) pour plus de détails.

245 

246### Configurer les politiques de sécurité

247 

248Les équipes de sécurité peuvent configurer des autorisations gérées pour ce que Claude Code est et n'est pas autorisé à faire, ce qui ne peut pas être remplacé par la configuration locale. [En savoir plus](/fr/security).

249 

250### Tirer parti de MCP pour les intégrations

251 

252MCP est un excellent moyen de donner à Claude Code plus d'informations, comme la connexion à des systèmes de gestion de tickets ou des journaux d'erreurs. Nous recommandons qu'une équipe centrale configure les serveurs MCP et vérifie une configuration `.mcp.json` dans la base de code afin que tous les utilisateurs en bénéficient. [En savoir plus](/fr/mcp).

253 

254Chez Anthropic, nous faisons confiance à Claude Code pour alimenter le développement dans chaque base de code Anthropic. Nous espérons que vous apprécierez d'utiliser Claude Code autant que nous.

255 

256## Étapes suivantes

257 

258Une fois que vous avez choisi une option de déploiement et configuré l'accès pour votre équipe :

259 

2601. **Déployer auprès de votre équipe** : Partagez les instructions d'installation et demandez aux membres de l'équipe d'[installer Claude Code](/fr/setup) et de s'authentifier avec leurs identifiants.

2612. **Configurer la configuration partagée** : Créez un [fichier CLAUDE.md](/fr/memory) dans vos référentiels pour aider Claude Code à comprendre votre base de code et vos normes de codage.

2623. **Configurer les autorisations** : Consultez les [paramètres de sécurité](/fr/security) pour définir ce que Claude Code peut et ne peut pas faire dans votre environnement.

tools-reference.md +148 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Référence des outils

6 

7> Référence complète des outils que Claude Code peut utiliser, y compris les exigences de permission.

8 

9Claude Code a accès à un ensemble d'outils intégrés qui l'aident à comprendre et modifier votre base de code. Les noms d'outils sont les chaînes exactes que vous utilisez dans les [règles de permission spécifiques aux outils](/fr/permissions#tool-specific-permission-rules), les [listes d'outils subagent](/fr/sub-agents), et les [correspondances de hook](/fr/hooks). Pour désactiver complètement un outil, ajoutez son nom au tableau `deny` dans vos [paramètres de permission](/fr/permissions#tool-specific-permission-rules).

10 

11Pour ajouter des outils personnalisés, connectez un [serveur MCP](/fr/mcp). Pour étendre Claude avec des flux de travail réutilisables basés sur des invites, écrivez une [skill](/fr/skills), qui s'exécute via l'outil `Skill` existant plutôt que d'ajouter une nouvelle entrée d'outil.

12 

13| Outil | Description | Permission requise |

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

15| `Agent` | Crée un [subagent](/fr/sub-agents) avec sa propre fenêtre de contexte pour gérer une tâche | Non |

16| `AskUserQuestion` | Pose des questions à choix multiples pour recueillir les exigences ou clarifier l'ambiguïté | Non |

17| `Bash` | Exécute des commandes shell dans votre environnement. Voir [comportement de l'outil Bash](#bash-tool-behavior) | Oui |

18| `CronCreate` | Planifie une invite récurrente ou ponctuelle dans la session actuelle. Les tâches sont limitées à la session et restaurées sur `--resume` ou `--continue` si non expirées. Voir [tâches planifiées](/fr/scheduled-tasks) | Non |

19| `CronDelete` | Annule une tâche planifiée par ID | Non |

20| `CronList` | Liste toutes les tâches planifiées dans la session | Non |

21| `Edit` | Effectue des modifications ciblées sur des fichiers spécifiques | Oui |

22| `EnterPlanMode` | Bascule en mode plan pour concevoir une approche avant de coder | Non |

23| `EnterWorktree` | Crée un [git worktree](/fr/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees) isolé et y bascule. Passez un `path` pour basculer dans un worktree existant du référentiel actuel au lieu d'en créer un nouveau. Non disponible pour les subagents | Non |

24| `ExitPlanMode` | Présente un plan pour approbation et quitte le mode plan | Oui |

25| `ExitWorktree` | Quitte une session worktree et revient au répertoire d'origine. Non disponible pour les subagents | Non |

26| `Glob` | Trouve des fichiers en fonction de la correspondance de motifs | Non |

27| `Grep` | Recherche des motifs dans le contenu des fichiers | Non |

28| `ListMcpResourcesTool` | Liste les ressources exposées par les [serveurs MCP](/fr/mcp) connectés | Non |

29| `LSP` | Intelligence du code via les serveurs de langage : accéder aux définitions, trouver les références, signaler les erreurs de type et les avertissements. Voir [comportement de l'outil LSP](#lsp-tool-behavior) | Non |

30| `Monitor` | Exécute une commande en arrière-plan et renvoie chaque ligne de sortie à Claude, afin qu'il puisse réagir aux entrées de journal, aux modifications de fichiers, ou au statut interrogé en milieu de conversation. Voir [outil Monitor](#monitor-tool) | Oui |

31| `NotebookEdit` | Modifie les cellules de notebook Jupyter | Oui |

32| `PowerShell` | Exécute des commandes PowerShell nativement. Voir [outil PowerShell](#powershell-tool) pour la disponibilité | Oui |

33| `Read` | Lit le contenu des fichiers | Non |

34| `ReadMcpResourceTool` | Lit une ressource MCP spécifique par URI | Non |

35| `SendMessage` | Envoie un message à un coéquipier de l'[équipe d'agents](/fr/agent-teams), ou [reprend un subagent](/fr/sub-agents#resume-subagents) par son ID d'agent. Les subagents arrêtés se reprennent automatiquement en arrière-plan. Disponible uniquement quand `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` est défini | Non |

36| `Skill` | Exécute une [skill](/fr/skills#control-who-invokes-a-skill) dans la conversation principale | Oui |

37| `TaskCreate` | Crée une nouvelle tâche dans la liste des tâches | Non |

38| `TaskGet` | Récupère les détails complets d'une tâche spécifique | Non |

39| `TaskList` | Liste toutes les tâches avec leur statut actuel | Non |

40| `TaskOutput` | (Obsolète) Récupère la sortie d'une tâche en arrière-plan. Préférez `Read` sur le chemin du fichier de sortie de la tâche | Non |

41| `TaskStop` | Arrête une tâche en arrière-plan en cours d'exécution par ID | Non |

42| `TaskUpdate` | Met à jour le statut de la tâche, les dépendances, les détails, ou supprime les tâches | Non |

43| `TeamCreate` | Crée une [équipe d'agents](/fr/agent-teams) avec plusieurs coéquipiers. Disponible uniquement quand `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` est défini | Non |

44| `TeamDelete` | Dissout une équipe d'agents et nettoie les processus des coéquipiers. Disponible uniquement quand `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` est défini | Non |

45| `TodoWrite` | Gère la liste de contrôle des tâches de la session. Disponible en mode non interactif et dans le [SDK Agent](/fr/headless) ; les sessions interactives utilisent TaskCreate, TaskGet, TaskList et TaskUpdate à la place | Non |

46| `ToolSearch` | Recherche et charge les outils différés quand la [recherche d'outils](/fr/mcp#scale-with-mcp-tool-search) est activée | Non |

47| `WebFetch` | Récupère le contenu d'une URL spécifiée | Oui |

48| `WebSearch` | Effectue des recherches web | Oui |

49| `Write` | Crée ou remplace des fichiers | Oui |

50 

51Les règles de permission peuvent être configurées en utilisant `/permissions` ou dans les [paramètres de permission](/fr/settings#available-settings). Voir aussi [Règles de permission spécifiques aux outils](/fr/permissions#tool-specific-permission-rules).

52 

53## Comportement de l'outil Bash

54 

55L'outil Bash exécute chaque commande dans un processus séparé avec le comportement de persistance suivant :

56 

57* Quand Claude exécute `cd` dans la session principale, le nouveau répertoire de travail persiste dans les commandes Bash ultérieures tant qu'il reste à l'intérieur du répertoire du projet ou d'un [répertoire de travail supplémentaire](/fr/permissions#working-directories) que vous avez ajouté avec `--add-dir`, `/add-dir`, ou `additionalDirectories` dans les paramètres. Les sessions subagent ne reportent jamais les modifications de répertoire de travail.

58 * Si `cd` aboutit en dehors de ces répertoires, Claude Code réinitialise au répertoire du projet et ajoute `Shell cwd was reset to <dir>` au résultat de l'outil.

59 * Pour désactiver ce report afin que chaque commande Bash démarre dans le répertoire du projet, définissez `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`.

60* Les variables d'environnement ne persistent pas. Un `export` dans une commande ne sera pas disponible dans la suivante.

61 

62Activez votre environnement virtualenv ou conda avant de lancer Claude Code. Pour que les variables d'environnement persistent entre les commandes Bash, définissez [`CLAUDE_ENV_FILE`](/fr/env-vars) sur un script shell avant de lancer Claude Code, ou utilisez un [hook SessionStart](/fr/hooks#persist-environment-variables) pour le remplir dynamiquement.

63 

64## Comportement de l'outil LSP

65 

66L'outil LSP donne à Claude l'intelligence du code à partir d'un serveur de langage en cours d'exécution. Après chaque modification de fichier, il signale automatiquement les erreurs de type et les avertissements afin que Claude puisse corriger les problèmes sans une étape de compilation séparée. Claude peut également l'appeler directement pour naviguer dans le code :

67 

68* Accéder à la définition d'un symbole

69* Trouver toutes les références à un symbole

70* Obtenir les informations de type à une position

71* Lister les symboles dans un fichier ou un espace de travail

72* Trouver les implémentations d'une interface

73* Tracer les hiérarchies d'appels

74 

75L'outil est inactif jusqu'à ce que vous installiez un [plugin d'intelligence du code](/fr/discover-plugins#code-intelligence) pour votre langage. Le plugin regroupe la configuration du serveur de langage, et vous installez le binaire du serveur séparément.

76 

77## Outil Monitor

78 

79<Note>

80 L'outil Monitor nécessite Claude Code v2.1.98 ou version ultérieure.

81</Note>

82 

83L'outil Monitor permet à Claude de surveiller quelque chose en arrière-plan et de réagir quand cela change, sans mettre en pause la conversation. Demandez à Claude de :

84 

85* Suivre un fichier journal et signaler les erreurs au fur et à mesure qu'elles apparaissent

86* Interroger une PR ou un travail CI et signaler quand son statut change

87* Surveiller un répertoire pour les modifications de fichiers

88* Suivre la sortie de tout script de longue durée que vous lui pointez

89 

90Claude écrit un petit script pour la surveillance, l'exécute en arrière-plan, et reçoit chaque ligne de sortie à son arrivée. Vous continuez à travailler dans la même session et Claude intervient quand un événement arrive. Arrêtez une surveillance en demandant à Claude de l'annuler ou en terminant la session.

91 

92Monitor utilise les mêmes [règles de permission que Bash](/fr/permissions#tool-specific-permission-rules), donc les motifs `allow` et `deny` que vous avez définis pour Bash s'appliquent ici aussi. Il n'est pas disponible sur Amazon Bedrock, Google Vertex AI, ou Microsoft Foundry. Il n'est également pas disponible quand `DISABLE_TELEMETRY` ou `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` est défini.

93 

94Les plugins peuvent déclarer des moniteurs qui démarrent automatiquement quand le plugin est actif, au lieu de demander à Claude de les démarrer. Voir [moniteurs de plugin](/fr/plugins-reference#monitors).

95 

96## Outil PowerShell

97 

98L'outil PowerShell permet à Claude d'exécuter des commandes PowerShell nativement. Sur Windows, cela signifie que les commandes s'exécutent dans PowerShell au lieu d'être acheminées via Git Bash. Sur Windows sans Git Bash, l'outil est activé automatiquement. Sur Windows avec Git Bash installé, l'outil est en déploiement progressif. Sur Linux, macOS et WSL, l'outil est opt-in.

99 

100### Activer l'outil PowerShell

101 

102Définissez `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` dans votre environnement ou dans `settings.json` :

103 

104```json theme={null}

105{

106 "env": {

107 "CLAUDE_CODE_USE_POWERSHELL_TOOL": "1"

108 }

109}

110```

111 

112Sur Windows, définissez la variable à `0` pour refuser le déploiement. Sur Linux, macOS et WSL, l'outil nécessite PowerShell 7 ou version ultérieure : installez `pwsh` et assurez-vous qu'il est sur votre `PATH`.

113 

114Sur Windows, Claude Code détecte automatiquement `pwsh.exe` pour PowerShell 7+ avec un repli sur `powershell.exe` pour PowerShell 5.1. Lorsque l'outil est activé, Claude traite PowerShell comme le shell principal. L'outil Bash reste disponible pour les scripts POSIX lorsque Git Bash est installé.

115 

116### Sélection du shell dans les paramètres, les hooks et les skills

117 

118Trois paramètres supplémentaires contrôlent où PowerShell est utilisé :

119 

120* `"defaultShell": "powershell"` dans [`settings.json`](/fr/settings#available-settings) : achemine les commandes interactives `!` via PowerShell. Nécessite que l'outil PowerShell soit activé.

121* `"shell": "powershell"` sur les [hooks de commande](/fr/hooks#command-hook-fields) individuels : exécute ce hook dans PowerShell. Les hooks lancent PowerShell directement, donc cela fonctionne indépendamment de `CLAUDE_CODE_USE_POWERSHELL_TOOL`.

122* `shell: powershell` dans le [frontmatter de skill](/fr/skills#frontmatter-reference) : exécute les blocs `` !`command` `` dans PowerShell. Nécessite que l'outil PowerShell soit activé.

123 

124Le même comportement de réinitialisation du répertoire de travail de la session principale décrit dans la section de l'outil Bash s'applique aux commandes PowerShell, y compris la variable d'environnement `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR`.

125 

126### Limitations de l'aperçu

127 

128L'outil PowerShell a les limitations connues suivantes pendant l'aperçu :

129 

130* Les profils PowerShell ne sont pas chargés

131* Sur Windows, le sandboxing n'est pas pris en charge

132 

133## Vérifier quels outils sont disponibles

134 

135Votre ensemble d'outils exact dépend de votre fournisseur, de votre plateforme et de vos paramètres. Pour vérifier ce qui est chargé dans une session en cours d'exécution, demandez directement à Claude :

136 

137```text theme={null}

138What tools do you have access to?

139```

140 

141Claude donne un résumé conversationnel. Pour les noms d'outils MCP exacts, exécutez `/mcp`.

142 

143## Voir aussi

144 

145* [Serveurs MCP](/fr/mcp) : ajouter des outils personnalisés en connectant des serveurs externes

146* [Permissions](/fr/permissions) : système de permission, syntaxe des règles, et motifs spécifiques aux outils

147* [Subagents](/fr/sub-agents) : configurer l'accès aux outils pour les subagents

148* [Hooks](/fr/hooks-guide) : exécuter des commandes personnalisées avant ou après l'exécution des outils

troubleshoot-install.md +803 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Dépanner l'installation et la connexion

6 

7> Corrigez les erreurs de commande introuvable, PATH, permission, réseau et authentification lors de l'installation ou de la connexion à Claude Code.

8 

9Si l'installation échoue ou que vous ne pouvez pas vous connecter, trouvez votre erreur ci-dessous. Pour les problèmes d'exécution après que Claude Code fonctionne, consultez [Dépannage](/fr/troubleshooting). Pour les problèmes de configuration tels que les paramètres qui ne s'appliquent pas ou les hooks qui ne se déclenchent pas, consultez [Déboguer votre configuration](/fr/debug-your-config).

10 

11## Trouvez votre erreur

12 

13Faites correspondre le message d'erreur ou le symptôme que vous voyez à une solution :

14 

15| Ce que vous voyez | Solution |

16| :--------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------ |

17| `command not found: claude` ou `'claude' is not recognized` | [Corrigez votre PATH](#command-not-found-claude-after-installation) |

18| `syntax error near unexpected token '<'` | [Le script d'installation retourne du HTML](#install-script-returns-html-instead-of-a-shell-script) |

19| `curl: (56) Failure writing output to destination` | [Vérifiez la connectivité ou utilisez un programme d'installation alternatif](#curl-56-failure-writing-output-to-destination) |

20| `Killed` pendant l'installation sur Linux | [Ajoutez de l'espace d'échange pour les serveurs à faible mémoire](#install-killed-on-low-memory-linux-servers) |

21| `TLS connect error` ou `SSL/TLS secure channel` | [Mettez à jour les certificats CA](#tls-or-ssl-connection-errors) |

22| `Failed to fetch version` ou impossible d'atteindre le serveur de téléchargement | [Vérifiez les paramètres réseau et proxy](#check-network-connectivity) |

23| `irm is not recognized` ou `&& is not valid` | [Utilisez la bonne commande pour votre shell](#wrong-install-command-on-windows) |

24| `'bash' is not recognized as the name of a cmdlet` | [Utilisez la commande du programme d'installation Windows](#wrong-install-command-on-windows) |

25| `Claude Code on Windows requires either Git for Windows (for bash) or PowerShell` | [Installez un shell](#claude-code-on-windows-requires-either-git-for-windows-for-bash-or-powershell) |

26| `Claude Code does not support 32-bit Windows` | [Ouvrez Windows PowerShell, pas l'entrée x86](#claude-code-does-not-support-32-bit-windows) |

27| `The process cannot access the file ... because it is being used by another process` | [Videz le dossier des téléchargements et réessayez](#the-process-cannot-access-the-file-during-windows-install) |

28| `Error loading shared library` | [Mauvaise variante binaire pour votre système](#linux-musl-or-glibc-binary-mismatch) |

29| `Illegal instruction` | [Incompatibilité d'architecture ou d'ensemble d'instructions CPU](#illegal-instruction) |

30| `cannot execute binary file: Exec format error` dans WSL | [Régression binaire native WSL1](#exec-format-error-on-wsl1) |

31| Le programme d'installation PowerShell se termine mais `claude` n'est pas trouvé ou affiche une ancienne version | [Redémarrez votre terminal et vérifiez PATH](#verify-your-path) |

32| `dyld: cannot load`, `dyld: Symbol not found`, ou `Abort trap` sur macOS | [Incompatibilité binaire](#dyld-cannot-load-on-macos) |

33| `Invoke-Expression: Missing argument in parameter list` | [Le script d'installation retourne du HTML](#install-script-returns-html-instead-of-a-shell-script) |

34| `App unavailable in region` | Claude Code n'est pas disponible dans votre pays. Consultez [les pays pris en charge](https://www.anthropic.com/supported-countries). |

35| `unable to get local issuer certificate` | [Configurez les certificats CA d'entreprise](#tls-or-ssl-connection-errors) |

36| `OAuth error` ou `403 Forbidden` | [Corrigez l'authentification](#login-and-authentication) |

37| `Could not load the default credentials` ou `Could not load credentials from any providers` | [Identifiants Bedrock, Vertex ou Foundry](#bedrock-vertex-or-foundry-credentials-not-loading) |

38| `ChainedTokenCredential authentication failed` ou `CredentialUnavailableError` | [Identifiants Bedrock, Vertex ou Foundry](#bedrock-vertex-or-foundry-credentials-not-loading) |

39| `API Error: 500`, `529 Overloaded`, `429`, ou autres erreurs 4xx et 5xx non listées ci-dessus | Consultez la [Référence des erreurs](/fr/errors) |

40 

41Si votre problème n'est pas listé, travaillez à travers les vérifications de diagnostic ci-dessous pour affiner la cause.

42 

43<Tip>

44 Si vous préférez ignorer complètement le terminal, l'[application Claude Code Desktop](/fr/desktop-quickstart) vous permet d'installer et d'utiliser Claude Code via une interface graphique. Téléchargez-la pour [macOS](https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code\&utm_medium=docs) ou [Windows](https://claude.com/download?utm_source=claude_code\&utm_medium=docs) et commencez à coder sans aucune configuration en ligne de commande.

45</Tip>

46 

47## Exécutez les vérifications de diagnostic

48 

49### Vérifiez la connectivité réseau

50 

51Le programme d'installation télécharge depuis `downloads.claude.ai`. Vérifiez que vous pouvez l'atteindre :

52 

53```bash theme={null}

54curl -sI https://downloads.claude.ai/claude-code-releases/latest

55```

56 

57Une ligne `HTTP/2 200` signifie que vous avez atteint le serveur. Si vous ne voyez aucune sortie, `Could not resolve host`, ou un délai d'expiration de connexion, votre réseau bloque la connexion. Les causes courantes incluent :

58 

59* Les pare-feu d'entreprise ou les proxies bloquant `downloads.claude.ai`

60* Les restrictions réseau régionales : essayez un VPN ou un réseau alternatif

61* Les problèmes TLS/SSL : mettez à jour les certificats CA de votre système, ou vérifiez si `HTTPS_PROXY` est configuré

62 

63Si vous êtes derrière un proxy d'entreprise, définissez `HTTPS_PROXY` et `HTTP_PROXY` à l'adresse de votre proxy avant d'installer. Demandez à votre équipe informatique l'URL du proxy si vous ne la connaissez pas, ou vérifiez les paramètres proxy de votre navigateur.

64 

65Cet exemple définit les deux variables de proxy, puis exécute le programme d'installation via votre proxy :

66 

67<Tabs>

68 <Tab title="macOS/Linux">

69 ```bash theme={null}

70 export HTTP_PROXY=http://proxy.example.com:8080

71 export HTTPS_PROXY=http://proxy.example.com:8080

72 curl -fsSL https://claude.ai/install.sh | bash

73 ```

74 </Tab>

75 

76 <Tab title="Windows PowerShell">

77 ```powershell theme={null}

78 $env:HTTP_PROXY = 'http://proxy.example.com:8080'

79 $env:HTTPS_PROXY = 'http://proxy.example.com:8080'

80 irm https://claude.ai/install.ps1 | iex

81 ```

82 </Tab>

83</Tabs>

84 

85### Vérifiez votre PATH

86 

87Si l'installation a réussi mais que vous obtenez une erreur `command not found` ou `not recognized` lors de l'exécution de `claude`, le répertoire d'installation n'est pas dans votre PATH. Votre shell recherche les programmes dans les répertoires listés dans PATH, et le programme d'installation place `claude` à `~/.local/bin/claude` sur macOS/Linux ou `%USERPROFILE%\.local\bin\claude.exe` sur Windows.

88 

89Vérifiez si le répertoire d'installation est dans votre PATH en listant vos entrées PATH et en filtrant pour `local/bin` :

90 

91<Tabs>

92 <Tab title="macOS/Linux">

93 ```bash theme={null}

94 echo $PATH | tr ':' '\n' | grep -Fx "$HOME/.local/bin"

95 ```

96 

97 Si cela affiche `/Users/you/.local/bin` ou `/home/you/.local/bin`, le répertoire est dans votre PATH et vous pouvez passer à [Vérifiez les installations en conflit](#check-for-conflicting-installations). S'il n'y a pas de sortie, ajoutez-le à votre configuration shell.

98 

99 Pour Zsh, la valeur par défaut sur macOS :

100 

101 ```bash theme={null}

102 echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc

103 source ~/.zshrc

104 ```

105 

106 Pour Bash, la valeur par défaut sur la plupart des distributions Linux :

107 

108 ```bash theme={null}

109 echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc

110 source ~/.bashrc

111 ```

112 

113 Alternativement, fermez et rouvrez votre terminal.

114 

115 Pour les autres shells tels que fish ou Nushell, ajoutez `~/.local/bin` à votre PATH en utilisant la syntaxe de configuration propre à votre shell, puis redémarrez votre terminal.

116 

117 Vérifiez que la correction a fonctionné :

118 

119 ```bash theme={null}

120 claude --version

121 ```

122 </Tab>

123 

124 <Tab title="Windows PowerShell">

125 ```powershell theme={null}

126 $env:PATH -split ';' | Select-String '\.local\\bin'

127 ```

128 

129 S'il n'y a pas de sortie, ajoutez le répertoire d'installation à votre PATH utilisateur :

130 

131 ```powershell theme={null}

132 $currentPath = [Environment]::GetEnvironmentVariable('PATH', 'User')

133 [Environment]::SetEnvironmentVariable('PATH', "$currentPath;$env:USERPROFILE\.local\bin", 'User')

134 ```

135 

136 Redémarrez votre terminal pour que la modification prenne effet.

137 

138 Vérifiez que la correction a fonctionné :

139 

140 ```powershell theme={null}

141 claude --version

142 ```

143 </Tab>

144 

145 <Tab title="Windows CMD">

146 ```batch theme={null}

147 echo %PATH% | findstr /i "local\bin"

148 ```

149 

150 S'il n'y a pas de sortie, ouvrez Paramètres système, allez à Variables d'environnement, et ajoutez `%USERPROFILE%\.local\bin` à votre variable PATH utilisateur. Redémarrez votre terminal.

151 

152 Vérifiez que la correction a fonctionné :

153 

154 ```batch theme={null}

155 claude --version

156 ```

157 </Tab>

158</Tabs>

159 

160### Vérifiez les installations en conflit

161 

162Plusieurs installations de Claude Code peuvent causer des incompatibilités de version ou un comportement inattendu. Vérifiez ce qui est installé :

163 

164<Tabs>

165 <Tab title="macOS/Linux">

166 Listez tous les binaires `claude` trouvés dans votre PATH :

167 

168 ```bash theme={null}

169 which -a claude

170 ```

171 

172 Si cela n'affiche rien, aucun `claude` n'est encore sur votre PATH. Retournez à [Vérifiez votre PATH](#verify-your-path).

173 

174 Vérifiez les trois emplacements d'où un binaire `claude` peut provenir. `~/.local/bin/claude` est le programme d'installation natif, `~/.claude/local/` est une installation npm locale héritée créée par les anciennes versions de Claude Code, et la liste npm globale affiche une installation `-g` :

175 

176 ```bash theme={null}

177 ls -la ~/.local/bin/claude

178 ```

179 

180 ```bash theme={null}

181 ls -la ~/.claude/local/

182 ```

183 

184 ```bash theme={null}

185 npm -g ls @anthropic-ai/claude-code 2>/dev/null

186 ```

187 </Tab>

188 

189 <Tab title="Windows PowerShell">

190 Listez tous les binaires `claude` trouvés dans votre PATH :

191 

192 ```powershell theme={null}

193 where.exe claude

194 ```

195 

196 Vérifiez si le programme d'installation natif a placé un binaire :

197 

198 ```powershell theme={null}

199 Test-Path "$env:USERPROFILE\.local\bin\claude.exe"

200 ```

201 </Tab>

202</Tabs>

203 

204Si vous trouvez plusieurs installations, conservez-en une seule. L'installation native à `~/.local/bin/claude` sur macOS/Linux ou `%USERPROFILE%\.local\bin\claude.exe` sur Windows est recommandée. Supprimez les extras :

205 

206Désinstallez une installation npm globale :

207 

208```bash theme={null}

209npm uninstall -g @anthropic-ai/claude-code

210```

211 

212Supprimez l'installation npm locale héritée :

213 

214```bash theme={null}

215rm -rf ~/.claude/local

216```

217 

218Sur Windows, utilisez PowerShell :

219 

220```powershell theme={null}

221Remove-Item -Recurse -Force "$env:USERPROFILE\.claude\local"

222```

223 

224Supprimez une installation Homebrew sur macOS. Si vous avez installé le cask `claude-code@latest`, remplacez ce nom :

225 

226```bash theme={null}

227brew uninstall --cask claude-code

228```

229 

230Supprimez une installation WinGet sur Windows :

231 

232```powershell theme={null}

233winget uninstall Anthropic.ClaudeCode

234```

235 

236### Vérifiez les permissions des répertoires

237 

238Le programme d'installation a besoin d'accès en écriture à `~/.local/bin/` et `~/.claude/` sur macOS et Linux. Sur Windows, l'emplacement d'installation est sous `%USERPROFILE%`, qui est accessible en écriture par votre utilisateur par défaut, donc cette section s'applique rarement là.

239 

240Vérifiez si les répertoires sont accessibles en écriture :

241 

242```bash theme={null}

243test -w ~/.local/bin && echo "writable" || echo "not writable"

244test -w ~/.claude && echo "writable" || echo "not writable"

245```

246 

247Si l'un des répertoires n'est pas accessible en écriture, créez le répertoire d'installation et définissez votre utilisateur comme propriétaire :

248 

249```bash theme={null}

250sudo mkdir -p ~/.local/bin

251sudo chown -R $(whoami) ~/.local

252```

253 

254### Vérifiez que le binaire fonctionne

255 

256Si `claude --version` affiche une version mais que `claude` plante ou se fige au démarrage, exécutez ces vérifications pour affiner la cause. Si `claude --version` dit commande introuvable, allez d'abord à [Vérifiez votre PATH](#verify-your-path) ; les commandes ci-dessous supposent que `claude` est sur votre PATH.

257 

258Confirmez que le binaire existe et est exécutable :

259 

260```bash theme={null}

261ls -la "$(command -v claude)"

262```

263 

264Sur Windows, utilisez PowerShell :

265 

266```powershell theme={null}

267Get-Command claude | Select-Object Source

268```

269 

270Sur Linux, vérifiez les bibliothèques partagées manquantes. Si `ldd` affiche des bibliothèques manquantes, vous devrez peut-être installer des paquets système. Sur Alpine Linux et autres distributions basées sur musl, consultez [Configuration Alpine Linux](/fr/setup#alpine-linux-and-musl-based-distributions).

271 

272```bash theme={null}

273ldd "$(command -v claude)" | grep "not found"

274```

275 

276Confirmez que le binaire peut s'exécuter :

277 

278```bash theme={null}

279claude --version

280```

281 

282## Problèmes d'installation courants

283 

284Ce sont les problèmes d'installation les plus fréquemment rencontrés et leurs solutions.

285 

286### Le script d'installation retourne du HTML au lieu d'un script shell

287 

288Lors de l'exécution de la commande d'installation, vous pouvez voir l'une de ces erreurs :

289 

290```text theme={null}

291bash: line 1: syntax error near unexpected token `<'

292bash: line 1: `<!DOCTYPE html>'

293```

294 

295Sur PowerShell, le même problème apparaît comme :

296 

297```text theme={null}

298Invoke-Expression: Missing argument in parameter list.

299```

300 

301Cela signifie que l'URL d'installation a retourné une page HTML au lieu du script d'installation. Si la page HTML dit « App unavailable in region », Claude Code n'est pas disponible dans votre pays. Consultez [les pays pris en charge](https://www.anthropic.com/supported-countries).

302 

303Sinon, cela peut se produire en raison de problèmes réseau, de routage régional ou d'une interruption de service temporaire.

304 

305**Solutions :**

306 

3071. **Utilisez une méthode d'installation alternative** :

308 

309 Sur macOS, installez via Homebrew :

310 

311 ```bash theme={null}

312 brew install --cask claude-code

313 ```

314 

315 Sur Windows, installez via WinGet :

316 

317 ```powershell theme={null}

318 winget install Anthropic.ClaudeCode

319 ```

320 

3212. **Réessayez après quelques minutes** : le problème est souvent temporaire. Attendez et réessayez la commande d'origine.

322 

323### `command not found: claude` après l'installation

324 

325L'installation s'est terminée mais `claude` ne fonctionne pas. L'erreur exacte varie selon la plateforme :

326 

327| Plateforme | Message d'erreur |

328| :---------- | :--------------------------------------------------------------------- |

329| macOS | `zsh: command not found: claude` |

330| Linux | `bash: claude: command not found` |

331| Windows CMD | `'claude' is not recognized as an internal or external command` |

332| PowerShell | `claude : The term 'claude' is not recognized as the name of a cmdlet` |

333 

334Cela signifie que le répertoire d'installation n'est pas dans le chemin de recherche de votre shell. Consultez [Vérifiez votre PATH](#verify-your-path) pour la correction sur chaque plateforme.

335 

336### `curl: (56) Failure writing output to destination`

337 

338La commande `curl ... | bash` télécharge le script et le transmet à Bash pour exécution. Cette erreur signifie que la connexion s'est interrompue avant que le script ne soit complètement téléchargé. Les causes courantes incluent les interruptions réseau, le téléchargement bloqué en cours de flux, ou les limites de ressources système.

339 

340**Solutions :**

341 

3421. **Vérifiez la stabilité du réseau** : les binaires Claude Code sont hébergés sur `downloads.claude.ai`. Testez que vous pouvez l'atteindre :

343 ```bash theme={null}

344 curl -sI https://downloads.claude.ai/claude-code-releases/latest

345 ```

346 Une ligne `HTTP/2 200` signifie que vous avez atteint le serveur et l'échec d'origine était probablement intermittent ; réessayez la commande d'installation. Si vous voyez `Could not resolve host` ou un délai d'expiration de connexion, votre réseau bloque le téléchargement.

347 

3482. **Essayez une méthode d'installation alternative** :

349 

350 Sur macOS :

351 

352 ```bash theme={null}

353 brew install --cask claude-code

354 ```

355 

356 Sur Windows :

357 

358 ```powershell theme={null}

359 winget install Anthropic.ClaudeCode

360 ```

361 

362### Erreurs de connexion TLS ou SSL

363 

364Les erreurs comme `curl: (35) TLS connect error`, `schannel: next InitializeSecurityContext failed`, ou le `Could not establish trust relationship for the SSL/TLS secure channel` de PowerShell indiquent des échecs de négociation TLS.

365 

366**Solutions :**

367 

3681. **Mettez à jour vos certificats CA système** :

369 

370 Sur Ubuntu/Debian :

371 

372 ```bash theme={null}

373 sudo apt-get update && sudo apt-get install ca-certificates

374 ```

375 

376 Sur macOS, le curl système utilise le magasin de confiance Keychain ; la mise à jour de macOS lui-même met à jour les certificats racine.

377 

3782. **Sur Windows, activez TLS 1.2** dans PowerShell avant d'exécuter le programme d'installation :

379 ```powershell theme={null}

380 [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

381 irm https://claude.ai/install.ps1 | iex

382 ```

383 

3843. **Vérifiez l'interférence du proxy ou du pare-feu** : les proxies d'entreprise qui effectuent une inspection TLS peuvent causer ces erreurs, y compris `unable to get local issuer certificate` et `SELF_SIGNED_CERT_IN_CHAIN`. Pour l'étape d'installation, pointez curl vers votre bundle CA d'entreprise avec `--cacert` :

385 ```bash theme={null}

386 curl --cacert /path/to/corporate-ca.pem -fsSL https://claude.ai/install.sh | bash

387 ```

388 Pour Claude Code lui-même une fois installé, définissez `NODE_EXTRA_CA_CERTS` pour que les demandes API fassent confiance au même bundle :

389 ```bash theme={null}

390 export NODE_EXTRA_CA_CERTS=/path/to/corporate-ca.pem

391 ```

392 Demandez à votre équipe informatique le fichier de certificat si vous ne l'avez pas. Vous pouvez également essayer sur une connexion directe pour confirmer que le proxy est la cause.

393 

3944. **Sur Windows, contournez les vérifications de révocation de certificat** si vous voyez `CRYPT_E_NO_REVOCATION_CHECK (0x80092012)` ou `CRYPT_E_REVOCATION_OFFLINE (0x80092013)`. Ceux-ci signifient que curl a atteint le serveur mais votre réseau bloque la recherche de révocation de certificat, ce qui est courant derrière les pare-feu d'entreprise. Ajoutez `--ssl-revoke-best-effort` à la commande d'installation :

395 ```batch theme={null}

396 curl --ssl-revoke-best-effort -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

397 ```

398 Alternativement, installez avec `winget install Anthropic.ClaudeCode`, qui évite curl entièrement.

399 

400### `Failed to fetch version from downloads.claude.ai`

401 

402Le programme d'installation n'a pas pu atteindre le serveur de téléchargement. Cela signifie généralement que `downloads.claude.ai` est bloqué sur votre réseau.

403 

404**Solutions :**

405 

4061. **Testez la connectivité directement** :

407 ```bash theme={null}

408 curl -sI https://downloads.claude.ai/claude-code-releases/latest

409 ```

410 

4112. **Si derrière un proxy**, définissez `HTTPS_PROXY` pour que le programme d'installation puisse le router. Consultez [configuration du proxy](/fr/network-config#proxy-configuration) pour plus de détails.

412 ```bash theme={null}

413 export HTTPS_PROXY=http://proxy.example.com:8080

414 curl -fsSL https://claude.ai/install.sh | bash

415 ```

416 

4173. **Si sur un réseau restreint**, essayez un réseau différent ou un VPN, ou utilisez une méthode d'installation alternative :

418 

419 Sur macOS :

420 

421 ```bash theme={null}

422 brew install --cask claude-code

423 ```

424 

425 Sur Windows :

426 

427 ```powershell theme={null}

428 winget install Anthropic.ClaudeCode

429 ```

430 

431### Mauvaise commande d'installation sur Windows

432 

433Si vous voyez `'irm' is not recognized`, `The token '&&' is not valid`, ou `'bash' is not recognized as the name of a cmdlet`, vous avez copié la commande d'installation pour un shell ou un système d'exploitation différent.

434 

435* **`irm` non reconnu** : vous êtes dans CMD, pas PowerShell. Vous avez deux options :

436 

437 Ouvrez PowerShell en recherchant « PowerShell » dans le menu Démarrer, puis exécutez la commande d'installation d'origine :

438 

439 ```powershell theme={null}

440 irm https://claude.ai/install.ps1 | iex

441 ```

442 

443 Ou restez dans CMD et utilisez le programme d'installation CMD à la place :

444 

445 ```batch theme={null}

446 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

447 ```

448 

449* **`&&` non valide** : vous êtes dans PowerShell mais avez exécuté la commande du programme d'installation CMD. Utilisez le programme d'installation PowerShell :

450 ```powershell theme={null}

451 irm https://claude.ai/install.ps1 | iex

452 ```

453 

454* **`bash` non reconnu** : vous avez exécuté le programme d'installation macOS/Linux sur Windows. Utilisez le programme d'installation PowerShell à la place :

455 ```powershell theme={null}

456 irm https://claude.ai/install.ps1 | iex

457 ```

458 

459### `The process cannot access the file` pendant l'installation Windows

460 

461Si le programme d'installation PowerShell échoue avec `Failed to download binary: The process cannot access the file ... because it is being used by another process`, le programme d'installation n'a pas pu écrire dans `%USERPROFILE%\.claude\downloads`. Cela signifie généralement qu'une tentative d'installation précédente est toujours en cours d'exécution, ou que le logiciel antivirus analyse un binaire partiellement téléchargé dans ce dossier.

462 

463Fermez toutes les autres fenêtres PowerShell exécutant le programme d'installation et attendez que les analyses antivirus libèrent le fichier. Ensuite, supprimez le dossier des téléchargements et exécutez le programme d'installation à nouveau :

464 

465```powershell theme={null}

466Remove-Item -Recurse -Force "$env:USERPROFILE\.claude\downloads"

467irm https://claude.ai/install.ps1 | iex

468```

469 

470### Installation interrompue sur les serveurs Linux à faible mémoire

471 

472Si vous voyez `Killed` pendant l'installation sur un VPS ou une instance cloud :

473 

474```text theme={null}

475Setting up Claude Code...

476Installing Claude Code native build latest...

477bash: line 142: 34803 Killed "$binary_path" install ${TARGET:+"$TARGET"}

478```

479 

480Le tueur OOM Linux a terminé le processus car le système a manqué de mémoire. Claude Code nécessite au moins 4 Go de RAM disponible.

481 

482**Solutions :**

483 

4841. **Ajoutez de l'espace d'échange** si votre serveur a une RAM limitée. L'échange utilise l'espace disque comme mémoire de débordement, permettant à l'installation de se terminer même avec une RAM physique faible.

485 

486 Créez un fichier d'échange de 2 Go et activez-le :

487 

488 ```bash theme={null}

489 sudo fallocate -l 2G /swapfile

490 sudo chmod 600 /swapfile

491 sudo mkswap /swapfile

492 sudo swapon /swapfile

493 ```

494 

495 Puis réessayez l'installation :

496 

497 ```bash theme={null}

498 curl -fsSL https://claude.ai/install.sh | bash

499 ```

500 

5012. **Fermez les autres processus** pour libérer de la mémoire avant d'installer.

502 

5033. **Utilisez une instance plus grande** si possible. Claude Code nécessite au moins 4 Go de RAM.

504 

505### L'installation se fige dans Docker

506 

507Lors de l'installation de Claude Code dans un conteneur Docker, l'installation en tant que root dans `/` peut causer des blocages.

508 

509**Solutions :**

510 

5111. **Définissez un répertoire de travail** avant d'exécuter le programme d'installation. Lorsqu'il est exécuté depuis `/`, le programme d'installation analyse l'ensemble du système de fichiers, ce qui provoque une utilisation excessive de la mémoire. La définition de `WORKDIR` limite l'analyse à un petit répertoire :

512 ```dockerfile theme={null}

513 WORKDIR /tmp

514 RUN curl -fsSL https://claude.ai/install.sh | bash

515 ```

516 

5172. **Augmentez les limites de mémoire Docker** si vous utilisez Docker Desktop :

518 ```bash theme={null}

519 docker build --memory=4g .

520 ```

521 

522### Claude Desktop remplace la commande `claude` sur Windows

523 

524Si vous avez installé une version antérieure de Claude Desktop, elle peut enregistrer un `Claude.exe` dans le répertoire `WindowsApps` qui prend la priorité PATH sur Claude Code CLI. L'exécution de `claude` ouvre l'application Desktop au lieu de la CLI.

525 

526Mettez à jour Claude Desktop vers la dernière version pour corriger ce problème.

527 

528### Claude Code sur Windows nécessite Git Bash ou PowerShell

529 

530Claude Code sur Windows natif a besoin d'au moins un shell : soit [Git pour Windows](https://git-scm.com/downloads/win) pour Bash, soit PowerShell. Lorsqu'aucun n'est trouvé, cette erreur apparaît au démarrage. Si seul PowerShell est trouvé, Claude Code utilise l'outil PowerShell à la place de Bash.

531 

532**Si aucun n'est installé**, installez-en un :

533 

534* Git pour Windows : téléchargez depuis [git-scm.com/downloads/win](https://git-scm.com/downloads/win). Pendant la configuration, sélectionnez « Add to PATH ». Redémarrez votre terminal après l'installation.

535* PowerShell 7 : téléchargez depuis [aka.ms/powershell](https://aka.ms/powershell).

536 

537**Si Git est déjà installé** mais que Claude Code ne peut pas le trouver, définissez le chemin dans votre [fichier settings.json](/fr/settings) :

538 

539```json theme={null}

540{

541 "env": {

542 "CLAUDE_CODE_GIT_BASH_PATH": "C:\\Program Files\\Git\\bin\\bash.exe"

543 }

544}

545```

546 

547Si votre Git est installé ailleurs, trouvez le chemin en exécutant `where.exe git` dans PowerShell et utilisez le chemin `bin\bash.exe` de ce répertoire.

548 

549### Claude Code ne supporte pas Windows 32 bits

550 

551Windows inclut deux entrées PowerShell dans le menu Démarrer : `Windows PowerShell` et `Windows PowerShell (x86)`. L'entrée x86 s'exécute en tant que processus 32 bits et déclenche cette erreur même sur une machine 64 bits. Pour vérifier quel cas vous êtes, exécutez ceci dans la même fenêtre qui a produit l'erreur :

552 

553```powershell theme={null}

554[Environment]::Is64BitOperatingSystem

555```

556 

557Si cela affiche `True`, votre système d'exploitation est correct. Fermez la fenêtre, ouvrez `Windows PowerShell` sans le suffixe x86, et réexécutez la commande d'installation.

558 

559Si cela affiche `False`, vous êtes sur une édition 32 bits de Windows. Claude Code nécessite un système d'exploitation 64 bits. Consultez les [exigences système](/fr/setup#system-requirements).

560 

561### Incompatibilité binaire musl ou glibc Linux

562 

563Si vous voyez des erreurs concernant les bibliothèques partagées manquantes comme `libstdc++.so.6` ou `libgcc_s.so.1` après l'installation, le programme d'installation a peut-être téléchargé la mauvaise variante binaire pour votre système.

564 

565```text theme={null}

566Error loading shared library libstdc++.so.6: No such file or directory

567```

568 

569Cela peut se produire sur les systèmes basés sur glibc qui ont des paquets de compilation croisée musl installés, ce qui amène le programme d'installation à mal détecter le système comme musl.

570 

571**Solutions :**

572 

5731. **Vérifiez quelle libc votre système utilise** :

574 ```bash theme={null}

575 ldd --version 2>&1 | head -1

576 ```

577 La sortie mentionnant `GNU libc` ou `GLIBC` signifie glibc. La sortie mentionnant `musl` signifie musl.

578 

5792. **Si vous êtes sur glibc mais avez obtenu le binaire musl**, supprimez l'installation et réinstallez. Vous pouvez également télécharger manuellement le binaire correct en utilisant le manifeste à `https://downloads.claude.ai/claude-code-releases/{VERSION}/manifest.json`. Déposez un [problème GitHub](https://github.com/anthropics/claude-code/issues) avec la sortie de `ldd --version` et `ls /lib/libc.musl*`.

580 

5813. **Si vous êtes réellement sur musl**, comme Alpine Linux, installez les paquets requis :

582 ```bash theme={null}

583 apk add libgcc libstdc++ ripgrep

584 ```

585 

586### `Illegal instruction`

587 

588Si l'exécution de `claude` ou du programme d'installation affiche `Illegal instruction`, le binaire natif utilise des instructions CPU que votre processeur ne supporte pas. Il y a deux causes distinctes.

589 

590**Incompatibilité d'architecture.** Le programme d'installation a téléchargé le mauvais binaire, par exemple x86 sur un serveur ARM. Vérifiez avec `uname -m` sur macOS ou Linux, ou `$env:PROCESSOR_ARCHITECTURE` dans PowerShell. Si le résultat ne correspond pas au binaire que vous avez reçu, [déposez un problème GitHub](https://github.com/anthropics/claude-code/issues) avec la sortie.

591 

592**Ensemble d'instructions manquant sur les anciens processeurs.** Si votre architecture est correcte mais que vous voyez toujours `Illegal instruction`, votre processeur manque probablement d'AVX ou d'une autre instruction que le binaire nécessite. Cela affecte environ les processeurs Intel et AMD antérieurs à 2013, et les machines virtuelles où l'hyperviseur ne transmet pas AVX à l'invité.

593 

594Sur un VPS ou une VM, exécutez `grep -m1 -ow avx /proc/cpuinfo` ; un résultat vide signifie qu'AVX n'est pas disponible pour l'invité.

595 

596Il n'y a pas de solution de contournement binaire native ; suivez [le problème #50384](https://github.com/anthropics/claude-code/issues/50384) pour le statut, et incluez votre modèle de processeur depuis `grep -m1 "model name" /proc/cpuinfo` sur Linux ou `sysctl -n machdep.cpu.brand_string` sur macOS lors du signalement.

597 

598Les méthodes d'installation alternatives téléchargent le même binaire natif et ne résoudront aucune des deux causes.

599 

600### `dyld: cannot load` sur macOS

601 

602Si vous voyez `dyld: cannot load`, `dyld: Symbol not found`, ou `Abort trap: 6` pendant l'installation, le binaire est incompatible avec votre version ou matériel macOS.

603 

604```text theme={null}

605dyld: cannot load 'claude-2.1.42-darwin-x64' (load command 0x80000034 is unknown)

606Abort trap: 6

607```

608 

609Une erreur `Symbol not found` qui référence `libicucore` indique également que votre version macOS est plus ancienne que celle que le binaire supporte :

610 

611```text theme={null}

612dyld: Symbol not found: _ubrk_clone

613 Referenced from: claude-darwin-x64 (which was built for Mac OS X 13.0)

614 Expected in: /usr/lib/libicucore.A.dylib

615```

616 

617**Solutions :**

618 

6191. **Vérifiez votre version macOS** : Claude Code nécessite macOS 13.0 ou ultérieur. Ouvrez le menu Apple et sélectionnez À propos de ce Mac pour vérifier votre version.

620 

6212. **Mettez à jour macOS** si vous êtes sur une version plus ancienne. Le binaire utilise des commandes de chargement et des bibliothèques système que les anciennes versions de macOS ne supportent pas. Les méthodes d'installation alternatives comme Homebrew téléchargent le même binaire et ne résoudront pas cette erreur.

622 

623### `Exec format error` sur WSL1

624 

625Si l'exécution de `claude` dans WSL affiche `cannot execute binary file: Exec format error`, vous êtes sur WSL1 et vous rencontrez une régression binaire native connue suivie dans [le problème #38788](https://github.com/anthropics/claude-code/issues/38788). Les en-têtes de programme du binaire ont changé d'une manière que le chargeur WSL1 ne peut pas gérer.

626 

627La correction la plus propre est de convertir votre distribution en WSL2 depuis PowerShell :

628 

629```powershell theme={null}

630wsl --set-version <DistroName> 2

631```

632 

633Si vous devez rester sur WSL1, invoquez le binaire via l'éditeur de liens dynamique. Ajoutez cette fonction à `~/.bashrc` dans WSL, en remplaçant le chemin si votre répertoire personnel diffère :

634 

635```bash theme={null}

636claude() {

637 /lib64/ld-linux-x86-64.so.2 "$(readlink -f "$HOME/.local/bin/claude")" "$@"

638}

639```

640 

641Puis exécutez `source ~/.bashrc` et réessayez `claude`.

642 

643### Erreurs d'installation npm dans WSL

644 

645Ces problèmes s'appliquent si vous avez installé Claude Code avec `npm install -g` dans WSL. Si vous avez utilisé le [programme d'installation natif](/fr/setup), ignorez cette section.

646 

647**Problèmes de détection d'OS ou de plateforme.** Si npm signale une incompatibilité de plateforme pendant l'installation, WSL utilise probablement le `npm` Windows. Exécutez d'abord `npm config set os linux`, puis installez avec `npm install -g @anthropic-ai/claude-code --force`. N'utilisez pas `sudo`.

648 

649**`exec: node: not found` lors de l'exécution de `claude`.** Votre environnement WSL utilise probablement l'installation Windows de Node.js. Confirmez avec `which npm` et `which node` : les chemins commençant par `/mnt/c/` sont des binaires Windows, tandis que les chemins Linux commencent par `/usr/`. Pour corriger cela, installez Node via le gestionnaire de paquets de votre distribution Linux ou via [`nvm`](https://github.com/nvm-sh/nvm).

650 

651**Conflits de version nvm.** Si vous avez nvm installé à la fois dans WSL et Windows, basculer les versions de Node dans WSL peut casser car WSL importe le PATH Windows par défaut et le nvm Windows prend la priorité. La cause la plus courante est que nvm n'est pas chargé dans votre shell. Ajoutez le chargeur nvm à `~/.bashrc` ou `~/.zshrc` :

652 

653```bash theme={null}

654export NVM_DIR="$HOME/.nvm"

655[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

656[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

657```

658 

659Ou chargez-le dans votre session actuelle :

660 

661```bash theme={null}

662source ~/.nvm/nvm.sh

663```

664 

665Si nvm est chargé mais que les chemins Windows prennent toujours la priorité, prépendez explicitement votre chemin Node Linux :

666 

667```bash theme={null}

668export PATH="$HOME/.nvm/versions/node/$(node -v)/bin:$PATH"

669```

670 

671<Warning>

672 Évitez de désactiver l'importation du PATH Windows via `appendWindowsPath = false` car cela casse la capacité à appeler les exécutables Windows depuis WSL. De même, évitez de désinstaller Node.js de Windows si vous l'utilisez pour le développement Windows.

673</Warning>

674 

675### Erreurs de permission pendant l'installation

676 

677Si le programme d'installation natif échoue avec des erreurs de permission, le répertoire cible peut ne pas être accessible en écriture. Consultez [Vérifiez les permissions des répertoires](#check-directory-permissions).

678 

679Si vous avez précédemment installé avec npm et rencontrez des erreurs de permission spécifiques à npm, passez au programme d'installation natif :

680 

681```bash theme={null}

682curl -fsSL https://claude.ai/install.sh | bash

683```

684 

685### Binaire natif non trouvé après l'installation npm

686 

687Le paquet npm `@anthropic-ai/claude-code` récupère le binaire natif via une dépendance optionnelle par plateforme comme `@anthropic-ai/claude-code-darwin-arm64`. Si l'exécution de `claude` après l'installation affiche `Could not find native binary package "@anthropic-ai/claude-code-<platform>"`, vérifiez les causes suivantes :

688 

689* **Les dépendances optionnelles sont désactivées.** Supprimez `--omit=optional` de votre commande d'installation npm, `--no-optional` de pnpm, ou `--ignore-optional` de yarn, et vérifiez que `.npmrc` ne définit pas `optional=false`. Puis réinstallez. Le binaire natif est livré uniquement en tant que dépendance optionnelle, donc il n'y a pas de secours JavaScript s'il est ignoré.

690* **Plateforme non supportée.** Les binaires précompilés sont publiés pour `darwin-arm64`, `darwin-x64`, `linux-x64`, `linux-arm64`, `linux-x64-musl`, `linux-arm64-musl`, `win32-x64`, et `win32-arm64`. Claude Code ne livre pas de binaire pour d'autres plateformes ; consultez les [exigences système](/fr/setup#system-requirements).

691* **Le miroir npm d'entreprise manque les paquets de plateforme.** Assurez-vous que votre registre reflète les huit paquets `@anthropic-ai/claude-code-*` de plateforme en plus du paquet méta.

692 

693L'installation avec `--ignore-scripts` ne déclenche pas cette erreur. L'étape postinstall qui lie le binaire en place est ignorée, donc Claude Code revient à un wrapper qui localise et génère le binaire de plateforme à chaque lancement. Cela fonctionne mais démarre plus lentement ; réinstallez avec les scripts activés pour l'exécution directe.

694 

695## Connexion et authentification

696 

697Ces sections traitent des échecs de connexion, des erreurs OAuth et des problèmes de jeton.

698 

699### Réinitialisez votre connexion

700 

701Lorsque la connexion échoue et que la cause n'est pas évidente, une ré-authentification propre résout la plupart des cas :

702 

7031. Exécutez `/logout` pour vous déconnecter complètement

7042. Fermez Claude Code

7053. Redémarrez avec `claude` et complétez le processus d'authentification à nouveau

706 

707Si le navigateur ne s'ouvre pas automatiquement pendant la connexion, appuyez sur `c` pour copier l'URL OAuth dans votre presse-papiers, puis collez-la dans un navigateur manuellement. Cela fonctionne également lorsque l'URL s'enroule sur plusieurs lignes dans un terminal étroit ou SSH et ne peut pas être cliquée directement.

708 

709### Erreur OAuth : Code invalide

710 

711Si vous voyez `OAuth error: Invalid code. Please make sure the full code was copied`, le code de connexion a expiré ou a été tronqué lors du copier-coller.

712 

713**Solutions :**

714 

715* Appuyez sur Entrée pour réessayer et complétez la connexion rapidement après l'ouverture du navigateur

716* Tapez `c` pour copier l'URL complète si le navigateur ne s'ouvre pas automatiquement

717* Si vous utilisez une session distante/SSH, le navigateur peut s'ouvrir sur la mauvaise machine. Copiez l'URL affichée dans le terminal et ouvrez-la dans votre navigateur local à la place.

718 

719### 403 Forbidden après la connexion

720 

721Si vous voyez `API Error: 403 {"error":{"type":"forbidden","message":"Request not allowed"}}` après la connexion :

722 

723* **Utilisateurs Claude Pro/Max** : vérifiez que votre abonnement est actif sur [claude.ai/settings](https://claude.ai/settings)

724* **Utilisateurs Anthropic Console** : confirmez que votre compte a le rôle « Claude Code » ou « Developer ». Les administrateurs l'attribuent dans la console Anthropic sous Paramètres → Membres.

725* **Derrière un proxy** : les proxies d'entreprise peuvent interférer avec les demandes API. Consultez [configuration réseau](/fr/network-config) pour la configuration du proxy.

726 

727### Cette organisation a été désactivée avec un abonnement actif

728 

729Si vous voyez `API Error: 400 ... "This organization has been disabled"` malgré un abonnement Claude actif, une variable d'environnement `ANTHROPIC_API_KEY` remplace vos identifiants OAuth d'abonnement. Cela se produit couramment lorsqu'une ancienne clé API d'un employeur ou d'un projet précédent est toujours définie dans votre profil shell.

730 

731Lorsque `ANTHROPIC_API_KEY` est présente et que vous l'avez approuvée, Claude Code utilise cette clé au lieu des identifiants OAuth de votre abonnement. En mode non interactif avec le drapeau `-p`, la clé est toujours utilisée lorsqu'elle est présente. Consultez [précédence d'authentification](/fr/authentication#authentication-precedence) pour l'ordre de résolution complet.

732 

733Pour utiliser votre abonnement à la place, défiez la variable d'environnement et supprimez-la de votre profil shell :

734 

735```bash theme={null}

736unset ANTHROPIC_API_KEY

737claude

738```

739 

740Vérifiez `~/.zshrc`, `~/.bashrc`, ou `~/.profile` pour les lignes `export ANTHROPIC_API_KEY=...` et supprimez-les pour rendre le changement permanent. Sur Windows, vérifiez votre profil PowerShell à `$PROFILE` et vos variables d'environnement utilisateur pour `ANTHROPIC_API_KEY`. Exécutez `/status` dans Claude Code pour confirmer quelle méthode d'authentification est active.

741 

742### La connexion OAuth échoue dans WSL2, SSH ou conteneurs

743 

744Lorsque Claude Code s'exécute dans WSL2, sur une machine distante via SSH ou à l'intérieur d'un conteneur, le navigateur s'ouvre généralement sur un hôte différent et sa redirection ne peut pas atteindre le serveur de rappel local de Claude Code. Après vous être connecté, le navigateur affiche un code de connexion au lieu de rediriger automatiquement. Collez ce code dans le terminal à l'invite `Paste code here if prompted` pour terminer la connexion.

745 

746Si le navigateur ne s'ouvre pas du tout depuis WSL2, définissez la variable d'environnement `BROWSER` sur le chemin de votre navigateur Windows :

747 

748```bash theme={null}

749export BROWSER="/mnt/c/Program Files/Google/Chrome/Application/chrome.exe"

750claude

751```

752 

753Sinon, appuyez sur `c` à l'invite de connexion interactive pour copier l'URL OAuth, ou copiez l'URL que `claude auth login` affiche, et ouvrez-la dans un navigateur sur votre machine locale.

754 

755Si coller le code dans l'invite interactive ne fait rien, le raccourci de collage de votre terminal n'atteint probablement pas le champ de saisie. Essayez le raccourci de collage alternatif de votre terminal, souvent clic droit ou Maj+Insérer dans Windows Terminal, ou utilisez `claude auth login` à la place, qui lit le code collé à partir de l'entrée standard :

756 

757```bash theme={null}

758claude auth login

759```

760 

761Ce secours s'applique également sur Windows natif ou tout terminal où coller le code dans l'invite interactive échoue.

762 

763### Non connecté ou jeton expiré

764 

765Si Claude Code vous demande de vous connecter à nouveau après une session, votre jeton OAuth a peut-être expiré.

766 

767Exécutez `/login` pour vous ré-authentifier. Si cela se produit fréquemment, vérifiez que votre horloge système est exacte, car la validation du jeton dépend des horodatages corrects.

768 

769Sur macOS, la connexion peut également échouer lorsque le Keychain est verrouillé ou que son mot de passe est désynchronisé avec votre mot de passe de compte, ce qui empêche Claude Code de sauvegarder les identifiants. Exécutez `claude doctor` pour vérifier l'accès au Keychain. Pour déverrouiller le Keychain manuellement, exécutez `security unlock-keychain ~/Library/Keychains/login.keychain-db`. Si le déverrouillage n'aide pas, ouvrez Keychain Access, sélectionnez le Keychain `login`, et choisissez Édition > Changer le mot de passe du Keychain « login » pour le resynchroniser avec votre mot de passe de compte.

770 

771### Les identifiants Bedrock, Vertex ou Foundry ne se chargent pas

772 

773Si vous avez configuré Claude Code pour utiliser un fournisseur cloud et voyez `Could not load credentials from any providers` sur Bedrock, `Could not load the default credentials` sur Vertex, ou `ChainedTokenCredential authentication failed` sur Foundry, votre CLI du fournisseur cloud n'est probablement pas authentifiée dans le shell actuel.

774 

775Pour Bedrock, confirmez que vos identifiants AWS sont valides :

776 

777```bash theme={null}

778aws sts get-caller-identity

779```

780 

781Pour Vertex AI, confirmez que `ANTHROPIC_VERTEX_PROJECT_ID` et `CLOUD_ML_REGION` sont définis dans votre shell, puis définissez les identifiants par défaut de l'application :

782 

783```bash theme={null}

784gcloud auth application-default login

785```

786 

787Pour Microsoft Foundry, confirmez que `ANTHROPIC_FOUNDRY_API_KEY` est défini, ou connectez-vous avec l'interface de ligne de commande Azure pour que la chaîne d'identifiants par défaut puisse trouver votre compte :

788 

789```bash theme={null}

790az login

791```

792 

793Si les identifiants fonctionnent dans votre terminal mais pas dans l'extension VS Code ou JetBrains, le processus IDE n'a probablement pas hérité de votre environnement shell. Définissez les variables d'environnement du fournisseur dans les paramètres de l'IDE lui-même, ou lancez l'IDE depuis un terminal où elles sont déjà exportées.

794 

795Consultez [Amazon Bedrock](/fr/amazon-bedrock), [Google Vertex AI](/fr/google-vertex-ai), ou [Microsoft Foundry](/fr/microsoft-foundry) pour la configuration complète du fournisseur.

796 

797## Toujours bloqué

798 

799Si aucune des solutions ci-dessus ne résout votre problème :

800 

8011. Vérifiez le [référentiel GitHub](https://github.com/anthropics/claude-code/issues) pour les problèmes connus, ou ouvrez-en un nouveau avec votre système d'exploitation, la commande d'installation que vous avez exécutée, et la sortie d'erreur complète

8022. Si `claude --version` fonctionne mais quelque chose d'autre ne va pas, exécutez `claude doctor` pour un rapport de diagnostic automatisé

8033. Si vous pouvez démarrer une session, utilisez `/feedback` dans Claude Code pour signaler le problème

troubleshooting.md +121 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Dépannage

6 

7> Corrigez l'utilisation élevée du CPU ou de la mémoire, les blocages, le thrashing de l'auto-compaction et les problèmes de recherche dans Claude Code, et trouvez la bonne page pour d'autres problèmes.

8 

9Cette page couvre les problèmes de performance, de stabilité et de recherche une fois que Claude Code est en cours d'exécution. Pour d'autres problèmes, commencez par la page qui correspond à votre situation :

10 

11| Symptôme | Aller à |

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) |

14| Boucles de connexion, erreurs OAuth, `403 Forbidden`, « organisation désactivée », identifiants Bedrock/Vertex/Foundry | [Dépanner l'installation et la connexion](/fr/troubleshoot-install#login-and-authentication) |

15| 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| `API Error: 5xx`, `529 Overloaded`, `429`, erreurs de validation de requête | [Référence des erreurs](/fr/errors) |

17| `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| 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| Le plugin JetBrains ou l'IDE n'est pas détecté | [Intégration JetBrains](/fr/jetbrains#troubleshooting) |

20| 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 

22Si 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 serveurs MCP et votre utilisation du contexte. Si `claude` ne démarre pas du tout, exécutez `claude doctor` depuis votre shell à la place.

23 

24## Performance et stabilité

25 

26Ces sections couvrent les problèmes liés à l'utilisation des ressources, la réactivité et le comportement de recherche.

27 

28### Utilisation élevée du CPU ou de la mémoire

29 

30Claude Code est conçu pour fonctionner avec la plupart des environnements de développement, mais peut consommer des ressources importantes lors du traitement de grandes bases de code. Si vous rencontrez des problèmes de performance :

31 

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

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

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

35 

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

37 

38La 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).

39 

40### L'auto-compaction s'arrête avec une erreur de thrashing

41 

42Si vous voyez `Autocompact is thrashing: the context refilled to the limit...`, la compaction automatique a réussi mais un fichier ou une sortie d'outil a immédiatement rempli la fenêtre de contexte plusieurs fois de suite. Claude Code arrête les tentatives pour éviter de gaspiller les appels API sur une boucle qui ne progresse pas.

43 

44Pour récupérer :

45 

461. 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

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

483. 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ée

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

50 

51### Les commandes se figent ou se gèlent

52 

53Si Claude Code semble ne pas répondre :

54 

551. Appuyez sur Ctrl+C pour tenter d'annuler l'opération actuelle

562. Si ne répond pas, vous devrez peut-être fermer le terminal et redémarrer

57 

58Le redémarrage ne perd pas votre conversation. Exécutez `claude --resume` dans le même répertoire pour reprendre la session.

59 

60### Problèmes de recherche et de découverte

61 

62Si l'outil Search, les mentions `@file`, les agents personnalisés ou les compétences personnalisées ne trouvent pas les fichiers, le binaire `ripgrep` fourni peut ne pas s'exécuter sur votre système. Installez le paquet `ripgrep` de votre plateforme et dites à Claude Code de l'utiliser à la place :

63 

64<Tabs>

65 <Tab title="macOS">

66 ```bash theme={null}

67 brew install ripgrep

68 ```

69 </Tab>

70 

71 <Tab title="Ubuntu/Debian">

72 ```bash theme={null}

73 sudo apt install ripgrep

74 ```

75 </Tab>

76 

77 <Tab title="Alpine">

78 ```bash theme={null}

79 apk add ripgrep

80 ```

81 </Tab>

82 

83 <Tab title="Arch">

84 ```bash theme={null}

85 pacman -S ripgrep

86 ```

87 </Tab>

88 

89 <Tab title="Windows">

90 ```powershell theme={null}

91 winget install BurntSushi.ripgrep.MSVC

92 ```

93 </Tab>

94</Tabs>

95 

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

97 

98### Résultats de recherche lents ou incomplets sur WSL

99 

100Les pénalités de performance de lecture de disque lors du [travail sur les systèmes de fichiers sur WSL](https://learn.microsoft.com/en-us/windows/wsl/filesystems) peuvent entraîner moins de correspondances que prévu lors de l'utilisation de Claude Code sur WSL. La recherche fonctionne toujours, mais retourne moins de résultats que sur un système de fichiers natif.

101 

102<Note>

103 `/doctor` affichera Search comme OK dans ce cas.

104</Note>

105 

106**Solutions :**

107 

1081. **Soumettre des recherches plus spécifiques** : réduisez le nombre de fichiers recherchés en spécifiant des répertoires ou des types de fichiers : « Search for JWT validation logic in the auth-service package » ou « Find use of md5 hash in JS files ».

109 

1102. **Déplacer le projet vers le système de fichiers Linux** : si possible, assurez-vous que votre projet est situé sur le système de fichiers Linux (`/home/`) plutôt que sur le système de fichiers Windows (`/mnt/c/`).

111 

1123. **Utiliser Windows natif à la place** : envisagez d'exécuter Claude Code nativement sur Windows au lieu de via WSL, pour une meilleure performance du système de fichiers.

113 

114## Obtenir plus d'aide

115 

116Si vous rencontrez des problèmes non couverts ici :

117 

1181. Exécutez `/doctor` pour vérifier la santé de l'installation, la validité des paramètres, la configuration MCP et l'utilisation du contexte en une seule passe

1192. Utilisez la commande `/feedback` dans Claude Code pour signaler les problèmes directement à Anthropic

1203. Vérifiez le [référentiel GitHub](https://github.com/anthropics/claude-code) pour les problèmes connus

1214. Demandez directement à Claude ses capacités et fonctionnalités. Claude a un accès intégré à sa documentation.

ultraplan.md +84 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Planifier dans le cloud avec ultraplan

6 

7> Lancez un plan depuis votre CLI, rédigez-le sur Claude Code sur le web, puis exécutez-le à distance ou de retour dans votre terminal

8 

9<Note>

10 Ultraplan est en aperçu de recherche et nécessite Claude Code v2.1.91 ou version ultérieure. Le comportement et les capacités peuvent changer en fonction des commentaires.

11</Note>

12 

13Ultraplan confie une tâche de planification de votre CLI local à une session [Claude Code sur le web](/fr/claude-code-on-the-web) s'exécutant en [mode plan](/fr/permission-modes#analyze-before-you-edit-with-plan-mode). Claude rédige le plan dans le cloud pendant que vous continuez à travailler dans votre terminal. Lorsque le plan est prêt, vous l'ouvrez dans votre navigateur pour commenter des sections spécifiques, demander des révisions et choisir où l'exécuter.

14 

15Ceci est utile lorsque vous souhaitez une surface d'examen plus riche que celle offerte par le terminal :

16 

17* **Commentaires ciblés** : commentez des sections individuelles du plan au lieu de répondre à l'ensemble

18* **Rédaction sans intervention** : le plan est généré à distance, votre terminal reste libre pour d'autres travaux

19* **Exécution flexible** : approuvez le plan pour l'exécuter sur le web et ouvrir une demande de tirage, ou renvoyez-le à votre terminal

20 

21Ultraplan nécessite un compte [Claude Code sur le web](/fr/claude-code-on-the-web) et un référentiel GitHub. Parce qu'il s'exécute sur l'infrastructure cloud d'Anthropic, il n'est pas disponible lors de l'utilisation d'Amazon Bedrock, Google Cloud Vertex AI ou Microsoft Foundry. La session cloud s'exécute dans l'[environnement cloud](/fr/claude-code-on-the-web#the-cloud-environment) par défaut de votre compte. Si vous n'avez pas encore d'environnement cloud, ultraplan en crée un automatiquement lors de son premier lancement.

22 

23## Lancer ultraplan depuis la CLI

24 

25À partir de votre session CLI locale, vous pouvez lancer ultraplan de trois façons :

26 

27* **Commande** : exécutez `/ultraplan` suivi de votre invite

28* **Mot-clé** : incluez le mot `ultraplan` n'importe où dans une invite normale

29* **À partir d'un plan local** : lorsque Claude termine un plan local et affiche la boîte de dialogue d'approbation, choisissez **Non, affiner avec Ultraplan sur Claude Code sur le web** pour envoyer le brouillon au cloud pour une itération supplémentaire

30 

31Par exemple, pour planifier une migration de service avec la commande :

32 

33```

34/ultraplan migrate the auth service from sessions to JWTs

35```

36 

37Les chemins de commande et de mot-clé ouvrent une boîte de dialogue de confirmation avant le lancement. Le chemin du plan local ignore cette boîte de dialogue car cette sélection sert déjà de confirmation. Si [Remote Control](/fr/remote-control) est actif, il se déconnecte lorsque ultraplan démarre car les deux fonctionnalités occupent l'interface claude.ai/code et une seule peut être connectée à la fois.

38 

39Après le lancement de la session cloud, l'invite d'entrée de votre CLI affiche un indicateur d'état pendant que la session distante fonctionne :

40 

41| Statut | Signification |

42| :----------------------------- | :------------------------------------------------------------------------------- |

43| `◇ ultraplan` | Claude recherche votre base de code et rédige le plan |

44| `◇ ultraplan needs your input` | Claude a une question de clarification ; ouvrez le lien de session pour répondre |

45| `◆ ultraplan ready` | Le plan est prêt à être examiné dans votre navigateur |

46 

47Exécutez `/tasks` et sélectionnez l'entrée ultraplan pour ouvrir une vue détaillée avec le lien de session, l'activité de l'agent et une action **Stop ultraplan**. L'arrêt archive la session cloud et efface l'indicateur ; rien n'est enregistré dans votre terminal.

48 

49## Examiner et réviser le plan dans votre navigateur

50 

51Lorsque le statut passe à `◆ ultraplan ready`, ouvrez le lien de session pour afficher le plan sur claude.ai. Le plan apparaît dans une vue d'examen dédiée :

52 

53* **Commentaires en ligne** : mettez en surbrillance n'importe quel passage et laissez un commentaire pour que Claude l'adresse

54* **Réactions emoji** : réagissez à une section pour signaler l'approbation ou la préoccupation sans écrire un commentaire complet

55* **Barre latérale de plan** : passez entre les sections du plan

56 

57Lorsque vous demandez à Claude d'adresser vos commentaires, il révise le plan et présente un brouillon mis à jour. Vous pouvez itérer autant de fois que nécessaire avant de choisir où l'exécuter.

58 

59## Choisir où exécuter

60 

61Lorsque le plan semble correct, vous choisissez depuis le navigateur si Claude l'implémente dans la même session cloud ou le renvoie à votre terminal en attente.

62 

63### Exécuter sur le web

64 

65Sélectionnez **Approuver le plan de Claude et commencer à coder** dans votre navigateur pour que Claude l'implémente dans la même session Claude Code sur le web. Votre terminal affiche une confirmation, l'indicateur d'état s'efface et le travail continue dans le cloud. Lorsque l'implémentation est terminée, [examinez la différence](/fr/claude-code-on-the-web#review-changes) et créez une demande de tirage à partir de l'interface web.

66 

67### Renvoyer le plan à votre terminal

68 

69Sélectionnez **Approuver le plan et téléporter vers le terminal** dans votre navigateur pour implémenter le plan localement avec un accès complet à votre environnement. Cette option apparaît lorsque la session a été lancée à partir de votre CLI et que le terminal continue d'interroger. La session web est archivée pour qu'elle ne continue pas à fonctionner en parallèle.

70 

71Votre terminal affiche le plan dans une boîte de dialogue intitulée **Ultraplan approved** avec trois options :

72 

73* **Implémenter ici** : injectez le plan dans votre conversation actuelle et continuez à partir de là où vous vous étiez arrêté

74* **Démarrer une nouvelle session** : effacez la conversation actuelle et commencez à nouveau avec uniquement le plan comme contexte

75* **Annuler** : enregistrez le plan dans un fichier sans l'exécuter ; Claude imprime le chemin du fichier pour que vous puissiez y revenir plus tard

76 

77Si vous démarrez une nouvelle session, Claude imprime une commande `claude --resume` en haut pour que vous puissiez revenir à votre conversation précédente plus tard.

78 

79## Ressources connexes

80 

81* [Claude Code sur le web](/fr/claude-code-on-the-web) : l'infrastructure cloud sur laquelle ultraplan s'exécute

82* [Mode plan](/fr/permission-modes#analyze-before-you-edit-with-plan-mode) : comment la planification fonctionne dans une session locale

83* [Trouver des bogues avec ultrareview](/fr/ultrareview) : l'équivalent d'examen de code à ultraplan pour détecter les problèmes avant la fusion

84* [Remote Control](/fr/remote-control) : utilisez l'interface claude.ai/code avec une session s'exécutant sur votre propre machine

ultrareview.md +108 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Trouver des bugs avec ultrareview

6 

7> Exécutez une révision de code approfondie et multi-agents dans le cloud avec /ultrareview pour trouver et vérifier les bugs avant de fusionner.

8 

9<Note>

10 Ultrareview est une fonctionnalité en aperçu de recherche disponible dans Claude Code v2.1.86 et versions ultérieures. La fonctionnalité, la tarification et la disponibilité peuvent changer en fonction des commentaires.

11</Note>

12 

13Ultrareview est une révision de code approfondie qui s'exécute sur Claude Code sur l'infrastructure web. Lorsque vous exécutez `/ultrareview`, Claude Code lance une flotte d'agents examinateurs dans un sandbox distant pour trouver des bugs dans votre branche ou votre demande de fusion.

14 

15Comparé à un `/review` local, ultrareview offre :

16 

17* **Signal plus élevé** : chaque constatation signalée est indépendamment reproduite et vérifiée, de sorte que les résultats se concentrent sur les bugs réels plutôt que sur les suggestions de style

18* **Couverture plus large** : de nombreux agents examinateurs explorent le changement en parallèle, ce qui met en évidence les problèmes qu'une révision en une seule passe pourrait manquer

19* **Aucune utilisation de ressources locales** : la révision s'exécute entièrement dans un sandbox distant, de sorte que votre terminal reste libre pour d'autres travaux pendant qu'elle s'exécute

20 

21Ultrareview nécessite une authentification avec un compte Claude.ai car il s'exécute sur Claude Code sur l'infrastructure web. Si vous êtes connecté avec une clé API uniquement, exécutez `/login` et authentifiez-vous d'abord avec Claude.ai. Ultrareview n'est pas disponible lors de l'utilisation de Claude Code avec Amazon Bedrock, Google Cloud Vertex AI ou Microsoft Foundry, et il n'est pas disponible pour les organisations qui ont activé la rétention zéro des données.

22 

23## Exécuter ultrareview à partir de la CLI

24 

25Démarrez une révision à partir de n'importe quel référentiel git dans la CLI Claude Code.

26 

27```text theme={null}

28/ultrareview

29```

30 

31Sans arguments, ultrareview examine la différence entre votre branche actuelle et la branche par défaut, y compris les modifications non validées et mises en scène dans votre arborescence de travail. Claude Code regroupe l'état du référentiel et le télécharge vers un sandbox distant pour la révision.

32 

33Pour examiner une demande de fusion GitHub à la place, transmettez le numéro de PR.

34 

35```text theme={null}

36/ultrareview 1234

37```

38 

39En mode PR, le sandbox distant clone la demande de fusion directement depuis GitHub plutôt que de regrouper votre arborescence de travail locale. Le mode PR nécessite une télécommande `github.com` sur le référentiel.

40 

41<Tip>

42 Si votre référentiel est trop volumineux pour être regroupé, Claude Code vous invite à utiliser le mode PR à la place. Poussez votre branche et ouvrez une PR brouillon, puis exécutez `/ultrareview <PR-number>`.

43</Tip>

44 

45Avant de lancer, Claude Code affiche une boîte de dialogue de confirmation avec l'étendue de la révision (y compris le nombre de fichiers et de lignes lors de la révision d'une branche), vos exécutions gratuites restantes et le coût estimé. Après confirmation, la révision continue en arrière-plan et vous pouvez continuer à utiliser votre session. La commande s'exécute uniquement lorsque vous l'invoquez avec `/ultrareview` ; Claude ne démarre pas une ultrareview de lui-même.

46 

47## Tarification et exécutions gratuites

48 

49Ultrareview est une fonctionnalité premium qui facture l'utilisation supplémentaire plutôt que l'utilisation incluse dans votre plan.

50 

51| Plan | Exécutions gratuites incluses | Après les exécutions gratuites |

52| ------------------ | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------- |

53| Pro | 3 exécutions gratuites jusqu'au 5 mai 2026 | facturées comme [utilisation supplémentaire](https://support.claude.com/fr/articles/12429409-extra-usage-for-paid-claude-plans) |

54| Max | 3 exécutions gratuites jusqu'au 5 mai 2026 | facturées comme [utilisation supplémentaire](https://support.claude.com/fr/articles/12429409-extra-usage-for-paid-claude-plans) |

55| Team et Enterprise | aucune | facturées comme [utilisation supplémentaire](https://support.claude.com/fr/articles/12429409-extra-usage-for-paid-claude-plans) |

56 

57Les abonnés Pro et Max reçoivent trois exécutions ultrareview gratuites pour essayer la fonctionnalité. Ces trois exécutions sont une allocation unique par compte, ne se renouvellent pas et expirent le 5 mai 2026. Après les avoir utilisées ou après la fin de la période d'exécutions gratuites, chaque révision est facturée à l'utilisation supplémentaire et coûte généralement entre 5 et 20 dollars selon la taille du changement. Une exécution compte une fois que la session à distance démarre, donc une révision que vous arrêtez tôt ou qui ne se termine pas utilise quand même une exécution gratuite. Pour une révision payante, l'utilisation supplémentaire est facturée uniquement pour la portion qui a été exécutée.

58 

59Parce que ultrareview facture toujours l'utilisation supplémentaire en dehors des exécutions gratuites, votre compte ou organisation doit avoir l'utilisation supplémentaire activée avant de pouvoir lancer une révision payante. Si l'utilisation supplémentaire n'est pas activée, Claude Code bloque le lancement et vous renvoie aux paramètres de facturation où vous pouvez l'activer. Vous pouvez également exécuter `/extra-usage` pour vérifier ou modifier votre paramètre actuel.

60 

61## Suivre une révision en cours

62 

63Une révision prend généralement 5 à 10 minutes. La révision s'exécute en tant que tâche en arrière-plan, de sorte que vous pouvez continuer à travailler dans votre session, démarrer d'autres commandes ou fermer complètement le terminal.

64 

65Utilisez `/tasks` pour voir les révisions en cours et terminées, ouvrir la vue détaillée d'une révision ou arrêter une révision en cours. L'arrêt d'une révision archive la session cloud, et les constatations partielles ne sont pas renvoyées. Lorsque la révision se termine, les constatations vérifiées apparaissent sous forme de notification dans votre session. Chaque constatation inclut l'emplacement du fichier et une explication du problème afin que vous puissiez demander à Claude de le corriger directement.

66 

67## Exécuter ultrareview de manière non-interactive

68 

69Utilisez la sous-commande `claude ultrareview` pour démarrer une ultrareview à partir de CI ou d'un script sans session interactive. La sous-commande lance la même révision que `/ultrareview`, bloque jusqu'à ce que la révision distante se termine, imprime les constatations sur stdout et se termine avec le code 0 en cas de succès ou 1 en cas d'échec.

70 

71```bash theme={null}

72claude ultrareview

73claude ultrareview 1234

74claude ultrareview origin/main

75```

76 

77Sans arguments, la sous-commande examine la différence entre votre branche actuelle et la branche par défaut. Transmettez un numéro de PR pour examiner une demande de fusion, ou transmettez une branche de base pour examiner la différence par rapport à cette branche à la place. L'invocation de la sous-commande compte comme consentement pour la facturation et l'invite de conditions que la commande interactive affiche.

78 

79Les messages de progression et l'URL de session en direct vont vers stderr afin que stdout reste analysable. Utilisez ces drapeaux pour contrôler la sortie et le délai d'expiration :

80 

81| Drapeau | Description |

82| --------------------- | ----------------------------------------------------------------------------------- |

83| `--json` | Imprimez la charge utile `bugs.json` brute au lieu des constatations formatées |

84| `--timeout <minutes>` | Nombre maximum de minutes à attendre pour que la révision se termine. Par défaut 30 |

85 

86L'exécution de `claude ultrareview` nécessite la même authentification et configuration d'utilisation supplémentaire que `/ultrareview`. La sous-commande se termine avec le code 0 lorsque la révision se termine avec ou sans constatations, le code 1 lorsque la révision ne parvient pas à se lancer, la session distante génère une erreur ou le délai d'expiration s'écoule, et le code 130 lorsqu'elle est interrompue avec Ctrl-C. La révision distante continue de s'exécuter si vous interrompez la sous-commande ; suivez l'URL de session imprimée sur stderr pour la regarder dans le navigateur.

87 

88Pour les révisions automatiques sur les demandes de fusion GitHub, [Code Review](/fr/code-review) s'intègre directement à votre référentiel et publie les constatations sous forme de commentaires PR en ligne sans étape CLI.

89 

90## Comment ultrareview se compare à /review

91 

92Les deux commandes examinent le code, mais elles ciblent différentes étapes de votre flux de travail.

93 

94| | `/review` | `/ultrareview` |

95| ---------- | ------------------------------------ | ---------------------------------------------------------------------------------------------------- |

96| S'exécute | localement dans votre session | à distance dans un sandbox cloud |

97| Profondeur | révision en une seule passe | flotte multi-agents avec vérification indépendante |

98| Durée | quelques secondes à quelques minutes | environ 5 à 10 minutes |

99| Coût | compte vers l'utilisation normale | exécutions gratuites, puis environ 5 à 20 dollars par révision en tant qu'utilisation supplémentaire |

100| Idéal pour | retours rapides lors de l'itération | confiance pré-fusion sur les changements substantiels |

101 

102Utilisez `/review` pour des retours rapides pendant que vous travaillez. Utilisez `/ultrareview` avant de fusionner un changement substantiel lorsque vous souhaitez une passe plus approfondie qui détecte les problèmes qu'une seule révision pourrait manquer.

103 

104## Ressources connexes

105 

106* [Claude Code sur le web](/fr/claude-code-on-the-web) : découvrez comment fonctionnent les sessions distantes et les sandboxes cloud

107* [Planifier les changements complexes avec ultraplan](/fr/ultraplan) : l'équivalent de planification pour ultrareview pour le travail de conception préalable

108* [Gérer les coûts efficacement](/fr/costs) : suivre l'utilisation et définir les limites de dépenses

voice-dictation.md +191 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Dictée vocale

6 

7> Parlez vos invites dans l'interface de ligne de commande Claude Code avec la dictée vocale en maintenant ou en appuyant.

8 

9Parlez vos invites au lieu de les taper dans l'interface de ligne de commande Claude Code. Votre parole est transcrite en direct dans l'entrée d'invite, vous pouvez donc mélanger la voix et la saisie dans le même message. Activez la dictée avec `/voice`, puis maintenez une touche enfoncée pendant que vous parlez ou appuyez une fois pour commencer et à nouveau pour envoyer.

10 

11<Note>

12 La dictée vocale nécessite Claude Code v2.1.69 ou version ultérieure. Le mode appui nécessite v2.1.116 ou version ultérieure. Vérifiez votre version avec `claude --version`.

13</Note>

14 

15## Conditions requises

16 

17La dictée vocale envoie votre audio enregistré aux serveurs d'Anthropic pour la transcription. L'audio n'est pas traité localement. Le service de reconnaissance vocale n'est disponible que lorsque vous vous authentifiez avec un compte Claude.ai, et n'est pas disponible lorsque Claude Code est configuré pour utiliser directement une clé API Anthropic, Amazon Bedrock, Google Vertex AI ou Microsoft Foundry. La transcription ne consomme pas de messages Claude ni de jetons et ne compte pas vers les limites affichées dans `/usage`. Consultez [utilisation des données](/fr/data-usage) pour savoir comment Anthropic traite vos données.

18 

19La dictée vocale nécessite également un accès local au microphone, elle ne fonctionne donc pas dans les environnements distants tels que [Claude Code sur le web](/fr/claude-code-on-the-web) ou les sessions SSH. Dans WSL, la dictée vocale nécessite WSLg pour l'accès audio, qui est inclus avec WSL2 sur Windows 11. Sur Windows 10 ou WSL1, exécutez Claude Code en Windows natif à la place.

20 

21L'enregistrement audio utilise un module natif intégré sur macOS, Linux et Windows. Sur Linux, si le module natif ne peut pas se charger, Claude Code revient à `arecord` d'ALSA utils ou `rec` de SoX. Si aucun n'est disponible, `/voice` affiche une commande d'installation pour votre gestionnaire de paquets.

22 

23L'[extension VS Code](/fr/vs-code) de Claude Code prend également en charge la dictée vocale avec la même exigence de compte Claude.ai. Elle n'est pas disponible dans les sessions VS Code Remote, y compris SSH, Dev Containers et Codespaces, car le microphone se trouve sur votre machine locale et l'extension s'exécute sur l'hôte distant.

24 

25## Activer la dictée vocale

26 

27Exécutez `/voice` pour activer la dictée. La première fois que vous l'activez, Claude Code exécute une vérification du microphone. Sur macOS, cela déclenche l'invite de permission du microphone système pour votre terminal s'il n'a jamais été accordé.

28 

29```

30/voice

31Voice mode enabled (hold). Hold Space to record. Dictation language: en (/config to change).

32```

33 

34`/voice` accepte un argument de mode optionnel :

35 

36| Commande | Effet |

37| :------------ | :----------------------------------------------------- |

38| `/voice` | Basculer activé ou désactivé, conserver le mode actuel |

39| `/voice hold` | Activer en [mode maintien](#hold-to-record) |

40| `/voice tap` | Activer en [mode appui](#tap-to-record-and-send) |

41| `/voice off` | Désactiver |

42 

43La dictée vocale persiste entre les sessions. Définissez-la directement dans votre [fichier de paramètres utilisateur](/fr/settings) au lieu d'exécuter `/voice` :

44 

45```json theme={null}

46{

47 "voice": {

48 "enabled": true,

49 "mode": "tap"

50 }

51}

52```

53 

54Lorsque la dictée vocale est activée, le pied de page d'entrée affiche un indice `hold Space to speak` lorsque l'invite est vide. Le texte d'indice est le même dans les deux modes, et il n'apparaît pas si vous avez une [ligne d'état personnalisée](/fr/statusline) configurée.

55 

56La transcription est optimisée pour le vocabulaire de codage dans les deux modes. Les termes de développement courants comme `regex`, `OAuth`, `JSON` et `localhost` sont reconnus correctement, et le nom de votre projet actuel et le nom de la branche git sont ajoutés automatiquement comme indices de reconnaissance.

57 

58## Mode maintien

59 

60Le mode maintien est un système push-to-talk : l'enregistrement s'exécute pendant que vous maintenez la touche enfoncée et s'arrête lorsque vous la relâchez. C'est le mode par défaut.

61 

62Maintenez `Space` enfoncée pour commencer l'enregistrement. Claude Code détecte une touche maintenue en observant les événements de répétition rapide des touches de votre terminal, il y a donc une brève période de préchauffage avant le début de l'enregistrement. Le pied de page affiche `keep holding…` pendant le préchauffage, puis bascule vers une forme d'onde en direct une fois l'enregistrement actif.

63 

64Les premiers caractères de répétition des touches tapent dans l'entrée pendant le préchauffage et sont supprimés automatiquement lorsque l'enregistrement s'active. Un simple appui sur `Space` tape toujours un espace, car la détection de maintien ne se déclenche que sur la répétition rapide.

65 

66<Tip>

67 Pour ignorer le préchauffage, basculez vers [mode appui](#tap-to-record-and-send) avec `/voice tap`, ou [reliez à une combinaison de modificateurs](#rebind-the-dictation-key) comme `meta+k`. Les combinaisons de modificateurs commencent l'enregistrement au premier appui sur une touche.

68</Tip>

69 

70Votre parole apparaît dans l'invite au fur et à mesure que vous parlez, estompée jusqu'à ce que la transcription soit finalisée. Relâchez `Space` pour arrêter l'enregistrement et finaliser le texte. La transcription est insérée à la position de votre curseur et le curseur reste à la fin du texte inséré, vous pouvez donc mélanger la saisie et la dictée dans n'importe quel ordre. Maintenez `Space` à nouveau pour ajouter un autre enregistrement, ou déplacez d'abord le curseur pour insérer la parole ailleurs dans l'invite :

71 

72```

73> refactor the auth middleware to ▮

74 # hold Space, speak "use the new token validation helper"

75> refactor the auth middleware to use the new token validation helper▮

76```

77 

78Par défaut, relâcher la touche insère la transcription et attend que vous appuyiez sur `Enter`. Définissez `"autoSubmit": true` dans l'objet de paramètres `voice` pour envoyer l'invite automatiquement lorsque vous relâchez la touche, tant que la transcription contient au moins trois mots.

79 

80## Mode appui pour enregistrer et envoyer

81 

82Le mode appui bascule l'enregistrement avec un seul appui sur une touche : appuyez une fois pour commencer, parlez, puis appuyez à nouveau pour envoyer l'invite. Il n'y a pas de préchauffage, et vous n'avez pas besoin de maintenir la touche enfoncée.

83 

84Activez le mode appui avec `/voice tap`. Avec l'entrée d'invite vide, appuyez sur `Space` pour commencer l'enregistrement. Le pied de page affiche une forme d'onde en direct pendant l'enregistrement. Appuyez à nouveau sur `Space` pour arrêter. Claude Code insère la transcription et soumet l'invite automatiquement lorsque la transcription contient au moins trois mots. Les transcriptions plus courtes sont insérées mais non soumises, donc un appui accidentel n'envoie pas un mot isolé.

85 

86Le premier appui ne commence l'enregistrement que lorsque l'entrée d'invite est vide, vous pouvez donc toujours taper des espaces normalement en composant un message. Le deuxième appui arrête l'enregistrement quel que soit le contenu de l'entrée. L'enregistrement s'arrête également automatiquement après 15 secondes de silence ou deux minutes au total.

87 

88## Modifier la langue de dictée

89 

90La dictée vocale utilise le même [paramètre `language`](/fr/settings) qui contrôle la langue de réponse de Claude. Si ce paramètre est vide, la dictée utilise par défaut l'anglais. Dans l'extension VS Code, si `language` est vide, la dictée utilise le paramètre `accessibility.voice.speechLanguage` de VS Code avant d'utiliser par défaut l'anglais.

91 

92<Accordion title="Langues de dictée prises en charge">

93 | Langue | Code |

94 | :---------- | :--- |

95 | Tchèque | `cs` |

96 | Danois | `da` |

97 | Néerlandais | `nl` |

98 | Anglais | `en` |

99 | Français | `fr` |

100 | Allemand | `de` |

101 | Grec | `el` |

102 | Hindi | `hi` |

103 | Indonésien | `id` |

104 | Italien | `it` |

105 | Japonais | `ja` |

106 | Coréen | `ko` |

107 | Norvégien | `no` |

108 | Polonais | `pl` |

109 | Portugais | `pt` |

110 | Russe | `ru` |

111 | Espagnol | `es` |

112 | Suédois | `sv` |

113 | Turc | `tr` |

114 | Ukrainien | `uk` |

115</Accordion>

116 

117Définissez la langue dans `/config` ou directement dans les paramètres. Vous pouvez utiliser soit le [code de langue BCP 47](https://en.wikipedia.org/wiki/IETF_language_tag) soit le nom de la langue :

118 

119```json theme={null}

120{

121 "language": "japanese"

122}

123```

124 

125Si votre paramètre `language` ne figure pas dans la liste prise en charge, `/voice` vous avertit lors de l'activation et revient à l'anglais pour la dictée. Les réponses textuelles de Claude ne sont pas affectées par ce retour.

126 

127## Relier à nouveau la touche de dictée

128 

129La touche de dictée est liée à `voice:pushToTalk` dans le contexte `Chat` et utilise par défaut `Space`. La même liaison contrôle les modes maintien et appui. Reliez-la dans [`~/.claude/keybindings.json`](/fr/keybindings) :

130 

131```json theme={null}

132{

133 "bindings": [

134 {

135 "context": "Chat",

136 "bindings": {

137 "meta+k": "voice:pushToTalk",

138 "space": null

139 }

140 }

141 ]

142}

143```

144 

145Définir `"space": null` supprime la liaison par défaut. Omettez-le si vous voulez que les deux touches soient actives.

146 

147En mode maintien, évitez de lier une touche de lettre simple comme `v` car la détection de maintien dépend de la répétition des touches et la lettre tape dans l'invite pendant le préchauffage. Utilisez `Space`, ou utilisez une combinaison de modificateurs comme `meta+k` pour commencer l'enregistrement au premier appui sur une touche sans préchauffage. Le mode appui n'a pas de préchauffage, donc n'importe quelle touche fonctionne.

148 

149Certaines touches ne sont pas livrées aux applications de terminal et ne peuvent pas être liées du tout. Par exemple, `Caps Lock` affiche une erreur si vous essayez de la lier. Consultez [personnaliser les raccourcis clavier](/fr/keybindings) pour la syntaxe complète des liaisons de touches et la liste des raccourcis réservés.

150 

151## Dépannage

152 

153Problèmes courants lorsque la dictée vocale ne s'active pas ou n'enregistre pas :

154 

155* **`Voice mode requires a Claude.ai account`** : vous êtes authentifié avec une clé API ou un fournisseur tiers. Exécutez `/login` pour vous connecter avec un compte Claude.ai.

156* **`Microphone access is denied`** : accordez la permission du microphone à votre terminal dans les paramètres système. Sur macOS, allez à Paramètres système → Confidentialité et sécurité → Microphone et activez votre application terminal, puis exécutez `/voice` à nouveau. Sur Windows, allez à Paramètres → Confidentialité et sécurité → Microphone et activez l'accès au microphone pour les applications de bureau, puis exécutez `/voice` à nouveau. Si votre terminal n'est pas répertorié dans les paramètres macOS, consultez [Terminal non répertorié dans les paramètres du microphone macOS](#terminal-not-listed-in-macos-microphone-settings).

157* **`No audio recording tool found` sur Linux** : le module audio natif n'a pas pu se charger et aucun retour n'est installé. Installez SoX avec la commande affichée dans le message d'erreur, par exemple `sudo apt-get install sox`.

158* **Rien ne se passe en maintenant `Space` en mode maintien** : regardez l'entrée d'invite pendant que vous maintenez. Si les espaces continuent à s'accumuler, la dictée vocale est probablement désactivée ; exécutez `/voice hold` pour l'activer. Si un ou deux espaces seulement apparaissent puis rien, la dictée vocale est activée mais la détection de maintien ne se déclenche pas. La détection de maintien nécessite que votre terminal envoie des événements de répétition des touches, elle ne peut donc pas détecter une touche maintenue si la répétition des touches est désactivée au niveau du système d'exploitation. Basculez vers le mode appui avec `/voice tap` pour éviter l'exigence de répétition des touches.

159* **Appuyer sur `Space` tape un espace au lieu d'enregistrer en mode appui** : le premier appui ne commence l'enregistrement que lorsque l'entrée d'invite est vide. Effacez d'abord l'entrée, ou vérifiez que vous êtes en mode appui en exécutant `/voice tap`.

160* **`No audio detected from microphone`** : l'enregistrement a commencé mais a capturé le silence. Confirmez que le périphérique d'entrée correct est défini comme valeur par défaut du système et que son niveau d'entrée n'est pas coupé ou proche de zéro. Sur Windows, ouvrez Paramètres → Système → Son → Entrée et sélectionnez votre microphone. Sur macOS, ouvrez Paramètres système → Son → Entrée.

161* **`No speech detected`** : l'audio a atteint le service de transcription mais aucun mot n'a été reconnu. Parlez plus près du microphone, réduisez le bruit de fond et confirmez que votre [langue de dictée](#change-the-dictation-language) correspond à la langue que vous parlez.

162* **La transcription est brouillée ou dans la mauvaise langue** : la dictée utilise par défaut l'anglais. Si vous dictez dans une autre langue, définissez-la d'abord dans `/config`. Consultez [Modifier la langue de dictée](#change-the-dictation-language).

163 

164### Terminal non répertorié dans les paramètres du microphone macOS

165 

166Si votre application terminal n'apparaît pas sous Paramètres système → Confidentialité et sécurité → Microphone, il n'y a pas de bascule que vous pouvez activer. Réinitialisez l'état de permission pour votre terminal afin que la prochaine exécution de `/voice` déclenche une nouvelle invite de permission macOS.

167 

168<Steps>

169 <Step title="Réinitialiser la permission du microphone pour votre terminal">

170 Exécutez `tccutil reset Microphone <bundle-id>`, en remplaçant `<bundle-id>` par l'identifiant de votre terminal : `com.apple.Terminal` pour le Terminal intégré, ou `com.googlecode.iterm2` pour iTerm2. Pour les autres terminaux, recherchez l'identifiant avec `osascript -e 'id of app "AppName"'`.

171 

172 <Warning>

173 Vous pouvez exécuter `tccutil reset Microphone` sans ID de bundle, mais cela révoque l'accès au microphone de chaque application sur votre Mac, y compris les applications comme Zoom ou Slack. Chaque application devra demander à nouveau l'accès à la prochaine utilisation, donc ne l'exécutez pas pendant un appel actif.

174 </Warning>

175 </Step>

176 

177 <Step title="Quitter et relancer votre terminal">

178 macOS ne re-demandera pas un processus qui est déjà en cours d'exécution. Quittez l'application terminal avec Cmd+Q, pas seulement fermez ses fenêtres, puis ouvrez-la à nouveau.

179 </Step>

180 

181 <Step title="Déclencher une nouvelle invite">

182 Démarrez Claude Code et exécutez `/voice`. macOS demande l'accès au microphone ; autorisez-le.

183 </Step>

184</Steps>

185 

186## Voir aussi

187 

188* [Personnaliser les raccourcis clavier](/fr/keybindings) : relier `voice:pushToTalk` et d'autres actions de clavier CLI

189* [Configurer les paramètres](/fr/settings) : référence complète pour les clés de paramètres `voice`, `language` et autres

190* [Mode interactif](/fr/interactive-mode) : raccourcis clavier, modes d'entrée et contrôles de session

191* [Commandes](/fr/commands) : référence pour `/voice`, `/config` et toutes les autres commandes

vs-code.md +511 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Utiliser Claude Code dans VS Code

6 

7> Installez et configurez l'extension Claude Code pour VS Code. Obtenez une assistance de codage IA avec des diffs en ligne, des mentions @, un examen du plan et des raccourcis clavier.

8 

9<img src="https://mintcdn.com/claude-code/-YhHHmtSxwr7W8gy/images/vs-code-extension-interface.jpg?fit=max&auto=format&n=-YhHHmtSxwr7W8gy&q=85&s=300652d5678c63905e6b0ea9e50835f8" alt="Éditeur VS Code avec le panneau d'extension Claude Code ouvert sur le côté droit, montrant une conversation avec Claude" width="2500" height="1155" data-path="images/vs-code-extension-interface.jpg" />

10 

11L'extension VS Code fournit une interface graphique native pour Claude Code, intégrée directement dans votre IDE. C'est la façon recommandée d'utiliser Claude Code dans VS Code.

12 

13Avec l'extension, vous pouvez examiner et modifier les plans de Claude avant de les accepter, accepter automatiquement les modifications au fur et à mesure qu'elles sont apportées, mentionner des fichiers avec des plages de lignes spécifiques à partir de votre sélection, accéder à l'historique des conversations et ouvrir plusieurs conversations dans des onglets ou des fenêtres séparés.

14 

15## Prérequis

16 

17Avant d'installer, assurez-vous que vous avez :

18 

19* VS Code 1.98.0 ou supérieur

20* Un compte Anthropic (vous vous connecterez lors de la première ouverture de l'extension). Si vous utilisez un fournisseur tiers comme Amazon Bedrock ou Google Vertex AI, consultez plutôt [Utiliser des fournisseurs tiers](#use-third-party-providers).

21 

22<Tip>

23 L'extension inclut le CLI (interface de ligne de commande), auquel vous pouvez accéder à partir du terminal intégré de VS Code pour les fonctionnalités avancées. Consultez [Extension VS Code vs. CLI Claude Code](#vs-code-extension-vs-claude-code-cli) pour plus de détails.

24</Tip>

25 

26## Installer l'extension

27 

28Cliquez sur le lien de votre IDE pour installer directement :

29 

30* [Installer pour VS Code](vscode:extension/anthropic.claude-code)

31* [Installer pour Cursor](cursor:extension/anthropic.claude-code)

32 

33Ou dans VS Code, appuyez sur `Cmd+Shift+X` (Mac) ou `Ctrl+Shift+X` (Windows/Linux) pour ouvrir la vue Extensions, recherchez « Claude Code » et cliquez sur **Installer**.

34 

35<Note>Si l'extension n'apparaît pas après l'installation, redémarrez VS Code ou exécutez « Developer: Reload Window » à partir de la Palette de commandes.</Note>

36 

37## Commencer

38 

39Une fois installée, vous pouvez commencer à utiliser Claude Code via l'interface VS Code :

40 

41<Steps>

42 <Step title="Ouvrir le panneau Claude Code">

43 Dans VS Code, l'icône Spark indique Claude Code : <img src="https://mintcdn.com/claude-code/c5r9_6tjPMzFdDDT/images/vs-code-spark-icon.svg?fit=max&auto=format&n=c5r9_6tjPMzFdDDT&q=85&s=3ca45e00deadec8c8f4b4f807da94505" alt="Icône Spark" style={{display: "inline", height: "0.85em", verticalAlign: "middle"}} width="16" height="16" data-path="images/vs-code-spark-icon.svg" />

44 

45 Le moyen le plus rapide d'ouvrir Claude est de cliquer sur l'icône Spark dans la **Barre d'outils de l'éditeur** (coin supérieur droit de l'éditeur). L'icône n'apparaît que lorsque vous avez un fichier ouvert.

46 

47 <img src="https://mintcdn.com/claude-code/mfM-EyoZGnQv8JTc/images/vs-code-editor-icon.png?fit=max&auto=format&n=mfM-EyoZGnQv8JTc&q=85&s=eb4540325d94664c51776dbbfec4cf02" alt="Éditeur VS Code montrant l'icône Spark dans la Barre d'outils de l'éditeur" width="2796" height="734" data-path="images/vs-code-editor-icon.png" />

48 

49 Autres façons d'ouvrir Claude Code :

50 

51 * **Barre d'activité** : cliquez sur l'icône Spark dans la barre latérale gauche pour ouvrir la liste des sessions. Cliquez sur n'importe quelle session pour l'ouvrir en tant qu'onglet d'éditeur complet, ou démarrez-en une nouvelle. Cette icône est toujours visible dans la Barre d'activité.

52 * **Palette de commandes** : `Cmd+Shift+P` (Mac) ou `Ctrl+Shift+P` (Windows/Linux), tapez « Claude Code » et sélectionnez une option comme « Ouvrir dans un nouvel onglet »

53 * **Barre d'état** : cliquez sur **✱ Claude Code** dans le coin inférieur droit de la fenêtre. Cela fonctionne même quand aucun fichier n'est ouvert.

54 

55 Vous pouvez faire glisser le panneau Claude pour le repositionner n'importe où dans VS Code. Consultez [Personnaliser votre flux de travail](#customize-your-workflow) pour plus de détails.

56 </Step>

57 

58 <Step title="Se connecter">

59 La première fois que vous ouvrez le panneau, un écran de connexion apparaît. Cliquez sur **Se connecter** et complétez l'autorisation dans votre navigateur.

60 

61 Si vous voyez **Non connecté · Veuillez exécuter /login** plus tard, l'extension rouvre automatiquement l'écran de connexion. Si cela n'apparaît pas, rechargez la fenêtre à partir de la Palette de commandes avec **Developer: Reload Window**.

62 

63 Si vous avez `ANTHROPIC_API_KEY` défini dans votre shell mais que vous voyez toujours l'invite de connexion, VS Code n'a peut-être pas hérité de votre environnement shell. Lancez VS Code à partir d'un terminal avec `code .` pour qu'il hérite de vos variables d'environnement, ou connectez-vous avec votre compte Claude à la place.

64 

65 Après vous être connecté, une liste de contrôle **Apprendre Claude Code** apparaît. Parcourez chaque élément en cliquant sur **Montrer-moi**, ou fermez-la avec le X. Pour la rouvrir plus tard, décochez **Masquer l'intégration** dans les paramètres VS Code sous Extensions → Claude Code.

66 </Step>

67 

68 <Step title="Envoyer une invite">

69 Demandez à Claude de vous aider avec votre code ou vos fichiers, qu'il s'agisse d'expliquer comment quelque chose fonctionne, de déboguer un problème ou d'apporter des modifications.

70 

71 <Tip>Claude voit automatiquement votre texte sélectionné. Appuyez sur `Option+K` (Mac) / `Alt+K` (Windows/Linux) pour insérer également une référence de mention @ (comme `@file.ts#5-10`) dans votre invite.</Tip>

72 

73 Voici un exemple de question sur une ligne particulière dans un fichier :

74 

75 <img src="https://mintcdn.com/claude-code/FVYz38sRY-VuoGHA/images/vs-code-send-prompt.png?fit=max&auto=format&n=FVYz38sRY-VuoGHA&q=85&s=ede3ed8d8d5f940e01c5de636d009cfd" alt="Éditeur VS Code avec les lignes 2-3 sélectionnées dans un fichier Python, et le panneau Claude Code montrant une question sur ces lignes avec une référence de mention @" width="3288" height="1876" data-path="images/vs-code-send-prompt.png" />

76 </Step>

77 

78 <Step title="Examiner les modifications">

79 Lorsque Claude souhaite modifier un fichier, il affiche une comparaison côte à côte de l'original et des modifications proposées, puis demande une permission. Vous pouvez accepter, rejeter ou dire à Claude ce qu'il faut faire à la place. Si vous modifiez le contenu proposé directement dans la vue diff avant d'accepter, Claude est informé que vous l'avez modifié afin qu'il ne suppose pas que le fichier correspond à sa proposition originale.

80 

81 <img src="https://mintcdn.com/claude-code/FVYz38sRY-VuoGHA/images/vs-code-edits.png?fit=max&auto=format&n=FVYz38sRY-VuoGHA&q=85&s=e005f9b41c541c5c7c59c082f7c4841c" alt="VS Code montrant un diff des modifications proposées par Claude avec une invite de permission demandant si vous souhaitez effectuer la modification" width="3292" height="1876" data-path="images/vs-code-edits.png" />

82 </Step>

83</Steps>

84 

85Pour plus d'idées sur ce que vous pouvez faire avec Claude Code, consultez [Flux de travail courants](/fr/common-workflows).

86 

87<Tip>

88 Exécutez ' Claude Code: Open Walkthrough ' à partir de la Palette de commandes pour une visite guidée des bases.

89</Tip>

90 

91## Utiliser la zone de saisie

92 

93La zone de saisie prend en charge plusieurs fonctionnalités :

94 

95* **Modes de permission** : cliquez sur l'indicateur de mode en bas de la zone de saisie pour changer de mode. En mode normal, Claude demande une permission avant chaque action. En Plan Mode, Claude décrit ce qu'il fera et attend l'approbation avant d'apporter des modifications. VS Code ouvre automatiquement le plan en tant que document markdown complet où vous pouvez ajouter des commentaires en ligne pour donner des commentaires avant que Claude ne commence. En mode acceptation automatique, Claude apporte des modifications sans demander. Définissez la valeur par défaut dans les paramètres VS Code sous `claudeCode.initialPermissionMode`.

96* **Menu de commandes** : cliquez sur `/` ou tapez `/` pour ouvrir le menu de commandes. Les options incluent l'attachement de fichiers, le changement de modèles, l'activation de la réflexion étendue, l'affichage de l'utilisation du plan (`/usage`) et le démarrage d'une session [Remote Control](/fr/remote-control) (`/remote-control`). La section Personnaliser fournit l'accès aux serveurs MCP, hooks, mémoire, permissions et plugins. Les éléments avec une icône de terminal s'ouvrent dans le terminal intégré.

97* **Indicateur de contexte** : la zone de saisie affiche la quantité de fenêtre de contexte de Claude que vous utilisez. Claude se compacte automatiquement si nécessaire, ou vous pouvez exécuter `/compact` manuellement.

98* **Réflexion étendue** : permet à Claude de consacrer plus de temps à raisonner sur des problèmes complexes. Activez-la via le menu de commandes (`/`). Le raisonnement de Claude apparaît dans la conversation sous forme de blocs réduits : cliquez sur un bloc pour le lire, ou appuyez sur `Ctrl+O` pour développer ou réduire chaque bloc de réflexion dans la session. Consultez [Réflexion étendue](/fr/common-workflows#use-extended-thinking-thinking-mode) pour plus de détails.

99* **Entrée multiligne** : appuyez sur `Shift+Entrée` pour ajouter une nouvelle ligne sans envoyer. Cela fonctionne également dans l'entrée en texte libre ' Autre ' des dialogues de question.

100 

101### Référencer des fichiers et des dossiers

102 

103Utilisez les mentions @ pour donner à Claude du contexte sur des fichiers ou des dossiers spécifiques. Lorsque vous tapez `@` suivi d'un nom de fichier ou de dossier, Claude lit ce contenu et peut répondre à des questions à ce sujet ou y apporter des modifications. Claude Code prend en charge la correspondance floue, vous pouvez donc taper des noms partiels pour trouver ce dont vous avez besoin :

104 

105```text theme={null}

106> Explain the logic in @auth (fuzzy matches auth.js, AuthService.ts, etc.)

107> What's in @src/components/ (include a trailing slash for folders)

108```

109 

110Pour les grands PDF, vous pouvez demander à Claude de lire des pages spécifiques au lieu du fichier entier : une seule page, une plage comme les pages 1-10, ou une plage ouverte comme la page 3 et au-delà.

111 

112Lorsque vous sélectionnez du texte dans l'éditeur, Claude peut voir votre code en surbrillance automatiquement. Le pied de page de la zone de saisie affiche le nombre de lignes sélectionnées. Appuyez sur `Option+K` (Mac) / `Alt+K` (Windows/Linux) pour insérer une mention @ avec le chemin du fichier et les numéros de ligne (par exemple, `@app.ts#5-10`). Cliquez sur l'indicateur de sélection pour basculer si Claude peut voir votre texte en surbrillance - l'icône en forme de barre oblique signifie que la sélection est masquée à Claude.

113 

114Vous pouvez également maintenir `Shift` enfoncé tout en faisant glisser des fichiers dans la zone de saisie pour les ajouter en tant que pièces jointes. Cliquez sur le X sur n'importe quelle pièce jointe pour la supprimer du contexte.

115 

116### Reprendre les conversations passées

117 

118Cliquez sur le bouton **Historique des sessions** en haut du panneau Claude Code pour accéder à votre historique de conversations. Vous pouvez rechercher par mot-clé ou parcourir par heure (Aujourd'hui, Hier, 7 derniers jours, etc.). Cliquez sur n'importe quelle conversation pour la reprendre avec l'historique complet des messages. Les nouvelles sessions reçoivent des titres générés par l'IA en fonction de votre premier message. Survolez une session pour révéler les actions de renommage et de suppression : renommez pour lui donner un titre descriptif, ou supprimez pour la supprimer de la liste. Pour plus d'informations sur la reprise des sessions, consultez [Flux de travail courants](/fr/common-workflows#resume-previous-conversations).

119 

120### Reprendre les sessions distantes de Claude.ai

121 

122Si vous utilisez [Claude Code sur le web](/fr/claude-code-on-the-web), vous pouvez reprendre ces sessions distantes directement dans VS Code. Cela nécessite de se connecter avec **Claude.ai Subscription**, pas Anthropic Console.

123 

124<Steps>

125 <Step title="Ouvrir l'historique des sessions">

126 Cliquez sur le bouton **Historique des sessions** en haut du panneau Claude Code.

127 </Step>

128 

129 <Step title="Sélectionner l'onglet Distant">

130 Le dialogue affiche deux onglets : Local et Distant. Cliquez sur **Distant** pour voir les sessions de claude.ai.

131 </Step>

132 

133 <Step title="Sélectionner une session à reprendre">

134 Parcourez ou recherchez vos sessions distantes. Cliquez sur n'importe quelle session pour la télécharger et continuer la conversation localement.

135 </Step>

136</Steps>

137 

138<Note>

139 Seules les sessions web démarrées avec un référentiel GitHub apparaissent dans l'onglet Distant. La reprise charge l'historique de la conversation localement ; les modifications ne sont pas resynchronisées vers claude.ai.

140</Note>

141 

142## Personnaliser votre flux de travail

143 

144Une fois que vous êtes opérationnel, vous pouvez repositionner le panneau Claude, exécuter plusieurs sessions ou passer au mode terminal.

145 

146### Choisir où Claude se trouve

147 

148Vous pouvez faire glisser le panneau Claude pour le repositionner n'importe où dans VS Code. Saisissez l'onglet ou la barre de titre du panneau et faites-le glisser vers :

149 

150* **Barre latérale secondaire** : le côté droit de la fenêtre. Garde Claude visible pendant que vous codez.

151* **Barre latérale principale** : la barre latérale gauche avec les icônes pour l'Explorateur, la Recherche, etc.

152* **Zone d'éditeur** : ouvre Claude en tant qu'onglet à côté de vos fichiers. Utile pour les tâches secondaires.

153 

154<Tip>

155 Utilisez la barre latérale pour votre session Claude principale et ouvrez des onglets supplémentaires pour les tâches secondaires. Claude se souvient de votre emplacement préféré. L'icône de la liste des sessions de la Barre d'activité est séparée du panneau Claude : la liste des sessions est toujours visible dans la Barre d'activité, tandis que l'icône du panneau Claude n'y apparaît que lorsque le panneau est ancré à la barre latérale gauche.

156</Tip>

157 

158### Exécuter plusieurs conversations

159 

160Utilisez **Ouvrir dans un nouvel onglet** ou **Ouvrir dans une nouvelle fenêtre** à partir de la Palette de commandes pour démarrer des conversations supplémentaires. Chaque conversation maintient son propre historique et contexte, vous permettant de travailler sur différentes tâches en parallèle.

161 

162Lors de l'utilisation d'onglets, un petit point coloré sur l'icône spark indique l'état : bleu signifie qu'une demande de permission est en attente, orange signifie que Claude a terminé pendant que l'onglet était masqué.

163 

164### Passer au mode terminal

165 

166Par défaut, l'extension ouvre un panneau de chat graphique. Si vous préférez l'interface de style CLI, ouvrez le [paramètre Utiliser le terminal](vscode://settings/claudeCode.useTerminal) et cochez la case.

167 

168Vous pouvez également ouvrir les paramètres VS Code (`Cmd+,` sur Mac ou `Ctrl+,` sur Windows/Linux), aller à Extensions → Claude Code et cocher **Utiliser le terminal**.

169 

170## Gérer les plugins

171 

172L'extension VS Code inclut une interface graphique pour installer et gérer les [plugins](/fr/plugins). Tapez `/plugins` dans la zone de saisie pour ouvrir l'interface **Gérer les plugins**.

173 

174### Installer les plugins

175 

176Le dialogue des plugins affiche deux onglets : **Plugins** et **Marchés**.

177 

178Dans l'onglet Plugins :

179 

180* Les **plugins installés** apparaissent en haut avec des commutateurs pour les activer ou les désactiver

181* Les **plugins disponibles** de vos marchés configurés apparaissent ci-dessous

182* Recherchez pour filtrer les plugins par nom ou description

183* Cliquez sur **Installer** sur n'importe quel plugin disponible

184 

185Lorsque vous installez un plugin, choisissez l'étendue de l'installation :

186 

187* **Installer pour vous** : disponible dans tous vos projets (étendue utilisateur)

188* **Installer pour ce projet** : partagé avec les collaborateurs du projet (étendue du projet)

189* **Installer localement** : uniquement pour vous, uniquement dans ce référentiel (étendue locale)

190 

191### Gérer les marchés

192 

193Basculez vers l'onglet **Marchés** pour ajouter ou supprimer des sources de plugins :

194 

195* Entrez un référentiel GitHub, une URL ou un chemin local pour ajouter un nouveau marché

196* Cliquez sur l'icône d'actualisation pour mettre à jour la liste des plugins d'un marché

197* Cliquez sur l'icône de corbeille pour supprimer un marché

198 

199Après avoir apporté des modifications, une bannière vous invite à redémarrer Claude Code pour appliquer les mises à jour.

200 

201<Note>

202 La gestion des plugins dans VS Code utilise les mêmes commandes CLI sous le capot. Les plugins et les marchés que vous configurez dans l'extension sont également disponibles dans le CLI, et vice versa.

203</Note>

204 

205Pour plus d'informations sur le système de plugins, consultez [Plugins](/fr/plugins) et [Marchés de plugins](/fr/plugin-marketplaces).

206 

207## Automatiser les tâches du navigateur avec Chrome

208 

209Connectez Claude à votre navigateur Chrome pour tester les applications web, déboguer avec les journaux de la console et automatiser les flux de travail du navigateur sans quitter VS Code. Cela nécessite l'extension [Claude in Chrome](https://chromewebstore.google.com/detail/claude/fcoeoabgfenejglbffodgkkbkcdhcgfn) version 1.0.36 ou supérieure.

210 

211Tapez `@browser` dans la zone de saisie suivi de ce que vous voulez que Claude fasse :

212 

213```text theme={null}

214@browser go to localhost:3000 and check the console for errors

215```

216 

217Vous pouvez également ouvrir le menu des pièces jointes pour sélectionner des outils de navigateur spécifiques comme ouvrir un nouvel onglet ou lire le contenu de la page.

218 

219Claude ouvre de nouveaux onglets pour les tâches du navigateur et partage l'état de connexion de votre navigateur, il peut donc accéder à n'importe quel site auquel vous êtes déjà connecté.

220 

221Pour les instructions de configuration, la liste complète des capacités et le dépannage, consultez [Utiliser Claude Code avec Chrome](/fr/chrome).

222 

223## Commandes et raccourcis VS Code

224 

225Ouvrez la Palette de commandes (`Cmd+Shift+P` sur Mac ou `Ctrl+Shift+P` sur Windows/Linux) et tapez « Claude Code » pour voir toutes les commandes VS Code disponibles pour l'extension Claude Code.

226 

227Certains raccourcis dépendent du panneau qui est « actif » (recevant l'entrée au clavier). Lorsque votre curseur est dans un fichier de code, l'éditeur est actif. Lorsque votre curseur est dans la zone de saisie de Claude, Claude est actif. Utilisez `Cmd+Esc` / `Ctrl+Esc` pour basculer entre eux.

228 

229<Note>

230 Ce sont des commandes VS Code pour contrôler l'extension. Toutes les commandes Claude Code intégrées ne sont pas disponibles dans l'extension. Consultez [Extension VS Code vs. CLI Claude Code](#vs-code-extension-vs-claude-code-cli) pour plus de détails.

231</Note>

232 

233| Commande | Raccourci | Description |

234| -------------------------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |

235| Focus Input | `Cmd+Esc` (Mac) / `Ctrl+Esc` (Windows/Linux) | Basculer le focus entre l'éditeur et Claude |

236| Open in Side Bar | - | Ouvrir Claude dans la barre latérale gauche |

237| Open in Terminal | - | Ouvrir Claude en mode terminal |

238| Open in New Tab | `Cmd+Shift+Esc` (Mac) / `Ctrl+Shift+Esc` (Windows/Linux) | Ouvrir une nouvelle conversation en tant qu'onglet d'éditeur |

239| Open in New Window | - | Ouvrir une nouvelle conversation dans une fenêtre séparée |

240| New Conversation | `Cmd+N` (Mac) / `Ctrl+N` (Windows/Linux) | Démarrer une nouvelle conversation. Nécessite que Claude soit actif et `enableNewConversationShortcut` défini sur `true` |

241| Insert @-Mention Reference | `Option+K` (Mac) / `Alt+K` (Windows/Linux) | Insérer une référence au fichier actuel et à la sélection (nécessite que l'éditeur soit actif) |

242| Show Logs | - | Afficher les journaux de débogage de l'extension |

243| Logout | - | Se déconnecter de votre compte Anthropic |

244 

245### Lancer un onglet VS Code à partir d'autres outils

246 

247L'extension enregistre un gestionnaire URI à `vscode://anthropic.claude-code/open`. Utilisez-le pour ouvrir un nouvel onglet Claude Code à partir de vos propres outils : un alias shell, un signet de navigateur ou tout script capable d'ouvrir une URL. Si VS Code n'est pas déjà en cours d'exécution, l'ouverture de l'URL le lance d'abord. Si VS Code est déjà en cours d'exécution, l'URL s'ouvre dans la fenêtre actuellement active.

248 

249Invoquez le gestionnaire avec l'ouvreur d'URL de votre système d'exploitation.

250 

251<Tabs>

252 <Tab title="macOS">

253 ```bash theme={null}

254 open "vscode://anthropic.claude-code/open"

255 ```

256 </Tab>

257 

258 <Tab title="Linux">

259 ```bash theme={null}

260 xdg-open "vscode://anthropic.claude-code/open"

261 ```

262 </Tab>

263 

264 <Tab title="Windows">

265 Dans PowerShell :

266 

267 ```powershell theme={null}

268 Start-Process "vscode://anthropic.claude-code/open"

269 ```

270 

271 Dans `cmd.exe`, `start` traite son premier argument entre guillemets comme un titre de fenêtre, donc passez un titre vide avant l'URL :

272 

273 ```cmd theme={null}

274 start "" "vscode://anthropic.claude-code/open"

275 ```

276 </Tab>

277</Tabs>

278 

279Le gestionnaire accepte deux paramètres de requête optionnels :

280 

281| Paramètre | Description |

282| --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

283| `prompt` | Texte à pré-remplir dans la zone de saisie. Doit être codé en URL. L'invite est pré-remplie mais non soumise automatiquement. |

284| `session` | Un ID de session à reprendre au lieu de démarrer une nouvelle conversation. La session doit appartenir à l'espace de travail actuellement ouvert dans VS Code. Si la session n'est pas trouvée, une conversation nouvelle commence à la place. Si la session est déjà ouverte dans un onglet, cet onglet est actif. Pour capturer un ID de session par programmation, consultez [Continuer les conversations](/fr/headless#continue-conversations). |

285 

286Par exemple, pour ouvrir un onglet pré-rempli avec « review my changes » :

287 

288```text theme={null}

289vscode://anthropic.claude-code/open?prompt=review%20my%20changes

290```

291 

292Pour lancer une session terminal au lieu d'un onglet VS Code, utilisez le gestionnaire `claude-cli://` de la CLI. Consultez [Lancer des sessions à partir de liens](/fr/deep-links).

293 

294## Configurer les paramètres

295 

296L'extension a deux types de paramètres :

297 

298* **Paramètres d'extension** dans VS Code : contrôlent le comportement de l'extension dans VS Code. Ouvrez avec `Cmd+,` (Mac) ou `Ctrl+,` (Windows/Linux), puis allez à Extensions → Claude Code. Vous pouvez également taper `/` et sélectionner **General Config** pour ouvrir les paramètres.

299* **Paramètres Claude Code** dans `~/.claude/settings.json` : partagés entre l'extension et CLI. Utilisez pour les commandes autorisées, les variables d'environnement, les hooks et les serveurs MCP. Consultez [Paramètres](/fr/settings) pour plus de détails.

300 

301<Tip>

302 Ajoutez `"$schema": "https://json.schemastore.org/claude-code-settings.json"` à votre `settings.json` pour obtenir l'autocomplétion et la validation en ligne pour tous les paramètres disponibles directement dans VS Code.

303</Tip>

304 

305### Paramètres d'extension

306 

307| Paramètre | Par défaut | Description |

308| --------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

309| `useTerminal` | `false` | Lancer Claude en mode terminal au lieu du panneau graphique |

310| `initialPermissionMode` | `default` | Contrôle les invites d'approbation pour les nouvelles conversations : `default`, `plan`, `acceptEdits` ou `bypassPermissions`. Consultez [modes de permission](/fr/permission-modes). |

311| `preferredLocation` | `panel` | Où Claude s'ouvre : `sidebar` (droite) ou `panel` (nouvel onglet) |

312| `autosave` | `true` | Enregistrement automatique des fichiers avant que Claude ne les lise ou ne les écrive |

313| `useCtrlEnterToSend` | `false` | Utiliser Ctrl/Cmd+Entrée au lieu d'Entrée pour envoyer les invites |

314| `enableNewConversationShortcut` | `false` | Activer Cmd/Ctrl+N pour démarrer une nouvelle conversation |

315| `hideOnboarding` | `false` | Masquer la liste de contrôle d'intégration (icône de chapeau de graduation) |

316| `respectGitIgnore` | `true` | Exclure les modèles .gitignore des recherches de fichiers |

317| `usePythonEnvironment` | `true` | Activer l'environnement Python de l'espace de travail lors de l'exécution de Claude. Nécessite l'extension Python. |

318| `environmentVariables` | `[]` | Définir les variables d'environnement pour le processus Claude. Utilisez plutôt les paramètres Claude Code pour la configuration partagée. |

319| `disableLoginPrompt` | `false` | Ignorer les invites d'authentification (pour les configurations de fournisseur tiers) |

320| `allowDangerouslySkipPermissions` | `false` | Ajoute [Auto mode](/fr/permission-modes#eliminate-prompts-with-auto-mode) et Bypass permissions au sélecteur de mode. Auto mode a [plan, admin, model, and provider requirements](/fr/permission-modes#eliminate-prompts-with-auto-mode), donc il peut rester indisponible même avec ce basculement activé. Utilisez Bypass permissions uniquement dans les sandboxes sans accès à Internet. |

321| `claudeProcessWrapper` | - | Chemin exécutable utilisé pour lancer le processus Claude |

322 

323## Extension VS Code vs. CLI Claude Code

324 

325Claude Code est disponible à la fois en tant qu'extension VS Code (panneau graphique) et en tant que CLI (interface de ligne de commande dans le terminal). Certaines fonctionnalités ne sont disponibles que dans le CLI. Si vous avez besoin d'une fonctionnalité CLI uniquement, exécutez `claude` dans le terminal intégré de VS Code.

326 

327| Fonctionnalité | CLI | Extension VS Code |

328| ---------------------------- | -------------------- | --------------------------------------------------------------------------------------------------------- |

329| Commandes et skills | [Tous](/fr/commands) | Sous-ensemble (tapez `/` pour voir les disponibles) |

330| Configuration du serveur MCP | Oui | Partiel (ajouter des serveurs via CLI ; gérer les serveurs existants avec `/mcp` dans le panneau de chat) |

331| Checkpoints | Oui | Oui |

332| Raccourci bash `!` | Oui | Non |

333| Complément de tabulation | Oui | Non |

334 

335### Rembobiner avec les checkpoints

336 

337L'extension VS Code prend en charge les checkpoints, qui suivent les modifications de fichiers de Claude et vous permettent de rembobiner à un état précédent. Survolez n'importe quel message pour révéler le bouton de rembobinage, puis choisissez parmi trois options :

338 

339* **Fork conversation from here** : démarrer une nouvelle branche de conversation à partir de ce message tout en conservant toutes les modifications de code

340* **Rewind code to here** : annuler les modifications de fichiers jusqu'à ce point dans la conversation tout en conservant l'historique complet de la conversation

341* **Fork conversation and rewind code** : démarrer une nouvelle branche de conversation et annuler les modifications de fichiers jusqu'à ce point

342 

343Pour tous les détails sur le fonctionnement des checkpoints et leurs limitations, consultez [Checkpointing](/fr/checkpointing).

344 

345### Exécuter le CLI dans VS Code

346 

347Pour utiliser le CLI tout en restant dans VS Code, ouvrez le terminal intégré (`` Ctrl+` `` sur Windows/Linux ou `` Cmd+` `` sur Mac) et exécutez `claude`. Le CLI s'intègre automatiquement à votre IDE pour des fonctionnalités comme l'affichage des diffs et le partage des diagnostics.

348 

349Si vous utilisez un terminal externe, exécutez `/ide` dans Claude Code pour le connecter à VS Code.

350 

351### Basculer entre l'extension et le CLI

352 

353L'extension et le CLI partagent le même historique de conversations. Pour continuer une conversation d'extension dans le CLI, exécutez `claude --resume` dans le terminal. Cela ouvre un sélecteur interactif où vous pouvez rechercher et sélectionner votre conversation.

354 

355### Inclure la sortie du terminal dans les invites

356 

357Référencez la sortie du terminal dans vos invites en utilisant `@terminal:name` où `name` est le titre du terminal. Cela permet à Claude de voir la sortie de la commande, les messages d'erreur ou les journaux sans copier-coller.

358 

359### Surveiller les processus en arrière-plan

360 

361Lorsque Claude exécute des commandes longues, l'extension affiche la progression dans la barre d'état. Cependant, la visibilité des tâches en arrière-plan est limitée par rapport au CLI. Pour une meilleure visibilité, demandez à Claude de générer la commande afin que vous puissiez l'exécuter dans le terminal intégré de VS Code.

362 

363### Connecter à des outils externes avec MCP

364 

365Les serveurs MCP (Model Context Protocol) donnent à Claude accès à des outils externes, des bases de données et des API.

366 

367Pour ajouter un serveur MCP, ouvrez le terminal intégré (`` Ctrl+` `` ou `` Cmd+` ``) et exécutez `claude mcp add`. L'exemple ci-dessous ajoute le serveur MCP distant de GitHub, qui s'authentifie avec un [jeton d'accès personnel](https://github.com/settings/personal-access-tokens) transmis en tant qu'en-tête :

368 

369```bash theme={null}

370claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \

371 --header "Authorization: Bearer YOUR_GITHUB_PAT"

372```

373 

374Une fois configuré, demandez à Claude d'utiliser les outils (par exemple, « Review PR #456 »).

375 

376Pour gérer les serveurs MCP sans quitter VS Code, tapez `/mcp` dans le panneau de chat. Le dialogue de gestion MCP vous permet d'activer ou de désactiver les serveurs, de vous reconnecter à un serveur et de gérer l'authentification OAuth. Consultez la [documentation MCP](/fr/mcp) pour les serveurs disponibles.

377 

378## Travailler avec git

379 

380Claude Code s'intègre à git pour vous aider avec les flux de travail de contrôle de version directement dans VS Code. Demandez à Claude de valider les modifications, de créer des demandes de tirage ou de travailler sur plusieurs branches.

381 

382### Créer des commits et des demandes de tirage

383 

384Claude peut mettre en scène les modifications, écrire des messages de commit et créer des demandes de tirage en fonction de votre travail :

385 

386```text theme={null}

387> commit my changes with a descriptive message

388> create a pr for this feature

389> summarize the changes I've made to the auth module

390```

391 

392Lors de la création de demandes de tirage, Claude génère des descriptions basées sur les modifications de code réelles et peut ajouter du contexte sur les tests ou les décisions de mise en œuvre.

393 

394### Utiliser les git worktrees pour les tâches parallèles

395 

396Utilisez l'indicateur `--worktree` (`-w`) pour démarrer Claude dans un worktree isolé avec ses propres fichiers et branche :

397 

398```bash theme={null}

399claude --worktree feature-auth

400```

401 

402Chaque worktree maintient un état de fichier indépendant tout en partageant l'historique git. Cela empêche les instances de Claude d'interférer les unes avec les autres lorsqu'elles travaillent sur différentes tâches. Pour plus de détails, consultez [Exécuter des sessions Claude Code parallèles avec Git worktrees](/fr/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees).

403 

404## Utiliser des fournisseurs tiers

405 

406Par défaut, Claude Code se connecte directement à l'API d'Anthropic. Si votre organisation utilise Amazon Bedrock, Google Vertex AI ou Microsoft Foundry pour accéder à Claude, configurez l'extension pour utiliser votre fournisseur à la place :

407 

408<Steps>

409 <Step title="Désactiver l'invite de connexion">

410 Ouvrez le [paramètre Désactiver l'invite de connexion](vscode://settings/claudeCode.disableLoginPrompt) et cochez la case.

411 

412 Vous pouvez également ouvrir les paramètres VS Code (`Cmd+,` sur Mac ou `Ctrl+,` sur Windows/Linux), recherchez ' Claude Code login ' et cochez **Désactiver l'invite de connexion**.

413 </Step>

414 

415 <Step title="Configurer votre fournisseur">

416 Suivez le guide de configuration de votre fournisseur :

417 

418 * [Claude Code sur Amazon Bedrock](/fr/amazon-bedrock)

419 * [Claude Code sur Google Vertex AI](/fr/google-vertex-ai)

420 * [Claude Code sur Microsoft Foundry](/fr/microsoft-foundry)

421 

422 Ces guides couvrent la configuration de votre fournisseur dans `~/.claude/settings.json`, ce qui garantit que vos paramètres sont partagés entre l'extension VS Code et le CLI.

423 </Step>

424</Steps>

425 

426## Sécurité et confidentialité

427 

428Votre code reste privé. Claude Code traite votre code pour fournir une assistance mais ne l'utilise pas pour entraîner les modèles. Pour plus de détails sur la gestion des données et comment refuser la journalisation, consultez [Données et confidentialité](/fr/data-usage).

429 

430Avec les permissions d'édition automatique activées, Claude Code peut modifier les fichiers de configuration VS Code (comme `settings.json` ou `tasks.json`) que VS Code peut exécuter automatiquement. Pour réduire le risque lorsque vous travaillez avec du code non fiable :

431 

432* Activez le [Mode restreint VS Code](https://code.visualstudio.com/docs/editor/workspace-trust#_restricted-mode) pour les espaces de travail non fiables

433* Utilisez le mode d'approbation manuelle au lieu de l'acceptation automatique pour les modifications

434* Examinez attentivement les modifications avant de les accepter

435 

436### Le serveur MCP IDE intégré

437 

438Lorsque l'extension est active, elle exécute un serveur MCP local auquel le CLI se connecte automatiquement. C'est ainsi que le CLI ouvre les diffs dans la visionneuse de diffs native de VS Code, lit votre sélection actuelle pour les mentions `@` et — lorsque vous travaillez dans un notebook Jupyter — demande à VS Code d'exécuter les cellules.

439 

440Le serveur est nommé `ide` et est masqué de `/mcp` car il n'y a rien à configurer. Cependant, si votre organisation utilise un hook `PreToolUse` pour créer une liste blanche des outils MCP, vous devez savoir qu'il existe.

441 

442**Transport et authentification.** Le serveur se lie à `127.0.0.1` sur un port élevé aléatoire et n'est pas accessible à partir d'autres machines. Chaque activation d'extension génère un jeton d'authentification aléatoire frais que le CLI doit présenter pour se connecter. Le jeton est écrit dans un fichier de verrouillage sous `~/.claude/ide/` avec les permissions `0600` dans un répertoire `0700`, donc seul l'utilisateur exécutant VS Code peut le lire.

443 

444**Outils exposés au modèle.** Le serveur héberge une douzaine d'outils, mais seulement deux sont visibles au modèle. Le reste est un RPC interne que le CLI utilise pour sa propre interface utilisateur — ouvrir les diffs, lire les sélections, enregistrer les fichiers — et sont filtrés avant que la liste des outils n'atteigne Claude.

445 

446| Nom de l'outil (tel que vu par les hooks) | Ce qu'il fait | Écrit ? |

447| ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |

448| `mcp__ide__getDiagnostics` | Retourne les diagnostics du serveur de langage — les erreurs et avertissements dans le panneau Problèmes de VS Code. Optionnellement limité à un fichier. | Non |

449| `mcp__ide__executeCode` | Exécute le code Python dans le kernel du notebook Jupyter actif. Consultez le flux de confirmation ci-dessous. | Oui |

450 

451**L'exécution Jupyter demande toujours d'abord.** `mcp__ide__executeCode` ne peut rien exécuter silencieusement. À chaque appel, le code est inséré en tant que nouvelle cellule à la fin du notebook actif, VS Code le fait défiler dans la vue, et un Quick Pick natif vous demande d'**Exécuter** ou d'**Annuler**. L'annulation — ou le rejet du sélecteur avec `Esc` — retourne une erreur à Claude et rien ne s'exécute. L'outil refuse également catégoriquement lorsqu'il n'y a pas de notebook actif, lorsque l'extension Jupyter (`ms-toolsai.jupyter`) n'est pas installée, ou lorsque le kernel n'est pas Python.

452 

453<Note>

454 Le Quick Pick de confirmation est séparé des hooks `PreToolUse`. Une entrée de liste blanche pour `mcp__ide__executeCode` permet à Claude de *proposer* d'exécuter une cellule ; le Quick Pick dans VS Code est ce qui lui permet de l'*exécuter réellement*.

455</Note>

456 

457<a id="troubleshooting" />

458 

459## Corriger les problèmes courants

460 

461### L'extension ne s'installe pas

462 

463* Assurez-vous que vous avez une version compatible de VS Code (1.98.0 ou ultérieure)

464* Vérifiez que VS Code a la permission d'installer des extensions

465* Essayez d'installer directement à partir de la [Place de marché VS Code](https://marketplace.visualstudio.com/items?itemName=anthropic.claude-code)

466 

467### L'icône Spark n'est pas visible

468 

469L'icône Spark apparaît dans la **Barre d'outils de l'éditeur** (coin supérieur droit de l'éditeur) lorsque vous avez un fichier ouvert. Si vous ne la voyez pas :

470 

4711. **Ouvrir un fichier** : L'icône nécessite qu'un fichier soit ouvert. Avoir juste un dossier ouvert ne suffit pas.

4722. **Vérifier la version de VS Code** : Nécessite 1.98.0 ou supérieur (Aide → À propos)

4733. **Redémarrer VS Code** : Exécutez « Developer: Reload Window » à partir de la Palette de commandes

4744. **Désactiver les extensions conflictuelles** : Désactivez temporairement les autres extensions IA (Cline, Continue, etc.)

4755. **Vérifier la confiance de l'espace de travail** : L'extension ne fonctionne pas en Mode restreint

476 

477Vous pouvez également cliquer sur « ✱ Claude Code » dans la **Barre d'état** (coin inférieur droit). Cela fonctionne même sans fichier ouvert. Vous pouvez également utiliser la **Palette de commandes** (`Cmd+Shift+P` / `Ctrl+Shift+P`) et taper « Claude Code ».

478 

479### Claude Code ne répond jamais

480 

481Si Claude Code ne répond pas à vos invites :

482 

4831. **Vérifier votre connexion Internet** : Assurez-vous que vous avez une connexion Internet stable

4842. **Démarrer une nouvelle conversation** : Essayez de démarrer une nouvelle conversation pour voir si le problème persiste

4853. **Essayer le CLI** : Exécutez `claude` à partir du terminal pour voir si vous obtenez des messages d'erreur plus détaillés

486 

487Si les problèmes persistent, [déposez un problème sur GitHub](https://github.com/anthropics/claude-code/issues) avec des détails sur l'erreur.

488 

489## Désinstaller l'extension

490 

491Pour désinstaller l'extension Claude Code :

492 

4931. Ouvrez la vue Extensions (`Cmd+Shift+X` sur Mac ou `Ctrl+Shift+X` sur Windows/Linux)

4942. Recherchez « Claude Code »

4953. Cliquez sur **Désinstaller**

496 

497Pour également supprimer les données d'extension et réinitialiser tous les paramètres :

498 

499```bash theme={null}

500rm -rf ~/.vscode/globalStorage/anthropic.claude-code

501```

502 

503Pour une aide supplémentaire, consultez le [guide de dépannage](/fr/troubleshooting).

504 

505## Étapes suivantes

506 

507Maintenant que vous avez Claude Code configuré dans VS Code :

508 

509* [Explorez les flux de travail courants](/fr/common-workflows) pour tirer le meilleur parti de Claude Code

510* [Configurez les serveurs MCP](/fr/mcp) pour étendre les capacités de Claude avec des outils externes. Ajoutez des serveurs en utilisant le CLI, puis gérez-les avec `/mcp` dans le panneau de chat.

511* [Configurez les paramètres Claude Code](/fr/settings) pour personnaliser les commandes autorisées, les hooks et bien d'autres. Ces paramètres sont partagés entre l'extension et le CLI.

web-quickstart.md +220 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Démarrer avec Claude Code sur le web

6 

7> Exécutez Claude Code dans le cloud depuis votre navigateur ou téléphone. Connectez un référentiel GitHub, soumettez une tâche et examinez la PR sans configuration locale.

8 

9<Note>

10 Claude Code sur le web est en aperçu de recherche pour les utilisateurs Pro, Max et Team, ainsi que pour les utilisateurs Enterprise disposant de sièges premium ou de sièges Chat + Claude Code.

11</Note>

12 

13Claude Code sur le web s'exécute sur l'infrastructure cloud gérée par Anthropic au lieu de votre machine. Soumettez des tâches depuis [claude.ai/code](https://claude.ai/code) dans votre navigateur ou l'application mobile Claude.

14 

15Vous aurez besoin d'un référentiel GitHub pour [démarrer](#connect-github-and-create-an-environment). Claude le clone dans une machine virtuelle isolée, effectue des modifications et pousse une branche pour que vous la révisiez. Les sessions persistent sur les appareils, donc une tâche que vous commencez sur votre ordinateur portable est prête à être examinée depuis votre téléphone plus tard.

16 

17Claude Code sur le web fonctionne bien pour :

18 

19* **Tâches parallèles** : exécutez plusieurs tâches indépendantes à la fois, chacune dans sa propre session et branche, sans gérer plusieurs worktrees

20* **Référentiels que vous n'avez pas localement** : Claude clone le référentiel à nouveau à chaque session, vous n'avez donc pas besoin de l'avoir extrait

21* **Tâches qui ne nécessitent pas de direction fréquente** : soumettez une tâche bien définie, faites autre chose et examinez le résultat quand Claude a terminé

22* **Questions de code et exploration** : comprenez une base de code ou tracez comment une fonctionnalité est implémentée sans extraction locale

23 

24Pour les travaux qui nécessitent votre configuration locale, vos outils ou votre environnement, l'exécution de Claude Code localement ou l'utilisation de [Remote Control](/fr/remote-control) est plus appropriée.

25 

26## Comment les sessions s'exécutent

27 

28Quand vous soumettez une tâche :

29 

301. **Clone et préparation** : votre référentiel est cloné sur une VM gérée par Anthropic, et votre [script de configuration](/fr/claude-code-on-the-web#setup-scripts) s'exécute s'il est configuré.

312. **Configurer le réseau** : l'accès à Internet est défini en fonction du [niveau d'accès](/fr/claude-code-on-the-web#access-levels) de votre environnement.

323. **Travail** : Claude analyse le code, effectue des modifications, exécute des tests et vérifie son travail. Vous pouvez regarder et diriger tout au long du processus, ou vous éloigner et revenir quand c'est fait.

334. **Pousser la branche** : quand Claude atteint un point d'arrêt, il pousse sa branche vers GitHub. Vous examinez le diff, laissez des commentaires en ligne, créez une PR ou envoyez un autre message pour continuer.

34 

35La session ne se ferme pas quand la branche est poussée. La création de PR et les modifications supplémentaires se font toutes dans la même conversation.

36 

37## Comparer les façons d'exécuter Claude Code

38 

39Claude Code se comporte de la même manière partout. Ce qui change, c'est où le code s'exécute et si votre configuration locale est disponible. L'application Desktop offre à la fois des sessions locales et cloud, donc ses réponses ci-dessous dépendent de celle que vous choisissez :

40 

41| | Sur le web | Remote Control | Terminal CLI | Application Desktop |

42| :-------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------- | :---------------------- | :--------------------------------- |

43| **Le code s'exécute sur** | VM cloud Anthropic | Votre machine | Votre machine | Votre machine ou VM cloud |

44| **Vous discutez depuis** | claude.ai ou application mobile | claude.ai ou application mobile | Votre terminal | L'interface utilisateur Desktop |

45| **Utilise votre configuration locale** | Non, référentiel uniquement | Oui | Oui | Oui pour local, non pour cloud |

46| **Nécessite GitHub** | Oui, ou [regroupez un référentiel local](/fr/claude-code-on-the-web#send-local-repositories-without-github) via `--remote` | Non | Non | Uniquement pour les sessions cloud |

47| **Continue de s'exécuter si vous vous déconnectez** | Oui | Tant que le terminal reste ouvert | Non | Dépend du type de session |

48| **[Modes de permission](/fr/permission-modes)** | Accepter automatiquement les modifications, Plan | Demander, Accepter automatiquement les modifications, Plan | Tous les modes | Dépend du type de session |

49| **Accès réseau** | Configurable par environnement | Réseau de votre machine | Réseau de votre machine | Dépend du type de session |

50 

51Consultez la [documentation du démarrage rapide du terminal](/fr/quickstart), [Application Desktop](/fr/desktop) ou [Remote Control](/fr/remote-control) pour les configurer.

52 

53## Connecter GitHub et créer un environnement

54 

55La configuration est un processus unique. Si vous utilisez déjà la CLI GitHub, vous pouvez [le faire depuis votre terminal](#connect-from-your-terminal) au lieu du navigateur.

56 

57<Steps>

58 <Step title="Visitez claude.ai/code">

59 Allez à [claude.ai/code](https://claude.ai/code) et connectez-vous avec votre compte Anthropic.

60 </Step>

61 

62 <Step title="Installez l'application Claude GitHub">

63 Après vous être connecté, claude.ai/code vous invite à connecter GitHub. Suivez l'invite pour installer l'application Claude GitHub et lui accorder l'accès à vos référentiels. Les sessions cloud fonctionnent avec les référentiels GitHub existants, donc pour démarrer un nouveau projet, [créez d'abord un référentiel vide sur GitHub](https://github.com/new).

64 </Step>

65 

66 <Step title="Créez votre environnement">

67 Après avoir connecté GitHub, vous serez invité à créer un environnement cloud. L'environnement contrôle l'accès réseau que Claude a pendant les sessions et ce qui s'exécute quand une nouvelle session est créée. Consultez [Outils installés](/fr/claude-code-on-the-web#installed-tools) pour voir ce qui est disponible sans aucune configuration.

68 

69 Le formulaire a ces champs :

70 

71 * **Nom** : une étiquette d'affichage. Utile quand vous avez plusieurs environnements pour différents projets ou niveaux d'accès.

72 * **Accès réseau** : contrôle ce que la session peut atteindre sur Internet. Par défaut, `Trusted`, permet les connexions aux [registres de paquets courants](/fr/claude-code-on-the-web#default-allowed-domains) comme npm, PyPI et RubyGems tout en bloquant l'accès général à Internet.

73 * **Variables d'environnement** : variables optionnelles disponibles dans chaque session, au format `.env`. N'enveloppez pas les valeurs entre guillemets, car les guillemets sont stockés comme faisant partie de la valeur. Celles-ci sont visibles par quiconque peut modifier cet environnement.

74 * **Script de configuration** : un script Bash optionnel qui s'exécute avant le lancement de Claude Code. Utilisez-le pour installer les outils système que la VM cloud n'inclut pas, comme `apt install -y gh`. Le résultat est [mis en cache](/fr/claude-code-on-the-web#environment-caching), donc le script ne se réexécute pas à chaque session. Consultez [Scripts de configuration](/fr/claude-code-on-the-web#setup-scripts) pour des exemples et des conseils de débogage.

75 

76 Pour un premier projet, laissez les valeurs par défaut et cliquez sur **Créer un environnement**. Vous pouvez [le modifier plus tard ou créer des environnements supplémentaires](/fr/claude-code-on-the-web#configure-your-environment) pour différents projets.

77 </Step>

78</Steps>

79 

80### Connecter depuis votre terminal

81 

82Si vous utilisez déjà la CLI GitHub (`gh`), vous pouvez configurer Claude Code sur le web sans ouvrir un navigateur. Cela nécessite la [CLI Claude Code](/fr/quickstart). `/web-setup` lit votre jeton `gh` local, le lie à votre compte Claude et crée un environnement cloud par défaut si vous n'en avez pas.

83 

84<Note>

85 Les organisations avec [Zero Data Retention](/fr/zero-data-retention) activé ne peuvent pas utiliser `/web-setup` ou d'autres fonctionnalités de session cloud. Si la CLI GitHub n'est pas installée ou authentifiée, `/web-setup` ouvre le flux d'intégration du navigateur à la place.

86</Note>

87 

88<Steps>

89 <Step title="Authentifiez-vous avec la CLI GitHub">

90 Dans votre shell, authentifiez la CLI GitHub si vous ne l'avez pas déjà fait :

91 

92 ```bash theme={null}

93 gh auth login

94 ```

95 </Step>

96 

97 <Step title="Connectez-vous à Claude">

98 Dans la CLI Claude Code, exécutez `/login` pour vous connecter avec votre compte claude.ai. Ignorez cette étape si vous êtes déjà connecté.

99 </Step>

100 

101 <Step title="Exécutez /web-setup">

102 Dans la CLI Claude Code, exécutez :

103 

104 ```text theme={null}

105 /web-setup

106 ```

107 

108 Cela synchronise votre jeton `gh` avec votre compte Claude. Si vous n'avez pas encore d'environnement cloud, `/web-setup` en crée un avec accès réseau Trusted et aucun script de configuration. Vous pouvez [modifier l'environnement ou ajouter des variables](/fr/claude-code-on-the-web#configure-your-environment) après. Une fois que `/web-setup` est terminé, vous pouvez démarrer des sessions cloud depuis votre terminal avec [`--remote`](/fr/claude-code-on-the-web#from-terminal-to-web) ou configurer des tâches récurrentes avec [`/schedule`](/fr/routines).

109 </Step>

110</Steps>

111 

112## Démarrer une tâche

113 

114Avec GitHub connecté et un environnement créé, vous êtes prêt à soumettre des tâches.

115 

116<Steps>

117 <Step title="Sélectionnez un référentiel et une branche">

118 Depuis [claude.ai/code](https://claude.ai/code) ou l'onglet Code dans l'application mobile Claude, cliquez sur le sélecteur de référentiel sous la zone de saisie et choisissez un référentiel dans lequel Claude doit travailler. Chaque référentiel affiche un sélecteur de branche. Changez-le pour démarrer Claude à partir d'une branche de fonctionnalité au lieu de la branche par défaut. Vous pouvez ajouter plusieurs référentiels pour travailler sur plusieurs dans une seule session.

119 </Step>

120 

121 <Step title="Choisissez un mode de permission">

122 Le menu déroulant du mode à côté de l'entrée par défaut est **Accepter automatiquement les modifications**, où Claude effectue des modifications et pousse une branche sans s'arrêter pour approbation. Basculez vers **Plan mode** si vous voulez que Claude propose une approche et attende votre feu vert avant de modifier les fichiers. Les sessions cloud n'offrent pas les permissions Ask, Auto mode ou Bypass permissions. Consultez [Modes de permission](/fr/permission-modes) pour la liste complète.

123 </Step>

124 

125 <Step title="Décrivez la tâche et soumettez">

126 Tapez une description de ce que vous voulez et appuyez sur Entrée. Soyez spécifique :

127 

128 * Nommez le fichier ou la fonction : ' Ajouter un README avec les instructions de configuration ' ou ' Corriger le test d'authentification défaillant dans `tests/test_auth.py` ' est mieux que ' corriger les tests '

129 * Collez la sortie d'erreur si vous l'avez

130 * Décrivez le comportement attendu, pas seulement le symptôme

131 

132 Claude clone les référentiels, exécute votre script de configuration s'il est configuré et commence à travailler. Chaque tâche obtient sa propre session et sa propre branche, vous n'avez donc pas besoin d'attendre qu'une se termine avant de commencer une autre.

133 </Step>

134</Steps>

135 

136## Pré-remplir les sessions

137 

138Vous pouvez pré-remplir l'invite, les référentiels et l'environnement pour une nouvelle session en ajoutant des paramètres de requête à l'URL [claude.ai/code](https://claude.ai/code). Utilisez ceci pour créer des intégrations telles qu'un bouton dans votre suivi de problèmes qui ouvre Claude Code avec la description du problème comme invite.

139 

140| Paramètre | Description |

141| :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

142| `prompt` | Texte d'invite à pré-remplir dans la zone de saisie. L'alias `q` est également accepté. |

143| `prompt_url` | URL pour récupérer le texte d'invite, pour les invites trop longues pour être intégrées dans une chaîne de requête. L'URL doit autoriser les demandes cross-origin. Ignoré quand `prompt` est également défini. |

144| `repositories` | Liste séparée par des virgules de slugs `owner/repo` à présélectionner. L'alias `repo` est également accepté. |

145| `environment` | Nom ou ID de l'[environnement](#connect-github-and-create-an-environment) à présélectionner. |

146 

147Encodez en URL chaque valeur. L'exemple ci-dessous ouvre le formulaire avec une invite et un référentiel déjà sélectionnés :

148 

149```text theme={null}

150https://claude.ai/code?prompt=Fix%20the%20login%20bug&repositories=acme/webapp

151```

152 

153## Examiner et itérer

154 

155Quand Claude a terminé, examinez les modifications, laissez des commentaires sur des lignes spécifiques et continuez jusqu'à ce que le diff soit correct.

156 

157<Steps>

158 <Step title="Ouvrez la vue diff">

159 Un indicateur diff affiche les lignes ajoutées et supprimées dans la session, par exemple `+42 -18`. Sélectionnez-le pour ouvrir la vue diff, avec une liste de fichiers à gauche et les modifications à droite.

160 </Step>

161 

162 <Step title="Laissez des commentaires en ligne">

163 Sélectionnez n'importe quelle ligne dans le diff, tapez vos commentaires et appuyez sur Entrée. Les commentaires s'accumulent jusqu'à ce que vous envoyiez votre prochain message, puis ils sont regroupés avec celui-ci. Claude voit ' à `src/auth.ts:47`, ne capturez pas l'erreur ici ' aux côtés de votre instruction principale, vous n'avez donc pas à décrire où se trouve le problème.

164 </Step>

165 

166 <Step title="Créez une demande de tirage">

167 Quand le diff est correct, sélectionnez **Créer une PR** en haut de la vue diff. Vous pouvez l'ouvrir comme une PR complète, un brouillon, ou accéder à la page de composition de GitHub avec un titre et une description générés.

168 </Step>

169 

170 <Step title="Continuez à itérer après la PR">

171 La session reste active après la création de la PR. Collez la sortie d'échec CI ou les commentaires des examinateurs dans le chat et demandez à Claude de les traiter. Pour que Claude surveille la PR automatiquement, consultez [Correction automatique des demandes de tirage](/fr/claude-code-on-the-web#auto-fix-pull-requests).

172 </Step>

173</Steps>

174 

175## Dépanner la configuration

176 

177### Aucun référentiel n'apparaît après la connexion à GitHub

178 

179L'application Claude GitHub a besoin d'un accès explicite à chaque référentiel que vous voulez utiliser. Sur github.com, ouvrez **Paramètres → Applications → Claude → Configurer** et vérifiez que votre référentiel est listé sous **Accès aux référentiels**. Les référentiels privés ont besoin de la même autorisation que les référentiels publics.

180 

181### La page affiche uniquement un bouton de connexion GitHub

182 

183Les sessions cloud nécessitent un compte GitHub connecté. Connectez-vous via le flux du navigateur ci-dessus, ou exécutez `/web-setup` depuis votre terminal si vous utilisez la CLI GitHub. Si vous préférez ne pas connecter GitHub du tout, consultez [Remote Control](/fr/remote-control) pour exécuter Claude Code sur votre propre machine et le surveiller depuis le web.

184 

185### « Non disponible pour l'organisation sélectionnée »

186 

187Les organisations Enterprise peuvent avoir besoin qu'un administrateur active Claude Code sur le web. Contactez votre équipe de compte Anthropic.

188 

189### `/web-setup` retourne « Commande inconnue »

190 

191`/web-setup` s'exécute à l'intérieur de la CLI Claude Code, pas votre shell. Lancez `claude` d'abord, puis tapez `/web-setup` à l'invite.

192 

193Si vous l'avez tapé à l'intérieur de Claude Code et voyez toujours l'erreur, votre CLI est plus ancienne que v2.1.80 ou vous êtes authentifié avec une clé API ou un fournisseur tiers au lieu d'un abonnement claude.ai. Exécutez `claude update`, puis `/login` pour vous connecter avec votre compte claude.ai.

194 

195### « Impossible de créer un environnement cloud » ou « Aucun environnement cloud disponible » lors de l'utilisation de `--remote` ou ultraplan

196 

197Les fonctionnalités de session à distance créent automatiquement un environnement cloud par défaut si vous n'en avez pas. Si vous voyez « Impossible de créer un environnement cloud », la création automatique a échoué. {/* max-version: 2.1.100 */}Si vous voyez « Aucun environnement cloud disponible », votre CLI est antérieur à la création automatique. Dans les deux cas, exécutez `/web-setup` dans la CLI Claude Code pour en créer un manuellement, ou visitez [claude.ai/code](https://claude.ai/code) et suivez l'étape **Créez votre environnement** ci-dessus.

198 

199### Le script de configuration a échoué

200 

201Le script de configuration s'est terminé avec un statut non-zéro, ce qui bloque le démarrage de la session. Les causes courantes :

202 

203* Une installation de paquet a échoué parce que le registre n'est pas dans votre [niveau d'accès réseau](/fr/claude-code-on-the-web#access-levels). `Trusted` couvre la plupart des gestionnaires de paquets ; `None` les bloque tous.

204* Le script fait référence à un fichier ou un chemin qui n'existe pas dans un clone frais.

205* Une commande qui fonctionne localement a besoin d'une invocation différente sur Ubuntu.

206 

207Pour déboguer, ajoutez `set -x` en haut du script pour voir quelle commande a échoué. Pour les commandes non critiques, ajoutez `|| true` pour qu'elles ne bloquent pas le démarrage de la session.

208 

209### La session continue de s'exécuter après la fermeture de l'onglet

210 

211C'est intentionnel. Fermer l'onglet ou naviguer ailleurs n'arrête pas la session. Elle continue de s'exécuter en arrière-plan jusqu'à ce que Claude termine la tâche actuelle, puis elle reste inactive. Depuis la barre latérale, vous pouvez [archiver une session](/fr/claude-code-on-the-web#archive-sessions) pour la masquer de votre liste, ou [la supprimer](/fr/claude-code-on-the-web#delete-sessions) pour la supprimer définitivement.

212 

213## Étapes suivantes

214 

215Maintenant que vous pouvez soumettre et examiner des tâches, ces pages couvrent ce qui vient ensuite : démarrer des sessions cloud depuis votre terminal, planifier des travaux récurrents et donner à Claude des instructions permanentes.

216 

217* [Utiliser Claude Code sur le web](/fr/claude-code-on-the-web) : la référence complète, y compris la téléportation de sessions vers votre terminal, les scripts de configuration, les variables d'environnement et la configuration réseau

218* [Routines](/fr/routines) : automatisez le travail selon un calendrier, via un appel API ou en réponse aux événements GitHub

219* [CLAUDE.md](/fr/memory) : donnez à Claude des instructions et un contexte persistants qui se chargent au début de chaque session

220* Installez l'application mobile Claude pour [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) ou [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude) pour surveiller les sessions depuis votre téléphone. Depuis la CLI Claude Code, `/mobile` affiche un code QR.

whats-new.md +49 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Quoi de neuf

6 

7> Un digest hebdomadaire des fonctionnalités notables de Claude Code, avec des extraits de code, des démos et du contexte sur leur importance.

8 

9Le digest hebdomadaire pour développeurs met en évidence les fonctionnalités les plus susceptibles de changer votre façon de travailler. Chaque entrée inclut du code exécutable, une courte démo et un lien vers la documentation complète. Pour chaque correction de bug et amélioration mineure, consultez le [changelog](/fr/changelog).

10 

11<Update label="Week 17" description="20–24 avril 2026" tags={["v2.1.114–v2.1.119"]}>

12 **`/ultrareview`** s'ouvre en tant qu'aperçu de recherche public : une flotte d'agents chasseurs de bugs s'exécute dans le cloud et les résultats reviennent automatiquement dans votre CLI ou Desktop.

13 

14 Également cette semaine : **session recap** vous montre ce qui s'est passé pendant qu'un terminal était en arrière-plan ; **custom themes** vous permet de créer et de déployer des palettes de couleurs depuis `/theme` ou un plugin ; et **Claude Code sur le web** bénéficie d'une refonte avec une nouvelle barre latérale de sessions et une disposition glisser-déposer.

15 

16 [Lire le digest de la Week 17 →](/fr/whats-new/2026-w17)

17</Update>

18 

19<Update label="Week 16" description="13–17 avril 2026" tags={["v2.1.105–v2.1.113"]}>

20 **Claude Opus 4.7** arrive en tant que nouveau défaut sur Max et Team Premium, avec un nouveau niveau d'effort `xhigh` qui est le paramètre recommandé pour la plupart des travaux de codage et un curseur `/effort` interactif pour l'ajuster.

21 

22 Également cette semaine : **Routines** sur Claude Code sur le web déclenche des agents cloud modélisés à partir d'un calendrier, d'un événement GitHub ou d'un appel API ; `/ultrareview` exécute un examen de code multi-agent parallèle dans le cloud ; `/usage` affiche ce qui pilote vos limites ; et la CLI passe à des binaires natifs.

23 

24 [Lire le digest de la Week 16 →](/fr/whats-new/2026-w16)

25</Update>

26 

27<Update label="Week 15" description="6–10 avril 2026" tags={["v2.1.92–v2.1.101"]}>

28 **Ultraplan** entre en aperçu précoce : rédigez un plan dans le cloud depuis votre CLI, examinez-le et commentez-le dans un éditeur web, puis exécutez-le à distance ou récupérez-le localement. La première exécution crée maintenant automatiquement un environnement cloud pour vous.

29 

30 Également cette semaine : l'outil **Monitor** diffuse les événements d'arrière-plan dans la conversation afin que Claude puisse suivre les logs et réagir en direct, `/loop` s'auto-règle lorsque vous omettez l'intervalle, `/team-onboarding` empaquette votre configuration dans un guide rejouable, et `/autofix-pr` active la correction automatique des PR depuis votre terminal.

31 

32 [Lire le digest de la Week 15 →](/fr/whats-new/2026-w15)

33</Update>

34 

35<Update label="Week 14" description="30 mars – 3 avril 2026" tags={["v2.1.86–v2.1.91"]}>

36 **Computer use** arrive à la CLI en aperçu de recherche : Claude peut ouvrir des applications natives, cliquer dans l'interface utilisateur et vérifier les modifications depuis votre terminal. Idéal pour fermer la boucle sur les choses que seule une interface graphique peut vérifier.

37 

38 Également cette semaine : leçons interactives `/powerup`, rendu alt-screen sans scintillement, une limite de taille de résultat MCP par outil jusqu'à 500K, et exécutables de plugin sur le `PATH` de l'outil Bash.

39 

40 [Lire le digest de la Week 14 →](/fr/whats-new/2026-w14)

41</Update>

42 

43<Update label="Week 13" description="23–27 mars 2026" tags={["v2.1.83–v2.1.85"]}>

44 **Auto mode** arrive en aperçu de recherche : un classificateur gère vos invites de permission afin que les actions sûres s'exécutent sans interruption et que les actions risquées soient bloquées. Le juste milieu entre approuver tout et `--dangerously-skip-permissions`.

45 

46 Également cette semaine : computer use dans l'application Desktop, correction automatique des PR sur Web, recherche de transcription avec `/`, un outil PowerShell natif pour Windows, et hooks `if` conditionnels.

47 

48 [Lire le digest de la Week 13 →](/fr/whats-new/2026-w13)

49</Update>

whats-new/2026-w16.md +135 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Semaine 16 · 13–17 avril 2026

6 

7> Claude Opus 4.7 avec le nouveau niveau d'effort xhigh, Routines sur Claude Code sur le web, /ultrareview pour l'examen du code cloud, une ventilation /usage qui montre ce qui limite votre utilisation, et les binaires natifs remplaçant le JavaScript fourni.

8 

9<div className="digest-meta">

10 <span>Versions <a href="/fr/docs/changelog#2-1-105">v2.1.105 → v2.1.113</a></span>

11 <span>5 fonctionnalités · 13–17 avril</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Claude Opus 4.7</span>

17 <span className="digest-feature-pill">nouveau modèle</span>

18 </div>

19 

20 <p className="digest-feature-lede">Le modèle de codage le plus puissant d'Anthropic est désormais le modèle par défaut sur Max et Team Premium, et disponible partout ailleurs via <code>/model</code>. Il ajoute un nouveau niveau d'effort <code>xhigh</code> qui se situe entre <code>high</code> et <code>max</code> : les meilleurs résultats pour la plupart des tâches de codage et d'agents, appliqué par défaut la première fois que vous basculez vers 4.7. <code>/effort</code> ouvre désormais un curseur interactif avec les touches fléchées lorsque vous l'appelez sans arguments, vous permettant d'équilibrer l'intelligence et la vitesse sans mémoriser les noms des niveaux.</p>

21 

22 <p className="digest-feature-try">Changez le modèle et l'effort en une seule étape :</p>

23 

24 ```text Claude Code theme={null}

25 > /model opus

26 > /effort xhigh

27 ```

28 

29 <a className="digest-feature-link" href="/fr/docs/model-config#adjust-effort-level">Configuration du modèle : niveaux d'effort</a>

30</div>

31 

32<div className="digest-feature">

33 <div className="digest-feature-header">

34 <span className="digest-feature-title">Routines</span>

35 <span className="digest-feature-pill">web</span>

36 </div>

37 

38 <p className="digest-feature-lede">Des agents cloud basés sur des modèles qui s'exécutent selon un calendrier, un événement GitHub ou un appel API. Définissez une routine une seule fois sur Claude Code sur le web avec une invite, les dépôts qu'elle peut modifier et les connecteurs dont elle a besoin, puis laissez l'ouverture d'une PR, la publication d'une version ou votre propre webhook la déclencher sans que votre machine soit en cours d'exécution. Le sélecteur de déclencheur couvre désormais les événements GitHub avec des filtres optionnels et donne à chaque routine un point de terminaison <code>/fire</code> avec jeton pour les systèmes externes.</p>

39 

40 <Frame>

41 <img className="w-full" src="https://mintcdn.com/claude-code/FTi4SBJ9YRs7d-5X/images/whats-new/routines.png?fit=max&auto=format&n=FTi4SBJ9YRs7d-5X&q=85&s=2ba818ea9280c549511cb48b9b4d1dc5" alt="Création d'une routine sur Claude Code sur le web avec des déclencheurs de calendrier, d'événement GitHub et d'API" width="1440" height="810" data-path="images/whats-new/routines.png" />

42 </Frame>

43 

44 <p className="digest-feature-try">Créez-en une à partir de l'interface web, ou générez un modèle depuis votre terminal :</p>

45 

46 ```text Claude Code theme={null}

47 > /schedule daily PR review at 9am

48 ```

49 

50 <a className="digest-feature-link" href="/fr/docs/routines">Guide des routines</a>

51</div>

52 

53<div className="digest-feature">

54 <div className="digest-feature-header">

55 <span className="digest-feature-title">Ventilation /usage</span>

56 <span className="digest-feature-pill">CLI</span>

57 </div>

58 

59 <p className="digest-feature-lede">Plus de visibilité sur l'utilisation de Claude Code. <code>/usage</code> affiche désormais ce qui limite votre utilisation : sessions parallèles, sous-agents, défauts de cache et contexte long, chacun avec un pourcentage de vos 24 dernières heures et un conseil pour l'optimiser. Appuyez sur <code>d</code> ou <code>w</code> pour basculer entre les vues jour et semaine.</p>

60 

61 <Frame>

62 <img className="w-full" src="https://mintcdn.com/claude-code/FTi4SBJ9YRs7d-5X/images/whats-new/usage.png?fit=max&auto=format&n=FTi4SBJ9YRs7d-5X&q=85&s=792a4b43cbef4e2931974831f076bca6" alt="La commande /usage affichant une ventilation de ce qui contribue à l'utilisation des limites" width="1204" height="1182" data-path="images/whats-new/usage.png" />

63 </Frame>

64 

65 <p className="digest-feature-try">Exécutez-la à tout moment :</p>

66 

67 ```text Claude Code theme={null}

68 > /usage

69 ```

70 

71 <a className="digest-feature-link" href="/fr/docs/commands">Référence des commandes</a>

72</div>

73 

74<div className="digest-feature">

75 <div className="digest-feature-header">

76 <span className="digest-feature-title">/ultrareview</span>

77 <span className="digest-feature-pill">v2.1.111</span>

78 </div>

79 

80 <p className="digest-feature-lede">Examen complet du code dans le cloud. Ultrareview distribue votre branche sur plusieurs relecteurs parallèles sur Claude Code sur le web, exécute une passe de critique contradictoire sur chaque constatation et retourne un rapport de constatations vérifiées tandis que votre terminal reste libre. Appelez-la sans arguments pour examiner votre branche actuelle, ou passez un numéro de PR pour récupérer et examiner cette PR. La boîte de dialogue de lancement affiche désormais un diffstat pour que vous sachiez ce qui va être envoyé avant de confirmer.</p>

81 

82 <p className="digest-feature-try">Examinez la branche sur laquelle vous êtes :</p>

83 

84 ```text Claude Code theme={null}

85 > /ultrareview

86 ```

87 

88 <p className="digest-feature-try">Ou pointez-la vers une PR :</p>

89 

90 ```text Claude Code theme={null}

91 > /ultrareview 1234

92 ```

93 

94 <a className="digest-feature-link" href="/fr/docs/ultrareview">Guide Ultrareview</a>

95</div>

96 

97<div className="digest-feature">

98 <div className="digest-feature-header">

99 <span className="digest-feature-title">Binaires natifs</span>

100 <span className="digest-feature-pill">v2.1.113</span>

101 </div>

102 

103 <p className="digest-feature-lede">La CLI <code>claude</code> génère désormais un binaire natif par plateforme au lieu du JavaScript fourni, de sorte que la commande <code>claude</code> installée n'invoque plus Node. Le paquet npm récupère le bon binaire via une dépendance optionnelle telle que <code>@anthropic-ai/claude-code-darwin-arm64</code>, de sorte que votre commande d'installation ne change pas. L'installateur autonome a déjà livré ce binaire ; npm le correspond désormais.</p>

104 

105 <p className="digest-feature-try">Mettez à jour et vérifiez ce que vous exécutez :</p>

106 

107 ```bash theme={null}

108 claude update

109 claude --version

110 ```

111 

112 <a className="digest-feature-link" href="/fr/docs/setup">Guide de configuration</a>

113</div>

114 

115<div className="digest-wins">

116 <p className="digest-wins-title">Autres améliorations</p>

117 

118 <div className="digest-wins-grid">

119 <div><a href="/fr/docs/permission-modes#eliminate-prompts-with-auto-mode">Le mode Auto</a> est désormais disponible pour les abonnés Max sur Opus 4.7, et l'indicateur <code>--enable-auto-mode</code> n'est plus requis</div>

120 <div><a href="/fr/docs/interactive-mode#session-recap">Le résumé de session</a> affiche un résumé d'une ligne de ce qui s'est passé pendant votre absence ; exécutez <code>/recap</code> à la demande ou désactivez-le depuis <code>/config</code></div>

121 <div>Nouvelle commande <code>/tui</code> et paramètre <code>tui</code> pour basculer entre le rendu classique et sans scintillement en cours de conversation ; la vue de focus a été déplacée de <code>Ctrl+O</code> vers sa propre commande <code>/focus</code></div>

122 <div>Outil de notification push : avec <a href="/fr/docs/remote-control">Remote Control</a> connecté et « Envoyer une notification quand Claude décide » activé, Claude peut vous faire signe sur votre téléphone quand il a besoin de vous</div>

123 <div>Les plugins peuvent livrer des observateurs en arrière-plan via une clé de manifeste de niveau supérieur <code>monitors</code> qui s'arme automatiquement au démarrage de la session ou à l'invocation de la compétence</div>

124 <div>Option « Auto (correspondre au terminal) » dans <code>/theme</code> qui suit le mode sombre/clair de votre terminal</div>

125 <div><code>/fewer-permission-prompts</code> analyse vos transcriptions pour les appels Bash et MCP courants en lecture seule et propose une liste d'autorisation pour <code>.claude/settings.json</code></div>

126 <div>Claude peut désormais découvrir et exécuter des commandes intégrées comme <code>/init</code>, <code>/review</code> et <code>/security-review</code> via l'outil Skill</div>

127 <div>Les hooks <code>PreCompact</code> peuvent bloquer la compaction en quittant avec le code 2 ou en retournant <code>{"{"}"decision":"block"{"}"}</code></div>

128 <div><code>ENABLE\_PROMPT\_CACHING\_1H</code> opte pour la clé API, Bedrock, Vertex et les utilisateurs de Foundry dans un TTL de cache d'invite d'1 heure</div>

129 <div>Le paramètre <code>sandbox.network.deniedDomains</code> exclut des domaines spécifiques d'un caractère générique <code>allowedDomains</code> plus large</div>

130 <div><code>/undo</code> est désormais un alias pour <code>/rewind</code>, et <code>/proactive</code> est un alias pour <code>/loop</code></div>

131 <div>Permissions Bash renforcées : les règles de refus correspondent désormais via les wrappers <code>env</code>/<code>sudo</code>/<code>watch</code>, et les règles d'autorisation <code>Bash(find:\*)</code> n'approuvent plus automatiquement <code>-exec</code> ou <code>-delete</code></div>

132 </div>

133</div>

134 

135[Journal des modifications complet pour v2.1.105–v2.1.113 →](/fr/changelog#2-1-105)

whats-new/2026-w17.md +113 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Semaine 17 · 20–24 avril 2026

6 

7> /ultrareview s'ouvre en aperçu de recherche, récapitulatifs de session automatiques lorsque vous revenez à un terminal, thèmes de couleurs personnalisés que vous pouvez créer et déployer dans les plugins, et une Claude Code redessinée sur le web.

8 

9<div className="digest-meta">

10 <span>Versions <a href="/docs/fr/changelog#2-1-114">v2.1.114 → v2.1.119</a></span>

11 <span>4 fonctionnalités · 20–24 avril</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">/ultrareview</span>

17 <span className="digest-feature-pill">aperçu de recherche</span>

18 </div>

19 

20 <p className="digest-feature-lede">Maintenant en aperçu de recherche public. Ultrareview exécute une flotte d'agents de détection de bugs dans le cloud sur votre branche ou une PR, et les résultats reviennent automatiquement dans la CLI ou Desktop. Exécutez-le avant de fusionner des modifications critiques telles que l'authentification ou les migrations de données.</p>

21 

22 <Frame>

23 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/FTi4SBJ9YRs7d-5X/images/whats-new/ultrareview.mp4?fit=max&auto=format&n=FTi4SBJ9YRs7d-5X&q=85&s=0fb1271365d38f414ad155aeb8edb08e" data-path="images/whats-new/ultrareview.mp4" />

24 </Frame>

25 

26 <p className="digest-feature-try">Examinez la branche sur laquelle vous êtes :</p>

27 

28 ```text Claude Code theme={null}

29 > /ultrareview

30 ```

31 

32 <p className="digest-feature-try">Ou pointez-le vers une PR :</p>

33 

34 ```text Claude Code theme={null}

35 > /ultrareview 1234

36 ```

37 

38 <a className="digest-feature-link" href="/docs/fr/ultrareview">Guide Ultrareview</a>

39</div>

40 

41<div className="digest-feature">

42 <div className="digest-feature-header">

43 <span className="digest-feature-title">Récapitulatif de session</span>

44 <span className="digest-feature-pill">CLI</span>

45 </div>

46 

47 <p className="digest-feature-lede">Détournez votre attention d'une session et revenez à un récapitulatif d'une ligne de ce qui s'est passé pendant votre absence. Utile pour rester dans le flux tout en exécutant plusieurs sessions Claude à la fois.</p>

48 

49 <Frame>

50 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/FTi4SBJ9YRs7d-5X/images/whats-new/session-recap.mp4?fit=max&auto=format&n=FTi4SBJ9YRs7d-5X&q=85&s=0a8db1470bd0161a47efeb2f322af76f" data-path="images/whats-new/session-recap.mp4" />

51 </Frame>

52 

53 <p className="digest-feature-try">Générez un récapitulatif à la demande, ou désactivez celui automatique depuis <code>/config</code> :</p>

54 

55 ```text Claude Code theme={null}

56 > /recap

57 ```

58 

59 <a className="digest-feature-link" href="/docs/fr/interactive-mode#session-recap">Mode interactif : récapitulatif de session</a>

60</div>

61 

62<div className="digest-feature">

63 <div className="digest-feature-header">

64 <span className="digest-feature-title">Thèmes personnalisés</span>

65 <span className="digest-feature-pill">v2.1.118</span>

66 </div>

67 

68 <p className="digest-feature-lede">Créez et basculez entre des thèmes de couleurs nommés depuis <code>/theme</code>, ou modifiez manuellement les fichiers JSON dans <code>\~/.claude/themes/</code>. Chaque thème choisit un préréglage de base et remplace uniquement les jetons qui vous intéressent. Les plugins peuvent également livrer des thèmes.</p>

69 

70 <p className="digest-feature-try">Ouvrez le sélecteur de thème et créez-en un nouveau :</p>

71 

72 ```text Claude Code theme={null}

73 > /theme

74 ```

75 

76 <a className="digest-feature-link" href="/docs/fr/terminal-config#create-a-custom-theme">Configuration du terminal : créer un thème personnalisé</a>

77</div>

78 

79<div className="digest-feature">

80 <div className="digest-feature-header">

81 <span className="digest-feature-title">Claude Code sur le web</span>

82 <span className="digest-feature-pill">web</span>

83 </div>

84 

85 <p className="digest-feature-lede">Un nouveau look pour <a href="https://claude.ai/code">claude.ai/code</a> qui correspond à l'application desktop redessinée : barre latérale des sessions, disposition par glisser-déposer, et une vue des routines actualisée. Les parties clés ont été reconstruites pour des réponses plus rapides et une expérience plus fiable.</p>

86 

87 <Frame>

88 <img className="w-full" src="https://mintcdn.com/claude-code/FTi4SBJ9YRs7d-5X/images/whats-new/web-redesign.jpeg?fit=max&auto=format&n=FTi4SBJ9YRs7d-5X&q=85&s=a2aca1b49e295b7337f5779038db8e2c" alt="Aperçu de la refonte de Claude Code sur le web : nouvelle interface utilisateur, vitesse et fiabilité, travail sur le web, mobile et CLI" width="1602" height="1610" data-path="images/whats-new/web-redesign.jpeg" />

89 </Frame>

90 

91 <a className="digest-feature-link" href="/docs/fr/claude-code-on-the-web">Claude Code sur le web</a>

92</div>

93 

94<div className="digest-wins">

95 <p className="digest-wins-title">Autres améliorations</p>

96 

97 <div className="digest-wins-grid">

98 <div><a href="/docs/fr/interactive-mode#vim-editor-mode">Mode visuel Vim</a> : appuyez sur <code>v</code> pour la sélection de caractères ou <code>V</code> pour la sélection de lignes dans l'entrée d'invite, avec des opérateurs et des retours visuels</div>

99 <div>Les hooks peuvent maintenant appeler les outils MCP directement via <a href="/docs/fr/hooks#mcp-tool-hook-fields"><code>type: "mcp\_tool"</code></a>, donc un hook peut accéder à un serveur déjà connecté sans générer un processus</div>

100 <div><code>/cost</code> et <code>/stats</code> sont fusionnés dans <a href="/docs/fr/commands"><code>/usage</code></a> ; les anciens noms fonctionnent toujours comme des raccourcis de saisie qui ouvrent l'onglet pertinent</div>

101 <div>Les modifications <code>/config</code> (thème, mode éditeur, verbose, et similaires) persistent maintenant vers <code>\~/.claude/settings.json</code> et suivent la même précédence projet/local/politique que les autres <a href="/docs/fr/settings">paramètres</a></div>

102 <div>Les <a href="/docs/fr/sub-agents#fork-the-current-conversation">sous-agents dupliqués</a> peuvent être activés sur les builds externes avec <code>CLAUDE\_CODE\_FORK\_SUBAGENT=1</code> : une duplication hérite de votre contexte de conversation complet au lieu de commencer à zéro</div>

103 <div>Le <a href="/docs/fr/model-config#adjust-effort-level">niveau d'effort</a> par défaut pour les abonnés Pro et Max sur Opus 4.6 et Sonnet 4.6 est maintenant <code>high</code> (était <code>medium</code>)</div>

104 <div>Les builds natifs macOS et Linux remplacent les outils <code>Glob</code> et <code>Grep</code> par <code>bfs</code> et <code>ugrep</code> intégrés disponibles via Bash, pour des recherches plus rapides sans un aller-retour d'outil séparé</div>

105 <div><code>--from-pr</code> accepte maintenant les URL de demande de fusion GitLab, de demande de tirage Bitbucket et de PR GitHub Enterprise en plus de github.com</div>

106 <div>Mode Auto : incluez <code>"\$defaults"</code> dans <a href="/docs/fr/auto-mode-config"><code>autoMode.allow</code>, <code>soft\_deny</code>, ou <code>environment</code></a> pour ajouter des règles personnalisées à côté de la liste intégrée au lieu de la remplacer</div>

107 <div>La nouvelle commande <a href="/docs/fr/plugin-dependencies#tag-plugin-releases-for-version-resolution"><code>claude plugin tag</code></a> crée des balises git de version pour les plugins avec validation de version</div>

108 <div>Les sessions Opus 4.7 calculent maintenant par rapport à la fenêtre de contexte native de 1M du modèle, corrigeant les pourcentages <code>/context</code> gonflés et la compaction automatique prématurée</div>

109 <div><code>/resume</code> sur les grandes sessions est jusqu'à 67 % plus rapide et offre maintenant de résumer les sessions anciennes et volumineuses avant de les relire</div>

110 </div>

111</div>

112 

113[Journal des modifications complet pour v2.1.114–v2.1.119 →](/fr/changelog#2-1-114)

zero-data-retention.md +66 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Zéro conservation des données

6 

7> Découvrez la conservation zéro des données (ZDR) pour Claude Code sur Claude for Enterprise, y compris la portée, les fonctionnalités désactivées et comment demander l'activation.

8 

9La conservation zéro des données (ZDR) est disponible pour Claude Code lorsqu'il est utilisé via Claude for Enterprise. Lorsque ZDR est activée, les invites et les réponses du modèle générées lors des sessions Claude Code sont traitées en temps réel et ne sont pas conservées par Anthropic après le retour de la réponse, sauf si nécessaire pour se conformer à la loi ou combattre les abus.

10 

11ZDR sur Claude for Enterprise donne aux clients d'entreprise la possibilité d'utiliser Claude Code avec zéro conservation des données et d'accéder aux capacités administratives :

12 

13* Contrôles des coûts par utilisateur

14* Tableau de bord [Analytics](/fr/analytics)

15* [Paramètres gérés par le serveur](/fr/server-managed-settings)

16* Journaux d'audit

17 

18ZDR pour Claude Code sur Claude for Enterprise s'applique uniquement à la plateforme directe d'Anthropic. Pour les déploiements de Claude sur Amazon Bedrock, Google Vertex AI ou Microsoft Foundry, consultez les politiques de conservation des données de ces plateformes.

19 

20## Portée de ZDR

21 

22ZDR couvre l'inférence Claude Code sur Claude for Enterprise.

23 

24<Warning>

25 ZDR est activée sur la base de chaque organisation. Chaque nouvelle organisation nécessite que ZDR soit activée séparément par votre équipe de compte Anthropic. ZDR ne s'applique pas automatiquement aux nouvelles organisations créées sous le même compte. Contactez votre équipe de compte pour activer ZDR pour toute nouvelle organisation.

26</Warning>

27 

28### Ce que ZDR couvre

29 

30ZDR couvre les appels d'inférence du modèle effectués via Claude Code sur Claude for Enterprise. Lorsque vous utilisez Claude Code dans votre terminal, les invites que vous envoyez et les réponses que Claude génère ne sont pas conservées par Anthropic. Cela s'applique quel que soit le modèle Claude utilisé.

31 

32### Ce que ZDR ne couvre pas

33 

34ZDR ne s'étend pas aux éléments suivants, même pour les organisations avec ZDR activée. Ces fonctionnalités suivent les [politiques standard de conservation des données](/fr/data-usage#data-retention) :

35 

36| Fonctionnalité | Détails |

37| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

38| Chat sur claude.ai | Les conversations de chat via l'interface web Claude for Enterprise ne sont pas couvertes par ZDR. |

39| Cowork | Les sessions Cowork ne sont pas couvertes par ZDR. |

40| Claude Code Analytics | Ne stocke pas les invites ou les réponses du modèle, mais collecte les métadonnées de productivité telles que les e-mails de compte et les statistiques d'utilisation. Les métriques de contribution ne sont pas disponibles pour les organisations ZDR ; le [tableau de bord analytics](/fr/analytics) affiche uniquement les métriques d'utilisation. |

41| Gestion des utilisateurs et des sièges | Les données administratives telles que les e-mails de compte et les attributions de sièges sont conservées selon les politiques standard. |

42| Intégrations tierces | Les données traitées par des outils tiers, des serveurs MCP ou d'autres intégrations externes ne sont pas couvertes par ZDR. Examinez indépendamment les pratiques de traitement des données de ces services. |

43 

44## Fonctionnalités désactivées sous ZDR

45 

46Lorsque ZDR est activée pour une organisation Claude Code sur Claude for Enterprise, certaines fonctionnalités qui nécessitent de stocker les invites ou les complétions sont automatiquement désactivées au niveau du backend :

47 

48| Fonctionnalité | Raison |

49| -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |

50| [Claude Code sur le Web](/fr/claude-code-on-the-web) | Nécessite le stockage côté serveur de l'historique des conversations. |

51| [Sessions distantes](/fr/desktop#remote-sessions) de l'application Desktop | Nécessite des données de session persistantes qui incluent les invites et les complétions. |

52| Soumission de commentaires (`/feedback`) | La soumission de commentaires envoie les données de conversation à Anthropic. |

53 

54Ces fonctionnalités sont bloquées au niveau du backend quel que soit l'affichage côté client. Si vous voyez une fonctionnalité désactivée dans le terminal Claude Code au démarrage, toute tentative d'utilisation retourne une erreur indiquant que les politiques de l'organisation ne permettent pas cette action.

55 

56Les futures fonctionnalités peuvent également être désactivées si elles nécessitent de stocker les invites ou les complétions.

57 

58## Conservation des données pour les violations de politique

59 

60Même avec ZDR activée, Anthropic peut conserver les données si la loi l'exige ou pour résoudre les violations de la politique d'utilisation. Si une session est signalée pour une violation de politique, Anthropic peut conserver les entrées et sorties associées pendant jusqu'à 2 ans, conformément à la politique ZDR standard d'Anthropic.

61 

62## Demander ZDR

63 

64Pour demander ZDR pour Claude Code sur Claude for Enterprise, [contactez les ventes](https://www.anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=zero_data_retention_request) ou votre équipe de compte Anthropic. Votre équipe de compte soumettra la demande en interne, et Anthropic examinera et activera ZDR sur votre organisation après avoir confirmé l'admissibilité. Toutes les actions d'activation sont enregistrées dans les journaux d'audit.

65 

66Si vous utilisez actuellement ZDR pour Claude Code via des clés API à l'usage, vous pouvez passer à Claude for Enterprise pour accéder aux fonctionnalités administratives tout en maintenant ZDR pour Claude Code. Contactez votre équipe de compte pour coordonner la migration.