SpyBara
Go Premium

Documentation 2026-09-11 23:01 UTC to 2026-09-12 03:02 UTC

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

admin-setup.md +9 −2

Details

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

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

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

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

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

107| [Verrouillage de la personnalisation](/docs/fr/settings-reference#strictpluginonlycustomization) | Bloquer les skills, agents, hooks et serveurs MCP provenant de sources utilisateur et projet, afin qu'ils ne proviennent que de plugins ou de paramètres gérés | `strictPluginOnlyCustomization` |107| [Verrouillage de la personnalisation](/docs/fr/settings-reference#strictpluginonlycustomization) | Bloquer les skills, agents, hooks et serveurs MCP provenant de sources utilisateur et projet, afin qu'ils ne proviennent que de plugins ou de paramètres gérés | `strictPluginOnlyCustomization` |

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


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

111| [Configurer le lanceur d'entreprise](/docs/fr/corporate-launcher) | Préfixer le [superviseur d'agent d'arrière-plan](/docs/fr/agent-view#how-background-sessions-are-hosted), ses workers, et les [autres processus d'arrière-plan couverts](/docs/fr/corporate-launcher#what-the-launcher-covers) avec un lanceur d'entreprise requis au lieu de désactiver la vue agent | `processWrapper` |111| [Configurer le lanceur d'entreprise](/docs/fr/corporate-launcher) | Préfixer le [superviseur d'agent d'arrière-plan](/docs/fr/agent-view#how-background-sessions-are-hosted), ses workers, et les [autres processus d'arrière-plan couverts](/docs/fr/corporate-launcher#what-the-launcher-covers) avec un lanceur d'entreprise requis au lieu de désactiver la vue agent | `processWrapper` |

112| [Restrictions de modèle](/docs/fr/model-config#restrict-model-selection) | `availableModels` filtre les modèles qui apparaissent dans le sélecteur. L'ajout de `enforceAvailableModels` contraint également le modèle par défaut sélectionné automatiquement. Consultez [couverture de surface](/docs/fr/model-config#surface-coverage) pour voir comment ce paramètre atteint l'interface CLI, web et IDE | `availableModels`, `enforceAvailableModels` |112| [Restrictions de modèle](/docs/fr/model-config#restrict-model-selection) | `availableModels` filtre les modèles qui apparaissent dans le sélecteur. L'ajout de `enforceAvailableModels` contraint également le modèle par défaut sélectionné automatiquement. Consultez [couverture de surface](/docs/fr/model-config#surface-coverage) pour voir comment ce paramètre atteint l'interface CLI, web et IDE | `availableModels`, `enforceAvailableModels` |

113| [Plafond d'effort](/docs/fr/settings-reference#maxeffortlevel) | Plafonner le [niveau d'effort](/docs/fr/model-config#adjust-effort-level) pour chaque modèle ou par modèle, sur chaque fournisseur | `maxEffortLevel` |

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

114| [Plage de version requise](/docs/fr/settings-reference#requiredminimumversion) | Refuser de démarrer complètement lorsque la version en cours d'exécution est en dehors d'une plage approuvée par l'organisation. Plus fort que `minimumVersion`, qui bloque uniquement les rétrograder | `requiredMinimumVersion`, `requiredMaximumVersion` |115| [Plage de version requise](/docs/fr/settings-reference#requiredminimumversion) | Refuser de démarrer complètement lorsque la version en cours d'exécution est en dehors d'une plage approuvée par l'organisation. Plus fort que `minimumVersion`, qui bloque uniquement les rétrograder | `requiredMinimumVersion`, `requiredMaximumVersion` |

115| [Désactivation de la télémétrie](/docs/fr/data-usage#telemetry-services) | Désactiver les métriques d'utilisation liées à Anthropic, les rapports d'erreurs et les sondages sur chaque appareil | `env` avec `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` défini sur `1` ; la section liée énumère les variables par catégorie |116| [Désactivation de la télémétrie](/docs/fr/data-usage#telemetry-services) | Désactiver les métriques d'utilisation liées à Anthropic, les rapports d'erreurs et les sondages sur chaque appareil | `env` avec `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` défini sur `1` ; la section liée énumère les variables par catégorie |

116 117 

117Les organisations dont les membres s'authentifient via claude.ai ou l'API Anthropic peuvent également gouverner les modèles sans déployer de paramètres : les [restrictions de modèle d'organisation](/docs/fr/model-config#organization-model-restrictions) désactivent les modèles individuels, un [modèle par défaut d'organisation](/docs/fr/model-config#organization-default-model) définit le modèle sur lequel les nouvelles sessions commencent, et les [limites d'effort d'organisation](/docs/fr/model-config#organization-effort-limits) limitent les niveaux d'effort par rôle. Les trois contrôles nécessitent un plan Claude Enterprise. Les restrictions de modèle et les limites d'effort sont appliquées côté serveur ; le modèle par défaut est un point de départ que les utilisateurs peuvent modifier, sauf si l'organisation l'applique. L'application est disponible pour un ensemble limité d'organisations ; demandez à votre équipe de compte Anthropic la disponibilité. Aucun de ces contrôles n'atteint les sessions sur Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, ou [Claude Platform on AWS](/docs/fr/claude-platform-on-aws) ; sur ces fournisseurs, utilisez `availableModels` ci-dessus pour les restrictions et la clé `model` dans les paramètres gérés pour une valeur par défaut.118Si vos membres se connectent via claude.ai ou l'API Anthropic et que vous êtes sur un plan Claude Enterprise, vous pouvez également gouverner les modèles à partir des paramètres d'administration de votre organisation sans déployer quoi que ce soit :

119 

120* [Restrictions de modèle d'organisation](/docs/fr/model-config#organization-model-restrictions) : désactiver les modèles individuels. Appliqué côté serveur.

121* [Modèle par défaut d'organisation](/docs/fr/model-config#organization-default-model) : définir le modèle sur lequel les nouvelles sessions commencent. Les utilisateurs peuvent le modifier sauf si votre organisation applique la valeur par défaut, ce qui est disponible pour un ensemble limité d'organisations ; demandez à votre équipe de compte Anthropic.

122* [Limites d'effort d'organisation](/docs/fr/model-config#organization-effort-limits) : plafonner les niveaux d'effort par rôle. Appliqué côté serveur.

123 

124Aucun de ces contrôles n'atteint les sessions sur Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, ou [Claude Platform on AWS](/docs/fr/claude-platform-on-aws). Sur ces fournisseurs, utilisez les paramètres gérés à la place : `availableModels` pour les restrictions, `model` pour une valeur par défaut, et [`maxEffortLevel`](/docs/fr/settings-reference#maxeffortlevel) pour un plafond d'effort.

118 125 

119[Claude Code sur le web](/docs/fr/claude-code-on-the-web) dispose de sa propre surface d'administration : sur la page des environnements Cloud dans les paramètres d'administration, les propriétaires créent des [environnements partagés par l'organisation](/docs/fr/cloud-environments#organization-shared-environments) qui définissent le [niveau d'accès réseau](/docs/fr/cloud-environments#network-access), les variables d'environnement et le script de configuration pour les sessions cloud des membres. Les propriétaires choisissent l'environnement par défaut de l'organisation séparément, à [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).126[Claude Code sur le web](/docs/fr/claude-code-on-the-web) dispose de sa propre surface d'administration : sur la page des environnements Cloud dans les paramètres d'administration, les propriétaires créent des [environnements partagés par l'organisation](/docs/fr/cloud-environments#organization-shared-environments) qui définissent le [niveau d'accès réseau](/docs/fr/cloud-environments#network-access), les variables d'environnement et le script de configuration pour les sessions cloud des membres. Les propriétaires choisissent l'environnement par défaut de l'organisation séparément, à [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).

120 127 

advisor.md +17 −6

Details

48/advisor opus48/advisor opus

49```49```

50 50 

51La commande confirme avec `Advisor set to` suivi du nom du modèle advisor. Votre sélection est enregistrée dans `advisorModel` dans vos paramètres utilisateur et persiste entre les sessions.51La commande confirme avec `Advisor set to` suivi du nom du modèle advisor. Votre sélection est enregistrée dans `advisorModel` dans vos paramètres utilisateur et persiste entre les sessions, sauf dans les cas que l'[entrée `advisorModel`](/docs/fr/settings-reference#advisormodel) liste comme s'appliquant à la session actuelle uniquement.

52 

53La commande fonctionne également là où il n'y a pas de sélecteur de terminal : en [mode non interactif](/docs/fr/headless) avec `-p`, dans le SDK Agent, dans l'application de bureau, et sur [Remote Control](/docs/fr/remote-control). Cela nécessite Claude Code v2.1.260 ou version ultérieure. Sur ces surfaces :

54 

55* Exécutez `/advisor` sans argument pour afficher le modèle advisor actuel et les alias qu'il accepte.

56* Exécutez `/advisor` avec un modèle, tel que `/advisor opus`, pour le définir.

57* Exécutez `/advisor off` pour le désactiver.

52 58 

53Claude Code n'invoque pas un advisor enregistré que la liste d'autorisation [`availableModels`](/docs/fr/model-config#restrict-model-selection) de votre organisation exclut. Pour utiliser l'advisor, choisissez un modèle autorisé avec `/advisor`. Claude Code enregistre toujours un advisor que votre modèle principal actuel ne supporte pas. Cet advisor s'active après que vous basculiez vers un [modèle principal compatible](#choose-an-advisor-model) avec [`/model`](/docs/fr/model-config#setting-your-model).59Claude Code n'invoque pas un advisor enregistré que la liste d'autorisation [`availableModels`](/docs/fr/model-config#restrict-model-selection) de votre organisation exclut. Pour utiliser l'advisor, choisissez un modèle autorisé avec `/advisor`. Claude Code enregistre toujours un advisor que votre modèle principal actuel ne supporte pas. Cet advisor s'active après que vous basculiez vers un [modèle principal compatible](#choose-an-advisor-model) avec [`/model`](/docs/fr/model-config#setting-your-model).

54 60 


92L'advisor doit être au moins aussi capable que le modèle principal. Les advisors acceptés pour chaque modèle principal sont :98L'advisor doit être au moins aussi capable que le modèle principal. Les advisors acceptés pour chaque modèle principal sont :

93 99 

94| Modèle principal | Advisors acceptés | Notes |100| Modèle principal | Advisors acceptés | Notes |

95| --------------------- | ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |101| --------------------- | ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

96| Haiku 4.5 | Fable, Opus, Sonnet | Haiku peut appeler l'advisor mais ne peut pas en être un |102| Haiku 4.5 | Fable, Opus, Sonnet | Haiku peut appeler l'advisor mais ne peut pas en être un |

97| Sonnet 4.6 | Fable, Opus, Sonnet | |103| Sonnet 4.6 | Fable, Opus, Sonnet | |

98| Sonnet 5 | Fable, Opus, Sonnet 5 | Un advisor Sonnet 4.6 est rejeté |104| Sonnet 5 | Fable, Opus, Sonnet 5 | Un advisor Sonnet 4.6 est rejeté |

99| Opus 4.6 | Fable, Opus, Sonnet 5 | Sonnet 5 et Opus 4.6 sont classés comme également capables, donc un Opus 4.6 principal accepte un advisor Sonnet 5 |105| Opus 4.6 | Fable, Opus, Sonnet 5 | Sonnet 5 et Opus 4.6 sont classés comme également capables, donc un Opus 4.6 principal accepte un advisor Sonnet 5 |

100| Opus 4.7 ou ultérieur | Fable, et Opus 4.7 ou ultérieur | Opus 4.7 et les modèles Opus ultérieurs sont classés comme également capables, donc l'un accepte l'autre comme advisor. Un Opus 4.7 principal avec un advisor Opus 4.6 ou Sonnet 5 est rejeté |106| Opus 4.7 ou ultérieur | Fable, et Opus 4.7 ou ultérieur | Opus 4.7 et les modèles Opus ultérieurs sont classés comme également capables, donc l'un accepte l'autre comme advisor. Un Opus 4.7 principal avec un advisor Opus 4.6 ou Sonnet 5 est rejeté |

101| Fable 5.1 ou Fable 5 | Fable 5.1, ou la même version Fable | Un advisor Opus ou Sonnet est rejeté, et un advisor Fable 5 pour un modèle principal Fable 5.1 l'est aussi |107| Fable 5.1 ou Fable 5 | Fable 5.1 ou Fable 5 | Un advisor Opus ou Sonnet est rejeté |

102 108 

103Fable 5.1 nécessite Claude Code v2.1.255 ou ultérieur et Fable 5 nécessite v2.1.170 ou ultérieur, plus [l'accès à Fable](/docs/fr/model-config#work-with-fable).109Fable 5.1 nécessite Claude Code v2.1.257 ou ultérieur. Les deux modèles Fable nécessitent [l'accès à Fable](/docs/fr/model-config#work-with-fable).

104 110 

105Définissez l'advisor comme `fable`, `opus`, ou `sonnet`. Ces alias se résolvent à la version par défaut intégrée de Claude Code pour chaque famille de modèles, qui avance avec les nouvelles versions de Claude Code. Vous pouvez également passer un ID de modèle complet tel que `claude-opus-5`.111Définissez l'advisor comme `fable`, `opus`, ou `sonnet`. Ces alias se résolvent à la version par défaut intégrée de Claude Code pour chaque famille de modèles, qui avance avec les nouvelles versions de Claude Code. Vous pouvez également passer un ID de modèle complet tel que `claude-opus-5`.

106 112 


161 Coût167 Coût

162</h2>168</h2>

163 169 

164Quand Claude appelle l'advisor, le modèle advisor lit la conversation, donc chaque appel consomme des tokens aux tarifs du modèle advisor en plus de l'utilisation de votre modèle principal. Avec la facturation API, vous payez les tarifs d'entrée et de sortie du modèle advisor pour les tokens advisor. Sur les plans d'abonnement, l'utilisation de l'advisor compte vers les limites d'utilisation de votre plan, sauf qu'un advisor Fable est facturé aux [crédits d'utilisation](/docs/fr/model-config#fable-and-usage-credits) sur les plans où l'utilisation de Fable l'est. Si votre compte nécessite le consentement des crédits d'utilisation, un advisor Fable ne facture rien avant que vous le donniez, car Claude Code [n'applique pas la sélection](#fable-advisor-and-usage-credits) jusqu'à ce moment.170Quand Claude appelle l'advisor, le modèle advisor lit la conversation, donc chaque appel consomme des tokens aux tarifs du modèle advisor en plus de l'utilisation de votre modèle principal. La façon dont ces tokens advisor sont facturés dépend de votre mode de paiement :

171 

172* **Facturation API** : vous payez les tarifs d'entrée et de sortie du modèle advisor pour les tokens advisor

173* **Plans d'abonnement** : l'utilisation de l'advisor compte vers les limites d'utilisation de votre plan, sauf qu'un advisor Fable est facturé aux [crédits d'utilisation](/docs/fr/model-config#fable-and-usage-credits) sur les plans où l'utilisation de Fable l'est

174 

175Si votre compte nécessite le consentement des crédits d'utilisation, un advisor Fable ne facture rien avant que vous le donniez, car Claude Code [n'applique pas la sélection](#fable-advisor-and-usage-credits) jusqu'à ce moment.

165 176 

166Claude appelle l'advisor aux points de décision plutôt que sur chaque tour, donc associer un modèle principal plus rapide avec un advisor plus puissant coûte généralement moins cher que d'exécuter le modèle plus puissant partout. L'utilisation de l'advisor compte vers les totaux de session affichés par [`/usage`](/docs/fr/costs#track-your-costs).177Claude appelle l'advisor aux points de décision plutôt que sur chaque tour, donc associer un modèle principal plus rapide avec un advisor plus puissant coûte généralement moins cher que d'exécuter le modèle plus puissant partout. L'utilisation de l'advisor compte vers les totaux de session affichés par [`/usage`](/docs/fr/costs#track-your-costs).

167 178 


189 Désactiver l'advisor200 Désactiver l'advisor

190</h2>201</h2>

191 202 

192Pour arrêter d'utiliser l'advisor et effacer votre `advisorModel` enregistré, exécutez `/advisor off` ou choisissez **No advisor** dans le sélecteur `/advisor` :203Pour arrêter d'utiliser l'advisor, exécutez `/advisor off` ou choisissez **No advisor** dans le sélecteur `/advisor` :

193 204 

194```205```

195/advisor off206/advisor off

Details

23<img src="https://mintcdn.com/claude-code/_xqph1dUOslCOwsj/images/agent-loop-diagram-dark.svg?fit=max&auto=format&n=_xqph1dUOslCOwsj&q=85&s=afe723c52a324d3c61fa72fb02432ab6" className="hidden dark:block" alt="Diagramme de la boucle d'agent : votre prompt entre dans la boucle agentique, où Claude évalue et demande soit des appels d'outils, dont les résultats réintègrent une autre évaluation, soit retourne la réponse finale" width="720" height="212" data-path="images/agent-loop-diagram-dark.svg" />23<img src="https://mintcdn.com/claude-code/_xqph1dUOslCOwsj/images/agent-loop-diagram-dark.svg?fit=max&auto=format&n=_xqph1dUOslCOwsj&q=85&s=afe723c52a324d3c61fa72fb02432ab6" className="hidden dark:block" alt="Diagramme de la boucle d'agent : votre prompt entre dans la boucle agentique, où Claude évalue et demande soit des appels d'outils, dont les résultats réintègrent une autre évaluation, soit retourne la réponse finale" width="720" height="212" data-path="images/agent-loop-diagram-dark.svg" />

24 24 

251. **Recevoir le prompt.** Claude reçoit votre prompt, ainsi que le prompt système, les définitions d'outils et l'historique de conversation. Le SDK produit un [`SystemMessage`](#message-types) avec le sous-type `"init"` contenant les métadonnées de session.251. **Recevoir le prompt.** Claude reçoit votre prompt, ainsi que le prompt système, les définitions d'outils et l'historique de conversation. Le SDK produit un [`SystemMessage`](#message-types) avec le sous-type `"init"` contenant les métadonnées de session.

262. **Évaluer et répondre.** Claude évalue l'état actuel et détermine comment procéder. Il peut répondre avec du texte, demander un ou plusieurs appels d'outils, ou les deux. Le SDK produit un [`AssistantMessage`](#message-types) contenant le texte et toutes les demandes d'appels d'outils.262. **Évaluer et répondre.** Claude évalue l'état actuel et détermine comment procéder. Il peut répondre avec du texte, demander un ou plusieurs appels d'outils, ou les deux. Le SDK produit un ou plusieurs objets [`AssistantMessage`](#message-types), un pour chaque bloc de contenu, comme un bloc de texte ou une demande d'appel d'outil.

273. **Exécuter les outils.** Le SDK exécute chaque outil demandé et collecte les résultats. Chaque ensemble de résultats d'outils est renvoyé à Claude pour la décision suivante. Vous pouvez utiliser des [hooks](/docs/fr/agent-sdk/hooks) pour intercepter, modifier ou bloquer les appels d'outils avant qu'ils ne s'exécutent.273. **Exécuter les outils.** Le SDK exécute chaque outil demandé et collecte les résultats. Chaque ensemble de résultats d'outils est renvoyé à Claude pour la décision suivante. Vous pouvez utiliser des [hooks](/docs/fr/agent-sdk/hooks) pour intercepter, modifier ou bloquer les appels d'outils avant qu'ils ne s'exécutent.

284. **Répéter.** Les étapes 2 et 3 se répètent en cycle. Chaque cycle complet est un tour. Claude continue à appeler les outils et à traiter les résultats jusqu'à ce qu'il produise une réponse sans appels d'outils.284. **Répéter.** Les étapes 2 et 3 se répètent en cycle. Chaque cycle complet est un tour. Claude continue à appeler les outils et à traiter les résultats jusqu'à ce qu'il produise une réponse sans appels d'outils.

295. **Retourner le résultat.** Le SDK produit un [`AssistantMessage`](#message-types) final avec la réponse textuelle (sans appels d'outils), suivi d'un [`ResultMessage`](#message-types) avec le texte final, l'utilisation des tokens, le coût et l'ID de session.295. **Retourner le résultat.** Le SDK produit un [`AssistantMessage`](#message-types) final avec la réponse textuelle (sans appels d'outils), suivi d'un [`ResultMessage`](#message-types) avec le texte final, l'utilisation des tokens, le coût et l'ID de session.


41D'abord, le SDK envoie votre prompt à Claude et produit un [`SystemMessage`](#message-types) avec les métadonnées de session. Ensuite, la boucle commence :41D'abord, le SDK envoie votre prompt à Claude et produit un [`SystemMessage`](#message-types) avec les métadonnées de session. Ensuite, la boucle commence :

42 42 

431. **Tour 1 :** Claude appelle `Bash` pour exécuter `npm test`. Le SDK produit un [`AssistantMessage`](#message-types) avec l'appel d'outil, exécute la commande, puis produit un [`UserMessage`](#message-types) avec la sortie (trois défaillances).431. **Tour 1 :** Claude appelle `Bash` pour exécuter `npm test`. Le SDK produit un [`AssistantMessage`](#message-types) avec l'appel d'outil, exécute la commande, puis produit un [`UserMessage`](#message-types) avec la sortie (trois défaillances).

442. **Tour 2 :** Claude appelle `Read` sur `auth.ts` et `auth.test.ts`. Le SDK retourne le contenu des fichiers et produit un `AssistantMessage`.442. **Tour 2 :** Claude appelle `Read` sur `auth.ts` et `auth.test.ts`. Le SDK produit un `AssistantMessage` pour chaque appel et retourne le contenu des fichiers.

453. **Tour 3 :** Claude appelle `Edit` pour corriger `auth.ts`, puis appelle `Bash` pour relancer `npm test`. Les trois tests réussissent. Le SDK produit un `AssistantMessage`.453. **Tour 3 :** Claude appelle `Edit` pour corriger `auth.ts`, puis appelle `Bash` pour relancer `npm test`. Les trois tests réussissent. Le SDK produit un `AssistantMessage` pour chaque appel.

464. **Tour final :** Claude produit une réponse textuelle uniquement sans appels d'outils : « Correction du bug d'authentification, les trois tests réussissent maintenant. » Le SDK produit un `AssistantMessage` final avec ce texte, puis un [`ResultMessage`](#message-types) avec le même texte plus le coût et l'utilisation.464. **Tour final :** Claude produit une réponse textuelle uniquement sans appels d'outils : « Correction du bug d'authentification, les trois tests réussissent maintenant. » Le SDK produit un `AssistantMessage` final avec ce texte, puis un [`ResultMessage`](#message-types) avec le même texte plus le coût et l'utilisation.

47 47 

48C'était quatre tours : trois avec des appels d'outils, un final avec réponse textuelle uniquement.48C'était quatre tours : trois avec des appels d'outils, un final avec réponse textuelle uniquement.


65 * `"worker_shutting_down"` : la boucle se terminera après le tour actuel car l'hôte se ferme ou Remote Control s'est déconnecté65 * `"worker_shutting_down"` : la boucle se terminera après le tour actuel car l'hôte se ferme ou Remote Control s'est déconnecté

66 66 

67 En TypeScript, chaque sous-type autre que `"init"` est son propre type dans l'union [`SDKMessage`](/docs/fr/agent-sdk/typescript#sdkmessage) plutôt qu'un sous-type de `SDKSystemMessage`.67 En TypeScript, chaque sous-type autre que `"init"` est son propre type dans l'union [`SDKMessage`](/docs/fr/agent-sdk/typescript#sdkmessage) plutôt qu'un sous-type de `SDKSystemMessage`.

68* **`AssistantMessage` :** émis après chaque réponse de Claude, y compris la réponse textuelle finale. Contient les blocs de contenu textuel et les blocs d'appels d'outils de ce tour.68* **`AssistantMessage` :** émis pour chaque bloc de contenu dans les réponses de Claude, y compris le bloc textuel final uniquement. Chacun porte un seul bloc de contenu, tel que du texte ou un appel d'outil, et les messages d'une réponse partagent un ID de message.

69* **`UserMessage` :** émis après chaque exécution d'outil avec le résultat d'outil renvoyé à Claude. Également émis pour toute entrée utilisateur que vous diffusez en boucle.69* **`UserMessage` :** émis après chaque exécution d'outil avec le résultat d'outil renvoyé à Claude. Également émis pour toute entrée utilisateur que vous diffusez en boucle.

70* **`StreamEvent` :** émis uniquement lorsque les messages partiels sont activés. Contient les événements de diffusion API bruts (deltas de texte, chunks d'entrée d'outil). Voir [Réponses en flux](/docs/fr/agent-sdk/streaming-output).70* **`StreamEvent` :** émis uniquement lorsque les messages partiels sont activés. Contient les événements de diffusion API bruts (deltas de texte, chunks d'entrée d'outil). Voir [Réponses en flux](/docs/fr/agent-sdk/streaming-output).

71* **`ResultMessage` :** marque la fin de la boucle d'agent. Contient le résultat textuel final, l'utilisation des tokens, le coût et l'ID de session. Vérifiez le champ `subtype` pour déterminer si la tâche a réussi ou a atteint une limite. Un petit nombre d'événements système de fin, tels que `prompt_suggestion`, peuvent arriver après, donc itérez le flux jusqu'à la fin plutôt que de vous arrêter au résultat. Voir [Gérer le résultat](#handle-the-result).71* **`ResultMessage` :** marque la fin de la boucle d'agent. Contient le résultat textuel final, l'utilisation des tokens, le coût et l'ID de session. Vérifiez le champ `subtype` pour déterminer si la tâche a réussi ou a atteint une limite. Un petit nombre d'événements système de fin, tels que `prompt_suggestion`, peuvent arriver après, donc itérez le flux jusqu'à la fin plutôt que de vous arrêter au résultat. Voir [Gérer le résultat](#handle-the-result).


91 <CodeGroup>91 <CodeGroup>

92 ```python Python theme={null}92 ```python Python theme={null}

93 import asyncio93 import asyncio

94 from claude_agent_sdk import query, AssistantMessage, ResultMessage94 from claude_agent_sdk import query, AssistantMessage, ResultMessage, TextBlock, ToolUseBlock

95 95 

96 96 

97 async def main():97 async def main():

98 try:98 try:

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

100 if isinstance(message, AssistantMessage):100 if isinstance(message, AssistantMessage):

101 print(f"Turn completed: {len(message.content)} content blocks")101 # Each AssistantMessage carries one content block

102 for block in message.content:

103 if isinstance(block, TextBlock):

104 print(f"Claude: {block.text}")

105 elif isinstance(block, ToolUseBlock):

106 print(f"Tool call: {block.name}")

102 if isinstance(message, ResultMessage):107 if isinstance(message, ResultMessage):

103 if message.subtype == "success":108 if message.subtype == "success":

104 print(message.result)109 print(message.result)


120 try {125 try {

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

122 if (message.type === "assistant") {127 if (message.type === "assistant") {

123 console.log(`Turn completed: ${message.message.content.length} content blocks`);128 // Each assistant message carries one content block

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

130 if (block.type === "text") {

131 console.log(`Claude: ${block.text}`);

132 } else if (block.type === "tool_use") {

133 console.log(`Tool call: ${block.name}`);

134 }

135 }

124 }136 }

125 if (message.type === "result") {137 if (message.type === "result") {

126 if (message.subtype === "success") {138 if (message.subtype === "success") {


175 187 

176Claude détermine les outils à appeler en fonction de la tâche, mais vous contrôlez si ces appels sont autorisés à s'exécuter. Vous pouvez approuver automatiquement des outils spécifiques, en bloquer d'autres entièrement, ou exiger une approbation pour tout. Trois options fonctionnent ensemble pour déterminer ce qui s'exécute :188Claude détermine les outils à appeler en fonction de la tâche, mais vous contrôlez si ces appels sont autorisés à s'exécuter. Vous pouvez approuver automatiquement des outils spécifiques, en bloquer d'autres entièrement, ou exiger une approbation pour tout. Trois options fonctionnent ensemble pour déterminer ce qui s'exécute :

177 189 

178* **`allowed_tools` / `allowedTools`** approuve automatiquement les outils listés. Un agent en lecture seule avec `["Read", "Glob", "Grep"]` dans sa liste d'outils autorisés exécute ces outils sans demander. Les outils non listés sont toujours disponibles mais nécessitent une permission.190* **`allowed_tools` / `allowedTools`** approuve automatiquement les outils listés. Un agent en lecture seule avec `["Read", "Glob", "Grep"]` dans sa liste d'outils autorisés exécute ces outils sans demander. Les outils non listés sont toujours disponibles, et les appels à ceux-ci qui nécessitent une approbation passent par le mode de permission et `canUseTool`.

179* **`disallowed_tools` / `disallowedTools`** bloque les outils listés, indépendamment des autres paramètres. Voir [Permissions](/docs/fr/agent-sdk/permissions) pour l'ordre dans lequel les règles sont vérifiées avant qu'un outil s'exécute.191* **`disallowed_tools` / `disallowedTools`** bloque les outils listés, indépendamment des autres paramètres. Voir [Permissions](/docs/fr/agent-sdk/permissions) pour l'ordre dans lequel les règles sont vérifiées avant qu'un outil s'exécute.

180* **`permission_mode` / `permissionMode`** contrôle le niveau de surveillance humaine que vous souhaitez. Le SDK évalue le mode actif avec vos règles d'autorisation et de refus dans un ordre fixe, décrit dans [Comment les permissions sont évaluées](/docs/fr/agent-sdk/permissions#how-permissions-are-evaluated). Voir [Mode de permission](#permission-mode) pour les modes disponibles.192* **`permission_mode` / `permissionMode`** contrôle le niveau de surveillance humaine que vous souhaitez. Le SDK évalue le mode actif avec vos règles d'autorisation et de refus dans un ordre fixe, décrit dans [Comment les permissions sont évaluées](/docs/fr/agent-sdk/permissions#how-permissions-are-evaluated). Voir [Mode de permission](#permission-mode) pour les modes disponibles.

181 193 


245| `"default"` | Les outils non couverts par les règles d'autorisation déclenchent votre rappel `canUseTool` ; pas de rappel signifie refuser | Applications interactives avec un rappel d'approbation personnalisé |257| `"default"` | Les outils non couverts par les règles d'autorisation déclenchent votre rappel `canUseTool` ; pas de rappel signifie refuser | Applications interactives avec un rappel d'approbation personnalisé |

246| `"acceptEdits"` | Approuve automatiquement les éditions de fichiers et les commandes communes du système de fichiers (`mkdir`, `touch`, `mv`, `cp`, etc.) ; les autres commandes Bash suivent les règles par défaut | Vous faites confiance aux éditions de Claude et voulez une itération plus rapide, par exemple lors du prototypage ou lorsque vous travaillez dans un répertoire isolé |258| `"acceptEdits"` | Approuve automatiquement les éditions de fichiers et les commandes communes du système de fichiers (`mkdir`, `touch`, `mv`, `cp`, etc.) ; les autres commandes Bash suivent les règles par défaut | Vous faites confiance aux éditions de Claude et voulez une itération plus rapide, par exemple lors du prototypage ou lorsque vous travaillez dans un répertoire isolé |

247| `"plan"` | Claude explore et planifie sans éditer vos fichiers source ; les éditions de fichiers ne sont jamais approuvées automatiquement et demandent via votre rappel `canUseTool` | Vous voulez que Claude propose des modifications sans les exécuter, par exemple lors d'une revue de code ou lorsque vous devez approuver les modifications avant qu'elles ne soient apportées |259| `"plan"` | Claude explore et planifie sans éditer vos fichiers source ; les éditions de fichiers ne sont jamais approuvées automatiquement et demandent via votre rappel `canUseTool` | Vous voulez que Claude propose des modifications sans les exécuter, par exemple lors d'une revue de code ou lorsque vous devez approuver les modifications avant qu'elles ne soient apportées |

248| `"dontAsk"` | Ne demande jamais. Les outils pré-approuvés par les [règles de permission](/docs/fr/settings-reference#permission-settings) s'exécutent ; tout le reste est refusé. `AskUserQuestion`, les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) et les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) sont refusés même si vous les avez autorisés | Vous voulez une surface d'outils fixe et explicite pour un agent sans interface et préférez un refus catégorique plutôt qu'une dépendance silencieuse à l'absence de `canUseTool` |260| `"dontAsk"` | Ne demande jamais. Les outils pré-approuvés par les [règles de permission](/docs/fr/settings-reference#permission-settings) s'exécutent, et il en va de même pour les appels qui ne nécessitent pas d'approbation en mode `default`, comme les lectures de fichiers dans vos répertoires de travail ; tout appel qui demanderait autrement est refusé. `AskUserQuestion`, les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) et les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) sont refusés même si vous les avez autorisés | Vous voulez une surface d'outils fixe et explicite pour un agent sans interface et préférez un refus catégorique plutôt qu'une dépendance silencieuse à l'absence de `canUseTool` |

249| `"auto"` | Utilise un classificateur de modèle pour approuver ou refuser les invites de permission. Voir [Mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) pour la disponibilité et le comportement | Agents autonomes qui veulent toujours des garde-fous de sécurité sur l'utilisation des outils |261| `"auto"` | Utilise un classificateur de modèle pour approuver ou refuser les invites de permission. Voir [Mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) pour la disponibilité et le comportement | Agents autonomes qui veulent toujours des garde-fous de sécurité sur l'utilisation des outils |

250| `"bypassPermissions"` | Exécute tous les outils autorisés sans demander, sauf les outils correspondant à une [règle `ask`](/docs/fr/settings-reference#permission-settings) explicite, les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) et les outils qui nécessitent une interaction utilisateur. Les [garde-fous de messagerie inter-sessions](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) s'appliquent toujours. Voir [Comment les permissions sont évaluées](/docs/fr/agent-sdk/permissions#how-permissions-are-evaluated) pour l'ordre de précédence. Dans le SDK TypeScript, nécessite également `allowDangerouslySkipPermissions: true` dans `options`. Ne peut pas être utilisé lors de l'exécution en tant que root sur Unix. À utiliser uniquement dans des environnements isolés où les actions de l'agent ne peuvent pas affecter les systèmes qui vous intéressent | CI, conteneurs ou autres environnements isolés |262| `"bypassPermissions"` | Exécute tous les outils autorisés sans demander, sauf les outils correspondant à une [règle `ask`](/docs/fr/settings-reference#permission-settings) explicite, les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) et les outils qui nécessitent une interaction utilisateur. Les [garde-fous de messagerie inter-sessions](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) s'appliquent toujours. Voir [Comment les permissions sont évaluées](/docs/fr/agent-sdk/permissions#how-permissions-are-evaluated) pour l'ordre de précédence. Dans le SDK TypeScript, nécessite également `allowDangerouslySkipPermissions: true` dans `options`. Ne peut pas être utilisé lors de l'exécution en tant que root sur Unix. À utiliser uniquement dans des environnements isolés où les actions de l'agent ne peuvent pas affecter les systèmes qui vous intéressent | CI, conteneurs ou autres environnements isolés |

251 263 

Details

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

93 93 

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

95| :------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |95| :------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

96| Paramètres de politique gérée | Politique gérée par le point de terminaison, qu'il s'agisse d'une plist MDM, d'une politique de registre ou de fichiers de paramètres gérés, se charge à partir de l'hôte. Les [paramètres gérés par le serveur](/docs/fr/server-managed-settings) sont récupérés sur une [configuration éligible](/docs/fr/server-managed-settings#platform-availability) quand la session s'authentifie avec une connexion OAuth d'organisation ou une clé API directement configurée | Politique de point de terminaison : supprimez le fichier de paramètres gérés, la plist ou la politique de registre de l'hôte. Paramètres gérés par le serveur : contrôlés par votre administrateur d'organisation ; ne peuvent pas être désactivés à partir du SDK |96| Paramètres de politique gérée | Politique gérée par le point de terminaison, qu'il s'agisse d'une plist MDM, d'une politique de registre ou de fichiers de paramètres gérés, se charge à partir de l'hôte. Les [paramètres gérés par le serveur](/docs/fr/server-managed-settings) sont récupérés sur une [configuration éligible](/docs/fr/server-managed-settings#platform-availability) quand la session s'authentifie avec une connexion OAuth d'organisation, une clé API directement configurée, ou un profil [Anthropic](/docs/fr/authentication#anthropic-profiles-and-federation-credentials) `user_oauth` | Politique de point de terminaison : supprimez le fichier de paramètres gérés, la plist ou la politique de registre de l'hôte. Paramètres gérés par le serveur : un [Propriétaire](/docs/fr/server-managed-settings#access-control) dans votre organisation Claude les contrôle ; ne peuvent pas être désactivés à partir du SDK |

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

98| Mémoire automatique à `~/.claude/projects/<project>/memory/` | Chargée dans l'invite système au démarrage de la session. L'agent écrit les nouvelles mémoires là avec les outils standard `Write` et `Edit` plutôt qu'avec un outil de mémoire dédié, donc ces outils doivent être activés pour que l'agent puisse enregistrer les mémoires | Définissez `autoMemoryEnabled: false` dans les paramètres, ou `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1` dans `env` |98| Mémoire automatique à `~/.claude/projects/<project>/memory/` | Chargée dans l'invite système au démarrage de la session. L'agent écrit les nouvelles mémoires là avec les outils standard `Write` et `Edit` plutôt qu'avec un outil de mémoire dédié, donc ces outils doivent être activés pour que l'agent puisse enregistrer les mémoires | Définissez `autoMemoryEnabled: false` dans les paramètres, ou `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1` dans `env` |

99| [Connecteurs MCP de claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai) | Chargés quand la session s'authentifie avec votre connexion claude.ai. Non chargés quand `CLAUDE_CODE_OAUTH_TOKEN` contient un jeton de [`claude setup-token`](/docs/fr/authentication#generate-a-long-lived-token), qui ne peut faire que des demandes de modèle. Passer `mcpServers: {}` ne supprime pas les connecteurs | Définissez `strictMcpConfig: true`, [`disableClaudeAiConnectors: true`](/docs/fr/mcp#disable-claude-ai-connectors) dans les paramètres, ou `ENABLE_CLAUDEAI_MCP_SERVERS=false` dans `env` |99| [Connecteurs MCP de claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai) | Chargés quand la session s'authentifie avec votre connexion claude.ai. Non chargés quand `CLAUDE_CODE_OAUTH_TOKEN` contient un jeton de [`claude setup-token`](/docs/fr/authentication#generate-a-long-lived-token), qui ne peut faire que des demandes de modèle. Passer `mcpServers: {}` ne supprime pas les connecteurs | Définissez `strictMcpConfig: true`, [`disableClaudeAiConnectors: true`](/docs/fr/mcp#disable-claude-ai-connectors) dans les paramètres, ou `ENABLE_CLAUDEAI_MCP_SERVERS=false` dans `env` |

Details

338L'option `tools` et les listes d'autorisation/interdiction affectent deux couches : la disponibilité, qui contrôle si un outil apparaît dans le contexte de Claude, et la permission, qui contrôle si un appel est approuvé une fois que Claude le tente. `tools` et les entrées `disallowedTools` avec nom simple changent la disponibilité. `allowedTools` et les règles `disallowedTools` délimitées changent la permission. Si vous nommez l'un des [outils de suivi des tâches](/docs/fr/agent-sdk/todo-tracking#model-availability) dans `allowedTools`, Claude Code opte également la session.338L'option `tools` et les listes d'autorisation/interdiction affectent deux couches : la disponibilité, qui contrôle si un outil apparaît dans le contexte de Claude, et la permission, qui contrôle si un appel est approuvé une fois que Claude le tente. `tools` et les entrées `disallowedTools` avec nom simple changent la disponibilité. `allowedTools` et les règles `disallowedTools` délimitées changent la permission. Si vous nommez l'un des [outils de suivi des tâches](/docs/fr/agent-sdk/todo-tracking#model-availability) dans `allowedTools`, Claude Code opte également la session.

339 339 

340| Option | Couche | Effet |340| Option | Couche | Effet |

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

342| `tools: ["Read", "Grep"]` | Disponibilité | Seuls les outils intégrés listés sont dans le contexte de Claude. Les outils intégrés non listés sont supprimés. Les outils MCP ne sont pas affectés. |342| `tools: ["Read", "Grep"]` | Disponibilité | Seuls les outils intégrés listés sont dans le contexte de Claude. Les outils intégrés non listés sont supprimés. Les outils MCP ne sont pas affectés. |

343| `tools: []` | Disponibilité | Tous les outils intégrés sont supprimés. Claude ne peut utiliser que vos outils MCP. |343| `tools: []` | Disponibilité | Tous les outils intégrés sont supprimés. Claude ne peut utiliser que vos outils MCP. |

344| outils autorisés | Permission | Les outils listés s'exécutent sans invite de permission. Les autres outils non listés restent disponibles ; les appels passent par le [flux de permission](/docs/fr/agent-sdk/permissions). |344| outils autorisés | Permission | Les outils listés s'exécutent sans invite de permission. Les autres outils non listés restent disponibles ; les appels passent par le [flux de permission](/docs/fr/agent-sdk/permissions). |

345| outils interdits | Les deux | Un nom d'outil simple tel que `"Bash"` supprime l'outil du contexte de Claude, comme l'omission de `tools`. Une règle délimitée telle que `"Bash(rm *)"` laisse l'outil en contexte et refuse uniquement les appels correspondants. |345| outils interdits | Les deux | Un nom d'outil simple tel que `"Bash"` supprime l'outil du contexte de Claude, comme l'omission de `tools`. Une règle délimitée telle que `"Bash(rm *)"` laisse l'outil en contexte et refuse uniquement les appels correspondants [comme écrit](/docs/fr/permissions#bash-rule-limits). |

346 346 

347Pour supprimer complètement un outil intégré, omettez-le de `tools` ou listez son nom simple dans `disallowedTools` (Python : `disallowed_tools`) ; les deux gardent l'outil hors du contexte afin que Claude ne le tente jamais. Une règle `disallowedTools` délimitée bloque les appels correspondants mais laisse l'outil visible, donc Claude peut gaspiller un tour en le tentant. Consultez [Configurer les permissions](/docs/fr/agent-sdk/permissions) pour l'ordre d'évaluation complet.347Pour supprimer complètement un outil intégré, omettez-le de `tools` ou listez son nom simple dans `disallowedTools` (Python : `disallowed_tools`) ; les deux gardent l'outil hors du contexte afin que Claude ne le tente jamais. Une règle `disallowedTools` délimitée bloque les appels correspondants mais laisse l'outil visible, donc Claude peut gaspiller un tour en le tentant. Consultez [Configurer les permissions](/docs/fr/agent-sdk/permissions) pour l'ordre d'évaluation complet.

348 348 

agent-sdk/examples.md +33 −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# Exemples

6 

7> Trouvez un projet Agent SDK complet et exécutable ou une recette guidée du Claude Cookbook qui correspond à ce que vous souhaitez construire.

8 

9Cette page vous oriente vers des projets Agent SDK complets et exécutables ainsi que des recettes guidées du Claude Cookbook. Les applications TypeScript se trouvent dans le dépôt [`claude-agent-sdk-demos`](https://github.com/anthropics/claude-agent-sdk-demos), et les recettes Python se trouvent dans le [Claude Cookbook](https://platform.claude.com/cookbook).

10 

11<h2 id="run-a-minimal-agent-first">

12 Exécutez d'abord un agent minimal

13</h2>

14 

15Si vous n'avez encore rien construit avec le SDK, commencez par l'un de ceux-ci avant une application complète :

16 

17* [Agent SDK quickstart](/docs/fr/agent-sdk/quickstart) : construisez votre premier agent fonctionnel en TypeScript ou Python, avec les étapes de configuration incluses. L'agent trouve et corrige les bugs dans un fichier exemple.

18 

19* [Hello World](https://github.com/anthropics/claude-agent-sdk-demos/tree/main/hello-world) : un projet TypeScript minimal à cloner quand vous souhaitez commencer à partir du code du dépôt

20 

21<h2 id="explore-a-typescript-application">

22 Explorez une application TypeScript

23</h2>

24 

25Les applications TypeScript dans [`claude-agent-sdk-demos`](https://github.com/anthropics/claude-agent-sdk-demos) sont des démos pour le développement local, allant d'un client email à un système de recherche multi-agent. Clonez la démo dont la structure correspond à ce que vous construisez.

26 

27<h2 id="work-through-a-python-recipe">

28 Travaillez avec une recette Python

29</h2>

30 

31La série Agent SDK du Claude Cookbook est une séquence de recettes, chacune étant un notebook Python, qui progresse d'un agent de recherche simple à des systèmes multi-agent sophistiqués. Chaque notebook s'appuie sur le précédent, introduisant de nouveaux concepts et capacités. Commencez par [l'agent de recherche one-liner](https://platform.claude.com/cookbook/claude-agent-sdk-00-the-one-liner-research-agent) et progressez.

32 

33Pour les recettes sur les produits Claude, consultez le [Claude Cookbook](https://platform.claude.com/cookbook) complet.

Details

924 La sortie de l'outil dépasse le nombre maximum de jetons autorisés924 La sortie de l'outil dépasse le nombre maximum de jetons autorisés

925</h3>925</h3>

926 926 

927Le SDK applique la même limite de sortie MCP que Claude Code. Lorsqu'un résultat d'outil est supérieur à 25 000 jetons, la sortie complète est enregistrée dans un fichier et le résultat de l'outil est remplacé par un message d'erreur qui nomme le chemin du fichier, afin que l'agent puisse relire la sortie par portions. Augmentez la limite avec la variable d'environnement [`MAX_MCP_OUTPUT_TOKENS`](/docs/fr/env-vars). Consultez [Limites et avertissements de sortie MCP](/docs/fr/mcp#mcp-output-limits-and-warnings) pour le comportement complet, y compris la façon dont un serveur peut déclarer une limite supérieure par outil avec l'annotation `anthropic/maxResultSizeChars`.927Le SDK applique la même limite de sortie MCP que Claude Code. Lorsqu'un résultat d'outil sans contenu image est supérieur à 25 000 jetons, Claude Code enregistre la sortie dans un fichier et remplace le résultat de l'outil par un message d'erreur qui nomme le chemin du fichier, afin que l'agent puisse relire la sortie par portions.

928 

929Augmentez la limite avec la variable d'environnement [`MAX_MCP_OUTPUT_TOKENS`](/docs/fr/env-vars). Consultez [Limites et avertissements de sortie MCP](/docs/fr/mcp#mcp-output-limits-and-warnings) pour le comportement complet, y compris la façon dont un serveur peut déclarer une limite supérieure par outil avec l'annotation `anthropic/maxResultSizeChars`.

928 930 

929<h2 id="related-resources">931<h2 id="related-resources">

930 Ressources connexes932 Ressources connexes

Details

44 Personnaliser le comportement de l'agent44 Personnaliser le comportement de l'agent

45</h2>45</h2>

46 46 

47Les styles de sortie, `append`, et une chaîne de prompt personnalisée modifient chacun directement le prompt système. CLAUDE.md emprunte un chemin différent : le SDK le lit et injecte son contenu dans la conversation en tant que contexte de projet, pas dans le prompt système, donc il façonne le comportement aux côtés de n'importe quel prompt système que vous choisissez. [Skills](/docs/fr/agent-sdk/skills), [hooks](/docs/fr/agent-sdk/hooks), et [permissions](/docs/fr/agent-sdk/permissions) façonnent également le comportement en dehors du prompt système et sont couverts sur leurs propres pages.47`append` et une chaîne de prompt personnalisée modifient chacun directement le prompt système, et un style de sortie change les instructions que Claude Code donne à Claude pour chaque réponse. CLAUDE.md emprunte un chemin différent : le SDK le lit et injecte son contenu dans la conversation en tant que contexte de projet, donc il façonne le comportement aux côtés de n'importe quel prompt système que vous choisissez. [Skills](/docs/fr/agent-sdk/skills), [hooks](/docs/fr/agent-sdk/hooks), et [permissions](/docs/fr/agent-sdk/permissions) façonnent également le comportement en dehors du prompt système et sont couverts sur leurs propres pages.

48 48 

49<h3 id="claude-md-files-for-project-level-instructions">49<h3 id="claude-md-files-for-project-level-instructions">

50 Fichiers CLAUDE.md pour les instructions au niveau du projet50 Fichiers CLAUDE.md pour les instructions au niveau du projet


118 Styles de sortie pour les configurations persistantes118 Styles de sortie pour les configurations persistantes

119</h3>119</h3>

120 120 

121Les styles de sortie sont des configurations enregistrées qui modifient le prompt système de Claude. Ils sont stockés sous forme de fichiers markdown et peuvent être réutilisés dans les sessions et les projets.121Les styles de sortie sont des configurations enregistrées d'instructions qui modifient le rôle, le ton et le format de sortie de Claude. Ils sont stockés sous forme de fichiers markdown et peuvent être réutilisés dans les sessions et les projets.

122 122 

123<h4 id="create-an-output-style">123<h4 id="create-an-output-style">

124 Créer un style de sortie124 Créer un style de sortie


387* Si vous incluez le marqueur plus d'une fois, le premier est la division et le SDK supprime les autres.387* Si vous incluez le marqueur plus d'une fois, le premier est la division et le SDK supprime les autres.

388* Si vous laissez le marqueur de côté, le SDK joint toutes les chaînes en un bloc, identique à passer une chaîne.388* Si vous laissez le marqueur de côté, le SDK joint toutes les chaînes en un bloc, identique à passer une chaîne.

389 389 

390<h3 id="change-the-prompt-of-an-existing-session">

391 Modifier le prompt d'une session existante

392</h3>

393 

394Par défaut, Claude Code construit le prompt système une fois, à la première demande d'une session, avec votre texte `append` ou prompt personnalisé inclus, et l'enregistre dans la session. Jusqu'à ce que la session soit compactée, chaque demande ultérieure utilise ce prompt enregistré, y compris après que vous reveniez à la session avec `resume` ou `continue`. Si vous passez un `append` ou un prompt personnalisé différent à cet appel ultérieur, il prend effet une fois que la session est compactée ou dans une nouvelle session.

395 

396Si vous démarrez Claude Code en [mode bare](/docs/fr/headless#start-faster-with-bare-mode) en passant `--bare` via `extraArgs` ou en définissant `CLAUDE_CODE_SIMPLE=1`, l'enregistrement reste désactivé sauf si vous définissez `snapshot: true` sur la forme d'objet de `systemPrompt`. L'enregistrement d'un `append` ou d'un prompt personnalisé par défaut nécessite Claude Code v2.1.265 ou ultérieur, que le SDK Agent TypeScript regroupe à partir de v0.3.265. Avant Claude Code v2.1.268, les sessions qui ne [récupèrent pas les drapeaux de fonctionnalité](/docs/fr/env-vars#features-that-need-feature-flag-fetching), y compris les sessions sur Amazon Bedrock, Google Cloud's Agent Platform, et Microsoft Foundry, reconstruisaient le prompt à chaque demande et `snapshot` n'avait aucun effet.

397 

398Pour reconstruire le prompt à chaque demande à la place, définissez `snapshot: false` sur la forme d'objet de `systemPrompt` dans le SDK TypeScript : `{ type: "preset", preset: "claude_code", append, snapshot: false }` ou `{ type: "custom", prompt, snapshot: false }`. Utilisez cette forme pendant que vous itérez sur la formulation du prompt, ou quand votre application change `append` entre les appels qui reprennent la même session. Le champ `snapshot` nécessite `@anthropic-ai/claude-agent-sdk` v0.3.257 ou ultérieur.

399 

390<h2 id="compare-the-four-approaches">400<h2 id="compare-the-four-approaches">

391 Comparaison des quatre approches401 Comparaison des quatre approches

392</h2>402</h2>

Details

32 </Step>32 </Step>

33 33 

34 <Step title="Mode de permission">34 <Step title="Mode de permission">

35 Appliquez le [mode de permission](#permission-modes) actif. `bypassPermissions` approuve tout ce qui atteint cette étape sauf les suppressions `rm` et `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths), qui passent à la place. `acceptEdits` approuve les opérations de fichiers listées sous [Mode d'acceptation des modifications](#accept-edits-mode-acceptedits). `plan` achemine les outils d'édition de fichiers et d'écriture shell vers votre callback `canUseTool` indépendamment des règles d'autorisation, donc les opérations d'écriture ne peuvent pas être approuvées automatiquement lors de la planification. Les autres modes passent au suivant.35 Appliquez le [mode de permission](#permission-modes) actif :

36 

37 * En mode `bypassPermissions`, Claude Code approuve tout ce qui atteint cette étape sauf les suppressions `rm` et `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths), qui passent à la place.

38 * En mode `acceptEdits`, Claude Code approuve les opérations de fichiers listées sous [Mode d'acceptation des modifications](#accept-edits-mode-acceptedits).

39 * En mode `plan`, Claude Code achemine les outils d'édition de fichiers et d'écriture shell vers votre callback `canUseTool` indépendamment des règles d'autorisation, donc les opérations d'écriture ne peuvent pas être approuvées automatiquement lors de la planification.

40 * Dans les autres modes, la demande passe au suivant.

36 </Step>41 </Step>

37 42 

38 <Step title="Règles d'autorisation">43 <Step title="Règles d'autorisation">

39 Vérifiez les règles `allow` (à partir de `allowed_tools` et settings.json). Si une règle correspond, l'outil est approuvé. Les suppressions `rm` et `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths) ne sont jamais approuvées par une règle d'autorisation : elles atteignent votre callback dans les modes qui demandent, vont au [classificateur](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) en mode `auto` sur Claude Code v2.1.218 ou ultérieur, et sont refusées en mode `dontAsk`.44 Vérifiez les règles `allow` (à partir de `allowed_tools` et settings.json). Si une règle correspond, l'outil est approuvé. Un appel que l'outil approuve de lui-même est également résolu à cette étape, sans règle nécessaire : par exemple une lecture de fichier dans vos répertoires de travail ou une [commande Bash en lecture seule](/docs/fr/permissions#read-only-commands). Les suppressions `rm` et `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths) ne sont jamais approuvées par une règle d'autorisation : elles atteignent votre callback dans les modes qui demandent, vont au [classificateur](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) en mode `auto` sur Claude Code v2.1.218 ou ultérieur, et sont refusées en mode `dontAsk`.

40 </Step>45 </Step>

41 46 

42 <Step title="Callback canUseTool">47 <Step title="Callback canUseTool">


68 Règles d'autorisation et de refus73 Règles d'autorisation et de refus

69</h2>74</h2>

70 75 

71`allowed_tools` et `disallowed_tools` (TypeScript : `allowedTools` / `disallowedTools`) ajoutent des entrées aux listes de règles d'autorisation et de refus dans le flux d'évaluation ci-dessus. Si vous nommez l'un des [outils de suivi des tâches](/docs/fr/agent-sdk/todo-tracking#model-availability) dans `allowed_tools`, Claude Code opte également la session. Tout autre outil non listé dans `allowed_tools` est toujours disponible pour Claude et passe au mode de permission. Les règles de refus se comportent différemment selon qu'elles nomment un outil ou délimitent un motif au sein de celui-ci.76`allowed_tools` et `disallowed_tools` (TypeScript : `allowedTools` / `disallowedTools`) ajoutent des entrées aux listes de règles d'autorisation et de refus dans le flux d'évaluation ci-dessus. Si vous nommez l'un des [outils de suivi des tâches](/docs/fr/agent-sdk/todo-tracking#model-availability) dans `allowed_tools`, Claude Code opte également la session. Tout autre outil non listé dans `allowed_tools` est toujours disponible pour Claude, et un appel à celui-ci qui nécessite une approbation passe au mode de permission. Les règles de refus se comportent différemment selon qu'elles nomment un outil ou délimitent un motif au sein de celui-ci.

72 77 

73| Option | Effet |78| Option | Effet |

74| :-------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |79| :-------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

75| `allowed_tools=["Read", "Grep"]` | `Read` et `Grep` sont auto-approuvés. Les outils non listés ici existent toujours et passent au mode de permission et à `canUseTool`. |80| `allowed_tools=["Read", "Grep"]` | `Read` et `Grep` sont auto-approuvés. Les autres outils non listés ici existent toujours, et les appels à ceux-ci qui nécessitent une approbation passent au mode de permission et à `canUseTool`. |

76| `disallowed_tools=["Bash"]` | La définition de l'outil `Bash` est supprimée de la requête. Claude ne voit pas l'outil et ne peut pas le tenter. |81| `disallowed_tools=["Bash"]` | La définition de l'outil `Bash` est supprimée de la requête. Claude ne voit pas l'outil et ne peut pas le tenter. |

77| `disallowed_tools=["Bash(rm *)"]` | `Bash` reste disponible. Les appels correspondant à `rm *` sont refusés dans tous les modes de permission, y compris `bypassPermissions`. Les autres appels `Bash` passent au mode de permission. |82| `disallowed_tools=["Bash(rm *)"]` | `Bash` reste disponible. Les appels correspondant à `rm *` [tel qu'écrit](/docs/fr/permissions#bash-rule-limits) sont refusés dans tous les modes de permission, y compris `bypassPermissions`. Les autres appels `Bash`, y compris `/bin/rm`, passent au mode de permission. |

78| `disallowed_tools=["*"]` | Chaque définition d'outil est supprimée de la requête. Les globs de noms d'outils sont pris en charge dans les règles de refus : `"*"` correspond à chaque outil et `"mcp__*"` correspond à chaque outil MCP sur tous les serveurs. |83| `disallowed_tools=["*"]` | Chaque définition d'outil est supprimée de la requête. Les globs de noms d'outils sont pris en charge dans les règles de refus : `"*"` correspond à chaque outil et `"mcp__*"` correspond à chaque outil MCP sur tous les serveurs. |

79 84 

80Les règles d'autorisation acceptent les globs de noms d'outils uniquement après un préfixe littéral `mcp__<server>__`. Le segment serveur doit être sans glob afin que la règle nomme un serveur spécifique que vous avez configuré : `mcp__puppeteer__*` correspond à chaque outil du serveur `puppeteer`, et `mcp__github__get_*` correspond à ses outils `get_`. Une entrée non ancrée comme `allowed_tools=["*"]` ou `allowed_tools=["mcp__*"]` est ignorée avec un avertissement au démarrage et n'auto-approuve rien.85Les règles d'autorisation acceptent les globs de noms d'outils uniquement après un préfixe littéral `mcp__<server>__`. Le segment serveur doit être sans glob afin que la règle nomme un serveur spécifique que vous avez configuré : `mcp__puppeteer__*` correspond à chaque outil du serveur `puppeteer`, et `mcp__github__get_*` correspond à ses outils `get_`. Une entrée non ancrée comme `allowed_tools=["*"]` ou `allowed_tools=["mcp__*"]` est ignorée avec un avertissement au démarrage et n'auto-approuve rien.


86<Warning>91<Warning>

87 **Les outils auto-approuvés ne parviennent jamais à `canUseTool`.** Un appel d'outil approuvé à n'importe quelle étape antérieure, par `acceptEdits` ou `bypassPermissions`, ou par une règle d'autorisation, ignore votre rappel `canUseTool`, de sorte que les vérifications de permission que vous y mettez sont silencieusement contournées pour cet outil. `AskUserQuestion`, les outils MCP marqués [`_meta["anthropic/requiresUserInteraction"]`](/docs/fr/mcp#require-approval-for-a-specific-tool), les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools), et les suppressions `rm` et `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths) parviennent toujours au rappel, même lorsqu'une règle d'autorisation correspond. En mode `auto`, les suppressions de chemin critique vont au [classificateur](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) au lieu du rappel, tandis que les autres appels listés ici parviennent toujours à celui-ci ; le routage du classificateur nécessite Claude Code v2.1.218 ou ultérieur. En mode `dontAsk`, ces appels sont refusés à la place, sans invoquer le rappel.92 **Les outils auto-approuvés ne parviennent jamais à `canUseTool`.** Un appel d'outil approuvé à n'importe quelle étape antérieure, par `acceptEdits` ou `bypassPermissions`, ou par une règle d'autorisation, ignore votre rappel `canUseTool`, de sorte que les vérifications de permission que vous y mettez sont silencieusement contournées pour cet outil. `AskUserQuestion`, les outils MCP marqués [`_meta["anthropic/requiresUserInteraction"]`](/docs/fr/mcp#require-approval-for-a-specific-tool), les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools), et les suppressions `rm` et `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths) parviennent toujours au rappel, même lorsqu'une règle d'autorisation correspond. En mode `auto`, les suppressions de chemin critique vont au [classificateur](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) au lieu du rappel, tandis que les autres appels listés ici parviennent toujours à celui-ci ; le routage du classificateur nécessite Claude Code v2.1.218 ou ultérieur. En mode `dontAsk`, ces appels sont refusés à la place, sans invoquer le rappel.

88 93 

89 La couverture dépend de la forme de l'entrée : un nom nu comme `Read` ou `mcp__github__get_issue` auto-approuve chaque appel à cet outil en dehors des exceptions ci-dessus, tandis qu'une règle délimitée comme `Bash(ls *)` auto-approuve uniquement les appels correspondants et les autres appels `Bash` passent toujours au rappel. Pour les vérifications qui doivent s'exécuter sur chaque appel d'outil, utilisez un hook [`PreToolUse`](/docs/fr/agent-sdk/hooks) : les hooks s'exécutent avant chaque autre étape, et un refus de hook s'applique même en mode `bypassPermissions`.94 La couverture dépend de la forme de l'entrée : un nom nu comme `Read` ou `mcp__github__get_issue` auto-approuve chaque appel à cet outil en dehors des exceptions ci-dessus, tandis qu'une règle délimitée comme `Bash(npm test *)` auto-approuve uniquement les appels correspondants, et les autres appels `Bash` qui nécessitent une approbation passent toujours au rappel. Pour les vérifications qui doivent s'exécuter sur chaque appel d'outil, utilisez un hook [`PreToolUse`](/docs/fr/agent-sdk/hooks) : les hooks s'exécutent avant chaque autre étape, et un refus de hook s'applique même en mode `bypassPermissions`.

90</Warning>95</Warning>

91 96 

92Pour un agent verrouillé, associez `allowedTools` avec `permissionMode: "dontAsk"`. Les outils listés sont approuvés, à l'exception des outils toujours-demandés mentionnés dans l'avertissement ci-dessus ; tout le reste est refusé directement au lieu de demander :97Pour un agent verrouillé, associez `allowedTools` avec `permissionMode: "dontAsk"` :

93 98 

94```typescript theme={null}99```typescript theme={null}

95const options = {100const options = {


98};103};

99```104```

100 105 

106Les outils listés sont approuvés, à l'exception des [actions qu'aucun mode n'auto-approuve](/docs/fr/permission-modes#actions-no-mode-auto-approves), et tout autre appel qui demanderait une approbation est refusé à la place. Les appels qui ne nécessitent aucune approbation en mode `default` s'exécutent que vous les listiez ou non, comme les [commandes Bash en lecture seule](/docs/fr/permissions#read-only-commands), les outils comme `Agent` qui ne demandent pas avant de s'exécuter, et les lectures de fichiers dans vos répertoires de travail. Pour mettre un outil hors de portée de Claude entièrement, ajoutez son nom nu à `disallowedTools`.

107 

101<Warning>108<Warning>

102 **`allowed_tools` ne contraint pas `bypassPermissions`.** `allowed_tools` pré-approuve uniquement les outils que vous listez. Les outils non listés ne correspondent à aucune règle d'autorisation et passent au mode de permission, où `bypassPermissions` les approuve. Définir `allowed_tools=["Read"]` avec `permission_mode="bypassPermissions"` approuve toujours tous les outils, y compris `Bash`, `Write` et `Edit`. Si vous avez besoin de `bypassPermissions` mais que vous voulez que certains outils soient bloqués, utilisez `disallowed_tools`.109 **`allowed_tools` ne contraint pas `bypassPermissions`.** `allowed_tools` pré-approuve les outils que vous listez. Les autres outils non listés ne correspondent à aucune règle d'autorisation et passent au mode de permission, où `bypassPermissions` les approuve. Définir `allowed_tools=["Read"]` avec `permission_mode="bypassPermissions"` approuve toujours tous les outils, y compris `Bash`, `Write` et `Edit`. Si vous avez besoin de `bypassPermissions` mais que vous voulez que certains outils soient bloqués, utilisez `disallowed_tools`.

103</Warning>110</Warning>

104 111 

105Vous pouvez également configurer les règles d'autorisation, de refus et de demande de manière déclarative dans `.claude/settings.json`. Ces règles sont lues lorsque la source de paramètre `project` est activée, ce qui est le cas pour les options `query()` par défaut. Si vous définissez `setting_sources` (TypeScript : `settingSources`) explicitement, incluez `"project"` pour qu'elles s'appliquent. Consultez [Paramètres de permission](/docs/fr/settings-reference#permission-settings) pour la syntaxe des règles.112Vous pouvez également configurer les règles d'autorisation, de refus et de demande de manière déclarative dans `.claude/settings.json`. Ces règles sont lues lorsque la source de paramètre `project` est activée, ce qui est le cas pour les options `query()` par défaut. Si vous définissez `setting_sources` (TypeScript : `settingSources`) explicitement, incluez `"project"` pour qu'elles s'appliquent. Consultez [Paramètres de permission](/docs/fr/settings-reference#permission-settings) pour la syntaxe des règles.


117Le SDK supporte ces modes de permission :124Le SDK supporte ces modes de permission :

118 125 

119| Mode | Description | Comportement de l'outil |126| Mode | Description | Comportement de l'outil |

120| :------------------ | :------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |127| :------------------ | :------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

121| `default` | Comportement de permission standard | Pas d'auto-approbations ; les outils non appariés déclenchent votre callback `canUseTool` |128| `default` | Comportement de permission standard | Pas d'auto-approbations basées sur le mode ; les appels qui nécessitent une approbation et ne correspondent à aucune règle d'autorisation déclenchent votre callback `canUseTool` |

122| `dontAsk` | Refuser au lieu de demander | Tout ce qui n'est pas pré-approuvé par `allowed_tools` ou les règles est refusé ; les outils connecteur [que votre organisation a défini sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) et les outils qui nécessitent une interaction utilisateur sont refusés même si vous les avez pré-approuvés, tout comme les suppressions `rm` et `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths). `canUseTool` n'est jamais appelé |129| `dontAsk` | Refuser au lieu de demander | Tout appel qui demanderait autrement est refusé. Les appels approuvés par `allowed_tools` ou les règles s'exécutent, tout comme les appels qui ne nécessitent pas d'approbation en mode `default` ; les outils connecteur [que votre organisation a défini sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) et les outils qui nécessitent une interaction utilisateur sont refusés même si vous les avez pré-approuvés, tout comme les suppressions `rm` et `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths). `canUseTool` n'est jamais appelé |

123| `acceptEdits` | Auto-accepter les modifications de fichiers | Les modifications de fichiers et les [opérations du système de fichiers](#accept-edits-mode-acceptedits) (`mkdir`, `rm`, `mv`, etc.) sont automatiquement approuvées |130| `acceptEdits` | Auto-accepter les modifications de fichiers | Les modifications de fichiers et les [opérations du système de fichiers](#accept-edits-mode-acceptedits) (`mkdir`, `rm`, `mv`, etc.) sont automatiquement approuvées |

124| `bypassPermissions` | Contourner les contrôles de permission | Les outils s'exécutent sans invites de permission, sauf pour les [actions qu'aucun mode n'auto-approuve](/docs/fr/permission-modes#actions-no-mode-auto-approves). À utiliser avec prudence |131| `bypassPermissions` | Contourner les contrôles de permission | Les outils s'exécutent sans invites de permission, sauf pour les [actions qu'aucun mode n'auto-approuve](/docs/fr/permission-modes#actions-no-mode-auto-approves). À utiliser avec prudence |

125| `plan` | Mode de planification | Claude explore et planifie sans modifier vos fichiers source ; les modifications de fichiers ne sont jamais auto-approuvées et demandent via votre callback `canUseTool` |132| `plan` | Mode de planification | Claude explore et planifie sans modifier vos fichiers source ; les modifications de fichiers ne sont jamais auto-approuvées et demandent via votre callback `canUseTool` |

126| `auto` | Approbations classées par modèle | Un classificateur de modèle approuve ou refuse les invites de permission. Consultez [Mode Auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) pour la disponibilité |133| `auto` | Approbations classées par modèle | Un classificateur de modèle approuve ou refuse les invites de permission. Consultez [Mode Auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) pour la disponibilité |

127 134 

128<Warning>135<Warning>

129 **Héritage des sous-agents :** Les sous-agents héritent du mode de permission de la session parent. Un [`AgentDefinition`'s `permissionMode`](/docs/fr/agent-sdk/typescript#agentdefinition) peut le remplacer, sauf lorsque le parent utilise `bypassPermissions`, `acceptEdits` ou `auto` : ces modes s'appliquent à chaque sous-agent et ne peuvent pas être remplacés par sous-agent. Claude Code ignore également un `permissionMode: "bypassPermissions"` de définition lorsque le mode bypass est désactivé par [`permissions.disableBypassPermissionsMode`](/docs/fr/permissions#managed-settings), de sorte que le sous-agent s'exécute avec le mode de la session parent.136 **Héritage des sous-agents :** Un sous-agent s'exécute dans le mode de permission de la session parent sauf si vous définissez `permissionMode` sur son [`AgentDefinition`](/docs/fr/agent-sdk/typescript#agentdefinition) et que la session parent est en mode `default`, `dontAsk`, ou `plan`. Même dans ce cas, Claude Code n'applique jamais une valeur `"bypassPermissions"`. Un sous-agent s'exécute en mode `bypassPermissions` uniquement lorsque la session parent elle-même le fait. L'exception `bypassPermissions` nécessite Claude Code v2.1.267 ou ultérieur.

130 137 

131 Les sous-agents peuvent avoir des invites système différentes et un comportement moins contraint que votre agent principal, donc hériter de `bypassPermissions` leur accorde un accès système complet et autonome. Les [actions qu'aucun mode n'auto-approuve](/docs/fr/permission-modes#actions-no-mode-auto-approves) s'appliquent toujours.138 Les sous-agents peuvent avoir des invites système différentes et un comportement moins contraint que votre agent principal, donc hériter de `bypassPermissions` leur accorde un accès système complet et autonome. Les [actions qu'aucun mode n'auto-approuve](/docs/fr/permission-modes#actions-no-mode-auto-approves) s'appliquent toujours.

132</Warning>139</Warning>


254* Modifications de fichiers (outils Edit, Write)261* Modifications de fichiers (outils Edit, Write)

255* Commandes du système de fichiers : `mkdir`, `touch`, `rm`, `rmdir`, `mv`, `cp`, `sed`262* Commandes du système de fichiers : `mkdir`, `touch`, `rm`, `rmdir`, `mv`, `cp`, `sed`

256 263 

257Les deux s'appliquent uniquement aux chemins à l'intérieur du répertoire de travail ou de `additionalDirectories`. Les chemins en dehors de cette portée, les écritures vers des chemins protégés, et les suppressions `rm` et `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths) demandent toujours.264Les deux s'appliquent uniquement aux chemins à l'intérieur du répertoire de travail ou de `additionalDirectories`. En mode `acceptEdits`, Claude Code n'auto-approuve pas la demande lorsque Claude :

265 

266* Travaille sur un chemin en dehors de cette portée

267* Écrit vers un chemin protégé

268* Supprime un [chemin critique](/docs/fr/permission-modes#critical-paths) avec `rm` ou `rmdir`

258 269 

259**À utiliser quand :** vous faites confiance aux modifications de Claude et voulez une itération plus rapide, par exemple lors du prototypage ou lorsque vous travaillez dans un répertoire isolé.270**À utiliser quand :** vous faites confiance aux modifications de Claude et voulez une itération plus rapide, par exemple lors du prototypage ou lorsque vous travaillez dans un répertoire isolé.

260 271 


262 Mode de non-demande (`dontAsk`)273 Mode de non-demande (`dontAsk`)

263</h4>274</h4>

264 275 

265Convertit toute invite de permission en refus. Les outils pré-approuvés par `allowed_tools`, les règles d'autorisation de `settings.json` ou un hook s'exécutent normalement. Les outils connecteur [que votre organisation a défini sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools), les outils qui nécessitent une interaction utilisateur, et les suppressions `rm` et `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths) sont refusés même lorsqu'une règle d'autorisation correspond. Un allow hook `PreToolUse` ne supprime pas non plus une suppression de chemin critique. Tout le reste est refusé sans appeler `canUseTool`.276Convertit toute invite de permission en refus, sans appeler `canUseTool`. Les outils pré-approuvés par `allowed_tools`, les règles d'autorisation de `settings.json`, ou un hook s'exécutent normalement, tout comme les appels qui ne nécessitent pas d'approbation en mode `default`, tels que les lectures de fichiers à l'intérieur de vos répertoires de travail et les appels à `Agent`. Les outils connecteur [que votre organisation a défini sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools), les outils qui nécessitent une interaction utilisateur, et les suppressions `rm` et `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths) sont refusés même lorsqu'une règle d'autorisation correspond. Un allow hook `PreToolUse` ne supprime pas non plus une suppression de chemin critique.

266 277 

267**À utiliser quand :** vous voulez une surface d'outil fixe et explicite pour un agent sans interface et préférez un refus catégorique à une dépendance silencieuse à l'absence de `canUseTool`.278**À utiliser quand :** vous voulez une surface d'outil fixe et explicite pour un agent sans interface et préférez un refus catégorique à une dépendance silencieuse à l'absence de `canUseTool`.

268 279 


277 288 

278 `allowed_tools` ne contraint pas ce mode. Tous les outils sont approuvés, pas seulement ceux que vous avez listés. Ces contrôles s'appliquent toujours :289 `allowed_tools` ne contraint pas ce mode. Tous les outils sont approuvés, pas seulement ceux que vous avez listés. Ces contrôles s'appliquent toujours :

279 290 

280 * Les règles de refus, les règles `ask` explicites et les hooks sont évalués avant la vérification du mode et peuvent toujours bloquer un outil.291 * Les règles de refus, les règles `ask` explicites, et les hooks sont évalués avant la vérification du mode et peuvent toujours bloquer un outil.

281 * Les outils connecteur [que votre organisation a défini sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools), les outils qui nécessitent une interaction utilisateur, et les suppressions `rm` et `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths) tombent toujours dans votre callback `canUseTool`.292 * Les outils connecteur [que votre organisation a défini sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools), les outils qui nécessitent une interaction utilisateur, et les suppressions `rm` et `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths) tombent toujours dans votre callback `canUseTool`.

282 * Les [protections de messagerie inter-sessions](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) s'appliquent toujours.293 * Les [protections de messagerie inter-sessions](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) s'appliquent toujours.

283</Warning>294</Warning>

Details

906| `session_id` | `str \| None` | `None` | Utilisez un ID de session spécifique au lieu d'un généré automatiquement. Doit être un UUID valide. Ne peut pas être combiné avec `continue_conversation` ou `resume` sauf si `fork_session` est également défini |906| `session_id` | `str \| None` | `None` | Utilisez un ID de session spécifique au lieu d'un généré automatiquement. Doit être un UUID valide. Ne peut pas être combiné avec `continue_conversation` ou `resume` sauf si `fork_session` est également défini |

907| `max_turns` | `int \| None` | `None` | Nombre maximum de tours agentiques (allers-retours d'utilisation d'outils) |907| `max_turns` | `int \| None` | `None` | Nombre maximum de tours agentiques (allers-retours d'utilisation d'outils) |

908| `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](/docs/fr/agent-sdk/cost-tracking) pour les avertissements de précision |908| `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](/docs/fr/agent-sdk/cost-tracking) pour les avertissements de précision |

909| `disallowed_tools` | `list[str]` | `[]` | Outils à refuser. Un nom simple tel que `"Bash"` supprime l'outil du contexte de Claude. Une règle délimitée telle que `"Bash(rm *)"` laisse l'outil disponible et refuse les appels correspondants dans chaque mode de permission, y compris `bypassPermissions`. Voir [Permissions](/docs/fr/agent-sdk/permissions#allow-and-deny-rules) |909| `disallowed_tools` | `list[str]` | `[]` | Outils à refuser. Un nom simple tel que `"Bash"` supprime l'outil du contexte de Claude. Une règle délimitée telle que `"Bash(rm *)"` laisse l'outil disponible et refuse les appels correspondants dans chaque mode de permission, y compris `bypassPermissions`, pour la commande [telle qu'écrite](/docs/fr/permissions#bash-rule-limits). Voir [Permissions](/docs/fr/agent-sdk/permissions#allow-and-deny-rules) |

910| `enable_file_checkpointing` | `bool` | `False` | Activez le suivi des modifications de fichiers pour le rembobinage. Voir [Sauvegarde de points de contrôle de fichiers](/docs/fr/agent-sdk/file-checkpointing) |910| `enable_file_checkpointing` | `bool` | `False` | Activez le suivi des modifications de fichiers pour le rembobinage. Voir [Sauvegarde de points de contrôle de fichiers](/docs/fr/agent-sdk/file-checkpointing) |

911| `model` | `str \| None` | `None` | Alias de modèle Claude ou nom de modèle complet. Voir [valeurs acceptées et identifiants spécifiques au fournisseur](/docs/fr/model-config#available-models) |911| `model` | `str \| None` | `None` | Alias de modèle Claude ou nom de modèle complet. Voir [valeurs acceptées et identifiants spécifiques au fournisseur](/docs/fr/model-config#available-models) |

912| `fallback_model` | `str \| None` | `None` | Modèle de secours à utiliser si le modèle principal échoue |912| `fallback_model` | `str \| None` | `None` | Modèle de secours à utiliser si le modèle principal échoue |


927| `user` | `str \| None` | `None` | Identifiant utilisateur |927| `user` | `str \| None` | `None` | Identifiant utilisateur |

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

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

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

931| `fork_session` | `bool` | `False` | Quand reprendre avec `resume`, bifurquer vers un nouvel ID de session au lieu de continuer la session originale |931| `fork_session` | `bool` | `False` | Quand reprendre avec `resume`, bifurquer vers un nouvel ID de session au lieu de continuer la session originale |

932| `resume_session_at` | `str \| None` | `None` | Quand reprendre, charger la conversation uniquement jusqu'à et y compris le message avec cet UUID. Utilisez avec `resume`, et généralement `fork_session`, pour brancher à partir d'un point antérieur. Nécessite Python Agent SDK 0.2.137 ou ultérieur |932| `resume_session_at` | `str \| None` | `None` | Quand reprendre, charger la conversation uniquement jusqu'à et y compris le message avec cet UUID. Utilisez avec `resume`, et généralement `fork_session`, pour brancher à partir d'un point antérieur. Nécessite Python Agent SDK 0.2.137 ou ultérieur |

933| `resume_drops_turn` | `str \| None` | `None` | UUID du prompt utilisateur dont le tour une troncature `resume_session_at` rejette. Quand défini, le CLI refuse la reprise si la plage rejetée contient des entrées non attribuables à ce tour. Nécessite Python Agent SDK 0.2.137 ou ultérieur et Claude Code v2.1.223 ou ultérieur ; le CLI fourni avec ces versions du SDK satisfait l'exigence de Claude Code |933| `resume_drops_turn` | `str \| None` | `None` | UUID du prompt utilisateur dont le tour une troncature `resume_session_at` rejette. Quand défini, le CLI refuse la reprise si la plage rejetée contient des entrées non attribuables à ce tour. Nécessite Python Agent SDK 0.2.137 ou ultérieur et Claude Code v2.1.223 ou ultérieur ; le CLI fourni avec ces versions du SDK satisfait l'exigence de Claude Code |


1181| `maxTurns` | Non | Nombre maximum de tours agentiques avant que l'agent s'arrête |1181| `maxTurns` | Non | Nombre maximum de tours agentiques avant que l'agent s'arrête |

1182| `background` | Non | Exécutez cet agent comme une tâche de fond non-bloquante quand invoqué |1182| `background` | Non | Exécutez cet agent comme une tâche de fond non-bloquante quand invoqué |

1183| `effort` | Non | Niveau d'effort de raisonnement pour cet agent. Accepte un niveau nommé ou un entier. Voir [`EffortLevel`](#effortlevel) |1183| `effort` | Non | Niveau d'effort de raisonnement pour cet agent. Accepte un niveau nommé ou un entier. Voir [`EffortLevel`](#effortlevel) |

1184| `permissionMode` | Non | Mode de permission pour l'exécution des outils dans cet agent. Voir [`PermissionMode`](#permissionmode) |1184| `permissionMode` | Non | Mode de permission pour l'exécution des outils dans cet agent. Les [règles d'héritage des sous-agents](/docs/fr/agent-sdk/permissions#available-modes) décident quand il s'applique. Voir [`PermissionMode`](#permissionmode) |

1185 1185 

1186<Note>1186<Note>

1187 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.1187 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.


2699 "run_in_background": bool | None, # Agents run in the background by default; set to False to run synchronously2699 "run_in_background": bool | None, # Agents run in the background by default; set to False to run synchronously

2700 "name": str | None, # Name for the spawned agent2700 "name": str | None, # Name for the spawned agent

2701 "team_name": str | None, # Deprecated; ignored2701 "team_name": str | None, # Deprecated; ignored

2702 "mode": "acceptEdits" | "auto" | "bypassPermissions" | "default" | "dontAsk" | "plan" | None, # Deprecated; ignored. Subagents inherit the parent session's permission mode; agent-definition frontmatter may override it2702 "mode": "acceptEdits" | "auto" | "bypassPermissions" | "default" | "dontAsk" | "plan" | None, # Deprecated; ignored. The subagent inheritance rules decide a subagent's permission mode

2703 "isolation": "worktree" | "remote" | None, # Isolation mode for the agent's changes2703 "isolation": "worktree" | "remote" | None, # Isolation mode for the agent's changes

2704}2704}

2705```2705```


3164**Nom de l'outil :** `TodoWrite`3164**Nom de l'outil :** `TodoWrite`

3165 3165 

3166<Note>3166<Note>

3167 À partir du SDK Agent Python 0.2.139, la restriction suivante s'applique.

3168 

3169 The following tools are available by default only on Claude 3.x models, Opus 4 through 4.7, Sonnet 4 through 4.6, and Haiku 4.5. On every other model, including model IDs Claude Code doesn't recognize, they aren't available unless you opt in:3167 The following tools are available by default only on Claude 3.x models, Opus 4 through 4.7, Sonnet 4 through 4.6, and Haiku 4.5. On every other model, including model IDs Claude Code doesn't recognize, they aren't available unless you opt in:

3170 3168 

3171 * `TodoWrite`3169 * `TodoWrite`

Details

6 6 

7> Recevez les réponses en temps réel du SDK Agent à mesure que le texte et les appels d'outils sont diffusés7> Recevez les réponses en temps réel du SDK Agent à mesure que le texte et les appels d'outils sont diffusés

8 8 

9Par défaut, le SDK Agent produit des objets `AssistantMessage` complets après que Claude ait terminé de générer chaque réponse. Pour recevoir des mises à jour incrémentielles à mesure que le texte et les appels d'outils sont générés, activez la diffusion de messages partiels.9Par défaut, le SDK Agent produit un objet `AssistantMessage` complet pour chaque bloc de contenu non vide, tel qu'un bloc de texte ou un appel d'outil, après que Claude ait terminé de générer ce bloc. Pour recevoir des mises à jour incrémentielles à mesure que le texte et les appels d'outils sont générés, activez la diffusion de messages partiels.

10 10 

11<Tip>11<Tip>

12 Cette page couvre la diffusion de sortie (réception des jetons en temps réel). Pour les modes d'entrée (comment vous envoyez les messages), consultez [Envoyer des messages aux agents](/docs/fr/agent-sdk/streaming-vs-single-mode). Vous pouvez également [diffuser les réponses en utilisant le SDK Agent via la CLI](/docs/fr/headless).12 Cette page couvre la diffusion de sortie (réception des jetons en temps réel). Pour les modes d'entrée (comment vous envoyez les messages), consultez [Envoyer des messages aux agents](/docs/fr/agent-sdk/streaming-vs-single-mode). Vous pouvez également [diffuser les réponses en utilisant le SDK Agent via la CLI](/docs/fr/headless).


102 uuid: UUID;102 uuid: UUID;

103 session_id: string;103 session_id: string;

104 ttft_ms?: number; // Time to first token in ms, present only on message_start events104 ttft_ms?: number; // Time to first token in ms, present only on message_start events

105 user_message_uuid?: string;

105 };106 };

106 ```107 ```

107</CodeGroup>108</CodeGroup>

108 109 

109Le champ `parent_tool_use_id` est toujours `None` en Python et `null` en TypeScript. Les événements de diffusion sont émis pour la session principale uniquement ; les deltas au niveau des tokens des sous-agents ne sont pas transmis. Pour attribuer la sortie à un sous-agent, utilisez les messages complets, qui portent `parent_tool_use_id`. Voir [Détecter l'invocation de sous-agent](/docs/fr/agent-sdk/subagents#detect-subagent-invocation).110Le champ `parent_tool_use_id` est toujours `None` en Python et `null` en TypeScript. Les événements de diffusion sont émis pour la session principale uniquement ; les deltas au niveau des tokens des sous-agents ne sont pas transmis. Pour attribuer la sortie à un sous-agent, utilisez les messages complets, qui portent `parent_tool_use_id`. Voir [Détecter l'invocation de sous-agent](/docs/fr/agent-sdk/subagents#detect-subagent-invocation).

110 111 

112Claude Code définit `user_message_uuid` sur le premier événement de diffusion non-ping du tour, et à nouveau lorsque le message auquel le tour répond change, selon les conditions dans [`user_message_uuid`](/docs/fr/agent-sdk/typescript#user_message_uuid). Le `StreamEvent` Python n'expose pas ce champ.

113 

111Le champ `event` contient l'événement de diffusion brut de l'[API Claude](https://platform.claude.com/docs/en/build-with-claude/streaming#event-types). Les types d'événements courants incluent :114Le champ `event` contient l'événement de diffusion brut de l'[API Claude](https://platform.claude.com/docs/en/build-with-claude/streaming#event-types). Les types d'événements courants incluent :

112 115 

113| Type d'événement | Description |116| Type d'événement | Description |


123 Flux des messages126 Flux des messages

124</h2>127</h2>

125 128 

126Avec les messages partiels activés, vous recevez les messages dans cet ordre :129Claude Code émet un `AssistantMessage` à chaque fois qu'un bloc de contenu non vide se termine, donc une réponse avec un bloc de texte et un appel d'outil produit deux objets `AssistantMessage`. Chacun ne porte que son propre bloc de contenu, et les deux partagent le même ID de message, que vous lisez comme `message.message.id` en TypeScript et `message.message_id` en Python. Avec les messages partiels activés, chaque `AssistantMessage` arrive avant l'événement `content_block_stop` de ce bloc, et vous recevez les messages dans cet ordre :

127 130 

128```text theme={null}131```text theme={null}

129StreamEvent (message_start)132StreamEvent (message_start)

130StreamEvent (content_block_start) - text block133StreamEvent (content_block_start) - text block

131StreamEvent (content_block_delta) - text chunks...134StreamEvent (content_block_delta) - text chunks...

135AssistantMessage - complete text block

132StreamEvent (content_block_stop)136StreamEvent (content_block_stop)

133StreamEvent (content_block_start) - tool_use block137StreamEvent (content_block_start) - tool_use block

134StreamEvent (content_block_delta) - tool input chunks...138StreamEvent (content_block_delta) - tool input chunks...

139AssistantMessage - complete tool_use block

135StreamEvent (content_block_stop)140StreamEvent (content_block_stop)

136StreamEvent (message_delta)141StreamEvent (message_delta)

137StreamEvent (message_stop)142StreamEvent (message_stop)

138AssistantMessage - complete message with all content

139... tool executes ...143... tool executes ...

140... more streaming events for next turn ...144... more streaming events for next turn ...

141ResultMessage - final result145ResultMessage - final result

142```146```

143 147 

144Sans les messages partiels activés, vous recevez tous les types de messages sauf `StreamEvent`. Les types courants incluent `SystemMessage` (initialisation de session), `AssistantMessage` (réponses complètes), `ResultMessage` (résultat final), et un message de limite compact indiquant quand l'historique de conversation a été compacté (`SDKCompactBoundaryMessage` en TypeScript ; `SystemMessage` avec le sous-type `"compact_boundary"` en Python).148Sans les messages partiels activés, vous recevez tous les types de messages sauf `StreamEvent`. Les types courants incluent `SystemMessage` (initialisation de session), `AssistantMessage` (blocs de contenu complets), `ResultMessage` (résultat final), et un message de limite compact indiquant quand l'historique de conversation a été compacté (`SDKCompactBoundaryMessage` en TypeScript ; `SystemMessage` avec le sous-type `"compact_boundary"` en Python).

145 149 

146<h2 id="stream-tool-calls">150<h2 id="stream-tool-calls">

147 Diffuser les appels d'outils151 Diffuser les appels d'outils

Details

166| `maxTurns` | `number` | Non | Nombre maximum de tours d'agent avant que l'agent s'arrête. Lorsque l'agent atteint la limite, Claude Code retourne sa sortie marquée comme partielle, et vous pouvez [reprendre l'agent](#resume-subagents) pour continuer. Le marquage partiel nécessite Claude Code v2.1.246 ou ultérieur |166| `maxTurns` | `number` | Non | Nombre maximum de tours d'agent avant que l'agent s'arrête. Lorsque l'agent atteint la limite, Claude Code retourne sa sortie marquée comme partielle, et vous pouvez [reprendre l'agent](#resume-subagents) pour continuer. Le marquage partiel nécessite Claude Code v2.1.246 ou ultérieur |

167| `background` | `boolean` | Non | Exécuter cet agent en tant que tâche d'arrière-plan non bloquante lorsqu'il est invoqué |167| `background` | `boolean` | Non | Exécuter cet agent en tant que tâche d'arrière-plan non bloquante lorsqu'il est invoqué |

168| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max' \| number` | Non | Niveau d'effort de raisonnement pour cet agent |168| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max' \| number` | Non | Niveau d'effort de raisonnement pour cet agent |

169| `permissionMode` | `PermissionMode` | Non | Mode de permission pour l'exécution des outils au sein de cet agent |169| `permissionMode` | `PermissionMode` | Non | Mode de permission pour l'exécution des outils au sein de cet agent. Les [règles d'héritage des sous-agents](/docs/fr/agent-sdk/permissions#available-modes) décident quand il s'applique |

170 170 

171Dans le SDK Python, les noms de champs multi-mots tels que `disallowedTools` et `mcpServers` conservent leur orthographe camelCase pour correspondre au format de transmission plutôt que de suivre la convention snake\_case de Python. Consultez la [référence `AgentDefinition`](/docs/fr/agent-sdk/python#agentdefinition) pour plus de détails.171Dans le SDK Python, les noms de champs multi-mots tels que `disallowedTools` et `mcpServers` conservent leur orthographe camelCase pour correspondre au format de transmission plutôt que de suivre la convention snake\_case de Python. Consultez la [référence `AgentDefinition`](/docs/fr/agent-sdk/python#agentdefinition) pour plus de détails.

172 172 

Details

6 6 

7> Suivre les tâches dans les sessions du SDK Agent et afficher la progression de Claude dans votre application à partir d'appels d'outils structurés7> Suivre les tâches dans les sessions du SDK Agent et afficher la progression de Claude dans votre application à partir d'appels d'outils structurés

8 8 

9Sur les modèles listés sous [Disponibilité des modèles](#model-availability), Claude suit les travaux multi-étapes sans liste de tâches écrite, et Claude Code laisse les [outils de suivi des tâches](/docs/fr/tools-reference#task-tool-availability) en dehors des sessions par défaut. Vous n'avez besoin de rien sur cette page pour que Claude travaille sur des tâches multi-étapes sur ces modèles.9Claude Code fournit les [outils de suivi des tâches](/docs/fr/tools-reference#task-tool-availability) par défaut uniquement sur les modèles listés sous [Disponibilité des modèles](#model-availability). Les modèles plus récents suivent les travaux multi-étapes sans liste de tâches écrite, donc sur ceux-ci vous n'avez besoin de rien sur cette page pour que Claude travaille sur des tâches multi-étapes.

10 10 

11Dans une session qui dispose des outils de suivi des tâches, Claude maintient une liste de tâches écrite, mettant à jour le statut de chaque élément au fur et à mesure qu'il travaille. Vous voyez chaque changement dans le flux de messages sous forme d'appel d'outil structuré. Optez pour une session uniquement lorsque votre application lit ces appels d'outils, que ce soit pour enregistrer l'activité des tâches ou pour afficher son propre écran de progression.11Dans une session qui dispose des outils de suivi des tâches, Claude maintient une liste de tâches écrite, mettant à jour le statut de chaque élément au fur et à mesure qu'il travaille. Vous voyez chaque changement dans le flux de messages sous forme d'appel d'outil structuré. Optez pour une session uniquement lorsque votre application lit ces appels d'outils, que ce soit pour enregistrer l'activité des tâches ou pour afficher son propre écran de progression.

12 12 


15</h2>15</h2>

16 16 

17<Note>17<Note>

18 Sur TypeScript Agent SDK 0.3.233 et versions ultérieures, ou Python Agent SDK 0.2.139 et versions ultérieures, la restriction suivante s'applique.

19 

20 The following tools are available by default only on Claude 3.x models, Opus 4 through 4.7, Sonnet 4 through 4.6, and Haiku 4.5. On every other model, including model IDs Claude Code doesn't recognize, they aren't available unless you opt in:18 The following tools are available by default only on Claude 3.x models, Opus 4 through 4.7, Sonnet 4 through 4.6, and Haiku 4.5. On every other model, including model IDs Claude Code doesn't recognize, they aren't available unless you opt in:

21 19 

22 * `TodoWrite`20 * `TodoWrite`


30 This default set applies in Claude Code v2.1.268 and later, which the TypeScript Agent SDK bundles from v0.3.268.28 This default set applies in Claude Code v2.1.268 and later, which the TypeScript Agent SDK bundles from v0.3.268.

31</Note>29</Note>

32 30 

33Sur les modèles listés, sauf si vous optez pour une session, vous ne voyez aucun bloc `tool_use` pour les outils du flux de messages. Le SDK Agent applique ces paramètres par défaut via le binaire Claude Code qu'il regroupe. Si vous pointez `pathToClaudeCodeExecutable` (TypeScript) ou `cli_path` (Python) vers votre propre installation de Claude Code, vous obtenez les outils que cette installation fournit, selon ses propres paramètres par défaut. Pour voir l'ensemble exact dans une session en cours d'exécution, [vérifiez quels outils sont disponibles](/docs/fr/tools-reference#check-which-tools-are-available). Pour opter pour une session, faites l'une des choses suivantes :31Sur un modèle qui n'a pas les outils par défaut, sauf si vous optez pour une session, vous ne voyez aucun bloc `tool_use` pour eux dans le flux de messages. Le SDK Agent applique ces paramètres par défaut via le binaire Claude Code qu'il regroupe. Si vous pointez `pathToClaudeCodeExecutable` (TypeScript) ou `cli_path` (Python) vers votre propre installation de Claude Code, vous obtenez les outils que cette installation fournit, selon ses propres paramètres par défaut. Pour voir l'ensemble exact dans une session en cours d'exécution, [vérifiez quels outils sont disponibles](/docs/fr/tools-reference#check-which-tools-are-available). Pour opter pour une session, faites l'une des choses suivantes :

34 32 

35* Nommez l'un des outils dans l'option [`allowedTools`](/docs/fr/agent-sdk/permissions#allow-and-deny-rules) (TypeScript) ou `allowed_tools` (Python)33* Nommez l'un des outils dans l'option [`allowedTools`](/docs/fr/agent-sdk/permissions#allow-and-deny-rules) (TypeScript) ou `allowed_tools` (Python)

36* Listez les outils dans l'option `tools`, qui restreint les outils intégrés de la session à ceux qu'elle nomme. Incluez les outils que vous souhaitez aux côtés des autres outils intégrés que vous utilisez34* Listez les outils dans l'option `tools`, qui restreint les outils intégrés de la session à ceux qu'elle nomme. Incluez les outils que vous souhaitez aux côtés des autres outils intégrés que vous utilisez

agent-sdk/troubleshooting.md +161 −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 le SDK Agent

6 

7> Corrigez les erreurs du SDK Agent en fonction du message exact que vous voyez, avec la cause et la correction pour chaque erreur dans les SDK TypeScript et Python.

8 

9Les entrées de cette page sont indexées selon l'erreur que vous voyez. Chacune indique la cause et ce qu'il faut faire.

10 

11<h2 id="cli-startup">

12 Démarrage du CLI

13</h2>

14 

15<h3 id="clinotfounderror-claude-code-not-found">

16 CLINotFoundError : Claude Code introuvable

17</h3>

18 

19Le SDK Python lance le CLI Claude Code en tant que sous-processus. Quand il ne peut pas trouver un exécutable `claude`, la connexion échoue avec une `CLINotFoundError` :

20 

21```

22Claude Code not found at: /your/configured/path

23```

24 

25Le message inclut le chemin configuré quand vous définissez `ClaudeAgentOptions(cli_path=...)` et qu'il pointe vers un fichier manquant. Sans `cli_path`, le SDK recherche dans votre `PATH` et les emplacements d'installation courants, et le message inclut les instructions d'installation pour votre plateforme.

26 

27Pour corriger cela :

28 

29* Installez Claude Code s'il n'est pas installé. Consultez [Installer Claude Code](/docs/fr/setup#install-claude-code) pour la commande sur votre plateforme.

30* Si vous avez défini `cli_path`, confirmez que le fichier existe et qu'il s'agit de l'exécutable `claude`.

31* Si vous comptez sur la résolution `PATH`, confirmez que `claude --version` fonctionne dans le même environnement que celui dans lequel votre application s'exécute. Les processus que vous lancez en dehors de votre shell, par exemple à partir d'un IDE ou d'un gestionnaire de services, s'exécutent souvent avec un `PATH` différent.

32 

33Le SDK TypeScript recherche le CLI dans son paquet de plateforme fourni et le chemin que vous avez défini dans `pathToClaudeCodeExecutable`. Faites correspondre le message que vous voyez :

34 

35* `Native CLI binary for <platform>-<arch> not found` : le paquet de plateforme fourni est manquant, le plus souvent parce que l'installation a ignoré les dépendances optionnelles. Réinstallez `@anthropic-ai/claude-agent-sdk` sans ignorer les dépendances optionnelles, ou pointez `pathToClaudeCodeExecutable` vers une [installation native](/docs/fr/setup#install-claude-code). Dans un exécutable monofichier construit avec `bun build --compile`, le même message a une cause et une correction différentes. Consultez [Compiler en un seul exécutable](/docs/fr/agent-sdk/typescript#compile-to-a-single-executable).

36* `Claude Code native binary not found at <path>` ou `Claude Code executable not found at <path>. Is options.pathToClaudeCodeExecutable set?` : le fichier au chemin résolu est manquant, ou le processus ne peut pas y accéder. Confirmez que le fichier existe à ce chemin et que le processus peut y accéder.

37 

38<h3 id="cliconnectionerror-refusing-to-execute-batch-script">

39 CLIConnectionError : Refus d'exécuter un script batch

40</h3>

41 

42Sur Windows, la connexion échoue avec une `CLIConnectionError` quand le chemin du CLI que le SDK Python utilise est un script batch `.bat` ou `.cmd`, y compris le shim `claude.cmd` qu'une installation npm crée :

43 

44```

45Refusing to execute batch script 'C:\\Users\\you\\AppData\\Roaming\\npm\\claude.cmd': Windows runs .bat/.cmd files via cmd.exe, which can execute commands injected through CLI arguments, and no reliable escaping for cmd.exe exists. Use a native claude executable instead: install Claude Code natively (irm https://claude.ai/install.ps1 | iex), point ClaudeAgentOptions(cli_path=...) at a claude.exe, or install the claude-agent-sdk wheel for a platform that bundles claude.exe (e.g. Windows x64).

46```

47 

48Le refus est un durcissement de sécurité délibéré, pas une installation cassée. Windows exécute les scripts batch en réécrivant le spawn en une invocation `cmd.exe /c`, et `cmd.exe` réanalyse toute la ligne de commande au moment de l'exécution, donc une valeur d'argument peut exécuter des commandes injectées.

49 

50La plupart des installations Windows ne rencontrent jamais cette erreur. La wheel Windows x64 de `claude-agent-sdk` inclut un `claude.exe`, et le SDK préfère le CLI fourni, puis tout `claude.exe` natif qu'il peut découvrir, avant de revenir à un shim batch. Vous voyez le refus dans deux cas :

51 

52* Vous avez défini `ClaudeAgentOptions(cli_path=...)` vers un fichier `.bat` ou `.cmd`, comme le shim `claude.cmd` de npm.

53* Votre installation n'a pas de `claude.exe` fourni ou natif, par exemple une installation source sur ARM64 Windows où le seul `claude` sur votre `PATH` est le shim npm.

54 

55Pour corriger cela, donnez au SDK un exécutable natif au lieu d'un script batch :

56 

57* Si vous avez défini `ClaudeAgentOptions(cli_path=...)`, pointez-le vers un `claude.exe` ou supprimez l'option. Le SDK ignore la découverte tant que `cli_path` est défini, donc une installation native seule ne peut pas prendre effet.

58* Installez Claude Code nativement dans PowerShell : `irm https://claude.ai/install.ps1 | iex`

59* Sur Windows x64, installez la wheel `claude-agent-sdk`, qui inclut `claude.exe`.

60 

61Avant `claude-agent-sdk` 0.2.124, le SDK Python lançait les scripts batch via `cmd.exe` sans cette vérification.

62 

63<h3 id="cliconnectionerror-failed-to-start-claude-code">

64 CLIConnectionError : Impossible de démarrer Claude Code

65</h3>

66 

67Le SDK a trouvé un fichier au chemin résolu mais n'a pas pu le lancer. Python lève ces défaillances en tant que `CLIConnectionError`. TypeScript rejette l'itération de message avec une erreur ne portant aucune classe SDK. Le tableau ci-dessous mappe chaque message à ce qu'il vous dit. Faites correspondre le message que vous voyez :

68 

69| Message | SDK | Ce qu'il vous dit |

70| ----------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------ |

71| `Failed to start Claude Code: <detail>` | Python | Le reste du message est l'erreur propre du système d'exploitation |

72| `Claude Code executable at <path> exists but failed to launch` | TypeScript | Le script au chemin configuré ne peut pas s'exécuter |

73| `Claude Code native binary at <path> exists but failed to launch` | TypeScript | Le binaire ne peut pas s'exécuter, avec une suggestion libc ajoutée au message |

74| `Failed to spawn Claude Code process: <detail>` | TypeScript | Toute autre défaillance de lancement |

75 

76Dans les deux SDK, la cause habituelle est un chemin résolu qui pointe vers quelque chose qui ne peut pas s'exécuter, comme un fichier texte, un répertoire ou un fichier sans permission d'exécution. Lisez la suggestion libc du message binaire natif comme une cause possible.

77 

78Pour corriger cela dans l'un ou l'autre SDK :

79 

80* Confirmez que le chemin configuré pointe vers l'exécutable `claude` lui-même et que le fichier a la permission d'exécution.

81* Si vous n'avez pas besoin d'un chemin personnalisé, supprimez `cli_path` en Python ou `pathToClaudeCodeExecutable` en TypeScript pour que le SDK trouve un CLI par lui-même, en préférant sa copie fournie.

82* Quand le binaire défaillant est la copie fournie du SDK dans une image conteneur, réinstallez le SDK pendant la construction de l'image pour que le binaire fourni corresponde à la plateforme du conteneur, ou reconstruisez l'image pour l'architecture sur laquelle elle s'exécute. La cause habituelle est un binaire qui ne correspond pas à l'architecture ou à la libc du conteneur, ou un qui a perdu sa permission d'exécution dans la construction de l'image.

83 

84<h3 id="cliconnectionerror-not-connected">

85 CLIConnectionError : Non connecté

86</h3>

87 

88Appeler une méthode `ClaudeSDKClient` en Python avant que le client se soit connecté, ou après qu'il se soit déconnecté, lève une `CLIConnectionError` avec ce message :

89 

90```

91Not connected. Call connect() first.

92```

93 

94Faites ce que le message dit. Appelez soit `await client.connect()` avant toute autre méthode client, soit ouvrez le client avec `async with ClaudeSDKClient() as client:`, qui se connecte à l'entrée.

95 

96<h2 id="cli-process-exit">

97 Sortie du processus CLI

98</h2>

99 

100Les entrées de cette section signifient que le processus Claude Code s'est terminé pendant que votre application l'utilisait. L'erreur que vous voyez dépend du langage SDK et du fait que le CLI ait signalé un résultat d'erreur avant sa sortie.

101 

102<h3 id="processerror-command-failed-with-exit-code">

103 ProcessError : Commande échouée avec le code de sortie

104</h3>

105 

106Le SDK Python lève une `ProcessError` quand le processus Claude Code se termine avec un code non nul :

107 

108```

109Command failed with exit code 1 (exit code: 1)

110Error output: Check stderr output for details

111```

112 

113Le message indique le code de sortie deux fois, et la ligne `Error output` est du texte fixe plutôt que la sortie d'erreur de votre processus. Le même texte fixe remplit l'attribut `stderr` de l'exception. L'attribut `exit_code` de l'exception porte le code. Pour capturer ce que le CLI a réellement écrit sur stderr, passez un callback `stderr` dans `ClaudeAgentOptions` et enregistrez ce qu'il reçoit.

114 

115Une `ProcessError` nue signifie que le CLI s'est terminé sans signaler un résultat d'erreur. Quand le CLI en a signalé un, le SDK lève [`ResultError`](/docs/fr/agent-sdk/python#resulterror) à la place, couvert dans [Claude Code a retourné un résultat d'erreur](#claude-code-returned-an-error-result). `ResultError` est une sous-classe de `ProcessError`, donc `except ProcessError` capture les deux. Pour les gérer différemment, mettez la clause `except ResultError` en premier.

116 

117Avant `claude-agent-sdk` 0.2.140, le SDK Python levait les sorties de résultat d'erreur en tant qu'une `Exception` simple plutôt qu'une `ResultError`.

118 

119<h3 id="claude-code-process-exited-with-code-n">

120 Le processus Claude Code s'est terminé avec le code N

121</h3>

122 

123Les wrappers IDE impriment aussi ce message, et la [référence d'erreur](/docs/fr/errors#claude-code-process-exited-with-code-n) la couvre pour VS Code et d'autres lanceurs. Cette entrée couvre ce que votre code SDK TypeScript reçoit. Le SDK surface une sortie CLI non nulle en tant qu'une `Error` simple qui rejette la boucle `for await` sur les messages de `query()`. Il n'y a pas de classe d'erreur SDK à capturer, donc enveloppez la boucle dans `try`/`catch` et faites correspondre le message :

124 

125```

126Claude Code process exited with code 1. stderr: <tail of the CLI's stderr>

127```

128 

129Quand le CLI a écrit sur stderr, le message se termine par la fin de celui-ci. Pour capturer le flux complet, passez un callback `stderr` dans les options de requête. Un processus tué par un signal signale `Claude Code process terminated by signal <name>` de la même forme.

130 

131<h3 id="claude-code-returned-an-error-result">

132 Claude Code a retourné un résultat d'erreur

133</h3>

134 

135Les deux SDK remplacent l'erreur de sortie du processus par ce message quand le CLI a signalé un résultat d'erreur avant de se terminer :

136 

137```

138Claude Code returned an error result: <the CLI's own error report>

139```

140 

141Le texte après les deux points est le rapport du CLI sur ce qui s'est mal passé, donc commencez par là plutôt que par la sortie elle-même. Python lève cela en tant qu'une [`ResultError`](/docs/fr/agent-sdk/python#resulterror), dont l'attribut `data` porte le résultat d'erreur complet. TypeScript rejette la boucle de message avec une `Error` simple portant la même forme de message.

142 

143<h2 id="structured-outputs">

144 Sorties structurées

145</h2>

146 

147<h3 id="structured_output-is-none-but-the-result-says-success">

148 structured\_output est None mais le résultat dit succès

149</h3>

150 

151Un message de résultat peut se terminer par `subtype: "success"` tandis que `structured_output` est `None` en Python ou `undefined` en TypeScript. L'exécution se termine, mais aucune sortie validée n'existe. Une façon de rencontrer cela est un schéma qu'aucune sortie ne peut satisfaire, par exemple des contraintes de longueur conflictuelles. L'exécution se termine sans erreur de validation, et le seul signal est le `structured_output` manquant.

152 

153Traitez ce résultat comme un échec dans le code d'application. Vérifiez à la fois que `subtype` est `success` et que `structured_output` est présent avant de l'utiliser. La section [Gestion des erreurs](/docs/fr/agent-sdk/structured-outputs#error-handling) montre ce modèle pour les deux SDK.

154 

155Si cela se produit à plusieurs reprises avec un schéma que vous croyez correct, vérifiez que le schéma est satisfaisable, puis simplifiez-le jusqu'à ce que les sorties se valident, et réintroduisez les contraintes une à la fois.

156 

157<h2 id="report-a-new-issue">

158 Signaler un nouveau problème

159</h2>

160 

161Si votre erreur n'est pas couverte ici, vérifiez les problèmes ouverts ou déposez-en un nouveau dans les référentiels SDK : [claude-agent-sdk-typescript](https://github.com/anthropics/claude-agent-sdk-typescript/issues) ou [claude-agent-sdk-python](https://github.com/anthropics/claude-agent-sdk-python/issues). Incluez le texte d'erreur complet et votre version SDK.

Details

481Objet de configuration pour la fonction `query()`.481Objet de configuration pour la fonction `query()`.

482 482 

483| Propriété | Type | Par défaut | Description |483| Propriété | Type | Par défaut | Description |

484| :-------------------------------- | :------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |484| :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

485| `abortController` | `AbortController` | `new AbortController()` | Contrôleur pour annuler les opérations |485| `abortController` | `AbortController` | `new AbortController()` | Contrôleur pour annuler les opérations |

486| `additionalDirectories` | `string[]` | `[]` | Répertoires supplémentaires auxquels Claude peut accéder. Le SDK transmet chaque entrée à Claude Code en tant que `--add-dir`, donc avec le paramètre `project`, Claude Code charge également [les compétences, commandes et sous-agents du répertoire](/docs/fr/permissions#additional-directories-grant-file-access-not-configuration) |486| `additionalDirectories` | `string[]` | `[]` | Répertoires supplémentaires auxquels Claude peut accéder. Le SDK transmet chaque entrée à Claude Code en tant que `--add-dir`, donc avec le paramètre `project`, Claude Code charge également [les compétences, commandes et sous-agents du répertoire](/docs/fr/permissions#additional-directories-grant-file-access-not-configuration) |

487| `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 |487| `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 |


495| `cwd` | `string` | `process.cwd()` | Répertoire de travail actuel |495| `cwd` | `string` | `process.cwd()` | Répertoire de travail actuel |

496| `debug` | `boolean` | `false` | Activer le mode débogage pour le processus Claude Code |496| `debug` | `boolean` | `false` | Activer le mode débogage pour le processus Claude Code |

497| `debugFile` | `string` | `undefined` | Écrire les journaux de débogage dans un chemin de fichier spécifique. Active implicitement le mode débogage |497| `debugFile` | `string` | `undefined` | Écrire les journaux de débogage dans un chemin de fichier spécifique. Active implicitement le mode débogage |

498| `disallowedTools` | `string[]` | `[]` | Outils à refuser. Un nom simple tel que `"Bash"` supprime l'outil du contexte de Claude. Une règle délimitée telle que `"Bash(rm *)"` laisse l'outil disponible et refuse les appels correspondants dans chaque mode de permission, y compris `bypassPermissions`. Voir [Permissions](/docs/fr/agent-sdk/permissions#allow-and-deny-rules) |498| `disallowedTools` | `string[]` | `[]` | Outils à refuser. Un nom simple tel que `"Bash"` supprime l'outil du contexte de Claude. Une règle délimitée telle que `"Bash(rm *)"` laisse l'outil disponible et refuse les appels correspondants dans chaque mode de permission, y compris `bypassPermissions`, pour la commande [telle qu'écrite](/docs/fr/permissions#bash-rule-limits). Voir [Permissions](/docs/fr/agent-sdk/permissions#allow-and-deny-rules) |

499| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | Par défaut du modèle | Contrôle l'effort que Claude met dans sa réponse. Fonctionne avec la réflexion adaptative pour guider la profondeur de réflexion. Voir [ajuster le niveau d'effort](/docs/fr/model-config#adjust-effort-level) |499| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | Par défaut du modèle | Contrôle l'effort que Claude met dans sa réponse. Fonctionne avec la réflexion adaptative pour guider la profondeur de réflexion. Voir [ajuster le niveau d'effort](/docs/fr/model-config#adjust-effort-level) |

500| `enableFileCheckpointing` | `boolean` | `false` | Activer le suivi des modifications de fichiers pour le rembobinage. Voir [Sauvegarde de fichiers](/docs/fr/agent-sdk/file-checkpointing) |500| `enableFileCheckpointing` | `boolean` | `false` | Activer le suivi des modifications de fichiers pour le rembobinage. Voir [Sauvegarde de fichiers](/docs/fr/agent-sdk/file-checkpointing) |

501| `env` | `Record<string, string \| undefined>` | `process.env` | Variables d'environnement. Quand défini, cela remplace l'environnement du sous-processus au lieu de fusionner avec `process.env`, donc passez `{ ...process.env, YOUR_VAR: 'value' }` pour conserver les variables héritées comme `PATH`. Voir [Gérer les réponses API lentes ou bloquées](#handle-slow-or-stalled-api-responses) pour un exemple de ce modèle, et [Variables d'environnement](/docs/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 |501| `env` | `Record<string, string \| undefined>` | `process.env` | Variables d'environnement. Quand défini, cela remplace l'environnement du sous-processus au lieu de fusionner avec `process.env`, donc passez `{ ...process.env, YOUR_VAR: 'value' }` pour conserver les variables héritées comme `PATH`. Voir [Gérer les réponses API lentes ou bloquées](#handle-slow-or-stalled-api-responses) pour un exemple de ce modèle, et [Variables d'environnement](/docs/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 |


504| `extraArgs` | `Record<string, string \| null>` | `{}` | Arguments supplémentaires |504| `extraArgs` | `Record<string, string \| null>` | `{}` | Arguments supplémentaires |

505| `fallbackModel` | `string` | `undefined` | Modèle à utiliser si le principal échoue |505| `fallbackModel` | `string` | `undefined` | Modèle à utiliser si le principal échoue |

506| `forkSession` | `boolean` | `false` | Lors de la reprise avec `resume`, bifurquer vers un nouvel ID de session au lieu de continuer la session d'origine |506| `forkSession` | `boolean` | `false` | Lors de la reprise avec `resume`, bifurquer vers un nouvel ID de session au lieu de continuer la session d'origine |

507| `forwardSubagentText` | `boolean` | `false` | Transférer les blocs de texte et de réflexion des sous-agents en tant que messages assistant et utilisateur avec `parent_tool_use_id` défini, pour que les consommateurs puissent afficher une transcription imbriquée. Par défaut, seuls les blocs `tool_use` et `tool_result` des sous-agents sont émis. Les messages des sous-agents à chaque profondeur d'imbrication sont transférés sur Claude Code v2.1.219 et ultérieur ; avant v2.1.219, seuls les messages des sous-agents de profondeur 1 apparaissaient |507| `forwardSubagentText` | `boolean` | `false` | Transférer les blocs de texte et de réflexion des sous-agents en tant que messages assistant et utilisateur avec `parent_tool_use_id` défini, pour que les consommateurs puissent afficher une transcription imbriquée. Sans cette option, Claude Code émet les blocs `tool_use` et `tool_result` des sous-agents mais pas le texte ou la réflexion. Les messages des sous-agents à chaque profondeur d'imbrication sont transférés sur Claude Code v2.1.219 et ultérieur ; avant v2.1.219, seuls les messages des sous-agents de profondeur 1 apparaissaient |

508| `hooks` | `Partial<Record<`[`HookEvent`](#hookevent)`, `[`HookCallbackMatcher`](#hookcallbackmatcher)`[]>>` | `{}` | Rappels de hook pour les événements |508| `hooks` | `Partial<Record<`[`HookEvent`](#hookevent)`, `[`HookCallbackMatcher`](#hookcallbackmatcher)`[]>>` | `{}` | Rappels de hook pour les événements |

509| `includeHookEvents` | `boolean` | `false` | Inclure les événements du cycle de vie du hook dans le flux de messages en tant que [`SDKHookStartedMessage`](#sdkhookstartedmessage), [`SDKHookProgressMessage`](#sdkhookprogressmessage), et [`SDKHookResponseMessage`](#sdkhookresponsemessage). Les événements du cycle de vie pour les hooks `SessionStart` et `Setup` sont toujours inclus et n'ont pas besoin de cette option. Certains événements de hook, tels que `Notification`, `SessionEnd`, `PreCompact`, et `PostCompact`, ne produisent jamais un `SDKHookStartedMessage`, même avec cette option. Pour ceux-ci, Claude Code émet toujours un `SDKHookProgressMessage` tandis qu'un hook de commande qui s'exécute pendant plus d'une seconde produit une sortie, et émet un `SDKHookResponseMessage` uniquement quand un hook [qui s'exécute en arrière-plan](/docs/fr/hooks#run-hooks-in-the-background) se termine |509| `includeHookEvents` | `boolean` | `false` | Inclure les événements du cycle de vie du hook dans le flux de messages en tant que [`SDKHookStartedMessage`](#sdkhookstartedmessage), [`SDKHookProgressMessage`](#sdkhookprogressmessage), et [`SDKHookResponseMessage`](#sdkhookresponsemessage). Les événements du cycle de vie pour les hooks `SessionStart` et `Setup` sont toujours inclus et n'ont pas besoin de cette option. Certains événements de hook, tels que `Notification`, `SessionEnd`, `PreCompact`, et `PostCompact`, ne produisent jamais un `SDKHookStartedMessage`, même avec cette option. Pour ceux-ci, Claude Code émet toujours un `SDKHookProgressMessage` tandis qu'un hook de commande qui s'exécute pendant plus d'une seconde produit une sortie, et émet un `SDKHookResponseMessage` uniquement quand un hook [qui s'exécute en arrière-plan](/docs/fr/hooks#run-hooks-in-the-background) se termine |

510| `includePartialMessages` | `boolean` | `false` | Inclure les événements de message partiel |510| `includePartialMessages` | `boolean` | `false` | Inclure les événements de message partiel |


539| `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 |539| `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 |

540| `stderr` | `(data: string) => void` | `undefined` | Rappel pour la sortie stderr |540| `stderr` | `(data: string) => void` | `undefined` | Rappel pour la sortie stderr |

541| `strictMcpConfig` | `boolean` | `false` | Utiliser uniquement les serveurs passés dans `mcpServers` et ignorer le projet `.mcp.json`, les paramètres utilisateur, les serveurs MCP fournis par les plugins, et les [connecteurs claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai) |541| `strictMcpConfig` | `boolean` | `false` | Utiliser uniquement les serveurs passés dans `mcpServers` et ignorer le projet `.mcp.json`, les paramètres utilisateur, les serveurs MCP fournis par les plugins, et les [connecteurs claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai) |

542| `systemPrompt` | `string \| 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. Passez un tableau de chaînes avec la constante exportée `SYSTEM_PROMPT_DYNAMIC_BOUNDARY` entre les parties statiques et par requête pour [mettre en cache la partie statique d'une invite personnalisée](/docs/fr/agent-sdk/modifying-system-prompts#cache-the-static-part-of-a-custom-prompt). 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](/docs/fr/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) |542| `systemPrompt` | `string \| string[] \| { type: 'custom'; prompt: string \| string[]; snapshot?: boolean } \| { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean; snapshot?: 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. Passez un tableau de chaînes avec la constante exportée `SYSTEM_PROMPT_DYNAMIC_BOUNDARY` entre les parties statiques et par requête pour [mettre en cache la partie statique d'une invite personnalisée](/docs/fr/agent-sdk/modifying-system-prompts#cache-the-static-part-of-a-custom-prompt). 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](/docs/fr/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines). Définissez `snapshot: false` pour reconstruire l'invite à chaque requête au lieu de [réutiliser l'invite que la session a enregistrée à sa première requête](/docs/fr/agent-sdk/modifying-system-prompts#change-the-prompt-of-an-existing-session). Pour définir `snapshot` sur une invite personnalisée, passez la forme `{ type: 'custom', prompt }`. La forme `{ type: 'custom' }` et le champ `snapshot` nécessitent TypeScript Agent SDK v0.3.257 ou ultérieur |

543| `taskBudget` | `{ total: number }` | `undefined` | *Alpha.* Budget de tâche côté API en tokens. Quand défini, le modèle est informé de son budget de tokens restant pour qu'il puisse adapter l'utilisation des outils et terminer avant la limite |543| `taskBudget` | `{ total: number }` | `undefined` | *Alpha.* Budget de tâche côté API en tokens. Quand défini, le modèle est informé de son budget de tokens restant pour qu'il puisse adapter l'utilisation des outils et terminer avant la limite |

544| `thinking` | [`ThinkingConfig`](#thinkingconfig) | `{ type: 'adaptive' }` pour les modèles pris en charge | Contrôle le comportement de réflexion/raisonnement de Claude. Voir [`ThinkingConfig`](#thinkingconfig) pour les options |544| `thinking` | [`ThinkingConfig`](#thinkingconfig) | `{ type: 'adaptive' }` pour les modèles pris en charge | Contrôle le comportement de réflexion/raisonnement de Claude. Voir [`ThinkingConfig`](#thinkingconfig) pour les options |

545| `title` | `string` | `undefined` | Titre d'affichage pour la session. Lors de la reprise via `resume` ou `continue`, le titre persistant de la session reprise a la priorité ; utilisez [`renameSession()`](#renamesession) pour renommer une session existante |545| `title` | `string` | `undefined` | Titre d'affichage pour la session. Lors de la reprise via `resume` ou `continue`, le titre persistant de la session reprise a la priorité ; utilisez [`renameSession()`](#renamesession) pour renommer une session existante |


632</h4>632</h4>

633 633 

634| Méthode | Description |634| Méthode | Description |

635| :------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |635| :------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

636| `interrupt()` | Interrompt la requête. Disponible uniquement en mode d'entrée en diffusion. Quand la CLI annonce la capacité `interrupt_receipt_v1` dans [`SDKSystemMessage.capabilities`](#sdksystemmessage), se résout avec une [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) listant les messages qui étaient en attente quand l'interruption est arrivée. Se résout à `undefined` sur les CLI antérieures à v2.1.205 |636| `interrupt()` | Interrompt la requête. Disponible uniquement en mode d'entrée en diffusion. Quand la CLI annonce la capacité `interrupt_receipt_v1` dans [`SDKSystemMessage.capabilities`](#sdksystemmessage), se résout avec une [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) listant les messages qui étaient en attente quand l'interruption est arrivée. Se résout à `undefined` sur les CLI antérieures à v2.1.205 |

637| `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](/docs/fr/agent-sdk/file-checkpointing) |637| `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](/docs/fr/agent-sdk/file-checkpointing) |

638| `setPermissionMode()` | Change le mode de permission (disponible uniquement en mode d'entrée en diffusion) |638| `setPermissionMode()` | Change le mode de permission (disponible uniquement en mode d'entrée en diffusion) |


647| `supportedAgents()` | Retourne les sous-agents disponibles en tant que [`AgentInfo`](#agentinfo)`[]` |647| `supportedAgents()` | Retourne les sous-agents disponibles en tant que [`AgentInfo`](#agentinfo)`[]` |

648| `mcpServerStatus()` | Retourne l'état des serveurs MCP connectés |648| `mcpServerStatus()` | Retourne l'état des serveurs MCP connectés |

649| `getContextUsage(opts?)` | Retourne une [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse) ventilant l'utilisation de la fenêtre de contexte de la session par catégorie, compétence et outil. Avec la valeur par défaut `detail`, c'est les mêmes données que `/context` affiche dans une session interactive. L'[option `detail`](#sdkcontrolgetcontextusageresponse) nécessite Agent SDK v0.3.257 ou ultérieur |649| `getContextUsage(opts?)` | Retourne une [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse) ventilant l'utilisation de la fenêtre de contexte de la session par catégorie, compétence et outil. Avec la valeur par défaut `detail`, c'est les mêmes données que `/context` affiche dans une session interactive. L'[option `detail`](#sdkcontrolgetcontextusageresponse) nécessite Agent SDK v0.3.257 ou ultérieur |

650| `readFile(path, options?)` | Lit un fichier du système de fichiers de la session. Claude Code résout le chemin par rapport à `cwd` et applique les mêmes règles de permission de lecture que l'outil Read. Passez `{ maxBytes }` pour modifier le plafond de lecture (par défaut 1 Mo, plafond 10 Mo) et `{ encoding: 'base64' }` pour les fichiers binaires tels que les images. Se résout avec une [`SDKControlReadFileResponse`](#sdkcontrolreadfileresponse), ou `null` sur refus de permission, un fichier manquant, ou une erreur de transport. Nécessite TypeScript SDK v0.2.121 ou ultérieur |650| `readFile(path, options?)` | Lit un fichier du système de fichiers de la session. Claude Code résout le chemin par rapport à `cwd` ; [Ce que `readFile()` peut lire](#what-readfile-can-read) liste les fichiers qu'il sert. Passez `{ maxBytes }` pour modifier le plafond de lecture (par défaut 1 Mo, plafond 10 Mo) et `{ encoding: 'base64' }` pour les fichiers binaires tels que les images. Se résout avec une [`SDKControlReadFileResponse`](#sdkcontrolreadfileresponse), ou `null` sur refus de permission, un fichier manquant, ou une erreur de transport. Nécessite TypeScript SDK v0.2.121 ou ultérieur |

651| `reloadSkills()` | Recharge les compétences à partir du disque, donc les compétences que vous ajoutez ou modifiez en milieu de session deviennent disponibles pour la session en cours d'exécution. Se résout avec une [`SDKControlReloadSkillsResponse`](#sdkcontrolreloadskillsresponse) listant les compétences disponibles après le rechargement. Nécessite Agent SDK v0.3.163 ou ultérieur |651| `reloadSkills()` | Recharge les compétences à partir du disque, donc les compétences que vous ajoutez ou modifiez en milieu de session deviennent disponibles pour la session en cours d'exécution. Se résout avec une [`SDKControlReloadSkillsResponse`](#sdkcontrolreloadskillsresponse) listant les compétences disponibles après le rechargement. Nécessite Agent SDK v0.3.163 ou ultérieur |

652| `accountInfo()` | Retourne les informations de compte |652| `accountInfo()` | Retourne les informations de compte |

653| `reconnectMcpServer(serverName)` | Reconnecter un serveur MCP par nom. Si le nom correspond également à une entrée dans un fichier de paramètres tel que `.mcp.json` ou `~/.claude.json`, Claude Code reconnecte le serveur que vous avez configuré via [`mcpServers`](#options) ou `setMcpServers()`, pas l'entrée du fichier de paramètres. Cet ordre de résolution nécessite Claude Code v2.1.257 ou ultérieur |653| `reconnectMcpServer(serverName)` | Reconnecter un serveur MCP par nom. Si le nom correspond également à une entrée dans un fichier de paramètres tel que `.mcp.json` ou `~/.claude.json`, Claude Code reconnecte le serveur que vous avez configuré via [`mcpServers`](#options) ou `setMcpServers()`, pas l'entrée du fichier de paramètres. Cet ordre de résolution nécessite Claude Code v2.1.257 ou ultérieur |


665 665 

666Seules certaines clés prennent effet en milieu de session :666Seules certaines clés prennent effet en milieu de session :

667 667 

668* **Appliquées au tour suivant** : `effortLevel`, `ultracode`, `permissions`, `hooks`, `skillOverrides`, `fastMode`, `agent`. Basculer `agent` applique également le remplacement de modèle, les hooks et l'invite système de cet agent au tour suivant.668* **Appliquées au tour suivant** : `effortLevel`, `ultracode`, `permissions`, `hooks`, `skillOverrides`, `fastMode`, `agent`. Basculer `agent` applique également le remplacement de modèle et les hooks de cet agent au tour suivant. Son invite système s'applique au tour suivant, ou, dans une session qui [réutilise une invite système enregistrée](/docs/fr/agent-sdk/modifying-system-prompts#change-the-prompt-of-an-existing-session), une fois que la session est compactée.

669* **Appliquées pendant le tour actuel** : `model`. Si vous basculez `model` tandis que Claude travaille sur un tour, la réponse que Claude génère déjà se termine sur l'ancien modèle, et le reste du tour, commençant par le prochain appel que Claude Code fait au modèle, utilise le nouveau. Les sous-agents conservent leur propre modèle. Avant v2.1.212, un basculement en milieu de tour attendait le tour suivant.669* **Appliquées pendant le tour actuel** : `model`. Si vous basculez `model` tandis que Claude travaille sur un tour, la réponse que Claude génère déjà se termine sur l'ancien modèle, et le reste du tour, commençant par le prochain appel que Claude Code fait au modèle, utilise le nouveau. Les sous-agents conservent leur propre modèle. Avant v2.1.212, un basculement en milieu de tour attendait le tour suivant.

670* **Aucun effet en milieu de session** : les options d'invite système. Celles-ci sont résolues une fois au démarrage, donc la session en cours d'exécution conserve la valeur d'origine même si l'appel réussit. Pour les modifier, démarrez une nouvelle session.670* **Aucun effet en milieu de session** : les options d'invite système. Celles-ci sont résolues une fois au démarrage, donc la session en cours d'exécution conserve la valeur d'origine même si l'appel réussit. Pour les modifier, démarrez une nouvelle session.

671 671 


750 750 

751La réponse signale toujours `fast_mode_state`, et quand quelque chose bloque le [mode rapide](/docs/fr/fast-mode), `fast_mode_disabled_reason` porte le code de raison à côté, pour que vous puissiez expliquer l'état bloqué au lieu de le redériver. Les deux comportements nécessitent Claude Code v2.1.219 ou ultérieur. Avant v2.1.219, la réponse omettait `fast_mode_state` quand le mode rapide n'était pas disponible et ne portait jamais de raison. Pour les codes de raison et leurs significations, voir [`fast_mode_disabled_reason`](#sdkresultmessage) sur le message de résultat.751La réponse signale toujours `fast_mode_state`, et quand quelque chose bloque le [mode rapide](/docs/fr/fast-mode), `fast_mode_disabled_reason` porte le code de raison à côté, pour que vous puissiez expliquer l'état bloqué au lieu de le redériver. Les deux comportements nécessitent Claude Code v2.1.219 ou ultérieur. Avant v2.1.219, la réponse omettait `fast_mode_state` quand le mode rapide n'était pas disponible et ne portait jamais de raison. Pour les codes de raison et leurs significations, voir [`fast_mode_disabled_reason`](#sdkresultmessage) sur le message de résultat.

752 752 

753Quand un client envoie `initialize` à une session qui est déjà en cours d'exécution, le wrapper de réponse de contrôle porte également un tableau `pending_permission_requests` optionnel. Le champ se trouve sur le wrapper de réponse lui-même, pas dans la charge utile `SDKControlInitializeResponse` ci-dessus. Chaque entrée est un message `control_request` complet avec la même forme `{ type: "control_request", request_id, request }` que la session diffuse pour les demandes de permission lors de l'exécution.753Le wrapper de réponse de contrôle pour une `initialize` réussie porte également un tableau `pending_permission_requests`. Le champ se trouve sur le wrapper de réponse lui-même, pas dans la charge utile `SDKControlInitializeResponse` ci-dessus. Chaque entrée est un message `control_request` complet avec la même forme `{ type: "control_request", request_id, request }` que la session diffuse pour les demandes de permission lors de l'exécution.

754 754 

755Ce sont des demandes qui ont été émises avant que le client se connecte et attendent toujours une réponse. Le SDK lit le tableau pour vous et distribue chaque entrée à votre rappel [`canUseTool`](#canusetool), la même redistribution que [`reinitialize()`](#query-object) déclenche après une interruption de transport. Gérez les ID de requête répétés de manière idempotente, car une entrée peut répéter une requête que le rappel a déjà reçue avant que la connexion ne soit interrompue.755Le tableau liste les demandes de permission que ce processus Claude Code a émises et n'a pas encore résolues. Le SDK lit le tableau pour vous et distribue chaque entrée à votre rappel [`canUseTool`](#canusetool), la même redistribution que [`reinitialize()`](#query-object) déclenche après une interruption de transport. Gérez les ID de requête répétés de manière idempotente, car une entrée peut répéter une requête que le rappel a déjà reçue avant que la connexion ne soit interrompue.

756 

757Le tableau est toujours présent sur une réponse `initialize` réussie et est vide quand ce processus n'a aucune demande de permission non résolue. Nécessite Claude Code v2.1.268 ou ultérieur. Les versions antérieures pourraient omettre le champ, donc si vous analysez le protocole de fil vous-même, traitez un champ manquant comme une CLI plus ancienne plutôt que comme une preuve que rien n'est en attente.

756 758 

757<h3 id="sdkcontrolinterruptresponse">759<h3 id="sdkcontrolinterruptresponse">

758 `SDKControlInterruptResponse`760 `SDKControlInterruptResponse`


915 917 

916`contents` contient le texte du fichier, ou les données base64 quand vous avez demandé `encoding: 'base64'` ; le champ `encoding` de la réponse est défini à `'base64'` dans ce cas. `absPath` est le chemin absolu résolu. `truncated` est défini quand le fichier était plus long que le plafond `maxBytes` et le contenu a été coupé à cette limite.918`contents` contient le texte du fichier, ou les données base64 quand vous avez demandé `encoding: 'base64'` ; le champ `encoding` de la réponse est défini à `'base64'` dans ce cas. `absPath` est le chemin absolu résolu. `truncated` est défini quand le fichier était plus long que le plafond `maxBytes` et le contenu a été coupé à cette limite.

917 919 

920<h4 id="what-readfile-can-read">

921 Ce que `readFile()` peut lire

922</h4>

923 

924`readFile()` sert un ensemble plus étroit de fichiers que l'outil Read :

925 

926* Un fichier régulier à l'intérieur de l'un des répertoires de travail de la session, comme `cwd` et `additionalDirectories`

927* Quelques fichiers propres à Claude Code pour la session, comme les résultats des outils

928 

929Les règles de refus et de demande de Read bloquent toujours un chemin correspondant, et une règle d'autorisation Read large n'ouvre pas le reste du système de fichiers à `readFile()`. Pour tout le reste, l'appel se résout avec `null`.

930 

918<h3 id="sdkcontrolreloadskillsresponse">931<h3 id="sdkcontrolreloadskillsresponse">

919 `SDKControlReloadSkillsResponse`932 `SDKControlReloadSkillsResponse`

920</h3>933</h3>


968| `background` | Non | Exécuter cet agent en tant que tâche de fond non-bloquante quand invoqué |981| `background` | Non | Exécuter cet agent en tant que tâche de fond non-bloquante quand invoqué |

969| `memory` | Non | Source de mémoire pour cet agent : `'user'`, `'project'`, ou `'local'` |982| `memory` | Non | Source de mémoire pour cet agent : `'user'`, `'project'`, ou `'local'` |

970| `effort` | Non | Niveau d'effort de raisonnement pour cet agent. Accepte un niveau nommé ou un entier |983| `effort` | Non | Niveau d'effort de raisonnement pour cet agent. Accepte un niveau nommé ou un entier |

971| `permissionMode` | Non | Mode de permission pour l'exécution des outils dans cet agent. Voir [`PermissionMode`](#permissionmode) |984| `permissionMode` | Non | Mode de permission pour l'exécution des outils dans cet agent. Les [règles d'héritage de sous-agent](/docs/fr/agent-sdk/permissions#available-modes) décident quand il s'applique. Voir [`PermissionMode`](#permissionmode) |

972| `criticalSystemReminder_EXPERIMENTAL` | Non | Expérimental : Rappel critique ajouté à l'invite système |985| `criticalSystemReminder_EXPERIMENTAL` | Non | Expérimental : Rappel critique ajouté à l'invite système |

973 986 

974<h3 id="agentmcpserverspec">987<h3 id="agentmcpserverspec">


1324 1337 

1325Le 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`.1338Le 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`.

1326 1339 

1327`SDKAssistantMessageError` est l'un de : `'authentication_failed'`, `'oauth_org_not_allowed'`, `'account_on_hold'`, `'billing_error'`, `'rate_limit'`, `'overloaded'`, `'invalid_request'`, `'model_not_found'`, `'server_error'`, `'max_output_tokens'` ou `'unknown'`. `'model_not_found'` signifie que le modèle sélectionné n'existe pas ou n'est pas disponible pour votre compte ou déploiement. `'overloaded'` signifie que l'API a retourné un 529 parce que le serveur est à pleine capacité, par opposition à `'rate_limit'`, qui est un 429 contre votre quota. `'account_on_hold'` signifie que [votre compte est suspendu](/docs/fr/errors#your-account-is-on-hold).1340`SDKAssistantMessageError` est l'un de : `'authentication_failed'`, `'oauth_org_not_allowed'`, `'account_on_hold'`, `'billing_error'`, `'rate_limit'`, `'overloaded'`, `'invalid_request'`, `'model_not_found'`, `'server_error'`, `'max_output_tokens'`, `'cloud_credential_error'` ou `'unknown'`. Quatre de ces valeurs signifient plus que leurs noms le disent :

1341 

1342* `'model_not_found'` : le modèle sélectionné n'existe pas ou n'est pas disponible pour votre compte ou déploiement

1343* `'overloaded'` : l'API a retourné un 529 parce que le serveur est à pleine capacité, par opposition à `'rate_limit'`, qui est un 429 contre votre quota

1344* `'account_on_hold'` : [votre compte est suspendu](/docs/fr/errors#your-account-is-on-hold)

1345* `'cloud_credential_error'` : Claude Code n'a pas pu obtenir des identifiants AWS ou Google Cloud utilisables sur la machine sur laquelle il s'exécute, donc aucune demande n'a atteint le fournisseur cloud. La cause habituelle est une connexion cloud qui a expiré ou n'a jamais été complétée sur cette machine, bien qu'un service d'identifiants brièvement inaccessible rapporte la même valeur. Voir [Impossible de charger les identifiants AWS ou Google Cloud](/docs/fr/errors#could-not-load-aws-or-google-cloud-credentials). Nécessite TypeScript Agent SDK v0.3.267 ou ultérieur, qui regroupe Claude Code v2.1.267

1328 1346 

1329`aborted` est `true` quand une interruption ou un abandon a tronqué le message assistant avant la fin du flux : le message n'a pas de `stop_reason` et le contenu peut se terminer au milieu d'un mot. Le champ est absent sur les messages normalement complétés. Il nécessite Agent SDK v0.3.214 ou ultérieur.1347`aborted` est `true` quand une interruption ou un abandon a tronqué le message assistant avant la fin du flux : le message n'a pas de `stop_reason` et le contenu peut se terminer au milieu d'un mot. Le champ est absent sur les messages normalement complétés. Il nécessite Agent SDK v0.3.214 ou ultérieur.

1330 1348 


1461* `ttft_stream_ms` : temps en millisecondes jusqu'au premier événement de flux `message_start`, quand le flux de réponse s'ouvre. Inférieur à `ttft_ms` ; l'écart entre les deux est le temps passé à diffuser le premier message. Présent uniquement sur le bras de succès.1479* `ttft_stream_ms` : temps en millisecondes jusqu'au premier événement de flux `message_start`, quand le flux de réponse s'ouvre. Inférieur à `ttft_ms` ; l'écart entre les deux est le temps passé à diffuser le premier message. Présent uniquement sur le bras de succès.

1462* `user_message_uuid` : l'`uuid` du message que vous avez envoyé qui a démarré ce tour. Voir [`user_message_uuid`](#user_message_uuid) pour savoir quels résultats le portent.1480* `user_message_uuid` : l'`uuid` du message que vous avez envoyé qui a démarré ce tour. Voir [`user_message_uuid`](#user_message_uuid) pour savoir quels résultats le portent.

1463* `user_message_uuids` : les `uuid`s de chaque message que vous avez envoyé auquel Claude Code a répondu dans ce tour. Voir [`user_message_uuids`](#user_message_uuids).1481* `user_message_uuids` : les `uuid`s de chaque message que vous avez envoyé auquel Claude Code a répondu dans ce tour. Voir [`user_message_uuids`](#user_message_uuids).

1464* `request_sent_wall_ms` : millisecondes d'époque auxquelles Claude Code a envoyé la demande API, pour les jointures par rapport aux horodatages côté serveur. Présent sur le bras de succès uniquement, avec `user_message_uuid`, quand `is_error` est false.1482* `request_sent_wall_ms` : millisecondes d'époque auxquelles Claude Code a envoyé la demande API, pour les jointures par rapport aux horodatages côté serveur. Présent uniquement avec [`user_message_uuid`](#user_message_uuid), sur un résultat de succès avec `is_error` false dont le tour a envoyé une demande API.

1465* `first_content_frame_ms` : temps en millisecondes jusqu'au premier événement de flux `content_block_start` ou `content_block_delta`, en comptant les blocs de réflexion comme du contenu. Présent sur le bras de succès uniquement, quand `is_error` est false. Nécessite Agent SDK v0.3.260 ou ultérieur.1483* `first_content_frame_ms` : temps en millisecondes jusqu'au premier événement de flux `content_block_start` ou `content_block_delta`, en comptant les blocs de réflexion comme du contenu. Présent sur le bras de succès uniquement, quand `is_error` est false. Nécessite Agent SDK v0.3.260 ou ultérieur.

1466* `first_stream_post_ms`, `first_stream_post_ack_ms`, `first_stream_post_wall_ms` : chronométrages pour télécharger le premier événement de flux du tour. Claude Code les enregistre uniquement dans les sessions qu'il diffuse vers claude.ai, comme les [sessions cloud](/docs/fr/claude-code-on-the-web), et les résultats que `query()` produit ne les portent pas. Nécessite Agent SDK v0.3.260 ou ultérieur.1484* `first_stream_post_ms`, `first_stream_post_ack_ms`, `first_stream_post_wall_ms` : chronométrages pour télécharger le premier événement de flux du tour. Claude Code les enregistre uniquement dans les sessions qu'il diffuse vers claude.ai, comme les [sessions cloud](/docs/fr/claude-code-on-the-web), et les résultats que `query()` produit ne les portent pas. Nécessite Agent SDK v0.3.260 ou ultérieur.

1467* `usage` : boucle d'agent principal uniquement. Exclut les appels de sous-agent et de modèle auxiliaire, et est par tour dans les sessions d'entrée en diffusion. Préférez `modelUsage` pour la comptabilité des jetons/coûts.1485* `usage` : boucle d'agent principal uniquement. Exclut les appels de sous-agent et de modèle auxiliaire, et est par tour dans les sessions d'entrée en diffusion. Préférez `modelUsage` pour la comptabilité des jetons/coûts.


1499 `user_message_uuid`1517 `user_message_uuid`

1500</h4>1518</h4>

1501 1519 

1502L'`uuid` du [`SDKUserMessage`](#sdkusermessage) qui a démarré le tour, répété afin que vous puissiez faire correspondre la réponse de Claude Code au message que vous avez envoyé. Claude Code le répète uniquement si vous définissez `uuid` sur ce message. Le champ est optionnel sur `SDKUserMessage`, et une invite de chaîne passée à `query()` n'en porte aucune.1520L'`uuid` du [`SDKUserMessage`](#sdkusermessage) que le tour répond, répété afin que vous puissiez faire correspondre la réponse de Claude Code au message que vous avez envoyé. Claude Code le répète uniquement si vous définissez `uuid` sur ce message. Le champ est optionnel sur `SDKUserMessage`, et une invite de chaîne passée à `query()` n'en porte aucune.

1521 

1522Quel message de votre part un tour répond dépend de la façon dont le tour a commencé :

1503 1523 

1504Quand vous envoyez plusieurs messages rapprochés, Claude Code peut les fusionner en un tour. Le champ porte alors uniquement l'`uuid` du dernier message. Pour faire correspondre la réponse à l'un des messages fusionnés, utilisez [`user_message_uuids`](#user_message_uuids).1524* **Un message régulier que vous avez envoyé**, c'est-à-dire sans `isSynthetic: true` : le tour répond à ce message pour toute sa durée. Quand vous envoyez plusieurs messages rapprochés, Claude Code peut les fusionner en un tour, et le champ porte alors uniquement l'`uuid` du dernier message. Pour faire correspondre la réponse à l'un des messages fusionnés, utilisez [`user_message_uuids`](#user_message_uuids).

1525*

1505 1526 

1506Quand vous définissez `uuid`, Claude Code le répète sur trois types de cadre :1527**Un message que vous avez envoyé avec `isSynthetic: true`** : le tour répond d'abord à ce message. Si Claude Code récupère un message régulier de votre part entre les appels d'outil, le tour répond au message récupéré à partir de là. Répéter l'`uuid` d'un message synthétique nécessite Agent SDK v0.3.265 ou ultérieur ; les versions antérieures ne répètent rien sur les tours synthétiques.

1528 

1529*

1530 

1531**Une invite que Claude Code a générée lui-même**, comme le tour qui continue le travail interrompu après le redémarrage d'une session : le tour ne répond d'abord à aucun message de votre part et ses cadres ne portent aucun écho. Si Claude Code récupère un message régulier de votre part entre les appels d'outil, le tour répond à ce message à partir de là. L'écho de récupération nécessite Agent SDK v0.3.265 ou ultérieur ; les versions antérieures ne répètent rien sur ces tours.

1532 

1533Claude Code répète l'`uuid` du message répondu sur trois types de cadre :

1534 

1535* **Le résultat** : chaque résultat d'un tour qui a répondu à un message que vous avez envoyé. Chaque tel résultat le porte sur Agent SDK v0.3.265 ou ultérieur. Avant v0.3.265, le résultat de succès d'un tour qu'un message régulier a commencé le manquait quand le tour n'a envoyé aucune demande API ou s'est terminé avec un appel d'outil différé. Avant v0.3.246, les résultats d'erreur le manquaient aussi, et avant v0.3.216 chaque résultat le faisait.

1536*

1537 

1538**La première réponse du tour** : le premier [message assistant](#sdkassistantmessage), ou avec `includePartialMessages` le premier [événement de flux](#sdkpartialassistantmessage) dont `event.type` n'est pas `ping`, afin que vous puissiez lier la réponse avant l'arrivée du résultat. Quand un tour ne diffuse rien, Claude Code le définit sur le premier message assistant à la place. Le premier écho de réponse nécessite Agent SDK v0.3.246 ou ultérieur. Quand le message que le tour répond change en cours de tour, le premier écho de réponse après le changement porte le champ aussi, sur Agent SDK v0.3.265 ou ultérieur ; les versions antérieures le définissent sur un cadre de réponse par tour.

1507 1539 

1508* **Le résultat** : sur le bras de succès avec `is_error` false, avec `request_sent_wall_ms`, qui nécessite Agent SDK v0.3.216 ou ultérieur. Claude Code le répète aussi sur un résultat d'erreur qui répond à un message que vous avez envoyé, ce qui nécessite Agent SDK v0.3.246 ou ultérieur.

1509* **La première réponse du tour** : le premier [message assistant](#sdkassistantmessage), ou avec `includePartialMessages` le premier [événement de flux](#sdkpartialassistantmessage) dont `event.type` n'est pas `ping`, afin que vous puissiez lier la réponse avant l'arrivée du résultat. Quand un tour ne diffuse rien, Claude Code le définit sur le premier message assistant à la place. Un cadre de réponse par tour le porte. Nécessite Agent SDK v0.3.246 ou ultérieur.

1510* **Chaque cadre [`thinking_tokens`](#sdkthinkingtokensmessage) du tour** : afin que vous puissiez attribuer la progression de la réflexion au message que vous avez envoyé sans attendre la première réponse du tour. Nécessite Agent SDK v0.3.260 ou ultérieur.1540* **Chaque cadre [`thinking_tokens`](#sdkthinkingtokensmessage) du tour** : afin que vous puissiez attribuer la progression de la réflexion au message que vous avez envoyé sans attendre la première réponse du tour. Nécessite Agent SDK v0.3.260 ou ultérieur.

1511 1541 

1512Claude Code omet le champ dans ces cas :1542Claude Code omet le champ dans ces cas :

1513 1543 

1514* Messages assistant ultérieurs et événements de flux du même tour1544* Cadres de réponse autres que ces premiers échos

1515* Cadres de sous-agent1545* Cadres de sous-agent

1516* Tours synthétiques, comme les tours programmés1546* Tours qui ne répondent à aucun message avec un `uuid` : le tour a répondu à un message que vous avez envoyé sans un, ou Claude Code a commencé le tour lui-même et n'a récupéré aucun message régulier qui en a un

1517* Résultats qui ne répondent à aucun message que vous avez envoyé, comme le résultat mis à zéro après un crash de processus worker1547* Résultats qui ne répondent à aucun message que vous avez envoyé, comme le résultat mis à zéro après un crash de processus worker

1518 1548 

1519<h4 id="user_message_uuids">1549<h4 id="user_message_uuids">


1522 1552 

1523Les `uuid`s de chaque message que vous avez envoyé auquel Claude Code a répondu dans ce tour. Quand vous envoyez plusieurs messages rapprochés, Claude Code peut les fusionner en un tour, et `user_message_uuid` nomme alors uniquement le dernier d'entre eux. Pour faire correspondre la réponse à l'un des messages fusionnés, cherchez l'`uuid` de ce message n'importe où dans cette liste. Nécessite Agent SDK v0.3.259 ou ultérieur.1553Les `uuid`s de chaque message que vous avez envoyé auquel Claude Code a répondu dans ce tour. Quand vous envoyez plusieurs messages rapprochés, Claude Code peut les fusionner en un tour, et `user_message_uuid` nomme alors uniquement le dernier d'entre eux. Pour faire correspondre la réponse à l'un des messages fusionnés, cherchez l'`uuid` de ce message n'importe où dans cette liste. Nécessite Agent SDK v0.3.259 ou ultérieur.

1524 1554 

1525Claude Code définit la liste avec `user_message_uuid` sur la première réponse du tour et sur le résultat. Pour l'ensemble complet des cadres qui portent `user_message_uuid`, et la version que chacun nécessite, voir [`user_message_uuid`](#user_message_uuid). La liste contient toujours `user_message_uuid` et contient au maximum 64 entrées. Un message que vous envoyez pendant que le tour s'exécute et que Claude Code récupère entre les appels d'outil n'apparaît que dans la liste du résultat.1555Claude Code définit la liste avec `user_message_uuid` sur chaque cadre de réponse qui porte ce champ et sur le résultat. Pour l'ensemble complet des cadres qui portent `user_message_uuid`, et la version que chacun nécessite, voir [`user_message_uuid`](#user_message_uuid). La liste contient toujours `user_message_uuid` et contient au maximum 64 entrées.

1556 

1557Quand Claude Code récupère un message régulier que vous avez envoyé pendant qu'un tour s'exécutait, il ajoute l'`uuid` de ce message à la liste du résultat.

1526 1558 

1527Quand une première réponse ou un résultat porte `user_message_uuid` sans la liste, il provient d'une version antérieure de Claude Code, donc revenez au champ unique.1559Quand une première réponse ou un résultat porte `user_message_uuid` sans la liste, il provient d'une version antérieure de Claude Code, donc revenez au champ unique.

1528 1560 


1602 uuid: UUID;1634 uuid: UUID;

1603 session_id: string;1635 session_id: string;

1604 ttft_ms?: number; // Temps jusqu'au premier jeton en ms, présent uniquement sur les événements message_start1636 ttft_ms?: number; // Temps jusqu'au premier jeton en ms, présent uniquement sur les événements message_start

1605 user_message_uuid?: string; // Présent sur au maximum un événement de flux par tour1637 user_message_uuid?: string;

1606 user_message_uuids?: string[];1638 user_message_uuids?: string[];

1607};1639};

1608```1640```

1609 1641 

1610Claude Code définit `user_message_uuid` et `user_message_uuids` sur un événement de flux par tour, selon les conditions dans [`user_message_uuid`](#user_message_uuid).1642Claude Code définit `user_message_uuid` et `user_message_uuids` sur le premier événement de flux non-ping du tour, et à nouveau quand le message que le tour répond change, selon les conditions dans [`user_message_uuid`](#user_message_uuid).

1611 1643 

1612<h3 id="sdkcompactboundarymessage">1644<h3 id="sdkcompactboundarymessage">

1613 `SDKCompactBoundaryMessage`1645 `SDKCompactBoundaryMessage`


2789**Nom de l'outil :** `Agent`. Le nom précédent `Task` est toujours accepté comme alias, et le tableau `tools` dans le message d'initialisation [`SDKSystemMessage`](#sdksystemmessage) répertorie actuellement cet outil comme `Task` pour la compatibilité rétroactive.2821**Nom de l'outil :** `Agent`. Le nom précédent `Task` est toujours accepté comme alias, et le tableau `tools` dans le message d'initialisation [`SDKSystemMessage`](#sdksystemmessage) répertorie actuellement cet outil comme `Task` pour la compatibilité rétroactive.

2790 2822 

2791<Note>2823<Note>

2792 Le champ `mode` est déprécié et ignoré sur Claude Code v2.1.212 ou version ultérieure : les sous-agents [héritent du mode de permission de la session parent](/docs/fr/agent-sdk/permissions#available-modes), et la [`permissionMode`](#agentdefinition) d'une définition de sous-agent peut le remplacer, sauf lorsque le parent utilise `bypassPermissions`, `acceptEdits` ou `auto`. Sur v2.1.223 ou version ultérieure, Claude Code ignore la `permissionMode: "bypassPermissions"` d'une définition lorsque le mode de contournement est désactivé par [`permissions.disableBypassPermissionsMode`](/docs/fr/permissions#managed-settings).2824 Le champ `mode` est déprécié et ignoré sur Claude Code v2.1.212 ou version ultérieure. Un sous-agent s'exécute soit en mode de permission de la session parent, soit en mode de sa définition [`permissionMode`](#agentdefinition), et les [règles d'héritage des sous-agents](/docs/fr/agent-sdk/permissions#available-modes) décident lequel.

2793</Note>2825</Note>

2794 2826 

2795```typescript theme={null}2827```typescript theme={null}


2801 run_in_background?: boolean;2833 run_in_background?: boolean;

2802 name?: string;2834 name?: string;

2803 team_name?: string; // Déprécié ; ignoré2835 team_name?: string; // Déprécié ; ignoré

2804 mode?: "acceptEdits" | "auto" | "bypassPermissions" | "default" | "dontAsk" | "plan"; // Déprécié ; ignoré. Les sous-agents héritent du mode de permission de la session parent ; le frontmatter de la définition d'agent peut le remplacer2836 mode?: "acceptEdits" | "auto" | "bypassPermissions" | "default" | "dontAsk" | "plan"; // Déprécié ; ignoré. Les règles d'héritage des sous-agents décident du mode de permission d'un sous-agent

2805 isolation?: "worktree" | "remote";2837 isolation?: "worktree" | "remote";

2806};2838};

2807```2839```


2846};2878};

2847```2879```

2848 2880 

2849Exécute les commandes Bash avec délai d'expiration optionnel et exécution en arrière-plan. Le répertoire de travail persiste entre les commandes ; l'état du shell tel que les variables d'environnement exportées ne persiste pas.2881Exécute les commandes Bash avec délai d'expiration optionnel et exécution en arrière-plan. Le répertoire de travail persiste entre les commandes, y compris les commandes exécutées dans les tours ultérieurs d'une session multi-tour ; l'état du shell tel que les variables d'environnement exportées ne persiste pas. Pour les limites sur les changements de répertoire qui persistent, voir [Ce qui persiste entre les commandes](/docs/fr/tools-reference#what-persists-between-commands).

2850 2882 

2851<h3 id="monitor">2883<h3 id="monitor">

2852 Monitor2884 Monitor


3096Crée et gère une liste de tâches structurée pour suivre la progression.3128Crée et gère une liste de tâches structurée pour suivre la progression.

3097 3129 

3098<Note>3130<Note>

3099 Sur TypeScript Agent SDK 0.3.233 et versions ultérieures, la restriction suivante s'applique.

3100 

3101 The following tools are available by default only on Claude 3.x models, Opus 4 through 4.7, Sonnet 4 through 4.6, and Haiku 4.5. On every other model, including model IDs Claude Code doesn't recognize, they aren't available unless you opt in:3131 The following tools are available by default only on Claude 3.x models, Opus 4 through 4.7, Sonnet 4 through 4.6, and Haiku 4.5. On every other model, including model IDs Claude Code doesn't recognize, they aren't available unless you opt in:

3102 3132 

3103 * `TodoWrite`3133 * `TodoWrite`


3454};3484};

3455```3485```

3456 3486 

3457Publie un fichier `.html` ou `.md` local en tant que page d'artefact hébergée, ou répertorie les artefacts publiés de l'utilisateur. Omettez `action` ou passez `"publish"` pour publier `file_path`, qui est requis pour l'action de publication ainsi que `favicon`, un ou deux emoji pour l'onglet du navigateur. `title` nomme la page publiée dans l'onglet du navigateur et la galerie lorsque le fichier HTML n'a pas de balise `<title>`. `url` cible un artefact existant à mettre à jour sur place au lieu de créer un nouveau.3487Publie un fichier `.html` ou `.md` local en tant que page d'artefact hébergée, ou répertorie les artefacts publiés de l'utilisateur. Omettez `action` ou passez `"publish"` pour publier `file_path`, qui est requis pour l'action de publication ainsi que `favicon`, un ou deux emoji qui marquent l'artefact dans la galerie de l'utilisateur. `title` nomme la page publiée dans l'onglet du navigateur et la galerie lorsque le fichier HTML n'a pas de balise `<title>`. `url` cible un artefact existant à mettre à jour sur place au lieu de créer un nouveau.

3458 3488 

3459`force` est un dernier recours qui écrase une version plus récente qu'une autre session a publiée. En cas de conflit, la publication échouée retourne le contenu plus récent ; Claude fusionne ses modifications sur ce contenu, ou relit l'artefact, et publie à nouveau. Passez `force` uniquement lorsque l'utilisateur demande explicitement de rejeter cette version.3489`force` est un dernier recours qui écrase une version plus récente qu'une autre session a publiée. En cas de conflit, la publication échouée retourne le contenu plus récent ; Claude fusionne ses modifications sur ce contenu, ou relit l'artefact, et publie à nouveau. Passez `force` uniquement lorsque l'utilisateur demande explicitement de rejeter cette version.

3460 3490 


4047 4077 

4048Retourne le contenu récupéré avec le statut HTTP et les métadonnées.4078Retourne le contenu récupéré avec le statut HTTP et les métadonnées.

4049 4079 

4050`artifactRead` est présent uniquement lorsque Claude a récupéré un artefact que la session peut publier, et il porte toujours le `slug` de cet artefact.4080`artifactRead` est l'enregistrement propre de Claude Code d'une lecture d'artefact, présent uniquement lorsque Claude a récupéré un artefact que la session peut publier. Claude Code le relit lorsqu'une session reprend afin qu'une publication ultérieure s'appuie sur la bonne version ; votre code n'a pas besoin d'agir dessus. `slug` nomme l'artefact, `ver` est la version que la lecture a enregistrée et est absent lorsqu'elle n'en a enregistré aucune, et `seeded: false` marque une lecture dont la source complète n'a pas atteint Claude. Le champ `seeded` nécessite Agent SDK v0.3.239 ou ultérieur.

4051 

4052`seeded` est `false` sur une lecture qui n'a pas livré la source complète de la page, et cette entrée ne porte pas de `ver`. Le champ nécessite Agent SDK v0.3.239 ou ultérieur.

4053 4081 

4054<h3 id="websearch-2">4082<h3 id="websearch-2">

4055 WebSearch4083 WebSearch


4136Retourne les listes de tâches précédentes et mises à jour.4164Retourne les listes de tâches précédentes et mises à jour.

4137 4165 

4138<Note>4166<Note>

4139 Sur TypeScript Agent SDK 0.3.233 et ultérieur, la restriction suivante s'applique.

4140 

4141 The following tools are available by default only on Claude 3.x models, Opus 4 through 4.7, Sonnet 4 through 4.6, and Haiku 4.5. On every other model, including model IDs Claude Code doesn't recognize, they aren't available unless you opt in:4167 The following tools are available by default only on Claude 3.x models, Opus 4 through 4.7, Sonnet 4 through 4.6, and Haiku 4.5. On every other model, including model IDs Claude Code doesn't recognize, they aren't available unless you opt in:

4142 4168 

4143 * `TodoWrite`4169 * `TodoWrite`

agent-teams.md +6 −6

Details

1633. [`CLAUDE_CODE_SUBAGENT_MODEL`](/docs/fr/model-config#environment-variables), lorsqu'il est défini sur autre chose que `inherit`.1633. [`CLAUDE_CODE_SUBAGENT_MODEL`](/docs/fr/model-config#environment-variables), lorsqu'il est défini sur autre chose que `inherit`.

1644. Le modèle actuel du chef.1644. Le modèle actuel du chef.

165 165 

166[`CLAUDE_CODE_SUBAGENT_MODEL_FORCE`](/docs/fr/sub-agents#run-every-subagent-on-one-model) s'applique aux coéquipiers ainsi qu'aux sous-agents.166Si vous définissez [`CLAUDE_CODE_SUBAGENT_MODEL_FORCE=1`](/docs/fr/sub-agents#run-every-subagent-on-one-model), les deux premières sources ne s'appliquent pas. Claude Code choisit le modèle de chaque coéquipier à partir de `CLAUDE_CODE_SUBAGENT_MODEL` lorsqu'il est défini sur autre chose que `inherit`, et à partir du modèle actuel du chef sinon. Nécessite Claude Code v2.1.257 ou ultérieur.

167 167 

168Avant la v2.1.251, `CLAUDE_CODE_SUBAGENT_MODEL` venait en premier dans cet ordre.168Avant la v2.1.251, `CLAUDE_CODE_SUBAGENT_MODEL` venait en premier dans cet ordre.

169 169 


252 Comment Claude démarre les équipes d'agents252 Comment Claude démarre les équipes d'agents

253</h3>253</h3>

254 254 

255Pour démarrer une équipe, demandez à Claude des coéquipiers. Claude lance un coéquipier lorsqu'il appelle l'[outil Agent](/docs/fr/tools-reference) avec un [`name`](/docs/fr/sub-agents#subagent-names) tandis que les équipes d'agents sont activées, et Claude Code ne vous demande pas de confirmer. Claude nomme également les subagents ordinaires de lui-même afin de pouvoir les contacter ultérieurement, et tandis que les équipes d'agents sont activées, un subagent nommé se lance en tant que coéquipier, de sorte que les équipes peuvent se former même si vous n'en aviez pas demandé une.255Pour démarrer une équipe, demandez à Claude des coéquipiers. Claude lance un coéquipier lorsqu'il appelle l'[outil Agent](/docs/fr/tools-reference) avec un [`name`](/docs/fr/sub-agents#subagent-names) tandis que les équipes d'agents sont activées, sauf si l'appel est un [fork](/docs/fr/sub-agents#fork-the-current-conversation) ou passe `isolation` sur l'appel lui-même. Claude Code ne vous demande pas de confirmer le lancement.

256 256 

257Si vous préférez les subagents, [désactivez les équipes d'agents](#claude-spawns-teammates-instead-of-subagents).257Claude nomme également les subagents ordinaires de lui-même afin de pouvoir les contacter ultérieurement. Ces appels suivent la même règle, de sorte que les équipes peuvent se former même si vous n'en aviez pas demandé une. Si vous préférez les subagents, [désactivez les équipes d'agents](#claude-spawns-teammates-instead-of-subagents).

258 258 

259<h3 id="architecture">259<h3 id="architecture">

260 Architecture260 Architecture


294 Utiliser les définitions de subagents pour les coéquipiers294 Utiliser les définitions de subagents pour les coéquipiers

295</h3>295</h3>

296 296 

297Lors de la génération d'un coéquipier, vous pouvez référencer un type de [subagent](/docs/fr/sub-agents) de n'importe quelle [portée de subagent](/docs/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.297Lors de la génération d'un coéquipier dans l'un ou l'autre mode d'affichage, vous pouvez référencer un type de [subagent](/docs/fr/sub-agents) du projet, de l'utilisateur ou de la [portée de subagent](/docs/fr/sub-agents#choose-the-subagent-scope) gérée. 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.

298 298 

299Pour utiliser une définition de subagent, nommez-la lorsque vous demandez à Claude de lancer le coéquipier :299Pour utiliser une définition de subagent, nommez-la lorsque vous demandez à Claude de lancer le coéquipier :

300 300 


314 Permissions314 Permissions

315</h3>315</h3>

316 316 

317Les 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.317Les coéquipiers commencent avec le mode de permission du chef, sauf le mode [`dontAsk`](/docs/fr/permission-modes#allow-only-pre-approved-tools-with-dontask-mode), qu'ils n'héritent pas. 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 le mode de permission d'un coéquipier individuel, mais vous ne pouvez pas définir les modes de permission par coéquipier au moment de la génération.

318 318 

319Les invites de permission des coéquipiers remontent à la session chef, donc approuvez-les vous-même là-bas. [L'approbation du plan](#have-teammates-plan-before-implementing) est l'exception conçue : la session chef accorde les approbations de plan des coéquipiers sans une invite séparée pour vous.319Les invites de permission des coéquipiers remontent à la session chef, donc approuvez-les vous-même là-bas. [L'approbation du plan](#have-teammates-plan-before-implementing) est l'exception conçue : la session chef accorde les approbations de plan des coéquipiers sans une invite séparée pour vous.

320 320 


549* **Pas d'équipes imbriquées** : les coéquipiers ne peuvent pas générer leurs propres coéquipiers. Seul le chef peut gérer l'équipe.549* **Pas d'équipes imbriquées** : les coéquipiers ne peuvent pas générer leurs propres coéquipiers. Seul le chef peut gérer l'équipe.

550* **Pas de sous-agents d'arrière-plan à partir de coéquipiers in-process** : les propres sous-agents d'un coéquipier in-process s'exécutent au premier plan, car le travail d'arrière-plan d'un coéquipier ne peut pas survivre au processus du chef. Claude Code retourne une erreur quand un coéquipier génère un sous-agent dont la définition définit `background: true`. Une demande `run_in_background: true` d'un coéquipier échoue également, soit avec une erreur, soit en s'exécutant silencieusement au premier plan, comme décrit dans [comment Claude Code choisit le premier plan ou l'arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background). Les sous-agents lancés à partir de la conversation principale suivent la [valeur par défaut d'arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background).550* **Pas de sous-agents d'arrière-plan à partir de coéquipiers in-process** : les propres sous-agents d'un coéquipier in-process s'exécutent au premier plan, car le travail d'arrière-plan d'un coéquipier ne peut pas survivre au processus du chef. Claude Code retourne une erreur quand un coéquipier génère un sous-agent dont la définition définit `background: true`. Une demande `run_in_background: true` d'un coéquipier échoue également, soit avec une erreur, soit en s'exécutant silencieusement au premier plan, comme décrit dans [comment Claude Code choisit le premier plan ou l'arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background). Les sous-agents lancés à partir de la conversation principale suivent la [valeur par défaut d'arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background).

551* **Le chef est fixe** : la session principale est le chef pour sa durée de vie. Vous ne pouvez pas promouvoir un coéquipier en chef ou transférer le leadership.551* **Le chef est fixe** : la session principale est le chef pour sa durée de vie. Vous ne pouvez pas promouvoir un coéquipier en chef ou transférer le leadership.

552* **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.552* **Permissions définies au moment de la génération** : les coéquipiers commencent avec le mode de permission décrit sous [Permissions](#permissions). Vous pouvez modifier le mode de permission d'un coéquipier individuel après la génération, mais vous ne pouvez pas définir les modes de permission par coéquipier au moment de la génération.

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

554 554 

555<h2 id="next-steps">555<h2 id="next-steps">

agents.md +1 −1

Details

19 19 

20Trois autres outils soutiennent ce travail sans être une façon d'exécuter des agents eux-mêmes :20Trois autres outils soutiennent ce travail sans être une façon d'exécuter des agents eux-mêmes :

21 21 

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

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

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

25 25 

Details

190 190 

191Chaque résolution de la chaîne expire après 60 secondes. Si une étape de la chaîne s'arrête, par exemple un assistant `credential_process` qui attend une entrée qu'il ne peut pas recevoir, la demande échoue avec [`AWS default-chain credential resolve timed out`](/docs/fr/errors#aws-default-chain-credential-resolve-timed-out). Si votre chaîne exécute une connexion interactive qui a légitimement besoin de plus de temps, comme SSO basé sur navigateur avec MFA via un wrapper comme `aws-vault`, augmentez la limite en millisecondes avec [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/fr/env-vars). Avant v2.1.207, une résolution d'identifiant bloquée laissait la demande en attente indéfiniment.191Chaque résolution de la chaîne expire après 60 secondes. Si une étape de la chaîne s'arrête, par exemple un assistant `credential_process` qui attend une entrée qu'il ne peut pas recevoir, la demande échoue avec [`AWS default-chain credential resolve timed out`](/docs/fr/errors#aws-default-chain-credential-resolve-timed-out). Si votre chaîne exécute une connexion interactive qui a légitimement besoin de plus de temps, comme SSO basé sur navigateur avec MFA via un wrapper comme `aws-vault`, augmentez la limite en millisecondes avec [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/fr/env-vars). Avant v2.1.207, une résolution d'identifiant bloquée laissait la demande en attente indéfiniment.

192 192 

193Sauf quand vous vous authentifiez avec une clé API Amazon Bedrock, l'[assistant de configuration](#sign-in-with-bedrock) applique la même limite à chaque appel AWS qu'il effectue lors de la vérification de vos identifiants, et à la recherche d'identifiants avant chaque vérification de modèle. Lors de la vérification des identifiants, une vérification qui dépasse la limite échoue avec [`Timed out after 60s waiting for AWS`](/docs/fr/errors#bedrock-setup-verification-timed-out-waiting-for-aws).

194 

193<h4 id="advanced-credential-configuration">195<h4 id="advanced-credential-configuration">

194 Configuration avancée des identifiants196 Configuration avancée des identifiants

195</h4>197</h4>


263 265 

264Lors de l'activation d'Amazon Bedrock pour Claude Code, gardez à l'esprit les points suivants :266Lors de l'activation d'Amazon Bedrock pour Claude Code, gardez à l'esprit les points suivants :

265 267 

266* À partir de v2.1.172, vous n'avez besoin de définir `AWS_REGION` que pour remplacer la région de votre profil AWS ou quand votre profil n'a pas de région. Claude Code résout la région dans cet ordre :268* Vous n'avez besoin de définir `AWS_REGION` que pour remplacer la région de votre profil AWS ou quand votre profil n'a pas de région. Claude Code résout la région dans cet ordre :

267 269 

268 * `AWS_REGION`270 * `AWS_REGION`

269 * `AWS_DEFAULT_REGION`271 * `AWS_DEFAULT_REGION`


274 276 

275 Le profil actif est `AWS_PROFILE` s'il est défini, sinon `default`. Définissez `AWS_SHARED_CREDENTIALS_FILE` ou `AWS_CONFIG_FILE` pour pointer vers des chemins de fichiers non par défaut.277 Le profil actif est `AWS_PROFILE` s'il est défini, sinon `default`. Définissez `AWS_SHARED_CREDENTIALS_FILE` ou `AWS_CONFIG_FILE` pour pointer vers des chemins de fichiers non par défaut.

276 278 

277 Exécutez `/status` pour voir la région résolue. Quand la région provient de vos fichiers de configuration AWS ou du secours par défaut, Claude Code note également la source dans la sortie `/status`. Sur v2.1.171 et antérieur, Claude Code ne lit pas les fichiers de configuration AWS, donc définissez `AWS_REGION` explicitement.279 Exécutez `/status` pour voir la région résolue. Quand la région provient de vos fichiers de configuration AWS ou du secours par défaut, Claude Code note également la source dans la sortie `/status`.

278* Lors de l'utilisation d'Amazon Bedrock, la commande `/logout` n'est pas disponible puisque l'authentification est gérée via les identifiants AWS.280* Lors de l'utilisation d'Amazon Bedrock, la commande `/logout` n'est pas disponible puisque l'authentification est gérée via les identifiants AWS.

279* L'outil WebSearch n'est pas disponible sur Amazon Bedrock. Voir [Comportement de l'outil WebSearch](/docs/fr/tools-reference#websearch-tool-behavior).281* L'outil WebSearch n'est pas disponible sur Amazon Bedrock. Voir [Comportement de l'outil WebSearch](/docs/fr/tools-reference#websearch-tool-behavior).

280* 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](/docs/fr/settings) pour plus d'informations.282* 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](/docs/fr/settings) pour plus d'informations.


529export AWS_REGION=us-east-1531export AWS_REGION=us-east-1

530```532```

531 533 

532Claude Code construit l'URL du point de terminaison à partir de la région AWS. À partir de la v2.1.172, la région est résolue avec la même priorité que [Bedrock ci-dessus](#3-configure-claude-code) ; les versions antérieures utilisent uniquement `AWS_REGION`. Pour remplacer l'URL pour un point de terminaison personnalisé ou une passerelle, définissez `ANTHROPIC_BEDROCK_MANTLE_BASE_URL`.534Claude Code construit l'URL du point de terminaison à partir de la région AWS, résolue avec la même priorité que [Bedrock ci-dessus](#3-configure-claude-code). Pour remplacer l'URL pour un point de terminaison personnalisé ou une passerelle, définissez `ANTHROPIC_BEDROCK_MANTLE_BASE_URL`.

533 535 

534Exécutez `/status` dans Claude Code pour confirmer. La ligne du fournisseur affiche `Amazon Bedrock (Mantle)` lorsque Mantle est actif.536Exécutez `/status` dans Claude Code pour confirmer. La ligne du fournisseur affiche `Amazon Bedrock (Mantle)` lorsque Mantle est actif.

535 537 


605 607 

606Si 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`.608Si 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`.

607 609 

610<h3 id="certificate-errors-behind-a-tls-inspecting-proxy">

611 Erreurs de certificat derrière un proxy d'inspection TLS

612</h3>

613 

614Claude Code applique votre configuration du [magasin de certificats CA](/docs/fr/network-config#ca-certificate-store) à ses demandes à AWS, y compris :

615 

616* Découverte de modèle

617* Comptage des jetons

618* Les appels de rôle STS et SSO qui résolvent vos identifiants AWS

619* La vérification des identifiants et les vérifications de modèle de l'[assistant de configuration](#sign-in-with-bedrock)

620 

621Pour ces demandes, un certificat racine d'entreprise dans votre magasin de confiance du système d'exploitation ou le bundle `NODE_EXTRA_CA_CERTS` ne nécessite aucune configuration spécifique à Amazon Bedrock.

622 

623Avant la v2.1.260, Claude Code appliquait votre configuration CA à ces demandes uniquement lorsqu'elles passaient par un proxy configuré, et sur une connexion directe, elles ne faisaient confiance qu'au magasin de certificats par défaut du runtime.

624 

625Avant la v2.1.261, la recherche d'identifiants derrière les vérifications de modèle de l'assistant de configuration avec l'option **Utiliser les identifiants déjà dans mon environnement** ne faisait toujours confiance qu'au magasin de certificats par défaut du runtime. Derrière un proxy d'inspection TLS dont le certificat racine se trouve uniquement dans le magasin du système d'exploitation, les demandes affectées ont échoué avec `unable to get local issuer certificate`, ou l'assistant a montré les modèles comme `unreachable`, tandis que les demandes d'inférence ont réussi. Mettez à jour vers la v2.1.261 ou une version ultérieure.

626 

608<h3 id="region-issues">627<h3 id="region-issues">

609 Problèmes de région628 Problèmes de région

610</h3>629</h3>

analytics.md +5 −11

Details

26* **Classement** : principaux contributeurs classés par utilisation de Claude Code26* **Classement** : principaux contributeurs classés par utilisation de Claude Code

27* **Export de données** : téléchargez les données de contribution au format CSV pour des rapports personnalisés27* **Export de données** : téléchargez les données de contribution au format CSV pour des rapports personnalisés

28 28 

29Pour les comptages de tokens par utilisateur et les estimations de coûts, configurez [l'export OpenTelemetry](/fr/monitoring-usage), ou exportez le [rapport de dépenses](https://support.claude.com/en/articles/12883420-view-usage-analytics-for-team-and-enterprise-plans) à partir des paramètres analytiques de votre organisation, qui répertorie l'utilisation des tokens et les dépenses estimées en crédits d'utilisation par utilisateur et par modèle.29Pour les comptages de tokens par utilisateur et les estimations de coûts, configurez [l'export OpenTelemetry](/docs/fr/monitoring-usage), ou exportez le [rapport de dépenses](https://support.claude.com/en/articles/12883420-view-usage-analytics-for-team-and-enterprise-plans) à partir des paramètres analytiques de votre organisation, qui répertorie l'utilisation des tokens et les dépenses estimées en crédits d'utilisation par utilisateur et par modèle.

30 30 

31<h3 id="enable-contribution-metrics">31<h3 id="enable-contribution-metrics">

32 Activer les métriques de contribution32 Activer les métriques de contribution


41Vous devez avoir le rôle Propriétaire pour configurer les paramètres analytiques. Un administrateur GitHub doit installer l'application GitHub.41Vous devez avoir le rôle Propriétaire pour configurer les paramètres analytiques. Un administrateur GitHub doit installer l'application GitHub.

42 42 

43<Warning>43<Warning>

44 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.44 Les métriques de contribution ne sont pas disponibles pour les organisations avec [Zero Data Retention](/docs/fr/zero-data-retention) activé. Le tableau de bord analytique affichera uniquement les métriques d'utilisation.

45</Warning>45</Warning>

46 46 

47<Steps>47<Steps>


139 139 

140Lorsque 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.140Lorsque 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.

141 141 

142<h4 id="tagging-criteria">

143 Critères de balisage

144</h4>

145 

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

147 

148<h4 id="attribution-process">142<h4 id="attribution-process">

149 Processus d'attribution143 Processus d'attribution

150</h4>144</h4>


267 Ressources connexes261 Ressources connexes

268</h2>262</h2>

269 263 

270* [Surveillance avec OpenTelemetry](/fr/monitoring-usage) : exportez les métriques et événements en temps réel vers votre pile d'observabilité264* [Surveillance avec OpenTelemetry](/docs/fr/monitoring-usage) : exportez les métriques et événements en temps réel vers votre pile d'observabilité

271* [Gérer les coûts efficacement](/fr/costs) : définissez les limites de dépenses et optimisez l'utilisation des tokens265* [Gérer les coûts efficacement](/docs/fr/costs) : définissez les limites de dépenses et optimisez l'utilisation des tokens

272* [Permissions](/fr/permissions) : configurez les rôles et les permissions266* [Permissions](/docs/fr/permissions) : configurez les rôles et les permissions

artifacts.md +50 −20

Details

35 Ce qu'un artifact n'est pas35 Ce qu'un artifact n'est pas

36</h3>36</h3>

37 37 

38Un artifact est une capture de travail : une page autonome sans backend, elle ne peut donc pas stocker l'entrée de formulaire ou servir plusieurs routes, et son seul chemin vers les données externes quand quelqu'un la consulte est [l'appel des connecteurs MCP](#pull-live-data-with-mcp-connectors). Pour un outil interne hébergé avec un backend, déployez-le plutôt sur votre propre infrastructure. Consultez [Contraintes de page](#page-constraints) pour l'ensemble complet des limites.38Un artifact est une capture de travail : une page autonome sans backend, elle ne peut donc pas servir plusieurs routes. Pour un outil interne hébergé avec un backend, déployez-le plutôt sur votre propre infrastructure. Consultez [Contraintes de page](#page-constraints) pour l'ensemble complet des limites.

39 39 

40<h2 id="create-an-artifact">40<h2 id="create-an-artifact">

41 Créer un artifact41 Créer un artifact


58 58 

59Après avoir approuvé un artifact une fois, Claude Code le republiera sans demander, et demandera à nouveau dans certains cas, notamment lorsque :59Après avoir approuvé un artifact une fois, Claude Code le republiera sans demander, et demandera à nouveau dans certains cas, notamment lorsque :

60 60 

61* Claude déclare une capacité d'exécution pour la page, comme les [appels de connecteur](#pull-live-data-with-mcp-connectors)61* Claude déclare une capacité d'exécution pour la page, comme les [appels de connecteur](#pull-live-data-with-mcp-connectors) ou les [téléchargements de fichiers](#offer-a-file-download)

62* Vous l'avez depuis [partagé publiquement](#share-an-artifact)62* Vous l'avez depuis [partagé publiquement](#share-an-artifact)

63* Vous l'avez depuis partagé avec des personnes spécifiques ou votre organisation avec la dernière version choisie comme version que les spectateurs voient63* Vous l'avez depuis partagé avec des personnes spécifiques ou votre organisation avec la dernière version choisie comme version que les spectateurs voient

64 64 

65Après la première publication, Claude imprime l'URL, et votre navigateur s'ouvre sur la nouvelle page. Appuyez sur `Ctrl+]` à tout moment pour rouvrir l'artifact le plus récent depuis le terminal.65Après la première publication, Claude imprime l'URL, et votre navigateur s'ouvre sur la nouvelle page. Si vous avez envoyé l'invite via [Contrôle à distance](/docs/fr/remote-control) depuis claude.ai, Claude Desktop ou l'application mobile Claude, aucun onglet ne s'ouvre sur la machine exécutant la session. Le navigateur s'ouvre là la prochaine fois que Claude publie l'artifact à partir d'une invite que vous tapez au terminal. Appuyez sur `Ctrl+]` à tout moment pour rouvrir l'artifact le plus récent de la session.

66 66 

67Claude choisit le titre de l'artifact et un emoji pour son icône d'onglet de navigateur. Les deux apparaissent dans votre [galerie d'artifacts](#share-an-artifact) sur claude.ai et dans les liens partagés, donc demandez à Claude d'utiliser un titre ou une icône spécifique si vous en voulez un.67Claude choisit le titre de l'artifact et un emoji, et les deux apparaissent dans votre [galerie d'artifacts](#share-an-artifact) sur claude.ai et dans les liens partagés. Claude peut également choisir une icône d'onglet de navigateur qui correspond à ce que la page est, comme un graphique ou un calendrier. Demandez à Claude un titre, un emoji ou une icône d'onglet spécifique si vous en voulez un.

68 68 

69Pour empêcher le navigateur de s'ouvrir automatiquement lors de la publication d'un nouvel artifact, définissez `CLAUDE_CODE_ARTIFACT_AUTO_OPEN=0` dans votre environnement.69Pour empêcher le navigateur de s'ouvrir automatiquement lors de la publication d'un nouvel artifact, définissez `CLAUDE_CODE_ARTIFACT_AUTO_OPEN=0` dans votre environnement.

70 70 


115 115 

116Un éditeur publie de nouvelles versions de la même manière que vous [mettez à jour l'artifact à partir d'une autre session](#update-an-artifact) : il donne à Claude l'URL de l'artifact, ou l'attache à partir de [`/artifacts`](#find-an-artifact-again), et Claude récupère le contenu actuel et le republish avec ses modifications. Tous les utilisateurs ayant la page ouverte voient chaque mise à jour en direct.116Un éditeur publie de nouvelles versions de la même manière que vous [mettez à jour l'artifact à partir d'une autre session](#update-an-artifact) : il donne à Claude l'URL de l'artifact, ou l'attache à partir de [`/artifacts`](#find-an-artifact-again), et Claude récupère le contenu actuel et le republish avec ses modifications. Tous les utilisateurs ayant la page ouverte voient chaque mise à jour en direct.

117 117 

118<h2 id="read-an-artifact-shared-with-you">

119 Lire un artifact partagé avec vous

120</h2>

121 

122Quand quelqu'un partage un artifact avec vous, vous pouvez demander à Claude de le lire : donnez à Claude son URL, ou attachez-le depuis [`/artifacts`](#find-an-artifact-again).

123 

124Claude lit une page que quelqu'un d'autre a écrite de la même manière qu'il lit une page web avec [WebFetch](/docs/fr/tools-reference#webfetch-tool-behavior) : il obtient un résumé de ce qu'il a demandé plutôt que la page brute, et le résumé rapporte les instructions écrites dans la page au lieu de les relayer. Claude Code sauvegarde également le code source complet de la page dans un fichier local, que Claude peut ouvrir quand il a besoin du contenu exact, par exemple pour republier l'artifact en tant qu'[éditeur](#let-someone-edit-with-you).

125 

118<h2 id="collect-comments-on-an-artifact">126<h2 id="collect-comments-on-an-artifact">

119 Collecter les commentaires sur un artifact127 Collecter les commentaires sur un artifact

120</h2>128</h2>


165Si le service qui livre les commentaires devient indisponible ou cesse de répondre, Claude Code continue d'essayer de se reconnecter pendant un certain temps, puis arrête de surveiller chaque artifact que votre session surveillait.173Si le service qui livre les commentaires devient indisponible ou cesse de répondre, Claude Code continue d'essayer de se reconnecter pendant un certain temps, puis arrête de surveiller chaque artifact que votre session surveillait.

166 174 

167<h2 id="pull-live-data-with-mcp-connectors">175<h2 id="pull-live-data-with-mcp-connectors">

168 Extraire des données en direct avec les connecteurs MCP176 Récupérer des données en direct avec les connecteurs MCP

169</h2>177</h2>

170 178 

171Un artifact peut appeler les [connecteurs MCP](/docs/fr/mcp#use-mcp-servers-from-claude-ai) chaque fois que quelqu'un le consulte, de sorte que la page affiche les données actuelles plutôt qu'une capture instantanée de la session qui l'a créé. Les appels de connecteur à partir d'artifacts sont disponibles sur les plans Pro, Max, Team et Enterprise et nécessitent Claude Code v2.1.209 ou une version ultérieure. Sur les versions antérieures, Claude publie la page avec les données que la session a rassemblées lors de sa création.179Un artifact peut appeler des [connecteurs MCP](/docs/fr/mcp#use-mcp-servers-from-claude-ai) chaque fois que quelqu'un le consulte, de sorte que la page affiche des données actuelles plutôt qu'une capture instantanée de la session qui l'a créé. Les appels de connecteur à partir d'artifacts sont disponibles sur les plans Pro, Max, Team et Enterprise et nécessitent Claude Code v2.1.209 ou version ultérieure. Sur les versions antérieures, Claude publie la page avec les données que la session a rassemblées lors de sa création.

172 180 

173Pour créer une page sauvegardée par un connecteur, nommez le connecteur et les données que vous souhaitez dans votre prompt :181Pour créer une page alimentée par un connecteur, nommez le connecteur et les données que vous souhaitez dans votre prompt :

174 182 

175```text wrap theme={null}183```text wrap theme={null}

176Build a dashboard artifact of our open pull requests that pulls the live list through my GitHub connector when the page loads.184Build a dashboard artifact of our open pull requests that pulls the live list through my GitHub connector when the page loads.


178 186 

179Claude déclare quels connecteurs la page peut appeler lors de la publication, et la page ne peut pas appeler de connecteurs en dehors de cette déclaration. Seuls les connecteurs de votre compte claude.ai sont admissibles : Claude les nomme dans la déclaration, et lorsque quelqu'un consulte la page, chaque appel [s'exécute via la propre connexion du compte qui consulte](#how-connector-calls-work-for-viewers) à ce connecteur. Les serveurs MCP locaux que vous configurez dans Claude Code, tels que les serveurs de `.mcp.json`, peuvent fournir des données pendant que Claude crée la page, mais la page publiée ne peut pas les appeler.187Claude déclare quels connecteurs la page peut appeler lors de la publication, et la page ne peut pas appeler de connecteurs en dehors de cette déclaration. Seuls les connecteurs de votre compte claude.ai sont admissibles : Claude les nomme dans la déclaration, et lorsque quelqu'un consulte la page, chaque appel [s'exécute via la propre connexion du compte qui consulte](#how-connector-calls-work-for-viewers) à ce connecteur. Les serveurs MCP locaux que vous configurez dans Claude Code, tels que les serveurs de `.mcp.json`, peuvent fournir des données pendant que Claude crée la page, mais la page publiée ne peut pas les appeler.

180 188 

181La page récupère les données au chargement et peut s'actualiser à un intervalle ou lorsqu'un visiteur utilise un contrôle d'actualisation sur la page. Les réponses sont mises en cache dans le navigateur du visiteur, de sorte qu'une page rouverte s'affiche à partir des réponses mises en cache immédiatement, puis se met à jour avec les résultats actualisés.189La page récupère les données au chargement et peut s'actualiser à un intervalle ou lorsqu'un lecteur utilise un contrôle d'actualisation sur la page. Les réponses sont mises en cache dans le navigateur du lecteur, de sorte qu'une page rouverte s'affiche à partir des réponses mises en cache immédiatement, puis se met à jour avec les résultats actualisés.

182 190 

183<h3 id="how-connector-calls-work-for-viewers">191<h3 id="how-connector-calls-work-for-viewers">

184 Comment les appels de connecteur fonctionnent pour les visiteurs192 Comment les appels de connecteur fonctionnent pour les lecteurs

185</h3>193</h3>

186 194 

187Lorsqu'une page publiée appelle un connecteur, l'appel utilise le compte de la personne qui consulte la page, et non le compte de la personne qui l'a publiée :195Lorsqu'une page publiée appelle un connecteur, l'appel utilise le compte de la personne qui consulte la page, et non le compte de la personne qui l'a publiée :

188 196 

189* **Chaque visiteur utilise ses propres connecteurs** : les appels passent par les outils connectés du compte qui consulte, de sorte que deux personnes ouvrant le même tableau de bord peuvent voir des données différentes selon ce que leurs comptes peuvent accéder. La page ne voit jamais les identifiants de personne ; claude.ai effectue les appels au nom de la page.197* **Chaque lecteur utilise ses propres connecteurs** : les appels passent par les outils connectés du compte qui consulte, de sorte que deux personnes ouvrant le même tableau de bord peuvent voir des données différentes selon ce que leurs comptes peuvent accéder. La page ne voit jamais les identifiants de personne ; claude.ai effectue les appels au nom de la page.

190* **Les visiteurs approuvent d'abord l'accès** : claude.ai demande à chaque visiteur la permission avant le premier appel de connecteur de la page. Un visiteur qui refuse, ou qui n'a pas connecté un connecteur que la page utilise, voit toujours la page sans ses sections en direct.198* **Les lecteurs approuvent d'abord l'accès** : claude.ai demande à chaque lecteur la permission avant le premier appel de connecteur de la page. Un lecteur qui refuse, ou qui n'a pas connecté un connecteur que la page utilise, voit toujours la page sans ses sections en direct.

191* **Les actions utilisent également le compte du visiteur** : une page peut offrir des contrôles qui invoquent des outils de connecteur avec des effets secondaires, tels que publier un message ou mettre à jour un problème. L'action s'exécute via le compte de celui qui sélectionne le contrôle.199* **Les actions utilisent également le compte du lecteur** : une page peut offrir des contrôles qui invoquent des outils de connecteur avec des effets secondaires, tels que publier un message ou mettre à jour un problème. L'action s'exécute via le compte de celui qui sélectionne le contrôle.

192 200 

193Lorsque vous prévoyez de partager une page sauvegardée par un connecteur, demandez à Claude d'inclure un message de secours dans chaque section en direct qui nomme le connecteur dont elle a besoin. Un visiteur qui n'a pas la connexion voit alors ce qu'il faut connecter au lieu d'une section vide.201Lorsque vous prévoyez de partager une page alimentée par un connecteur, demandez à Claude d'inclure un message de secours dans chaque section en direct qui nomme le connecteur dont elle a besoin. Un lecteur qui manque la connexion voit alors ce qu'il faut connecter au lieu d'une section vide.

194 202 

195Un artifact qui appelle des connecteurs ne peut pas être partagé via un lien public sur aucun plan. Sur les plans Team et Enterprise, vous pouvez le garder privé ou [le partager au sein de votre organisation](#share-an-artifact). Sur les plans Pro et Max, où un lien public est le seul moyen de partager, un artifact sauvegardé par un connecteur reste privé pour vous.203Un artifact qui appelle des connecteurs ne peut pas être partagé via un lien public sur aucun plan. Sur les plans Team et Enterprise, vous pouvez le garder privé ou [le partager au sein de votre organisation](#share-an-artifact). Sur les plans Pro et Max, où un lien public est le seul moyen de partager, un artifact alimenté par un connecteur reste privé pour vous.

196 204 

197<h3 id="the-page-shows-no-live-data-for-a-viewer">205<h3 id="the-page-shows-no-live-data-for-a-viewer">

198 La page n'affiche aucune donnée en direct pour un visiteur206 La page n'affiche aucune donnée en direct pour un lecteur

199</h3>207</h3>

200 208 

201Lorsqu'une page sauvegardée par un connecteur s'affiche mais que ses sections en direct restent vides pour quelqu'un avec qui vous l'avez partagée, travaillez à travers ces causes :209Lorsqu'une page alimentée par un connecteur s'affiche mais que ses sections en direct restent vides pour quelqu'un avec qui vous l'avez partagée, travaillez à travers ces causes :

202 210 

203* **Le visiteur n'a pas connecté le connecteur** : les connecteurs sont par compte, de sorte que chaque visiteur a besoin de sa propre connexion à chaque connecteur que la page appelle. Il peut en ajouter un sous **Paramètres > Connecteurs** sur claude.ai, puis recharger la page.211* **Le lecteur n'a pas connecté le connecteur** : les connecteurs sont par compte, de sorte que chaque lecteur a besoin de sa propre connexion à chaque connecteur que la page appelle. Il peut en ajouter un sous **Paramètres > Connecteurs** sur claude.ai, puis recharger la page.

204* **Le visiteur a refusé la demande de permission** : un refus dure pour le reste de ce chargement de page. Recharger la page ramène la demande de permission.212* **Le lecteur a refusé la demande de permission** : un refus dure pour le reste de ce chargement de page. Recharger la page ramène la demande de permission.

205* **Les appels de connecteur sont désactivés pour l'organisation** : un propriétaire contrôle le [bouton bascule **Activer les connecteurs d'artifact**](#control-connector-calls-from-artifacts) dans les paramètres d'administration.213* **Les appels de connecteur sont désactivés pour l'organisation** : un propriétaire contrôle le [bouton bascule **Activer les connecteurs d'artifact**](#control-connector-calls-from-artifacts) dans les paramètres d'administration.

214* **La page appelle des noms d'outils que le connecteur n'expose pas** : les sections affectées restent vides pour tout le monde, y compris vous. Cela peut se produire lorsqu'une page nomme les outils individuels derrière un connecteur de style passerelle qui n'expose que quelques-uns de ses propres outils. Demandez à Claude de corriger les noms d'outils que la page appelle et de la publier à nouveau.

215 

216 Lorsque Claude publie la page et que les outils de ce connecteur sont disponibles dans votre session, Claude Code vérifie les noms d'outils que la page déclare par rapport à eux, avertit Claude des noms qui ne correspondent pas, et refuse la publication lorsqu'aucun ne correspond. Avant la v2.1.265, il publiait la page sans les vérifier.

217 

218<h2 id="offer-a-file-download">

219 Proposer un téléchargement de fichier

220</h2>

221 

222Un artifact peut proposer aux lecteurs un fichier généré par la page, comme une exportation CSV d'un tableau ou une image PNG d'un graphique. Le lecteur l'enregistre via un contrôle de téléchargement sur la page, comme un bouton. Les téléchargements de fichiers sont une capacité d'exécution que claude.ai active par compte, donc Claude vérifie si votre compte la possède avant de construire le contrôle.

223 

224Les lecteurs ne peuvent pas enregistrer un fichier à partir d'un lien de téléchargement ordinaire ou d'un script sur la page, car la visionneuse d'artifacts sur claude.ai bloque tout téléchargement que la page démarre elle-même, y compris les liens vers les URL `data:` ou `blob:`. Si une page a des boutons de téléchargement construits de cette façon, demandez à Claude de les reconstruire avec la capacité de téléchargements.

225 

226Pour proposer un fichier, demandez le contrôle et le format de fichier dans votre prompt :

227 

228```text wrap theme={null}

229Add a button that downloads this table as a CSV file.

230```

231 

232Claude déclare la capacité de téléchargements dans le cadre de la publication, de la même manière qu'il [déclare les connecteurs](#pull-live-data-with-mcp-connectors).

206 233 

207<h2 id="what-you-can-build">234<h2 id="what-you-can-build">

208 Ce que vous pouvez créer235 Ce que vous pouvez créer


301| Contrainte | Effet |328| Contrainte | Effet |

302| :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |329| :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

303| Requêtes externes | La page peut charger des polices de caractères à partir de Google Fonts et des scripts à partir de [quatre hôtes CDN publics](#allowlist-the-viewer-domain) : cdnjs, les CDN Tailwind et jQuery, et les chemins sélectionnés sur jsDelivr tels que `/npm/`. La CSP bloque chaque image externe et tous les autres scripts, feuilles de style et polices externes, et permet aux appels `fetch`, XHR et WebSocket d'atteindre uniquement l'origine de la page et les hôtes Google Fonts. Claude charge donc toute bibliothèque dont la page a besoin à partir de l'un de ces CDN, intègre tous les autres CSS et JavaScript, et incorpore les images en tant qu'URI de données. [Les appels Connector](#pull-live-data-with-mcp-connectors) passent par claude.ai, qui effectue lui-même l'appel réseau. |330| Requêtes externes | La page peut charger des polices de caractères à partir de Google Fonts et des scripts à partir de [quatre hôtes CDN publics](#allowlist-the-viewer-domain) : cdnjs, les CDN Tailwind et jQuery, et les chemins sélectionnés sur jsDelivr tels que `/npm/`. La CSP bloque chaque image externe et tous les autres scripts, feuilles de style et polices externes, et permet aux appels `fetch`, XHR et WebSocket d'atteindre uniquement l'origine de la page et les hôtes Google Fonts. Claude charge donc toute bibliothèque dont la page a besoin à partir de l'un de ces CDN, intègre tous les autres CSS et JavaScript, et incorpore les images en tant qu'URI de données. [Les appels Connector](#pull-live-data-with-mcp-connectors) passent par claude.ai, qui effectue lui-même l'appel réseau. |

304| Pas de backend | Un artifact est une page statique. Il ne peut pas stocker les données soumises via un formulaire ou authentifier les visiteurs lui-même. Sa seule façon de récupérer des données lorsque quelqu'un la consulte est [d'appeler les connecteurs MCP](#pull-live-data-with-mcp-connectors), et non une API propre. |331| Pas de backend | Un artifact est une page statique. Il ne peut pas authentifier les visiteurs lui-même. |

332| Téléchargements | La page ne peut pas lancer un téléchargement elle-même. Pour permettre aux visiteurs d'enregistrer un fichier généré par la page, Claude déclare la capacité de téléchargements. Voir [Proposer un téléchargement de fichier](#offer-a-file-download). |

305| Page unique | Les liens relatifs ne se résolvent pas, car rien n'est déployé aux côtés de la page. Pour le contenu multi-sections, Claude utilise des ancres dans la page plutôt que des fichiers séparés. |333| Page unique | Les liens relatifs ne se résolvent pas, car rien n'est déployé aux côtés de la page. Pour le contenu multi-sections, Claude utilise des ancres dans la page plutôt que des fichiers séparés. |

306| Types de fichiers source | Le fichier publié doit être `.html`, `.htm` ou `.md`. Les fichiers Markdown s'affichent en HTML stylisé. |334| Types de fichiers source | Le fichier publié doit être `.html`, `.htm` ou `.md`, et doit être décodable en UTF-8, ou en UTF-16 little-endian par sa marque d'ordre des octets. Les fichiers Markdown s'affichent en HTML stylisé. Un fichier qui ne se décode pas, ou qui contient le caractère de remplacement `U+FFFD`, est [refusé avec la ligne et la colonne à corriger](/docs/fr/errors#the-source-file-is-not-valid-utf-8-text). |

307| Taille rendue | La page rendue doit faire 16 Mio ou moins. Les grandes images incorporées sont la cause habituelle lorsqu'une publication échoue pour des raisons de taille. |335| Taille rendue | La page rendue doit faire 16 Mio ou moins. Les grandes images incorporées sont la cause habituelle lorsqu'une publication échoue pour des raisons de taille. |

308 336 

309Générer un artifact utilise des tokens de sortie comme toute autre réponse, et une page stylisée est plus gourmande en tokens que le même contenu sous forme de texte terminal. Les CSS intégrés, le JavaScript pour les contrôles interactifs, et surtout les images incorporées en tant qu'URI de données sont les principaux contributeurs. Pour réduire le coût en tokens d'un artifact :337Générer un artifact utilise des tokens de sortie comme toute autre réponse, et une page stylisée est plus gourmande en tokens que le même contenu sous forme de texte terminal. Les CSS intégrés, le JavaScript pour les contrôles interactifs, et surtout les images incorporées en tant qu'URI de données sont les principaux contributeurs. Pour réduire le coût en tokens d'un artifact :


343 371 

344Vous pouvez également définir `"enableArtifact": false` dans le fichier `.claude/settings.json` ou `.claude/settings.local.json` d'un projet pour désactiver les artefacts pour les sessions de ce projet. Un `"enableArtifact": true` dans l'un ou l'autre fichier ne les réactive pas. Le respect de la clé dans les paramètres du projet et locaux nécessite Claude Code v2.1.242 ou une version ultérieure.372Vous pouvez également définir `"enableArtifact": false` dans le fichier `.claude/settings.json` ou `.claude/settings.local.json` d'un projet pour désactiver les artefacts pour les sessions de ce projet. Un `"enableArtifact": true` dans l'un ou l'autre fichier ne les réactive pas. Le respect de la clé dans les paramètres du projet et locaux nécessite Claude Code v2.1.242 ou une version ultérieure.

345 373 

374Si vous ajoutez une règle de refus ou de demande `WebFetch` sans partie `domain:`, elle ne désactive pas les artefacts ni ne bloque les lectures d'artefacts. Une [règle `WebFetch(domain:claude.ai)` dans `deny` ou `ask` s'applique aux lectures d'artefacts](/docs/fr/permissions#allow-or-deny-every-fetch).

375 

346<h2 id="manage-artifacts-for-your-organization">376<h2 id="manage-artifacts-for-your-organization">

347 Gérer les artefacts pour votre organisation377 Gérer les artefacts pour votre organisation

348</h2>378</h2>

Details

130* **Ce dont il vous déconnecte** : Claude Code vous déconnecte de toute connexion claude.ai stockée sur la machine130* **Ce dont il vous déconnecte** : Claude Code vous déconnecte de toute connexion claude.ai stockée sur la machine

131* **Comment l'annuler** : exécutez `/logout`, qui supprime et révoque l'identifiant que cette connexion a écrit131* **Comment l'annuler** : exécutez `/logout`, qui supprime et révoque l'identifiant que cette connexion a écrit

132 132 

133Si votre organisation utilise les [paramètres gérés par serveur](/docs/fr/server-managed-settings), ils s'appliquent à cette connexion sur Claude Code v2.1.257 ou version ultérieure.

134 

133Tout le reste concernant les profils s'applique à cette connexion, y compris son classement par rapport à vos autres identifiants, la ligne `Profile` que vous obtenez dans `/status`, et les fonctionnalités qui nécessitent une connexion claude.ai. Voir [Anthropic profiles and federation credentials](#anthropic-profiles-and-federation-credentials).135Tout le reste concernant les profils s'applique à cette connexion, y compris son classement par rapport à vos autres identifiants, la ligne `Profile` que vous obtenez dans `/status`, et les fonctionnalités qui nécessitent une connexion claude.ai. Voir [Anthropic profiles and federation credentials](#anthropic-profiles-and-federation-credentials).

134 136 

135<h3 id="cloud-provider-authentication">137<h3 id="cloud-provider-authentication">


233 235 

234Une session [passerelle d'applications Claude](/docs/fr/claude-apps-gateway) signée se situe en dehors de cette liste : c'est une sélection de fournisseur comme Amazon Bedrock ou Google Cloud's Agent Platform, et elle les surclasse. Lorsqu'une session de passerelle existe, la CLI s'authentifie avec le jeton de passerelle même si `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX` ou `CLAUDE_CODE_USE_FOUNDRY` est défini, et les sources d'identifiants ci-dessus telles que le jeton porteur, la clé API, `apiKeyHelper` et les profils ne sont pas utilisés.236Une session [passerelle d'applications Claude](/docs/fr/claude-apps-gateway) signée se situe en dehors de cette liste : c'est une sélection de fournisseur comme Amazon Bedrock ou Google Cloud's Agent Platform, et elle les surclasse. Lorsqu'une session de passerelle existe, la CLI s'authentifie avec le jeton de passerelle même si `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX` ou `CLAUDE_CODE_USE_FOUNDRY` est défini, et les sources d'identifiants ci-dessus telles que le jeton porteur, la clé API, `apiKeyHelper` et les profils ne sont pas utilisés.

235 237 

236Si 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. La ligne `Login method` affiche votre compte d'abonnement, et une ligne `API key` apparaît lorsqu'une clé API est en cours d'utilisation.238Si les [paramètres gérés](/docs/fr/managed-settings) de votre machine définissent [`forceLoginMethod`](/docs/fr/settings-reference#forceloginmethod) sur `"gateway"` ou définissent [`forceLoginGatewayUrl`](/docs/fr/settings-reference#forcelogingatewayurl), et que vous ne sélectionnez pas un fournisseur cloud via une variable telle que `CLAUDE_CODE_USE_BEDROCK` ou `CLAUDE_CODE_USE_VERTEX`, votre session utilise uniquement la connexion de passerelle. Claude Code ignore les autres sources d'identifiants et vous demande de vous connecter avec `/login`. Consultez [Administrator policy requires a Cloud gateway sign-in](/docs/fr/errors#administrator-policy-requires-a-cloud-gateway-sign-in) pour voir ce que vous voyez avec chaque identifiant restant. Avant v2.1.261, ou avant v2.1.265 sur une machine qui définit uniquement `forceLoginGatewayUrl`, Claude Code utilisait une connexion enregistrée restante sur ces machines jusqu'à ce que vous vous connectiez à la passerelle.

239 

240Si vous avez un abonnement Claude actif mais que vous avez également `ANTHROPIC_API_KEY` défini dans votre environnement, Claude Code utilise la clé API une fois approuvée. Cela peut causer des échecs d'authentification si la clé appartient à une organisation désactivée ou expirée.

241 

242Exécutez `unset ANTHROPIC_API_KEY` pour revenir à votre abonnement, et vérifiez `/status` pour confirmer quelle méthode est active. Lorsqu'une connexion et une clé API sont toutes deux configurées, `/status` marque l'identifiant qui n'est pas en cours d'utilisation.

237 243 

238[Claude Code sur le Web](/docs/fr/claude-code-on-the-web) utilise toujours vos identifiants d'abonnement. Si vous définissez `ANTHROPIC_API_KEY` ou `ANTHROPIC_AUTH_TOKEN` dans l'environnement sandbox, cela ne remplace pas vos identifiants d'abonnement.244[Claude Code sur le Web](/docs/fr/claude-code-on-the-web) utilise toujours vos identifiants d'abonnement. Si vous définissez `ANTHROPIC_API_KEY` ou `ANTHROPIC_AUTH_TOKEN` dans l'environnement sandbox, cela ne remplace pas vos identifiants d'abonnement.

239 245 


255 261 

256La règle `user_oauth` empêche un profil `ant auth login` résiduel de déplacer vos requêtes hors du compte auquel vous vous êtes connecté avec `/login`. Pour les variables de fédération, Claude Code lit également les autres variables dans la [référence WIF](https://platform.claude.com/docs/en/manage-claude/wif-reference#environment-variables), telles que `ANTHROPIC_IDENTITY_TOKEN_FILE`, lorsqu'il échange votre jeton d'identité. Pour le format du fichier de profil, consultez la [référence WIF](https://platform.claude.com/docs/en/manage-claude/wif-reference#profile-configuration-file).262La règle `user_oauth` empêche un profil `ant auth login` résiduel de déplacer vos requêtes hors du compte auquel vous vous êtes connecté avec `/login`. Pour les variables de fédération, Claude Code lit également les autres variables dans la [référence WIF](https://platform.claude.com/docs/en/manage-claude/wif-reference#environment-variables), telles que `ANTHROPIC_IDENTITY_TOKEN_FILE`, lorsqu'il échange votre jeton d'identité. Pour le format du fichier de profil, consultez la [référence WIF](https://platform.claude.com/docs/en/manage-claude/wif-reference#profile-configuration-file).

257 263 

258Pour confirmer quelle source Claude Code a choisie, exécutez `/status` : une ligne `Profile` nomme la source à la place de la ligne `Login method`. Si vous démarrez Claude Code avec `--debug`, il écrit également une ligne `Using Anthropic profile auth` avec le nom de la source dans le journal de débogage à `~/.claude/debug/<session-id>.txt`. Lorsque Claude Code passe sur un profil actif `user_oauth` parce que vous avez un identifiant `/login` fonctionnant, il écrit un avertissement dans le journal de débogage indiquant qu'il utilise la connexion claude.ai à la place. Lorsque la connexion d'un profil `user_oauth` a expiré et que Claude Code ne peut pas la renouveler, les requêtes échouent avec [Anthropic profile login expired](/docs/fr/errors#anthropic-profile-login-expired).264Pour confirmer quelle source Claude Code a choisie, exécutez `/status`. Une ligne `Profile` nomme la source à la place de la ligne `Login method`. Lorsque le profil est l'identifiant en cours d'utilisation, les lignes `Organization` et `Email` affichent son compte.

265 

266Si vous démarrez Claude Code avec `--debug`, il écrit également une ligne `Using Anthropic profile auth` avec le nom de la source dans le journal de débogage à `~/.claude/debug/<session-id>.txt`. Lorsque Claude Code passe sur un profil actif `user_oauth` parce que vous avez un identifiant `/login` fonctionnant, il écrit un avertissement dans le journal de débogage indiquant qu'il utilise la connexion claude.ai à la place.

267 

268Lorsque la connexion d'un profil `user_oauth` a expiré et que Claude Code ne peut pas la renouveler, les requêtes échouent avec [Anthropic profile login expired](/docs/fr/errors#anthropic-profile-login-expired).

259 269 

260Les fonctionnalités qui nécessitent votre connexion claude.ai, telles que [les connecteurs claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai) et [`/schedule`](/docs/fr/routines), ne sont pas disponibles lorsqu'une de ces sources est sélectionnée. Pour empêcher Claude Code de sélectionner une source :270Les fonctionnalités qui nécessitent votre connexion claude.ai, telles que [les connecteurs claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai) et [`/schedule`](/docs/fr/routines), ne sont pas disponibles lorsqu'une de ces sources est sélectionnée. Pour empêcher Claude Code de sélectionner une source :

261 271 

Details

36 36 

37<Info>Avant v2.1.211, le classificateur permettait les poussées uniquement vers votre branche de travail, les branches créées par Claude, et les poussées régulières vers la branche par défaut.</Info>37<Info>Avant v2.1.211, le classificateur permettait les poussées uniquement vers votre branche de travail, les branches créées par Claude, et les poussées régulières vers la branche par défaut.</Info>

38 38 

39Si vous souhaitez un point de contrôle humain avant chaque poussée ou demande de tirage, ajoutez des règles de permission : les [recettes ci-dessous](#add-a-human-checkpoint) maintiennent le mode auto activé pour tout le reste.39Si vous souhaitez un point de contrôle humain avant les commandes de poussée et de demande de tirage de Claude, ajoutez des règles de permission : les [recettes ci-dessous](#add-a-human-checkpoint) maintiennent le mode auto activé pour tout le reste.

40 40 

41<h3 id="add-a-human-checkpoint">41<h3 id="add-a-human-checkpoint">

42 Ajouter un point de contrôle humain42 Ajouter un point de contrôle humain


55}55}

56```56```

57 57 

58Ces règles correspondent aux commandes qui commencent par `git push` ou `gh pr create`. Une poussée que Claude écrit d'une autre manière, comme `git -C <dir> push` ou `git -c <key>=<value> push`, [ne correspond pas à la règle](/docs/fr/permissions#bash-rule-limits), donc elle n'est pas contrôlée. Pour un point de contrôle qui inspecte le texte complet de la commande, ajoutez un [hook PreToolUse](/docs/fr/hooks#pretooluse).

59 

58Choisissez le mécanisme qui correspond à la fermeté requise de la limite :60Choisissez le mécanisme qui correspond à la fermeté requise de la limite :

59 61 

60| Limite | Mécanisme | Comportement en mode auto |62| Limite | Mécanisme | Comportement en mode auto |

61| :----------------------------------- | :--------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |63| :----------------------------------- | :--------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

62| Inviter avant l'action | `permissions.ask` | Invite toujours pour les règles délimitées par le contenu comme la recette ci-dessus. Le classificateur ne peut pas approuver automatiquement une action correspondante. |64| Inviter avant l'action | `permissions.ask` | Invite toujours pour une commande qui correspond à une règle délimitée par le contenu comme la recette ci-dessus. Le classificateur ne peut pas approuver automatiquement une action correspondante. |

63| Ne jamais exécuter l'action | `permissions.deny` | Bloque avant que le classificateur ne soit consulté. Ni le classificateur ni l'intention de l'utilisateur ne peuvent le contourner. |65| Ne jamais exécuter l'action | `permissions.deny` | Bloque avant que le classificateur ne soit consulté. Ni le classificateur ni l'intention de l'utilisateur ne peuvent le contourner. |

64| Limite ponctuelle pour cette session | Énoncez-la dans la conversation, comme « ne pas pousser jusqu'à ce que j'examine » | Le classificateur bloque les actions correspondantes, mais la limite peut être perdue si la [compaction de contexte](/docs/fr/costs#reduce-token-usage) supprime le message qui l'a énoncée. Utilisez une règle ask ou deny pour une garantie durable. |66| Limite ponctuelle pour cette session | Énoncez-la dans la conversation, comme « ne pas pousser jusqu'à ce que j'examine » | Le classificateur bloque les actions correspondantes, mais la limite peut être perdue si la [compaction de contexte](/docs/fr/costs#reduce-token-usage) supprime le message qui l'a énoncée. Utilisez une règle ask ou deny pour une garantie durable. |

65 67 


395 397 

396Pour voir ce que le classificateur a bloqué, trouvez l'appel d'outil dans la conversation. Si l'appel apparaît raccourci ou plié dans une ligne de résumé telle que `Ran 3 shell commands`, appuyez sur `Ctrl+O` pour ouvrir le [visionneuse de transcription](/docs/fr/interactive-mode#transcript-viewer), qui l'étend.398Pour voir ce que le classificateur a bloqué, trouvez l'appel d'outil dans la conversation. Si l'appel apparaît raccourci ou plié dans une ligne de résumé telle que `Ran 3 shell commands`, appuyez sur `Ctrl+O` pour ouvrir le [visionneuse de transcription](/docs/fr/interactive-mode#transcript-viewer), qui l'étend.

397 399 

398Deux autres endroits à l'écran qui signalent les refus omettent la commande ou l'URL : l'avis près de la zone de saisie, tel que `bash denied by auto mode · Blocked by classifier · /permissions`, indique l'outil et la raison, et l'onglet **Recently denied** répertorie une commande shell par la description que Claude a écrite pour elle. Pour capturer l'entrée exacte de ces refus par programmation, ajoutez un [`PermissionDenied` hook](/docs/fr/hooks#permissiondenied), qui la reçoit en tant que `tool_input`.400Deux autres endroits à l'écran qui signalent les refus omettent la commande ou l'URL : l'avis près de la zone de saisie, tel que `bash denied by auto mode · [Data Exfiltration] · /permissions`, indique l'outil et la raison, et l'onglet **Recently denied** répertorie une commande shell par la description que Claude a écrite pour elle. Pour capturer l'entrée exacte de ces refus par programmation, ajoutez un [`PermissionDenied` hook](/docs/fr/hooks#permissiondenied), qui la reçoit en tant que `tool_input`.

399 401 

400Le texte sous l'appel vous indique s'il y a quelque chose à corriger. Le texte qui signale un problème avec le classificateur lui-même, tel qu'un modèle qui `is temporarily unavailable` ou une erreur du classificateur, signifie que Claude Code a bloqué l'appel sans verdict final du classificateur ; consultez [Auto mode cannot determine the safety of an action](/docs/fr/errors#auto-mode-cannot-determine-the-safety-of-an-action) pour savoir quoi faire. Sinon, une ligne lisant `Denied by auto mode classifier` avec une raison telle que `Blocked by classifier` signifie que le classificateur a jugé l'appel non sécurisé, alors choisissez la correction parmi ce que l'appel tentait d'atteindre ou de faire :402Le texte sous l'appel vous indique s'il y a quelque chose à corriger. Le texte qui signale un problème avec le classificateur lui-même, tel qu'un modèle qui `is temporarily unavailable` ou une erreur du classificateur, signifie que Claude Code a bloqué l'appel sans verdict final du classificateur ; consultez [Auto mode cannot determine the safety of an action](/docs/fr/errors#auto-mode-cannot-determine-the-safety-of-an-action) pour savoir quoi faire. Sinon, une ligne lisant `Denied by auto mode classifier` avec une raison telle que `[Production Deploy]` ou `Blocked by classifier` signifie que le classificateur a jugé l'appel non sécurisé, alors choisissez la correction parmi ce que l'appel tentait d'atteindre ou de faire :

401 403 

402* Une destination dont Claude a besoin tout au long de la tâche, telle qu'un registre de paquets, un domaine interne ou un hôte de référentiel : ajoutez-la à `autoMode.environment`.404* Une destination dont Claude a besoin tout au long de la tâche, telle qu'un registre de paquets, un domaine interne ou un hôte de référentiel : ajoutez-la à `autoMode.environment`.

403* Une commande que vous souhaitez exécuter sans révision à partir de maintenant : ajoutez une règle `allow`.405* Une commande que vous souhaitez exécuter sans révision à partir de maintenant : ajoutez une règle `allow`.


405 407 

406Vous pouvez ajouter l'entrée d'environnement ou la règle `allow` à partir de l'onglet [**Auto mode** de la boîte de dialogue `/permissions`](#edit-rules-from-permissions).408Vous pouvez ajouter l'entrée d'environnement ou la règle `allow` à partir de l'onglet [**Auto mode** de la boîte de dialogue `/permissions`](#edit-rules-from-permissions).

407 409 

408La raison affichée avec l'appel est le texte fixe `Blocked by classifier` dans la plupart des sessions, dans Claude Code v2.1.208 et versions ultérieures : le classificateur évalue chaque action sur une échelle de gravité interne plutôt que d'écrire une explication. Certaines sessions exécutent un modèle de classificateur qui écrit une courte explication à la place, dans v2.1.193 et versions ultérieures ; lorsqu'une apparaît, traitez-la comme un indice sur la destination ou l'intention que le classificateur manquait. Claude Code sélectionne le modèle de classificateur, donc la raison que vous voyez n'est pas quelque chose que vous configurez.410Dans la plupart des sessions, le nom de la raison nomme la règle que le classificateur a mise en correspondance, entre crochets, telle que `[Data Exfiltration]` ou `[Production Deploy]`, et certaines sessions exécutent un modèle de classificateur qui ajoute une brève explication. Claude Code sélectionne le modèle de classificateur, donc la forme que vous voyez n'est pas quelque chose que vous configurez.

409 411 

410<h3 id="fix-repeated-denials">412<h3 id="fix-repeated-denials">

411 Corriger les refus répétés413 Corriger les refus répétés

channels.md +2 −2

Details

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

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

49 49 

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

51 </Step>51 </Step>

52 52 

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


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

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

127 127 

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

129 </Step>129 </Step>

130 130 

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

Details

170 170 

171 Si l'événement n'arrive pas, le diagnostic dépend de ce que `curl` a retourné :171 Si l'événement n'arrive pas, le diagnostic dépend de ce que `curl` a retourné :

172 172 

173 * **`curl` réussit mais rien n'atteint Claude** : exécutez `/mcp` dans votre session pour vérifier l'état du serveur. Un statut `failed` 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.173 * **`curl` réussit mais rien n'atteint Claude** : exécutez `/mcp` dans votre session pour vérifier l'état du serveur. Un statut `failed` signifie généralement une erreur de dépendance ou d'importation dans votre fichier serveur. Pour voir la trace stderr, redémarrez avec `claude --debug --dangerously-load-development-channels server:webhook` et vérifiez le journal de débogage à `~/.claude/debug/<session-id>.txt`.

174 * **`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.174 * **`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.

175 </Step>175 </Step>

176</Steps>176</Steps>

checkpointing.md +11 −3

Details

12 Comment fonctionne le checkpointing12 Comment fonctionne le checkpointing

13</h2>13</h2>

14 14 

15Au fur et à mesure que vous travaillez avec Claude, le checkpointing capture automatiquement l'état de votre code avant chaque invite utilisateur.15Au fur et à mesure que vous travaillez avec Claude, le checkpointing capture automatiquement l'état de votre code avant chaque invite que vous envoyez et qui démarre un tour.

16 16 

17<h3 id="automatic-tracking">17<h3 id="automatic-tracking">

18 Suivi automatique18 Suivi automatique


20 20 

21Claude Code suit toutes les modifications apportées par ses outils d'édition de fichiers :21Claude Code suit toutes les modifications apportées par ses outils d'édition de fichiers :

22 22 

23* Chaque invite utilisateur crée un nouveau checkpoint23* Chaque invite que vous envoyez et qui démarre un tour crée un nouveau checkpoint

24* Claude Code conserve des snapshots de fichiers pour les 100 checkpoints les plus récents dans une session. L'abandon d'un checkpoint plus ancien supprime les fichiers snapshot que nul autre checkpoint ne référence, sauf le premier snapshot de chaque fichier, que l'extension VS Code utilise comme référence pour les diffs de session.24* Claude Code conserve des snapshots de fichiers pour les 100 checkpoints les plus récents dans une session. L'abandon d'un checkpoint plus ancien supprime les fichiers snapshot que nul autre checkpoint ne référence, sauf le premier snapshot de chaque fichier, que l'extension VS Code utilise comme référence pour les diffs de session.

25* Claude Code enregistre les checkpoints avec la conversation, donc vous pouvez toujours exécuter `/rewind` après avoir repris une session25* Claude Code enregistre les checkpoints avec la conversation, donc vous pouvez toujours exécuter `/rewind` après avoir repris une session

26* Claude Code supprime les snapshots de fichiers d'une session lors du [nettoyage de rétention](/docs/fr/claude-directory#cleaned-up-automatically), par défaut environ 30 jours après le dernier enregistrement de la session. Le rembobinage vers un checkpoint dont les snapshots ont disparu peut échouer avec [`No files were restored`](/docs/fr/errors#no-files-were-restored). Pour conserver les snapshots plus longtemps, définissez [`cleanupPeriodDays`](/docs/fr/settings-reference#cleanupperioddays).26* Claude Code supprime les snapshots de fichiers d'une session lors du [nettoyage de rétention](/docs/fr/claude-directory#cleaned-up-automatically), par défaut environ 30 jours après le dernier enregistrement de la session. Le rembobinage vers un checkpoint dont les snapshots ont disparu peut échouer avec [`No files were restored`](/docs/fr/errors#no-files-were-restored). Pour conserver les snapshots plus longtemps, définissez [`cleanupPeriodDays`](/docs/fr/settings-reference#cleanupperioddays).


35 Si le champ de saisie d'invite contient du texte, double `Esc` l'efface à la place d'ouvrir le menu. Le texte effacé est enregistré dans votre historique de saisie, appuyez donc sur `Haut` pour le rappeler après avoir terminé dans le menu de rembobinage.35 Si le champ de saisie d'invite contient du texte, double `Esc` l'efface à la place d'ouvrir le menu. Le texte effacé est enregistré dans votre historique de saisie, appuyez donc sur `Haut` pour le rappeler après avoir terminé dans le menu de rembobinage.

36</Note>36</Note>

37 37 

38Le menu de rembobinage répertorie chaque invite que vous avez envoyée pendant la session. Sélectionnez le point sur lequel vous souhaitez agir, puis choisissez une action :38Le menu de rembobinage répertorie chaque invite que vous avez envoyée pendant la session, sauf les [messages qui ont rejoint un tour en cours](#messages-sent-mid-turn-not-checkpointed). Sélectionnez le point sur lequel vous souhaitez agir, puis choisissez une action :

39 39 

40* **Restaurer le code et la conversation** : revenir au code et à la conversation à ce moment40* **Restaurer le code et la conversation** : revenir au code et à la conversation à ce moment

41* **Restaurer la conversation** : rembobiner jusqu'à ce message tout en conservant le code actuel41* **Restaurer la conversation** : rembobiner jusqu'à ce message tout en conservant le code actuel


110 110 

111Le 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.111Le 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.

112 112 

113<h3 id="messages-sent-mid-turn-not-checkpointed">

114 Les messages envoyés en cours de tour ne sont pas checkpointés

115</h3>

116 

117Lorsqu'un message que vous [mettez en file d'attente pendant que Claude travaille](/docs/fr/interactive-mode#queue-messages-while-claude-works) atteint Claude au cours du tour en cours, il rejoint ce tour au lieu de commencer un nouveau. Le message apparaît dans la conversation, mais Claude Code ne crée pas de checkpoint pour lui, et le menu de rembobinage ne le répertorie pas. Un message en file d'attente que Claude Code envoie comme son propre tour reçoit un checkpoint comme d'habitude.

118 

119Pour supprimer un tel message, ou annuler les modifications que Claude a apportées après son arrivée, rembobinez jusqu'à l'invite qui a démarré le tour. Cela rembobine le tour entier, y compris le travail que Claude a effectué avant l'arrivée de votre message.

120 

113<h3 id="symlinked-and-hard-linked-paths-not-restored">121<h3 id="symlinked-and-hard-linked-paths-not-restored">

114 Les chemins symlinked et hard-linked ne sont pas restaurés122 Les chemins symlinked et hard-linked ne sont pas restaurés

115</h3>123</h3>

Details

135 Cette configuration est suffisante pour une boucle de connexion fonctionnelle avec le catalogue de modèles Bedrock par défaut. Une fois qu'elle s'exécute, ajoutez RBAC par groupe et paramètres gérés via [`managed.policies`](/docs/fr/claude-apps-gateway-config#managed), fan-out de télémétrie via [`telemetry`](/docs/fr/claude-apps-gateway-config#telemetry), et basculement multi-amont, ARNs de débit provisionné, ou régions non-US via [`models`](/docs/fr/claude-apps-gateway-config#models).135 Cette configuration est suffisante pour une boucle de connexion fonctionnelle avec le catalogue de modèles Bedrock par défaut. Une fois qu'elle s'exécute, ajoutez RBAC par groupe et paramètres gérés via [`managed.policies`](/docs/fr/claude-apps-gateway-config#managed), fan-out de télémétrie via [`telemetry`](/docs/fr/claude-apps-gateway-config#telemetry), et basculement multi-amont, ARNs de débit provisionné, ou régions non-US via [`models`](/docs/fr/claude-apps-gateway-config#models).

136 136 

137 <Note>137 <Note>

138 L'amont Amazon Bedrock a besoin d'un principal AWS avec `bedrock:InvokeModel` et `bedrock:InvokeModelWithResponseStream` sur les ARNs `inference-profile/us.anthropic.*` et les ARNs `foundation-model/anthropic.*` sous-jacents, et le formulaire d'utilisation unique d'Anthropic soumis pour le compte à partir du catalogue de modèles de la console Bedrock. Fournissez l'identifiant avec IRSA sur EKS, un rôle de tâche ECS, ou un profil d'instance EC2 plutôt que des clés statiques. La [référence `upstreams`](/docs/fr/claude-apps-gateway-config#upstreams) a les détails IAM complets, la matrice de credentials inter-cloud, et les blocs `auth` pour les autres fournisseurs.138 L'amont Amazon Bedrock a besoin d'un principal AWS avec `bedrock:InvokeModel` et `bedrock:InvokeModelWithResponseStream` sur les ARNs `inference-profile/us.anthropic.*` et les ARNs `foundation-model/anthropic.*` sous-jacents. Il a également besoin du formulaire d'utilisation unique d'Anthropic soumis pour le compte à partir du catalogue de modèles de la console Bedrock.

139 

140 Fournissez l'identifiant avec IRSA sur EKS, un rôle de tâche ECS, ou un profil d'instance EC2 plutôt que des clés statiques. La [référence `upstreams`](/docs/fr/claude-apps-gateway-config#upstreams) a les détails IAM complets, la matrice de credentials inter-cloud, et les blocs `auth` pour les autres fournisseurs.

139 </Note>141 </Note>

140 </Step>142 </Step>

141 143 


259 261 

260Les développeurs se connectent à partir de leurs propres ordinateurs portables avec une seule connexion au navigateur, en utilisant leur compte professionnel d'entreprise. Ils n'ont pas besoin d'un compte claude.ai, d'une clé API ou d'un abonnement, car les demandes au modèle passent par la passerelle en utilisant l'identifiant en amont de l'organisation. La connexion est pilotée par les [paramètres gérés côté client](/docs/fr/claude-apps-gateway-config#client-side-managed-settings) que vous poussez via MDM, il n'y a donc pas de configuration manuelle du côté du développeur ; cette section couvre ce que l'administrateur configure.262Les développeurs se connectent à partir de leurs propres ordinateurs portables avec une seule connexion au navigateur, en utilisant leur compte professionnel d'entreprise. Ils n'ont pas besoin d'un compte claude.ai, d'une clé API ou d'un abonnement, car les demandes au modèle passent par la passerelle en utilisant l'identifiant en amont de l'organisation. La connexion est pilotée par les [paramètres gérés côté client](/docs/fr/claude-apps-gateway-config#client-side-managed-settings) que vous poussez via MDM, il n'y a donc pas de configuration manuelle du côté du développeur ; cette section couvre ce que l'administrateur configure.

261 263 

262L'interface de ligne de commande empreinte le certificat feuille TLS de la passerelle à la première connexion et l'épingle par nom d'hôte. Publiez l'empreinte SHA-256 attendue aux côtés de l'URL de la passerelle pour que les développeurs aient quelque chose à comparer. L'invite `/login` affiche les 16 premiers caractères de l'empreinte en hexadécimal minuscule sans deux-points. Pour imprimer l'empreinte complète sous cette forme à partir du fichier de certificat, exécutez :264L'interface de ligne de commande empreinte le certificat feuille TLS de la passerelle à la première connexion et l'épingle par nom d'hôte. Elle vérifie cette épingle à nouveau lors de la connexion, lors des rafraîchissements de session silencieux et lors des récupérations de paramètres gérés, tandis que les demandes d'inférence utilisent la validation TLS standard sans l'épingle. Les demandes acheminées via un proxy HTTPS ignorent la vérification de l'épingle, donc ajoutez l'hôte de la passerelle à `NO_PROXY` pour les garder directes.

265 

266Publiez l'empreinte SHA-256 attendue aux côtés de l'URL de la passerelle pour que les développeurs aient quelque chose à comparer. L'invite `/login` affiche les 16 premiers caractères de l'empreinte en hexadécimal minuscule sans deux-points. Pour imprimer l'empreinte complète sous cette forme à partir du fichier de certificat, exécutez :

263 267 

264```bash theme={null}268```bash theme={null}

265openssl x509 -noout -fingerprint -sha256 -in cert.pem | cut -d= -f2 | tr -d : | tr 'A-F' 'a-f'269openssl x509 -noout -fingerprint -sha256 -in cert.pem | cut -d= -f2 | tr -d : | tr 'A-F' 'a-f'


267 271 

268Quand le certificat tourne, chaque développeur voit à nouveau l'invite de confiance, traitez donc les rotations comme un événement planifié et republier l'empreinte. Si votre politique de passerelle inclut [des paramètres qui nécessitent une approbation](/docs/fr/server-managed-settings#security-approval-dialogs), le développeur voit également ce dialogue d'approbation à nouveau après avoir accepté le nouveau certificat, car Claude Code associe la [mémoire d'approbation](/docs/fr/server-managed-settings#approval-memory) au certificat épinglé.272Quand le certificat tourne, chaque développeur voit à nouveau l'invite de confiance, traitez donc les rotations comme un événement planifié et republier l'empreinte. Si votre politique de passerelle inclut [des paramètres qui nécessitent une approbation](/docs/fr/server-managed-settings#security-approval-dialogs), le développeur voit également ce dialogue d'approbation à nouveau après avoir accepté le nouveau certificat, car Claude Code associe la [mémoire d'approbation](/docs/fr/server-managed-settings#approval-memory) au certificat épinglé.

269 273 

270Une fois connecté, le [sélecteur de modèle](/docs/fr/model-config) affiche les modèles dans la liste d'autorisation `availableModels` du développeur, les paramètres gérés s'appliquent au démarrage et se rafraîchissent toutes les heures, et la télémétrie s'achemine vers votre collecteur. Les sessions se rafraîchissent silencieusement avant l'expiration de `ttl_hours`, et un rafraîchissement échoué après le déprovisionnement IdP invite à une reconnexion.274Une fois le développeur connecté, le [sélecteur de modèle](/docs/fr/model-config) affiche les modèles dans la liste d'autorisation `availableModels` du développeur. Les paramètres gérés s'appliquent au démarrage et se rafraîchissent toutes les heures, et la télémétrie s'achemine vers votre collecteur.

275 

276Les sessions se rafraîchissent silencieusement avant l'expiration de `ttl_hours`. Quand un rafraîchissement échoue après le déprovisionnement IdP, Claude Code invite le développeur à se reconnecter.

271 277 

272<h3 id="set-the-gateway-url">278<h3 id="set-the-gateway-url">

273 Définir l'URL de la passerelle279 Définir l'URL de la passerelle


283}289}

284```290```

285 291 

286Le développeur appuie sur Entrée pour se connecter. L'invite d'empreinte TLS de [première connexion](#connect-developers) apparaît toujours.292Le développeur appuie sur Entrée pour se connecter. L'invite d'empreinte TLS de [première connexion](#connect-developers) apparaît toujours. Une fois le fichier sur une machine, un développeur qui n'a pas complété la connexion à la passerelle voit l'un des messages décrits sous [La politique d'administrateur nécessite une connexion Cloud gateway](/docs/fr/errors#administrator-policy-requires-a-cloud-gateway-sign-in). Les développeurs qui sélectionnent un fournisseur cloud via une variable d'environnement telle que `CLAUDE_CODE_USE_BEDROCK` n'ont pas besoin de la connexion à la passerelle.

287 293 

288Un développeur ne peut pas configurer cela manuellement. Le sélecteur de connexion n'a pas d'option de passerelle, et `forceLoginGatewayUrl` est ignoré dans les fichiers de paramètres propres d'un développeur. `forceLoginMethod` seul, sans URL, laisse le développeur à un message « Contactez votre administrateur informatique ». Les clés de connexion appartiennent au fichier que vous poussez vers les machines, pas au bloc `managed.policies[].cli` de la passerelle, qui ne atteint que les clients déjà connectés.294Un développeur ne peut pas configurer cela manuellement. Le sélecteur de connexion n'a pas d'option de passerelle, et `forceLoginGatewayUrl` est ignoré dans les fichiers de paramètres propres d'un développeur. `forceLoginMethod` seul, sans URL, laisse le développeur à un message « Contactez votre administrateur informatique ». Les clés de connexion appartiennent au fichier que vous poussez vers les machines, pas au bloc `managed.policies[].cli` de la passerelle, qui ne atteint que les clients déjà connectés.

289 295 


419Ces garanties s'appliquent à chaque session connectée via `/login`. Les sessions intégrées que Claude Desktop lance obtiennent leur politique comme décrit dans [Livrer la politique à Claude Desktop sessions](#deliver-policy-to-claude-desktop-sessions), et la puce de télémétrie dit où vont leurs exports.425Ces garanties s'appliquent à chaque session connectée via `/login`. Les sessions intégrées que Claude Desktop lance obtiennent leur politique comme décrit dans [Livrer la politique à Claude Desktop sessions](#deliver-policy-to-claude-desktop-sessions), et la puce de télémétrie dit où vont leurs exports.

420 426 

421* **Accès au modèle** : les demandes pour les modèles que la politique n'accorde pas retournent 400, et le sélecteur `/model` est filtré à la liste d'autorisation `availableModels` de la politique. Définissez [`enforceAvailableModels: true`](/docs/fr/model-config#default-model-behavior) dans la politique pour que l'option Par défaut se résolve à un modèle à l'intérieur de `availableModels` au lieu du défaut intégré de Claude Code ; sans cela, Par défaut reste sélectionnable et est rejeté au moment de la demande si ce modèle n'est pas accordé.427* **Accès au modèle** : les demandes pour les modèles que la politique n'accorde pas retournent 400, et le sélecteur `/model` est filtré à la liste d'autorisation `availableModels` de la politique. Définissez [`enforceAvailableModels: true`](/docs/fr/model-config#default-model-behavior) dans la politique pour que l'option Par défaut se résolve à un modèle à l'intérieur de `availableModels` au lieu du défaut intégré de Claude Code ; sans cela, Par défaut reste sélectionnable et est rejeté au moment de la demande si ce modèle n'est pas accordé.

422* **Destination de télémétrie** : dans les sessions connectées via `/login`, l'interface de ligne de commande envoie ses exports OTLP/HTTP à la passerelle indépendamment de tout `OTEL_EXPORTER_OTLP_ENDPOINT` défini localement, et la passerelle les relaie vers les destinations dans [`telemetry.forward_to`](/docs/fr/claude-apps-gateway-config#telemetry). Dans les sessions intégrées que [Claude Desktop lance](#connect-claude-desktop), l'interface de ligne de commande envoie ses exports au `OTEL_EXPORTER_OTLP_ENDPOINT` configuré. L'interface de ligne de commande attache le jeton de session de passerelle à ces exports uniquement quand ce point de terminaison pointe vers la passerelle elle-même. Sans destination configurée pour un signal, la passerelle l'accepte et le rejette, donc si vous collectez déjà la télémétrie Claude Code directement, ajoutez votre collecteur comme destination `forward_to`.428* **Destination de télémétrie** : dans les sessions connectées via `/login`, l'interface de ligne de commande envoie ses exports OTLP/HTTP à la passerelle plutôt qu'à un `OTEL_EXPORTER_OTLP_ENDPOINT` défini localement, sauf si une politique [nomme votre collecteur comme point de terminaison](/docs/fr/claude-apps-gateway-config#export-directly-to-your-collector). La passerelle relaie les exports qu'elle reçoit vers les destinations dans [`telemetry.forward_to`](/docs/fr/claude-apps-gateway-config#telemetry).

423* **Identifiants** : le jeton de passerelle est le seul identifiant de la session. `ANTHROPIC_AUTH_TOKEN`, `ANTHROPIC_API_KEY`, `apiKeyHelper`, [les profils Anthropic](/docs/fr/authentication#anthropic-profiles-and-federation-credentials), et toute connexion claude.ai antérieure sont ignorés lors de la connexion, donc les développeurs n'ont pas besoin de se déconnecter de claude.ai d'abord.429 * Dans les sessions intégrées que [Claude Desktop lance](#connect-claude-desktop), l'interface de ligne de commande envoie ses exports au `OTEL_EXPORTER_OTLP_ENDPOINT` configuré. L'interface de ligne de commande attache le jeton de session de passerelle à ces exports uniquement quand ce point de terminaison pointe vers la passerelle elle-même.

430 * Sans destination configurée pour un signal, la passerelle l'accepte et le rejette.

431 * Si vous collectez déjà la télémétrie Claude Code directement, ajoutez votre collecteur comme destination `forward_to`, ou nommez-le dans une politique pour ignorer le relais.

432* **Identifiants** : le jeton de passerelle est le seul identifiant de la session. [Les profils Anthropic](/docs/fr/authentication#anthropic-profiles-and-federation-credentials) et toute connexion claude.ai antérieure sont ignorés lors de la connexion, donc les développeurs n'ont pas besoin de se déconnecter de claude.ai d'abord. Pour un identifiant `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, ou `apiKeyHelper` configuré, voir [La politique d'administrateur nécessite une connexion Cloud gateway](/docs/fr/errors#administrator-policy-requires-a-cloud-gateway-sign-in).

424* **Paramètres gérés** : les clés verrouillées ne peuvent pas être remplacées localement. L'interface de ligne de commande applique la politique au démarrage et applique les modifications à chaque sondage horaire, à part les [modifications qui s'appliquent uniquement au prochain lancement](/docs/fr/server-managed-settings#fetch-and-caching-behavior).433* **Paramètres gérés** : les clés verrouillées ne peuvent pas être remplacées localement. L'interface de ligne de commande applique la politique au démarrage et applique les modifications à chaque sondage horaire, à part les [modifications qui s'appliquent uniquement au prochain lancement](/docs/fr/server-managed-settings#fetch-and-caching-behavior).

425* **Démarrage** : les sessions connectées se terminent au démarrage avec une erreur après environ 10 secondes quand la passerelle est inaccessible, plutôt que de démarrer sans leurs paramètres.434* **Démarrage avec la passerelle inaccessible** : les sessions connectées se terminent au démarrage avec une erreur après environ 10 secondes plutôt que de démarrer sans leurs paramètres.

435* **Démarrage après que la passerelle termine la session** : voir [Appliquer un démarrage fail-closed](/docs/fr/server-managed-settings#enforce-fail-closed-startup) pour les lancements qui s'ouvrent déconnectés de la passerelle et ceux qui se terminent quand la passerelle répond avec un `401`.

426* **Déprovisionnement** : une session dont l'utilisateur est désactivé dans l'IdP expire dans `ttl_hours` quand le prochain rafraîchissement échoue.436* **Déprovisionnement** : une session dont l'utilisateur est désactivé dans l'IdP expire dans `ttl_hours` quand le prochain rafraîchissement échoue.

427 437 

428<h3 id="what-the-organization-can-see">438<h3 id="what-the-organization-can-see">


449| Limites de dépenses par utilisateur et par groupe | Disponible | Voir [Limites de dépenses](/docs/fr/claude-apps-gateway-spend-limits) |459| Limites de dépenses par utilisateur et par groupe | Disponible | Voir [Limites de dépenses](/docs/fr/claude-apps-gateway-spend-limits) |

450| Recherche web côté serveur | Non disponible | L'interface de ligne de commande ne peut pas voir quel fournisseur en amont la passerelle achemine vers, donc elle ne peut pas vérifier le support de la recherche web et désactive WebSearch sur les sessions de passerelle |460| Recherche web côté serveur | Non disponible | L'interface de ligne de commande ne peut pas voir quel fournisseur en amont la passerelle achemine vers, donc elle ne peut pas vérifier le support de la recherche web et désactive WebSearch sur les sessions de passerelle |

451| [Contrôle à distance](/docs/fr/remote-control) | Non disponible | L'interface de ligne de commande affiche [une erreur nommant la passerelle](/docs/fr/errors#remote-control-requires-the-anthropic-api) |461| [Contrôle à distance](/docs/fr/remote-control) | Non disponible | L'interface de ligne de commande affiche [une erreur nommant la passerelle](/docs/fr/errors#remote-control-requires-the-anthropic-api) |

452| Mise en cache des invites standard | Disponible | La passerelle transfère les points d'arrêt `cache_control` à chaque amont, et l'interface de ligne de commande marque le [contexte système qu'elle ajoute en milieu de conversation](/docs/fr/prompt-caching#where-the-cache-lives) pour la mise en cache sur les sessions de passerelle, comme elle le fait sur tous les autres fournisseurs et connexions. |462| [`/design-sync`](/docs/fr/commands#all-commands) et `/design-login` | Non disponible | Les deux ont besoin de claude.ai, que l'interface de ligne de commande ne contacte pas sur les sessions de passerelle, donc aucune des deux commandes n'y apparaît |

463| Fonctionnalités qui nécessitent la récupération de drapeaux de fonctionnalité, comme `/import` et `claude import` | Non disponible | L'interface de ligne de commande ignore la récupération de drapeau sur les sessions de passerelle. [Les fonctionnalités qui nécessitent la récupération de drapeaux de fonctionnalité](/docs/fr/env-vars#features-that-need-feature-flag-fetching) énumère ce que cela désactive |

464| Mise en cache des invites standard | Disponible | La passerelle transfère les points d'arrêt `cache_control` à chaque amont. [Où le cache réside](/docs/fr/prompt-caching#where-the-cache-lives) couvre les blocs que l'interface de ligne de commande marque, y compris le contexte système qu'elle ajoute en milieu de conversation |

453| TTL de cache d'1 heure | Non disponible | L'interface de ligne de commande omet la bêta extended-cache-ttl sur les sessions de passerelle, car pas tous les ammonts vers lesquels la passerelle peut acheminer supportent le TTL d'1 heure, donc la mise en cache des invites via la passerelle utilise le TTL de 5 minutes ; voir la note sur l'en-tête bêta ci-dessus |465| TTL de cache d'1 heure | Non disponible | L'interface de ligne de commande omet la bêta extended-cache-ttl sur les sessions de passerelle, car pas tous les ammonts vers lesquels la passerelle peut acheminer supportent le TTL d'1 heure, donc la mise en cache des invites via la passerelle utilise le TTL de 5 minutes ; voir la note sur l'en-tête bêta ci-dessus |

454| Mode Auto | Disponible | Suit les [règles du fournisseur tiers](/docs/fr/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry) : seuls les modèles éligibles sur les fournisseurs tiers peuvent l'utiliser. Avant v2.1.207, le mode auto sur les sessions de passerelle nécessitait de définir `CLAUDE_CODE_ENABLE_AUTO_MODE=1`, livrable via le bloc `env` de la politique gérée |466| Mode Auto | Disponible | Suit les [règles du fournisseur tiers](/docs/fr/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry) : seuls les modèles éligibles sur les fournisseurs tiers peuvent l'utiliser. Avant v2.1.207, le mode auto sur les sessions de passerelle nécessitait de définir `CLAUDE_CODE_ENABLE_AUTO_MODE=1`, livrable via le bloc `env` de la politique gérée |

455| Optimisations propriétaires uniquement comme la portée du cache global et les outils efficaces en jetons | Non disponible | L'interface de ligne de commande ne les active pas sur les sessions de passerelle ; voir la note sur l'en-tête bêta ci-dessus |467| Optimisations propriétaires uniquement comme la portée du cache global et les outils efficaces en jetons | Non disponible | L'interface de ligne de commande ne les active pas sur les sessions de passerelle ; voir la note sur l'en-tête bêta ci-dessus |

Details

62 62 

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

64 64 

65Ne redirigez pas les demandes vers les points de terminaison d'autorisation d'appareil et de jeton de la passerelle, par exemple avec une réécriture HTTP-vers-HTTPS ou de canonicalisation d'hôte à l'entrée. Claude Code ne suit pas les redirections sur ces demandes, donc une règle d'entrée qui les redirige casse la connexion et l'actualisation des jetons.

66 

65Donnez au proxy un délai d'inactivité plus long que l'intervalle de maintien de la connexion de la passerelle, qui dépend de l'amont :67Donnez au proxy un délai d'inactivité plus long que l'intervalle de maintien de la connexion de la passerelle, qui dépend de l'amont :

66 68 

67* Sur chaque amont sauf `provider: anthropic`, la passerelle écrit un `ping` SSE une fois qu'un flux a été silencieux pendant environ 15 secondes.69* Sur chaque amont sauf `provider: anthropic`, la passerelle écrit un `ping` SSE une fois qu'un flux a été silencieux pendant environ 15 secondes.


118 Envoyer l'URL de la passerelle aux machines des développeurs120 Envoyer l'URL de la passerelle aux machines des développeurs

119</h3>121</h3>

120 122 

121Une fois que la passerelle est en service, envoyez `forceLoginMethod`, `forceLoginGatewayUrl` et `parentSettingsBehavior: "merge"` à la machine de chaque développeur via les paramètres gérés, via MDM ou en écrivant directement le fichier `managed-settings.json` par système d'exploitation. Sans cela, `/login` affiche le sélecteur de compte standard sans option de passerelle. Consultez [Paramètres gérés côté client](/docs/fr/claude-apps-gateway-config#client-side-managed-settings) pour les chemins de fichiers et l'équivalent `bootstrapUrl` de Claude Desktop.123Une fois que la passerelle est en service, envoyez `forceLoginMethod`, `forceLoginGatewayUrl` et `parentSettingsBehavior: "merge"` à la machine de chaque développeur via les paramètres gérés, via MDM ou en écrivant directement le fichier `managed-settings.json` par système d'exploitation. Sans cela, `/login` affiche le sélecteur de compte standard sans option de passerelle. Une fois que vous déployez les clés, Claude Code cesse d'utiliser une clé API restante ou une connexion claude.ai sur la machine, donc planifiez l'envoi avec vos instructions de connexion. [La politique de l'administrateur nécessite une connexion à la passerelle Cloud](/docs/fr/errors#administrator-policy-requires-a-cloud-gateway-sign-in) décrit les messages que les développeurs voient.

124 

125Consultez [où chaque mécanisme stocke la politique](/docs/fr/managed-settings#where-each-mechanism-stores-the-policy) pour les chemins de fichiers, et [Paramètres gérés côté client](/docs/fr/claude-apps-gateway-config#client-side-managed-settings) pour l'équivalent `bootstrapUrl` de Claude Desktop.

122 126 

123<h2 id="operations">127<h2 id="operations">

124 Opérations128 Opérations


134 138 

135* **Événements d'audit** : JSON sur une seule ligne par événement pertinent pour la sécurité. Canalisez stderr vers votre agrégateur de journaux. Les événements émis incluent `config.load`, `session.mint`, `session.refresh`, `device.authorize`, `device.verify`, `device.callback`, `auth.denied`, `access.denied`, `inference`, `managed.serve`, `desktop_bootstrap.serve`, `desktop_bootstrap.denied`, `spend.blocked`, `admin.denied`, `admin.limit.upsert` et `admin.limit.delete`. Les champs varient selon l'événement :139* **Événements d'audit** : JSON sur une seule ligne par événement pertinent pour la sécurité. Canalisez stderr vers votre agrégateur de journaux. Les événements émis incluent `config.load`, `session.mint`, `session.refresh`, `device.authorize`, `device.verify`, `device.callback`, `auth.denied`, `access.denied`, `inference`, `managed.serve`, `desktop_bootstrap.serve`, `desktop_bootstrap.denied`, `spend.blocked`, `admin.denied`, `admin.limit.upsert` et `admin.limit.delete`. Les champs varient selon l'événement :

136 * Les événements de mint et refresh réussis portent `sub`, `email`, `client_ip` et le résultat140 * Les événements de mint et refresh réussis portent `sub`, `email`, `client_ip` et le résultat

137 * `auth.denied` et `access.denied` portent la raison et l'adresse IP du client, plus le chemin de la demande pour `auth.denied`, car aucune identité utilisateur n'existe à ces refus141 * `auth.denied` et `access.denied` portent la raison et l'adresse IP du client, plus le chemin de la demande pour `auth.denied`, car aucune identité utilisateur n'existe à ces refus. Deux raisons `access.denied` changent ce que l'événement porte :

142 * `xff_unparseable` : l'événement porte également l'entrée `X-Forwarded-For` qui n'a pas pu être lue

143 * `client_ip_unknown` : l'événement ne porte pas d'adresse IP client, car la connexion n'avait pas d'adresse de pair tandis qu'une liste `access_control` était définie

138 * `inference` enregistre quel amont a servi la demande et le statut de la réponse144 * `inference` enregistre quel amont a servi la demande et le statut de la réponse

139 * `desktop_bootstrap.denied` enregistre une récupération de bootstrap Claude Desktop rejetée avec la raison (`not_configured`, `policy_not_opted_in` ou `no_policy_matched`) et l'identité de l'utilisateur145 * `desktop_bootstrap.denied` enregistre une récupération de bootstrap Claude Desktop rejetée avec la raison (`not_configured`, `policy_not_opted_in` ou `no_policy_matched`) et l'identité de l'utilisateur

140 * `admin.denied` enregistre une tentative d'authentification d'API admin rejetée avec l'adresse IP du client, la méthode, le chemin et une raison, sans le matériel de clé présenté : `invalid_key` quand une `x-api-key` a été présentée mais ne correspondait à aucune clé configurée, `bearer_rejected` quand seul un en-tête `Authorization` a été présenté et il n'a pas vérifié comme une session de passerelle dans `admin.admin_groups`, ou `no_credentials` quand aucun en-tête n'a été présenté146 * `admin.denied` enregistre une tentative d'authentification d'API admin rejetée avec l'adresse IP du client, la méthode, le chemin et une raison, sans le matériel de clé présenté : `invalid_key` quand une `x-api-key` a été présentée mais ne correspondait à aucune clé configurée, `bearer_rejected` quand seul un en-tête `Authorization` a été présenté et il n'a pas vérifié comme une session de passerelle dans `admin.admin_groups`, ou `no_credentials` quand aucun en-tête n'a été présenté


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

273 279 

274| Symptôme | Cause | Correctif |280| Symptôme | Cause | Correctif |

275| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |281| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

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

283| Les demandes d'un développeur échouent avec `Not signed in to the Cloud gateway — run /login.` | Les paramètres gérés de la machine définissent `forceLoginMethod: "gateway"` ou `forceLoginGatewayUrl`, et la session n'a pas de connexion à la passerelle. Une connexion claude.ai restante ne satisfait pas à l'exigence. | Demandez au développeur d'exécuter `/login` et de terminer la connexion à la passerelle. Consultez également [La politique de l'administrateur nécessite une connexion à la passerelle cloud](/docs/fr/errors#administrator-policy-requires-a-cloud-gateway-sign-in). |

277| Claude Desktop signale que sa configuration d'amorçage n'a pas pu être récupérée | `/user/bootstrap` a retourné 404 : la politique correspondant à l'utilisateur ne porte pas de clé `desktop`, ou aucune politique n'a correspondu. Le journal d'audit de la passerelle enregistre chaque rejet comme `desktop_bootstrap.denied` avec la raison. | Ajoutez un bloc `desktop` à la politique qui correspond à l'utilisateur, ou à la couche de base `match: {}` ; un `desktop: {}` vide suffit. Consultez [Superposition Claude Desktop](/docs/fr/claude-apps-gateway-config#claude-desktop-overlay). |284| Claude Desktop signale que sa configuration d'amorçage n'a pas pu être récupérée | `/user/bootstrap` a retourné 404 : la politique correspondant à l'utilisateur ne porte pas de clé `desktop`, ou aucune politique n'a correspondu. Le journal d'audit de la passerelle enregistre chaque rejet comme `desktop_bootstrap.denied` avec la raison. | Ajoutez un bloc `desktop` à la politique qui correspond à l'utilisateur, ou à la couche de base `match: {}` ; un `desktop: {}` vide suffit. Consultez [Superposition Claude Desktop](/docs/fr/claude-apps-gateway-config#claude-desktop-overlay). |

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

286| Le démarrage ou `/login` signale `Claude Code may not be enabled for your organization` après un 403 sur le chargement des paramètres gérés | La passerelle, ou quelque chose devant elle, a répondu à la demande `/managed/settings` avec 403. La propre route de paramètres de la passerelle ne répond jamais 403. Le statut provient des vérifications IP [`access_control`](/docs/fr/claude-apps-gateway-config#http-tuning) ou d'un proxy ou WAF devant la passerelle. Le journal d'audit enregistre un refus de vérification IP comme `access.denied` avec la raison. Le développeur reste connecté. | Vérifiez le journal d'audit pour `access.denied` au moment de l'échec et corrigez les listes `access_control` ou le front-end, puis demandez au développeur de redémarrer `claude` |

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

280| CLI `/login` : `Gateway login would go through proxy <proxy>, which is not on a private network` | Un `HTTPS_PROXY` ou `HTTP_PROXY` s'applique à l'hôte de la passerelle et le nom d'hôte du proxy se résout en une adresse publique. Un proxy dont l'hôte se résout uniquement en adresses privées est autorisé et ne déclenche pas cette erreur | Ajoutez l'hôte de la passerelle à `NO_PROXY` sur la machine du développeur afin que la connexion soit directe, ou utilisez un proxy dont le nom d'hôte se résout en adresses privées. Le message nomme l'entrée `NO_PROXY` exacte à ajouter |288| CLI `/login` : `Gateway login would go through proxy <proxy>, which is not on a private network` | Un `HTTPS_PROXY` ou `HTTP_PROXY` s'applique à l'hôte de la passerelle et le nom d'hôte du proxy se résout en une adresse publique. Un proxy dont l'hôte se résout uniquement en adresses privées est autorisé et ne déclenche pas cette erreur | Ajoutez l'hôte de la passerelle à `NO_PROXY` sur la machine du développeur afin que la connexion soit directe, ou utilisez un proxy dont le nom d'hôte se résout en adresses privées. Le message nomme l'entrée `NO_PROXY` exacte à ajouter |

281| CLI `/login` : `Could not resolve the configured HTTP proxy` | Le nom d'hôte dans `HTTPS_PROXY` ou `HTTP_PROXY` ne se résout pas à partir de la machine du développeur, généralement parce qu'il n'est pas connecté au réseau d'entreprise | Demandez au développeur de se connecter à votre réseau ou VPN et de réessayer, ou corrigez l'URL du proxy |289| CLI `/login` : `Could not resolve the configured HTTP proxy` | Le nom d'hôte dans `HTTPS_PROXY` ou `HTTP_PROXY` ne se résout pas à partir de la machine du développeur, généralement parce qu'il n'est pas connecté au réseau d'entreprise | Demandez au développeur de se connecter à votre réseau ou VPN et de réessayer, ou corrigez l'URL du proxy |


286| Le démarrage se termine avec une erreur de permission Postgres | Le rôle de base de données manque les droits DDL sur son schéma | Accordez au rôle `CREATE` sur le schéma de la passerelle afin qu'il puisse créer et modifier ses tables au démarrage |294| Le démarrage se termine avec une erreur de permission Postgres | Le rôle de base de données manque les droits DDL sur son schéma | Accordez au rôle `CREATE` sur le schéma de la passerelle afin qu'il puisse créer et modifier ses tables au démarrage |

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

288| Journal : `token exchange failed request_id=<id>: id_token missing email claim` | L'IdP n'inclut pas `email` dans l'id\_token par défaut. Ce refus ne se déclenche que lorsque `allowed_email_domains` est défini ; sans cela, un email manquant frappe une session sans email | Configurez l'IdP pour émettre `email` dans l'id\_token. Okta : ajoutez `email` aux revendications de jeton ID d'un serveur d'autorisation personnalisé. Entra : ajoutez `email` comme revendication optionnelle sur l'enregistrement d'application. PingFederate : activez une politique OpenID Connect qui émet `email`. Si l'IdP sert `email` à partir du point de terminaison userinfo mais ne l'inclura pas dans l'id\_token, tel que le serveur d'autorisation de l'organisation Okta, définissez `oidc.userinfo_fallback: true`. |296| Journal : `token exchange failed request_id=<id>: id_token missing email claim` | L'IdP n'inclut pas `email` dans l'id\_token par défaut. Ce refus ne se déclenche que lorsque `allowed_email_domains` est défini ; sans cela, un email manquant frappe une session sans email | Configurez l'IdP pour émettre `email` dans l'id\_token. Okta : ajoutez `email` aux revendications de jeton ID d'un serveur d'autorisation personnalisé. Entra : ajoutez `email` comme revendication optionnelle sur l'enregistrement d'application. PingFederate : activez une politique OpenID Connect qui émet `email`. Si l'IdP sert `email` à partir du point de terminaison userinfo mais ne l'inclura pas dans l'id\_token, tel que le serveur d'autorisation de l'organisation Okta, définissez `oidc.userinfo_fallback: true`. |

297| Journal : `refresh failed request_id=<id>: invalid_token (…) (at userinfo_no_id_token, …)`, et les développeurs voient `Cloud gateway session expired` tous les `session.ttl_hours` | L'IdP a accepté le jeton d'actualisation mais n'a retourné aucun id\_token avec lui, donc la passerelle a demandé au point de terminaison userinfo de l'IdP les revendications de l'utilisateur. L'IdP a rejeté le jeton d'accès actualisé là. La passerelle répond `temporarily_unavailable`, donc Claude Code conserve le jeton d'actualisation mais ne peut pas renouveler la session. Les versions de passerelle antérieures à v2.1.260 enregistrent la même ligne sans le détail `(at …)`. | Définissez [`oidc.scope_on_refresh: true`](/docs/fr/claude-apps-gateway-config#oidc), disponible dans la passerelle v2.1.260 ou ultérieure, afin que la demande d'actualisation demande `openid` à nouveau. Certains IdP, tels que Okta, retournent un id\_token lors de l'actualisation uniquement lorsqu'on le demande. Sur PingFederate, activez **Return ID Token On Refresh Grant** sous **Applications > OAuth > OpenID Connect Policy Management** à la place. La clé ne change pas le comportement de PingFederate. Pour les autres IdP qui l'omettent toujours, vérifiez si le point de terminaison userinfo accepte les jetons d'accès émis par une actualisation. En tant que solution temporaire, augmentez [`session.ttl_hours`](/docs/fr/claude-apps-gateway-config#session). Consultez [Configuration du fournisseur d'identité](#identity-provider-setup) pour le compromis de déprovisionnement. |

289| Chaque demande Amazon Bedrock retourne 502 ; le journal affiche `Could not load credentials from any providers` | Sur EC2, la limite de saut par défaut d'IMDSv2 de 1 bloque la demande de métadonnées d'instance de l'intérieur du conteneur. Le démarrage et `/readyz` passent de toute façon car le SDK AWS résout les credentials d'instance à la première demande, pas à la construction du client | Augmentez la limite de saut avec `aws ec2 modify-instance-metadata-options --instance-id <id> --http-put-response-hop-limit 2`, ou définissez-la dans le modèle de lancement. Le changement s'applique à chaque conteneur sur l'instance. Préférez les rôles de tâche ECS où disponibles, qui lisent les credentials à partir du point de terminaison des credentials du conteneur ECS et évitent complètement le changement, ou appliquez le changement sur une instance de passerelle dédiée pour limiter l'exposition. |298| Chaque demande Amazon Bedrock retourne 502 ; le journal affiche `Could not load credentials from any providers` | Sur EC2, la limite de saut par défaut d'IMDSv2 de 1 bloque la demande de métadonnées d'instance de l'intérieur du conteneur. Le démarrage et `/readyz` passent de toute façon car le SDK AWS résout les credentials d'instance à la première demande, pas à la construction du client | Augmentez la limite de saut avec `aws ec2 modify-instance-metadata-options --instance-id <id> --http-put-response-hop-limit 2`, ou définissez-la dans le modèle de lancement. Le changement s'applique à chaque conteneur sur l'instance. Préférez les rôles de tâche ECS où disponibles, qui lisent les credentials à partir du point de terminaison des credentials du conteneur ECS et évitent complètement le changement, ou appliquez le changement sur une instance de passerelle dédiée pour limiter l'exposition. |

290| Erreur IdP : portée inconnue ou non supportée | L'IdP rejette les portées qu'il ne reconnaît pas | Définissez `oidc.scopes` exactement à la liste que votre IdP accepte ; elle doit inclure `openid`. La valeur par défaut est `openid profile email offline_access`. |299| Erreur IdP : portée inconnue ou non supportée | L'IdP rejette les portées qu'il ne reconnaît pas | Définissez `oidc.scopes` exactement à la liste que votre IdP accepte ; elle doit inclure `openid`. La valeur par défaut est `openid profile email offline_access`. |

291| Les sessions ne se renouvellent pas silencieusement après la définition de `oidc.scopes` | `offline_access` a été supprimé de l'override | Rajoutez `offline_access` si votre IdP le supporte. Sans jeton d'actualisation, les développeurs réexécutent la connexion au navigateur tous les `session.ttl_hours`. |300| Les sessions ne se renouvellent pas silencieusement après la définition de `oidc.scopes` | `offline_access` a été supprimé de l'override | Rajoutez `offline_access` si votre IdP le supporte. Sans jeton d'actualisation, les développeurs réexécutent la connexion au navigateur tous les `session.ttl_hours`. |


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

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

298| CLI `/login` se termine la connexion au navigateur, puis la session se termine avec `Cloud gateway sign-in was not completed` et une incompatibilité de certificat TLS | À la première demande après la connexion, la passerelle a présenté un certificat qui ne correspond pas à l'empreinte que Claude Code a épinglée, donc Claude Code n'a conservé aucune credential de passerelle. Les causes habituelles sont les répliques derrière une adresse qui servent des certificats différents, ou quelque chose sur le chemin réseau qui intercepte TLS. | Servez un certificat pour le nom d'hôte, par exemple en terminant TLS une fois à l'ingress, puis demandez au développeur d'exécuter `/login` à nouveau. Si ce certificat diffère de celui épinglé, Claude Code affiche l'[invite de confiance](/docs/fr/claude-apps-gateway#connect-developers) à nouveau avec un avertissement que le certificat a changé. |307| CLI `/login` se termine la connexion au navigateur, puis la session se termine avec `Cloud gateway sign-in was not completed` et une incompatibilité de certificat TLS | À la première demande après la connexion, la passerelle a présenté un certificat qui ne correspond pas à l'empreinte que Claude Code a épinglée, donc Claude Code n'a conservé aucune credential de passerelle. Les causes habituelles sont les répliques derrière une adresse qui servent des certificats différents, ou quelque chose sur le chemin réseau qui intercepte TLS. | Servez un certificat pour le nom d'hôte, par exemple en terminant TLS une fois à l'ingress, puis demandez au développeur d'exécuter `/login` à nouveau. Si ce certificat diffère de celui épinglé, Claude Code affiche l'[invite de confiance](/docs/fr/claude-apps-gateway#connect-developers) à nouveau avec un avertissement que le certificat a changé. |

308| CLI `/login` s'arrête avec `The gateway's TLS certificate changed during sign-in: it no longer matches the one you trusted` | Une demande de connexion a atteint un serveur dont le certificat ne correspond pas à celui que le développeur a accepté au démarrage de `/login` : répliques derrière une adresse servant des certificats différents, interception TLS sur le chemin, ou une rotation de certificat pendant que la connexion était en cours. | Servez un certificat pour le nom d'hôte, puis demandez au développeur de recommencer la connexion et d'examiner le nouveau certificat à l'[invite de confiance](/docs/fr/claude-apps-gateway#connect-developers). |

299 309 

300Le message d'incompatibilité inclut le nom d'hôte de la passerelle et les 16 premiers caractères de chaque empreinte, celle épinglée et celle présentée.310Le message `Cloud gateway sign-in was not completed` nomme le nom d'hôte de la passerelle. Lorsque Claude Code a à la fois l'empreinte épinglée et celle présentée, le message affiche également les 16 premiers caractères de chacune.

301 311 

302Si Claude Code signale `couldn't load your organization's managed settings` après une connexion à la passerelle, Claude Code nomme la raison, redémarre sur place et reprend la conversation. Si Claude Code ne peut pas redémarrer, par exemple dans une session d'arrière-plan, Claude Code termine la session et conserve la connexion.312Si Claude Code signale `couldn't load your organization's managed settings` après une connexion à la passerelle, Claude Code nomme la raison, redémarre sur place et reprend la conversation. Si Claude Code ne peut pas redémarrer, par exemple dans une session d'arrière-plan, Claude Code termine la session et conserve la connexion.

303 313 

claude-apps-gateway-on-aws.md +554 −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éployer la passerelle Claude apps sur AWS

6 

7> Un exemple concret d'exécution de la passerelle Claude apps sur AWS : ECS Fargate ou EKS, Amazon RDS pour PostgreSQL, AWS Secrets Manager et authentification par rôle IAM vers Amazon Bedrock.

8 

9<Note>

10 Cette page vous guide à travers une façon d'exécuter la passerelle Claude apps sur AWS. La configuration est un exemple fonctionnel pour une infrastructure gérée par le client plutôt qu'un déploiement de production pris en charge ; utilisez-la pour voir comment les éléments s'assemblent avant de l'adapter à votre propre environnement. Pour les exigences indépendantes de la plateforme, consultez le [guide de déploiement](/docs/fr/claude-apps-gateway-deploy).

11</Note>

12 

13Cet exemple provisionne la passerelle Claude apps sur AWS avec Amazon Bedrock comme upstream de modèle, en utilisant soit [Amazon ECS](https://aws.amazon.com/ecs/) sur [AWS Fargate](https://aws.amazon.com/fargate/) soit [Amazon EKS](https://aws.amazon.com/eks/) pour le calcul. [Okta](https://www.okta.com/) est le fournisseur d'identité (IdP) d'exemple, mais tout IdP conforme à OpenID Connect (OIDC) fonctionne ; consultez [Configuration du fournisseur d'identité](/docs/fr/claude-apps-gateway-deploy#identity-provider-setup) pour les détails spécifiques à chaque IdP.

14 

15<Note>

16 Bedrock n'est pas le seul upstream Claude sur AWS. La passerelle prend également en charge Claude Platform on AWS, l'API Claude exploitée par Anthropic avec authentification AWS et facturation AWS Marketplace, à la place de Bedrock ou en parallèle. Son entrée upstream, ses identifiants et ses permissions IAM diffèrent de ceux spécifiques à Bedrock de cette page ; la [référence upstream Claude Platform on AWS](/docs/fr/claude-apps-gateway-config#claude-platform-on-aws) couvre ce qui change, et le reste de cette page s'applique sans modification.

17</Note>

18 

19<h2 id="architecture">

20 Architecture

21</h2>

22 

23<Frame caption="L'architecture d'exemple, avec Amazon Bedrock comme upstream de modèle. Un upstream Claude Platform on AWS occupe la même position.">

24 <img src="https://mintcdn.com/claude-code/PHweeRmDUYEKff49/images/claude-gateway-aws-architecture.svg?fit=max&auto=format&n=PHweeRmDUYEKff49&q=85&s=8599cc34aa28522cde208ee831439bb4" alt="Diagramme de la passerelle Claude apps sur AWS : les clients Claude Code se connectent via HTTPS à un équilibreur de charge d'application interne frontal de la passerelle (ECS Fargate ou EKS), qui s'exécute dans des sous-réseaux privés aux côtés d'une instance Amazon RDS pour PostgreSQL pour l'état de session. La passerelle connecte les utilisateurs via OIDC par rapport à l'IdP d'entreprise, lit les secrets d'AWS Secrets Manager, transfère les demandes de modèle à Amazon Bedrock en utilisant son rôle IAM, et extrait son image d'Amazon ECR au déploiement." width="820" height="430" data-path="images/claude-gateway-aws-architecture.svg" />

25</Frame>

26 

27La passerelle s'exécute en tant que point de terminaison HTTPS privé sur votre réseau auquel les développeurs se connectent via votre IdP. Leurs sessions Claude Code atteignent les modèles Claude sur Amazon Bedrock via le rôle IAM de la passerelle, donc aucun identifiant de modèle n'arrive sur les machines des développeurs. La configuration de référence provisionne :

28 

29* Un service **Amazon ECS sur AWS Fargate** ou un **Amazon EKS** Deployment exécutant le conteneur de la passerelle

30* Un référentiel **Amazon ECR** pour l'image de la passerelle

31* Une instance **Amazon RDS pour PostgreSQL** dans des sous-réseaux privés, non accessible publiquement, pour le [store](/docs/fr/claude-apps-gateway-config#store) de la passerelle

32* Des secrets **AWS Secrets Manager** pour la clé de signature JWT, le secret client OIDC et l'URL Postgres

33* Un **rôle IAM** avec `bedrock:InvokeModel`, `bedrock:InvokeModelWithResponseStream` et `bedrock:CountTokens`, attaché en tant que rôle de tâche ECS ou lié via IAM Roles for Service Accounts (IRSA) sur EKS

34* Un **équilibreur de charge d'application interne** pour HTTPS

35 

36<h2 id="prerequisites">

37 Prérequis

38</h2>

39 

40La procédure pas à pas crée les ressources propres de la passerelle, mais elle s'appuie sur une infrastructure réseau et d'identité que vous avez déjà. Avant de commencer, vous avez besoin de :

41 

42* Un compte AWS avec la permission de créer les [ressources ci-dessus](#architecture)

43* [AWS CLI v2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) installée et [authentifiée](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-authentication.html), et [Docker](https://docs.docker.com/get-started/get-docker/) installé localement

44* Un [VPC](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) avec au moins deux [sous-réseaux privés](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html) dans différentes zones de disponibilité, avec accès Internet sortant via une [passerelle NAT](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) ; l'équilibreur de charge interne a besoin de sous-réseaux dans deux zones de disponibilité, et la passerelle a besoin d'une sortie vers Bedrock et votre IdP

45* Une application web OIDC Okta avec l'URI de redirection `https://<gateway-host>/oauth/callback` ; consultez [Configuration du fournisseur d'identité](/docs/fr/claude-apps-gateway-deploy#identity-provider-setup)

46* Un nom d'hôte TLS pour la passerelle, généralement un nom DNS interne dans une [zone hébergée privée Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html) pointant vers l'équilibreur de charge, avec un [certificat ACM](https://docs.aws.amazon.com/acm/latest/userguide/gs.html) pour ce nom, importé ou émis par [AWS Private CA](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html)

47 

48<h3 id="set-your-environment-variables">

49 Définir vos variables d'environnement

50</h3>

51 

52Chaque commande de cette page lit quatre valeurs de votre shell : `AWS_REGION`, `ACCOUNT_ID`, `VPC_ID` et `PRIVATE_SUBNETS`.

53 

54Choisissez une région US où Bedrock sert les modèles Claude dont vous avez besoin. La procédure pas à pas s'appuie sur le catalogue de modèles intégré de la passerelle, qui se résout en profils d'inférence `us.anthropic.*`, et la politique IAM accorde ces ARN. Dans une région non-US, ajoutez un [bloc `models:`](/docs/fr/claude-apps-gateway-config#models) avec les ID de profil d'inférence de cette géographie et modifiez le préfixe ARN de la politique IAM pour qu'il corresponde.

55 

56Si vous n'avez pas l'ID du VPC à portée de main, listez vos VPC avec `aws ec2 describe-vpcs`, puis listez les sous-réseaux de ce VPC pour trouver deux sous-réseaux privés dans différentes zones de disponibilité :

57 

58```bash theme={null}

59aws ec2 describe-subnets --filters "Name=vpc-id,Values=<your-vpc-id>" \

60 --query 'Subnets[].{ID:SubnetId,AZ:AvailabilityZone,CIDR:CidrBlock}' --output table

61```

62 

63Exportez les quatre avant de continuer :

64 

65```bash theme={null}

66export AWS_REGION=us-east-1 # une région US où Bedrock sert les modèles Claude dont vous avez besoin

67export ACCOUNT_ID="$(aws sts get-caller-identity --query Account --output text)"

68export VPC_ID=<your-vpc-id>

69export PRIVATE_SUBNETS="<subnet-id-a> <subnet-id-b>"

70```

71 

72<h2 id="deploy-the-gateway">

73 Déployer la passerelle

74</h2>

75 

76Les étapes ci-dessous provisionent le déploiement complet avec des commandes `aws`.

77 

78<Steps>

79 <Step title="Créer les groupes de sécurité">

80 Trois groupes de sécurité chaînent le chemin du trafic : votre réseau d'entreprise atteint l'équilibreur de charge sur le port 443, l'équilibreur de charge atteint la passerelle sur le port 8080, et la passerelle atteint Postgres sur le port 5432. Rien d'autre n'est accessible. La façon dont vous les attachez dépend de la piste de calcul :

81 

82 * Sur ECS Fargate, l'étape de déploiement attache `$ALB_SG` à l'équilibreur de charge et `$GW_SG` au service.

83 * Sur EKS, le contrôleur AWS Load Balancer crée son propre groupe de sécurité frontal pour l'ALB, donc `$ALB_SG` et `$GW_SG` ne sont pas utilisés : l'annotation `inbound-cidrs` de l'étape de déploiement restreint l'écouteur à votre réseau d'entreprise, et le groupe de sécurité de la base de données admet le groupe de sécurité du cluster à la place.

84 

85 ```bash theme={null}

86 ALB_SG="$(aws ec2 create-security-group --group-name claude-gateway-alb \

87 --description "Claude gateway ALB" --vpc-id "$VPC_ID" \

88 --query GroupId --output text)"

89 GW_SG="$(aws ec2 create-security-group --group-name claude-gateway-svc \

90 --description "Claude gateway service" --vpc-id "$VPC_ID" \

91 --query GroupId --output text)"

92 DB_SG="$(aws ec2 create-security-group --group-name claude-gateway-db \

93 --description "Claude gateway Postgres" --vpc-id "$VPC_ID" \

94 --query GroupId --output text)"

95 

96 aws ec2 authorize-security-group-ingress --group-id "$ALB_SG" \

97 --protocol tcp --port 443 --cidr <your-corporate-cidr>

98 aws ec2 authorize-security-group-ingress --group-id "$GW_SG" \

99 --protocol tcp --port 8080 --source-group "$ALB_SG"

100 aws ec2 authorize-security-group-ingress --group-id "$DB_SG" \

101 --protocol tcp --port 5432 --source-group "$GW_SG"

102 ```

103 </Step>

104 

105 <Step title="Créer les rôles IAM et soumettre le formulaire de cas d'usage">

106 La passerelle s'exécute avec un rôle de tâche dédié dont la seule permission est d'invoquer les modèles Claude sur Bedrock. Selon la [référence upstream Bedrock](/docs/fr/claude-apps-gateway-config#amazon-bedrock), la politique doit couvrir à la fois les ARN de profil d'inférence inter-régions et les ARN de modèle de base sous-jacents :

107 

108 ```bash theme={null}

109 cat > bedrock-invoke.json <<EOF

110 {

111 "Version": "2012-10-17",

112 "Statement": [{

113 "Effect": "Allow",

114 "Action": ["bedrock:InvokeModel", "bedrock:InvokeModelWithResponseStream", "bedrock:CountTokens"],

115 "Resource": [

116 "arn:aws:bedrock:${AWS_REGION}:${ACCOUNT_ID}:inference-profile/us.anthropic.*",

117 "arn:aws:bedrock:*::foundation-model/anthropic.*"

118 ]

119 }]

120 }

121 EOF

122 cat > ecs-trust.json <<'EOF'

123 {

124 "Version": "2012-10-17",

125 "Statement": [{

126 "Effect": "Allow",

127 "Principal": { "Service": "ecs-tasks.amazonaws.com" },

128 "Action": "sts:AssumeRole"

129 }]

130 }

131 EOF

132 

133 aws iam create-role --role-name claude-gateway-task \

134 --assume-role-policy-document file://ecs-trust.json

135 aws iam put-role-policy --role-name claude-gateway-task \

136 --policy-name bedrock-invoke --policy-document file://bedrock-invoke.json

137 ```

138 

139 ECS a également besoin d'un rôle d'exécution, que l'agent ECS lui-même utilise pour extraire l'image d'ECR et injecter les valeurs Secrets Manager créées ultérieurement. Il est séparé du rôle de tâche que le SDK AWS de la passerelle utilise à l'exécution :

140 

141 ```bash theme={null}

142 aws iam create-role --role-name claude-gateway-execution \

143 --assume-role-policy-document file://ecs-trust.json

144 aws iam attach-role-policy --role-name claude-gateway-execution \

145 --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy

146 cat > secrets-read.json <<EOF

147 {

148 "Version": "2012-10-17",

149 "Statement": [{

150 "Effect": "Allow",

151 "Action": ["secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret"],

152 "Resource": [

153 "arn:aws:secretsmanager:${AWS_REGION}:${ACCOUNT_ID}:secret:gateway-jwt-secret-??????",

154 "arn:aws:secretsmanager:${AWS_REGION}:${ACCOUNT_ID}:secret:gateway-oidc-client-secret-??????",

155 "arn:aws:secretsmanager:${AWS_REGION}:${ACCOUNT_ID}:secret:gateway-postgres-url-??????"

156 ]

157 }]

158 }

159 EOF

160 aws iam put-role-policy --role-name claude-gateway-execution \

161 --policy-name read-gateway-secrets --policy-document file://secrets-read.json

162 ```

163 

164 La politique nomme un ARN par secret plutôt qu'un wildcard nu `gateway-*`, qui dans un compte partagé correspondrait également à des secrets non liés ; le suffixe `-??????` à la fin correspond exactement au suffixe aléatoire de six caractères que Secrets Manager ajoute à l'ARN de chaque secret. Un `-*` à la fin serait un glob de préfixe simple et correspondrait également à des noms plus longs tels que `gateway-postgres-url-prod`.

165 

166 La politique IAM accorde à la passerelle la permission d'appeler Bedrock, et Bedrock active l'accès au modèle par défaut dans les régions commerciales. La porte au niveau du compte restante est le formulaire de cas d'usage unique d'Anthropic : si personne dans votre compte ne l'a soumis, ouvrez la [console Amazon Bedrock](https://console.aws.amazon.com/bedrock/), sélectionnez un modèle Anthropic dans le catalogue de modèles et complétez le formulaire. L'accès est accordé immédiatement après la soumission ; consultez [Claude Code sur Amazon Bedrock](/docs/fr/amazon-bedrock#1-submit-use-case-details) pour le formulaire AWS Organizations et les permissions IAM dont le soumetteur a besoin.

167 

168 La piste EKS réutilise les deux documents de politique sur un rôle IRSA à la place des deux rôles ECS ; consultez l'étape de déploiement.

169 </Step>

170 

171 <Step title="Provisionner Amazon RDS pour PostgreSQL">

172 L'instance s'exécute dans les sous-réseaux privés sans adresse publique et avec le chiffrement du stockage activé. La version du moteur est épinglée à Postgres 16, ce qui satisfait le plancher pris en charge de PostgreSQL 14 de la passerelle et garantit que la famille du groupe de paramètres ci-dessous correspond à l'instance.

173 

174 Tout d'abord, créez le groupe de sous-réseaux qui place la base de données dans les sous-réseaux privés, et un groupe de paramètres avec `rds.force_ssl=1` pour que le serveur rejette les connexions en texte brut. La version du moteur est épinglée une fois car la famille du groupe de paramètres doit correspondre à la version majeure du moteur que l'instance exécute :

175 

176 ```bash theme={null}

177 aws rds create-db-subnet-group --db-subnet-group-name claude-gateway-db \

178 --db-subnet-group-description "Claude gateway" --subnet-ids $PRIVATE_SUBNETS

179 

180 PG_VERSION=16

181 PG_FAMILY="postgres${PG_VERSION}"

182 aws rds create-db-parameter-group --db-parameter-group-name claude-gateway-db \

183 --db-parameter-group-family "$PG_FAMILY" \

184 --description "Claude gateway - require TLS on every connection"

185 aws rds modify-db-parameter-group --db-parameter-group-name claude-gateway-db \

186 --parameters "ParameterName=rds.force_ssl,ParameterValue=1,ApplyMethod=immediate"

187 ```

188 

189 Ensuite, créez l'instance avec un mot de passe maître généré :

190 

191 ```bash theme={null}

192 PGPASS="$(openssl rand -hex 24)"

193 aws rds create-db-instance --db-instance-identifier claude-gateway-db \

194 --engine postgres --engine-version "$PG_VERSION" \

195 --db-instance-class db.t4g.micro \

196 --allocated-storage 20 --db-name claude_gateway \

197 --master-username gateway --master-user-password "$PGPASS" \

198 --db-subnet-group-name claude-gateway-db \

199 --db-parameter-group-name claude-gateway-db \

200 --vpc-security-group-ids "$DB_SG" \

201 --no-publicly-accessible --storage-encrypted

202 ```

203 

204 L'argument littéral `--master-user-password` est visible dans la table des processus et dans les journaux d'audit/EDR pendant l'exécution de la commande, la même exposition que celle couverte par la note de l'étape des secrets. Sur un hôte partagé ou surveillé, passez le mot de passe via `--cli-input-json` à partir d'un fichier `0600` à la place, de la même façon que le `setup.sh` du bundle.

205 

206 Attendez que l'instance soit opérationnelle, ce qui peut prendre plusieurs minutes, puis lisez son point de terminaison privé et assemblez la chaîne de connexion que la passerelle utilisera :

207 

208 ```bash theme={null}

209 aws rds wait db-instance-available --db-instance-identifier claude-gateway-db

210 DB_HOST="$(aws rds describe-db-instances --db-instance-identifier claude-gateway-db \

211 --query 'DBInstances[0].Endpoint.Address' --output text)"

212 GATEWAY_POSTGRES_URL="postgres://gateway:${PGPASS}@${DB_HOST}:5432/claude_gateway?sslmode=verify-full"

213 ```

214 

215 `sslmode=verify-full` fait que la passerelle vérifie la chaîne du certificat du serveur RDS et le nom d'hôte, pas seulement le chiffrement. L'ancre de confiance est le [bundle de certificats AWS RDS](https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem), que l'étape de construction d'image ci-dessous copie à `/etc/claude/rds-global-bundle.pem` et approuve via `NODE_EXTRA_CA_CERTS`. N'ajoutez pas de paramètre `sslrootcert=` de style libpq à l'URL : le pilote de la passerelle lit uniquement `sslmode` à partir de la chaîne de requête et transmettrait `sslrootcert` à Postgres en tant que paramètre de démarrage, que le serveur rejette.

216 

217 Le service ECS ou les pods EKS doivent s'exécuter dans ce VPC pour pouvoir atteindre le point de terminaison privé de l'instance, et le groupe de sécurité `claude-gateway-db` n'admet que le groupe de sécurité de la passerelle.

218 </Step>

219 

220 <Step title="Écrire gateway.yaml">

221 Le bloc `upstreams` pointe vers Bedrock avec `auth: {}`, donc la passerelle s'authentifie via la chaîne de credentials par défaut d'AWS à partir du rôle de tâche sur ECS ou du rôle IRSA sur EKS. Consultez la [référence de configuration](/docs/fr/claude-apps-gateway-config) pour chaque champ.

222 

223 Deux champs `listen` dépendent de ce qui est en face de la passerelle :

224 

225 * `public_url` : l'origine `https://` externe, requise pour tout bind non-loopback ; consultez la [référence `listen`](/docs/fr/claude-apps-gateway-config#listen). La passerelle construit l'`redirect_uri` de l'IdP et son document de découverte uniquement à partir de cette valeur, jamais à partir des en-têtes `X-Forwarded-*`.

226 * `trusted_proxies` : les plages source du frontal. La passerelle honore `X-Forwarded-For` uniquement lorsque le pair TCP est dans cette liste, puis parcourt la chaîne au-delà des sauts de confiance, donc les limites de taux de connexion par IP et les événements d'audit enregistrent les adresses IP des développeurs au lieu de celle de l'équilibreur de charge.

227 

228 Sur les deux pistes, le frontal est un ALB interne, qu'il soit créé directement ou par le contrôleur AWS Load Balancer, et les nœuds d'un ALB prennent des adresses à partir des sous-réseaux auxquels il est attaché, donc définissez `trusted_proxies` sur les CIDR de ces sous-réseaux. Cela approuve chaque hôte de ces sous-réseaux en tant que proxy. Gardez la source d'entrée de l'ALB, votre CIDR d'entreprise, de ne pas chevaucher, et ne partagez pas les sous-réseaux avec des charges de travail non fiables qui pourraient usurper les adresses IP des clients via `X-Forwarded-For`.

229 

230 L'attribut de préservation du port client de l'ALB, `routing.http.xff_client_port.enabled`, peut rester à l'un ou l'autre paramètre : avec lui activé, l'ALB écrit le client comme `203.0.113.7:54321` ou `[2001:db8::1]:54321`, et la passerelle lit les deux avec le port supprimé.

231 

232 ```yaml gateway.yaml theme={null}

233 listen:

234 host: 0.0.0.0

235 port: 8080

236 public_url: https://claude-gateway.internal.example.com

237 trusted_proxies: [<your-alb-subnet-cidrs>]

238 

239 oidc:

240 issuer: https://example.okta.com

241 client_id: 0oa1example2

242 client_secret: ${OIDC_CLIENT_SECRET} # EKS: ${file:/secrets/oidc-client-secret}

243 allowed_email_domains: [example.com]

244 # Le serveur d'autorisation org Okta retourne un id_token mince qui omet

245 # l'email et les groupes ; la passerelle les remplit à partir de /userinfo.

246 userinfo_fallback: true

247 # Okta émet des groupes uniquement lorsque la portée `groups` est demandée et que

248 # le filtre de revendication de groupes de l'application les autorise.

249 scopes: [openid, profile, email, offline_access, groups]

250 

251 session:

252 jwt_secret: ${GATEWAY_JWT_SECRET} # EKS: ${file:/secrets/jwt-secret}

253 ttl_hours: 8 # limite la latence de déprovision ; réduire

254 # vers 1 pour une révocation plus stricte

255 

256 store:

257 postgres_url: ${GATEWAY_POSTGRES_URL} # EKS: ${file:/secrets/postgres-url}

258 

259 upstreams:

260 - provider: bedrock

261 region: <your-region> # correspondre à $AWS_REGION pour que les ARN de la politique IAM

262 # le couvrent

263 auth: {} # chaîne de credentials par défaut d'AWS :

264 # rôle de tâche ECS, ou IRSA sur EKS

265 ```

266 

267 <Note>

268 Seul le bloc `oidc` est spécifique à Okta. Pour utiliser Microsoft Entra ID à la place, définissez `issuer` sur `https://login.microsoftonline.com/<tenant-id>/v2.0`, supprimez `userinfo_fallback` et la portée `groups`, et notez qu'Entra émet des ID d'objet de groupe plutôt que des noms, donc [`managed.policies`](/docs/fr/claude-apps-gateway-config#managed) doit correspondre sur les GUID, ou sur les rôles d'application avec `oidc.groups_claim: roles`. Consultez [Configuration du fournisseur d'identité](/docs/fr/claude-apps-gateway-deploy#identity-provider-setup).

269 </Note>

270 </Step>

271 

272 <Step title="Stocker les secrets dans AWS Secrets Manager">

273 Créez trois secrets ; le rôle d'exécution de l'étape IAM peut déjà les lire :

274 

275 ```bash theme={null}

276 aws secretsmanager create-secret --name gateway-jwt-secret \

277 --secret-string "$(openssl rand -base64 32)"

278 aws secretsmanager create-secret --name gateway-oidc-client-secret \

279 --secret-string '<your-okta-client-secret>'

280 aws secretsmanager create-secret --name gateway-postgres-url \

281 --secret-string "$GATEWAY_POSTGRES_URL"

282 ```

283 

284 Notez l'ARN que chaque appel imprime ; la définition de tâche ECS référence les secrets par ARN.

285 

286 <Note>

287 Les arguments littéraux `--secret-string` sont visibles dans la table des processus et dans les journaux d'audit/EDR pendant l'exécution de chaque commande. Sur un hôte partagé ou surveillé, mettez la valeur dans un fichier `0600` et passez `--secret-string file://<path>` à la place. Le `setup.sh` du bundle garde les valeurs secrètes hors de l'argv du processus de la même façon, en passant des fichiers temporaires `0600` à `--cli-input-json`.

288 </Note>

289 

290 Contrairement aux secrets, `gateway.yaml` lui-même ne contient aucune valeur secrète, car chaque credential se résout au démarrage via l'expansion [`${VAR}` ou `${file:...}`](/docs/fr/claude-apps-gateway-config#secret-expansion). La façon dont tout atteint le conteneur diffère selon la piste :

291 

292 * Sur ECS, l'étape de construction suivante copie `gateway.yaml` dans l'image à `/etc/claude/gateway.yaml`, et la définition de tâche injecte les trois secrets en tant que variables d'environnement via son champ `secrets`, donc le YAML référence `${GATEWAY_JWT_SECRET}`, `${OIDC_CLIENT_SECRET}` et `${GATEWAY_POSTGRES_URL}`.

293 * Sur EKS, montez `gateway.yaml` à partir d'une ConfigMap et les secrets en tant que fichiers à `/secrets`, référencés comme `${file:/secrets/...}`. Sourcez les secrets Kubernetes à partir de Secrets Manager avec External Secrets Operator ou le pilote AWS du pilote CSI Secrets Store, ou créez-les directement avec `kubectl`.

294 </Step>

295 

296 <Step title="Construire et pousser l'image vers Amazon ECR">

297 Construisez l'image selon les [exigences d'image de conteneur](/docs/fr/claude-apps-gateway-deploy#container-image), en plaçant le binaire glibc `linux-x64` à `./claude` dans le contexte de construction. Écrivez votre propre Dockerfile selon ces exigences ou commencez par le [`Dockerfile`](https://github.com/anthropics/claude-code/blob/main/examples/gateway/aws/Dockerfile) du bundle, qui copie le `gateway.yaml` rempli des étapes précédentes dans l'image à `/etc/claude/gateway.yaml`. Sur ECS, cette copie intégrée est la façon dont la configuration atteint le conteneur, c'est pourquoi la construction vient après l'écriture du fichier. La piste EKS monte plutôt `gateway.yaml` à partir d'une ConfigMap au déploiement, donc la copie intégrée n'est pas utilisée là.

298 

299 L'image porte également le bundle de certificats AWS RDS comme ancre de confiance pour la chaîne de connexion `sslmode=verify-full`, donc téléchargez-le d'abord dans le contexte de construction. AWS fait tourner le bundle (les nouvelles autorités de certification régionales sont ajoutées), donc téléchargez-le par construction plutôt que d'épingler une somme de contrôle ou de le valider :

300 

301 ```bash theme={null}

302 curl -fL --proto '=https' -o rds-global-bundle.pem \

303 https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem

304 ```

305 

306 Les exigences d'image de conteneur ne couvrent pas le bundle, donc si vous écrivez votre propre Dockerfile, ajoutez les deux lignes qui le copient et le font confiance ; le Dockerfile du bundle les inclut déjà :

307 

308 ```dockerfile theme={null}

309 COPY rds-global-bundle.pem /etc/claude/rds-global-bundle.pem

310 ENV NODE_EXTRA_CA_CERTS=/etc/claude/rds-global-bundle.pem

311 ```

312 

313 Créez le référentiel ECR et connectez Docker à celui-ci. Les balises immuables signifient que la balise `<version>` que l'étape de déploiement épingle ne peut pas être ultérieurement silencieusement réorientée vers une image différente :

314 

315 ```bash theme={null}

316 aws ecr create-repository --repository-name claude-gateway \

317 --image-tag-mutability IMMUTABLE \

318 --image-scanning-configuration scanOnPush=true

319 aws ecr get-login-password --region "$AWS_REGION" \

320 | docker login --username AWS --password-stdin \

321 "${ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com"

322 ```

323 

324 Construisez et poussez l'image. La définition de tâche ci-dessous exécute `linux/amd64`, donc la plateforme doit correspondre ici ; pour Fargate sur ARM64 (Graviton), construisez `linux/arm64` avec le binaire `linux-arm64` et définissez `cpuArchitecture` sur `ARM64` à la place :

325 

326 ```bash theme={null}

327 docker build --platform=linux/amd64 \

328 -t "${ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/claude-gateway:<version>" .

329 docker push "${ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/claude-gateway:<version>"

330 ```

331 </Step>

332 

333 <Step title="Déployer">

334 <Tabs>

335 <Tab title="ECS Fargate">

336 Créez le cluster et un groupe de journaux pour la sortie d'erreur standard de la passerelle, qui porte à la fois ses événements d'audit et ses journaux opérationnels. La rétention est un appel séparé, et sans elle CloudWatch garde les journaux pour toujours ; alignez les 90 jours avec votre politique de rétention d'audit :

337 

338 ```bash theme={null}

339 aws ecs create-cluster --cluster-name claude-gateway

340 aws logs create-log-group --log-group-name /ecs/claude-gateway

341 aws logs put-retention-policy --log-group-name /ecs/claude-gateway \

342 --retention-in-days 90

343 ```

344 

345 Écrivez la définition de tâche. Le rôle de tâche porte la permission Bedrock et le rôle d'exécution injecte les secrets ; utilisez les ARN de secret de l'étape Secrets Manager :

346 

347 ```json claude-gateway-task.json theme={null}

348 {

349 "family": "claude-gateway",

350 "networkMode": "awsvpc",

351 "requiresCompatibilities": ["FARGATE"],

352 "cpu": "1024",

353 "memory": "2048",

354 "runtimePlatform": { "cpuArchitecture": "X86_64", "operatingSystemFamily": "LINUX" },

355 "executionRoleArn": "arn:aws:iam::<account-id>:role/claude-gateway-execution",

356 "taskRoleArn": "arn:aws:iam::<account-id>:role/claude-gateway-task",

357 "containerDefinitions": [

358 {

359 "name": "gateway",

360 "image": "<account-id>.dkr.ecr.<region>.amazonaws.com/claude-gateway:<version>",

361 "portMappings": [{ "containerPort": 8080 }],

362 "secrets": [

363 { "name": "GATEWAY_JWT_SECRET", "valueFrom": "<gateway-jwt-secret ARN>" },

364 { "name": "OIDC_CLIENT_SECRET", "valueFrom": "<gateway-oidc-client-secret ARN>" },

365 { "name": "GATEWAY_POSTGRES_URL", "valueFrom": "<gateway-postgres-url ARN>" }

366 ],

367 "logConfiguration": {

368 "logDriver": "awslogs",

369 "options": {

370 "awslogs-group": "/ecs/claude-gateway",

371 "awslogs-region": "<region>",

372 "awslogs-stream-prefix": "gateway"

373 }

374 }

375 }

376 ]

377 }

378 ```

379 

380 Enregistrez-le :

381 

382 ```bash theme={null}

383 aws ecs register-task-definition --cli-input-json file://claude-gateway-task.json

384 ```

385 

386 Mettez un ALB interne en face avec un groupe cible qui vérifie l'état de santé de la passerelle. `--ip-address-type ipv4` est important : un ALB interne double pile publie des enregistrements AAAA de plage publique, que la vérification de réseau privé `/login` rejette :

387 

388 ```bash theme={null}

389 ALB_ARN="$(aws elbv2 create-load-balancer --name claude-gateway \

390 --scheme internal --type application --ip-address-type ipv4 \

391 --subnets $PRIVATE_SUBNETS --security-groups "$ALB_SG" \

392 --query 'LoadBalancers[0].LoadBalancerArn' --output text)"

393 

394 TG_ARN="$(aws elbv2 create-target-group --name claude-gateway \

395 --protocol HTTP --port 8080 --vpc-id "$VPC_ID" --target-type ip \

396 --health-check-path /readyz \

397 --query 'TargetGroups[0].TargetGroupArn' --output text)"

398 ```

399 

400 Ajoutez l'écouteur HTTPS. `--ssl-policy` épingle un plancher TLS moderne, car l'omettre revient à la politique par défaut héritée `ELBSecurityPolicy-2016-08`, qui accepte toujours TLS 1.0/1.1.

401 

402 L'ALB ferme une connexion après 60 secondes sans données par défaut. Les pings de maintien de la passerelle gardent les flux à l'intérieur de ce délai par défaut, donc augmenter le délai d'inactivité ajoute une marge au-dessus de la cadence de ping ; la ligne [Dépannage](#troubleshooting) sur les flux abandonnés couvre le mécanisme et les passerelles plus anciennes. Les commandes ci-dessous ajoutent l'écouteur et augmentent le délai d'inactivité :

403 

404 ```bash theme={null}

405 aws elbv2 create-listener --load-balancer-arn "$ALB_ARN" \

406 --protocol HTTPS --port 443 \

407 --ssl-policy ELBSecurityPolicy-TLS13-1-2-2021-06 \

408 --certificates CertificateArn=<your-acm-certificate-arn> \

409 --default-actions Type=forward,TargetGroupArn="$TG_ARN"

410 

411 aws elbv2 modify-load-balancer-attributes --load-balancer-arn "$ALB_ARN" \

412 --attributes Key=idle_timeout.timeout_seconds,Value=3600

413 ```

414 

415 Créez le service. Le disjoncteur de déploiement annule un déploiement dont les tâches continuent d'échouer, à cause d'une mauvaise image ou d'une configuration non amorçable, au dernier état stable au lieu de relancer les tâches défaillantes pour toujours :

416 

417 ```bash theme={null}

418 aws ecs create-service --cluster claude-gateway --service-name claude-gateway \

419 --task-definition claude-gateway --desired-count 1 --launch-type FARGATE \

420 --deployment-configuration "deploymentCircuitBreaker={enable=true,rollback=true}" \

421 --health-check-grace-period-seconds 60 \

422 --network-configuration "awsvpcConfiguration={subnets=[$(echo $PRIVATE_SUBNETS | tr ' ' ',')],securityGroups=[$GW_SG],assignPublicIp=DISABLED}" \

423 --load-balancers "targetGroupArn=$TG_ARN,containerName=gateway,containerPort=8080"

424 ```

425 

426 La période de grâce de 60 secondes donne à une tâche froide le temps de tirer l'image, de se connecter au store et de répondre à sa première vérification de santé avant qu'ECS ne commence à compter les défaillances par rapport au déploiement. La vérification de santé du groupe cible sur `GET /readyz` vérifie que le store est accessible, donc une tâche qui ne peut pas atteindre Postgres n'entre jamais en rotation ; consultez [Comportement en cas de panne](/docs/fr/claude-apps-gateway-deploy#outage-behavior) pour le compromis et l'alternative `/healthz`.

427 

428 Les tâches s'exécutent dans des sous-réseaux privés sans IP publique, donc tout le trafic sortant (vers Bedrock, votre IdP, Secrets Manager, ECR et CloudWatch Logs) passe par la passerelle NAT. Pour garder le trafic Bedrock hors du chemin public, créez un point de terminaison VPC d'interface `bedrock-runtime` et pointez l'`base_url` upstream vers celui-ci, comme indiqué dans la [référence upstream Bedrock](/docs/fr/claude-apps-gateway-config#amazon-bedrock) ; l'IdP a toujours besoin d'une sortie Internet.

429 

430 Terminez en donnant aux développeurs un nom d'hôte privé résolvable : dans une zone hébergée privée Route 53, aliasez le nom DNS interne de la passerelle à l'ALB, et définissez `listen.public_url` sur ce nom d'hôte. Le nom `*.elb.amazonaws.com` propre de l'ALB se résout en adresses privées sur un ALB interne, mais il ne peut pas porter votre certificat ACM, donc utilisez votre propre nom.

431 

432 Mettez à jour l'URI de redirection autorisée du client OAuth vers `<public_url>/oauth/callback` avant la première connexion. Après avoir modifié `public_url`, reconstruisez et poussez l'image sous une nouvelle balise, enregistrez une nouvelle révision de définition de tâche et redéployez. Sur ECS, le paramètre vit dans le `gateway.yaml` intégré de l'image, et la passerelle construit son origine publique uniquement à partir de ce paramètre, en ignorant `X-Forwarded-Host` et `X-Forwarded-Proto`. `X-Forwarded-For` est honoré pour les adresses IP des clients uniquement lorsque `listen.trusted_proxies` est défini.

433 </Tab>

434 

435 <Tab title="EKS">

436 Cette piste a besoin de `kubectl` et `eksctl` installés localement, et d'un cluster EKS existant avec un fournisseur OIDC IAM et le contrôleur AWS Load Balancer installé. Le cluster doit être sur `$VPC_ID` pour que les pods puissent atteindre le point de terminaison privé RDS, et le groupe de sécurité `claude-gateway-db` doit admettre le groupe de sécurité du pod ou du nœud du cluster à la place de `$GW_SG`.

437 

438 Sur EKS, la passerelle obtient ses credentials Bedrock via IRSA plutôt que les rôles ECS. La politique de confiance `ecs-tasks.amazonaws.com` de l'étape IAM ne s'applique pas ici ; IRSA a besoin d'un rôle dont la politique de confiance fédère sur le fournisseur OIDC du cluster, limité à `system:serviceaccount:claude-gateway:gateway`. `eksctl create iamserviceaccount` crée ce rôle, attache les politiques et annote le compte de service Kubernetes avec l'ARN du rôle en une seule étape. Transformez les deux documents de politique de l'étape IAM en politiques gérées qu'il peut attacher :

439 

440 ```bash theme={null}

441 BEDROCK_POLICY_ARN="$(aws iam create-policy --policy-name claude-gateway-bedrock-invoke \

442 --policy-document file://bedrock-invoke.json --query Policy.Arn --output text)"

443 SECRETS_POLICY_ARN="$(aws iam create-policy --policy-name claude-gateway-secrets-read \

444 --policy-document file://secrets-read.json --query Policy.Arn --output text)"

445 

446 kubectl create namespace claude-gateway

447 eksctl create iamserviceaccount --cluster <your-cluster> --region "$AWS_REGION" \

448 --namespace claude-gateway --name gateway --role-name claude-gateway \

449 --attach-policy-arn "$BEDROCK_POLICY_ARN" \

450 --attach-policy-arn "$SECRETS_POLICY_ARN" \

451 --approve

452 ```

453 

454 La politique des secrets n'est nécessaire que lorsque les pods lisent eux-mêmes Secrets Manager, comme le fait le pilote AWS du pilote CSI Secrets Store en utilisant le compte de service du pod de montage ; supprimez-la si vous créez les secrets Kubernetes d'une autre façon. Le fournisseur a besoin des deux actions de la politique : il appelle `DescribeSecret` lorsqu'il réconcilie les secrets rotatés, donc une subvention `GetSecretValue`-uniquement monte au premier déploiement mais arrête de récupérer les rotations.

455 

456 Déployez la passerelle en tant que Deployment standard plus un Service et un Ingress, comme décrit dans [Déploiement Kubernetes](/docs/fr/claude-apps-gateway-deploy#kubernetes), avec :

457 

458 * `serviceAccountName: gateway`

459 * `gateway.yaml` monté à partir d'une ConfigMap et les secrets montés à `/secrets`

460 * la sonde de disponibilité pointée vers `GET /readyz`

461 

462 Pour le frontal, un Ingress géré par le contrôleur AWS Load Balancer provisionne l'ALB interne. Annotez-le avec :

463 

464 * `alb.ingress.kubernetes.io/scheme: internal` et `alb.ingress.kubernetes.io/target-type: ip`

465 * `alb.ingress.kubernetes.io/ip-address-type: ipv4`, pour qu'aucun enregistrement AAAA de plage publique ne soit publié pour la vérification de [réseau privé](/docs/fr/claude-apps-gateway#prerequisites) `/login` à rejeter

466 * `alb.ingress.kubernetes.io/inbound-cidrs: <your-corporate-cidr>`, pour que le groupe de sécurité frontal géré par le contrôleur n'admette que votre réseau d'entreprise à la place de sa valeur par défaut `0.0.0.0/0`

467 * `alb.ingress.kubernetes.io/certificate-arn` avec le certificat ACM

468 * `alb.ingress.kubernetes.io/ssl-policy: ELBSecurityPolicy-TLS13-1-2-2021-06`, pour que l'écouteur ne revienne pas à la politique par défaut héritée qui accepte TLS 1.0 et 1.1

469 * `alb.ingress.kubernetes.io/load-balancer-attributes: idle_timeout.timeout_seconds=3600`, une marge au-dessus du maintien de la passerelle en streaming ; consultez [Dépannage](#troubleshooting)

470 

471 Avec IRSA, le SDK AWS lit un jeton de compte de service projeté et l'échange avec AWS STS, donc le pod n'a jamais besoin du service de métadonnées d'instance EC2 ; une NetworkPolicy de sortie peut bloquer `169.254.169.254` pour les pods de passerelle. Le problème de limite de saut de nœud dans [Dépannage](#troubleshooting) ci-dessous s'applique uniquement aux clusters qui ignorent IRSA et s'appuient sur les rôles d'instance de nœud.

472 </Tab>

473 </Tabs>

474 </Step>

475 

476 <Step title="Pousser l'URL de la passerelle vers les machines des développeurs">

477 La passerelle s'exécute maintenant, mais les développeurs ne peuvent pas la atteindre à partir de `/login` jusqu'à ce que l'URL de la passerelle soit sur leurs machines. Définissez `forceLoginMethod` et `forceLoginGatewayUrl` dans le [fichier de paramètres gérés](/docs/fr/claude-apps-gateway#set-the-gateway-url) que vous déployez sur chaque appareil via MDM. Il n'y a pas d'option de passerelle dans le sélecteur de connexion pour qu'un développeur sélectionne manuellement.

478 </Step>

479</Steps>

480 

481<h2 id="terraform-reference">

482 Référence Terraform

483</h2>

484 

485Le bundle compagnon à [`examples/gateway/aws`](https://github.com/anthropics/claude-code/tree/main/examples/gateway/aws) empaquette cette page en tant que code :

486 

487* **`setup.sh`** script la procédure pas à pas de provisionnement ci-dessus avec les mêmes commandes `aws`, sur la piste ECS Fargate. Il est idempotent : les ressources existantes sont détectées et ignorées, donc le réexécuter est sûr, et tout défaut peut être remplacé via une variable d'environnement. Vous créez toujours le secret client OIDC Okta et le certificat ACM vous-même : une exécution sans eux ignore le déploiement ECS/ALB, nomme les entrées manquantes et imprime la commande `create-secret` ; créez les deux et réexécutez. Le formulaire de cas d'usage Bedrock et l'alias Route 53 s'impriment comme les prochaines étapes plutôt que de s'exécuter automatiquement, et la poussée MDM du client reste une étape manuelle de cette page.

488* **`gateway.yaml.example`** est le modèle de configuration de l'étape gateway.yaml, avec les clés optionnelles incluses commentées. Copiez-le vers `gateway.yaml` et remplacez chaque `REPLACE_ME` avant de construire.

489* **`Dockerfile`** construit l'image d'exécution à partir du binaire précompilé `linux-x64` et copie votre `gateway.yaml` rempli à `/etc/claude/gateway.yaml`, plus le bundle de certificats AWS RDS qui ancre le `sslmode=verify-full` du store. `setup.sh` télécharge le bundle uniquement lorsqu'il n'est pas déjà dans le contexte de construction ; supprimez le fichier et reconstruisez sous une nouvelle balise pour récupérer une rotation d'autorité de certification AWS. Le fichier de configuration ne contient aucune valeur secrète, car chaque credential se résout au démarrage via l'expansion `${VAR}`. Une modification de configuration signifie donc une reconstruction sous une nouvelle balise ; `setup.sh` automatise cela en marquant les images avec un hash du fichier.

490* **`terraform/`** provisionne la même portée ECS Fargate de manière déclarative : les groupes de sécurité, les rôles IAM, le référentiel ECR, l'instance RDS, les secrets Secrets Manager et le service ECS derrière l'ALB interne. Le VPC et les sous-réseaux privés restent des prérequis, transmis en tant que variables. Terraform crée le référentiel ECR mais ne construit pas l'image, et la définition de service référence l'image, donc l'application est deux passes : une application ciblée pour le référentiel, puis la construction et la poussée, puis l'application complète. Le `terraform/README.md` du bundle couvre les variables, l'état distant et le démontage.

491 

492Comme cette page, le bundle est un exemple fonctionnel pour une infrastructure gérée par le client plutôt qu'un déploiement de production pris en charge ; examinez et adaptez-le à votre propre environnement avant de vous y fier.

493 

494<h2 id="troubleshooting">

495 Dépannage

496</h2>

497 

498Pour les erreurs de démarrage et de connexion de la passerelle, consultez le [tableau de dépannage](/docs/fr/claude-apps-gateway-deploy#troubleshooting) indépendant de la plateforme. Les entrées ci-dessous sont spécifiques à AWS.

499 

500| Symptôme | Cause | Correction |

501| ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

502| CLI `/login` : `Gateway hosts must be on your organization's private network; <host> resolves to the public (or unrecognized) address <ip>` | Le nom de la passerelle se résout en au moins une adresse publique. Un ALB interne double pile publie des enregistrements AAAA de plage publique, et la [vérification de réseau privé](/docs/fr/claude-apps-gateway#prerequisites) exige que chaque adresse résolue soit privée | Créez l'ALB avec `--ip-address-type ipv4`, ou servez un nom DNS interne séparé sans enregistrement AAAA public |

503| Chaque demande Bedrock retourne 502 ; le journal affiche `Could not load credentials from any providers` | La tâche s'exécute sur le type de lancement ECS EC2 sans rôle de tâche, ou le pod s'exécute sur un nœud EKS sans IRSA, donc les credentials proviennent des métadonnées d'instance, que la limite de saut par défaut d'IMDSv2 de 1 arrête à l'intérieur d'un conteneur. Aucune des deux pistes de cette page n'est affectée : les rôles de tâche Fargate et IRSA n'utilisent pas les métadonnées d'instance | Préférez les rôles de tâche et IRSA. Lorsque les credentials d'instance sont inévitables, augmentez la limite de saut avec `aws ec2 modify-instance-metadata-options --instance-id <id> --http-put-response-hop-limit 2` ; le [tableau indépendant de la plateforme](/docs/fr/claude-apps-gateway-deploy#troubleshooting) couvre les compromis |

504| Les demandes Bedrock retournent `403 AccessDeniedException` | Le compte n'a pas soumis le formulaire de cas d'usage unique d'Anthropic, l'abonnement AWS Marketplace automatique qui commence à la première invocation du compte n'a pas encore terminé, ou la politique du rôle de tâche manque les ARN de profil d'inférence ou de modèle de base | Soumettez le formulaire de cas d'usage à partir du catalogue de modèles de la console Bedrock ; s'il vient d'être soumis ou s'il s'agit de la première invocation du compte, réessayez après quelques minutes. Accordez `bedrock:InvokeModel` et `bedrock:InvokeModelWithResponseStream` sur les deux familles d'ARN. |

505| Bedrock retourne une `ValidationException` disant que le débit à la demande n'est pas pris en charge | Une entrée `models:` personnalisée mappe à un ID de modèle de base nu que la région ne sert que via des profils d'inférence | Mappez le modèle à son ID de profil d'inférence inter-régions (`us.anthropic.*`) à la place ; le catalogue intégré le fait déjà |

506| La tâche ECS s'arrête avec `ResourceInitializationError` avant que la passerelle ne journalise quoi que ce soit | Le rôle d'exécution ne peut pas lire les secrets Secrets Manager, ou les sous-réseaux privés n'ont pas de chemin vers Secrets Manager ou ECR | Accordez `secretsmanager:GetSecretValue` sur les ARN des trois secrets `gateway-` au rôle d'exécution, et fournissez une sortie via la passerelle NAT, ou, sans elle, des points de terminaison d'interface pour Secrets Manager, ECR et CloudWatch Logs, que le pilote `awslogs` a besoin au même stade, plus un point de terminaison de passerelle S3 |

507| Le démarrage de la passerelle se termine avec une erreur de délai d'expiration de connexion Postgres | Le groupe de sécurité de la base de données n'admet pas le groupe de sécurité de la passerelle sur le port 5432, ou le service s'exécute en dehors du VPC de la base de données ; le store arrête d'attendre après 5 secondes | Autorisez le port 5432 à partir du groupe de sécurité de la passerelle sur celui de la base de données, et exécutez le service dans le même VPC que le groupe de sous-réseaux DB |

508| Le démarrage de la passerelle se termine avec une erreur de vérification du certificat TLS Postgres | La chaîne de connexion définit `sslmode=verify-full` mais l'image ne fait pas confiance au bundle d'autorité de certification RDS : le bundle n'a pas été copié dans l'image, ou `NODE_EXTRA_CA_CERTS` ne le pointe pas | Ajoutez les deux lignes Dockerfile de l'étape de construction qui copient le bundle et définissent `NODE_EXTRA_CA_CERTS`, puis reconstruisez, poussez sous une nouvelle balise et redéployez |

509| Les réponses de streaming se décrochent au milieu du flux après une période calme | Une passerelle plus ancienne que v2.1.229 sur un upstream Bedrock ou Claude Platform on AWS n'envoie rien pendant que l'upstream est calme, par exemple lors de la réflexion étendue sans sortie en flux. L'ALB ferme une connexion après 60 secondes sans données par défaut, donc il coupe le flux à cette lacune. Les passerelles v2.1.229 et ultérieures gardent un flux calme sous ce délai : sur ces upstreams, la passerelle émet un événement SSE `ping` une fois qu'environ 15 secondes passent sans données de flux, et sur un upstream API Anthropic, elle relaye les pings propres de l'API | Mettez à jour la passerelle vers v2.1.229 ou ultérieur, ou définissez l'attribut `idle_timeout.timeout_seconds` sur `3600`, via `modify-load-balancer-attributes` ou l'annotation `load-balancer-attributes` Ingress sur EKS |

510 

511<h2 id="telemetry">

512 Télémétrie

513</h2>

514 

515La passerelle vous donne des métriques d'utilisation par développeur sans aucune configuration OTEL par machine. Claude Code émet des métriques, des journaux et des traces OpenTelemetry (OTLP) optionnels ; [Surveillance de l'utilisation](/docs/fr/monitoring-usage) couvre tout ce que le CLI rapporte. Sur les sessions de passerelle, le CLI marque chaque export avec les attributs d'identité IdP authentifiés `user.id`, `user.email` et `user.groups`, donc l'utilisation s'accumule par développeur sans plomberie `OTEL_RESOURCE_ATTRIBUTES`.

516 

517La passerelle elle-même est un relais OTLP authentifié. Définissez [`telemetry.forward_to`](/docs/fr/claude-apps-gateway-config#telemetry) avec `listen.public_url`, et elle pousse les paramètres d'exportateur OTEL à chaque client connecté et transfère leur trafic OTLP verbatim à chaque destination que vous listez. Chaque destination opte pour les métriques, les journaux et les traces indépendamment, et la valeur par défaut est les métriques uniquement ; consultez la [référence `telemetry`](/docs/fr/claude-apps-gateway-config#telemetry) pour les champs par signal et leurs compromis de sensibilité. La passerelle ne met pas en mémoire tampon, n'agrège pas ou ne stocke pas la télémétrie, donc l'endroit où les données arrivent est entièrement la configuration d'exportateur du collecteur.

518 

519La télémétrie du client est désactivée par défaut ; configurer `telemetry.forward_to` est ce qui l'active pour les développeurs connectés, et chaque client interactif affiche une boîte de dialogue d'approbation de sécurité unique pour les paramètres poussés, comme décrit dans la [référence de configuration](/docs/fr/claude-apps-gateway-config#telemetry). Sur AWS, chaque signal mappe à une destination comme suit.

520 

521<h3 id="client-metrics-logs-and-traces">

522 Métriques, journaux et traces du client

523</h3>

524 

525Pointez `telemetry.forward_to` vers un collecteur OpenTelemetry, tel que le [collecteur AWS Distro for OpenTelemetry (ADOT)](https://aws-otel.github.io/), et exportez de là vers Amazon CloudWatch, Amazon Managed Service for Prometheus ou tout backend OTLP.

526 

527Exécutez le collecteur en tant que service interne séparé accessible via `https://` ; la [référence `telemetry`](/docs/fr/claude-apps-gateway-config#telemetry) couvre l'exception de loopback et `CLAUDE_GATEWAY_ALLOW_LOOPBACK`.

528 

529<h3 id="gateway-logs">

530 Journaux de la passerelle

531</h3>

532 

533Sur ECS Fargate, aucune configuration supplémentaire : le pilote `awslogs` livre la sortie d'erreur standard de la passerelle, qui porte ses événements d'audit et ses journaux opérationnels, au groupe de journaux `/ecs/claude-gateway` créé ci-dessus. Sur EKS, les journaux des pods n'arrivent pas à CloudWatch par défaut, donc la piste d'audit est perdue jusqu'à ce que vous installiez la collecte de journaux : le module complémentaire Amazon CloudWatch Observability avec capture de journaux de conteneur activée, ou un DaemonSet Fluent Bit. Sur l'une ou l'autre piste, interrogez les journaux avec CloudWatch Logs Insights et pilotez les alarmes à partir des filtres de métriques.

534 

535<h3 id="container-metrics">

536 Métriques de conteneur

537</h3>

538 

539Activez Container Insights sur le cluster avec `aws ecs update-cluster-settings --cluster claude-gateway --settings name=containerInsights,value=enabled` pour le CPU, la mémoire et le réseau par tâche. Sur EKS, installez le module complémentaire Amazon CloudWatch Observability.

540 

541<h3 id="spend">

542 Dépenses

543</h3>

544 

545La télémétrie affiche l'utilisation après le fait ; les [limites de dépenses](/docs/fr/claude-apps-gateway-spend-limits) sont la vue en direct de la passerelle et l'application par développeur en plus de la credential upstream partagée.

546 

547<h2 id="next-steps">

548 Prochaines étapes

549</h2>

550 

551* [Référence de configuration](/docs/fr/claude-apps-gateway-config) : chaque option `gateway.yaml`, y compris `managed.policies` et `telemetry`

552* [Déploiement et opérations](/docs/fr/claude-apps-gateway-deploy) : configuration IdP, vérifications de santé, rotation de clé JWT secrète, mises à niveau et modèle de sécurité

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

554* [Exemples AWS pour la passerelle Claude apps](https://github.com/aws-samples/anthropic-on-aws/tree/main/claude-apps-gateway) : exemples de déploiement maintenus par AWS couvrant une gamme d'environnements clients

Details

42 42 

43Les 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 :43Les 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 :

44 44 

45| Méthode | Comment ça marche | Idéal pour |45| Méthode | Comment vous vous connectez | Référentiels que les sessions peuvent atteindre | Idéal pour |

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

47| **Application GitHub** | Autorisez l'application Claude GitHub lors de [l'intégration web](/docs/fr/web-quickstart). | Intégration web ; équipes qui veulent [Auto-fix](#auto-fix-pull-requests) |47| **Application GitHub** | Autorisez l'application Claude GitHub lors de [l'intégration web](/docs/fr/web-quickstart) | N'importe quel référentiel public, et les référentiels privés sur lesquels l'application Claude GitHub est installée | Intégration web ; équipes qui veulent [Auto-fix](#auto-fix-pull-requests) |

48| **`/web-setup`** | Exécutez `/web-setup` dans votre terminal pour synchroniser votre jeton CLI `gh` local vers votre compte Claude. | Développeurs individuels qui utilisent déjà `gh` |48| **`/web-setup`** | Exécutez `/web-setup` dans votre terminal pour envoyer votre jeton CLI `gh` local à votre compte Claude | N'importe quel référentiel auquel votre jeton `gh` peut accéder, que l'application soit installée ou non | Développeurs individuels qui utilisent déjà `gh` |

49 49 

50<Note>50L'installation de l'application Claude GitHub sur un référentiel active également [Auto-fix](#auto-fix-pull-requests) pour les demandes de tirage qu'il contient.

51 Avec l'une ou l'autre méthode, une session cloud peut accéder à n'importe quel référentiel que le compte GitHub connecté peut voir, pas seulement les référentiels sur lesquels l'application Claude GitHub est installée. L'installation de l'application active les webhooks PR pour [Auto-fix](#auto-fix-pull-requests) ; ce n'est pas un contrôle d'accès au niveau de la session. Pour restreindre les référentiels que votre équipe peut atteindre à partir des sessions cloud, restreignez l'accès sur GitHub lui-même, par exemple en limitant l'appartenance à l'équipe ou au référentiel pour les comptes GitHub connectés.

52</Note>

53 51 

54L'une ou l'autre méthode fonctionne. Pour savoir comment `/schedule` vérifie cet accès avant de créer une routine, consultez [Référentiels et permissions de branche](/docs/fr/routines#repositories-and-branch-permissions). Consultez [Connecter depuis votre terminal](/docs/fr/web-quickstart#connect-from-your-terminal) pour la procédure pas à pas de `/web-setup`.52Pour savoir comment `/schedule` vérifie l'accès au référentiel avant de créer une routine, consultez [Référentiels et permissions de branche](/docs/fr/routines#repositories-and-branch-permissions). Consultez [Connecter depuis votre terminal](/docs/fr/web-quickstart#connect-from-your-terminal) pour la procédure pas à pas de `/web-setup`, y compris ce que `/web-setup` stocke et comment le supprimer.

55 53 

56La configuration web rapide est un paramètre d'organisation qui permet aux membres de connecter GitHub avec `/web-setup`, ignore l'invite d'installation de l'application Claude GitHub lors de l'intégration web, et fait que l'intégration web crée l'[environnement **Default**](/docs/fr/cloud-environments#the-default-environment) pour eux au lieu d'afficher le formulaire d'environnement. Sur les plans Team et Enterprise, elle est désactivée par défaut, ce qui masque `/web-setup`. Un [Propriétaire](/docs/fr/server-managed-settings#access-control) l'active avec le bouton bascule **Quick web setup** à [**Paramètres d'administration > Claude Code**](https://claude.ai/admin-settings/claude-code).54La configuration web rapide est un paramètre d'organisation qui permet aux membres de connecter GitHub avec `/web-setup`, ignore l'invite d'installation de l'application Claude GitHub lors de l'intégration web, et fait que l'intégration web crée l'[environnement **Default**](/docs/fr/cloud-environments#the-default-environment) pour eux au lieu d'afficher le formulaire d'environnement. Sur les plans Team et Enterprise, elle est désactivée par défaut, ce qui masque `/web-setup`. Un [Propriétaire](/docs/fr/server-managed-settings#access-control) l'active avec le bouton bascule **Quick web setup** à [**Paramètres d'administration > Claude Code**](https://claude.ai/admin-settings/claude-code).

57 55 


79claude --cloud "Fix the authentication bug in src/auth/login.ts"77claude --cloud "Fix the authentication bug in src/auth/login.ts"

80```78```

81 79 

82Cela crée une nouvelle session cloud sur claude.ai. La VM cloud clone le remote GitHub du répertoire actuel à votre branche actuelle, pas votre checkout local, donc poussez d'abord si vous avez des commits locaux. `--cloud` fonctionne avec un seul référentiel à la fois. La tâche s'exécute dans le cloud tandis que vous continuez à travailler localement. L'ancienne orthographe `--remote` fonctionne toujours comme alias déprécié pour `--cloud`.80Cela crée une nouvelle session cloud sur claude.ai. La VM cloud clone le remote GitHub du répertoire actuel à votre branche actuelle, pas votre checkout local, donc poussez d'abord si vous avez des commits locaux. Consultez [Envoyer des référentiels locaux sans GitHub](#send-local-repositories-without-github) pour les cas où Claude Code télécharge votre référentiel local au lieu de le cloner.

81 

82`--cloud` fonctionne avec un seul référentiel à la fois. La tâche s'exécute dans le cloud tandis que vous continuez à travailler localement. L'ancienne orthographe `--remote` fonctionne toujours comme alias déprécié pour `--cloud`.

83 83 

84Pendant que le conteneur cloud démarre, le CLI affiche une liste de contrôle en direct des étapes de configuration, telles que le clonage du référentiel et l'exécution de votre [script de configuration](/docs/fr/cloud-environments#setup-scripts). Il met en file d'attente les messages que vous tapez pendant le provisionnement et les envoie une fois que la session est prête.84Pendant que le conteneur cloud démarre, le CLI affiche une liste de contrôle en direct des étapes de configuration, telles que le clonage du référentiel et l'exécution de votre [script de configuration](/docs/fr/cloud-environments#setup-scripts). Il met en file d'attente les messages que vous tapez pendant le provisionnement et les envoie une fois que la session est prête.

85 85 


121 Envoyer des référentiels locaux sans GitHub121 Envoyer des référentiels locaux sans GitHub

122</h4>122</h4>

123 123 

124Quand vous exécutez `claude --cloud` depuis 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 bundle inclut l'historique complet de votre référentiel sur toutes les branches, plus les modifications non validées des fichiers suivis.124Quand vous exécutez `claude --cloud` depuis un référentiel qui n'a pas de remote git, ou depuis un référentiel github.com sur lequel l'application Claude GitHub n'est pas installée, Claude Code regroupe votre référentiel local et le télécharge directement vers la session cloud. Cela s'applique même si vous avez connecté GitHub avec `/web-setup`. Le bundle inclut l'historique complet de votre référentiel sur toutes les branches, plus les modifications non validées des fichiers suivis.

125 125 

126Sur macOS, Linux et WSL, Claude Code exclut les modifications non validées des fichiers nommés comme des identifiants ou des clés de l'upload et nomme les fichiers qu'il a laissés de côté. Cela couvre les fichiers `.env`, les fichiers Terraform `*.tfvars` et les fichiers clés tels que `id_rsa` et `*.pem`. La session démarre avec la version validée de chacun, ou sans le fichier si aucun n'est validé. Dans une worktree liée, un submodule ou une disposition similaire, Claude Code télécharge ces modifications avec le reste et nomme les fichiers qu'il télécharge.126Sur macOS, Linux et WSL, Claude Code exclut les modifications non validées des fichiers nommés comme des identifiants ou des clés de l'upload et nomme les fichiers qu'il a laissés de côté. Cela couvre les fichiers `.env`, les fichiers Terraform `*.tfvars` et les fichiers clés tels que `id_rsa` et `*.pem`. La session démarre avec la version validée de chacun, ou sans le fichier si aucun n'est validé. Dans une worktree liée, un submodule ou une disposition similaire, Claude Code télécharge ces modifications avec le reste et nomme les fichiers qu'il télécharge.

127 127 

128Ce fallback s'active automatiquement quand l'accès à GitHub n'est pas disponible. Pour le forcer même quand GitHub est connecté, définissez `CCR_FORCE_BUNDLE=1` :128Pour télécharger un bundle même quand Claude Code clonerait autrement depuis le remote, définissez `CCR_FORCE_BUNDLE=1` :

129 129 

130```bash theme={null}130```bash theme={null}

131CCR_FORCE_BUNDLE=1 claude --cloud "Run the test suite and fix any failures"131CCR_FORCE_BUNDLE=1 claude --cloud "Run the test suite and fix any failures"


136* Le répertoire doit être un référentiel git avec au moins un commit136* Le répertoire doit être un référentiel git avec au moins un commit

137* Le référentiel regroupé doit être inférieur à 100 MB. Les référentiels plus grands reviennent à regrouper uniquement la branche actuelle, puis à un seul snapshot aplati de l'arborescence de travail, et échouent uniquement si le snapshot est toujours trop volumineux137* Le référentiel regroupé doit être inférieur à 100 MB. Les référentiels plus grands reviennent à regrouper uniquement la branche actuelle, puis à un seul snapshot aplati de l'arborescence de travail, et échouent uniquement si le snapshot est toujours trop volumineux

138* Les fichiers non suivis ne sont pas inclus ; exécutez `git add` sur les fichiers que vous voulez que la session cloud voie138* Les fichiers non suivis ne sont pas inclus ; exécutez `git add` sur les fichiers que vous voulez que la session cloud voie

139* Les sessions créées à partir d'un bundle ne peuvent pas repousser vers un remote à moins que vous ayez également [l'authentification GitHub](#github-authentication-options) configurée139* Les sessions créées à partir d'un bundle ne peuvent repousser vers un remote GitHub que si votre [connexion GitHub](#github-authentication-options) a accès en push à ce référentiel

140 140 

141<h3 id="send-follow-ups-from-the-cli">141<h3 id="send-follow-ups-from-the-cli">

142 Envoyer des messages de suivi depuis le CLI142 Envoyer des messages de suivi depuis le CLI


261 261 

262Chaque 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, laisser des commentaires en ligne sur des lignes spécifiques et les envoyer à Claude avec votre prochain message.262Chaque 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, laisser des commentaires en ligne sur des lignes spécifiques et les envoyer à Claude avec votre prochain message.

263 263 

264Claude Code calcule ces diffs, y compris les diffs par fichier affichés lors des modifications de Claude, à partir du contenu brut des blobs git, de sorte que les pilotes diff et les filtres `textconv` configurés dans le référentiel ne s'appliquent pas.264Claude Code calcule ces diffs, y compris les diffs par fichier affichés lors des modifications de Claude, à partir du contenu brut des blobs git, de sorte que les pilotes diff et les filtres `textconv` configurés dans le référentiel ne s'appliquent pas. Pour un fichier dans un référentiel qui n'est pas l'un des checkouts de la session, comme un cloné à l'intérieur de l'espace de travail pendant la session, le diff par fichier affiche la modification de Claude elle-même plutôt qu'une comparaison git.

265 265 

266Consultez [Examiner et itérer](/docs/fr/web-quickstart#review-and-iterate) pour la procédure complète incluant la création de PR. Pour que Claude surveille automatiquement la PR pour les défaillances CI et les commentaires d'examen, consultez [Correction automatique des demandes de tirage](#auto-fix-pull-requests).266Consultez [Examiner et itérer](/docs/fr/web-quickstart#review-and-iterate) pour la procédure complète incluant la création de PR. Pour que Claude surveille automatiquement la PR pour les défaillances CI et les commentaires d'examen, consultez [Correction automatique des demandes de tirage](#auto-fix-pull-requests).

267 267 


352Chaque session cloud est séparée de votre machine et des autres sessions par plusieurs couches :352Chaque session cloud est séparée de votre machine et des autres sessions par plusieurs couches :

353 353 

354* **Machines virtuelles isolées** : chaque session s'exécute dans une VM isolée gérée par Anthropic. Les sessions que votre organisation achemine vers un [environnement auto-hébergé](/docs/fr/self-hosted-environments) s'exécutent sur votre propre infrastructure à la place, où l'isolation est la responsabilité de votre déploiement354* **Machines virtuelles isolées** : chaque session s'exécute dans une VM isolée gérée par Anthropic. Les sessions que votre organisation achemine vers un [environnement auto-hébergé](/docs/fr/self-hosted-environments) s'exécutent sur votre propre infrastructure à la place, où l'isolation est la responsabilité de votre déploiement

355* **Contrôles d'accès réseau** : dans les environnements hébergés par Anthropic, l'accès réseau est limité par défaut et peut être désactivé. Dans un environnement auto-hébergé, vous restreignez la sortie de session à votre propre limite réseau. 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.355* <span id="default-allowed-domains" />**Contrôles d'accès réseau** : dans les environnements hébergés par Anthropic, l'accès réseau est limité par défaut et peut être désactivé. Consultez [Accès réseau](/docs/fr/cloud-environments#network-access) pour les niveaux d'accès, les [domaines autorisés par défaut](/docs/fr/cloud-environments#default-allowed-domains), et le trafic qui ne passe pas par la liste d'autorisation. Dans un environnement auto-hébergé, vous restreignez la sortie de session à votre propre limite réseau. 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.

356* **Protection des identifiants** : dans les environnements hébergés par Anthropic, les identifiants git et les clés de signature restent en dehors du sandbox, et un proxy authentifie au nom de la session avec des identifiants limités. Dans un environnement auto-hébergé, votre déploiement fournit les identifiants git ; consultez [Configurer git](/docs/fr/self-hosted-environments-deploy#configure-git)356* **Protection des identifiants** : dans les environnements hébergés par Anthropic, les identifiants git et les clés de signature restent en dehors du sandbox, et un proxy authentifie au nom de la session avec des identifiants limités. Dans un environnement auto-hébergé, votre déploiement fournit les identifiants git ; consultez [Configurer git](/docs/fr/self-hosted-environments-deploy#configure-git)

357* **Identifiants API** : dans les environnements hébergés par Anthropic sur les plans Pro et Max, les clés que vous [ajoutez à un environnement cloud](/docs/fr/cloud-environments#add-api-credentials) restent en dehors du sandbox de la même manière, attachées aux demandes correspondantes après qu'elles quittent la session. Un environnement auto-hébergé n'a pas d'identifiants API, et les plans Team et Enterprise ne les ont pas encore357* **Identifiants API** : dans les environnements hébergés par Anthropic sur les plans Pro et Max, les clés que vous [ajoutez à un environnement cloud](/docs/fr/cloud-environments#add-api-credentials) restent en dehors du sandbox de la même manière, attachées aux demandes correspondantes après qu'elles quittent la session. Un environnement auto-hébergé n'a pas d'identifiants API, et les plans Team et Enterprise ne les ont pas encore

358* **Analyse sécurisée** : le code est analysé et modifié dans l'environnement isolé de la session avant la création de PR358* **Analyse sécurisée** : le code est analysé et modifié dans l'environnement isolé de la session avant la création de PR


371 371 

372* Vérifiez [status.claude.com](https://status.claude.com) pour les incidents de session cloud372* Vérifiez [status.claude.com](https://status.claude.com) pour les incidents de session cloud

373* Réessayez après une minute, car la capacité est mise en service à la demande373* Réessayez après une minute, car la capacité est mise en service à la demande

374* Confirmez que votre référentiel est accessible. Le compte GitHub qui se connecte doit avoir accès au référentiel sur GitHub, soit par l'autorisation de l'application Claude GitHub, soit par un jeton `gh` synchronisé via `/web-setup`. L'installation de l'application sur le référentiel n'est pas requise. Consultez [Options d'authentification GitHub](#github-authentication-options).374* Confirmez que votre connexion GitHub peut atteindre le référentiel en suivant [Aucun référentiel n'apparaît après la connexion à GitHub](/docs/fr/web-quickstart#no-repositories-appear-after-connecting-github)

375 375 

376<h3 id="unable-to-get-organization-uuid">376<h3 id="unable-to-get-organization-uuid">

377 Impossible d'obtenir l'UUID de l'organisation377 Impossible d'obtenir l'UUID de l'organisation


395 Environnement expiré395 Environnement expiré

396</h3>396</h3>

397 397 

398Les sessions cloud s'arrêtent après une période d'inactivité et la VM de la session est réclamée. Sur le web, la session est marquée comme expirée dans la liste des sessions.398Les sessions cloud s'arrêtent après une période d'inactivité et la VM de la session est réclamée. Une session est considérée comme inactive pendant qu'elle attend votre approbation d'un appel d'outil [connecteur MCP](/docs/fr/cloud-environments#network-access) ou votre connexion à un serveur MCP, et elle peut expirer pendant cette attente. Sur le web, la session est marquée comme expirée dans la liste des sessions.

399 399 

400Rouvrez la session à partir de [claude.ai/code](https://claude.ai/code) pour mettre en service une VM fraîche avec votre historique de conversation restauré. Le travail en arrière-plan qui était toujours en cours d'exécution lorsque la VM a été réclamée, comme les sous-agents et les commandes shell, n'est pas restauré.400Rouvrez la session à partir de [claude.ai/code](https://claude.ai/code) pour mettre en service une VM fraîche avec votre historique de conversation restauré. Le travail en arrière-plan qui était toujours en cours d'exécution lorsque la VM a été réclamée, comme les sous-agents et les commandes shell, n'est pas restauré.

401 401 


407 407 

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

409* **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 compte409* **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

410* **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](/docs/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 distant410* **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](/docs/fr/github-enterprise-server) auto-hébergées sont prises en charge pour les plans Team et Enterprise. Vous pouvez envoyer un référentiel GitLab, Bitbucket ou autre référentiel non-GitHub à une session cloud en tant que [paquet local](#send-local-repositories-without-github) en définissant `CCR_FORCE_BUNDLE=1`, mais la session ne peut pas pousser les résultats vers ce serveur distant

411* **Liste d'autorisation IP de l'organisation** : les sessions cloud appellent l'API Anthropic à partir de l'infrastructure gérée par Anthropic, pas de votre réseau, tandis que les sessions dans un [environnement auto-hébergé](/docs/fr/self-hosted-environments) l'appellent à partir de votre propre réseau. Si votre organisation a [l'autorisation IP](https://support.claude.com/en/articles/13200993-restrict-access-to-claude-with-ip-allowlisting) activée, chaque session cloud hébergée par Anthropic échoue avec une erreur d'authentification. Il en va de même pour [Code Review](/docs/fr/code-review) et pour les [routines](/docs/fr/routines) qui s'exécutent sur les environnements hébergés par Anthropic ; une routine acheminée vers un environnement auto-hébergé appelle l'API à partir de votre propre réseau. Contactez [le support Anthropic](https://support.claude.com/) pour exempter les services hébergés par Anthropic de la liste d'autorisation IP de votre organisation.411* **Liste d'autorisation IP de l'organisation** : les sessions cloud appellent l'API Anthropic à partir de l'infrastructure gérée par Anthropic, pas de votre réseau, tandis que les sessions dans un [environnement auto-hébergé](/docs/fr/self-hosted-environments) l'appellent à partir de votre propre réseau. Si votre organisation a [l'autorisation IP](https://support.claude.com/en/articles/13200993-restrict-access-to-claude-with-ip-allowlisting) activée, chaque session cloud hébergée par Anthropic échoue avec une erreur d'authentification. Il en va de même pour [Code Review](/docs/fr/code-review) et pour les [routines](/docs/fr/routines) qui s'exécutent sur les environnements hébergés par Anthropic ; une routine acheminée vers un environnement auto-hébergé appelle l'API à partir de votre propre réseau. Contactez [le support Anthropic](https://support.claude.com/) pour exempter les services hébergés par Anthropic de la liste d'autorisation IP de votre organisation.

412 412 

413<h2 id="related-resources">413<h2 id="related-resources">

claude-security.md +171 −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# Analysez votre base de code pour détecter les vulnérabilités

6 

7> Installez le plugin Claude Security pour analyser votre base de code afin de détecter les vulnérabilités dans une session Claude Code et transformez les résultats en correctifs que vous examinez et appliquez.

8 

9Le plugin Claude Security exécute une analyse multi-agents des vulnérabilités de votre base de code dans une session Claude Code. Une équipe d'agents Claude cartographie votre architecture, construit un modèle de menace, recherche les vulnérabilités et examine indépendamment chaque résultat avant de rédiger le rapport. Utilisez le plugin pour analyser un référentiel entier ou [uniquement un ensemble de modifications](#scan-only-your-changes), comme le diff d'une branche, le diff d'une demande de tirage ou un seul commit, puis transformez les résultats que vous choisissez en correctifs que vous examinez et appliquez vous-même.

10 

11Le plugin s'exécute localement dans votre session, utilise les modèles auxquels vous avez accès dans Claude Code, et chaque analyse compte par rapport aux limites d'utilisation de votre plan. Si vous souhaitez un service géré qui surveille vos référentiels, ou si vous souhaitez exécuter des analyses sur [Claude Mythos 5](https://platform.claude.com/docs/en/about-claude/models/introducing-claude-fable-5-and-claude-mythos-5), consultez le produit [Claude Security](https://claude.com/product/claude-security), disponible sur le plan Enterprise. Le plugin accède au code que le produit géré ne peut pas atteindre, comme les référentiels hébergés sur GitLab ou Bitbucket, ou sur des réseaux qui n'autorisent pas les connexions entrantes.

12 

13Le plugin est également distinct des outils d'examen déjà présents dans Claude Code : le [plugin de conseils en sécurité](/docs/fr/security-guidance) examine le code au fur et à mesure que Claude l'écrit, [`/security-review`](/docs/fr/commands#all-commands) exécute une seule passe sur votre branche, et [Code Review](/docs/fr/code-review) examine les demandes de tirage. Pour comprendre comment les couches s'empilent, consultez [Comment le plugin s'intègre avec les autres outils de sécurité](#how-the-plugin-fits-with-other-security-tools).

14 

15<h2 id="prerequisites">

16 Conditions préalables

17</h2>

18 

19Pour exécuter le plugin, vous avez besoin de :

20 

21* Un plan payant, pour les [flux de travail dynamiques](/docs/fr/workflows) que l'analyse utilise pour orchestrer ses agents. Sur Pro, activez-les à partir de la ligne Dynamic workflows dans `/config`.

22* Python 3.9 ou version ultérieure disponible sur votre `PATH` en tant que `python3`. Vérifiez avec `python3 --version`. L'outillage du plugin utilise uniquement la bibliothèque standard Python, donc rien n'est installé.

23* Linux, macOS ou Windows.

24* Git, pour les analyses de modifications et pour transformer les résultats en correctifs ; ces tâches ne supportent pas les autres systèmes de contrôle de version. Une analyse complète fonctionne dans n'importe quel répertoire, avec ou sans contrôle de version.

25 

26<h2 id="install-the-plugin">

27 Installez le plugin

28</h2>

29 

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

31 

32```text theme={null}

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

34```

35 

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

37 

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

39 

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

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

42 

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

44 

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

46 

47<h3 id="uninstall-the-plugin">

48 Désinstallez le plugin

49</h3>

50 

51Pour supprimer le plugin, désinstallez-le à partir du menu `/plugin`, ou exécutez `claude plugin uninstall claude-security` dans votre terminal.

52 

53<h2 id="scan-and-fix-your-codebase">

54 Analysez et corrigez votre base de code

55</h2>

56 

57Le plugin ajoute une commande, `/claude-security`, qui ouvre un menu de ses trois tâches : analyser la base de code, analyser un ensemble de modifications et suggérer des correctifs. Le chemin heureux exécute une analyse complète, puis transforme ses résultats en correctifs :

58 

59<Steps>

60 <Step title="Ouvrez le menu Claude Security">

61 Exécutez `/claude-security` et choisissez **Scan codebase**.

62 </Step>

63 

64 <Step title="Choisissez ce que vous souhaitez analyser">

65 Le plugin lit d'abord votre référentiel, puis propose le référentiel entier ou une zone ciblée, avec le nombre de fichiers et le coût relatif de chaque option indiqués. Choisissez le référentiel entier, ou répondez « I don't know » et le plugin choisit une valeur par défaut sensée pour la taille de votre référentiel.

66 </Step>

67 

68 <Step title="Confirmez l'exécution">

69 Une analyse peut prendre un certain temps, peut utiliser un nombre important de jetons et nécessite que Claude Code reste ouvert jusqu'à son achèvement. Rien ne s'exécute jusqu'à ce que vous confirmiez.

70 </Step>

71 

72 <Step title="Lisez le rapport">

73 Pendant que l'analyse s'exécute, elle signale chaque étape au fur et à mesure qu'elle commence, avec les détails disponibles sous [`/workflows`](/docs/fr/workflows). Les résultats se trouvent dans un répertoire horodaté dans votre référentiel, décrit dans [Lisez les résultats de l'analyse](#read-the-scan-results).

74 </Step>

75 

76 <Step title="Transformez les résultats en correctifs">

77 Exécutez `/claude-security` à nouveau et choisissez **Suggest patches**, puis sélectionnez les résultats à traiter. Les correctifs examinés se trouvent dans le dossier `patches/` du rapport ; [Corrigez les résultats](#fix-findings) explique comment chaque correctif est construit et examiné.

78 </Step>

79 

80 <Step title="Appliquez les correctifs que vous acceptez">

81 Appliquez chaque correctif à partir de votre shell avec `git apply`, dans sa propre demande de fusion. Les correctifs ne sont jamais appliqués automatiquement.

82 </Step>

83</Steps>

84 

85Vous n'avez pas besoin de commencer par le menu : demandez une tâche directement, comme arguments de la commande, tels que `/claude-security scan my branch`, ou en langage naturel, comme « scan commit abc1234 ». Le plugin fonctionne mieux en [mode auto](/docs/fr/permission-modes), qui permet aux agents de l'analyse de procéder sans invite de permission à chaque étape.

86 

87<h3 id="scan-only-your-changes">

88 Analysez uniquement vos modifications

89</h3>

90 

91Lorsque votre branche a des commits que sa base n'a pas, le menu `/claude-security` propose d'analyser uniquement ce diff, afin que vous puissiez vérifier une branche avant de la fusionner. Vous pouvez également analyser l'une de vos demandes de fusion ouvertes, ou un seul commit en le demandant, comme « scan commit abc1234 ». Seules les modifications validées sont analysées : validez ou remisez d'abord les modifications en cours, ou exécutez une analyse complète, qui lit l'arborescence de travail.

92 

93Les analyses de modifications nécessitent un référentiel git ; les analyses complètes d'un répertoire sans version fonctionnent toujours. Trouver vos demandes de fusion ouvertes est la seule étape qui atteint le réseau, et elle n'est proposée que lorsque votre session a déjà la permission d'exécuter le CLI GitHub et que `gh` est connecté.

94 

95<h3 id="scope-large-repositories">

96 Délimitez les grands référentiels

97</h3>

98 

99Sur un grand référentiel, analysez une zone à la fois au lieu de l'arborescence entière. Choisissez l'une des portées ciblées que le plugin propose, comme votre couche API ou votre code d'authentification, et l'exécution se dimensionne en fonction de ce que vous choisissez. La section de couverture du rapport indique ce qui a été et n'a pas été examiné. Exécutez une autre analyse sur une zone différente à tout moment.

100 

101<h3 id="read-the-scan-results">

102 Lisez les résultats de l'analyse

103</h3>

104 

105Chaque analyse écrit ses résultats dans un répertoire horodaté `CLAUDE-SECURITY-<timestamp>/` dans votre référentiel :

106 

107* **`CLAUDE-SECURITY-RESULTS.md`** : le rapport, avec l'ID de chaque résultat, comme `F1`, plus son impact, son scénario d'exploitation, sa gravité, sa confiance et sa recommandation

108* **`CLAUDE-SECURITY-RESULTS.jsonl`** : les mêmes résultats sous forme lisible par machine, un objet JSON par ligne

109* **`CLAUDE-SECURITY-RESULTS.sarif`** : les mêmes résultats sous forme de journal [SARIF 2.1.0](https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html) pour l'analyse du code GitHub et tout autre outil qui lit la norme. L'analyse classe les résultats selon leurs catégories de faiblesse [CWE](https://cwe.mitre.org/)

110* **`CLAUDE-SECURITY-REVISION-<commit>.json`** : le tampon de révision, enregistrant quel commit a été analysé, avec quel effort, si les modifications non validées faisaient partie de l'arborescence analysée, et à quel point l'exécution a été vérifiée, de sorte qu'un rapport soit toujours lié au code qu'il décrit. Une analyse en dehors du contrôle de version tamponne `UNVERSIONED` à la place du commit

111 

112Ce répertoire est la seule modification qu'une analyse apporte à votre extraction, et il porte son propre `.gitignore`, de sorte qu'un `git add` égaré ne balaye jamais un rapport dans un commit. Pour conserver un rapport dans l'historique pour une piste d'audit, supprimez ce seul fichier `.gitignore` et validez le répertoire comme n'importe quel autre.

113 

114Les résultats n'apparaissent dans le rapport qu'après que les agents vérificateurs indépendants les analysent, ce qui garde les rapports courts et dignes de lecture. Les analyses sont non déterministes : deux analyses du même code peuvent révéler des résultats différents. Exécutez les analyses régulièrement et utilisez les tampons de révision pour attribuer chaque rapport au code exact et aux paramètres qu'il couvrait.

115 

116<h2 id="fix-findings">

117 Corrigez les résultats

118</h2>

119 

120Commencez le flux de correction en choisissant **Suggest patches** dans le menu `/claude-security`, ou demandez en langage naturel, comme « fix finding F3 », puis sélectionnez les résultats du rapport à traiter. Les correctifs sont construits par rapport au code validé, et le rapport doit toujours décrire le code que vous avez : les résultats dont le code a changé depuis sont ignorés avec une note, et le plugin propose une analyse fraîche au lieu de corriger à partir d'un rapport obsolète. Chaque correctif est rédigé dans une copie de travail de votre référentiel, de sorte que vos fichiers source restent intacts jusqu'à ce que vous appliquiez vous-même un correctif.

121 

122Avant la livraison, chaque correctif est examiné par un agent indépendant de celui qui l'a écrit, qui exécute les tests de votre projet par rapport à la modification lorsque le code les a et lit le diff de ses propres termes pour tout ce qu'il pourrait introduire de nouveau. Un correctif n'est écrit que lorsque cet examen peut attester que la modification traite le seul résultat, n'introduit aucune nouvelle vulnérabilité et laisse le comportement autrement inchangé. Lorsqu'il ne peut pas attester de ces trois points, vous obtenez une courte note expliquant pourquoi au lieu d'un correctif.

123 

124<h3 id="patches-are-never-applied-automatically">

125 Les correctifs ne sont jamais appliqués automatiquement

126</h3>

127 

128L'application d'un correctif est toujours votre décision. Les correctifs se trouvent dans le dossier `patches/` du rapport, un `F<n>.patch` par résultat avec une note à côté expliquant la modification. Appliquez-en un à partir de votre shell, ou demandez à Claude de l'appliquer et d'ouvrir une demande de fusion :

129 

130```bash theme={null}

131git apply CLAUDE-SECURITY-<timestamp>/patches/F1.patch

132```

133 

134Lorsque le code corrigé n'a pas de tests, la note du correctif le dit, de sorte que vous sachiez que son examen s'est déroulé sans passage de test. Appliquez chaque correctif dans sa propre demande de fusion afin qu'il puisse être examiné et testé de manière indépendante.

135 

136<h2 id="how-the-plugin-fits-with-other-security-tools">

137 Comment le plugin s'intègre avec les autres outils de sécurité

138</h2>

139 

140Le plugin Claude Security est la couche d'analyse approfondie à la demande dans une pile de défense en profondeur, aux côtés du [plugin de conseils en sécurité](/docs/fr/security-guidance), [`/security-review`](/docs/fr/commands#all-commands), [Code Review](/docs/fr/code-review), du produit géré [Claude Security](https://claude.com/product/claude-security) et de vos scanners existants :

141 

142| Étape | Outil | Ce qu'il couvre |

143| :-------------------------------- | :----------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------- |

144| En session | [Plugin de conseils en sécurité](/docs/fr/security-guidance) | Vulnérabilités courantes dans le code que Claude écrit, corrigées dans la même session |

145| À la demande, passe unique | [`/security-review`](/docs/fr/commands#all-commands) | Passe de sécurité unique sur la branche actuelle |

146| À la demande, analyse approfondie | Plugin Claude Security | Analyse multi-agents d'un référentiel ou d'un diff, avec résultats examinés indépendamment et correctifs |

147| Sur demande de fusion | [Code Review](/docs/fr/code-review), plans Team et Enterprise | Examen multi-agents de la correction et de la sécurité avec contexte de base de code complet |

148| Géré | [Claude Security](https://claude.com/product/claude-security), plan Enterprise | Analyse hébergée qui surveille les référentiels connectés |

149| En CI | Vos scanners d'analyse statique et de dépendances existants | Règles spécifiques au langage, vérifications de la chaîne d'approvisionnement et application des politiques |

150 

151Le plugin ne remplace pas vos outils de sécurité du code source existants. Exécutez-le aux côtés de l'analyse statique, de l'analyse des dépendances et de l'examen du code : il raisonne sur votre code de la manière qu'un chercheur en sécurité humain le ferait, ce qui complète les vérifications déterministes que ces outils fournissent.

152 

153<h2 id="troubleshooting">

154 Dépannage

155</h2>

156 

157**Le menu `/claude-security` s'ouvre avec un avertissement Python.** Le plugin a besoin de `python3` 3.9 ou version ultérieure sur votre `PATH`. Lorsqu'il ne peut pas trouver `python3` du tout, le menu avertit que Claude Security ne fonctionnera pas jusqu'à ce qu'un soit installé ; lorsque le premier `python3` sur votre `PATH` est plus ancien, l'avertissement nomme la version qu'il a trouvée. Installez Python 3, ou mettez un `python3` plus récent en premier sur votre `PATH`, puis démarrez une nouvelle session.

158 

159**Vous pouvez voir un avis « safeguards flagged this message » lors de l'analyse sur un modèle Fable.** Le message nomme le modèle, par exemple « Fable 5.1's safeguards flagged this message ». Les classificateurs de sécurité de cybersécurité de Fable signalent certaines demandes, et Claude Code réexécute une demande signalée sur un modèle Opus via [automatic model fallback](/docs/fr/model-config#automatic-model-fallback). C'est attendu, et l'analyse devrait toujours se terminer avec succès.

160 

161<h2 id="related-resources">

162 Ressources connexes

163</h2>

164 

165Pour approfondir les éléments que cette page aborde :

166 

167* [Plugin de conseils en sécurité](/docs/fr/security-guidance) : détectez les problèmes dans le code au fur et à mesure que Claude l'écrit, dans la même session

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

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

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

171* [Découvrez et installez des plugins](/docs/fr/discover-plugins#official-anthropic-marketplace) : parcourez d'autres plugins officiels

claude-tag.md +11 −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 Tag

6 

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

8 

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

10 

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

cli-reference.md +26 −14

Details

13Vous pouvez démarrer des sessions, traiter du contenu, reprendre des conversations et gérer les mises à jour avec ces commandes :13Vous pouvez démarrer des sessions, traiter du contenu, reprendre des conversations et gérer les mises à jour avec ces commandes :

14 14 

15| Commande | Description | Exemple |15| Commande | Description | Exemple |

16| :------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------- |16| :------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------- |

17| `claude` | Démarrer une session interactive | `claude` |17| `claude` | Démarrer une session interactive | `claude` |

18| `claude "query"` | Démarrer une session interactive avec une invite initiale | `claude "explain this project"` |18| `claude "query"` | Démarrer une session interactive avec une invite initiale | `claude "explain this project"` |

19| `claude -p "query"` | Interroger via SDK, puis quitter | `claude -p "explain this function"` |19| `claude -p "query"` | Interroger via SDK, puis quitter | `claude -p "explain this function"` |


34| `claude daemon status` | Imprimer l'état du [superviseur](/docs/fr/agent-view#the-supervisor-process) de session d'arrière-plan, la version, le répertoire socket, et le nombre de workers pour les diagnostics. Quitte avec 1 si le superviseur n'est pas en cours d'exécution | `claude daemon status` |34| `claude daemon status` | Imprimer l'état du [superviseur](/docs/fr/agent-view#the-supervisor-process) de session d'arrière-plan, la version, le répertoire socket, et le nombre de workers pour les diagnostics. Quitte avec 1 si le superviseur n'est pas en cours d'exécution | `claude daemon status` |

35| `claude daemon stop --any` | Arrêter le [superviseur](/docs/fr/agent-view#the-supervisor-process) de session d'arrière-plan et les sessions qu'il héberge. Passez `--keep-workers` pour laisser les sessions d'arrière-plan en cours d'exécution afin que le superviseur suivant se reconnecte à elles. `--any` confirme l'arrêt d'un superviseur à la demande, qui est la valeur par défaut. Utilisez ceci pour récupérer d'un [superviseur qui ne répond pas](/docs/fr/agent-view#agent-view-says-the-background-service-did-not-respond) | `claude daemon stop --any --keep-workers` |35| `claude daemon stop --any` | Arrêter le [superviseur](/docs/fr/agent-view#the-supervisor-process) de session d'arrière-plan et les sessions qu'il héberge. Passez `--keep-workers` pour laisser les sessions d'arrière-plan en cours d'exécution afin que le superviseur suivant se reconnecte à elles. `--any` confirme l'arrêt d'un superviseur à la demande, qui est la valeur par défaut. Utilisez ceci pour récupérer d'un [superviseur qui ne répond pas](/docs/fr/agent-view#agent-view-says-the-background-service-did-not-respond) | `claude daemon stop --any --keep-workers` |

36| `claude doctor` | Imprimer les diagnostics d'installation et de paramètres en lecture seule depuis le terminal sans démarrer une session, y compris la vérification de la santé de l'installation, les erreurs de validation du fichier de paramètres, et l'éligibilité au contrôle à distance. Pour la vérification de configuration en session qui peut également appliquer des correctifs, exécutez [`/doctor`](/docs/fr/commands#all-commands) | `claude doctor` |36| `claude doctor` | Imprimer les diagnostics d'installation et de paramètres en lecture seule depuis le terminal sans démarrer une session, y compris la vérification de la santé de l'installation, les erreurs de validation du fichier de paramètres, et l'éligibilité au contrôle à distance. Pour la vérification de configuration en session qui peut également appliquer des correctifs, exécutez [`/doctor`](/docs/fr/commands#all-commands) | `claude doctor` |

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

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

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

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


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

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

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

46| `claude rm <id>` | Supprimer une [session d'arrière-plan](/docs/fr/agent-view#manage-sessions-from-the-shell) de la liste. La transcription de la conversation reste sur votre machine locale, disponible via `claude --resume` | `claude rm 7c5dcf5d` |46| `claude rm <id>` | Supprimer une [session d'arrière-plan](/docs/fr/agent-view#manage-sessions-from-the-shell) de la liste. Quand la suppression est [refusée sur le worktree de la session](/docs/fr/agent-view#what-deleting-a-session-removes) et une deuxième `claude rm` peut la résoudre, le refus imprime le drapeau exact et la valeur à passer : `--discard-unpushed <commit>@<worktree-id>` abandonne un worktree qui a des commits non poussés ainsi que ces commits, et `--force-remove-worktree <worktree-id>` supprime un répertoire worktree que git ou le hook `WorktreeRemove` n'a pas pu supprimer. `--discard-unpushed` nécessite Claude Code v2.1.260 ou ultérieur, et `--force-remove-worktree` nécessite v2.1.268 ou ultérieur. La transcription de la conversation reste sur votre machine locale, disponible via `claude --resume` | `claude rm 7c5dcf5d` |

47| `claude self-hosted-runner` | Démarrer un processus runner qui enregistre cette machine ou ce conteneur auprès d'un [environnement auto-hébergé](/docs/fr/self-hosted-environments) et héberge les sessions cloud Claude Code sur votre infrastructure. Exécutez `claude self-hosted-runner setup` pour une procédure pas à pas guidée de l'opérateur, `claude self-hosted-runner doctor` pour [diagnostiquer un runner déployé](/docs/fr/self-hosted-environments-deploy#troubleshooting), et `claude self-hosted-runner orchestrator` pour générer des [runners à la demande](/docs/fr/self-hosted-environments-configuration#on-demand-runners). Nécessite Claude Code v2.1.224 ou ultérieur | `claude self-hosted-runner setup` |47| `claude self-hosted-runner` | Démarrer un processus runner qui enregistre cette machine ou ce conteneur auprès d'un [environnement auto-hébergé](/docs/fr/self-hosted-environments) et héberge les sessions cloud Claude Code sur votre infrastructure. Exécutez `claude self-hosted-runner setup` pour une procédure pas à pas guidée de l'opérateur, `claude self-hosted-runner doctor` pour [diagnostiquer un runner déployé](/docs/fr/self-hosted-environments-deploy#troubleshooting), et `claude self-hosted-runner orchestrator` pour générer des [runners à la demande](/docs/fr/self-hosted-environments-configuration#on-demand-runners). Nécessite Claude Code v2.1.224 ou ultérieur | `claude self-hosted-runner setup` |

48| `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](/docs/fr/authentication#generate-a-long-lived-token) | `claude setup-token` |48| `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](/docs/fr/authentication#generate-a-long-lived-token) | `claude setup-token` |

49| `claude stop <id>` | Arrêter une [session d'arrière-plan](/docs/fr/agent-view#manage-sessions-from-the-shell). Accepte également `claude kill` | `claude stop 7c5dcf5d` |49| `claude stop <id>` | Arrêter une [session d'arrière-plan](/docs/fr/agent-view#manage-sessions-from-the-shell). Accepte également `claude kill` | `claude stop 7c5dcf5d` |

50| `claude ultrareview [target]` | Exécuter [ultrareview](/docs/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. Utilisez `--post` sur une cible de demande de tirage `github.com` pour publier les résultats terminés sur la PR en tant qu'un seul commentaire simple depuis votre compte GitHub. `--no-post` est la valeur par défaut. Nécessite Claude Code v2.1.227 ou ultérieur. Voir [Publier les résultats sur la demande de tirage](/docs/fr/ultrareview#post-findings-to-the-pull-request) | `claude ultrareview 1234 --json` |50| `claude ultrareview [target]` | Exécuter [ultrareview](/docs/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 45 minutes. Utilisez `--post` sur une cible de demande de tirage `github.com` pour publier les résultats terminés sur la PR en tant qu'un seul commentaire simple depuis votre compte GitHub. `--no-post` est la valeur par défaut. `--post` et `--no-post` nécessitent Claude Code v2.1.227 ou ultérieur. Voir [Publier les résultats sur la demande de tirage](/docs/fr/ultrareview#post-findings-to-the-pull-request) | `claude ultrareview 1234 --json` |

51 51 

52Si 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?`.52Si 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?`.

53 53 


79| `--channels` | (Aperçu de recherche) Serveurs MCP dont les notifications de [canal](/docs/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 Anthropic via claude.ai ou une clé API Console | `claude --channels plugin:my-notifier@my-marketplace` |79| `--channels` | (Aperçu de recherche) Serveurs MCP dont les notifications de [canal](/docs/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 Anthropic via claude.ai ou une clé API Console | `claude --channels plugin:my-notifier@my-marketplace` |

80| `--chrome` | Activer l'[intégration du navigateur Chrome](/docs/fr/chrome) pour l'automatisation web et les tests | `claude --chrome` |80| `--chrome` | Activer l'[intégration du navigateur Chrome](/docs/fr/chrome) pour l'automatisation web et les tests | `claude --chrome` |

81| `--cloud` | Avec une description de tâche, créer une nouvelle [session web](/docs/fr/claude-code-on-the-web) sur claude.ai. Avec un ID de session (`session_...` ou `cse_...`) ou une URL claude.ai/code, mettre en file d'attente un message dans cette session existante à la place, avec `-p`. Voir [envoyer un message de suivi](/docs/fr/claude-code-on-the-web#send-follow-ups-from-the-cli). | `claude --cloud "Fix the login bug"` |81| `--cloud` | Avec une description de tâche, créer une nouvelle [session web](/docs/fr/claude-code-on-the-web) sur claude.ai. Avec un ID de session (`session_...` ou `cse_...`) ou une URL claude.ai/code, mettre en file d'attente un message dans cette session existante à la place, avec `-p`. Voir [envoyer un message de suivi](/docs/fr/claude-code-on-the-web#send-follow-ups-from-the-cli). | `claude --cloud "Fix the login bug"` |

82| `--continue`, `-c` | Charger la conversation la plus récente dans le répertoire courant, en ignorant les [sessions en arrière-plan, les sessions créées avec `claude -p` ou le SDK Agent, et les sessions dont le premier message était `/loop`](/docs/fr/sessions#resume-a-session). `claude -p --continue` inclut les sessions `-p`, SDK et `/loop`. Inclut les sessions qui ont ajouté ce répertoire avec `/add-dir` | `claude --continue` |82| `--continue`, `-c` | Charger la conversation la plus récente dans le répertoire courant, y compris une [session en arrière-plan qui a terminé](/docs/fr/sessions#resume-a-session) ; l'ouverture de sessions en arrière-plan terminées nécessite Claude Code v2.1.257 ou ultérieur. Ignore les sessions créées avec `claude -p` ou le SDK Agent, et les sessions dont le premier message était `/loop`. `claude -p --continue` inclut les sessions `-p`, SDK et `/loop`. Inclut les sessions qui ont ajouté ce répertoire avec `/add-dir` | `claude --continue` |

83| `--dangerously-load-development-channels` | Activer les [canaux](/docs/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` |83| `--dangerously-load-development-channels` | Activer les [canaux](/docs/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` |

84| `--dangerously-skip-permissions` | Ignorer les invites de permission. Équivalent à `--permission-mode bypassPermissions`. Voir [modes de permission](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) pour ce que cela ignore et n'ignore pas. Pour les sessions démarrées avec `--bg`, le mode [persiste lorsque le superviseur redémarre la session](/docs/fr/agent-view#permission-mode-model-and-effort) | `claude --dangerously-skip-permissions` |84| `--dangerously-skip-permissions` | Ignorer les invites de permission. Équivalent à `--permission-mode bypassPermissions`. Voir [modes de permission](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) pour ce que cela ignore et n'ignore pas. Pour les sessions démarrées avec `--bg`, le mode [persiste lorsque le superviseur redémarre la session](/docs/fr/agent-view#permission-mode-model-and-effort) | `claude --dangerously-skip-permissions` |

85| `--debug` | Activer le mode débogage avec filtrage de catégorie optionnel, tel que `--debug='mcp,startup'` ou `--debug='!1p'`. Le filtre se lie uniquement dans la forme `=` ; un filtre séparé par des espaces active le mode débogage sans filtrage | `claude --debug='mcp,startup'` |85| `--debug` | Activer le mode débogage avec filtrage de catégorie optionnel, tel que `--debug='mcp,startup'` ou `--debug='!1p'`. Le filtre se lie uniquement dans la forme `=` ; un filtre séparé par des espaces active le mode débogage sans filtrage | `claude --debug='mcp,startup'` |

86| `--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` |86| `--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` |

87| `--disable-slash-commands` | Désactiver tous les skills et commandes pour cette session | `claude --disable-slash-commands` |87| `--disable-slash-commands` | Désactiver tous les skills et commandes pour cette session | `claude --disable-slash-commands` |

88| `--disallowedTools`, `--disallowed-tools` | Règles de refus. Un nom d'outil nu supprime les outils correspondants du contexte de Claude : `"Edit"` supprime Edit, `"*"` supprime tous les outils, et `"mcp__*"` supprime tous les outils MCP. Une règle délimitée telle que `Bash(rm *)` laisse l'outil disponible et refuse uniquement les appels correspondants. Une règle nommant [`EndConversation`](/docs/fr/tools-reference#endconversation-tool-behavior) ne peut pas le supprimer tant que tout autre outil reste | `"Bash(git log *)" "Bash(git diff *)" "Edit"` |88| `--disallowedTools`, `--disallowed-tools` | Règles de refus. Un nom d'outil nu supprime les outils correspondants du contexte de Claude : `"Edit"` supprime Edit, `"*"` supprime tous les outils, et `"mcp__*"` supprime tous les outils MCP. Une règle délimitée telle que `Bash(rm *)` laisse l'outil disponible et refuse uniquement les appels correspondants [tels qu'écrits](/docs/fr/permissions#bash-rule-limits). Une règle nommant [`EndConversation`](/docs/fr/tools-reference#endconversation-tool-behavior) ne peut pas le supprimer tant que tout autre outil reste | `"Bash(git log *)" "Bash(git diff *)" "Edit"` |

89| `--effort` | Définir le [niveau d'effort](/docs/fr/model-config#adjust-effort-level) pour la session actuelle. Options : `low`, `medium`, `high`, `xhigh`, `max`, ou `ultracode`. Les niveaux disponibles dépendent du modèle. `ultracode` démarre la session au niveau d'effort `xhigh` avec [ultracode](/docs/fr/workflows#let-claude-decide-with-ultracode) activé, et nécessite Claude Code v2.1.203 ou ultérieur. Remplace les paramètres [`modelSettings`](/docs/fr/settings-reference#modelsettings) et [`effortLevel`](/docs/fr/settings-reference#effortlevel) pour cette session et ne persiste pas | `claude --effort high` |89| `--effort` | Définir le [niveau d'effort](/docs/fr/model-config#adjust-effort-level) pour la session actuelle. Options : `low`, `medium`, `high`, `xhigh`, `max`, ou `ultracode`. Les niveaux disponibles dépendent du modèle. `ultracode` demande l'effort `xhigh` avec [ultracode](/docs/fr/workflows#let-claude-decide-with-ultracode) activé, et nécessite Claude Code v2.1.203 ou ultérieur. Remplace les paramètres [`modelSettings`](/docs/fr/settings-reference#modelsettings) et [`effortLevel`](/docs/fr/settings-reference#effortlevel) pour cette session et ne persiste pas | `claude --effort high` |

90| `--enable-auto-mode` | 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` |90| `--enable-auto-mode` | 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` |

91| `--environment <environment-id>` | Créer une nouvelle session cloud qui s'exécute sur l'[environnement auto-hébergé](/docs/fr/self-hosted-environments) avec l'ID donné. Les ID d'environnement commencent par `ccpool_`. Voir [comportement de dispatch `--environment`](/docs/fr/self-hosted-environments-testing#environment-dispatch-behavior) pour le comportement de dispatch et les combinaisons de drapeaux qu'il rejette. Nécessite Claude Code v2.1.224 ou ultérieur | `claude -p "Fix the login bug" --environment ccpool_abc123` |91| `--environment <environment-id>` | Créer une nouvelle session cloud qui s'exécute sur l'[environnement auto-hébergé](/docs/fr/self-hosted-environments) avec l'ID donné. Les ID d'environnement commencent par `ccpool_`. Voir [comportement de dispatch `--environment`](/docs/fr/self-hosted-environments-testing#environment-dispatch-behavior) pour le comportement de dispatch et les combinaisons de drapeaux qu'il rejette. Nécessite Claude Code v2.1.224 ou ultérieur | `claude -p "Fix the login bug" --environment ccpool_abc123` |

92| `--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, drapeau git-repo) 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"` |92| `--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, drapeau git-repo) 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"` |

93| `--exec` | Exécuter une commande shell en tant que travail en arrière-plan soutenu par PTY au lieu de démarrer une session Claude. À utiliser avec `--bg` pour lancer depuis le shell | `claude --bg --exec 'pytest -x'` |93| `--exec` | Exécuter une commande shell en tant que travail en arrière-plan soutenu par PTY au lieu de démarrer une session Claude. À utiliser avec `--bg` pour lancer depuis le shell | `claude --bg --exec 'pytest -x'` |

94| `--fallback-model` | Activer le basculement automatique vers le ou les modèles spécifiés lorsque le modèle principal est surchargé ou non disponible, par exemple un modèle retiré. Accepte une liste séparée par des virgules essayée dans l'ordre. Voir [Chaînes de modèles de secours](/docs/fr/model-config#fallback-model-chains). Pour conserver une chaîne entre les sessions, utilisez le paramètre [`fallbackModel`](/docs/fr/settings-reference#fallbackmodel), que ce drapeau remplace | `claude --fallback-model sonnet,haiku` |94| `--fallback-model` | Activer le basculement automatique vers le ou les modèles spécifiés lorsque le modèle principal est surchargé ou non disponible, par exemple un modèle retiré. Accepte une liste séparée par des virgules essayée dans l'ordre. Voir [Chaînes de modèles de secours](/docs/fr/model-config#fallback-model-chains). Pour conserver une chaîne entre les sessions, utilisez le paramètre [`fallbackModel`](/docs/fr/settings-reference#fallbackmodel), que ce drapeau remplace | `claude --fallback-model sonnet,haiku` |

95| `--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` |95| `--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` |

96| `--forward-subagent-text` | Émettre les blocs de texte et de réflexion des [subagents](/docs/fr/sub-agents) dans le flux de sortie en tant que messages `assistant` et `user` avec `parent_tool_use_id` défini, afin que vous puissiez reconstruire la transcription de chaque subagent. Sans ce drapeau, Claude Code émet uniquement les blocs `tool_use` et `tool_result` des subagents. Nécessite `--print` et `--output-format stream-json`. Claude Code transfère également les messages des [subagents imbriqués](/docs/fr/sub-agents#let-subagents-spawn-their-own-subagents), en définissant `parent_tool_use_id` sur l'ID de l'appel de l'outil Agent qui a généré chacun ; cela nécessite Claude Code v2.1.219 ou ultérieur. La variable d'environnement [`CLAUDE_CODE_FORWARD_SUBAGENT_TEXT`](/docs/fr/env-vars) active le même comportement. Nécessite Claude Code v2.1.211 ou ultérieur | `claude -p --output-format stream-json --verbose --forward-subagent-text "query"` |96| `--forward-subagent-text` | Émettre les blocs de texte et de réflexion des [subagents](/docs/fr/sub-agents) dans le flux de sortie en tant que messages `assistant` et `user` avec `parent_tool_use_id` défini, afin que vous puissiez reconstruire la transcription de chaque subagent. Sans ce drapeau, Claude Code omet le texte et les blocs de réflexion d'un subagent qui s'exécute en [avant-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background). Nécessite `--print` et `--output-format stream-json`. Claude Code transfère également les messages des [subagents imbriqués](/docs/fr/sub-agents#let-subagents-spawn-their-own-subagents), en définissant `parent_tool_use_id` sur l'ID de l'appel de l'outil Agent qui a généré chacun ; cela nécessite Claude Code v2.1.219 ou ultérieur. La variable d'environnement [`CLAUDE_CODE_FORWARD_SUBAGENT_TEXT`](/docs/fr/env-vars) active le même comportement. Nécessite Claude Code v2.1.211 ou ultérieur | `claude -p --output-format stream-json --verbose --forward-subagent-text "query"` |

97| `--from-pr` | Ouvrir le sélecteur de session filtré aux 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` |97| `--from-pr` | Ouvrir le sélecteur de session filtré aux 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` |

98| `--ide` | Se connecter automatiquement à l'IDE au démarrage s'il y a exactement un IDE valide disponible | `claude --ide` |98| `--ide` | Se connecter automatiquement à l'IDE au démarrage s'il y a exactement un IDE valide disponible | `claude --ide` |

99| `--init` | Exécuter les hooks d'[initialisation](/docs/fr/hooks#setup) avec le matcher `init` avant la session (mode impression uniquement) | `claude -p --init "query"` |99| `--init` | Exécuter les hooks d'[initialisation](/docs/fr/hooks#setup) avec le matcher `init` avant la session (mode impression uniquement) | `claude -p --init "query"` |


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

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

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

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

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

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

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


124| `--remote-control-session-name-prefix <prefix>` | Préfixe pour les noms de session [Remote Control](/docs/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` |124| `--remote-control-session-name-prefix <prefix>` | Préfixe pour les noms de session [Remote Control](/docs/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` |

125| `--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 --verbose --replay-user-messages` |125| `--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 --verbose --replay-user-messages` |

126| `--restricted` | Démarrer en mode restreint. Utilisez-le lorsqu'un harnais d'évaluation pilote `claude` sur une machine partagée et que Claude Code ne doit pas exécuter de commandes ou lire les paramètres utilisateur et projet de cette machine. Claude Code supprime les outils intégrés qui exécutent des commandes ou du code, et WebFetch, à moins que vous les nomiez individuellement dans `--tools`, pas via la présélection `default`. Il confine également les outils de fichier intégrés aux [répertoires de travail](/docs/fr/permissions#working-directories), charge uniquement les [paramètres gérés](/docs/fr/managed-settings) et `--settings`, refuse [`bypassPermissions`](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode), et [refuse de créer des sessions cloud](/docs/fr/errors#cloud-sessions-cannot-be-created-from-a-restricted-session). Nécessite Claude Code v2.1.248 ou ultérieur | `claude --restricted -p "query"` |126| `--restricted` | Démarrer en mode restreint. Utilisez-le lorsqu'un harnais d'évaluation pilote `claude` sur une machine partagée et que Claude Code ne doit pas exécuter de commandes ou lire les paramètres utilisateur et projet de cette machine. Claude Code supprime les outils intégrés qui exécutent des commandes ou du code, et WebFetch, à moins que vous les nomiez individuellement dans `--tools`, pas via la présélection `default`. Il confine également les outils de fichier intégrés aux [répertoires de travail](/docs/fr/permissions#working-directories), charge uniquement les [paramètres gérés](/docs/fr/managed-settings) et `--settings`, refuse [`bypassPermissions`](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode), et [refuse de créer des sessions cloud](/docs/fr/errors#cloud-sessions-cannot-be-created-from-a-restricted-session). Nécessite Claude Code v2.1.248 ou ultérieur | `claude --restricted -p "query"` |

127| `--resume`, `-r` | Reprendre une session spécifique par ID ou nom, ou afficher un sélecteur interactif pour choisir une session. Le sélecteur et la recherche par nom incluent les sessions qui ont ajouté ce répertoire avec `/add-dir`. Lorsque vous transmettez un ID de session, Claude Code recherche le répertoire du projet actuel et ses git worktrees, puis tous les autres projets sur cette machine. Avant v2.1.223, la recherche d'ID couvrait uniquement le répertoire du projet actuel et ses git worktrees. Les [sessions en arrière-plan](/docs/fr/agent-view) apparaissent dans le sélecteur marquées avec `bg` | `claude --resume auth-refactor` |127| `--resume`, `-r` | Reprendre une session spécifique par ID ou nom, ou afficher un sélecteur interactif pour choisir une session. À la place d'un ID, vous pouvez passer le chemin absolu vers le fichier de [transcription](/docs/fr/sessions#where-transcripts-are-stored) `.jsonl` d'une session. Le sélecteur et la recherche par nom incluent les sessions qui ont ajouté ce répertoire avec `/add-dir`. Lorsque vous transmettez un ID de session, Claude Code recherche le répertoire du projet actuel et ses git worktrees, puis tous les autres projets sur cette machine. Avant v2.1.223, la recherche d'ID couvrait uniquement le répertoire du projet actuel et ses git worktrees. Les [sessions en arrière-plan](/docs/fr/agent-view) apparaissent dans le sélecteur marquées avec `bg` | `claude --resume auth-refactor` |

128| `--safe-mode` | Démarrer avec toutes les personnalisations désactivées pour dépanner une configuration cassée : CLAUDE.md, skills, plugins, hooks, serveurs MCP, commandes et agents personnalisés, styles de sortie, workflows, thèmes personnalisés, liaisons de touches personnalisées, commandes de ligne d'état et de suggestion de fichiers, serveurs LSP, et mémoire automatique ne se chargent pas. L'authentification, la sélection du modèle, les outils intégrés et les permissions fonctionnent normalement, ce qui diffère de [`--bare`](/docs/fr/headless#start-faster-with-bare-mode). La politique des paramètres gérés s'applique toujours, y compris les hooks configurés par la politique, la ligne d'état et les commandes de suggestion de fichiers ; les plugins gérés, les skills gérés, le CLAUDE.md géré et les serveurs MCP configurés par la politique ne se chargent pas. Utile pour vérifier si une personnalisation est ce qui déclenche le [basculement automatique du modèle](/docs/fr/model-config#automatic-model-fallback). Définit [`CLAUDE_CODE_SAFE_MODE`](/docs/fr/env-vars) | `claude --safe-mode` |128| `--safe-mode` | Démarrer avec toutes les personnalisations désactivées pour dépanner une configuration cassée : CLAUDE.md, skills, plugins, hooks, serveurs MCP, commandes et agents personnalisés, styles de sortie, workflows, thèmes personnalisés, liaisons de touches personnalisées, commandes de ligne d'état et de suggestion de fichiers, serveurs LSP, et mémoire automatique ne se chargent pas. L'authentification, la sélection du modèle, les outils intégrés et les permissions fonctionnent normalement, ce qui diffère de [`--bare`](/docs/fr/headless#start-faster-with-bare-mode). La politique des paramètres gérés s'applique toujours, y compris les hooks configurés par la politique, la ligne d'état et les commandes de suggestion de fichiers ; les plugins gérés, les skills gérés, le CLAUDE.md géré et les serveurs MCP configurés par la politique ne se chargent pas. Utile pour vérifier si une personnalisation est ce qui déclenche le [basculement automatique du modèle](/docs/fr/model-config#automatic-model-fallback). Définit [`CLAUDE_CODE_SAFE_MODE`](/docs/fr/env-vars) | `claude --safe-mode` |

129| `--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"` |129| `--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"` |

130| `--setting-sources` | Liste séparée par des virgules des sources de paramètres à charger (`user`, `project`, `local`) | `claude --setting-sources user,project` |130| `--setting-sources` | Liste séparée par des virgules des sources de paramètres à charger (`user`, `project`, `local`) | `claude --setting-sources user,project` |


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

133| `--system-prompt` | Remplacer l'invite système entière par du texte personnalisé | `claude --system-prompt "You are a Python expert"` |133| `--system-prompt` | Remplacer l'invite système entière par du texte personnalisé | `claude --system-prompt "You are a Python expert"` |

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

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

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

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

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

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

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

140| `--version`, `-v` | Afficher le numéro de version | `claude -v` |141| `--version`, `-v` | Afficher le numéro de version | `claude -v` |

141| `--worktree`, `-w` | Démarrer Claude dans un [git worktree](/docs/fr/worktrees) isolé à `<repo>/.claude/worktrees/<name>`. Si vous ne donnez pas de nom, Claude Code en génère un. Passez `#<number>`, une URL de demande de tirage GitHub, ou une URL de demande de fusion GitLab pour [récupérer cette PR ou MR de `origin` et créer une branche du worktree à partir de celle-ci](/docs/fr/worktrees#branch-from-a-pull-request). La création d'une branche à partir d'une demande de fusion GitLab nécessite Claude Code v2.1.233 ou ultérieur | `claude -w feature-auth` |142| `--worktree`, `-w` | Démarrer Claude dans un [git worktree](/docs/fr/worktrees) isolé à `<repo>/.claude/worktrees/<name>`. Si vous ne donnez pas de nom, Claude Code en génère un. Passez `#<number>`, une URL de demande de tirage GitHub, ou une URL de demande de fusion GitLab pour [récupérer cette PR ou MR de `origin` et créer une branche du worktree à partir de celle-ci](/docs/fr/worktrees#branch-from-a-pull-request). La création d'une branche à partir d'une demande de fusion GitLab nécessite Claude Code v2.1.233 ou ultérieur | `claude -w feature-auth` |


144 Drapeaux d'invite système145 Drapeaux d'invite système

145</h3>146</h3>

146 147 

147Claude Code fournit quatre drapeaux pour personnaliser l'invite système. Les quatre fonctionnent à la fois en mode interactif et non interactif.148Claude Code fournit cinq drapeaux pour personnaliser l'invite système. Quatre définissent son texte, et avec `--system-prompt-snapshot` vous contrôlez si une conversation conserve le texte avec lequel elle a commencé. Les cinq fonctionnent à la fois en mode interactif et non interactif.

148 149 

149| Drapeau | Comportement | Exemple |150| Drapeau | Comportement | Exemple |

150| :---------------------------- | :------------------------------------------------- | :------------------------------------------------------ |151| :---------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------- |

151| `--system-prompt` | Remplace l'invite par défaut entière | `claude --system-prompt "You are a Python expert"` |152| `--system-prompt` | Remplace l'invite par défaut entière | `claude --system-prompt "You are a Python expert"` |

152| `--system-prompt-file` | Remplace par le contenu du fichier | `claude --system-prompt-file ./prompts/review.txt` |153| `--system-prompt-file` | Remplace par le contenu du fichier | `claude --system-prompt-file ./prompts/review.txt` |

153| `--append-system-prompt` | Ajoute à l'invite par défaut | `claude --append-system-prompt "Always use TypeScript"` |154| `--append-system-prompt` | Ajoute à l'invite par défaut | `claude --append-system-prompt "Always use TypeScript"` |

154| `--append-system-prompt-file` | Ajoute le contenu du fichier à l'invite par défaut | `claude --append-system-prompt-file ./style-rules.txt` |155| `--append-system-prompt-file` | Ajoute le contenu du fichier à l'invite par défaut | `claude --append-system-prompt-file ./style-rules.txt` |

156| `--system-prompt-snapshot` | Avec `off`, reconstruit l'invite à chaque requête. Avec `on`, la valeur par défaut, réutilise une invite enregistrée où [l'enregistrement s'applique](#system-prompt-flags-in-resumed-conversations) | `claude --append-system-prompt "Draft rules" --system-prompt-snapshot off` |

155 157 

156`--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.158`--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.

157 159 

158Choisissez en fonction de la question de savoir si l'identité par défaut de Claude Code convient toujours à votre tâche. Utilisez un drapeau d'ajout lorsque Claude doit rester un assistant de codage qui suit également vos règles supplémentaires : instructions par invocation, formatage de sortie, ou contexte de domaine pour un script `-p`. L'ajout préserve les conseils d'outils par défaut, les instructions de sécurité et les conventions de codage, vous ne fournissez donc que ce qui diffère. Utilisez un drapeau de remplacement lorsque la surface, l'identité ou le modèle de permission diffère de celui de Claude Code, comme un agent non-codage dans un pipeline qu'aucun humain ne regarde. Le remplacement supprime l'intégralité de l'invite par défaut, y compris les conseils d'outils et les instructions de sécurité, vous êtes donc responsable de tout ce que votre tâche nécessite toujours.160Choisissez en fonction de la question de savoir si l'identité par défaut de Claude Code convient toujours à votre tâche. Utilisez un drapeau d'ajout lorsque Claude doit rester un assistant de codage qui suit également vos règles supplémentaires : instructions par invocation, formatage de sortie, ou contexte de domaine pour un script `-p`. L'ajout préserve les conseils d'outils par défaut, les instructions de sécurité et les conventions de codage, vous ne fournissez donc que ce qui diffère. Utilisez un drapeau de remplacement lorsque la surface, l'identité ou le modèle de permission diffère de celui de Claude Code, comme un agent non-codage dans un pipeline qu'aucun humain ne regarde. Le remplacement supprime l'intégralité de l'invite par défaut, y compris les conseils d'outils et les instructions de sécurité, vous êtes donc responsable de tout ce que votre tâche nécessite toujours.

159 161 

160Ces drapeaux s'appliquent uniquement à l'invocation actuelle. Pour les personas persistants que vous pouvez basculer et partager dans un projet, utilisez les [styles de sortie](/docs/fr/output-styles). Pour les conventions de projet que Claude doit toujours suivre, utilisez [CLAUDE.md](/docs/fr/memory). Le [guide du SDK Agent sur les invites système](/docs/fr/agent-sdk/modifying-system-prompts#decide-on-a-starting-point) couvre la même décision plus en profondeur.162Pour les personas persistants que vous pouvez basculer et partager dans un projet, utilisez les [styles de sortie](/docs/fr/output-styles). Pour les conventions de projet que Claude doit toujours suivre, utilisez [CLAUDE.md](/docs/fr/memory). Le [guide du SDK Agent sur les invites système](/docs/fr/agent-sdk/modifying-system-prompts#decide-on-a-starting-point) couvre la même décision plus en profondeur.

163 

164<h4 id="system-prompt-flags-in-resumed-conversations">

165 Drapeaux d'invite système dans les conversations reprises

166</h4>

167 

168Par défaut, Claude Code construit l'invite système une fois, à la première requête d'une conversation, avec le texte de tous les drapeaux d'invite système appliqués, et l'enregistre dans la session. Jusqu'à ce que la conversation soit compactée, chaque requête ultérieure utilise cette invite enregistrée, y compris après votre retour à la conversation avec `--resume` ou `--continue`. Si vous transmettez un texte de drapeau d'invite système différent, ou aucun, lors de ce lancement ultérieur, il prend effet une fois que la conversation est compactée ou lorsque vous démarrez une nouvelle conversation.

169 

170Si vous démarrez Claude Code en [mode bare](/docs/fr/headless#start-faster-with-bare-mode), en passant `--bare` ou en définissant `CLAUDE_CODE_SIMPLE=1`, l'enregistrement reste désactivé à moins que vous ne passiez `--system-prompt-snapshot on`. Avant v2.1.268, les sessions qui ne [récupèrent pas les drapeaux de fonctionnalité](/docs/fr/env-vars#features-that-need-feature-flag-fetching), y compris les sessions sur Amazon Bedrock, Google Cloud's Agent Platform et Microsoft Foundry, reconstruisaient l'invite à chaque requête et `--system-prompt-snapshot` n'avait aucun effet.

171 

172Pour reconstruire l'invite à chaque requête à la place, par exemple pendant que vous itérez sur sa formulation entre les exécutions `--continue`, passez `--system-prompt-snapshot off`. Avant v2.1.265, passer l'un des drapeaux d'invite système désactivait également l'enregistrement à moins que vous ne passiez `--system-prompt-snapshot on`.

161 173 

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

163 Voir aussi175 Voir aussi

cloud-environments.md +806 −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 environnements cloud

6 

7> Configurez les environnements cloud pour les sessions Claude Code cloud : niveaux d'accès réseau, variables d'environnement, scripts de configuration et mise en cache d'environnement.

8 

9<Note>

10 Les environnements cloud nécessitent [Claude Code sur le web](/docs/fr/claude-code-on-the-web), qui est en aperçu de recherche pour les utilisateurs Pro, Max et Team, et pour les utilisateurs Enterprise disposant de [sièges premium ou de sièges Chat + Claude Code](https://support.claude.com/en/articles/11845131-use-claude-code-with-your-team-or-enterprise-plan).

11</Note>

12 

13Chaque [session cloud](/docs/fr/claude-code-on-the-web) s'exécute dans un environnement cloud. Vous pouvez configurer un environnement pour autoriser ou refuser l'[accès réseau](#access-levels), [définir des variables d'environnement](#set-environment-variables) pour la session, sur les plans Pro et Max stocker des [identifiants API](#add-api-credentials) que les sessions utilisent sans les voir, et exécuter un [script de configuration](#setup-scripts) avant que Claude ne commence à travailler.

14 

15Les mêmes environnements s'appliquent partout où vous démarrez une session cloud : [Claude Code sur le web](/docs/fr/claude-code-on-the-web), le terminal avec [`claude --cloud`](/docs/fr/claude-code-on-the-web#from-terminal-to-web), [Claude Tag](https://claude.com/docs/claude-tag/overview), [routines](/docs/fr/routines), l'[application mobile Claude](/docs/fr/mobile) et l'[application de bureau](/docs/fr/desktop). Chacune de ces surfaces peut également router vers un [environnement auto-hébergé](/docs/fr/self-hosted-environments). La section [Disponibilité et limitations](/docs/fr/self-hosted-environments#availability-and-limitations) couvre ce que Claude ne peut pas encore utiliser quand une session Claude Tag s'exécute dans un.

16 

17<Info>

18 Les sessions [Remote Control](/docs/fr/remote-control) connectent les interfaces web et mobile à une session sur votre propre machine, qui utilise le réseau et les fichiers de votre machine, et non un environnement cloud. Les sessions de canal Claude Tag utilisent uniquement des environnements au niveau de l'organisation, soit des [environnements partagés](#organization-shared-environments), soit des [environnements auto-hébergés](/docs/fr/self-hosted-environments).

19</Info>

20 

21<h2 id="the-default-environment">

22 L'environnement par défaut

23</h2>

24 

25Si vous n'avez pas encore d'environnement, l'intégration configure l'environnement **Default** pour vous. Cela dépend de l'endroit où vous vous intégrez :

26 

27* **Flux CLI tels que `/web-setup`** : créent **Default** pour vous

28* **Intégration web sur Pro et Max** : crée **Default** pour vous

29* **Intégration web sur Team et Enterprise** : affiche un formulaire **Créer votre premier environnement cloud** sauf si un propriétaire a activé la [Configuration web rapide](/docs/fr/claude-code-on-the-web#github-authentication-options) ; conservez les valeurs par défaut du formulaire et cliquez sur **Créer et terminer** pour obtenir le même environnement **Default**

30 

31**Default** n'a aucune configuration propre :

32 

33* [Accès réseau **Trusted**](#access-levels) : les sessions atteignent les registres de paquets et autres [domaines autorisés](#default-allowed-domains), et rien d'autre via le réseau de la session.

34* Aucune autre configuration : **Default** ne définit aucune variable d'environnement ou script de configuration, donc les sessions commencent avec juste les [outils pré-installés](#installed-tools).

35 

36Avec seulement **Default** disponible, chaque session s'exécute dedans. Quand vous avez plus d'un environnement, les sessions en choisissent un par surface :

37 

38* Sur le web, l'application Desktop et l'application mobile, les sessions utilisent l'environnement affiché dans le [sélecteur](#configure-your-environment). Un [environnement par défaut](#organization-shared-environments) défini par un propriétaire remplit la sélection quand vous n'en avez pas choisi un.

39* Depuis le CLI, Claude Code utilise votre choix [`/remote-env`](#select-an-environment-from-the-cli), ou revient à l'environnement hébergé par Anthropic quand votre liste en a un, et sinon au premier environnement de votre liste qui n'est pas un environnement bridge, une entrée [Remote Control](/docs/fr/remote-control) que vous enregistrez pour représenter votre propre machine plutôt qu'un environnement cloud. Pour un [environnement auto-hébergé](/docs/fr/self-hosted-environments), passer `--environment <environment-id>` avec son ID `ccpool_` [quand vous lancez une session](/docs/fr/self-hosted-environments-testing#run-the-test-loop) remplace le choix `/remote-env` et le fallback pour cet appel. Claude Code rejette les IDs `env_` hébergés par Anthropic passés au drapeau, donc utilisez `/remote-env` pour cibler ceux-ci. Le drapeau nécessite Claude Code v2.1.224 ou ultérieur.

40 

41Configurez un environnement quand le défaut ne suffit pas : quand Claude doit atteindre des domaines en dehors de la [liste d'autorisation par défaut](#default-allowed-domains), a besoin de variables d'environnement définies pour ses sessions, ou a besoin de dépendances installées avant de commencer à travailler.

42 

43<h2 id="configure-your-environment">

44 Configurez votre environnement

45</h2>

46 

47Créez, modifiez et archivez les environnements à partir du sélecteur d'environnement, que vous atteignez sur [claude.ai/code](https://claude.ai/code) après [l'intégration web](/docs/fr/web-quickstart), ou à partir de la boîte de message dans l'[application de bureau](/docs/fr/desktop#cloud-sessions). Les environnements que vous créez sont personnels à votre compte ; les [environnements partagés](#organization-shared-environments) créés par un propriétaire apparaissent dans le même sélecteur. Consultez [Outils installés](#installed-tools) pour voir ce qui est disponible sans aucune configuration.

48 

49<Steps>

50 <Step title="Ouvrez le sélecteur d'environnement">

51 Sur [claude.ai/code](https://claude.ai/code), sélectionnez l'icône cloud affichant le nom de l'environnement actuel, dans la ligne au-dessus de la boîte de message. Il n'y a pas de page de paramètres ou d'URL directe pour le sélecteur.

52 

53 <Frame>

54 <img src="https://mintcdn.com/claude-code/ZFId6l95856c5LSw/images/cloud-environment-selector.png?fit=max&auto=format&n=ZFId6l95856c5LSw&q=85&s=cc2813a5664519eaf5a89d793ce5af26" alt="Le sélecteur d'environnement ouvert au-dessus de la boîte de message sur claude.ai/code. Le bouton cloud affichant le nom de l'environnement Default se trouve dans la ligne au-dessus de la boîte de message. Le menu ouvert liste une ligne Local avec les étiquettes Download et Desktop only, une section Cloud où l'environnement Default est sélectionné avec une coche et affiche une icône d'engrenage de paramètres au survol, une option Add cloud environment, et une section Remote Control avec les instructions de configuration." width="1672" height="682" data-path="images/cloud-environment-selector.png" />

55 </Frame>

56 </Step>

57 

58 <Step title="Ajoutez ou modifiez un environnement">

59 Sélectionnez **Add cloud environment**, ou survolez un environnement existant et sélectionnez l'icône de paramètres qui apparaît à droite. La boîte de dialogue inclut le nom, le niveau d'accès réseau, les variables d'environnement et le script de configuration. Quand vous modifiez un environnement cloud existant sur un plan Pro ou Max, la boîte de dialogue inclut également les [identifiants API](#add-api-credentials).

60 

61 <Frame>

62 <img src="https://mintcdn.com/claude-code/ZFId6l95856c5LSw/images/cloud-environment-dialog.png?fit=max&auto=format&n=ZFId6l95856c5LSw&q=85&s=30d4478b31d1f879f7ee287ddab32505" alt="La boîte de dialogue New cloud environment. Un champ Name avec le texte d'espace réservé Default, un sélecteur Network access défini sur Trusted avec des liens vers la politique réseau et les niveaux d'accès, une boîte Environment variables affichant un texte d'espace réservé au format .env avec une note indiquant que les valeurs sont visibles pour quiconque utilise l'environnement, une boîte Setup script décrite comme un script Bash qui s'exécute quand une nouvelle session démarre avant le lancement de Claude Code, et les boutons Cancel et Create environment." width="874" height="1372" data-path="images/cloud-environment-dialog.png" />

63 </Frame>

64 </Step>

65</Steps>

66 

67<h3 id="set-environment-variables">

68 Définissez les variables d'environnement

69</h3>

70 

71Les variables d'environnement utilisent le format `.env`, une paire `KEY=value` par ligne. Les valeurs simples n'ont pas besoin de guillemets, et si vous citez une valeur avec une paire correspondante, les guillemets ne deviennent pas partie de la valeur. Citez une valeur qui s'étend sur plusieurs lignes ou contient un `#` : dans une valeur non citée, `#` démarre un commentaire et le reste de la ligne est supprimé.

72 

73L'exemple suivant définit trois variables.

74 

75```text theme={null}

76NODE_ENV=development

77LOG_LEVEL=debug

78DATABASE_URL=postgres://localhost:5432/myapp

79```

80 

81Chaque session copie les valeurs de l'environnement une fois, au démarrage, dans des variables d'environnement ordinaires que n'importe quelle commande que Claude exécute peut lire. Parce que les sessions en cours d'exécution ne relisent pas la configuration, modifier ou ajouter des variables affecte les sessions que vous démarrez après ; les sessions déjà en cours d'exécution conservent les valeurs avec lesquelles elles ont démarré.

82 

83Claude Code sur le web définit également certaines variables lui-même quand il démarre une session. Pour [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/docs/fr/claude-code-on-the-web#manage-context), la valeur que Claude Code sur le web définit remplace celle que vous ajoutez ici, donc ajouter cette clé ici n'a aucun effet.

84 

85Quiconque utilise l'environnement peut lire les valeurs. Sur les plans Pro et Max, utilisez plutôt un [identifiant API](#add-api-credentials) pour une clé que le proxy d'agent peut joindre à une requête. Les [requêtes qui ne reçoivent jamais d'identifiant](#requests-that-never-get-the-credential) sont listées là.

86 

87<h3 id="add-api-credentials">

88 Ajoutez des identifiants API

89</h3>

90 

91Un identifiant API est une clé API ou un jeton que vous stockez sur un environnement cloud afin que Claude puisse appeler cette API à partir de n'importe quelle session dans l'environnement sans voir la clé. Le proxy d'agent d'Anthropic ajoute la clé aux requêtes pour les hôtes que vous listez, après que chaque requête quitte la VM de la session. La clé n'atteint jamais Claude, les commandes qu'il exécute, ou les variables d'environnement de la session.

92 

93Les identifiants API sont disponibles sur les plans Pro et Max. Ils ne sont pas encore disponibles sur les plans Team ou Enterprise, donc la section **API credentials** n'apparaît pas dans la boîte de dialogue d'environnement sur ces plans.

94 

95<h4 id="requirements">

96 Exigences

97</h4>

98 

99Deux d'entre elles décident si vous pouvez ajouter un identifiant, et deux décident si le proxy d'agent peut l'utiliser une fois ajouté :

100 

101* **Rôle** : un rôle d'administrateur de l'organisation dans votre organisation claude.ai

102 * Sur Team et Enterprise, les propriétaires le détiennent et les administrateurs ne le détiennent pas

103 * Sur Pro et Max, vous le détenez dans votre propre organisation

104 * Sans lui, vous voyez une note au lieu de la liste des identifiants, même sur vos propres environnements. Demandez à un propriétaire d'ajouter l'identifiant à un environnement partagé et d'exécuter vos sessions là

105* **Type d'environnement** : un environnement cloud hébergé par Anthropic qui existe déjà. Un [environnement auto-hébergé](/docs/fr/self-hosted-environments) n'a pas d'identifiants API

106* **Accessibilité de l'API** : l'API accepte les connexions depuis Internet, car les requêtes partent du réseau d'Anthropic

107* **Clés de chiffrement** : si votre organisation utilise des clés de chiffrement gérées par le client, vous ne pouvez pas enregistrer les identifiants

108 

109<h4 id="add-a-credential">

110 Ajoutez un identifiant

111</h4>

112 

113Vous ajoutez les identifiants un à la fois à partir de l'éditeur d'un environnement qui existe déjà. La boîte de dialogue pour un nouvel environnement ne les propose pas. Il n'y a pas non plus d'édition. Pour modifier les hôtes ou la valeur d'un identifiant, supprimez-le et ajoutez-le à nouveau.

114 

115<Steps>

116 <Step title="Ouvrez les identifiants API de l'environnement">

117 [Ouvrez l'environnement pour modification](#configure-your-environment) sur [claude.ai/code](https://claude.ai/code). Dans la boîte de dialogue **Update cloud environment**, trouvez **API credentials** sous **Environment variables**. Vous voyez les identifiants déjà sur l'environnement, chacun avec les hôtes auxquels il s'applique.

118 </Step>

119 

120 <Step title="Ajoutez l'identifiant">

121 Sélectionnez **Add credential** et remplissez le formulaire. Conservez le **Credential type** par défaut, **Bearer**, pour une clé API qui voyage dans un en-tête de requête, et remplissez ces champs :

122 

123 * **Name** : une étiquette pour l'identifiant, comme `Internal billing API`

124 * **Allowed websites** : les hôtes de l'API, comme `api.example.com`. Un `*.` au début correspond à chaque sous-domaine

125 * **Custom headers** : une ligne pour l'en-tête qui porte la clé. La ligne commence par `Authorization` comme **Name** de l'en-tête et `Bearer` comme son **Prefix** ; collez la clé elle-même comme **Value**. Pour un en-tête comme `X-Api-Key` qui prend la valeur nue, changez le nom et effacez le préfixe

126 

127 Pour une API qui s'authentifie d'une autre manière, choisissez un **Credential type** différent. La liste est la même que celle que [Claude Tag](https://claude.com/docs/claude-tag/overview), l'intégration Slack pour les plans Team et Enterprise, propose pour les [connexions](https://claude.com/docs/claude-tag/admins/add-connections).

128 </Step>

129 

130 <Step title="Enregistrez l'identifiant">

131 Sélectionnez **Connect**. L'identifiant apparaît dans la liste avec ses hôtes, enregistré sans le bouton **Save changes** de la boîte de dialogue. Vous ne pouvez pas voir la valeur à nouveau après l'enregistrement.

132 </Step>

133</Steps>

134 

135Pour confirmer que l'identifiant fonctionne, démarrez une session dans l'environnement et demandez à Claude d'appeler l'API, par exemple avec `curl`. L'API répond comme si la clé était dans la requête, et la clé n'apparaît pas dans les variables d'environnement de la session ou dans aucun fichier. Si la liste marque un identifiant **Not sent** à la place, la note sous lui dit pourquoi et quoi faire. Deux identifiants dont les hôtes se chevauchent sans correspondre exactement ne reçoivent aucun marqueur, et le proxy d'agent n'en envoie qu'un.

136 

137<h4 id="which-requests-get-the-credential">

138 Quelles requêtes reçoivent l'identifiant

139</h4>

140 

141Le proxy d'agent joint un identifiant à une requête quand l'hôte de la requête correspond à un que vous avez listé sur cet identifiant. Les sessions peuvent atteindre ces hôtes même quand le [niveau d'accès réseau](#access-levels) de l'environnement ne le permettrait pas autrement, sauf les [hôtes que le proxy d'agent ignore](#requests-that-never-get-the-credential). L'identifiant s'applique dans chaque session qui s'exécute dans l'environnement, peu importe qui l'a démarrée, jusqu'à ce que vous le supprimiez.

142 

143<h4 id="requests-that-never-get-the-credential">

144 Requêtes qui ne reçoivent jamais l'identifiant

145</h4>

146 

147Le proxy d'agent ne joint jamais un identifiant que vous ajoutez à ces requêtes :

148 

149* **GitHub** : le [proxy GitHub](#github-proxy) authentifie les requêtes à GitHub à la place, donc vous n'avez pas besoin d'un identifiant API pour cela

150* **L'API Anthropic et les registres de paquets publics** : `api.anthropic.com`, `registry.npmjs.org`, `jsr.io`, `npm.jsr.io`, `pypi.org`, `files.pythonhosted.org`, `index.crates.io` et `proxy.golang.org`

151* **Requêtes de script de configuration** : Claude Code se connecte au proxy d'agent quand il se lance, après que le [script de configuration](#setup-scripts) ait s'exécuté

152 

153<h3 id="select-an-environment-from-the-cli">

154 Sélectionnez un environnement depuis le CLI

155</h3>

156 

157Exécutez `/remote-env` dans votre terminal pour choisir l'environnement par défaut pour les sessions cloud que vous créez depuis le CLI, comme [`claude --cloud`](/docs/fr/claude-code-on-the-web#from-terminal-to-web). La commande ouvre un sélecteur de vos environnements existants et enregistre votre choix dans la clé `remote.defaultEnvironmentId` dans vos [paramètres utilisateur](/docs/fr/settings#where-settings-live), donc elle s'applique dans chaque projet sur votre machine jusqu'à ce que vous la changiez, sauf si la même clé est définie à une [couche de paramètres](/docs/fr/settings#settings-precedence) de priorité plus élevée, comme les paramètres de projet d'un dépôt.

158 

159Un ID [d'environnement auto-hébergé](/docs/fr/self-hosted-environments), qui a la forme `ccpool_...`, suit une règle de source plus stricte. Consultez [`remote.defaultEnvironmentId`](/docs/fr/settings-reference#remote-defaultenvironmentid) pour les couches de paramètres que Claude Code honore pour cela.

160 

161`/remote-env` définit seulement le défaut : il ne démarre pas une session, et il ne peut pas ajouter ou modifier des environnements. Gérez-les à partir du [sélecteur d'environnement](#configure-your-environment).

162 

163<h3 id="archive-an-environment">

164 Archivez un environnement

165</h3>

166 

167Pour archiver un environnement, ouvrez-le pour modification et sélectionnez **Archive**. Vous ne pouvez pas supprimer un environnement, seulement l'archiver.

168 

169L'archivage affecte les nouvelles sessions, pas les sessions en cours d'exécution :

170 

171* Les sessions déjà en cours d'exécution dans l'environnement continuent à fonctionner.

172* L'environnement disparaît du sélecteur et de `/remote-env`, donc vous ne pouvez pas le choisir pour les nouvelles sessions.

173* Les identifiants API sur l'environnement restent attachés dans ses sessions en cours d'exécution. Supprimez ceux que vous ne voulez plus avant d'archiver.

174* Aucune nouvelle session ne peut démarrer dans un environnement archivé, sur n'importe quelle surface. Si l'environnement était votre [défaut CLI](#select-an-environment-from-the-cli) enregistré, Claude Code démarre les sessions cloud CLI dans l'environnement hébergé par Anthropic quand votre liste en a un, et sinon dans le premier environnement de votre liste qui n'est pas un [environnement bridge Remote Control](#the-default-environment). Tout ce qui est configuré avec l'environnement explicitement, comme une [routine](/docs/fr/routines#environments-and-network-access), ne peut pas démarrer de nouvelles sessions dedans. Pointez-le vers un autre environnement.

175 

176<h3 id="organization-shared-environments">

177 Environnements partagés par l'organisation

178</h3>

179 

180Sur les plans Team et Enterprise, un propriétaire peut créer des environnements cloud qui sont partagés avec chaque membre de l'organisation. Le même rôle gère tout le reste sur la page **Cloud environments** de l'administration, y compris les [environnements auto-hébergés](/docs/fr/self-hosted-environments) ; le rôle Admin ne peut pas ouvrir la page. La liste complète des rôles qui peuvent l'ouvrir est celle pour [gérer les paramètres gérés par le serveur](/docs/fr/server-managed-settings#access-control). Les environnements partagés apparaissent dans le sélecteur d'environnement de chaque membre à côté de leurs environnements personnels, donc une équipe peut se standardiser sur une configuration au lieu que chaque membre la recréé.

181 

182Créez, modifiez et archivez les environnements partagés à partir de la page **Cloud environments** dans les [paramètres d'administration](https://claude.ai/admin-settings). Un environnement partagé s'ouvre également à partir du [sélecteur d'environnement](#configure-your-environment) sur [claude.ai/code](https://claude.ai/code) : un propriétaire peut le modifier là. Les autres membres le voient en lecture seule. Chaque environnement partagé a un nom, un [niveau d'accès réseau](#access-levels), des [variables d'environnement](#set-environment-variables) au format `.env`, et un [script de configuration](#setup-scripts). Les propriétaires choisissent l'[environnement par défaut](#the-default-environment) de l'organisation séparément, sur [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).

183 

184Chaque session d'un membre dans un environnement partagé lit ses variables, donc n'incluez pas de secrets dedans. Les [identifiants API](#add-api-credentials), qui donnent aux sessions une clé qu'elles ne peuvent pas lire, ne sont pas encore disponibles sur les plans Team ou Enterprise.

185 

186<h3 id="set-the-environment-a-claude-tag-channel-uses">

187 Définissez l'environnement qu'un canal Claude Tag utilise

188</h3>

189 

190Dans les canaux [Claude Tag](https://claude.com/docs/claude-tag/overview), Claude fonctionne comme l'identité partagée de votre organisation, pas comme un membre, donc les sessions de canal utilisent uniquement les environnements au niveau de l'organisation, soit des environnements partagés, soit des [environnements auto-hébergés](/docs/fr/self-hosted-environments). Pour donner à un canal une chaîne d'outils qui n'est pas [pré-installée](#installed-tools), comme .NET, un propriétaire peut créer un [environnement partagé](#organization-shared-environments) à partir de la page d'administration **Cloud environments** avec un [script de configuration](#setup-scripts) qui l'installe. Pointez le canal vers un environnement de deux façons :

191 

192* Définissez un environnement partagé ou auto-hébergé comme l'[environnement par défaut](#the-default-environment) de l'organisation sur [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).

193* [Épinglez-en un à un canal](https://claude.com/docs/claude-tag/admins/troubleshooting#channel-sessions-use-the-wrong-environment-or-can%E2%80%99t-find-one) dans les paramètres d'administration de Claude Tag.

194 

195<h2 id="network-access">

196 Accès réseau

197</h2>

198 

199Chaque environnement définit un niveau d'accès réseau, qui contrôle les connexions sortantes que ses sessions peuvent établir. Le niveau par défaut, **Trusted**, autorise les registres de paquets et autres [domaines autorisés](#default-allowed-domains) ; **Custom** utilise votre propre liste de domaines.

200 

201Pour modifier l'accès réseau d'un environnement, [ouvrez-le pour l'édition](#configure-your-environment) et utilisez le sélecteur **Network access** dans la boîte de dialogue. L'icône cloud qui ouvre le sélecteur apparaît sur les surfaces de l'application listées sous [The Default environment](#the-default-environment) et dans l'[éditeur de routines](/docs/fr/routines#environments-and-network-access) ; les environnements personnels n'ont pas de page séparée dans les paramètres de votre compte claude.ai.

202 

203<Note>

204 Les connecteurs MCP que vous activez sur une session ou une routine fonctionnent sans ajouter leurs hôtes à **Allowed domains**, car le trafic des connecteurs transite par les serveurs d'Anthropic plutôt que par le réseau de la session. Vous configurez les connecteurs par session ou par routine ; supprimez ceux dont vous n'avez pas besoin pour limiter les outils que Claude peut atteindre. Cela s'appuie sur le même canal lié à Anthropic noté sous [Security and isolation](/docs/fr/claude-code-on-the-web#security-and-isolation).

205</Note>

206 

207<h3 id="access-levels">

208 Niveaux d'accès

209</h3>

210 

211Le champ **Network access** dans la [boîte de dialogue d'environnement](#configure-your-environment) prend l'un des quatre niveaux suivants :

212 

213| Niveau | Connexions sortantes |

214| :---------- | :-------------------------------------------------------------------------------------------------- |

215| **None** | Aucun accès réseau sortant via le réseau de la session |

216| **Trusted** | [Domaines autorisés](#default-allowed-domains) uniquement : registres de paquets, GitHub, SDK cloud |

217| **Full** | N'importe quel domaine |

218| **Custom** | Votre propre liste d'autorisation, incluant optionnellement les domaines par défaut |

219 

220Quel que soit le niveau que vous choisissez, les sessions peuvent toujours atteindre ceux-ci, car chacun emprunte un chemin qui ne passe pas par la liste d'autorisation réseau de la session :

221 

222* GitHub, via son [proxy séparé](#github-proxy)

223* Les [connecteurs MCP](#network-access) que vous activez, dont le trafic transite par les serveurs d'Anthropic

224* Les hôtes que vous avez listés sur les [identifiants API](#add-api-credentials) de l'environnement, sauf les [hôtes qui ne reçoivent jamais l'identifiant](#requests-that-never-get-the-credential)

225* L'API Anthropic, pour les propres requêtes de Claude Code, même au niveau **None**, comme noté sous [Security and isolation](/docs/fr/claude-code-on-the-web#security-and-isolation)

226 

227<h3 id="allow-specific-domains">

228 Autoriser des domaines spécifiques

229</h3>

230 

231Pour autoriser des domaines qui ne figurent pas dans la liste Trusted, sélectionnez **Custom** dans les paramètres d'accès réseau de l'environnement, puis listez un domaine par ligne dans le champ **Allowed domains**. Cet exemple autorise trois hôtes qu'un projet interne pourrait nécessiter.

232 

233```text theme={null}

234api.example.com

235*.internal.example.com

236registry.example.com

237```

238 

239Les sessions dans cet environnement peuvent maintenant atteindre `api.example.com`, n'importe quel sous-domaine de `internal.example.com`, et `registry.example.com`, et aucun autre domaine via le réseau de la session. Le [trafic GitHub](#github-proxy), le [trafic des connecteurs MCP](#network-access), et les requêtes vers les hôtes des [identifiants API](#add-api-credentials) de l'environnement, autres que les [hôtes qui ne reçoivent jamais l'identifiant](#requests-that-never-get-the-credential), ne passent pas par cette liste d'autorisation. Un `*.` au début correspond à tous les sous-domaines. Pour conserver également les [domaines Trusted](#default-allowed-domains), cochez **Also include default list of common package managers** ; laissez-le décoché pour autoriser uniquement ce que vous listez.

240 

241Si votre organisation utilise les [artifacts](/docs/fr/artifacts#availability), vous n'avez pas besoin de `*.frame.claudeusercontent.com` dans la liste pour que les sessions les lisent. Lorsque la liste omet cet hôte, Claude Code lit le contenu des artifacts via la connexion de la session à Anthropic à la place. Conservez l'hôte dans une liste d'autorisation dans deux situations :

242 

243* **Les sessions dans cet environnement ouvrent les artifacts publics d'une autre organisation** : Claude Code les récupère directement depuis l'hôte, donc ajoutez-le à cette liste.

244* **Vous configurez le CLI local ou un runner auto-hébergé** : conservez l'hôte dans cette liste d'autorisation. Voir [network access requirements](/docs/fr/network-config#network-access-requirements) et les [network requirements](/docs/fr/self-hosted-environments-deploy#network-requirements) auto-hébergées.

245 

246Chaque environnement a sa propre liste de domaines autorisés ; il n'y a pas de liste d'autorisation au niveau de l'organisation que les administrateurs peuvent pousser aux environnements de chaque membre. Les [paramètres gérés par le serveur](/docs/fr/server-managed-settings) s'appliquent toujours dans les sessions cloud, mais aucun d'eux n'ajoute de domaines à la liste d'autorisation réseau de l'environnement.

247 

248<h3 id="github-proxy">

249 Proxy GitHub

250</h3>

251 

252Dans les environnements hébergés par Anthropic, toutes les opérations GitHub passent par un proxy dédié qui garde vos véritables identifiants GitHub en dehors de la VM de la session, indépendamment du [niveau d'accès](#access-levels) de l'environnement. Les sessions dans un environnement auto-hébergé authentifient les opérations git avec les identifiants que votre déploiement fournit ; [Configure git](/docs/fr/self-hosted-environments-deploy#configure-git) couvre les options, y compris les identifiants émis par session et un opt-in pour ce même proxy. Le proxy fournit :

253 

254* **Identifiants Git** : le client git à l'intérieur de la VM utilise un identifiant limité en portée, que le proxy vérifie et échange contre votre véritable token GitHub.

255* **Requêtes API** : les requêtes des outils GitHub intégrés, et de `gh` sous l'[espace réservé `proxy-injected`](#work-with-github-issues-and-pull-requests), sortent avec vos véritables identifiants substitués.

256* **Protection contre les push** : `git push` fonctionne uniquement contre la branche de travail actuelle de la session ; le clonage, la récupération et les opérations PR fonctionnent normalement.

257* **Portée du référentiel** : les requêtes API GitHub et les requêtes d'actifs de version n'atteignent que les référentiels attachés à la session, donc un script de configuration qui télécharge des actifs de version à partir d'un référentiel non attaché reçoit un 403.

258* **Restrictions GraphQL** : le proxy ne sert qu'un ensemble épinglé d'opérations GraphQL pour les flux de travail de pull-request. Le proxy rejette tout le reste sur le point de terminaison GraphQL avec un 403 qui dit `This GraphQL query is not enabled for this session` et nomme le fallback REST, `gh api repos/{owner}/{repo}/...`. La restriction s'applique à chaque requête via le proxy quel que soit l'identifiant que vous fournissez, donc un `GH_TOKEN` que vous définissez reçoit le même 403. Claude ne peut pas atteindre les API GitHub qui n'existent que dans GraphQL, comme Projects v2, via le proxy.

259 

260Les fichiers validés des référentiels publics arrivent via `raw.githubusercontent.com`, que le [proxy de sécurité](#security-proxy) gère à la place. Ce domaine figure dans la liste [Trusted](#default-allowed-domains) par défaut, donc ces fichiers restent accessibles sauf si le [niveau d'accès](#access-levels) de l'environnement l'exclut.

261 

262<h3 id="security-proxy">

263 Proxy de sécurité

264</h3>

265 

266Les sessions cloud dans les environnements hébergés par Anthropic s'exécutent derrière un proxy réseau HTTP/HTTPS à des fins de sécurité et de prévention des abus ; dans un [environnement auto-hébergé](/docs/fr/self-hosted-environments-deploy#default-deny-egress), le trafic sortant quitte via votre propre limite réseau à la place. Tout le trafic Internet sortant d'une session hébergée par Anthropic passe par ce proxy, qui fournit :

267 

268* Protection contre les requêtes malveillantes

269* Limitation de débit et prévention des abus

270* Filtrage de contenu pour une sécurité renforcée

271* Un journal d'audit au niveau DNS des noms d'hôtes demandés

272 

273<h2 id="what’s-available-in-cloud-sessions">

274 Ce qui est disponible dans les sessions cloud

275</h2>

276 

277Dans les environnements hébergés par Anthropic, chaque session obtient une machine virtuelle (VM) fraîche exécutant Ubuntu 24.04 sur x86\_64, quel que soit votre propre système d'exploitation et architecture CPU, avec votre dépôt cloné et les chaînes d'outils courantes pré-installées. Quand une dépendance fournit des binaires précompilés, comme les gems Ruby avec des extensions natives ou les roues Python précompilées, utilisez sa compilation Linux x86\_64 pour correspondre à la VM. Cette section couvre les défauts hébergés par Anthropic, les outils GitHub intégrés, comment [exécuter des tests et des services](#run-tests-start-services-and-add-packages), et les [limites de ressources](#resource-limits) que chaque VM obtient.

278 

279<Note>

280 Les sessions que votre organisation route vers un [environnement auto-hébergé](/docs/fr/self-hosted-environments) s'exécutent sur vos propres exécuteurs à la place, avec les outils que votre image d'exécuteur fournit.

281</Note>

282 

283<h3 id="what-carries-over-from-your-setup">

284 Ce qui est reporté de votre configuration

285</h3>

286 

287Les sessions cloud commencent à partir d'un clone frais de votre dépôt. Tout ce que vous validez dans le dépôt est disponible. Tout ce que vous avez installé ou configuré seulement sur votre propre machine n'est pas disponible dans la session. La politique de votre organisation arrive séparément via les [paramètres gérés par le serveur](/docs/fr/server-managed-settings).

288 

289| | Disponible dans les sessions cloud | Pourquoi |

290| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

291| Votre `CLAUDE.md` du dépôt | Oui | Partie du clone |

292| Vos crochets `.claude/settings.json` du dépôt | Oui | Partie du clone |

293| Vos serveurs MCP `.mcp.json` du dépôt | Oui | Partie du clone |

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

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

296| Plugins déclarés dans `.claude/settings.json` | Oui | Installés au démarrage de la session à partir de la [place de marché](/docs/fr/plugin-marketplaces) que vous avez déclarée. Nécessite un accès réseau pour atteindre la source de la place de marché |

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

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

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

300| Plugins activés seulement dans vos paramètres utilisateur | Non | L'`enabledPlugins` au niveau utilisateur vit dans `~/.claude/settings.json`. Déclarez-les dans le `.claude/settings.json` du dépôt à la place, ou activez-les pour votre compte claude.ai afin que Claude Code les charge en tant que [plugins synchronisés](/docs/fr/plugins-reference#synced-plugins) |

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

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

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

304| Authentification interactive comme AWS SSO | Non | Non supporté. SSO nécessite une connexion basée sur un navigateur qui ne peut pas s'exécuter dans une session cloud |

305 

306Pour rendre votre propre configuration disponible dans les sessions cloud, validez-la dans le dépôt.

307 

308Quiconque utilise l'environnement peut lire ses variables d'environnement et son script de configuration. La note de la boîte de dialogue sous **Environment variables** le dit et avertit contre l'ajout de secrets dedans. Sur les plans Pro et Max, stockez une clé que le proxy d'agent peut joindre en tant qu'[identifiant API](#add-api-credentials) à la place.

309 

310<h3 id="installed-tools">

311 Outils installés

312</h3>

313 

314Les sessions cloud sont livrées avec les runtimes de langage courants, les outils de construction et les bases de données pré-installés. Le tableau ci-dessous résume ce qui est inclus par catégorie.

315 

316| Catégorie | Inclus |

317| :------------------- | :----------------------------------------------------------------------- |

318| **Python** | Python 3.x avec pip, poetry, uv, black, mypy, pytest, ruff |

319| **Node.js** | 20, 21 et 22, avec npm, yarn, pnpm, bun¹, eslint, prettier, chromedriver |

320| **Ruby** | 3.1, 3.2, 3.3 avec gem, bundler, rbenv |

321| **PHP** | 8.3 avec Composer |

322| **Java** | OpenJDK 21 avec Maven et Gradle |

323| **Go** | Go avec support des modules |

324| **Rust** | rustc et cargo |

325| **C/C++** | GCC, Clang, cmake, ninja, conan |

326| **Docker** | docker, dockerd, docker compose |

327| **Bases de données** | PostgreSQL 16, Redis 7.0 |

328| **Utilitaires** | git, gh, jq, yq, ripgrep, tmux, vim, nano |

329 

330¹ 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.

331 

332Pour obtenir les versions de la plupart des outils de ce tableau, demandez à Claude d'exécuter `check-tools` dans une session cloud. C'est une commande shell installée sur la VM de la session, pas une commande slash ; vous demandez à Claude car [Claude exécute toutes les commandes VM pour vous](#run-tests-start-services-and-add-packages). Pour un outil qu'il ne rapporte pas, comme Ruby, PHP, bun, PostgreSQL ou Redis, demandez à Claude d'exécuter la propre commande de version de l'outil, par exemple `psql --version`.

333 

334Les versions de Node.js sont installées sur `/opt/node20`, `/opt/node21` et `/opt/node22`, avec 22 sur `PATH` par défaut. Pour travailler avec une version différente, demandez à Claude de préfixer le répertoire `bin` de cette version, comme `/opt/node20/bin`, à `PATH`.

335 

336Les chaînes d'outils en dehors de cette liste, comme le SDK .NET, ne sont pas pré-installées même quand leurs registres de paquets sont sur la [liste d'autorisation par défaut](#default-allowed-domains). Installez-les avec un [script de configuration](#setup-scripts).

337 

338<h3 id="work-with-github-issues-and-pull-requests">

339 Travaillez avec les problèmes et les demandes de tirage GitHub

340</h3>

341 

342Les 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](/docs/fr/claude-code-on-the-web#github-authentication-options), donc votre jeton ne pénètre jamais dans le conteneur.

343 

344Vous pouvez définir `GH_TOKEN` ou `GITHUB_TOKEN` vous-même dans les [paramètres d'environnement](#set-environment-variables), ou laisser les deux non définis et laisser le [proxy GitHub](#github-proxy) s'authentifier pour vous :

345 

346* Si vous définissez un jeton, il passe au conteneur inchangé, donc vos scripts et le [`gh` CLI](https://cli.github.com) de GitHub utilisent directement.

347* Si vous ne définissez ni l'un ni l'autre et que le [proxy GitHub](#github-proxy) gère l'authentification pour votre session, les deux variables lisent comme la chaîne d'espace réservé `proxy-injected` dans les commandes que Claude exécute, et le proxy substitue vos vrais identifiants sur les requêtes GitHub sortantes. `gh` fonctionne sans un jeton de votre côté, mais un script qui lit `GITHUB_TOKEN` directement obtient l'espace réservé, pas un jeton utilisable.

348 

349Un jeton que vous définissez est une variable d'environnement ordinaire, donc quiconque utilise l'environnement peut le lire ; le chemin du proxy garde l'identifiant hors de la configuration de l'environnement et de la VM de la session.

350 

351Pour vérifier quel cas s'applique à votre session, demandez à Claude d'exécuter `echo $GH_TOKEN`.

352 

353Le [`gh` CLI](https://cli.github.com) de GitHub est 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`, demandez à Claude de l'exécuter. `gh` lit `GH_TOKEN` automatiquement, donc vous n'avez pas besoin d'exécuter `gh auth login`.

354 

355<h3 id="link-output-back-to-the-session">

356 Liez la sortie à la session

357</h3>

358 

359Chaque 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 validation, les publications Slack ou les rapports générés afin qu'un examinateur puisse ouvrir l'exécution qui les a produits.

360 

361Les validations que Claude crée dans une session cloud incluent une remorque git `Claude-Session: <url>`, et les corps PR incluent l'URL de la session sur sa propre ligne. Cela nécessite v2.1.179 ou ultérieur. Pour omettre la remorque et le lien du corps PR, définissez [`attribution.sessionUrl`](/docs/fr/settings-reference#attribution-sessionurl) sur `false`. Le paramètre nécessite v2.1.182 ou ultérieur.

362 

363Pour inclure le lien de session dans quelque chose d'autre qu'une validation ou une PR, comme un message Slack que Claude publie ou un fichier de rapport qu'il écrit, demandez à Claude d'exécuter la commande suivante et d'utiliser sa sortie. La commande convertit le préfixe `cse_` dans la valeur de la variable d'environnement au préfixe `session_` que l'URL de transcription attend :

364 

365```bash theme={null}

366echo "https://claude.ai/code/${CLAUDE_CODE_REMOTE_SESSION_ID/#cse_/session_}"

367```

368 

369<h3 id="run-tests-start-services-and-add-packages">

370 Exécutez des tests, démarrez des services et ajoutez des paquets

371</h3>

372 

373Vous n'avez pas d'accès shell à la VM de la session. Claude exécute chaque commande pour vous, donc formulez les tâches de cette section comme des demandes dans votre invite.

374 

375<h4 id="run-tests">

376 Exécutez des tests

377</h4>

378 

379Claude 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 qui viennent avec les [chaînes d'outils pré-installées](#installed-tools), comme pytest et cargo test, fonctionnent sans configuration supplémentaire. Un exécuteur que votre projet déclare comme dépendance, comme jest, s'installe avec vos dépendances.

380 

381<h4 id="start-services">

382 Démarrez des services

383</h4>

384 

385PostgreSQL et Redis sont pré-installés mais ne s'exécutent pas par défaut. Demandez à Claude de démarrer celui dont vous avez besoin ; les commandes qu'il exécute sont :

386 

387```bash theme={null}

388service postgresql start

389```

390 

391```bash theme={null}

392service redis-server start

393```

394 

395Docker est disponible pour exécuter des 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 [défauts Trusted](#default-allowed-domains) incluent Docker Hub et d'autres registres courants.

396 

397Si vos images sont grandes ou lentes à extraire, ajoutez `docker compose pull` ou `docker compose build` à votre [script de configuration](#setup-scripts). Le [cache d'environnement](#environment-caching) conserve les images extraites, donc chaque nouvelle session les a sur le disque. Le cache stocke seulement les fichiers, pas les processus en cours d'exécution, donc Claude démarre toujours les conteneurs chaque session.

398 

399<h4 id="add-packages">

400 Ajoutez des paquets

401</h4>

402 

403Pour ajouter des paquets qui ne sont pas pré-installés, utilisez un [script de configuration](#setup-scripts). Le [cache d'environnement](#environment-caching) conserve ce que le script installe, donc les paquets que vous installez là sont disponibles au démarrage de chaque session sans réinstallation à chaque fois. Vous pouvez aussi demander à Claude d'installer des paquets en milieu de session, mais ces installations ne se reportent pas à d'autres sessions.

404 

405<h3 id="resource-limits">

406 Limites de ressources

407</h3>

408 

409Les sessions cloud dans les environnements hébergés par Anthropic s'exécutent avec des plafonds de ressources approximatifs qui peuvent changer au fil du temps :

410 

411* 4 vCPU

412* 16 Go de RAM

413* 30 Go de disque

414 

415La VM peut arrêter les tâches qui ont besoin de beaucoup plus de mémoire, comme les gros travaux de construction ou les tests gourmands en mémoire. Pour les charges de travail au-delà de ces limites, utilisez [Remote Control](/docs/fr/remote-control) pour exécuter Claude Code sur votre propre matériel, ou exécutez les sessions cloud dans un [environnement auto-hébergé](/docs/fr/self-hosted-environments) sur le calcul que votre organisation exploite.

416 

417<h2 id="setup-scripts">

418 Scripts de configuration

419</h2>

420 

421Un script de configuration est un script Bash qui s'exécute quand une nouvelle session cloud démarre, 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 qui n'est pas pré-installé.

422 

423Les 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.

424 

425Pour ajouter un script de configuration, ouvrez la boîte de dialogue des paramètres d'environnement et entrez votre script dans le champ **Setup script**.

426 

427Cet exemple installe [ShellCheck](https://www.shellcheck.net/), qui n'est pas pré-installé.

428 

429```bash theme={null}

430#!/bin/bash

431apt update && apt install -y shellcheck

432```

433 

434<h3 id="script-requirements">

435 Exigences du script

436</h3>

437 

438Un script de configuration a trois contraintes à contourner :

439 

440* **Quitter zéro** : si le script quitte non-zéro, la session échoue à démarrer. Ajoutez `|| true` aux commandes non critiques afin qu'une défaillance d'installation intermittente ne bloque pas la session.

441* **Terminer en cinq minutes** : gardez le temps d'exécution total du script sous environ cinq minutes afin que le [cache d'environnement](#environment-caching) puisse se construire. Exécutez les installations indépendantes en parallèle avec `&` et `wait`, et déplacez tout téléchargement unique qui ne rentre pas dans un crochet [SessionStart](#setup-scripts-vs-sessionstart-hooks) qui le lance en arrière-plan.

442* **Accès réseau pour les installations** : les installations de paquets doivent atteindre les registres. Le niveau **Trusted** par défaut couvre les [registres de paquets courants](#default-allowed-domains) incluant npm, PyPI, RubyGems et crates.io ; avec un accès réseau **None**, les installations échouent.

443 

444<h3 id="environment-caching">

445 Mise en cache d'environnement

446</h3>

447 

448Le script de configuration s'exécute la première fois que vous démarrez une session dans un environnement. Après sa fin, Anthropic crée un instantané du système de fichiers et réutilise cet instantané 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 sautent l'étape du script de configuration. Cela garde le démarrage rapide même quand le script installe de grandes chaînes d'outils ou extrait des images de conteneur.

449 

450Le cache est un instantané du système de fichiers, donc il conserve ce que le script de configuration écrit sur le disque et perd tout ce qui était seulement en cours d'exécution. Les paquets que vous installez, les images Docker que vous extrayez et les fichiers que vous écrivez se reportent tous. Une base de données que le script a démarrée, une pile `docker compose up`, ou tout autre processus en arrière-plan ne le fait pas ; démarrez-les par session en demandant à Claude ou avec un crochet [SessionStart](#setup-scripts-vs-sessionstart-hooks).

451 

452Le script de configuration s'exécute à nouveau pour reconstruire le cache quand vous modifiez le script de configuration de l'environnement ou les hôtes réseau autorisés, et quand le cache atteint son expiration après environ sept jours. Reprendre une session existante ne réexécute jamais le script de configuration.

453 

454Vous n'avez pas besoin d'activer la mise en cache ou de gérer les instantanés vous-même.

455 

456<h3 id="setup-scripts-vs-sessionstart-hooks">

457 Scripts de configuration vs. crochets SessionStart

458</h3>

459 

460Utilisez un script de configuration pour provisionner la VM elle-même : les chaînes d'outils et les outils CLI qui ne sont pas [pré-installés](#installed-tools). Utilisez un crochet [SessionStart](/docs/fr/hooks#sessionstart) pour la configuration du projet qui devrait s'exécuter partout, cloud et local, comme `npm install`.

461 

462Les scripts de configuration et les crochets SessionStart s'exécutent dans un ordre fixe quand une session cloud démarre. Le tableau compare où vous les configurez, quand ils s'exécutent et où ils s'exécutent.

463 

464| | Scripts de configuration | Crochets SessionStart |

465| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

466| **Où vous les configurez** | La boîte de dialogue d'environnement sur [claude.ai/code](https://claude.ai/code), plus la page d'administration **Cloud environments** pour les [environnements partagés](#organization-shared-environments) | Un [fichier de paramètres](/docs/fr/settings#where-settings-live) comme le `.claude/settings.json` de votre dépôt ; consultez [Ce qui est reporté de votre configuration](#what-carries-over-from-your-setup) pour savoir quels fichiers atteignent une session cloud |

467| **Quand ils s'exécutent** | Avant le lancement de Claude Code, sautés quand un [environnement en cache](#environment-caching) existe | Après le lancement de Claude Code, sur chaque session incluant la reprise |

468| **Où ils s'exécutent** | Sessions cloud uniquement | Sessions locales et cloud |

469 

470Si vous avez des crochets SessionStart dans votre `~/.claude/settings.json` au niveau utilisateur, ne vous attendez pas à les voir dans le cloud : les paramètres au niveau utilisateur restent sur votre machine. Quels autres crochets s'exécutent dépend de l'endroit où la session s'exécute :

471 

472* **Environnement hébergé par Anthropic** : Claude Code exécute les crochets du dépôt et de vos [paramètres gérés par le serveur](/docs/fr/server-managed-settings) de l'organisation.

473* **[Environnement auto-hébergé](/docs/fr/self-hosted-environments-configuration#permissions-and-tool-approval)** : Claude Code exécute également les crochets que l'opérateur a ensemencés à partir de `~/.claude/` de l'hôte d'exécuteur, et les crochets dans le fichier de paramètres gérés de l'image d'exécuteur quand ce fichier est l'une des [sources gérées que Claude Code applique](/docs/fr/managed-settings#how-claude-code-combines-managed-sources).

474 

475<h3 id="install-dependencies-with-a-sessionstart-hook">

476 Installez les dépendances avec un crochet SessionStart

477</h3>

478 

479Pour installer les dépendances seulement dans les sessions cloud, associez un crochet SessionStart avec un script qui vérifie où il s'exécute.

480 

481Tout d'abord, ajoutez un crochet SessionStart au `.claude/settings.json` de votre dépôt. Cette configuration dit à Claude Code d'exécuter `scripts/install_pkgs.sh` à partir de votre dépôt chaque fois qu'une session démarre ou reprend :

482 

483```json theme={null}

484{

485 "hooks": {

486 "SessionStart": [

487 {

488 "matcher": "startup|resume",

489 "hooks": [

490 {

491 "type": "command",

492 "command": "bash \"$CLAUDE_PROJECT_DIR\"/scripts/install_pkgs.sh"

493 }

494 ]

495 }

496 ]

497 }

498}

499```

500 

501Le `matcher` limite le crochet aux événements `startup` et `resume`, et `$CLAUDE_PROJECT_DIR` se résout à la racine du dépôt, donc le crochet trouve le script quel que soit le répertoire de travail de la session.

502 

503Ensuite, créez le script sur `scripts/install_pkgs.sh`. Il quitte immédiatement en dehors du cloud, puis installe vos dépendances :

504 

505```bash theme={null}

506#!/bin/bash

507 

508if [ "$CLAUDE_CODE_REMOTE" != "true" ]; then

509 exit 0

510fi

511 

512npm install

513pip install -r requirements.txt

514exit 0

515```

516 

517La vérification `CLAUDE_CODE_REMOTE` est ce qui limite l'installation aux sessions cloud : la VM de la session porte cette variable comme `true`, elle n'est jamais `true` localement, donc sur votre ordinateur portable le script quitte avant d'installer quoi que ce soit.

518 

519Ensemble, les deux fichiers donnent à chaque session cloud un `npm install` et `pip install` frais au démarrage tout en laissant les sessions locales intactes.

520 

521<h4 id="limitations-in-cloud-sessions">

522 Limitations dans les sessions cloud

523</h4>

524 

525Les crochets SessionStart se comportent de la même manière dans le cloud qu'en local, avec ces mises en garde :

526 

527* **Pas de limitation au cloud uniquement** : les crochets 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 montré ci-dessus.

528* **Nécessite un accès réseau** : les commandes d'installation doivent atteindre les registres de paquets. Si votre environnement utilise un accès réseau **None**, ces crochets échouent. La [liste d'autorisation par défaut](#default-allowed-domains) sous **Trusted** couvre npm, PyPI, RubyGems et crates.io.

529* **Compatibilité proxy** : dans les environnements hébergés par Anthropic, tout le trafic sortant passe par un [proxy de sécurité](#security-proxy), et certains gestionnaires de paquets ne fonctionnent pas correctement avec lui ; Bun est un exemple connu. Dans un [environnement auto-hébergé](/docs/fr/self-hosted-environments-deploy#default-deny-egress), le trafic sortant va via votre propre limite réseau à la place.

530* **Ajoute une latence de démarrage** : les crochets 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 d'environnement](#environment-caching). Gardez les scripts d'installation rapides en vérifiant si les dépendances sont déjà présentes avant de réinstaller.

531 

532Pour personnaliser l'image de base, utilisez un script de configuration pour installer ce dont vous avez besoin en haut de l'[image fournie](#installed-tools), ou exécutez votre propre image en tant que conteneur à côté de Claude avec `docker compose`. Remplacer l'image de base entièrement n'est pas encore supporté.

533 

534<h2 id="default-allowed-domains">

535 Domaines autorisés par défaut

536</h2>

537 

538Avec un accès réseau **Trusted**, les sessions peuvent atteindre les domaines suivants 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`.

539 

540<AccordionGroup>

541 <Accordion title="Services Anthropic">

542 * api.anthropic.com

543 * statsig.anthropic.com

544 * docs.claude.com

545 * platform.claude.com

546 * code.claude.com

547 * claude.ai

548 </Accordion>

549 

550 <Accordion title="Contrôle de version">

551 * github.com

552 * [www.github.com](http://www.github.com)

553 * api.github.com

554 * npm.pkg.github.com

555 * raw\.githubusercontent.com

556 * pkg-npm.githubusercontent.com

557 * objects.githubusercontent.com

558 * release-assets.githubusercontent.com

559 * codeload.github.com

560 * avatars.githubusercontent.com

561 * camo.githubusercontent.com

562 * gist.github.com

563 * gitlab.com

564 * [www.gitlab.com](http://www.gitlab.com)

565 * registry.gitlab.com

566 * bitbucket.org

567 * [www.bitbucket.org](http://www.bitbucket.org)

568 * api.bitbucket.org

569 </Accordion>

570 

571 <Accordion title="Registres de conteneurs">

572 * registry-1.docker.io

573 * auth.docker.io

574 * index.docker.io

575 * hub.docker.com

576 * [www.docker.com](http://www.docker.com)

577 * production.cloudflare.docker.com

578 * download.docker.com

579 * gcr.io

580 * \*.gcr.io

581 * ghcr.io

582 * mcr.microsoft.com

583 * \*.data.mcr.microsoft.com

584 * public.ecr.aws

585 </Accordion>

586 

587 <Accordion title="Plateformes cloud">

588 * cloud.google.com

589 * accounts.google.com

590 * gcloud.google.com

591 * \*.googleapis.com

592 * storage.googleapis.com

593 * compute.googleapis.com

594 * container.googleapis.com

595 * azure.com

596 * portal.azure.com

597 * microsoft.com

598 * [www.microsoft.com](http://www.microsoft.com)

599 * \*.microsoftonline.com

600 * packages.microsoft.com

601 * dotnet.microsoft.com

602 * dot.net

603 * visualstudio.com

604 * dev.azure.com

605 * \*.amazonaws.com

606 * \*.api.aws

607 * oracle.com

608 * [www.oracle.com](http://www.oracle.com)

609 * java.com

610 * [www.java.com](http://www.java.com)

611 * java.net

612 * [www.java.net](http://www.java.net)

613 * download.oracle.com

614 * yum.oracle.com

615 </Accordion>

616 

617 <Accordion title="Gestionnaires de paquets JavaScript et Node">

618 * registry.npmjs.org

619 * [www.npmjs.com](http://www.npmjs.com)

620 * [www.npmjs.org](http://www.npmjs.org)

621 * npmjs.com

622 * npmjs.org

623 * yarnpkg.com

624 * registry.yarnpkg.com

625 </Accordion>

626 

627 <Accordion title="Gestionnaires de paquets Python">

628 * pypi.org

629 * [www.pypi.org](http://www.pypi.org)

630 * files.pythonhosted.org

631 * pythonhosted.org

632 * test.pypi.org

633 * pypi.python.org

634 * pypa.io

635 * [www.pypa.io](http://www.pypa.io)

636 </Accordion>

637 

638 <Accordion title="Gestionnaires de paquets Ruby">

639 * rubygems.org

640 * [www.rubygems.org](http://www.rubygems.org)

641 * api.rubygems.org

642 * index.rubygems.org

643 * ruby-lang.org

644 * [www.ruby-lang.org](http://www.ruby-lang.org)

645 * rubyforge.org

646 * [www.rubyforge.org](http://www.rubyforge.org)

647 * rubyonrails.org

648 * [www.rubyonrails.org](http://www.rubyonrails.org)

649 * rvm.io

650 * get.rvm.io

651 </Accordion>

652 

653 <Accordion title="Gestionnaires de paquets Rust">

654 * crates.io

655 * [www.crates.io](http://www.crates.io)

656 * index.crates.io

657 * static.crates.io

658 * rustup.rs

659 * static.rust-lang.org

660 * [www.rust-lang.org](http://www.rust-lang.org)

661 </Accordion>

662 

663 <Accordion title="Gestionnaires de paquets Go">

664 * proxy.golang.org

665 * sum.golang.org

666 * index.golang.org

667 * golang.org

668 * [www.golang.org](http://www.golang.org)

669 * goproxy.io

670 * pkg.go.dev

671 </Accordion>

672 

673 <Accordion title="Gestionnaires de paquets JVM">

674 * maven.org

675 * repo.maven.org

676 * central.maven.org

677 * repo1.maven.org

678 * repo.maven.apache.org

679 * jcenter.bintray.com

680 * gradle.org

681 * [www.gradle.org](http://www.gradle.org)

682 * services.gradle.org

683 * plugins.gradle.org

684 * kotlinlang.org

685 * [www.kotlinlang.org](http://www.kotlinlang.org)

686 * spring.io

687 * repo.spring.io

688 </Accordion>

689 

690 <Accordion title="Autres gestionnaires de paquets">

691 * packagist.org (PHP Composer)

692 * [www.packagist.org](http://www.packagist.org)

693 * repo.packagist.org

694 * nuget.org (.NET NuGet)

695 * [www.nuget.org](http://www.nuget.org)

696 * api.nuget.org

697 * pub.dev (Dart/Flutter)

698 * api.pub.dev

699 * hex.pm (Elixir/Erlang)

700 * [www.hex.pm](http://www.hex.pm)

701 * cpan.org (Perl CPAN)

702 * [www.cpan.org](http://www.cpan.org)

703 * metacpan.org

704 * [www.metacpan.org](http://www.metacpan.org)

705 * api.metacpan.org

706 * cocoapods.org (iOS/macOS)

707 * [www.cocoapods.org](http://www.cocoapods.org)

708 * cdn.cocoapods.org

709 * haskell.org

710 * [www.haskell.org](http://www.haskell.org)

711 * hackage.haskell.org

712 * swift.org

713 * [www.swift.org](http://www.swift.org)

714 </Accordion>

715 

716 <Accordion title="Distributions Linux">

717 * archive.ubuntu.com

718 * security.ubuntu.com

719 * ubuntu.com

720 * [www.ubuntu.com](http://www.ubuntu.com)

721 * \*.ubuntu.com

722 * ppa.launchpad.net

723 * launchpad.net

724 * [www.launchpad.net](http://www.launchpad.net)

725 * \*.nixos.org

726 </Accordion>

727 

728 <Accordion title="Outils de développement et plateformes">

729 * dl.k8s.io (Kubernetes)

730 * pkgs.k8s.io

731 * k8s.io

732 * [www.k8s.io](http://www.k8s.io)

733 * releases.hashicorp.com (HashiCorp)

734 * apt.releases.hashicorp.com

735 * rpm.releases.hashicorp.com

736 * archive.releases.hashicorp.com

737 * hashicorp.com

738 * [www.hashicorp.com](http://www.hashicorp.com)

739 * repo.anaconda.com (Anaconda/Conda)

740 * conda.anaconda.org

741 * anaconda.org

742 * [www.anaconda.com](http://www.anaconda.com)

743 * anaconda.com

744 * continuum.io

745 * apache.org (Apache)

746 * [www.apache.org](http://www.apache.org)

747 * archive.apache.org

748 * downloads.apache.org

749 * eclipse.org (Eclipse)

750 * [www.eclipse.org](http://www.eclipse.org)

751 * download.eclipse.org

752 * nodejs.org (Node.js)

753 * [www.nodejs.org](http://www.nodejs.org)

754 * developer.apple.com

755 * developer.android.com

756 * pkg.stainless.com

757 * binaries.prisma.sh

758 </Accordion>

759 

760 <Accordion title="Services cloud et surveillance">

761 * statsig.com

762 * [www.statsig.com](http://www.statsig.com)

763 * api.statsig.com

764 * sentry.io

765 * \*.sentry.io

766 * downloads.sentry-cdn.com

767 * http-intake.logs.datadoghq.com

768 * browser-intake-us5-datadoghq.com

769 * \*.datadoghq.com

770 * \*.datadoghq.eu

771 * api.honeycomb.io

772 </Accordion>

773 

774 <Accordion title="Livraison de contenu et miroirs">

775 * sourceforge.net

776 * \*.sourceforge.net

777 * packagecloud.io

778 * \*.packagecloud.io

779 * fonts.googleapis.com

780 * fonts.gstatic.com

781 </Accordion>

782 

783 <Accordion title="Schéma et configuration">

784 * json-schema.org

785 * [www.json-schema.org](http://www.json-schema.org)

786 * json.schemastore.org

787 * [www.schemastore.org](http://www.schemastore.org)

788 </Accordion>

789 

790 <Accordion title="Model Context Protocol">

791 * \*.modelcontextprotocol.io

792 </Accordion>

793</AccordionGroup>

794 

795<h2 id="related-resources">

796 Ressources connexes

797</h2>

798 

799* [Claude Code sur le web](/docs/fr/claude-code-on-the-web) : démarrez, gérez et partagez les sessions cloud

800* [Démarrage rapide web](/docs/fr/web-quickstart) : connectez GitHub et démarrez votre première session cloud

801* [Claude Tag](https://claude.com/docs/claude-tag/overview) : les sessions que Claude démarre à partir de Slack s'exécutent dans les mêmes environnements

802* [Routines](/docs/fr/routines) : les exécutions programmées utilisent les mêmes environnements et niveaux d'accès réseau

803* [Remote Control](/docs/fr/remote-control) : exécutez les sessions sur le réseau et les fichiers de votre propre machine à la place

804* [Environnements auto-hébergés](/docs/fr/self-hosted-environments) : exécutez les sessions cloud sur l'infrastructure propre de votre organisation

805* [Crochets SessionStart](/docs/fr/hooks#sessionstart) : configuration validée dans le dépôt qui s'exécute dans les sessions locales et cloud

806* [Paramètres gérés par le serveur](/docs/fr/server-managed-settings) : politique organisationnelle qui atteint les sessions cloud

code-review.md +5 −1

Details

343 Vous pouvez également ajouter des drapeaux :343 Vous pouvez également ajouter des drapeaux :

344 344 

345 * `--fix` : applique les résultats à votre arborescence de travail après la révision345 * `--fix` : applique les résultats à votre arborescence de travail après la révision

346 * `--comment` : publie les résultats sous forme de commentaires PR en ligne346 * `--comment` : publie les résultats sous forme de commentaires en ligne sur une demande de tirage GitHub, ou sur une demande de fusion GitLab sous forme de note unique

347 * `--post` : sur une révision `ultra` en cloud d'une demande de tirage `github.com`, présélectionne la publication des résultats terminés à la PR dans la boîte de dialogue de lancement ; voir [Publier les résultats à la demande de tirage](/docs/fr/ultrareview#post-findings-to-the-pull-request). Nécessite Claude Code v2.1.227 ou ultérieur347 * `--post` : sur une révision `ultra` en cloud d'une demande de tirage `github.com`, présélectionne la publication des résultats terminés à la PR dans la boîte de dialogue de lancement ; voir [Publier les résultats à la demande de tirage](/docs/fr/ultrareview#post-findings-to-the-pull-request). Nécessite Claude Code v2.1.227 ou ultérieur

348 

349 Quand vous passez `--comment` pour une demande de fusion GitLab, Claude Code publie les résultats via l'interface de ligne de commande `glab` de GitLab. Nécessite Claude Code v2.1.257 ou ultérieur. Quand `glab` n'est pas installé, Claude imprime les résultats dans le terminal à la place.

350 

351 Passez la demande de fusion comme son URL ou une référence `!123`. Claude Code traite un nombre nu ou un nom de branche comme une demande de fusion uniquement quand l'extraction d'origine est sur `gitlab.com`. Sur une instance GitLab auto-gérée, passez l'URL ou la forme `!123`.

348 </Step>352 </Step>

349 353 

350 <Step title="Continuer à travailler">354 <Step title="Continuer à travailler">

commands.md +9 −9

Details

52</Note>52</Note>

53 53 

54| Commande | Objectif |54| Commande | Objectif |

55| :-------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |55| :----------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

56| `/add-dir <path>` | Ajouter un répertoire de travail pour l'accès aux fichiers pendant la session actuelle. Tapez un chemin partiel pour voir les suggestions de répertoires correspondants ; appuyez sur `Tab` pour en accepter un. La plupart de la configuration `.claude/` [n'est pas découverte](/docs/fr/permissions#additional-directories-grant-file-access-not-configuration) à partir du répertoire ajouté. Vous ne pouvez pas ajouter la plupart des [chemins réseau](/docs/fr/errors#working-directory-is-a-network-path), tels que `\\server\share`. Après un ajout réussi, vos [hooks `DirectoryAdded`](/docs/fr/hooks#directoryadded) s'exécutent. Lorsque vous l'exécutez pendant que Claude répond, Claude Code vous demande de confirmer le répertoire immédiatement, et une fois que vous confirmez, l'appel d'outil suivant de Claude dans le même tour peut y accéder. Avant la v2.1.234, Claude Code mettait la commande en file d'attente jusqu'à la fin du tour |56| `/add-dir <path>` | Ajouter un répertoire de travail pour l'accès aux fichiers pendant la session actuelle. Tapez un chemin partiel pour voir les suggestions de répertoires correspondants ; appuyez sur `Tab` pour en accepter un. La plupart de la configuration `.claude/` [n'est pas découverte](/docs/fr/permissions#additional-directories-grant-file-access-not-configuration) à partir du répertoire ajouté. Vous ne pouvez pas ajouter la plupart des [chemins réseau](/docs/fr/errors#working-directory-is-a-network-path), tels que `\\server\share`. Après un ajout réussi, vos [hooks `DirectoryAdded`](/docs/fr/hooks#directoryadded) s'exécutent. Lorsque vous l'exécutez pendant que Claude répond, Claude Code vous demande de confirmer le répertoire immédiatement, et une fois que vous confirmez, l'appel d'outil suivant de Claude dans le même tour peut y accéder. Avant la v2.1.234, Claude Code mettait la commande en file d'attente jusqu'à la fin du tour |

57| `/advisor [model\|off]` | Activer ou désactiver l'[outil conseiller](/docs/fr/advisor), qui consulte un deuxième modèle pour obtenir des conseils à des moments clés lors d'une tâche. Accepte `fable`, `opus`, `sonnet`, ou un ID de modèle complet. `fable` nécessite un [accès à Fable](/docs/fr/advisor#choose-an-advisor-model). Sans argument, ouvre un sélecteur |57| `/advisor [model\|off]` | Activer ou désactiver l'[outil conseiller](/docs/fr/advisor), qui consulte un deuxième modèle pour obtenir des conseils à des moments clés lors d'une tâche. Accepte `fable`, `opus`, `sonnet`, ou un ID de modèle complet. `fable` nécessite un [accès à Fable](/docs/fr/advisor#choose-an-advisor-model). Sans argument, ouvre un sélecteur. Dans une session sans terminal interactif, ou via [Remote Control](/docs/fr/remote-control#limitations), passez le modèle ou `off` en tant qu'argument ; sans argument là-bas, la commande affiche le conseiller actuel sous forme de texte. Ces formes nécessitent Claude Code v2.1.260 ou ultérieur |

58| `/agents` | À partir de la v2.1.198, l'exécution de `/agents` affiche un rappel pour demander à Claude de créer ou de gérer des [sous-agents](/docs/fr/sub-agents), ou pour modifier `.claude/agents/` ou `~/.claude/agents/` directement. Sur la v2.1.197 et antérieures, ouvre une interface interactive pour créer et gérer les configurations de sous-agents |58| `/agents` | À partir de la v2.1.198, l'exécution de `/agents` affiche un rappel pour demander à Claude de créer ou de gérer des [sous-agents](/docs/fr/sub-agents), ou pour modifier `.claude/agents/` ou `~/.claude/agents/` directement. Sur la v2.1.197 et antérieures, ouvre une interface interactive pour créer et gérer les configurations de sous-agents |

59| `/artifacts` | Répertorier les [artefacts](/docs/fr/artifacts#find-an-artifact-again) que vous possédez ou qui sont partagés avec vous, puis en joindre un à la session, l'ouvrir dans votre navigateur, ou copier son lien. Disponible où les [artefacts](/docs/fr/artifacts#availability) le sont. Nécessite Claude Code v2.1.208 ou ultérieur ; l'attachement avec `Enter` nécessite la v2.1.216 |59| `/artifacts` | Répertorier les [artefacts](/docs/fr/artifacts#find-an-artifact-again) que vous possédez ou qui sont partagés avec vous, puis en joindre un à la session, l'ouvrir dans votre navigateur, ou copier son lien. Disponible où les [artefacts](/docs/fr/artifacts#availability) le sont. Nécessite Claude Code v2.1.208 ou ultérieur ; l'attachement avec `Enter` nécessite la v2.1.216 |

60| `/auto-mode-setup` | [Rédiger les entrées `autoMode.environment`](/docs/fr/auto-mode-config#generate-environment-entries) à partir de votre projet et des sessions récentes, puis examiner le brouillon et l'enregistrer dans vos paramètres utilisateur. Nécessite un plan Pro, Max ou Team et Claude Code v2.1.228 ou ultérieur. Sur Windows natif, nécessite la v2.1.233 ou ultérieur |60| `/auto-mode-setup` | [Rédiger les entrées `autoMode.environment`](/docs/fr/auto-mode-config#generate-environment-entries) à partir de votre projet et des sessions récentes, puis examiner le brouillon et l'enregistrer dans vos paramètres utilisateur. Nécessite un plan Pro, Max ou Team et Claude Code v2.1.228 ou ultérieur. Sur Windows natif, nécessite la v2.1.233 ou ultérieur |


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

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

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

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

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

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

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

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

75| `/config [key=value ...]` | Ouvrir l'interface [Paramètres](/docs/fr/settings) pour ajuster le thème, le modèle, [le style de sortie](/docs/fr/output-styles), et d'autres préférences. À partir de la v2.1.181, passez une ou plusieurs paires `key=value` pour définir un paramètre directement sans ouvrir l'interface, par exemple `/config thinking=false`. À partir de la v2.1.182, les clés de raccourci nommées sont également acceptées, telles que `/config theme=dark` ou `/config model=sonnet`. Le formulaire `key=value` fonctionne également en mode non interactif (`-p`) et à partir de l'application mobile Claude via [Remote Control](/docs/fr/remote-control). Le formulaire `key=value` ne peut pas activer un paramètre qui nécessite votre confirmation dans le panneau, tel que [`autoContinueAtUsageLimit`](/docs/fr/interactive-mode#turn-automatic-continue-off), bien qu'il puisse en désactiver un. Exécutez `/config --help` pour répertorier les clés qu'il accepte. Alias : `/settings` |75| `/config [key=value ...]` | Ouvrir l'interface [Paramètres](/docs/fr/settings) pour ajuster le thème, le modèle, [le style de sortie](/docs/fr/output-styles), et d'autres préférences. À partir de la v2.1.181, passez une ou plusieurs paires `key=value` pour définir un paramètre directement sans ouvrir l'interface, par exemple `/config thinking=false`. À partir de la v2.1.182, les clés de raccourci nommées sont également acceptées, telles que `/config theme=dark` ou `/config model=sonnet`. Le formulaire `key=value` fonctionne également en mode non interactif (`-p`) et à partir de l'application mobile Claude via [Remote Control](/docs/fr/remote-control). Le formulaire `key=value` ne peut pas activer un paramètre qui nécessite votre confirmation dans le panneau, tel que [`autoContinueAtUsageLimit`](/docs/fr/interactive-mode#turn-automatic-continue-off), bien qu'il puisse en désactiver un. Exécutez `/config --help` pour répertorier les clés qu'il accepte. Alias : `/settings` |


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

82| `/design [brief]` | **[Skill](/docs/fr/skills#bundled-skills).** Rédiger des maquettes d'interface utilisateur, des flux d'écran, des pages de destination ou des affiches sous forme de plans de travail sur un seul canevas, publiés en tant qu'[artefact](/docs/fr/artifacts#draft-a-design-canvas) qui exécute un aperçu de recherche de l'éditeur Claude Design, par exemple `/design a settings screen for a mobile banking app`. Lorsque l'enregistrement est activé pour votre compte, vous modifiez les plans de travail sur le canevas et enregistrez pour publier une nouvelle version ; sinon, vous affichez le brouillon et l'exportez en PNG ou PDF. Nécessite une session où les [artefacts sont disponibles](/docs/fr/artifacts#availability) et Claude Code v2.1.234 ou ultérieur. Disponible sur l'API Anthropic. Sur Amazon Bedrock, la plateforme d'agents de Google Cloud, Microsoft Foundry et Claude Platform sur AWS, les artefacts ne sont pas disponibles, donc la commande n'est pas disponible là-bas |82| `/design [brief]` | **[Skill](/docs/fr/skills#bundled-skills).** Rédiger des maquettes d'interface utilisateur, des flux d'écran, des pages de destination ou des affiches sous forme de plans de travail sur un seul canevas, publiés en tant qu'[artefact](/docs/fr/artifacts#draft-a-design-canvas) qui exécute un aperçu de recherche de l'éditeur Claude Design, par exemple `/design a settings screen for a mobile banking app`. Lorsque l'enregistrement est activé pour votre compte, vous modifiez les plans de travail sur le canevas et enregistrez pour publier une nouvelle version ; sinon, vous affichez le brouillon et l'exportez en PNG ou PDF. Nécessite une session où les [artefacts sont disponibles](/docs/fr/artifacts#availability) et Claude Code v2.1.234 ou ultérieur. Disponible sur l'API Anthropic. Sur Amazon Bedrock, la plateforme d'agents de Google Cloud, Microsoft Foundry et Claude Platform sur AWS, les artefacts ne sont pas disponibles, donc la commande n'est pas disponible là-bas |

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

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

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

86| `/diff` | Examiner les modifications dans votre arborescence de travail, y compris les modifications que Claude a apportées jusqu'à présent. Consultez [Examiner les modifications avec /diff](/docs/fr/interactive-mode#review-changes-with-%2Fdiff) |86| `/diff` | Examiner les modifications dans votre arborescence de travail, y compris les modifications que Claude a apportées jusqu'à présent. Consultez [Examiner les modifications avec /diff](/docs/fr/interactive-mode#review-changes-with-%2Fdiff) |

87| `/doctor` | **[Skill](/docs/fr/skills#bundled-skills).** Exécuter une vérification de configuration qui diagnostique les problèmes et peut les corriger. Vérifie la santé de l'installation, y compris les installations en double ou résiduelles, les problèmes de `PATH`, et les fichiers de paramètres non analysables. Trouve les compétences, serveurs MCP et plugins inutilisés par rapport à leur coût de contexte, signale les [hooks](/docs/fr/hooks) lents, et vérifie une version plus récente sur votre [canal de version](/docs/fr/setup#configure-release-channel). Déduplique les fichiers `CLAUDE.md` locaux par rapport aux fichiers archivés, réduit les fichiers [`CLAUDE.md`](/docs/fr/memory#my-claude-md-is-too-large) archivés en coupant le contenu que Claude pourrait dériver de la base de code, et migre les conseils toujours chargés qui restent dans les [compétences](/docs/fr/skills) et les fichiers `CLAUDE.md` imbriqués qui se chargent à la demande. Offre également de faire du [mode auto](/docs/fr/permissions#permission-modes) votre défaut et de [pré-approuver](/docs/fr/permissions) les commandes en lecture seule fréquemment refusées. Signale d'abord les résultats et demande une confirmation avant de modifier quoi que ce soit. À partir du terminal, `claude doctor` affiche les diagnostics d'installation en lecture seule sans démarrer une session. Alias : `/checkup`. La vérification de réduction `CLAUDE.md` nécessite Claude Code v2.1.206 ou ultérieur. Avant la v2.1.205, `/doctor` ouvrait un écran de diagnostics en lecture seule et appuyer sur `f` envoyait le rapport à Claude |87| `/doctor` | **[Skill](/docs/fr/skills#bundled-skills).** Exécuter une vérification de configuration qui diagnostique les problèmes et peut les corriger. Vérifie la santé de l'installation, y compris les installations en double ou résiduelles, les problèmes de `PATH`, et les fichiers de paramètres non analysables. Trouve les compétences, serveurs MCP et plugins inutilisés par rapport à leur coût de contexte, signale les [hooks](/docs/fr/hooks) lents, et vérifie une version plus récente sur votre [canal de version](/docs/fr/setup#configure-release-channel). Déduplique les fichiers `CLAUDE.md` locaux par rapport aux fichiers archivés, réduit les fichiers [`CLAUDE.md`](/docs/fr/memory#my-claude-md-is-too-large) archivés en coupant le contenu que Claude pourrait dériver de la base de code, et migre les conseils toujours chargés qui restent dans les [compétences](/docs/fr/skills) et les fichiers `CLAUDE.md` imbriqués qui se chargent à la demande. Offre également de faire du [mode auto](/docs/fr/permissions#permission-modes) votre défaut et de [pré-approuver](/docs/fr/permissions) les commandes en lecture seule fréquemment refusées. Signale d'abord les résultats et demande une confirmation avant de modifier quoi que ce soit. À partir du terminal, `claude doctor` affiche les diagnostics d'installation en lecture seule sans démarrer une session. Alias : `/checkup`. La vérification de réduction `CLAUDE.md` nécessite Claude Code v2.1.206 ou ultérieur. Avant la v2.1.205, `/doctor` ouvrait un écran de diagnostics en lecture seule et appuyer sur `f` envoyait le rapport à Claude |


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

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

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

101| `/import [codex\|gemini] [--dry-run] [--yes]` | Apporter la configuration d'autres agents de codage sur votre machine, actuellement OpenAI Codex et Google Gemini CLI, dans Claude Code, y compris les fichiers d'instruction, les serveurs MCP, les commandes, les sous-agents et les compétences. En [mode non interactif](/docs/fr/headless) avec `-p`, `/import` répertorie ce qu'il a trouvé et vous donne la commande qui confirme l'importation. Ajoutez `--dry-run` pour prévisualiser sans rien écrire, ou `--yes` pour ignorer le sélecteur interactif. Non disponible sur Amazon Bedrock, la plateforme d'agents de Google Cloud, Microsoft Foundry ou Claude Platform sur AWS. Également indisponible lorsque vous désactivez la [récupération des drapeaux de fonctionnalité](/docs/fr/env-vars#features-that-need-feature-flag-fetching). Nécessite Claude Code v2.1.213 ou ultérieur |101| `/import [codex\|gemini\|cursor] [--dry-run] [--yes]` | Apporter la configuration d'OpenAI Codex, Google Gemini CLI, ou Cursor sur votre machine dans Claude Code, y compris les fichiers d'instruction, les serveurs MCP, les commandes, les sous-agents et les compétences. En [mode non interactif](/docs/fr/headless) avec `-p`, `/import` répertorie ce qu'il a trouvé et vous donne la commande qui confirme l'importation. Ajoutez `--dry-run` pour prévisualiser sans rien écrire, ou `--yes` pour ignorer le sélecteur interactif. Non disponible sur Amazon Bedrock, la plateforme d'agents de Google Cloud, Microsoft Foundry ou Claude Platform sur AWS, ou via une [passerelle d'applications Claude](/docs/fr/claude-apps-gateway#availability-and-limitations). Également indisponible lorsque vous désactivez la [récupération des drapeaux de fonctionnalité](/docs/fr/env-vars#features-that-need-feature-flag-fetching). Nécessite Claude Code v2.1.213 ou ultérieur. L'importation à partir de Cursor nécessite la v2.1.265 ou ultérieur |

102| `/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 compétences, les hooks et les fichiers de mémoire personnels. Si `/init` trouve une configuration à partir d'un agent de codage que `/import` supporte, il offre de la transférer avec `/import` |102| `/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 compétences, les hooks et les fichiers de mémoire personnels. Si `/init` trouve une configuration OpenAI Codex ou Google Gemini CLI, il offre de la transférer avec `/import` |

103| `/insights` | Générer un rapport HTML analysant vos sessions récentes sur cette machine : dans quels projets vous travaillez, comment vous utilisez Claude Code, où les choses se trompent, et les fonctionnalités à essayer. Non disponible dans les [sessions cloud](/docs/fr/claude-code-on-the-web). Consultez [Analyser vos modèles d'utilisation](/docs/fr/costs#analyze-your-usage-patterns) pour l'emplacement du rapport, la rétention et le coût |103| `/insights` | Générer un rapport HTML analysant vos sessions récentes sur cette machine : dans quels projets vous travaillez, comment vous utilisez Claude Code, où les choses se trompent, et les fonctionnalités à essayer. Non disponible dans les [sessions cloud](/docs/fr/claude-code-on-the-web). Consultez [Analyser vos modèles d'utilisation](/docs/fr/costs#analyze-your-usage-patterns) pour l'emplacement du rapport, la rétention et le coût |

104| `/install-github-app` | Installer l'application Claude GitHub pour un référentiel, avec une étape facultative pour configurer les flux de travail [GitHub Actions](/docs/fr/github-actions) et les secrets. Vous guide à travers la sélection d'un référentiel et la configuration de l'intégration |104| `/install-github-app` | Installer l'application Claude GitHub pour un référentiel, avec une étape facultative pour configurer les flux de travail [GitHub Actions](/docs/fr/github-actions) et les secrets. Vous guide à travers la sélection d'un référentiel et la configuration de l'intégration. Fonctionne uniquement avec les référentiels github.com. Lorsque le référentiel distant git de votre référentiel se trouve sur gitlab.com ou bitbucket.org, la commande affiche un avis et se termine au lieu de démarrer la configuration. Pour exécuter Claude Code à partir des pipelines GitLab, consultez [GitLab CI/CD](/docs/fr/gitlab-ci-cd) |

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

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

107| `/list-agents` | Répertorier les sous-agents, les coéquipiers de l'[équipe d'agents](/docs/fr/agent-teams), et les autres sessions Claude Code que Claude peut contacter, avec le nom à utiliser pour chacun. Consultez [la messagerie entre sessions](/docs/fr/cross-session-messaging). Également disponible en tant que `/peers`. Nécessite Claude Code v2.1.224 ou ultérieur ; les versions antérieures signalent `Unknown command: /list-agents`. Les lignes de coéquipier et la première ligne montrant le nom de cette session nécessitent la v2.1.239 ou ultérieur. Disponible uniquement dans les sessions où la [messagerie entre sessions est activée](/docs/fr/cross-session-messaging#availability) |107| `/list-agents` | Répertorier les sous-agents, les coéquipiers de l'[équipe d'agents](/docs/fr/agent-teams), et les autres sessions Claude Code que Claude peut contacter, avec le nom à utiliser pour chacun. Consultez [la messagerie entre sessions](/docs/fr/cross-session-messaging). Également disponible en tant que `/peers`. Nécessite Claude Code v2.1.224 ou ultérieur ; les versions antérieures signalent `Unknown command: /list-agents`. Les lignes de coéquipier et la première ligne montrant le nom de cette session nécessitent la v2.1.239 ou ultérieur. Disponible uniquement dans les sessions où la [messagerie entre sessions est activée](/docs/fr/cross-session-messaging#availability) |


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

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

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

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

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

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

129| `/remote-env` | Choisir l'environnement par défaut pour les [agents cloud](/docs/fr/cloud-environments#select-an-environment-from-the-cli) |129| `/remote-env` | Choisir l'environnement par défaut pour les [agents cloud](/docs/fr/cloud-environments#select-an-environment-from-the-cli) |

Details

240 240 

241| Modèle | Meilleur pour |241| Modèle | Meilleur pour |

242| ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |242| ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

243| Fable | Les tâches les plus difficiles et les plus longues. Opt-in uniquement : sélectionnez-le avec `/model fable`. Le contenu de cybersécurité ou de biologie [revient à Opus](/docs/fr/model-config#automatic-model-fallback) |243| Fable | Les tâches les plus difficiles et les plus longues. Opt-in uniquement : sélectionnez-le avec `/model fable`. Le contenu de cybersécurité ou de biologie déclenche [un basculement de modèle automatique vers Opus](/docs/fr/model-config#automatic-model-fallback) |

244| Opus | Refactorisations à grande échelle, débogage complexe, décisions architecturales, changements à enjeux élevés. Sur Opus 5, le contenu de cybersécurité ou de biologie déclenche [un basculement de modèle automatique ou un refus](/docs/fr/model-config#automatic-model-fallback) |244| Opus | Refactorisations à grande échelle, débogage complexe, décisions architecturales, changements à enjeux élevés. Sur Opus 5, le contenu de cybersécurité ou de biologie déclenche [un basculement de modèle automatique ou un refus](/docs/fr/model-config#automatic-model-fallback) |

245| Sonnet | Travail de fonctionnalité quotidienne, corrections de bugs, tests, documentation, révision de code. Défaut recommandé. |245| Sonnet | Travail de fonctionnalité quotidienne, corrections de bugs, tests, documentation, révision de code. Défaut recommandé. |

246| Haiku | Questions rapides, formatage, modifications mécaniques, itération rapide |246| Haiku | Questions rapides, formatage, modifications mécaniques, itération rapide |

Details

1588 1588 

1589La session parcourt un flux réaliste avec des comptages de jetons représentatifs :1589La session parcourt un flux réaliste avec des comptages de jetons représentatifs :

1590 1590 

1591* **Avant que vous ne tapiez quoi que ce soit** : CLAUDE.md, la mémoire automatique, les noms d'outils MCP, et les descriptions de compétences se chargent tous dans le contexte. Votre propre configuration peut ajouter plus ici, comme un [style de sortie](/docs/fr/output-styles) ou du texte provenant de [`--append-system-prompt`](/docs/fr/cli-reference), qui vont tous deux dans l'invite système de la même manière.1591* **Avant que vous ne tapiez quoi que ce soit** : CLAUDE.md, la mémoire automatique, les noms d'outils MCP, et les descriptions de compétences se chargent tous dans le contexte. Votre propre configuration peut ajouter plus ici, comme un [style de sortie](/docs/fr/output-styles) ou du texte provenant de [`--append-system-prompt`](/docs/fr/cli-reference).

1592* **Pendant que Claude travaille** : chaque lecture de fichier s'ajoute au contexte, les [règles délimitées par chemin](/docs/fr/memory#path-specific-rules) se chargent automatiquement aux côtés des fichiers correspondants, et un [hook PostToolUse](/docs/fr/hooks-guide) s'exécute après chaque modification.1592* **Pendant que Claude travaille** : chaque lecture de fichier s'ajoute au contexte, les [règles délimitées par chemin](/docs/fr/memory#path-specific-rules) se chargent automatiquement aux côtés des fichiers correspondants, et un [hook PostToolUse](/docs/fr/hooks-guide) s'exécute après chaque modification.

1593* **L'invite de suivi** : un [sous-agent](/docs/fr/sub-agents) gère la recherche dans sa propre fenêtre de contexte séparée, de sorte que les lectures de fichiers volumineux restent en dehors de la vôtre. Seul le résumé et une petite remorque de métadonnées reviennent.1593* **L'invite de suivi** : un [sous-agent](/docs/fr/sub-agents) gère la recherche dans sa propre fenêtre de contexte séparée, de sorte que les lectures de fichiers volumineux restent en dehors de la vôtre. Seul le résumé et une petite remorque de métadonnées reviennent.

1594* **À la fin** : `/compact` remplace la conversation par un résumé structuré. La plupart du contenu de démarrage se recharge automatiquement ; le tableau ci-dessous montre ce qui se passe pour chaque mécanisme.1594* **À la fin** : `/compact` remplace la conversation par un résumé structuré. La plupart du contenu de démarrage se recharge automatiquement ; le tableau ci-dessous montre ce qui se passe pour chaque mécanisme.


1601 1601 

1602| Mécanisme | Après compaction |1602| Mécanisme | Après compaction |

1603| :--------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------- |1603| :--------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------- |

1604| Invite système et style de sortie | Inchangé ; ne fait pas partie de l'historique des messages |1604| Invite système et style de sortie | Les deux s'appliquent toujours |

1605| CLAUDE.md à la racine du projet et règles sans portée | Réinjectés depuis le disque |1605| CLAUDE.md à la racine du projet et règles sans portée | Réinjectés depuis le disque |

1606| Mémoire automatique | Réinjectés depuis le disque |1606| Mémoire automatique | Réinjectés depuis le disque |

1607| Le plan que Claude a écrit en [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode) | Réinjecté depuis le disque |1607| Le plan que Claude a écrit en [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode) | Réinjecté depuis le disque |


1630* **Effacer entre les tâches** : exécutez `/clear` quand vous passez à un travail non lié. L'ancienne conversation encombre les fichiers dont vous avez besoin ensuite et coûte des jetons à chaque message.1630* **Effacer entre les tâches** : exécutez `/clear` quand vous passez à un travail non lié. L'ancienne conversation encombre les fichiers dont vous avez besoin ensuite et coûte des jetons à chaque message.

1631* **Déléguer les lectures volumineuses** : envoyez la recherche à un [sous-agent](/docs/fr/sub-agents) de sorte que le contenu du fichier reste dans sa fenêtre de contexte, pas dans la vôtre.1631* **Déléguer les lectures volumineuses** : envoyez la recherche à un [sous-agent](/docs/fr/sub-agents) de sorte que le contenu du fichier reste dans sa fenêtre de contexte, pas dans la vôtre.

1632 1632 

1633Si vous avez besoin d'une fenêtre plus grande plutôt qu'une conversation plus petite, Fable 5.1, Fable 5, Sonnet 5, Opus 4.6 et versions ultérieures, et Sonnet 4.6 supportent une fenêtre de contexte de 1 million de jetons. Consultez [Contexte étendu](/docs/fr/model-config#extended-context) pour la disponibilité par plan et comment sélectionner une variante de modèle `[1m]`. Sonnet 5 s'exécute à 1M sans variante `[1m]` à sélectionner ; consultez [Fenêtre de contexte Sonnet 5](/docs/fr/model-config#sonnet-5-context-window) pour ses seuils de compaction automatique et l'exception de la passerelle LLM. La compaction fonctionne de la même manière à la limite plus grande.1633Si vous avez besoin d'une fenêtre plus grande plutôt qu'une conversation plus petite, les modèles Fable, Sonnet 5, Opus 4.6 et versions ultérieures, et Sonnet 4.6 supportent une fenêtre de contexte de 1 million de jetons. Consultez [Contexte étendu](/docs/fr/model-config#extended-context) pour la disponibilité par plan et comment sélectionner une variante de modèle `[1m]`. La compaction fonctionne de la même manière à la limite plus grande.

1634 

1635Sonnet 5 s'exécute avec la fenêtre de contexte 1M et n'a pas de variante `[1m]` à sélectionner. Consultez [Fenêtre de contexte Sonnet 5](/docs/fr/model-config#sonnet-5-context-window) pour ses seuils de compaction automatique et l'exception de la passerelle LLM.

1634 1636 

1635Le point où la compaction automatique s'exécute dépend de votre modèle et de votre configuration. Consultez [Default auto-compact thresholds](/docs/fr/model-config#default-auto-compact-thresholds) pour les limites par modèle, et [Correct the window for a gateway or custom model ID](/docs/fr/model-config#correct-the-window-for-a-gateway-or-custom-model-id) si Claude Code suppose la mauvaise fenêtre pour votre ID de modèle, comme un alias de [passerelle LLM](/docs/fr/llm-gateway).1637Le point où la compaction automatique s'exécute dépend de votre modèle et de votre configuration. Consultez [Default auto-compact thresholds](/docs/fr/model-config#default-auto-compact-thresholds) pour les limites par modèle, et [Correct the window for a gateway or custom model ID](/docs/fr/model-config#correct-the-window-for-a-gateway-or-custom-model-id) si Claude Code suppose la mauvaise fenêtre pour votre ID de modèle, comme un alias de [passerelle LLM](/docs/fr/llm-gateway).

1636 1638 

Details

49 Noms des processus d'aide dans les moniteurs de processus49 Noms des processus d'aide dans les moniteurs de processus

50</h3>50</h3>

51 51 

52Avec un lanceur configuré, `ps` et Activity Monitor affichent le nom du binaire versionné pour les processus d'aide d'arrière-plan au lieu des étiquettes `claude bg-pty-host` et `claude bg-spare` de Claude Code, car le `exec` du lanceur reconstruit la liste d'arguments. Le renommage est un effet secondaire, pas une dissimulation : les processus sont autrement inchangés, et Claude Code identifie ses propres processus par chemin binaire, jamais par nom d'affichage.52Avec un lanceur configuré, `ps` et Activity Monitor n'affichent plus les étiquettes `claude bg-pty-host` et `claude bg-spare` de Claude Code pour les processus d'aide d'arrière-plan, car le `exec` du lanceur reconstruit la liste d'arguments. La perte des étiquettes est un effet secondaire, pas une dissimulation : les processus sont autrement inchangés, et Claude Code identifie ses propres processus par chemin binaire, jamais par nom d'affichage.

53 53 

54<h2 id="set-up-the-launcher">54<h2 id="set-up-the-launcher">

55 Configurer le lanceur55 Configurer le lanceur

costs.md +5 −1

Details

356 Ajuster la réflexion étendue356 Ajuster la réflexion étendue

357</h3>357</h3>

358 358 

359La 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](/docs/fr/model-config#adjust-effort-level) avec `/effort` ou dans `/model`, en désactivant la réflexion dans `/config`, ou, sur les modèles avec un [budget de réflexion fixe](/docs/fr/model-config#adaptive-reasoning-and-fixed-thinking-budgets), en abaissant le budget en définissant la [variable d'environnement](/docs/fr/env-vars) `MAX_THINKING_TOKENS`, par exemple `MAX_THINKING_TOKENS=8000`. Les modèles de raisonnement adaptatif ignorent les budgets non nuls, donc utilisez plutôt les niveaux d'effort. La désactivation de la réflexion n'est pas disponible sur les modèles Fable, qui utilisent toujours la réflexion étendue.359La 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.

360 

361Pour 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](/docs/fr/model-config#adjust-effort-level) avec `/effort` ou dans `/model`, ou en désactivant la réflexion dans `/config`. Vous ne pouvez pas désactiver la réflexion sur les modèles Fable, qui utilisent toujours la réflexion étendue.

362 

363Sur les modèles avec un [budget de réflexion fixe](/docs/fr/model-config#adaptive-reasoning-and-fixed-thinking-budgets), vous pouvez également abaisser le budget en définissant la [variable d'environnement](/docs/fr/env-vars) `MAX_THINKING_TOKENS`, par exemple `MAX_THINKING_TOKENS=8000`. Les modèles de raisonnement adaptatif ignorent les budgets non nuls, donc utilisez plutôt les niveaux d'effort.

360 364 

361<h3 id="delegate-verbose-operations-to-subagents">365<h3 id="delegate-verbose-operations-to-subagents">

362 Déléguer les opérations détaillées aux subagents366 Déléguer les opérations détaillées aux subagents

cross-session-messaging.md +405 −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# Messagerie entre vos autres sessions Claude Code

6 

7> Laissez Claude lister et envoyer des messages à vos autres sessions Claude Code sur cette machine, et atteindre vos sessions sur d'autres machines ou sur le web.

8 

9<Note>

10 La messagerie entre sessions nécessite Claude Code v2.1.224 ou version ultérieure sur macOS et Linux, y compris Linux à l'intérieur de WSL 2. Sur Windows natif, elle nécessite Claude Code v2.1.234 ou version ultérieure. Lorsqu'une session répond aux exigences, la messagerie est activée sans rien à configurer. Consultez [Disponibilité](#availability) pour les exigences des fournisseurs et comment confirmer qu'une session la possède.

11</Note>

12 

13La messagerie entre sessions permet à Claude de livrer un message d'une de vos sessions Claude Code à une autre. Lorsqu'une modification dans une session casse ce qu'une autre construit, Claude peut avertir cette session avant que vous ne le remarquiez. Lorsqu'une session résout une question sur laquelle une autre est bloquée, Claude peut envoyer la réponse à travers.

14 

15Un message est un morceau de texte qu'un Claude écrit à un autre, jamais l'historique de conversation ou les fichiers de l'expéditeur. Pour déplacer une conversation entière ou son contexte, [reprenez la session](/docs/fr/sessions#resume-a-session) à la place.

16 

17Claude utilise deux outils pour cela : `ListAgents` pour découvrir quels agents il peut atteindre, et `SendMessage` pour livrer un message à l'un d'eux par nom. Avec le même outil `SendMessage`, Claude peut également envoyer des messages à des [sous-agents](/docs/fr/sub-agents#resume-subagents) et des coéquipiers [d'équipe d'agents](/docs/fr/agent-teams) au sein d'une seule session ou équipe. Cette page couvre les messages entre vos sessions indépendantes.

18 

19<h2 id="when-to-use-cross-session-messaging">

20 Quand utiliser la messagerie entre sessions

21</h2>

22 

23Utilisez la messagerie quand l'une de vos sessions a quelque chose qu'une autre session a besoin en cours de tâche. Claude peut envoyer un message de lui-même quand il voit le besoin, par exemple après avoir fait un changement qui affecte le travail qu'une autre session fait, ou vous pouvez lui demander d'en envoyer un. Les cas courants :

24 

25* **Transmettre une découverte** : quand une session découvre un changement cassant ou prend une décision, Claude la résume pour la session travaillant sur la zone affectée, au lieu que vous la réexpliquiez là.

26* **Coordonner les worktrees parallèles** : quand les sessions travaillent le même dépôt dans des [worktrees](/docs/fr/worktrees) séparés, Claude peut dire aux autres sessions ce qui a atterri.

27* **Obtenir le statut du travail de longue durée** : faire rapporter une migration ou une exécution de test à la session que vous regardez, ou demandez-le vous-même de là. Si cette session est sur cette machine, Claude peut aussi [lui demander un avis quand elle devient inactive ou se termine](#get-a-notice-when-another-session-goes-idle).

28* **Envoyer des messages entre machines** : atteindre l'une de vos sessions sur une autre machine ou sur le web.

29 

30Utilisez la messagerie entre sessions indépendantes que vous démarrez et dirigez vous-même. Claude Code a une fonctionnalité dédiée pour chacune des autres façons d'exécuter ou d'atteindre plusieurs sessions, donc utilisez celle construite pour ce que vous faites à la place :

31 

32* Pour continuer une conversation dans un autre terminal, ou partager son contexte avec une nouvelle session, [reprenez la session](/docs/fr/sessions#resume-a-session)

33* Pour une équipe coordonnée de sessions que Claude crée et supervise, utilisez les [équipes d'agents](/docs/fr/agent-teams)

34* Pour regarder et diriger de nombreuses sessions d'un seul endroit, utilisez la [vue agent](/docs/fr/agent-view)

35* Pour diriger une session vous-même depuis votre téléphone ou un autre appareil, plutôt que d'avoir les sessions se envoyer des messages, utilisez la [Télécommande](/docs/fr/remote-control)

36* Pour pousser des événements externes, comme les résultats CI ou les messages de chat, dans une session, utilisez les [canaux](/docs/fr/channels)

37 

38<h2 id="message-another-session">

39 Envoyer un message à une autre session

40</h2>

41 

42Quand l'une de vos sessions apprend quelque chose qu'une autre session a besoin, comme une découverte, un statut ou une décision, Claude la transmet au lieu que vous copiiez-colliez entre les terminaux. Claude découvre la cible avec `ListAgents` et envoie avec `SendMessage`, donc vous n'appelez jamais l'un ou l'autre outil vous-même. Claude peut décider d'envoyer un message sans être demandé, et vous pouvez aussi demander un.

43 

44Pour en demander un vous-même, dites à Claude ce que vous voulez que l'autre session sache ou fasse. Cet exemple est une invite que vous tapez, pas un message que Claude envoie :

45 

46```text wrap theme={null}

47Demandez à la session exécutée dans mon autre terminal si la migration est terminée

48```

49 

50Claude écrit le message réel lui-même, donc votre invite peut laisser le contenu à Claude. Cette invite demande un résumé sans dicter sa formulation, et ce que Claude envoie varie :

51 

52```text wrap theme={null}

53Expliquez ce que nous venons de faire à la session travaillant sur l'API des paiements

54```

55 

56Pour nommer la cible vous-même, mentionnez la session dans votre invite : tapez `@` suivi des premières lettres du nom de la session et choisissez la session dans la saisie semi-automatique, de la même manière que vous [@-mentionnez un sous-agent](/docs/fr/sub-agents#invoke-subagents-explicitly). Nécessite Claude Code v2.1.232 ou ultérieure. Claude Code insère la mention, comme `@api-worker`, et dit à Claude quelle session elle nomme, donc Claude peut envoyer un message à cette session sans lister vos sessions en premier. Cette invite nomme la cible avec une mention :

57 

58```text wrap theme={null}

59Faites savoir à @api-worker que la migration de schéma est terminée

60```

61 

62La saisie semi-automatique liste vos autres sessions actives sur cette machine. Deux cas nécessitent plus que les premières lettres d'un nom :

63 

64* **Une session au-delà de cette machine** : une session cloud ou Télécommande n'apparaît dans la saisie semi-automatique qu'après que Claude ait listé ou envoyé des messages à vos sessions au-delà de cette machine, donc demandez à Claude de les lister en premier.

65* **Un nom avec un espace ou d'autres caractères en dehors des lettres, chiffres, tirets et traits de soulignement** : tapez-le entre guillemets doubles, comme `@"release notes"`. Quand vous choisissez la session dans la saisie semi-automatique, Claude Code insère les guillemets pour vous.

66 

67Vous pouvez aussi taper la mention sans le sélecteur. Quand plus d'une session active répond au nom mentionné, Claude vous demande laquelle vous voulez dire avant d'envoyer.

68 

69Pour ce à quoi ressemble le message que Claude écrit quand il arrive, y compris un exemple d'un, consultez [à quoi ressemble un message](#what-a-message-looks-like).

70 

71<h3 id="message-delivery">

72 Livraison des messages

73</h3>

74 

75Le Claude récepteur lit le message entre les appels d'outils lors d'un tour actif, donc un outil en cours d'exécution n'est jamais interrompu. Quand la session réceptrice est inactive, Claude Code démarre un nouveau tour avec le message.

76 

77Un message d'une autre session arrive sous forme de texte brut. S'il mentionne un fichier ou une [ressource MCP](/docs/fr/mcp#use-mcp-resources) avec `@`, Claude voit la mention telle qu'écrite et Claude Code n'attache rien, que le message démarre un nouveau tour ou arrive pendant un. Claude peut toujours ouvrir un chemin mentionné sur la machine réceptrice avec ses propres outils, sous réserve des permissions de cette session. Avant v2.1.251, une mention `@` dans un message qui a démarré un nouveau tour attachait le fichier ou la ressource MCP du côté récepteur.

78 

79Claude Code refuse un message dans les cas suivants :

80 

81* Le message est [au-delà du plafond de taille](#limitations). Claude Code le refuse dans la session d'envoi, avant qu'il ne parte.

82* Une rafale rapide vers une session sur cette machine a atteint [ce que la boîte de réception de cette session accepte](#limitations). Claude Code refuse d'autres messages à cette session.

83* La cible de réponse sur cette machine échoue une vérification de sécurité, comme une cible symlink ou un point de terminaison qui n'est pas le processus attendu. [Refuser d'envoyer un message entre sessions](/docs/fr/errors#refusing-to-send-a-cross-session-message) liste ces vérifications.

84* Claude adresse le message au nom de sa propre session, comme décrit sous [Voir quelles sessions Claude peut atteindre](#see-which-sessions-claude-can-reach).

85 

86La session réceptrice vérifie chaque message arrivant par rapport à ses propres [contrôles entrants](#control-inbound-messages), et la vérification aboutit à l'un de trois résultats :

87 

88* **Livré** : Claude Code transmet le message au Claude récepteur.

89* **Retenu** : Claude Code met le message de côté non livré. Un message retenu atteint Claude seulement quand vous l'approuvez ou qu'un mode ou changement de paramètres ultérieur le permet.

90* **Refusé** : Claude Code supprime le message sans le livrer.

91 

92Une fois livré, le message compte vers l'[utilisation](/docs/fr/costs) comme une invite que vous tapez, et le Claude récepteur peut répondre à l'expéditeur de la même manière, sauf dans le [cas unidirectionnel entre machines](#message-sessions-on-other-machines).

93 

94Les limites de permission restent par session. Claude est instruit de ne jamais demander à une autre session une action qui a été refusée ou bloquée dans sa propre session, ou que ses propres paramètres de permission bloqueraient, et de router ce travail vers vous à la place. Du côté récepteur, les [invites de permission propres de la session réceptrice et les règles s'appliquent toujours](#how-a-session-treats-an-incoming-message) à tout ce que le message demande.

95 

96<h3 id="get-a-notice-when-another-session-goes-idle">

97 Obtenir un avis quand une autre session devient inactive

98</h3>

99 

100Claude peut demander à l'une de vos sessions sur cette machine d'envoyer un avis quand cette session devient inactive ou se termine. Inactif ici signifie que la session a terminé un tour sans rien en attente. Utilisez-le quand vous attendez une tâche longue dans une autre session et voulez entendre quand elle est terminée au lieu de vérifier. Nécessite Claude Code v2.1.236 ou ultérieure dans les deux sessions.

101 

102<h4 id="ask-for-a-notice">

103 Demander un avis

104</h4>

105 

106Dites à Claude ce que vous attendez. Cette invite demande un avis de la session de migration :

107 

108```text wrap theme={null}

109Dites-moi quand la session de migration termine ce sur quoi elle travaille

110```

111 

112Claude s'abonne avec l'entrée `notify_when_idle` de l'outil `SendMessage`, soit attachée à un message qu'il envoie de toute façon, soit seule. Seule, Claude Code s'abonne sans démarrer un tour ou dépenser des jetons dans la session regardée, et envoie l'avis immédiatement si cette session est déjà inactive. Attaché à un message, Claude Code livre d'abord le message et envoie l'avis plus tard.

113 

114<h4 id="what-each-session-shows">

115 Ce que chaque session affiche

116</h4>

117 

118La session regardée affiche une ligne disant qu'un autre processus a demandé à être averti quand la session est inactive. La session demandante affiche l'avis comme une ligne nommant la session regardée. La ligne peut inclure l'heure à laquelle le tour de cette session s'est terminé et un statut d'une ligne de ce tour. Si la session demandante est inactive, Claude Code démarre un nouveau tour avec l'avis.

119 

120<h4 id="limits">

121 Limites

122</h4>

123 

124L'avis est unique : Claude Code l'envoie une fois de la session regardée, et aucune session n'interroge l'autre. Si aucun avis n'arrive dans les 12 heures, Claude Code supprime l'abonnement et le dit à Claude, donc il n'attend pas indéfiniment.

125 

126Les [contrôles entrants](#control-inbound-messages) de chaque côté s'appliquent à un avis comme un message :

127 

128* **`refuse` de chaque côté** : rien n'arrive. La session regardée supprime la demande sans l'enregistrer ou y répondre, donc l'abonnement expire sans réponse après 12 heures, et une session demandante avec `refuse` ne s'abonne jamais.

129* **`hold` de chaque côté** : l'avis arrive avec moins. La session regardée laisse le statut d'une ligne de côté, et la session demandante affiche l'avis dans votre transcription sans le livrer à Claude.

130 

131Seul le Claude dans votre conversation principale peut s'abonner, et seulement à vos sessions sur cette machine. Quand un sous-agent ou un coéquipier d'équipe d'agents définit `notify_when_idle`, Claude Code ne fait aucun abonnement et le lui dit. Quand Claude demande un avis à un autre agent, comme un coéquipier, un sous-agent ou une session au-delà de cette machine, Claude Code refuse l'appel entier, y compris tout message attaché, et rapporte le refus à Claude pour qu'il puisse renvoyer le message sans la demande.

132 

133<h3 id="see-which-sessions-claude-can-reach">

134 Voir quelles sessions Claude peut atteindre

135</h3>

136 

137Claude trouve la cible d'un message de lui-même, donc vous n'avez pas besoin d'exécuter quoi que ce soit avant de lui demander d'envoyer. Pour voir vous-même quelles sessions Claude peut atteindre, exécutez la commande `/list-agents`. La première ligne, quand présente, est le nom de cette session, celui que vos autres sessions utilisent pour lui envoyer des messages. Les lignes ci-dessous sont les sessions que Claude peut atteindre :

138 

139* **Sous-agents** : agents exécutés à l'intérieur de la session actuelle.

140* **Coéquipiers** : les coéquipiers de la propre [équipe d'agents](/docs/fr/agent-teams) de cette session. Avant v2.1.239, les coéquipiers n'apparaissaient pas dans la liste, bien que Claude puisse déjà les envoyer des messages par nom.

141* **Vos autres sessions locales** : sessions Claude Code exécutées sur la même machine, y compris les [sessions en arrière-plan](/docs/fr/agent-view). Une session n'apparaît que quand elle lie une [socket de boîte de réception](#the-sessions-inbox-socket).

142* **Vos sessions cloud** : vos sessions [Claude Code sur le web](/docs/fr/claude-code-on-the-web), affichées pendant que cette session est connectée à la [Télécommande](/docs/fr/remote-control). Claude Code les étiquette `cloud` dans la liste.

143* **Vos sessions Télécommande sur d'autres machines** : affichées pendant que cette session est connectée à la [Télécommande](/docs/fr/remote-control), et étiquetées `Remote Control`. Claude Code affiche `offline` comme le statut d'une session dont la connexion Télécommande a chuté.

144 

145Cette session n'est pas l'une des lignes. Si Claude adresse un message au nom de sa propre session, Claude Code le refuse et dit à Claude que la cible est la session actuelle. Avant v2.1.239, la liste n'affichait pas le nom de cette session, et Claude Code rapportait un message envoyé à lui comme un agent qu'il ne pouvait pas trouver.

146 

147Pendant que cette session est connectée à la [Télécommande](/docs/fr/remote-control), Claude Code retient certains détails de vos sessions locales de la sortie `/list-agents`, sans changer ce que Claude lui-même voit quand il cherche une session à envoyer des messages :

148 

149* **Répertoires de travail** : il laisse de côté le répertoire de travail de chaque session locale.

150* **Noms de session** : il laisse de côté tout nom de session qu'il ne peut pas attribuer à une personne, donc une ligne laissée sans nom lit `(unnamed session)`.

151* **La première ligne** : il laisse de côté la ligne avec le nom de cette session à moins que vous ayez tapé ce nom à ce terminal, avec `--name` ou avec `/rename` et le nom, depuis que vous avez lancé ou repris la session.

152 

153Quand la sortie liste quelque chose, elle se termine par une note disant que les détails ont été retenus. Exécuter `/rename` suivi d'un nom inutilisé à un clavier de sa propre session donne à cette session un nom qui apparaît dans la sortie.

154 

155Claude Code lit vos listes de sessions cloud et Télécommande les plus récentes en premier et s'arrête après un nombre limité de pages pour chacune. Si votre compte a plus de ces sessions que ce qui rentre, Claude Code ne liste pas les plus anciennes, et Claude ne peut pas les envoyer des messages par nom. Quand cela se produit, Claude Code le dit dans la liste, et Claude voit la même note quand il envoie un message.

156 

157Claude adresse une session au-delà de cette machine par nom, de la même manière qu'une session locale. Consultez [Envoyer des messages aux sessions sur d'autres machines](#message-sessions-on-other-machines) pour comment ces messages voyagent.

158 

159Une session répond au nom que vous définissez avec la commande [`/rename`](/docs/fr/commands) ou l'indicateur [`--name`](/docs/fr/cli-reference#cli-flags). Quand vous n'en définissez pas un, Claude Code nomme la session lui-même. Pour une session interactive, c'est le nom affiché dans les [listes de sessions exécutées](/docs/fr/sessions#name-your-sessions).

160 

161Quand vous renommez une session, Claude Code met aussi à jour l'enregistrement partagé que vos autres sessions utilisent pour chercher le nom de la session. S'il ne peut pas mettre à jour cet enregistrement, il vous avertit dans la sortie `/rename` que d'autres sessions peuvent toujours afficher l'ancien nom. Exécutez la session avec [`--debug`](/docs/fr/cli-reference#cli-flags), et Claude Code enregistre la cause de la mise à jour échouée.

162 

163Quand vous renommez une session, ou démarrez ou reprenez une interactive, avec un nom qu'une autre session active sur cette machine utilise déjà, Claude Code laisse le nom avec la session qui l'a déjà et [renomme le vôtre en une variante](/docs/fr/sessions#name-your-sessions). Les sessions peuvent toujours partager un nom, par exemple quand l'une d'elles exécute une version antérieure de Claude Code ou le nom partagé en est un que Claude Code a généré. À moins que cette session ne soit connectée à la Télécommande, Claude Code affiche le répertoire de travail de chaque session locale dans la sortie `/list-agents`, donc vous pouvez distinguer les sessions de même nom quand elles s'exécutent dans des répertoires différents. Claude adresse le message de l'une de deux façons, selon le nombre de sessions actives qui répondent au nom :

164 

165* **Une session répond au nom** : Claude Code livre le message sur le nom seul.

166* **Plusieurs sessions partagent le nom, ou Claude Code ne pouvait pas vérifier partout où vos sessions s'exécutent** : Claude ajoute un court identifiant à chaque ligne de sa liste et utilise l'identifiant dans l'adresse.

167 

168<h3 id="message-sessions-on-other-machines">

169 Envoyer des messages aux sessions sur d'autres machines

170</h3>

171 

172Comment un message voyage, et s'il passe par les serveurs Anthropic, dépend de l'endroit où la session cible s'exécute :

173 

174| Où la session cible s'exécute | Comment le message voyage |

175| :------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------- |

176| Sur cette machine | Sur une socket par session sur macOS et Linux, ou un tuyau nommé par session sur Windows natif, jamais par les serveurs Anthropic |

177| Sur une autre de vos machines | Par les serveurs Anthropic, arrivant sur la connexion [Télécommande](/docs/fr/remote-control) de cette machine |

178| Sur [Claude Code sur le web](/docs/fr/claude-code-on-the-web) | Par les serveurs Anthropic, directement à la session cloud |

179 

180Démarrer une conversation avec une session sur une autre de vos machines nécessite Claude Code v2.1.225 ou ultérieure et une cible qui [apparaît dans la liste](#see-which-sessions-claude-can-reach). Avant v2.1.225, Claude ne pouvait que répondre à un message qui arrivait d'une.

181 

182Vous pouvez envoyer un message à une session affichée comme `offline` dans [la liste](#see-which-sessions-claude-can-reach), une dont la connexion Télécommande a chuté. L'envoi passe, mais le message n'arrive qu'après que la machine de cette session se reconnecte. Claude est informé de cela quand il envoie.

183 

184La livraison sur la même machine fonctionne partout où la fonctionnalité est activée. Chaque session s'enregistre dans des fichiers sur disque. Quand Claude liste ou envoie des messages à vos sessions locales, Claude Code lit ces fichiers pour trouver les sessions, donc deux sessions ne peuvent se atteindre que quand elles peuvent voir les mêmes fichiers.

185 

186Un conteneur a son propre système de fichiers, donc une session à l'intérieur et une session sur l'hôte ne peuvent pas se atteindre. Deux sessions à l'intérieur du même conteneur peuvent toujours s'envoyer des messages, y compris sur un [exécuteur auto-hébergé](/docs/fr/self-hosted-environments). Une session à l'intérieur de WSL 2 et une session Windows native sur le même ordinateur ne peuvent pas non plus se atteindre, car elles s'enregistrent sous des répertoires personnels différents et écoutent sur des types de socket différents.

187 

188Pendant que cette session est connectée à la Télécommande, quand vous envoyez un message à une session sur une autre de vos machines, Claude Code affiche le message dans la conversation de cette session sous le nom Télécommande de cette session. Le Claude sur cette machine peut répondre à ce nom. Par exemple, quand cette session est connectée à la Télécommande comme `laptop-graceful-unicorn` et que vous envoyez un message à votre bureau, vous voyez le message dans la session du bureau sous `laptop-graceful-unicorn`.

189 

190Si cette session n'est pas connectée à la Télécommande quand Claude envoie à une session au-delà de cette machine, le message passe toujours, mais sans une [adresse de réponse](#what-a-message-looks-like), donc le Claude récepteur ne peut pas y répondre. Claude est informé de cela quand il envoie.

191 

192Pour exiger votre approbation avant que tout message ne dépasse cette machine, définissez [`isolatePeerMachines`](#require-approval-for-cross-machine-messages).

193 

194<h2 id="how-a-session-treats-an-incoming-message">

195 Comment une session traite un message entrant

196</h2>

197 

198Quand la session A envoie un message à la session B, Claude Code dit au Claude de B que le message venait d'une autre session, pas de vous, et limite ce que le message peut faire :

199 

200* **Il ne peut rien approuver** : un message d'une autre session ne compte jamais comme votre consentement, donc il ne peut pas répondre à une invite de permission en attente en votre nom.

201* **Il ne peut pas changer la configuration** : Claude Code instruit le Claude récepteur de ne jamais changer les paramètres de permission, `CLAUDE.md` ou d'autres configurations parce qu'une autre session l'a demandé.

202* **Les commandes ne s'exécutent pas** : une commande dans le texte du message, comme `/compact`, arrive sous forme de texte brut. Claude Code ne l'exécute jamais.

203* **Les invites de permission se déclenchent toujours** : si agir sur le message nécessite une permission que la session réceptrice n'a pas, vous voyez la même invite que vous verriez pour tout autre travail.

204 

205<h3 id="what-a-message-looks-like">

206 À quoi ressemble un message

207</h3>

208 

209Quand un message arrive, Claude Code l'affiche dans la conversation comme un aperçu d'une ligne atténué, et la ligne d'aperçu reste dans la conversation après. L'aperçu porte le nom de l'expéditeur et la première ligne du message, coupée avec `…` quand elle est longue, comme `› Message from @api-worker: Schema migration finished (ctrl+o to expand)`. Avant v2.1.247, Claude Code affichait le message arrivant en entier au lieu d'un aperçu.

210 

211L'un de ceux-ci affiche le texte complet :

212 

213* Appuyez sur `Ctrl+O` pour ouvrir la [visionneuse de transcription](/docs/fr/interactive-mode#transcript-viewer) et lire le texte complet sous le nom de session de l'expéditeur.

214* Dans une session démarrée avec [`--verbose`](/docs/fr/cli-reference#cli-flags), Claude Code affiche le texte complet au lieu de l'aperçu.

215 

216L'aperçu raccourcit seulement ce que vous voyez. Que vous l'agrandissiez ou non, Claude lit le message complet.

217 

218Claude reçoit le message avec le nom de l'expéditeur et une adresse de réponse, sauf pour un [message unidirectionnel entre machines](#message-sessions-on-other-machines), qui ne porte pas d'adresse de réponse. Au-delà du nom et de l'adresse de réponse, le Claude récepteur obtient le texte du message, jamais l'historique de conversation ou les fichiers de l'expéditeur. [Livraison des messages](#message-delivery) couvre les mentions `@` dans le texte.

219 

220Un message qu'un [sous-agent](/docs/fr/sub-agents) a écrit arrive sous le nom de la session d'envoi, avec le sous-agent identifié dans le texte du message. Une réponse à celui-ci atteint la conversation principale de cette session, pas le sous-agent.

221 

222Cet exemple est un message qu'un Claude a écrit à un autre, tel qu'il se lit en entier quand vous l'agrandissez :

223 

224```text wrap theme={null}

225Schema migration finished

226The new column is tenant_id, and rebasing on main is safe now.

227```

228 

229<h3 id="control-inbound-messages">

230 Contrôler les messages entrants

231</h3>

232 

233Définissez [`crossSessionInbound`](/docs/fr/settings-reference#crosssessioninbound) pour choisir ce qu'une session fait avec les messages arrivant de vos autres sessions :

234 

235| Valeur | Comportement |

236| :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

237| `accept` | Claude Code livre chaque message à Claude |

238| `hold` | Claude Code affiche un avis pour chaque message et ne le livre pas. Si un `accept` s'applique plus tard, selon les [règles de précédence](/docs/fr/settings-reference#crosssessioninbound), Claude Code libère les messages retenus |

239| `refuse` | Claude Code supprime chaque message sans le livrer |

240 

241Au-delà de l'édition d'un fichier de paramètres, vous pouvez sélectionner la valeur dans la ligne `/config` **Messages from your other sessions**. Claude Code écrit la valeur que vous sélectionnez dans vos paramètres utilisateur. La ligne nécessite Claude Code v2.1.232 ou ultérieure et n'apparaît pas pendant que les paramètres gérés ou l'indicateur `--settings` définit la clé, car une valeur de paramètres utilisateur ne s'appliquerait pas alors. Claude Code rejette le raccourci `/config crossSessionInbound=value` pour cette clé.

242 

243Pour voir quelle valeur s'applique, suivez les règles de précédence `crossSessionInbound` dans la [référence des paramètres](/docs/fr/settings-reference#crosssessioninbound). Quand aucune valeur ne s'applique, Claude Code décide par message à partir des modes de permission des deux sessions. Il groupe les sessions qui [contournent les invites de permission](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) dans une classe, et chaque autre session dans l'autre. Le mode Plan compte comme contournement dans les sessions avec les permissions de contournement disponibles, et [auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode), `acceptEdits` et `dontAsk` comptent comme invitant :

244 

245* **La session réceptrice invite pour les permissions** : Claude Code livre chaque message. Il retient un pour votre approbation seulement quand la session d'envoi s'identifie comme contournant les invites de permission.

246* **La session réceptrice contourne les invites de permission** : Claude Code retient chaque message pour votre approbation. Il livre un seulement quand la session d'envoi s'identifie aussi comme contournant.

247 

248Quand le défaut retient un message, Claude Code ouvre une boîte de dialogue d'approbation dans la session réceptrice. La boîte de dialogue affiche l'expéditeur et un aperçu :

249 

250* **Approuver** livre ce message à Claude.

251* **Refuser**, ou fermer la boîte de dialogue, le supprime.

252* Quand la boîte de dialogue reste sans réponse au-delà de la date limite [`dialogExpiry`](/docs/fr/settings-reference#dialogexpiry), Claude Code la ferme et supprime le message. La date limite par défaut est de cinq minutes.

253* Pendant qu'aucun terminal n'est attaché à une [session en arrière-plan](/docs/fr/agent-view), Claude Code laisse la boîte de dialogue ouverte au-delà de la date limite. Après que vous attachiez, si la boîte de dialogue reste sans réponse pendant une période de date limite complète, Claude Code la ferme et supprime le message.

254* Si la classe de mode de permission de cette session change pendant que les messages sont retenus, Claude Code réapplique les règles entrantes, livre les messages qu'elles acceptent maintenant, et affiche un avis.

255* Si un changement de paramètres rend `refuse` applicable pendant que les messages sont retenus, Claude Code supprime chaque message retenu et rapporte un refus à chaque expéditeur qu'il peut atteindre.

256 

257Quand l'expéditeur est une session interactive sur la même machine, Claude Code affiche un avis là quand le récepteur retient le message, et un suivi quand le récepteur livre, refuse ou l'expire plus tard. Si le récepteur le refuse, Claude Code affiche un avis là que le récepteur n'accepte pas les messages entre sessions et dit au Claude de l'expéditeur de ne pas attendre ou renvoyer.

258 

259Claude Code retient au maximum 100 messages, séparément de la file d'attente de livraison, et au-delà de cela supprime les plus anciens.

260 

261<h3 id="non-interactive-sessions">

262 Sessions non-interactives

263</h3>

264 

265Claude Code lie une socket de boîte de réception pour une session [`claude -p`](/docs/fr/headless) comme une interactive, donc un worker `-p` de longue durée peut recevoir des messages et apparaît dans la liste. Quand vous démarrez une session en [mode nu](/docs/fr/headless#start-faster-with-bare-mode), Claude Code ne lie pas la socket, donc cette session ne peut pas recevoir de messages et n'apparaît pas dans la liste d'agents.

266 

267Une session `-p` ne peut pas afficher la boîte de dialogue d'approbation. Quand le [défaut entrant](#control-inbound-messages) retient un message là, Claude Code le garde pour la même date limite [`dialogExpiry`](/docs/fr/settings-reference#dialogexpiry) que la boîte de dialogue utilise, cinq minutes par défaut :

268 

269* **Avant la date limite** : si un mode ou changement de paramètres permet le message, Claude Code le livre.

270* **Au-delà de la date limite** : Claude Code supprime le message et le rapporte comme expiré à un expéditeur qu'il peut atteindre.

271 

272Définissez `dialogExpiry` à `"never"` pour garder les messages retenus par défaut jusqu'à ce que la session se termine. Un message retenu par un paramètre `hold` explicite n'expire pas ; Claude Code le livre seulement quand un `accept` s'applique plus tard.

273 

274Quand la session se termine avec des messages toujours retenus, Claude Code les rapporte comme expirés à chaque expéditeur qu'il peut atteindre. Avant v2.1.225, aucune date limite ne s'appliquait dans une session `-p` : un message retenu restait retenu à moins qu'un changement de mode de permission pendant l'exécution le livre, et une session qui se terminait avec des messages retenus ne rapportait rien à leurs expéditeurs.

275 

276Pour laisser un worker `-p` prendre des messages sans surveillance, démarrez-le avec `crossSessionInbound` défini à `accept` dans sa valeur `--settings`. Un `accept` dans vos paramètres utilisateur fonctionne aussi mais s'applique à chaque session que vous exécutez.

277 

278<h3 id="the-sessions-inbox-socket">

279 La socket de boîte de réception de la session

280</h3>

281 

282Lisez cette section quand une session que vous attendez n'est pas dans la liste d'agents, quand vous voulez qu'un script ou hook poste dans une session, ou quand une commande sandboxée ne peut pas atteindre la socket.

283 

284Claude Code lie une socket de boîte de réception pour chaque session avec la messagerie entre sessions activée, où d'autres sessions sur la machine livrent des messages. La socket est une socket de domaine Unix sur macOS et Linux, y compris Linux à l'intérieur de WSL 2, et un tuyau nommé sur Windows natif. Pour quels types de session en lient un, consultez [Sessions non-interactives](#non-interactive-sessions).

285 

286Vous pouvez trouver le chemin de la socket à deux endroits :

287 

288* `/status` l'affiche dans la ligne `Peer address`. Le chemin est préfixé avec `uds:`.

289* Claude Code l'exporte vers les [hooks](/docs/fr/hooks) et les commandes Bash comme la variable d'environnement [`CLAUDE_CODE_MESSAGING_SOCKET`](/docs/fr/env-vars#variables) :

290 * Dans une session qui démarre avec la messagerie activée, Claude Code exporte la variable avant que tout hook ne s'exécute, y compris `SessionStart`.

291 * Chaque session exporte sa propre socket, jamais une héritée d'une session parent.

292 

293Sur macOS et Linux, Claude Code restreint la socket à votre utilisateur du système d'exploitation. Sur Windows natif, elle nécessite plutôt que chaque connexion s'authentifie d'abord avec une clé que seul votre utilisateur du système d'exploitation peut lire. De toute façon, sur une machine partagée les sessions d'un autre utilisateur ne peuvent pas la livrer.

294 

295Sur macOS et Linux, Claude Code refuse aussi de créer la socket dans un répertoire qu'il ne peut pas accepter, par exemple un qu'un autre utilisateur possède, et utilise un répertoire privé par utilisateur, `/tmp/cc-socks-<uid>`, à la place. Quand il ne peut accepter aucun répertoire, la session s'exécute sans boîte de réception : Claude Code affiche un avis, `/status` affiche `unavailable` et la raison dans sa ligne `Peer address`, et le journal [`--debug`](/docs/fr/cli-reference#cli-flags) enregistre le refus complet.

296 

297Aux côtés du chemin de la socket, Claude Code exporte un jeton par session comme [`CLAUDE_CODE_MESSAGING_TOKEN`](/docs/fr/env-vars#variables). Un script postant à la socket de sa propre session peut envoyer `{"type":"auth","token":"<token>"}` comme la première ligne de sa connexion, où `<token>` est la valeur de `CLAUDE_CODE_MESSAGING_TOKEN`. Si Claude Code nécessite la ligne dépend de la plateforme :

298 

299* **macOS et Linux, y compris WSL 2** : la ligne est optionnelle. Claude Code accepte une connexion avec ou sans elle.

300* **Windows natif** : la ligne est requise. Claude Code ferme toute connexion dont la première ligne n'est pas une ligne d'authentification valide et ne livre rien de cette connexion.

301 

302Ouvrez la connexion seulement quand le message que vous postez est prêt. Claude Code ferme une connexion qui n'a pas envoyé une ligne complète dans les 30 secondes, donc capturez d'abord la sortie d'une commande lente puis ouvrez la connexion pour l'envoyer.

303 

304Les [règles propres-enfant](#own-child-messages) ci-dessous disent quand Claude Code consulte le jeton et comment il traite un message qu'il ne peut pas vérifier.

305 

306<span id="own-child-messages" />Claude Code exécute les messages arrivant sur la socket par les mêmes [contrôles entrants](#control-inbound-messages) que tout autre message pair, avec une exception et une condition préalable :

307 

308* **Messages propres-enfant** : quand aucune valeur `crossSessionInbound` ne s'applique, Claude Code livre un message qu'il vérifie provenir des processus enfants de la session, comme un hook ou une commande Bash postant vers la socket de sa propre session.

309 * Sur Linux, y compris à l'intérieur de WSL 2, Claude Code peut vérifier par preuve de processus même pour un enfant qui a déjà quitté. Sur macOS il ne peut vérifier que de cette manière que pendant que le processus de postage s'exécute toujours, et dans un conteneur où Claude Code s'exécute comme ID de processus 1 il n'a aucune preuve de processus du tout. Sur Windows natif il n'en a pas non plus.

310 * Sur macOS après que le processus de postage ait quitté et dans les conteneurs où Claude Code s'exécute comme ID de processus 1, cette preuve de processus manque, et Claude Code vérifie plutôt un enfant qui a envoyé le [`CLAUDE_CODE_MESSAGING_TOKEN`](/docs/fr/env-vars#variables) exporté de la session dans la ligne d'authentification qui a ouvert sa connexion. Sur Windows natif, ce jeton est la seule façon que Claude Code vérifie un message propre-enfant.

311 * Quand Claude Code ne peut vérifier de l'une ou l'autre manière, il traite le message comme tout autre qui n'affirme aucune classe de permission, donc une session qui contourne les invites de permission le retient pour votre approbation.

312* **Sessions sandboxées** : contrôlez si une commande Bash peut atteindre la socket de l'intérieur du [sandbox](/docs/fr/sandboxing) avec les paramètres de socket Unix du sandbox, [`sandbox.network.allowAllUnixSockets` et `sandbox.network.allowUnixSockets`](/docs/fr/settings-reference#sandbox-settings).

313 

314<h2 id="restrict-cross-session-messaging">

315 Restreindre la messagerie entre sessions

316</h2>

317 

318Au-delà des défauts par message, vous pouvez restreindre la messagerie de deux façons. Exigez votre approbation avant que tout message ne quitte la machine, ou désactivez la messagerie pour une session ou une organisation.

319 

320<h3 id="require-approval-for-cross-machine-messages">

321 Exiger l'approbation pour les messages entre machines

322</h3>

323 

324Définissez [`isolatePeerMachines`](/docs/fr/settings-reference#isolatepeermachines) à `true` pour exiger votre approbation explicite avant que tout `SendMessage` n'atteigne une session au-delà de cette machine :

325 

326```json theme={null}

327{

328 "isolatePeerMachines": true

329}

330```

331 

332Avec cela défini, Claude Code demande votre approbation avant que le message de Claude à une session au-delà de cette machine ne parte, même en mode `bypassPermissions`, qui saute les invites de permission ordinaires. Un `true` de n'importe quelle portée de paramètres s'applique, donc un fichier de projet enregistré peut activer l'exigence mais pas la désactiver. Claude Code ne demande pas pour les messages entre sessions sur la même machine.

333 

334<h3 id="turn-off-cross-session-messaging">

335 Désactiver la messagerie entre sessions

336</h3>

337 

338La réception et l'envoi sont des contrôles séparés, donc désactivez la direction dont vous avez besoin, ou les deux. Utilisez `crossSessionInbound` pour les messages qui arrivent, et les règles de permission pour ce que Claude ici peut envoyer ou lister :

339 

340* **Arrêter la réception** : définissez `crossSessionInbound` à `refuse`, et Claude Code supprime les messages pair entrants sans les livrer. À partir des paramètres de projet ou locaux, `refuse` s'applique sur chaque autre source, et à partir de vos paramètres utilisateur il s'applique à moins que les paramètres gérés ou l'indicateur `--settings` définissent une valeur.

341* **Arrêter l'envoi et la liste** : ajoutez des [règles de permission de refus spécifiques à l'outil](/docs/fr/permissions#tool-specific-permission-rules) nommant `SendMessage` et `ListAgents`. Les deux prennent le nom d'outil nu sans spécificateur.

342 

343Les administrateurs peuvent désactiver les deux côtés pour une organisation dans les [paramètres gérés](/docs/fr/managed-settings), combinant les règles de refus avec le `refuse` :

344 

345```json theme={null}

346{

347 "permissions": {

348 "deny": ["SendMessage", "ListAgents"]

349 },

350 "crossSessionInbound": "refuse"

351}

352```

353 

354Avec cela en place, Claude Code lie toujours la socket de boîte de réception de chaque session, mais supprime chaque message qui arrive sur elle sans livrer quoi que ce soit à Claude. Refuser `SendMessage` supprime aussi la messagerie aux sous-agents et aux coéquipiers d'équipe d'agents, car le même outil sert les deux. Une session refusante n'affiche aucun changement visible, dans son propre `/status` ou dans les listes d'autres sessions sur la même machine, donc pour le confirmer, vérifiez les fichiers de paramètres qui s'appliquent à cette session plutôt que son statut.

355 

356<h2 id="availability">

357 Disponibilité

358</h2>

359 

360La messagerie entre sessions nécessite Claude Code v2.1.224 ou ultérieure sur macOS, Linux et WSL 2, et v2.1.234 ou ultérieure sur Windows natif. La disponibilité, et quelles sessions Claude peut envoyer des messages, dépendent aussi de votre système d'exploitation, fournisseur et configuration :

361 

362* **Système d'exploitation** : disponible sur macOS, Windows et Linux, y compris Linux à l'intérieur de WSL 2.

363 

364* **Sessions sur cette machine** : disponible sur chaque fournisseur, y compris Amazon Bedrock, Claude Platform sur AWS, Agent Platform de Google Cloud et Microsoft Foundry, et dans les sessions qui s'exécutent avec la [récupération de drapeau de fonctionnalité](/docs/fr/env-vars#features-that-need-feature-flag-fetching) désactivée. Sur ces fournisseurs, et avec la récupération de drapeau désactivée, la messagerie sur la même machine nécessite Claude Code v2.1.248 ou ultérieure. Claude Code livre ces messages sur une [socket par session sur votre machine](#the-sessions-inbox-socket), jamais par les serveurs Anthropic.

365 

366 Pour arrêter une session de les recevoir, définissez [`crossSessionInbound`](#turn-off-cross-session-messaging) à `refuse`.

367 

368* **Sessions au-delà de cette machine** : Claude trouve vos sessions [Claude Code sur le web](/docs/fr/claude-code-on-the-web) et vos sessions sur d'autres machines à partir d'une session connectée à la Télécommande, qui nécessite une connexion claude.ai comme authentification active de cette session et les autres [exigences de Télécommande](/docs/fr/remote-control#requirements). Claude ne peut pas trouver ces sessions avec une clé API ou sur Amazon Bedrock, Claude Platform sur AWS, Agent Platform de Google Cloud et Microsoft Foundry.

369 

370Pour vérifier une session, tapez `/list-agents`, aussi disponible comme `/peers`. Le résultat sépare une session qui n'a pas la fonctionnalité d'une session où quelque chose de plus étroit a bloqué un message, comme un outil `SendMessage` manquant ou un envoi refusé :

371 

372* **`/list-agents` n'est pas reconnu** : la session n'a pas la messagerie entre sessions. Travaillez à travers les exigences ci-dessus, en commençant par `claude --version` pour l'exigence de version.

373* **`/list-agents` fonctionne mais un envoi n'est pas arrivé** : la messagerie est activée, et quelque chose de plus étroit s'applique :

374 * **Règles de refus** : une [règle de permission de refus](#turn-off-cross-session-messaging) supprime les outils `SendMessage` et `ListAgents`.

375 * **Contrôles entrants** : les [contrôles entrants de la session réceptrice](#control-inbound-messages) peuvent retenir ou supprimer ce que vous lui envoyez.

376 * **Session cloud manquante** : une session cloud n'apparaît que pendant que cette session est connectée à la [Télécommande](/docs/fr/remote-control).

377 * **Session sur une autre machine manquante** : une session sur une autre de vos machines n'apparaît que quand elle s'exécute avec la [Télécommande](/docs/fr/remote-control) et que cette session est aussi connectée.

378 * **Session sur une autre machine `offline`** : un message à une session listée comme `offline` passe, mais [n'arrive que après que la machine de cette session se reconnecte](#message-sessions-on-other-machines).

379 * **Session cloud ou sur une autre machine plus ancienne manquante** : Claude Code [lit ces listes de sessions les plus récentes en premier et s'arrête après un nombre limité de pages](#see-which-sessions-claude-can-reach), donc Claude ne peut pas envoyer un message à une session qui a dépassé par nom.

380 * **Démarrer une conversation** : [Envoyer des messages aux sessions sur d'autres machines](#message-sessions-on-other-machines) couvre le démarrage d'une conversation avec une session au-delà de cette machine.

381 

382Dans une session avec messagerie, `/status` affiche aussi une ligne `Peer address` avec l'adresse de boîte de réception propre de la session, ou `unavailable` et la raison quand Claude Code [ne pouvait pas configurer une boîte de réception](#the-sessions-inbox-socket).

383 

384<h2 id="limitations">

385 Limitations

386</h2>

387 

388Les limites ici sont des propriétés du canal de messagerie lui-même et s'appliquent partout où la fonctionnalité s'exécute. Pour les lacunes de plateforme et de fournisseur, consultez [Disponibilité](#availability) à la place.

389 

390* **Texte brut seulement** : Claude envoie seulement du texte brut entre les sessions. Les messages de protocole structuré d'[équipe d'agents](/docs/fr/agent-teams) restent au sein d'une équipe.

391* **La taille du message sur la même machine est plafonnée** : Claude Code refuse un message à une session sur cette machine une fois que sa forme sérialisée dépasse environ un million de caractères. Le refus [nomme les tailles exactes](/docs/fr/errors#message-too-large-for-cross-session-delivery). Rien n'atteint la session réceptrice.

392* **Les rafales rapides vers une session sont refusées à l'expéditeur** : une fois qu'une rafale rapide de messages vers une session sur cette machine atteint ce que la boîte de réception de cette session accepte, Claude Code refuse d'autres envois dans la session d'envoi. Le [refus nomme la rafale](/docs/fr/errors#too-many-messages-to-this-session-just-now) et dit à Claude de regrouper le reste en un message ou d'attendre. Avant v2.1.236, Claude Code rapportait ces envois comme envoyés pendant que la session réceptrice les supprimait.

393* **Les boucles de message sont limitées** : dans la session réceptrice, Claude Code limite le débit des messages répétés par expéditeur, supprime les répétitions identiques arrivant dans une courte fenêtre, et met en file d'attente au maximum 50 messages acceptés pour que Claude les lise. Une boucle de message entre deux sessions s'arrête donc d'elle-même. Quand la limite de débit, la vérification de répétition ou le plafond de file d'attente supprime un message d'une session interactive sur cette machine, Claude Code dit à cette session lequel l'a supprimé et dit à son Claude de ne pas renvoyer immédiatement.

394 

395<h2 id="related-resources">

396 Ressources connexes

397</h2>

398 

399* [Sous-agents](/docs/fr/sub-agents#resume-subagents) et [équipes d'agents](/docs/fr/agent-teams#messages-between-agents) : messagerie au sein d'une seule session ou équipe

400* [Agents en arrière-plan](/docs/fr/agent-view) : dispatcher et surveiller les sessions parallèles que vous pourriez envoyer des messages

401* [Télécommande](/docs/fr/remote-control) : connectez cette session pour atteindre vos sessions sur d'autres machines

402* [Paramètres](/docs/fr/settings-reference#all-settings) : `crossSessionInbound`, `isolatePeerMachines` et `dialogExpiry`

403* [Modes de permission](/docs/fr/permission-modes) : les modes derrière les deux classes du défaut entrant

404* [Référence des outils](/docs/fr/tools-reference) : les lignes `ListAgents` et `SendMessage` dans le tableau des outils

405* [Exécuter les agents en parallèle](/docs/fr/agents) : comparez les façons que Claude Code exécute plusieurs agents

Details

73* Un nom d'outil mal orthographié produit un matcher qui ne correspond à rien, donc le hook échoue silencieusement.73* Un nom d'outil mal orthographié produit un matcher qui ne correspond à rien, donc le hook échoue silencieusement.

74* Une valeur de tableau est une erreur de schéma : Claude Code affiche un avis d'erreur de paramètres et rejette l'intégralité du fichier de paramètres utilisateur, projet ou local, `claude doctor` signale l'échec de validation, et aucun hook de ce fichier n'apparaît dans `/hooks`. Dans les [paramètres gérés](/docs/fr/managed-settings), Claude Code supprime la clé `hooks` entière du fichier qui contient le tableau, donc aucun des hooks de ce fichier ne s'applique. Les autres paramètres du fichier s'appliquent toujours, et `claude doctor` liste la clé supprimée.74* Une valeur de tableau est une erreur de schéma : Claude Code affiche un avis d'erreur de paramètres et rejette l'intégralité du fichier de paramètres utilisateur, projet ou local, `claude doctor` signale l'échec de validation, et aucun hook de ce fichier n'apparaît dans `/hooks`. Dans les [paramètres gérés](/docs/fr/managed-settings), Claude Code supprime la clé `hooks` entière du fichier qui contient le tableau, donc aucun des hooks de ce fichier ne s'applique. Les autres paramètres du fichier s'appliquent toujours, et `claude doctor` liste la clé supprimée.

75 75 

76Les 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.76Lorsque vous modifiez `settings.json`, la modification prend effet dans la session en cours après un bref délai de stabilité du fichier, même si vous créez le fichier ou le dossier `.claude/` du projet lui-même après le démarrage de la session. Vous n'avez pas besoin de redémarrer. Avant v2.1.257, Claude Code ne détectait pas les modifications dans un dossier `.claude/` créé après le démarrage de la session.

77 

78Si `/hooks` affiche toujours l'ancienne définition quelques secondes après l'enregistrement, exécutez `/hooks` à nouveau pour actualiser la vue.

77 79 

78Si `/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` 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](/docs/fr/hooks#debug-hooks) pour le format du journal et [hooks troubleshooting](/docs/fr/hooks-guide#limitations-and-troubleshooting) pour les modèles d'échec courants.80Si `/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` 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](/docs/fr/hooks#debug-hooks) pour le format du journal et [hooks troubleshooting](/docs/fr/hooks-guide#limitations-and-troubleshooting) pour les modèles d'échec courants.

79 81 


120| 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. |122| 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. |

121| 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. |123| 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. |

122| Le serveur MCP démarre sans les variables d'environnement attendues | L'entrée de configuration du serveur ne les définit pas, et elles ne se trouvent pas dans l'environnement que Claude Code transmet aux serveurs stdio : son propre environnement, moins les [variables qu'il supprime des sous-processus](/docs/fr/monitoring-usage#administrator-configuration) | Définissez `env` par serveur à l'intérieur de l'entrée `.mcp.json` du serveur, ce qui ne dépend pas de l'environnement de lancement ou de la confiance de l'espace de travail. |124| Le serveur MCP démarre sans les variables d'environnement attendues | L'entrée de configuration du serveur ne les définit pas, et elles ne se trouvent pas dans l'environnement que Claude Code transmet aux serveurs stdio : son propre environnement, moins les [variables qu'il supprime des sous-processus](/docs/fr/monitoring-usage#administrator-configuration) | Définissez `env` par serveur à l'intérieur de l'entrée `.mcp.json` du serveur, ce qui ne dépend pas de l'environnement de lancement ou de la confiance de l'espace de travail. |

123| 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](/docs/fr/hooks-guide) ou le [sandbox](/docs/fr/sandboxing) pour une garantie difficile. |125| La règle de refus `Bash(rm *)` ne bloque pas `/bin/rm` ou `find -delete` | Les règles Bash correspondent à la chaîne de commande littérale, pas à l'exécutable sous-jacent ; consultez [what a Bash rule doesn't match](/docs/fr/permissions#bash-rule-limits) | Utilisez un [PreToolUse hook](/docs/fr/hooks-guide) ou le [sandbox](/docs/fr/sandboxing) pour une garantie difficile. |

124 126 

125<h2 id="related-resources">127<h2 id="related-resources">

126 Ressources connexes128 Ressources connexes

desktop.md +16 −11

Details

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.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 10 

11<CardGroup cols={3}>11<CardGroup cols={3}>

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">12 <Card title="Télécharger pour 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 Silicon13 Build universel pour Intel et Apple Silicon

14 </Card>14 </Card>

15 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">16 <Card title="Télécharger pour Windows" icon="windows" href="https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code&utm_medium=docs">

17 For x64 processors17 Pour les processeurs x64

18 </Card>18 </Card>

19 19 

20 <Card title="Get Claude for Linux (beta)" icon="linux" href="/docs/en/desktop-linux">20 <Card title="Obtenir Claude pour Linux (bêta)" icon="linux" href="/docs/fr/desktop-linux">

21 apt or .deb for Ubuntu and Debian21 apt ou .deb pour Ubuntu et Debian

22 </Card>22 </Card>

23</CardGroup>23</CardGroup>

24 24 

25For Windows ARM64, download the [ARM64 installer](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). On Linux, install with apt; see [Claude Desktop on Linux](/docs/en/desktop-linux).25Pour Windows ARM64, téléchargez l'[installateur ARM64](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). Sur Linux, installez avec apt ; voir [Claude Desktop sur Linux](/docs/fr/desktop-linux).

26 26 

27Aprè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](/docs/fr/desktop-quickstart).27Aprè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](/docs/fr/desktop-quickstart).

28 28 


98 98 

99<span id="auto-mode-availability" />99<span id="auto-mode-availability" />

100 100 

101Auto mode est disponible à tous les utilisateurs sur l'API Anthropic et nécessite Claude Opus 4.6 ou version ultérieure, Sonnet 4.6 ou version ultérieure, ou un modèle Fable. Les administrateurs d'organisation peuvent désactiver auto mode avec la clé `disableAutoMode` dans les [paramètres gérés](#managed-settings).101Auto mode est disponible à tous les utilisateurs sur l'API Anthropic et nécessite Claude Opus 4.6 ou version ultérieure, Sonnet 4.6 ou version ultérieure, ou un [modèle Fable](/docs/fr/model-config#work-with-fable). Les administrateurs d'organisation peuvent désactiver auto mode avec la clé `disableAutoMode` dans les [paramètres gérés](#managed-settings).

102 102 

103Dans les déploiements Enterprise qui acheminent Desktop vers Google Cloud's Agent Platform, auto mode est également disponible par défaut ; voir [Auto mode sur Bedrock, Agent Platform ou Foundry](/docs/fr/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry) pour les modèles supportés.103Dans les déploiements Enterprise qui acheminent Desktop vers Google Cloud's Agent Platform, auto mode est également disponible par défaut ; voir [Auto mode sur Bedrock, Agent Platform ou Foundry](/docs/fr/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry) pour les modèles supportés.

104 104 


743 743 

744Les sessions cloud continuent en arrière-plan même si vous fermez l'application. L'utilisation compte vers les limites de votre [plan d'abonnement](/docs/fr/costs) sans frais de calcul séparés.744Les sessions cloud continuent en arrière-plan même si vous fermez l'application. L'utilisation compte vers les limites de votre [plan d'abonnement](/docs/fr/costs) sans frais de calcul séparés.

745 745 

746Vous 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 cloud et choisissez **Ajouter un environnement cloud**. Voir [Configurer les environnements cloud](/docs/fr/cloud-environments) pour les détails sur la configuration de l'accès réseau et des variables d'environnement.746Vous pouvez créer des environnements cloud personnalisés avec différents niveaux d'accès réseau et variables d'environnement. Quand vous démarrez une session cloud, ouvrez la liste déroulante d'environnement dans la zone de prompt pour les gérer :

747 

748* **Ajouter un environnement** : sélectionnez **Ajouter un environnement cloud**

749* **Modifier ou archiver l'un de vos propres environnements** : survolez-le et cliquez sur l'icône d'engrenage

750 

751Voir [Configurer les environnements cloud](/docs/fr/cloud-environments) pour les détails sur la configuration de l'accès réseau et des variables d'environnement.

747 752 

748<h3 id="ssh-sessions">753<h3 id="ssh-sessions">

749 Sessions SSH754 Sessions SSH


828Les paramètres gérés remplacent les paramètres du projet et de l'utilisateur et s'appliquent aux sessions Claude Code dans Desktop. Vous pouvez définir ces clés dans le fichier [paramètres gérés](/docs/fr/managed-settings) de votre organisation ou les pousser à distance via la console d'administration.833Les paramètres gérés remplacent les paramètres du projet et de l'utilisateur et s'appliquent aux sessions Claude Code dans Desktop. Vous pouvez définir ces clés dans le fichier [paramètres gérés](/docs/fr/managed-settings) de votre organisation ou les pousser à distance via la console d'administration.

829 834 

830| Clé | Description |835| Clé | Description |

831| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |836| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

832| `permissions.disableBypassPermissionsMode` | définissez sur `"disable"` pour empêcher les utilisateurs d'activer le mode de contournement des permissions. |837| `permissions.disableBypassPermissionsMode` | définissez sur `"disable"` pour empêcher les utilisateurs d'activer le mode de contournement des permissions. |

833| `disableAutoMode` | définissez sur `"disable"` pour supprimer le mode [Auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) du sélecteur de mode. Également accepté sous `permissions`. |838| `disableAutoMode` | définissez sur `"disable"` pour supprimer le mode [Auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) du sélecteur de mode. Également accepté sous `permissions`. |

834| `autoMode` | personnalisez ce que le classificateur du mode auto fait confiance et bloque dans votre organisation. Voir [Configurer le mode auto](/docs/fr/auto-mode-config). |839| `autoMode` | personnalisez ce que le classificateur du mode auto fait confiance et bloque dans votre organisation. Voir [Configurer le mode auto](/docs/fr/auto-mode-config). |


838| `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. |843| `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. |

839| `sshHostAllowlist` | restreignez les [sessions SSH](#restrict-which-ssh-hosts-users-can-connect-to) aux hôtes dont le nom d'hôte résolu correspond à l'un de ces modèles. Un tableau vide désactive les sessions SSH. Lecture à partir des paramètres gérés uniquement. |844| `sshHostAllowlist` | restreignez les [sessions SSH](#restrict-which-ssh-hosts-users-can-connect-to) aux hôtes dont le nom d'hôte résolu correspond à l'un de ces modèles. Un tableau vide désactive les sessions SSH. Lecture à partir des paramètres gérés uniquement. |

840| `disableDesktopLocalSessions` | définissez sur `true` pour désactiver les [sessions Code qui s'exécutent sur l'appareil](#local-sessions-on-managed-devices), en laissant les sessions SSH vers d'autres hôtes et les sessions cloud disponibles. La valeur doit être le booléen JSON `true`. Lecture à partir des paramètres gérés uniquement. Nécessite Claude Desktop v1.37937.0 ou version ultérieure. |845| `disableDesktopLocalSessions` | définissez sur `true` pour désactiver les [sessions Code qui s'exécutent sur l'appareil](#local-sessions-on-managed-devices), en laissant les sessions SSH vers d'autres hôtes et les sessions cloud disponibles. La valeur doit être le booléen JSON `true`. Lecture à partir des paramètres gérés uniquement. Nécessite Claude Desktop v1.37937.0 ou version ultérieure. |

841| `managedMcpServers` | poussez les configurations du serveur MCP à tous les utilisateurs. Disponible dans les déploiements Desktop tiers (3P) uniquement. Dans chaque entrée, définissez un transport de `"http"`, `"sse"` ou `"stdio"`, les détails de connexion et optionnellement une carte `toolPolicy` pour restreindre les outils de ce serveur que les utilisateurs peuvent invoquer. Livrez-le via le fichier de paramètres gérés, MDM ou la politique de bloc [`desktop`](/docs/fr/claude-apps-gateway-config#claude-desktop-overlay) d'une passerelle d'applications Claude, car les déploiements tiers ne reçoivent pas les paramètres de la console d'administration. Pour le livrer via la passerelle, vous avez besoin de Claude Code v2.1.232 ou version ultérieure sur le serveur de la passerelle. |846| `managedMcpServers` | poussez les configurations du serveur MCP à tous les utilisateurs. Disponible dans les déploiements Desktop tiers (3P) uniquement. Dans chaque entrée, définissez un transport de `"http"`, `"sse"` ou `"stdio"`, les détails de connexion et optionnellement une carte `toolPolicy` pour restreindre les outils de ce serveur que les utilisateurs peuvent invoquer. Livrez-le via le fichier de paramètres gérés, MDM ou la politique de bloc [`desktop`](/docs/fr/claude-apps-gateway-config#claude-desktop-overlay) d'une passerelle d'applications Claude, car les déploiements tiers ne reçoivent pas les paramètres de la console d'administration. Pour le livrer via la passerelle, vous avez besoin de Claude Code v2.1.232 ou version ultérieure sur le serveur de la passerelle. Ceci est la clé propre de l'application de bureau ; Claude Code lit un [paramètre géré de même nom](/docs/fr/managed-mcp#provide-servers-through-managed-settings) qui lui est propre, avec une forme d'entrée différente. |

842 847 

843Les paramètres gérés qui atteignent une session Desktop dépendent de l'endroit où cette session s'exécute. Les restrictions de modèle telles que [`availableModels`](/docs/fr/model-config#restrict-model-selection) sont appliquées dans les sessions Claude Code de Desktop de la même manière que dans le CLI du terminal ; voir [couverture de surface](/docs/fr/model-config#surface-coverage).848Les paramètres gérés qui atteignent une session Desktop dépendent de l'endroit où cette session s'exécute. Les restrictions de modèle telles que [`availableModels`](/docs/fr/model-config#restrict-model-selection) sont appliquées dans les sessions Claude Code de Desktop de la même manière que dans le CLI du terminal ; voir [couverture de surface](/docs/fr/model-config#surface-coverage).

844 849 

desktop-ios-simulator.md +176 −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# Tester les applications iOS dans le simulateur

6 

7> Claude Code Desktop ouvre votre application dans le volet Simulateur iOS lorsque Claude la crée, l'exécute ou la vérifie, avec un simulateur distinct pour chaque session.

8 

9<Note>

10 Le volet Simulateur iOS est en bêta publique dans Claude Code Desktop sur macOS. Il est disponible sur les plans Pro, Max, Team et Enterprise, sauf dans les organisations Enterprise qui ont une configuration HIPAA activée.

11</Note>

12 

13Le volet Simulateur iOS affiche votre application en cours d'exécution dans le Simulateur iOS d'Apple à côté de votre conversation dans Claude Code Desktop. Lorsque Claude crée, installe, lance ou vérifie votre application dans un simulateur, le volet s'ouvre automatiquement et diffuse l'écran de l'appareil en direct. Utilisez-le pour regarder Claude exécuter et tester votre application, ou pour parcourir l'application vous-même en appuyant sur les éléments tandis que Claude continue à travailler.

14 

15Le volet du simulateur pilote le simulateur directement, il n'a donc pas besoin de [l'utilisation de l'ordinateur](/docs/fr/desktop#let-claude-use-your-computer) et ne prend jamais le contrôle de votre écran ni ne masque vos autres fenêtres. Depuis la CLI, Claude accède au Simulateur iOS via [l'utilisation de l'ordinateur](/docs/fr/computer-use#test-a-simulator-flow), qui contrôle le simulateur sur votre écran de la même manière que vous le feriez avec une souris.

16 

17<h2 id="requirements">

18 Conditions requises

19</h2>

20 

21Le volet du simulateur utilise les outils de simulateur d'Apple, que l'application de bureau n'inclut pas. Avant de commencer une session, assurez-vous que vous disposez de :

22 

23* Claude Desktop v1.24012.0 ou version ultérieure

24* Un Mac, car le Simulateur iOS d'Apple ne fonctionne que sur macOS

25* [Xcode](https://developer.apple.com/xcode/) avec la plateforme iOS installée, qui fournit les appareils simulateurs. Si Xcode ne liste pas encore de simulateurs, consultez [Le volet du simulateur indique qu'aucun simulateur n'a été trouvé](#the-simulator-pane-says-no-simulators-were-found)

26 * Utilisez Xcode 26.x. Le volet ne fonctionne pas encore avec Xcode 27, qui remplace l'application Simulator par Device Hub. Si `xcode-select` pointe vers Xcode 27 sur votre Mac, consultez [Le volet du simulateur échoue avec Xcode 27](#the-simulator-pane-fails-with-xcode-27)

27 

28<Note>

29 Sur cette page, « appareil » fait référence à un iPhone ou iPad simulé, l'un des mêmes appareils simulateurs que vous gérez dans Xcode sous **Window → Devices and Simulators**, et non à du matériel physique.

30</Note>

31 

32Le volet du simulateur est disponible dans les sessions locales uniquement. Dans les sessions [cloud](/docs/fr/desktop#run-long-running-tasks-remotely) et [SSH](/docs/fr/desktop#ssh-sessions), Claude s'exécute sur une machine qui ne peut pas accéder aux simulateurs sur votre Mac.

33 

34<h2 id="run-your-app-in-the-simulator">

35 Exécuter votre application dans le simulateur

36</h2>

37 

38Vous n'avez pas besoin d'une commande ou d'un paramètre pour ouvrir le volet du simulateur. Claude l'ouvre lorsqu'il exécute votre application dans un simulateur.

39 

40<Steps>

41 <Step title="Ouvrir votre projet iOS">

42 Dans Claude Code Desktop, ouvrez l'onglet **Code** et démarrez une session avec le dossier de projet de votre application comme [dossier de projet](/docs/fr/desktop#start-a-session). Tout projet qui crée une application pour le Simulateur iOS fonctionne.

43 </Step>

44 

45 <Step title="Demander à Claude d'exécuter ou de tester l'application">

46 Formulez la tâche autour de l'exécution ou de la vérification de l'application. Par exemple :

47 

48 ```text theme={null}

49 Build the app and run it in the simulator to check the onboarding flow.

50 ```

51 </Step>

52 

53 <Step title="Regarder l'application dans le volet du simulateur">

54 Lorsque l'application se lance dans un simulateur, le volet Simulateur iOS s'ouvre à côté de la conversation. La première fois que Claude utilise un appareil, l'application de bureau vous demande de l'autoriser ; consultez [Accorder à Claude l'accès à un appareil](#grant-claude-access-to-a-device). Claude installe l'application, la parcourt en appuyant sur les éléments, et lit l'écran pour vérifier ses propres modifications pendant que vous regardez.

55 </Step>

56</Steps>

57 

58Le volet du simulateur s'ouvre chaque fois que Claude lance l'application dans un simulateur, à tout moment de la session. Lorsque votre demande concerne la visualisation de l'application, par exemple « le nouvel écran a-t-il l'air correct ? », Claude démarre un simulateur avant de commencer le travail. Après que Claude ait corrigé un bogue ou modifié un écran, demandez-lui de vérifier la modification : relancer l'application rouvre le volet s'il n'est pas ouvert.

59 

60Le volet du simulateur affiche l'appareil dans lequel l'application a réellement été lancée. Pour tester sur un appareil spécifique, nommez-le dans votre demande, par exemple « exécutez-le sur le simulateur iPhone SE », et Claude cible cet appareil lorsqu'il crée et lance l'application.

61 

62Un appareil que Claude démarre apparaît également dans l'application Simulator d'Apple, et Claude peut installer l'application sur un appareil que vous avez déjà démarré.

63 

64Vous pouvez également ouvrir le volet du simulateur vous-même. Une fois que la session a un simulateur attaché ou a modifié des fichiers Swift, le menu **Views** dans la barre d'outils de la session affiche une entrée **iOS Simulator**. Si le volet n'affiche pas encore d'appareil, cliquez sur **Attach simulator**, ou choisissez un appareil spécifique dans le menu des appareils à côté ; choisir un appareil arrêté le démarre. Si Xcode ou ses simulateurs manquent, le volet affiche les étapes de configuration à la place et les coche au fur et à mesure que vous les complétez.

65 

66<h2 id="control-the-simulator-yourself">

67 Contrôler le simulateur vous-même

68</h2>

69 

70Le volet du simulateur est interactif, pas seulement un visualiseur. Pendant que Claude travaille, ou entre les tâches, vous pouvez :

71 

72* Appuyer et faire glisser en cliquant et en faisant glisser sur l'écran de l'appareil

73* Appuyer sur les boutons matériels avec les mêmes raccourcis que l'application Simulator d'Apple : **Cmd+Shift+H** pour Accueil, **Cmd+L** pour verrouiller, **Cmd+Flèche vers le haut** et **Cmd+Flèche vers le bas** pour le volume

74* Faire pivoter l'appareil d'un quart de tour dans le sens des aiguilles d'une montre avec le bouton de rotation ou **Cmd+Flèche vers la droite**

75* Changer l'appareil que le volet affiche à partir du menu des appareils, qui liste la version du système d'exploitation de chaque simulateur et s'il est démarré

76* Enregistrer une capture d'écran avec **Cmd+S** ou un enregistrement d'écran avec **Cmd+R**, en utilisant les boutons de capture du volet ou les raccourcis ; les fichiers sont enregistrés sur votre Bureau

77* Arrêter la diffusion en continu d'un appareil sans l'arrêter en cliquant sur **Detach simulator**, ce qui ramène le volet à son état **Attach simulator**

78 

79La ligne sous le nom de l'appareil règle le flux vidéo du simulateur. Réduisez la **Frame rate** ou la **Resolution** si le volet surcharge votre Mac, basculez **Encoding** entre H.264 et JPEG, ou cochez **FPS** pour afficher la fréquence d'images que le volet reçoit. Ces paramètres modifient la façon dont le volet affiche l'appareil, pas la façon dont l'application s'exécute.

80 

81Vous et Claude pilotez le même appareil, donc vos appuis modifient l'état de l'application que Claude voit. Pour que Claude vérifie un écran spécifique, accédez-y en appuyant, puis demandez. Pendant que Claude pilote l'appareil, le volet affiche un badge **Claude is using this device** au-dessus de l'écran ; attendez avant d'appuyer jusqu'à ce que le badge disparaisse, afin que le résultat reflète l'application plutôt que votre entrée.

82 

83<h2 id="how-sessions-manage-devices">

84 Comment les sessions gèrent les appareils

85</h2>

86 

87Chaque appareil appartient à la session qui l'a lancé, donc les [sessions parallèles](/docs/fr/desktop#work-in-parallel-with-sessions) ne partagent pas un appareil : ce que vous voyez dans le volet d'une session reflète le travail de cette session, pas celui d'une autre. Changer de session dans la barre latérale change la vue du simulateur avec la conversation, et revenir reprend le même appareil où il s'était arrêté. Si Claude travaille avec plus d'un appareil, chacun ouvre son propre volet, jusqu'à 4 par session.

88 

89Claude Code Desktop arrête les simulateurs qu'il a démarrés une fois qu'ils ne sont plus utilisés : lorsque vous quittez l'application, lorsque vous archivez la session, ou 10 minutes après avoir détaché un appareil de son volet. Les appareils que vous démarrez vous-même, que ce soit à partir du volet ou dans l'application Simulator d'Apple, ne sont jamais arrêtés automatiquement. Pour arrêter l'appareil attaché immédiatement, utilisez le bouton d'arrêt dans le volet.

90 

91<h2 id="grant-claude-access-to-a-device">

92 Accorder à Claude l'accès à un appareil

93</h2>

94 

95Claude demande votre consentement avant de contrôler un appareil, tandis que la création de l'application ou l'ouverture d'une URL sur celui-ci suit le mode de permission de votre session. Vous ou votre organisation pouvez également désactiver complètement l'accès de Claude.

96 

97<h3 id="allow-a-device-the-first-time">

98 Autoriser un appareil la première fois

99</h3>

100 

101La première fois que Claude utilise un simulateur, l'application de bureau vous demande de l'autoriser. Le consentement couvre le contrôle de cet appareil et la prise de captures d'écran de celui-ci, et vous le donnez une fois par appareil plutôt qu'une fois par session. Les captures d'écran de Claude de l'appareil sont envoyées à Anthropic et conservées selon vos paramètres normaux de rétention des conversations, donc ne vous connectez pas à des comptes réels sur un appareil que Claude utilise.

102 

103Après avoir autorisé un appareil, les actions de Claude sur celui-ci, telles que l'appui, la saisie, le lancement de l'application et la prise de captures d'écran, s'exécutent sans autres invites. Elles ont la même confiance que vous cliquant dans le volet, et elles ne touchent que l'appareil simulé, donc le volet n'a pas besoin des permissions macOS Accessibility et Screen Recording que l'utilisation de l'ordinateur nécessite.

104 

105Si vous refusez, l'appareil démarre toujours et le volet fonctionne toujours pour vos propres appuis ; seul l'accès de Claude reste désactivé. Pour changer d'avis plus tard, cliquez sur **Let Claude use it** dans le volet.

106 

107<h3 id="actions-that-follow-your-permission-mode">

108 Actions qui suivent votre mode de permission

109</h3>

110 

111Deux actions suivent le [mode de permission](/docs/fr/permissions#permission-modes) de votre session au lieu du consentement unique :

112 

113* Ouvrir une URL sur l'appareil, par exemple pour tester un lien profond ou charger une page dans Safari de l'appareil, car une URL peut transporter des données hors de l'appareil.

114* Créer l'application, car `xcodebuild` exécute les scripts de construction de votre projet sur votre Mac. Vérifier une construction déjà en cours ne demande pas.

115 

116<h3 id="turn-off-simulator-access">

117 Désactiver l'accès au simulateur

118</h3>

119 

120Vous pouvez désactiver l'accès au simulateur de Claude dans les paramètres de l'application de bureau. Les organisations ont deux façons de le désactiver pour tout le monde :

121 

122* Le paramètre géré `disableMobileSimulatorTools` [managed setting](/docs/fr/desktop#managed-settings) bloque les outils de simulateur de Claude. Le volet du simulateur reste utilisable pour vos propres appuis, et le paramètre ne peut pas être remplacé depuis l'application.

123* La clé de politique `requireCoworkFullVmSandbox`, qui exécute les outils de Claude à l'intérieur d'une machine virtuelle isolée au lieu de sur votre Mac, désactive le volet du simulateur et les outils de simulateur de Claude entièrement, donc le volet ne peut pas attacher un appareil pendant qu'il est défini.

124 

125Claude vous indique quand l'un ou l'autre s'applique.

126 

127<h2 id="limitations">

128 Limitations

129</h2>

130 

131Claude pilote uniquement les appareils simulés et ne peut pas contrôler un iPhone ou iPad physique. Pour tester sur un, exécutez l'application sur celui-ci à partir de Xcode vous-même, puis décrivez ce que vous voyez ou joignez une capture d'écran à la conversation pour que Claude travaille à partir de celle-ci.

132 

133<h2 id="troubleshooting">

134 Dépannage

135</h2>

136 

137<h3 id="the-simulator-pane-doesn’t-open-when-claude-runs-the-app">

138 Le volet du simulateur ne s'ouvre pas lorsque Claude exécute l'application

139</h3>

140 

141Claude n'a peut-être pas reconnu que vous vouliez exécuter ou tester l'application, ou les outils de simulateur peuvent être manquants. Vérifiez les points suivants :

142 

143* Énoncez l'objectif explicitement, par exemple « exécutez l'application dans le Simulateur iOS et parcourez le flux d'inscription ».

144* Confirmez que Xcode et les simulateurs iOS sont installés et que votre version de Xcode répond aux [conditions requises](#requirements).

145* Si votre organisation gère Claude Code, les [outils de simulateur peuvent être désactivés par la politique](#turn-off-simulator-access).

146* Si vous êtes dans une organisation Enterprise qui a une configuration HIPAA activée, le volet du simulateur n'est pas disponible pour vous.

147* Le volet du simulateur nécessite Claude Desktop v1.24012.0 ou version ultérieure. Ouvrez **Claude → Check for Updates**, puis redémarrez l'application.

148 

149<h3 id="the-simulator-pane-says-no-simulators-were-found">

150 Le volet du simulateur indique qu'aucun simulateur n'a été trouvé

151</h3>

152 

153Si `xcode-select` pointe vers Xcode 27, le volet peut signaler qu'aucun simulateur n'a été trouvé même si des appareils existent ; consultez [Le volet du simulateur échoue avec Xcode 27](#the-simulator-pane-fails-with-xcode-27). Sinon, Xcode est installé mais n'a pas de simulateurs iOS à lister. Le volet du simulateur affiche les étapes de configuration à suivre et les coche au fur et à mesure que chacune se termine. Pour installer la pièce manquante manuellement, téléchargez le runtime du simulateur iOS à partir des paramètres de Xcode, ou exécutez `xcodebuild -downloadPlatform iOS`.

154 

155<h3 id="the-simulator-pane-fails-with-xcode-27">

156 Le volet du simulateur échoue avec Xcode 27

157</h3>

158 

159Le volet ne fonctionne pas encore avec Xcode 27, qui remplace l'application Simulator par Device Hub. Avec Xcode 27 sélectionné, l'attachement d'un appareil échoue, ou le volet signale qu'aucun simulateur n'a été trouvé même si des appareils existent.

160 

161Le volet utilise le Xcode vers lequel `xcode-select` pointe. Si Xcode 27 est votre seule installation, installez d'abord Xcode 26.x à côté. Ensuite, sélectionnez l'installation 26.x par son chemin. Par exemple, s'il est installé en tant que `/Applications/Xcode-26.4.app` :

162 

163```bash theme={null}

164sudo xcode-select -s /Applications/Xcode-26.4.app

165```

166 

167Exécutez `xcode-select -p` pour vérifier quelle installation est sélectionnée.

168 

169<h2 id="see-also">

170 Voir aussi

171</h2>

172 

173* [Utilisation de l'ordinateur dans Desktop](/docs/fr/desktop#let-claude-use-your-computer) : contrôle d'écran pour les applications sans volet dédié

174* [Utilisation de l'ordinateur depuis la CLI](/docs/fr/computer-use) : comment la CLI accède au Simulateur iOS

175* [Travailler en parallèle avec les sessions](/docs/fr/desktop#work-in-parallel-with-sessions) : comment les sessions isolent les modifications

176* [Commencer avec Claude Code Desktop](/docs/fr/desktop-quickstart)

Details

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.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 10 

11<CardGroup cols={3}>11<CardGroup cols={3}>

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">12 <Card title="Télécharger pour 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 Silicon13 Build universel pour Intel et Apple Silicon

14 </Card>14 </Card>

15 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">16 <Card title="Télécharger pour Windows" icon="windows" href="https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code&utm_medium=docs">

17 For x64 processors17 Pour les processeurs x64

18 </Card>18 </Card>

19 19 

20 <Card title="Get Claude for Linux (beta)" icon="linux" href="/docs/en/desktop-linux">20 <Card title="Obtenir Claude pour Linux (bêta)" icon="linux" href="/docs/fr/desktop-linux">

21 apt or .deb for Ubuntu and Debian21 apt ou .deb pour Ubuntu et Debian

22 </Card>22 </Card>

23</CardGroup>23</CardGroup>

24 24 

25For Windows ARM64, download the [ARM64 installer](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). On Linux, install with apt; see [Claude Desktop on Linux](/docs/en/desktop-linux).25Pour Windows ARM64, téléchargez l'[installateur ARM64](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). Sur Linux, installez avec apt ; voir [Claude Desktop sur Linux](/docs/fr/desktop-linux).

26 26 

27<Note>27<Note>

28 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).28 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).

Details

14 Comparer les options de planification14 Comparer les options de planification

15</h2>15</h2>

16 16 

17Claude Code offers three ways to schedule recurring or one-off work:17Claude Code offre trois façons de planifier des tâches récurrentes ou ponctuelles :

18 18 

19| | [Cloud](/docs/en/routines) | [Desktop](/docs/en/desktop-scheduled-tasks) | [`/loop`](/docs/en/scheduled-tasks) |19| | [Cloud](/docs/fr/routines) | [Desktop](/docs/fr/desktop-scheduled-tasks) | [`/loop`](/docs/fr/scheduled-tasks) |

20| :------------------------- | :---------------------------------- | :------------------------------------- | :------------------------------------------------------------------------- |20| :------------------------------------ | :----------------------------------- | :-------------------------------------------------- | :-------------------------------------------------------------------------- |

21| Runs on | Cloud, Anthropic-managed by default | Your machine | Your machine |21| S'exécute sur | Cloud, géré par Anthropic par défaut | Votre machine | Votre machine |

22| Requires machine on | No | Yes | Yes |22| Nécessite que la machine soit allumée | Non | Oui | Oui |

23| Requires open session | No | No | Yes |23| Nécessite une session ouverte | Non | Non | Oui |

24| Persistent across restarts | Yes | Yes | Restored on `--resume`, with [exceptions](/docs/en/scheduled-tasks#limitations) |24| Persistant après redémarrage | Oui | Oui | Restauré sur `--resume`, avec [exceptions](/docs/fr/scheduled-tasks#limitations) |

25| Access to local files | No (fresh clone) | Yes | Yes |25| Accès aux fichiers locaux | Non (clone frais) | Oui | Oui |

26| MCP servers | Connectors configured per task | [Config files](/docs/en/mcp) and connectors | Inherits from session |26| Serveurs MCP | Connecteurs configurés par tâche | [Fichiers de configuration](/docs/fr/mcp) et connecteurs | Hérité de la session |

27| Permission prompts | No (runs autonomously) | Configurable per task | Inherits from session |27| Invites de permission | Non (s'exécute de manière autonome) | Configurable par tâche | Hérité de la session |

28| Customizable schedule | Via `/schedule` in the CLI | Yes | Yes |28| Planification personnalisable | Via `/schedule` dans la CLI | Oui | Oui |

29| Minimum interval | 1 hour | 1 minute | 1 minute |29| Intervalle minimum | 1 heure | 1 minute | 1 minute |

30 30 

31<Tip>31<Tip>

32 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.32 Utilisez les **tâches cloud** pour les travaux qui doivent s'exécuter de manière fiable sans votre machine. Utilisez les **tâches Desktop** lorsque vous avez besoin d'accès aux fichiers et outils locaux. Utilisez **`/loop`** pour un sondage rapide pendant une session.

33</Tip>33</Tip>

34 34 

35<Note>35<Note>

Details

183 <Step title="Installer un plugin">183 <Step title="Installer un plugin">

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

185 185 

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

187 * La date de **Last updated** du plugin187 * La date de **Last updated** du plugin

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

189 189 


207 </Step>207 </Step>

208 208 

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

210 Vérifiez le résumé d'installation : s'il signale `Run /reload-plugins to activate.`, exécutez `/reload-plugins`, et si cela avertit que le rechargement relira la conversation, réexécutez-le en tant que `/reload-plugins --force`.210 Si le résumé d'installation signale `Run /reload-plugins to activate.`, Claude Code exécute ensuite ce rechargement pour vous. Si le rechargement avertit que votre prochain message relira la conversation, exécutez `/reload-plugins --force` pour activer le plugin.

211 211 

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

213 213 


311```311```

312 312 

313<Note>313<Note>

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

315</Note>315</Note>

316 316 

317<h2 id="install-plugins">317<h2 id="install-plugins">


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

350 350 

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

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

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

354 354 

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


393 393 

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

395 395 

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

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

398 398 

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


437 Appliquer les modifications de plugin sans redémarrer437 Appliquer les modifications de plugin sans redémarrer

438</h3>438</h3>

439 439 

440Quand le [résumé d'installation](#install-plugins) signale `Plugin is now active.`, Claude Code a déjà activé le plugin, et vous pouvez ignorer cette étape. Pour tout le reste, les plugins que vous avez activés ou désactivés pendant la session et les installations dont le résumé signale `Run /reload-plugins to activate.`, appliquez toutes les modifications sans redémarrer :440Quand vous fermez le menu `/plugin`, Claude Code exécute `/reload-plugins` pour vous pour appliquer les modifications que vous avez apportées, telles que l'installation, l'activation, la désactivation et la désinstallation de plugins. Si le rechargement invaliderait le [cache de prompt](/docs/fr/prompt-caching#enabling-or-disabling-a-plugin), il avertit et laisse les modifications en attente à la place ; exécutez `/reload-plugins --force` pour les appliquer quand même. Si Claude répond toujours quand vous fermez le menu, le rechargement s'exécute après la fin de la réponse.

441 441 

442```shell theme={null}442Pour les modifications de plugin qui se produisent en dehors du menu, exécutez `/reload-plugins` vous-même. Ces modifications incluent :

443/reload-plugins443 

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

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

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

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

448 

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

450 

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

445 452 

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

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

447 455 

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

449 457 

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

451 459 

Details

41* **Serveurs MCP** : les [connecteurs de claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai) se chargent uniquement lorsque votre abonnement claude.ai est la méthode d'authentification active. La [recherche d'outils](/docs/fr/mcp#configure-tool-search) est désactivée par défaut lorsque `ANTHROPIC_BASE_URL` pointe vers un hôte non-propriétaire, et n'est pas supportée sur les modèles Google Cloud's Agent Platform antérieurs à la génération Claude 4.5 ou sur les [déploiements Microsoft Foundry hébergés sur Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options)41* **Serveurs MCP** : les [connecteurs de claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai) se chargent uniquement lorsque votre abonnement claude.ai est la méthode d'authentification active. La [recherche d'outils](/docs/fr/mcp#configure-tool-search) est désactivée par défaut lorsque `ANTHROPIC_BASE_URL` pointe vers un hôte non-propriétaire, et n'est pas supportée sur les modèles Google Cloud's Agent Platform antérieurs à la génération Claude 4.5 ou sur les [déploiements Microsoft Foundry hébergés sur Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options)

42* **Subagents** : le [Subagent Explore intégré](/docs/fr/sub-agents#built-in-subagents) limite son modèle hérité à Opus sur l'API Claude, et hérite directement du modèle de la conversation principale sur tout autre fournisseur, y compris Claude Platform sur AWS42* **Subagents** : le [Subagent Explore intégré](/docs/fr/sub-agents#built-in-subagents) limite son modèle hérité à Opus sur l'API Claude, et hérite directement du modèle de la conversation principale sur tout autre fournisseur, y compris Claude Platform sur AWS

43* **[Commands](/docs/fr/commands#all-commands)** :43* **[Commands](/docs/fr/commands#all-commands)** :

44 * `/design-sync` et `/import` avec sa forme de sous-commande `claude import` ne sont pas disponibles sur Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry et Claude Platform sur AWS44 * `/design-sync` et `/import` avec sa forme de sous-commande `claude import` ne sont pas disponibles sur Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry et Claude Platform sur AWS, et via une [passerelle d'applications Claude](/docs/fr/claude-apps-gateway#availability-and-limitations)

45 * `/voice` nécessite un compte claude.ai45 * `/voice` nécessite un compte claude.ai

46 * `/list-agents` et son alias `/peers` sont disponibles uniquement dans les sessions où la [messagerie inter-sessions est activée](/docs/fr/cross-session-messaging#availability)46 * `/list-agents` et son alias `/peers` sont disponibles uniquement dans les sessions où la [messagerie inter-sessions est activée](/docs/fr/cross-session-messaging#availability)

47 47 

fullscreen.md +5 −2

Details

33 * Si vous avez rembobiné avant votre premier message, Claude Code redémarre avec une conversation vide33 * Si vous avez rembobiné avant votre premier message, Claude Code redémarre avec une conversation vide

34* Votre [mode de permission](/docs/fr/permission-modes) et [niveau d'effort](/docs/fr/model-config#adjust-effort-level)34* Votre [mode de permission](/docs/fr/permission-modes) et [niveau d'effort](/docs/fr/model-config#adjust-effort-level)

35* Le modèle que vous avez sélectionné en dernier avec [`/model`](/docs/fr/model-config#setting-your-model)35* Le modèle que vous avez sélectionné en dernier avec [`/model`](/docs/fr/model-config#setting-your-model)

36* Les règles que vous avez transmises avec [`--allowed-tools` ou `--disallowed-tools`](/docs/fr/cli-reference#cli-flags), et vos drapeaux `--agent`, `--agents` et `--append-system-prompt`36* Les règles que vous avez transmises avec [`--allowed-tools` ou `--disallowed-tools`](/docs/fr/cli-reference#cli-flags), et vos drapeaux `--agent`, `--agents`, `--append-system-prompt`, et `--system-prompt-snapshot`

37 37 

38Claude Code refuse de redémarrer si la session a une restriction qu'il ne peut pas transmettre au processus redémarré. Les restrictions qu'il ne peut pas transmettre incluent :38Claude Code refuse de redémarrer si la session a une restriction qu'il ne peut pas transmettre au processus redémarré. Les restrictions qu'il ne peut pas transmettre incluent :

39 39 


103* **Cliquez sur une option dans un menu de sélection** pour la choisir. Cela couvre les invites de permission, `/model`, `/config` et autres dialogues qui affichent une liste d'options. Le survol affiche un pointeur sur la ligne sous votre curseur. Nécessite Claude Code v2.1.187 ou version ultérieure.103* **Cliquez sur une option dans un menu de sélection** pour la choisir. Cela couvre les invites de permission, `/model`, `/config` et autres dialogues qui affichent une liste d'options. Le survol affiche un pointeur sur la ligne sous votre curseur. Nécessite Claude Code v2.1.187 ou version ultérieure.

104* **Cliquez sur une option dans un menu de sélection multiple** pour la basculer, et cliquez sur le bouton de soumission pour confirmer vos choix. Cliquer sur une ligne de texte libre, comme la ligne `Other` dans une question à choix multiples, met le focus sur son champ de saisie pour que vous puissiez taper une réponse. Nécessite Claude Code v2.1.208 ou version ultérieure.104* **Cliquez sur une option dans un menu de sélection multiple** pour la basculer, et cliquez sur le bouton de soumission pour confirmer vos choix. Cliquer sur une ligne de texte libre, comme la ligne `Other` dans une question à choix multiples, met le focus sur son champ de saisie pour que vous puissiez taper une réponse. Nécessite Claude Code v2.1.208 ou version ultérieure.

105* **Cliquez sur 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.105* **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.

106 * Cliquer développe également la sortie d'une commande shell `!`, qu'il s'agisse d'un résultat tronqué plus ancien ou de la ligne de progression en direct pendant l'exécution de la commande. Nécessite Claude Code v2.1.257 ou version ultérieure.

106* **Maintenez `Cmd` sur macOS, ou `Ctrl` sur Linux et Windows, et cliquez sur une URL ou un chemin de fichier** pour l'ouvrir. Les URLs simples `http://` et `https://` s'ouvrent dans votre navigateur, et les chemins de fichiers dans la sortie d'outil, comme ceux imprimés après une opération Edit ou Write, s'ouvrent dans votre application par défaut. Un simple clic sans le modificateur n'ouvre pas les liens, ce qui correspond au comportement du terminal natif.107* **Maintenez `Cmd` sur macOS, ou `Ctrl` sur Linux et Windows, et cliquez sur une URL ou un chemin de fichier** pour l'ouvrir. Les URLs simples `http://` et `https://` s'ouvrent dans votre navigateur, et les chemins de fichiers dans la sortie d'outil, comme ceux imprimés après une opération Edit ou Write, s'ouvrent dans votre application par défaut. Un simple clic sans le modificateur n'ouvre pas les liens, ce qui correspond au comportement du terminal natif.

107 * Claude Code affiche un chemin réseau (UNC), tel que `\\server\share\file.ts`, en tant que texte brut sans lien, car l'ouverture d'un chemin réseau peut envoyer vos identifiants Windows à l'hôte qu'il désigne.108 * Claude Code affiche un chemin réseau (UNC), tel que `\\server\share\file.ts`, en tant que texte brut sans lien, car l'ouverture d'un chemin réseau peut envoyer vos identifiants Windows à l'hôte qu'il désigne.

108 * Certains terminaux macOS transmettent `Cmd`+clic à l'application en cours d'exécution au lieu d'ouvrir le lien eux-mêmes, et le protocole de souris du terminal n'a aucun moyen d'encoder la clé `Cmd`, donc Claude Code reçoit un simple clic. Dans Ghostty, et dans Warp sur macOS, Claude Code détecte cela et permet à un simple clic sur un lien de l'ouvrir, et maintenir `Cmd` fonctionne toujours.109 * Certains terminaux macOS transmettent `Cmd`+clic à l'application en cours d'exécution au lieu d'ouvrir le lien eux-mêmes, et le protocole de souris du terminal n'a aucun moyen d'encoder la clé `Cmd`, donc Claude Code reçoit un simple clic. Dans Ghostty, et dans Warp sur macOS, Claude Code détecte cela et permet à un simple clic sur un lien de l'ouvrir, et maintenir `Cmd` fonctionne toujours.


148 149 

149Ces actions sont réaffectables. Consultez [Actions de défilement](/docs/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.150Ces actions sont réaffectables. Consultez [Actions de défilement](/docs/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.

150 151 

152Pendant que vous êtes défilé vers le haut, une ligne d'en-tête atténuée en haut de la conversation affiche l'invite la plus récente qui a défilé au-dessus de la vue. Cliquez sur la ligne pour sauter à cette invite.

153 

151<h3 id="auto-follow">154<h3 id="auto-follow">

152 Suivi automatique155 Suivi automatique

153</h3>156</h3>


178 181 

179Une valeur de `3` correspond à la valeur par défaut dans `vim` et les applications similaires. Le paramètre accepte toute valeur positive jusqu'à 20, y compris les valeurs fractionnaires inférieures à 1 telles que `0.25` pour ralentir le défilement du trackpad et de la molette accélérés dans les terminaux qui amplifient déjà les événements de molette.182Une valeur de `3` correspond à la valeur par défaut dans `vim` et les applications similaires. Le paramètre accepte toute valeur positive jusqu'à 20, y compris les valeurs fractionnaires inférieures à 1 telles que `0.25` pour ralentir le défilement du trackpad et de la molette accélérés dans les terminaux qui amplifient déjà les événements de molette.

180 183 

181Pour ajuster la vitesse de défilement de manière interactive, exécutez `/scroll-speed`. Le dialogue affiche une règle que vous pouvez faire défiler pendant qu'il est ouvert afin que vous puissiez sentir le changement immédiatement. Appuyez sur `←` et `→` pour ajuster la vitesse, `r` pour réinitialiser à la valeur par défaut détectée automatiquement, et `Entrée` pour enregistrer. Le dialogue augmente par nombres entiers jusqu'à 10, et sur les terminaux qui supportent un contrôle plus fin, il offre également des quarts de pas jusqu'à 0,25. Les quarts de pas nécessitent Claude Code v2.1.172 ou version ultérieure.184Pour ajuster la vitesse de défilement de manière interactive, exécutez `/scroll-speed`. Le dialogue affiche une règle que vous pouvez faire défiler pendant qu'il est ouvert afin que vous puissiez sentir le changement immédiatement. Appuyez sur `←` et `→` pour ajuster la vitesse, `r` pour réinitialiser à la valeur par défaut détectée automatiquement, et `Entrée` pour enregistrer. Le dialogue augmente par nombres entiers jusqu'à 10, et sur les terminaux qui supportent un contrôle plus fin, il offre également des quarts de pas jusqu'à 0,25.

182 185 

183La commande écrit la même valeur que la variable d'environnement `CLAUDE_CODE_SCROLL_SPEED` définit, persistée dans `~/.claude/settings.json`. Le maximum du dialogue est 10 : si vous définissez une valeur plus élevée via la variable d'environnement, le dialogue affiche 10, et l'enregistrement à partir du dialogue persiste 10. La commande n'est pas disponible dans le terminal IDE JetBrains.186La commande écrit la même valeur que la variable d'environnement `CLAUDE_CODE_SCROLL_SPEED` définit, persistée dans `~/.claude/settings.json`. Le maximum du dialogue est 10 : si vous définissez une valeur plus élevée via la variable d'environnement, le dialogue affiche 10, et l'enregistrement à partir du dialogue persiste 10. La commande n'est pas disponible dans le terminal IDE JetBrains.

184 187 

Details

30 Configuration rapide30 Configuration rapide

31</h3>31</h3>

32 32 

33`/install-github-app` fonctionne uniquement avec les repositories github.com. Si la télécommande git de votre repository se trouve sur gitlab.com ou bitbucket.org, la commande affiche un avis et se termine au lieu de démarrer la configuration. Pour exécuter Claude Code à partir des pipelines GitLab, consultez [Claude Code GitLab CI/CD](/docs/fr/gitlab-ci-cd).

34 

33Avant de commencer, installez le [GitHub CLI](https://cli.github.com) et authentifiez-le avec `gh auth login`. Claude Code le vérifie et vous avertit s'il manque.35Avant de commencer, installez le [GitHub CLI](https://cli.github.com) et authentifiez-le avec `gh auth login`. Claude Code le vérifie et vous avertit s'il manque.

34 36 

35Ouvrez `claude` dans le repository que vous voulez connecter, exécutez `/install-github-app` et suivez les invites. Claude Code installe la Claude GitHub App, puis configure un secret d'authentification pour les workflows :37Ouvrez `claude` dans le repository que vous voulez connecter, exécutez `/install-github-app` et suivez les invites. Claude Code installe la Claude GitHub App, puis configure un secret d'authentification pour les workflows :

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 GitHub Actions avec les fournisseurs cloud

6 

7> Exécutez Claude Code GitHub Actions via Amazon Bedrock, Google Cloud's Agent Platform ou Microsoft Foundry au lieu de l'API Claude

8 

9[Claude Code GitHub Actions](/docs/fr/github-actions) appelle l'API Claude par défaut. Pour acheminer l'inférence via votre propre compte cloud à la place, définissez l'entrée du fournisseur de l'action GitHub Claude Code et configurez votre cloud pour faire confiance au jeton OpenID Connect (OIDC) du workflow. Le workflow s'authentifie avec ce jeton, vous n'avez donc pas besoin de stocker d'identifiants cloud de longue durée dans votre référentiel.

10 

11<Info>

12 Cette page s'appuie sur la [configuration de GitHub Actions](/docs/fr/github-actions#setup). Elle suppose que vous connaissez déjà le fichier de workflow et l'étape `anthropics/claude-code-action`, et couvre uniquement ce qu'un fournisseur cloud change.

13</Info>

14 

15<h2 id="choose-your-provider">

16 Choisissez votre fournisseur

17</h2>

18 

19Claude Code GitHub Action prend en charge trois fournisseurs, et les étapes de configuration ci-dessous ne diffèrent que dans la configuration côté cloud. Utilisez celui où votre organisation a déjà accès aux modèles Claude. Vous indiquez à Claude Code GitHub Action quel fournisseur utiliser avec une entrée dans le bloc `with:` de l'étape `anthropics/claude-code-action` :

20 

21* **Amazon Bedrock** : `use_bedrock: "true"`

22* **Google Cloud's Agent Platform** : `use_vertex: "true"`

23* **Microsoft Foundry** : `use_foundry: "true"`

24 

25Les exemples de workflow complets sous [Configurer l'intégration](#set-up-the-integration) incluent déjà l'entrée pour chaque fournisseur.

26 

27<h2 id="prerequisites">

28 Conditions préalables

29</h2>

30 

31Avant de commencer, vous avez besoin de :

32 

33* Un accès administrateur au référentiel où Claude Code GitHub Action s'exécute, pour installer une application GitHub et ajouter des secrets

34* La permission de créer des ressources d'identité dans votre compte cloud : rôles IAM et fournisseurs d'identité OIDC sur AWS, ressources Workload Identity Federation et comptes de service sur Google Cloud, ou applications Microsoft Entra sur Azure

35* Un accès aux modèles Claude sur votre fournisseur :

36 * **Amazon Bedrock** : accès accordé aux modèles Claude. Les profils d'inférence inter-régions, tels que les ID de modèle `us.` dans les exemples de cette page, nécessitent un accès accordé dans chaque région de leur groupe de régions. Voir [Claude Code sur Amazon Bedrock](/docs/fr/amazon-bedrock)

37 * **Google Cloud's Agent Platform** : un projet avec l'API Agent Platform activée et l'accès aux modèles Claude. Voir [Claude Code sur Google Cloud's Agent Platform](/docs/fr/google-vertex-ai)

38 * **Microsoft Foundry** : une ressource Foundry avec un déploiement de modèle Claude. Voir [Claude Code sur Microsoft Foundry](/docs/fr/microsoft-foundry)

39 

40<h2 id="set-up-the-integration">

41 Configurer l'intégration

42</h2>

43 

44Au-delà des conditions préalables, vous créez quatre choses : une identité GitHub pour Claude Code GitHub Action, la configuration de confiance côté cloud, les secrets du référentiel et le fichier de workflow. Les étapes ci-dessous vous guident à travers chacune d'elles.

45 

46<Steps>

47 <Step title="Choisir une identité GitHub">

48 Claude Code GitHub Action pousse les commits et publie les commentaires via une identité GitHub. La [configuration rapide](/docs/fr/github-actions#quick-setup) installe l'application Claude GitHub officielle pour cela. Avec un fournisseur cloud, vous choisissez l'identité vous-même :

49 

50 * **[Application Claude GitHub](https://github.com/apps/claude) officielle** : installez-la sur le référentiel, ou passez à l'étape suivante si elle est déjà installée

51 * **Application GitHub personnalisée** : créez votre propre application, décrite ci-dessous, lorsque vous souhaitez uniquement les trois permissions que Claude Code GitHub Action utilise plutôt que l'[ensemble complet de l'application officielle](/docs/fr/github-actions#github-app-permissions)

52 * **`GITHUB_TOKEN` automatique de GitHub** : aucune application à créer ou installer, mais GitHub ne déclenche pas vos workflows CI sur les commits effectués avec celui-ci

53 

54 Les exemples de workflow à la quatrième étape s'authentifient avec une application personnalisée. Cette étape indique également ce qu'il faut modifier pour les deux autres options.

55 

56 Pour créer une application personnalisée, [enregistrez une nouvelle application GitHub](https://docs.github.com/en/apps/creating-github-apps/registering-a-github-app/registering-a-github-app) avec les webhooks désactivés, car cette intégration ne les utilise pas. Accordez-lui trois permissions de référentiel :

57 

58 * **Contents** : lecture et écriture

59 * **Issues** : lecture et écriture

60 * **Pull requests** : lecture et écriture

61 

62 Après avoir enregistré l'application, générez une clé privée et conservez le fichier `.pem` téléchargé, notez l'ID de l'application à partir de la page des paramètres de l'application, et [installez l'application](https://docs.github.com/en/apps/using-github-apps/installing-your-own-github-app) sur le référentiel où Claude Code GitHub Action s'exécute. Vous ajoutez la clé et l'ID en tant que secrets à la troisième étape.

63 </Step>

64 

65 <Step title="Configurer l'authentification cloud">

66 Configurez votre cloud pour faire confiance au jeton OIDC que GitHub émet au workflow, afin que chaque exécution de workflow obtienne des identifiants cloud de courte durée. Les puces dans chaque onglet résument ce qu'il faut créer, et chaque onglet renvoie au guide du fournisseur cloud pour les étapes au niveau de la console.

67 

68 <Tabs>

69 <Tab title="Amazon Bedrock">

70 Créez la configuration de confiance dans votre compte AWS, en suivant le [guide AWS pour créer des fournisseurs d'identité OIDC](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html) :

71 

72 * Ajoutez un fournisseur d'identité OIDC GitHub avec l'URL du fournisseur `https://token.actions.githubusercontent.com` et l'audience `sts.amazonaws.com`

73 * Créez un rôle IAM approuvé par ce fournisseur en tant qu'identité web, et attachez la politique d'invocation délimitée de [Configuration IAM](/docs/fr/amazon-bedrock#iam-configuration), qui accorde `bedrock:InvokeModel`, `bedrock:InvokeModelWithResponseStream`, `bedrock:ListInferenceProfiles` et `bedrock:GetInferenceProfile`, ainsi que deux actions d'abonnement `aws-marketplace`

74 * Limitez la politique de confiance du rôle à votre référentiel avec une condition de sujet telle que `repo:your-org/your-repo:*`. Voir le [guide de renforcement OIDC de GitHub](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect) pour le format de la réclamation

75 

76 Notez l'ARN du rôle. Vous l'ajoutez en tant que secret à l'étape suivante.

77 </Tab>

78 

79 <Tab title="Google Cloud's Agent Platform">

80 Créez les ressources de fédération dans votre projet Google Cloud, en suivant la [documentation Workload Identity Federation](https://cloud.google.com/iam/docs/workload-identity-federation) :

81 

82 * Activez trois API : IAM Credentials, Security Token Service (STS) et l'API Agent Platform, dont le nom du service est `aiplatform.googleapis.com`

83 * Créez un pool Workload Identity avec un fournisseur OIDC GitHub dont l'émetteur est `https://token.actions.githubusercontent.com`, et ajoutez une condition d'attribut qui limite le pool à votre référentiel

84 * Créez un compte de service dédié avec uniquement le rôle `Vertex AI User`, qui est `roles/aiplatform.user`, et autorisez le pool à l'emprunter

85 

86 Notez le nom de ressource complet du fournisseur et l'adresse e-mail du compte de service. Vous les ajoutez en tant que secrets à l'étape suivante.

87 </Tab>

88 

89 <Tab title="Microsoft Foundry">

90 Créez une application Microsoft Entra avec une identité fédérée pour votre référentiel, en suivant le [guide Microsoft pour l'authentification à partir de GitHub Actions](https://learn.microsoft.com/en-us/azure/developer/github/connect-from-azure-openid-connect) :

91 

92 * Enregistrez une application Microsoft Entra et ajoutez une identité fédérée qui fait confiance aux jetons que GitHub émet à votre référentiel. Une identité gérée affectée par l'utilisateur fonctionne à la place d'une application. Les deux ont l'ID client que vous notez ci-dessous

93 * Attribuez à l'application le rôle `Azure AI User` sur votre ressource Foundry. Voir [Configuration Azure RBAC](/docs/fr/microsoft-foundry#azure-rbac-configuration) pour un rôle personnalisé plus étroit

94 

95 Notez l'ID client de l'application, votre ID de locataire et votre ID d'abonnement. Vous les ajoutez en tant que secrets à l'étape suivante.

96 </Tab>

97 </Tabs>

98 </Step>

99 

100 <Step title="Ajouter les secrets du référentiel">

101 Dans le référentiel où Claude Code GitHub Action s'exécute, ajoutez les secrets pour votre fournisseur, plus les deux secrets d'application si vous avez créé une application GitHub personnalisée à la première étape. Voir le guide GitHub sur l'[utilisation des secrets dans GitHub Actions](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions).

102 

103 | Secret | Nécessaire pour | Valeur |

104 | -------------------------------- | -------------------------------- | ------------------------------------------ |

105 | `AWS_ROLE_TO_ASSUME` | Amazon Bedrock | L'ARN du rôle IAM |

106 | `GCP_WORKLOAD_IDENTITY_PROVIDER` | Google Cloud's Agent Platform | Le nom de ressource complet du fournisseur |

107 | `GCP_SERVICE_ACCOUNT` | Google Cloud's Agent Platform | L'adresse e-mail du compte de service |

108 | `AZURE_CLIENT_ID` | Microsoft Foundry | L'ID client de l'application Entra |

109 | `AZURE_TENANT_ID` | Microsoft Foundry | Votre ID de locataire Microsoft Entra |

110 | `AZURE_SUBSCRIPTION_ID` | Microsoft Foundry | Votre ID d'abonnement Azure |

111 | `APP_ID` | Application GitHub personnalisée | L'ID de l'application GitHub |

112 | `APP_PRIVATE_KEY` | Application GitHub personnalisée | Le contenu du fichier de clé privée `.pem` |

113 </Step>

114 

115 <Step title="Créer le fichier de workflow">

116 Créez un fichier de workflow pour votre fournisseur, tel que `.github/workflows/claude.yml`. Chaque exemple répond aux mentions `@claude`, s'authentifie auprès de GitHub avec une application personnalisée et inclut la permission `id-token: write`, que GitHub exige pour émettre le jeton OIDC que votre fournisseur cloud échange contre des identifiants.

117 

118 Si vous avez choisi une identité GitHub différente à la première étape, ajustez l'exemple :

119 

120 * **Application Claude GitHub officielle** : supprimez l'étape Generate GitHub App token et la ligne `github_token`

121 * **Jeton automatique de GitHub** : supprimez l'étape de génération de jeton et modifiez la ligne `github_token` en `github_token: ${{ secrets.GITHUB_TOKEN }}`

122 

123 <Warning>

124 Sur les référentiels publics, un commentaire contenant la phrase déclencheur de n'importe quel utilisateur démarre ce workflow. Les étapes d'identifiants s'exécutent avant que Claude Code GitHub Action vérifie l'accès en écriture du commentateur, de sorte que l'action rejette les utilisateurs non autorisés uniquement après que le workflow a généré un jeton d'application et s'est connecté à votre fournisseur cloud, ce qui laisse des entrées de journal d'audit et consomme des minutes d'Actions. Pour éviter ces exécutions, ajoutez une étape qui vérifie l'accès en écriture du commentateur avant les étapes d'identifiants.

125 </Warning>

126 

127 <Tabs>

128 <Tab title="Amazon Bedrock">

129 Remplacez la valeur `aws-region` par la vôtre. L'étape d'identifiants l'exporte en tant que `AWS_REGION` pour le reste du travail.

130 

131 ```yaml theme={null}

132 name: Claude PR Action

133 

134 permissions:

135 contents: write

136 pull-requests: write

137 issues: write

138 id-token: write

139 

140 on:

141 issue_comment:

142 types: [created]

143 pull_request_review_comment:

144 types: [created]

145 issues:

146 types: [opened]

147 

148 jobs:

149 claude-pr:

150 if: |

151 (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||

152 (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||

153 (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))

154 runs-on: ubuntu-latest

155 steps:

156 - name: Checkout repository

157 uses: actions/checkout@v6

158 

159 - name: Generate GitHub App token

160 id: app-token

161 uses: actions/create-github-app-token@v2

162 with:

163 app-id: ${{ secrets.APP_ID }}

164 private-key: ${{ secrets.APP_PRIVATE_KEY }}

165 

166 - name: Configure AWS Credentials (OIDC)

167 uses: aws-actions/configure-aws-credentials@v4

168 with:

169 role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}

170 aws-region: us-west-2

171 

172 - uses: anthropics/claude-code-action@v1

173 with:

174 github_token: ${{ steps.app-token.outputs.token }}

175 use_bedrock: "true"

176 claude_args: '--model us.anthropic.claude-sonnet-4-6'

177 ```

178 

179 <Tip>

180 Les ID de modèle Bedrock incluent un préfixe de profil d'inférence inter-régions tel que `us.`. Utilisez le préfixe pour le groupe de régions où vous avez accordé l'accès au modèle.

181 </Tip>

182 </Tab>

183 

184 <Tab title="Google Cloud's Agent Platform">

185 Remplacez la valeur `CLOUD_ML_REGION` par la vôtre. Vous n'avez pas besoin de coder en dur l'ID du projet, car le workflow le lit à partir de la sortie de l'étape `auth`.

186 

187 ```yaml theme={null}

188 name: Claude PR Action

189 

190 permissions:

191 contents: write

192 pull-requests: write

193 issues: write

194 id-token: write

195 

196 on:

197 issue_comment:

198 types: [created]

199 pull_request_review_comment:

200 types: [created]

201 issues:

202 types: [opened]

203 

204 jobs:

205 claude-pr:

206 if: |

207 (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||

208 (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||

209 (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))

210 runs-on: ubuntu-latest

211 steps:

212 - name: Checkout repository

213 uses: actions/checkout@v6

214 

215 - name: Generate GitHub App token

216 id: app-token

217 uses: actions/create-github-app-token@v2

218 with:

219 app-id: ${{ secrets.APP_ID }}

220 private-key: ${{ secrets.APP_PRIVATE_KEY }}

221 

222 - name: Authenticate to Google Cloud

223 id: auth

224 uses: google-github-actions/auth@v2

225 with:

226 workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }}

227 service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }}

228 

229 - uses: anthropics/claude-code-action@v1

230 with:

231 github_token: ${{ steps.app-token.outputs.token }}

232 use_vertex: "true"

233 claude_args: '--model claude-sonnet-5'

234 env:

235 ANTHROPIC_VERTEX_PROJECT_ID: ${{ steps.auth.outputs.project_id }}

236 CLOUD_ML_REGION: us-east5

237 ```

238 </Tab>

239 

240 <Tab title="Microsoft Foundry">

241 Remplacez `your-resource-name` par le nom de votre ressource Foundry. Claude Code construit l'URL du point de terminaison à partir de celui-ci. L'étape `azure/login` se connecte avec le jeton OIDC du workflow, et Claude Code récupère les identifiants via la [chaîne d'identifiants par défaut](https://learn.microsoft.com/en-us/azure/developer/javascript/sdk/authentication/credential-chains#defaultazurecredential-overview) Azure.

242 

243 ```yaml theme={null}

244 name: Claude PR Action

245 

246 permissions:

247 contents: write

248 pull-requests: write

249 issues: write

250 id-token: write

251 

252 on:

253 issue_comment:

254 types: [created]

255 pull_request_review_comment:

256 types: [created]

257 issues:

258 types: [opened]

259 

260 jobs:

261 claude-pr:

262 if: |

263 (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||

264 (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||

265 (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))

266 runs-on: ubuntu-latest

267 steps:

268 - name: Checkout repository

269 uses: actions/checkout@v6

270 

271 - name: Generate GitHub App token

272 id: app-token

273 uses: actions/create-github-app-token@v2

274 with:

275 app-id: ${{ secrets.APP_ID }}

276 private-key: ${{ secrets.APP_PRIVATE_KEY }}

277 

278 - name: Authenticate to Azure

279 uses: azure/login@v2

280 with:

281 client-id: ${{ secrets.AZURE_CLIENT_ID }}

282 tenant-id: ${{ secrets.AZURE_TENANT_ID }}

283 subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

284 

285 - uses: anthropics/claude-code-action@v1

286 with:

287 github_token: ${{ steps.app-token.outputs.token }}

288 use_foundry: "true"

289 claude_args: '--model claude-sonnet-5'

290 env:

291 ANTHROPIC_FOUNDRY_RESOURCE: your-resource-name

292 ```

293 

294 <Tip>

295 Utilisez un ID de modèle qui correspond à un déploiement Claude dans votre ressource Foundry. Voir [Claude Code sur Microsoft Foundry](/docs/fr/microsoft-foundry) pour la configuration du modèle et l'épinglage de version.

296 </Tip>

297 </Tab>

298 </Tabs>

299 

300 Avec n'importe quel fournisseur, vous pouvez limiter la durée d'exécution et les coûts en ajoutant `--max-turns` à `claude_args`. Voir [Gérer les coûts](/docs/fr/github-actions#manage-costs).

301 </Step>

302 

303 <Step title="Tester la configuration">

304 Mentionnez `@claude` dans un commentaire de problème ou de demande de tirage, puis regardez l'exécution dans l'onglet Actions du référentiel. Claude répond dans un commentaire sur le même problème ou la même demande de tirage.

305 </Step>

306</Steps>

307 

308<h2 id="troubleshooting">

309 Dépannage

310</h2>

311 

312Une exécution défaillante se casse généralement à l'un de ces deux endroits :

313 

314* **Erreurs d'authentification** : généralement une mauvaise configuration OIDC. Vérifiez que le workflow inclut la permission `id-token: write`, que la condition de référentiel de la configuration de confiance correspond exactement à votre référentiel, et que les noms de secrets dans votre workflow correspondent à ceux que vous avez ajoutés

315* **Problèmes de déclenchement et CI** : ils se comportent de la même manière que lorsque Claude Code GitHub Action appelle l'API Claude. Voir la [section dépannage](/docs/fr/github-actions#troubleshooting) de la page principale et la [FAQ](https://github.com/anthropics/claude-code-action/blob/main/docs/faq.md) de Claude Code GitHub Action

316 

317<h2 id="what’s-next">

318 Prochaines étapes

319</h2>

320 

321* [Claude Code GitHub Actions](/docs/fr/github-actions) pour les exemples, les paramètres et les meilleures pratiques

322* [Claude Code sur Amazon Bedrock](/docs/fr/amazon-bedrock) pour les ID de modèle Bedrock et les régions

323* [Claude Code sur Google Cloud's Agent Platform](/docs/fr/google-vertex-ai) pour les ID de modèle Agent Platform et les régions

324* [Claude Code sur Microsoft Foundry](/docs/fr/microsoft-foundry) pour la configuration du modèle Foundry et du point de terminaison

glossary.md +3 −3

Details

104 Checkpoint104 Checkpoint

105</h3>105</h3>

106 106 

107Un point de restauration créé à chaque invite que vous envoyez. Claude Code crée des instantanés des fichiers avant chaque modification afin qu'un checkpoint puisse les restaurer. Appuyez sur `Esc` deux fois ou exécutez `/rewind` pour restaurer le code, la conversation ou les deux à un point antérieur, ou pour résumer une partie de la conversation à partir d'un message sélectionné. Les checkpoints sont sauvegardés avec la conversation, donc une session reprise peut toujours `/rewind` vers eux. Ils sont séparés de git et ne suivent pas les modifications apportées via l'outil Bash.107Un point de restauration créé à chaque invite que vous envoyez qui démarre un tour. Claude Code crée des instantanés des fichiers avant chaque modification afin qu'un checkpoint puisse les restaurer. Appuyez sur `Esc` deux fois ou exécutez `/rewind` pour restaurer le code, la conversation ou les deux à un point antérieur, ou pour résumer une partie de la conversation à partir d'un message sélectionné. Les checkpoints sont sauvegardés avec la conversation, donc une session reprise peut toujours `/rewind` vers eux. Ils sont séparés de git et ne suivent pas les modifications apportées via l'outil Bash.

108 108 

109En savoir plus : [Checkpointing](/docs/fr/checkpointing)109En savoir plus : [Checkpointing](/docs/fr/checkpointing)

110 110 


180 Effort level180 Effort level

181</h3>181</h3>

182 182 

183Un 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 Fable 5.1 et Fable 5, sur Opus 4.6 et versions ultérieures, ainsi que sur Sonnet 4.6 et versions ultérieures.183Un paramètre qui contrôle le raisonnement adaptatif, ce qui permet au modèle de décider s'il doit réfléchir et dans quelle mesure à chaque étape. 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 les modèles Fable, sur Opus 4.6 et versions ultérieures, ainsi que sur Sonnet 4.6 et versions ultérieures.

184 184 

185En savoir plus : [Adjust effort level](/docs/fr/model-config#adjust-effort-level)185En savoir plus : [Adjust effort level](/docs/fr/model-config#adjust-effort-level)

186 186 


266 Output style266 Output style

267</h3>267</h3>

268 268 

269Une configuration qui modifie l'invite système de Claude pour modifier le comportement, le ton ou le format de la réponse. Contrairement à [CLAUDE.md](#claude-md), que Claude Code livre en tant que message utilisateur après l'invite système, un output style modifie l'invite système elle-même.269Une configuration qui modifie les instructions que Claude Code donne à Claude, pour définir le comportement, le ton ou le format de la réponse. Contrairement à [CLAUDE.md](#claude-md), qui ajoute le contexte du projet aux côtés des instructions par défaut de Claude Code, un output style personnalisé peut remplacer les instructions d'ingénierie logicielle par défaut.

270 270 

271En savoir plus : [Output styles](/docs/fr/output-styles)271En savoir plus : [Output styles](/docs/fr/output-styles)

272 272 

goal.md +1 −1

Details

113 Reprendre avec un objectif actif113 Reprendre avec un objectif actif

114</h3>114</h3>

115 115 

116Quand vous reprenez une session, Claude Code restaure un objectif qui était encore actif quand la session s'est terminée. Claude Code le restaure sur chaque route de reprise : `--continue`, `--resume` avec un ID ou un nom de session, et le [sélecteur de session](/docs/fr/sessions#use-the-session-picker). Avant v2.1.239, Claude Code restaurait l'objectif sur chaque route sauf le sélecteur `claude --resume`.116Quand vous reprenez une session, Claude Code restaure un objectif qui était encore actif quand la session s'est terminée. Claude Code le restaure sur chaque route de reprise : `--continue`, `--resume` avec un ID ou un nom de session, ou un [chemin de fichier de transcription](/docs/fr/sessions#resume-a-session), et le [sélecteur de session](/docs/fr/sessions#use-the-session-picker). Avant v2.1.239, Claude Code restaurait l'objectif sur chaque route sauf le sélecteur `claude --resume`.

117 117 

118Claude Code conserve la condition mais réinitialise le nombre de tours, le minuteur et la ligne de base de dépense de jetons. Il ne restaure pas un objectif qui était déjà atteint ou effacé.118Claude Code conserve la condition mais réinitialise le nombre de tours, le minuteur et la ligne de base de dépense de jetons. Il ne restaure pas un objectif qui était déjà atteint ou effacé.

119 119 

Details

166Claude Code 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.166Claude Code 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.

167 167 

168<Note>168<Note>

169 Claude Code utilise `ANTHROPIC_VERTEX_PROJECT_ID` comme ID de projet pour les demandes Google Cloud's Agent Platform. Les variables d'environnement `GCLOUD_PROJECT` et `GOOGLE_CLOUD_PROJECT` et le fichier d'identifiants référencé par `GOOGLE_APPLICATION_CREDENTIALS` ont la priorité sur celui-ci. Si aucun de ces éléments n'est défini, l'ID de projet est résolu à partir de votre configuration `gcloud` ou du compte de service attaché.169 Claude Code adresse les demandes Google Cloud's Agent Platform au projet dans `ANTHROPIC_VERTEX_PROJECT_ID`, même lorsque `GCLOUD_PROJECT`, `GOOGLE_CLOUD_PROJECT`, ou le fichier d'identifiants référencé par `GOOGLE_APPLICATION_CREDENTIALS` porte un projet différent.

170</Note>170</Note>

171 171 

172<h4 id="advanced-credential-configuration">172<h4 id="advanced-credential-configuration">


184}184}

185```185```

186 186 

187Avant d'exécuter la commande, Claude Code demande un jeton d'accès avec vos identifiants actuels pour confirmer qu'ils sont réellement expirés, et ignore la commande lorsqu'ils fonctionnent toujours.

188 

189Si la vérification ne se termine pas dans les cinq secondes, Claude Code ignore également la commande et l'exécute uniquement après l'échec d'une demande avec une erreur d'identifiants. Avant v2.1.261, une vérification qui a expiré était comptée comme un identifiant expiré, donc la commande pouvait ouvrir votre navigateur au démarrage même si vos identifiants étaient toujours valides.

190 

187Claude Code vous affiche la sortie de la commande, mais ne peut pas envoyer d'entrée interactive à la commande. Cela fonctionne bien pour les flux d'authentification basés sur navigateur où l'interface de ligne de commande affiche une URL et vous complétez l'authentification dans le navigateur. La commande d'actualisation expire après trois minutes si l'authentification ne se termine pas. Si vous définissez `gcpAuthRefresh` dans les paramètres du projet tels que `.claude/settings.json`, Claude Code l'exécute selon la même [règle de confiance de l'espace de travail que les hooks dans les fichiers de paramètres](/docs/fr/permissions#what-runs-before-you-trust-a-folder), qui inclut les sessions `-p` dans les dossiers que vous n'avez jamais approuvés.191Claude Code vous affiche la sortie de la commande, mais ne peut pas envoyer d'entrée interactive à la commande. Cela fonctionne bien pour les flux d'authentification basés sur navigateur où l'interface de ligne de commande affiche une URL et vous complétez l'authentification dans le navigateur. La commande d'actualisation expire après trois minutes si l'authentification ne se termine pas. Si vous définissez `gcpAuthRefresh` dans les paramètres du projet tels que `.claude/settings.json`, Claude Code l'exécute selon la même [règle de confiance de l'espace de travail que les hooks dans les fichiers de paramètres](/docs/fr/permissions#what-runs-before-you-trust-a-folder), qui inclut les sessions `-p` dans les dossiers que vous n'avez jamais approuvés.

188 192 

189<h3 id="4-configure-claude-code">193<h3 id="4-configure-claude-code">

headless.md +61 −54

Details

95 Exemples95 Exemples

96</h2>96</h2>

97 97 

98Ces exemples mettent en évidence les modèles CLI courants. Lorsqu'une commande nomme un fichier tel que `auth.py` ou `build-error.txt`, remplacez-le par un fichier de votre propre projet. En CI ou dans d'autres environnements scriptés, ajoutez [`--bare`](#start-faster-with-bare-mode) pour que Claude Code démarre sans charger les hooks, plugins, mémoire automatique ou `CLAUDE.md` de l'hôte.98Ces exemples mettent en évidence les modèles CLI courants. Lorsqu'une commande nomme un fichier tel que `auth.py` ou `build-error.txt`, remplacez-le par un fichier de votre propre projet. Dans les environnements CI ou autres environnements scriptés, ajoutez [`--bare`](#start-faster-with-bare-mode) pour que Claude Code démarre sans charger les hooks, plugins, mémoire automatique ou `CLAUDE.md` de l'hôte.

99 99 

100<h3 id="pipe-data-through-claude">100<h3 id="pipe-data-through-claude">

101 Transmettre des données via Claude101 Transmettre des données via Claude

102</h3>102</h3>

103 103 

104Le mode non-interactif lit stdin, vous pouvez donc transmettre des données et rediriger la réponse comme n'importe quel autre outil en ligne de commande.104Le mode non interactif lit stdin, vous pouvez donc transmettre des données et rediriger la réponse comme n'importe quel autre outil en ligne de commande.

105 105 

106Cet exemple transmet un journal de compilation à Claude et écrit l'explication dans un fichier :106Cet exemple transmet un journal de compilation à Claude et écrit l'explication dans un fichier :

107 107 


112Avec `--output-format json`, la charge utile de réponse inclut `total_cost_usd` et une ventilation des coûts par modèle, afin que les appelants scriptés puissent suivre les dépenses par invocation sans consulter le [tableau de bord d'utilisation](/docs/fr/costs). Les deux chiffres sont des [estimations côté client](/docs/fr/agent-sdk/cost-tracking) et peuvent différer de votre facture réelle.112Avec `--output-format json`, la charge utile de réponse inclut `total_cost_usd` et une ventilation des coûts par modèle, afin que les appelants scriptés puissent suivre les dépenses par invocation sans consulter le [tableau de bord d'utilisation](/docs/fr/costs). Les deux chiffres sont des [estimations côté client](/docs/fr/agent-sdk/cost-tracking) et peuvent différer de votre facture réelle.

113 113 

114<Note>114<Note>

115 stdin transmis est limité à 10 Mo. Si vous dépassez la limite, Claude Code se ferme avec une erreur claire et un statut non nul. Pour travailler avec des entrées plus grandes, écrivez le contenu dans un fichier et référencez le chemin du fichier dans votre prompt au lieu de le transmettre.115 L'entrée stdin transmise est limitée à 10 Mo. Si vous dépassez la limite, Claude Code se ferme avec une erreur claire et un statut non nul. Pour travailler avec des entrées plus volumineuses, écrivez le contenu dans un fichier et référencez le chemin du fichier dans votre invite au lieu de le transmettre.

116</Note>116</Note>

117 117 

118Si Claude Code ne peut pas lire stdin, par exemple parce que le processus qui l'a démarré a déconnecté son extrémité, Claude Code affiche un avertissement sur stderr et continue avec le prompt de la ligne de commande. Avant v2.1.211, un stdin illisible sur Windows plantait la session ou la faisait quitter silencieusement sans sortie.118Si Claude Code ne peut pas lire stdin, par exemple parce que le processus qui l'a démarré a déconnecté son extrémité, Claude Code imprime un avertissement sur stderr et continue avec l'invite de la ligne de commande. Avant la v2.1.211, une stdin illisible sur Windows plantait la session ou la fermait silencieusement sans sortie.

119 119 

120<h3 id="add-claude-to-a-build-script">120<h3 id="add-claude-to-a-build-script">

121 Ajouter Claude à un script de compilation121 Ajouter Claude à un script de compilation

122</h3>122</h3>

123 123 

124Vous pouvez envelopper un appel non-interactif dans un script pour utiliser Claude comme linter ou examinateur spécifique au projet.124Vous pouvez envelopper un appel non interactif dans un script pour utiliser Claude comme linter ou examinateur spécifique au projet.

125 125 

126Ce script `package.json` transmet le diff par rapport à `main` à Claude et lui demande de signaler les fautes de frappe. Transmettre le diff signifie que Claude n'a pas besoin de permission Bash pour le lire, et les guillemets échappés gardent le script portable vers Windows :126Ce script `package.json` transmet le diff par rapport à `main` à Claude et lui demande de signaler les fautes de frappe. Transmettre le diff signifie que Claude n'a pas besoin de permission Bash pour le lire, et les guillemets échappés gardent le script portable vers Windows :

127 127 


139 Obtenir une sortie structurée139 Obtenir une sortie structurée

140</h3>140</h3>

141 141 

142Utilisez `--output-format` pour contrôler la façon dont les réponses sont retournées :142Utilisez `--output-format` pour contrôler la façon dont les réponses sont renvoyées :

143 143 

144* `text` (par défaut) : sortie en texte brut144* `text` (par défaut) : sortie en texte brut

145* `json` : JSON structuré avec résultat, ID de session et métadonnées145* `json` : JSON structuré avec résultat, ID de session et métadonnées

146* `stream-json` : JSON délimité par des sauts de ligne pour le streaming en temps réel146* `stream-json` : JSON délimité par des sauts de ligne pour le streaming en temps réel

147 147 

148Cet 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` :148Cet exemple retourne un résumé du projet en JSON avec les métadonnées de session, avec le résultat textuel dans le champ `result` :

149 149 

150```bash theme={null}150```bash theme={null}

151claude -p "Summarize this project" --output-format json151claude -p "Summarize this project" --output-format json

152```152```

153 153 

154Pour 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`.154Pour 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 de la requête (ID de session, utilisation, etc.) avec la sortie structurée dans le champ `structured_output`.

155 155 

156Cet exemple extrait les noms de fonctions et les retourne sous forme de tableau de chaînes :156Cet exemple extrait les noms de fonction et les retourne sous forme de tableau de chaînes :

157 157 

158```bash theme={null}158```bash theme={null}

159claude -p "Extract the main function names from auth.py" \159claude -p "Extract the main function names from auth.py" \


161 --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}'161 --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}'

162```162```

163 163 

164Si la valeur n'est pas un JSON Schema valide, `claude` se ferme avec `Error: --json-schema is not a valid JSON Schema` suivi du diagnostic du validateur. Claude Code accepte les schémas qui utilisent le mot-clé `format`, tel que `"format": "email"`, mais traite `format` comme une annotation et ne l'applique pas. Avant v2.1.205, Claude Code ignorait silencieusement un schéma invalide et retournait du texte non structuré, et traitait tout schéma contenant `format` comme invalide.164Si la valeur n'est pas un JSON Schema valide, `claude` se ferme avec `Error: --json-schema is not a valid JSON Schema` suivi du diagnostic du validateur. Claude Code accepte les schémas qui utilisent le mot-clé `format`, tel que `"format": "email"`, mais traite `format` comme une annotation et ne l'applique pas. Avant la v2.1.205, Claude Code ignorait silencieusement un schéma invalide et retournait du texte non structuré, et traitait tout schéma contenant `format` comme invalide.

165 165 

166<Tip>166<Tip>

167 Utilisez un outil comme [jq](https://jqlang.org/) pour analyser la réponse et extraire des champs spécifiques :167 Utilisez un outil comme [jq](https://jqlang.org/) pour analyser la réponse et extraire des champs spécifiques :


182 Réponses en streaming182 Réponses en streaming

183</h3>183</h3>

184 184 

185Utilisez `--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 :185Utilisez `--output-format stream-json` avec `--verbose` et `--include-partial-messages` pour recevoir les jetons au fur et à mesure qu'ils sont générés. Chaque ligne est un objet JSON représentant un événement :

186 186 

187```bash theme={null}187```bash theme={null}

188claude -p "Explain recursion" --output-format stream-json --verbose --include-partial-messages188claude -p "Explain recursion" --output-format stream-json --verbose --include-partial-messages


190 190 

191La dernière ligne du flux est un message `result` avec le texte de réponse final, le coût et les métadonnées de session.191La dernière ligne du flux est un message `result` avec le texte de réponse final, le coût et les métadonnées de session.

192 192 

193Si votre consommateur lit le flux lentement, Claude Code attend que la sortie en file d'attente se vide avant de quitter, en mettant à l'échelle l'attente en fonction de la quantité encore en file d'attente, plafonnée à 30 secondes. Avant v2.1.214, l'attente à la sortie était plafonnée à environ deux secondes, ce qui pouvait couper la fin d'une réponse volumineuse.193Si votre consommateur lit le flux lentement, Claude Code attend que la sortie en file d'attente se vide avant de se fermer, en mettant à l'échelle l'attente en fonction de la quantité restante en file d'attente, plafonnée à 30 secondes. Avant la v2.1.214, l'attente de fermeture était plafonnée à environ deux secondes, ce qui pouvait couper la fin d'une grande réponse.

194 194 

195L'exemple suivant utilise [jq](https://jqlang.org/) 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 :195L'exemple suivant utilise [jq](https://jqlang.org/) pour filtrer les deltas de texte et afficher uniquement le texte en streaming. L'indicateur `-r` génère des chaînes brutes (sans guillemets) et `-j` joint sans sauts de ligne pour que les jetons se transmettent continuellement :

196 196 

197```bash theme={null}197```bash theme={null}

198claude -p "Write a poem" --output-format stream-json --verbose --include-partial-messages | \198claude -p "Write a poem" --output-format stream-json --verbose --include-partial-messages | \

199 jq -rj 'select(.type == "stream_event" and .event.delta.type? == "text_delta") | .event.delta.text'199 jq -rj 'select(.type == "stream_event" and .event.delta.type? == "text_delta") | .event.delta.text'

200```200```

201 201 

202Pour le streaming programmatique avec callbacks et objets de message, consultez [Réponses en streaming en temps réel](/docs/fr/agent-sdk/streaming-output) dans la documentation de l'Agent SDK.202Pour le streaming programmatique avec des rappels et des objets de message, consultez [Réponses en streaming en temps réel](/docs/fr/agent-sdk/streaming-output) dans la documentation du SDK Agent.

203 203 

204<h4 id="follow-subagent-messages">204<h4 id="follow-subagent-messages">

205 Suivre les messages des sous-agents205 Suivre les messages des sous-agents


207 207 

208Les messages des [sous-agents](/docs/fr/sub-agents) apparaissent dans le flux sous forme de messages `assistant` et `user` dont le champ `parent_tool_use_id` est l'ID de l'appel d'outil qui a généré le sous-agent. Les messages de la conversation principale portent `null` dans ce champ.208Les messages des [sous-agents](/docs/fr/sub-agents) apparaissent dans le flux sous forme de messages `assistant` et `user` dont le champ `parent_tool_use_id` est l'ID de l'appel d'outil qui a généré le sous-agent. Les messages de la conversation principale portent `null` dans ce champ.

209 209 

210Par défaut, Claude Code n'émet que les blocs `tool_use` et `tool_result` des sous-agents. Passez [`--forward-subagent-text`](/docs/fr/cli-reference#cli-flags) ou définissez [`CLAUDE_CODE_FORWARD_SUBAGENT_TEXT`](/docs/fr/env-vars) pour émettre également les blocs de texte et de réflexion des sous-agents, afin que vous puissiez reconstruire la transcription de chaque sous-agent. Cela nécessite Claude Code v2.1.211 ou ultérieur.210Le premier message d'un sous-agent s'exécutant en [avant-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) est un message `user` portant l'invite qui le pilote. Après ce premier message, Claude Code émet :

211 211 

212Lorsque vous activez l'une ou l'autre option, Claude Code transmet les messages des [sous-agents à chaque profondeur d'imbrication](/docs/fr/sub-agents#let-subagents-spawn-their-own-subagents) : quand un sous-agent génère son propre sous-agent, les messages du sous-agent imbriqué portent l'ID de l'appel d'outil Agent qui l'a généré dans `parent_tool_use_id`, afin que vous puissiez reconstruire l'arborescence d'imbrication complète en suivant ces ID. Avant v2.1.219, les messages des sous-agents imbriqués n'apparaissaient pas dans le flux.212* **Par défaut** : les blocs `tool_use` et `tool_result` du sous-agent.

213* **Avec [`--forward-subagent-text`](/docs/fr/cli-reference#cli-flags) ou [`CLAUDE_CODE_FORWARD_SUBAGENT_TEXT`](/docs/fr/env-vars)** : les blocs de texte et de réflexion du sous-agent également, afin que vous puissiez reconstruire la transcription de chaque sous-agent. Cela nécessite Claude Code v2.1.211 ou ultérieur.

214 

215Lorsque vous activez l'une ou l'autre option, Claude Code transfère les messages des [sous-agents à chaque profondeur d'imbrication](/docs/fr/sub-agents#let-subagents-spawn-their-own-subagents) : lorsqu'un sous-agent génère son propre sous-agent, les messages du sous-agent imbriqué portent l'ID de l'appel d'outil Agent qui l'a généré dans `parent_tool_use_id`, afin que vous puissiez reconstruire l'arborescence d'imbrication complète en suivant ces ID. Avant la v2.1.219, les messages des sous-agents imbriqués n'apparaissaient pas dans le flux.

216 

217Les compétences qui [s'exécutent dans un sous-agent](/docs/fr/skills#run-skills-in-a-subagent) apparaissent dans le flux de la même manière : le premier message de la compétence dupliquée est un message `user` portant le contenu de la compétence qui pilote l'exécution. Si vous activez l'une ou l'autre option, le flux porte également les blocs de texte et de réflexion de la compétence dupliquée. Avant la v2.1.265, seuls les blocs `tool_use` et `tool_result` d'une compétence dupliquée apparaissaient dans le flux.

213 218 

214<h4 id="handle-api-retries">219<h4 id="handle-api-retries">

215 Gérer les tentatives d'API220 Gérer les tentatives d'API

216</h4>221</h4>

217 222 

218Quand une requête API échoue avec une erreur réessayable, Claude Code émet un événement `system/api_retry` avant de réessayer. Sur v2.1.246 ou ultérieur, quand un `401` ou `403` rejette une credential [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper), Claude Code effectue les deux premières tentatives silencieusement sans événement, puis émet l'événement comme d'habitude à partir de la troisième tentative consécutive. Les tentatives silencieuses comptent toujours vers `attempt`. Vous pouvez utiliser l'événement pour afficher la progression des tentatives dans votre propre interface.223Lorsqu'une requête API échoue avec une erreur réessayable, Claude Code émet un événement `system/api_retry` avant de réessayer. Sur la v2.1.246 ou ultérieur, lorsqu'un `401` ou `403` rejette une credential [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper), Claude Code effectue les deux premières tentatives silencieusement sans événement, puis émet l'événement comme d'habitude à partir de la troisième tentative consécutive. Les tentatives silencieuses comptent toujours vers `attempt`. Vous pouvez utiliser l'événement pour afficher la progression des tentatives dans votre propre interface.

219 224 

220| Champ | Type | Description |225| Champ | Type | Description |

221| ---------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |226| ---------------- | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

222| `type` | `"system"` | type de message |227| `type` | `"system"` | type de message |

223| `subtype` | `"api_retry"` | identifie ceci comme un événement de tentative |228| `subtype` | `"api_retry"` | identifie ceci comme un événement de tentative |

224| `attempt` | entier | numéro de tentative actuel, commençant à 1 |229| `attempt` | entier | numéro de tentative actuel, commençant à 1 |

225| `max_retries` | entier | nombre total de tentatives autorisées |230| `max_retries` | entier | tentatives totales autorisées pour la cause de cet échec, qui peut être inférieur au budget de session |

226| `retry_delay_ms` | entier | millisecondes jusqu'à la prochaine tentative |231| `retry_delay_ms` | entier | millisecondes jusqu'à la prochaine tentative |

227| `error_status` | entier ou null | code de statut HTTP, ou `null` pour les erreurs de connexion sans réponse HTTP |232| `error_status` | entier ou null | code de statut HTTP de la tentative échouée, ou `null` lorsque la tentative n'a pas reçu de réponse HTTP de l'API |

228| `no_response` | objet, optionnel | présent uniquement quand la tentative échouée n'a pas reçu les [en-têtes de réponse à temps](/docs/fr/errors#no-response-from-api). `waited_ms` est la durée d'attente de cette tentative et `retry_wait_ms` est la durée d'attente de la tentative. Dans ces événements, `max_retries` reflète la tentative que cette cause obtient normalement, pas le budget de session. Nécessite Claude Code v2.1.261 ou ultérieur |233| `no_response` | objet, optionnel | présent uniquement lorsque la tentative échouée n'a pas reçu [d'en-têtes de réponse à temps](/docs/fr/errors#no-response-from-api). `waited_ms` est la durée d'attente de cette tentative et `retry_wait_ms` est la durée d'attente de la tentative. Dans ces événements, `max_retries` reflète la tentative que cette cause obtient normalement, et non le budget de session. Nécessite Claude Code v2.1.261 ou ultérieur |

229| `error` | chaîne | catégorie d'erreur : `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `rate_limit`, `overloaded`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, ou `unknown` |234| `error` | chaîne | catégorie d'erreur : `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `rate_limit`, `overloaded`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error`, ou `unknown` |

230| `uuid` | chaîne | identifiant d'événement unique |235| `uuid` | chaîne | identifiant d'événement unique |

231| `session_id` | chaîne | session à laquelle appartient l'événement |236| `session_id` | chaîne | session à laquelle appartient l'événement |

232 237 


234 Lire les métadonnées de session239 Lire les métadonnées de session

235</h4>240</h4>

236 241 

237L'é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 les événements de démarrage le précèdent :242L'é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 des événements de démarrage le précèdent :

238 243 

239* Les événements `plugin_install`, quand [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/docs/fr/env-vars) est défini.244* Événements `plugin_install`, lorsque [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/docs/fr/env-vars) est défini.

240* Les événements [`hook_started`, `hook_progress` et `hook_response`](/docs/fr/agent-sdk/typescript#sdkhookstartedmessage), pendant qu'un hook [`SessionStart`](/docs/fr/hooks#sessionstart) ou [`Setup`](/docs/fr/hooks#setup) configuré s'exécute. Ces événements se diffusent au fur et à mesure que le hook les produit. Claude Code v2.1.169 à v2.1.203 les a livrés en un seul lot après la fin du hook, toujours avant `system/init` ; v2.1.204 a restauré la livraison en direct.245* [Événements `hook_started`, `hook_progress` et `hook_response`](/docs/fr/agent-sdk/typescript#sdkhookstartedmessage), tandis qu'un hook [`SessionStart`](/docs/fr/hooks#sessionstart) ou [`Setup`](/docs/fr/hooks#setup) configuré s'exécute. Ceux-ci se transmettent au fur et à mesure que le hook les produit. Claude Code v2.1.169 à v2.1.203 les a livrés en un seul lot après la fin du hook, toujours avant `system/init` ; v2.1.204 a restauré la livraison en direct.

241 246 

242L'événement porte également un tableau `capabilities` optionnel de chaînes nommant les comportements de protocole que cette version de Claude Code implémente, tels que `interrupt_receipt_v1` ou `interrupt_cancel_queued_v1`. Vérifiez-le pour détecter les fonctionnalités au lieu de comparer les chaînes de version, et ignorez les valeurs que vous ne reconnaissez pas. Le champ nécessite Claude Code v2.1.205 ou ultérieur et est absent des versions antérieures. Consultez [`SDKSystemMessage`](/docs/fr/agent-sdk/typescript#sdksystemmessage) pour la liste des capacités.247L'événement porte également un tableau optionnel `capabilities` de chaînes nommant les comportements de protocole que cette version de Claude Code implémente, tels que `interrupt_receipt_v1` ou `interrupt_cancel_queued_v1`. Vérifiez-le pour détecter les fonctionnalités au lieu de comparer les chaînes de version, et ignorez les valeurs que vous ne reconnaissez pas. Le champ nécessite Claude Code v2.1.205 ou ultérieur et est absent des versions antérieures. Consultez [`SDKSystemMessage`](/docs/fr/agent-sdk/typescript#sdksystemmessage) pour la liste des capacités.

243 248 

244<h4 id="fail-ci-when-a-plugin-or-mcp-server-doesn’t-load">249<h4 id="fail-ci-when-a-plugin-or-mcp-server-doesn’t-load">

245 Échouer CI quand un plugin ou un serveur MCP ne se charge pas250 Échouer CI lorsqu'un plugin ou un serveur MCP ne se charge pas

246</h4>251</h4>

247 252 

248Utilisez les champs de plugin dans l'événement `system/init` pour détecter un plugin qui ne s'est pas chargé :253Utilisez les champs de plugin dans l'événement `system/init` pour détecter un plugin qui ne s'est pas chargé :

249 254 

250| Champ | Type | Description |255| Champ | Type | Description |

251| --------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |256| --------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

252| `plugins` | tableau | plugins qui se sont chargés avec succès, chacun avec `name` et `path` |257| `plugins` | tableau | plugins qui se sont chargés avec succès, chacun avec `name` et `path` |

253| `plugin_errors` | tableau | erreurs de chargement de plugin, chacune avec `plugin`, `type` et `message`. Inclut les versions de dépendance non satisfaites et les défaillances de chargement `--plugin-dir` telles qu'un chemin manquant ou une archive invalide. Les plugins affectés sont rétrogradés et absents de `plugins`. La clé est omise quand il n'y a pas d'erreurs |258| `plugin_errors` | tableau | erreurs de chargement de plugin, chacune avec `plugin`, `type` et `message`. Inclut les versions de dépendance non satisfaites et les échecs de chargement `--plugin-dir` tels qu'un chemin manquant ou une archive invalide. Les plugins affectés sont rétrogradés et absents de `plugins`. La clé est omise lorsqu'il n'y a pas d'erreurs |

254 259 

255Utilisez les champs du serveur MCP de la même manière. Quand vous passez [`--mcp-config`](/docs/fr/cli-reference#cli-flags) avec `-p`, Claude Code attend les serveurs encore en attente avant d'exécuter le premier tour, jusqu'au timeout de démarrage [`MCP_TIMEOUT`](/docs/fr/env-vars), 30 secondes par défaut. Un serveur distant avec une [liste d'outils en cache](/docs/fr/agent-sdk/mcp#connection-timing) ignore l'attente, affiche `pending` dans `system/init` et se connecte lors de son premier appel d'outil. L'attente nécessite Claude Code v2.1.221 ou ultérieur.260Utilisez les champs du serveur MCP de la même manière. Lorsque vous passez [`--mcp-config`](/docs/fr/cli-reference#cli-flags) avec `-p`, Claude Code attend les serveurs toujours en attente avant d'exécuter le premier tour, jusqu'au délai d'expiration de démarrage [`MCP_TIMEOUT`](/docs/fr/env-vars), 30 secondes par défaut. Un serveur distant avec une [liste d'outils mise en cache](/docs/fr/agent-sdk/mcp#connection-timing) ignore l'attente, affiche `pending` dans `system/init` et se connecte lors de son premier appel d'outil. L'attente nécessite Claude Code v2.1.221 ou ultérieur.

256 261 

257Claude Code valide chaque entrée `--mcp-config` au démarrage et ignore les entrées qui échouent la validation, par exemple une entrée `url` sans `type`. L'exécution continue et se termine correctement, donc vérifiez ces champs pour détecter un serveur qui ne s'est jamais chargé :262Claude Code valide chaque entrée `--mcp-config` au démarrage et ignore les entrées qui échouent la validation, par exemple une entrée `url` sans `type`. L'exécution continue et se ferme correctement, vérifiez donc ces champs pour détecter un serveur qui ne s'est jamais chargé :

258 263 

259| Champ | Type | Description |264| Champ | Type | Description |

260| ------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |265| ------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

261| `mcp_servers` | tableau | serveurs MCP dans la session, chacun avec `name` et `status` |266| `mcp_servers` | tableau | serveurs MCP dans la session, chacun avec `name` et `status` |

262| `mcp_server_errors` | tableau | entrées `--mcp-config` ignorées par la validation de configuration, chacune avec `name`, `type` et `message`. `type` est une catégorie d'ignorance telle que `unknown_type`, `url_missing_type`, `invalid_config` ou `reserved_name` ; traitez les valeurs que vous ne reconnaissez pas comme un ignorage générique. Les serveurs affectés sont absents de `mcp_servers`. La clé est omise quand il n'y a pas d'erreurs, donc une porte CI peut échouer sur un tableau non vide. Nécessite Claude Code v2.1.219 ou ultérieur |267| `mcp_server_errors` | tableau | entrées `--mcp-config` ignorées par la validation de configuration, chacune avec `name`, `type` et `message`. `type` est une catégorie d'ignorance telle que `unknown_type`, `url_missing_type`, `invalid_config` ou `reserved_name` ; traitez les valeurs que vous ne reconnaissez pas comme un ignorage générique. Les serveurs affectés sont absents de `mcp_servers`. La clé est omise lorsqu'il n'y a pas d'erreurs, donc une porte CI peut échouer sur un tableau non vide. Nécessite Claude Code v2.1.219 ou ultérieur |

263 268 

264Quand vous exécutez la commande à la main dans un terminal, Claude Code affiche également un avertissement de démarrage sur stderr, tel que `Warning: 1 MCP server skipped due to invalid config:`, suivi de la raison de chaque entrée ignorée. Quand vous redirigez stderr, ou quand un programme tel qu'un exécuteur CI ou un hôte SDK le capture, Claude Code n'affiche aucun avertissement et rapporte les entrées ignorées uniquement dans le champ `mcp_server_errors`. L'avertissement nécessite Claude Code v2.1.219 ou ultérieur.269Lorsque vous exécutez la commande à la main dans un terminal, Claude Code imprime également un avertissement de démarrage sur stderr, tel que `Warning: 1 MCP server skipped due to invalid config:`, suivi de la raison de chaque entrée ignorée. Lorsque vous redirigez stderr, ou lorsqu'un programme tel qu'un exécuteur CI ou un hôte SDK le capture, Claude Code n'imprime aucun avertissement et rapporte les entrées ignorées uniquement dans le champ `mcp_server_errors`. L'avertissement nécessite Claude Code v2.1.219 ou ultérieur.

265 270 

266<h4 id="track-plugin-installs">271<h4 id="track-plugin-installs">

267 Suivre les installations de plugins272 Suivre les installations de plugins

268</h4>273</h4>

269 274 

270Quand [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/docs/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.275Lorsque [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/docs/fr/env-vars) est défini, Claude Code émet des événements `system/plugin_install` tandis 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.

271 276 

272| Champ | Type | Description |277| Champ | Type | Description |

273| ------------ | -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |278| ------------ | ------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |

274| `type` | `"system"` | type de message |279| `type` | `"system"` | type de message |

275| `subtype` | `"plugin_install"` | identifie ceci comme un événement d'installation de plugin |280| `subtype` | `"plugin_install"` | identifie ceci comme un événement d'installation de plugin |

276| `status` | `"started"`, `"installed"`, `"failed"`, ou `"completed"` | `started` et `completed` encadrent l'installation globale ; `installed` et `failed` rapportent les marketplaces individuelles |281| `status` | `"started"`, `"installed"`, `"failed"` ou `"completed"` | `started` et `completed` encadrent l'installation globale ; `installed` et `failed` rapportent les marketplaces individuels |

277| `name` | chaîne, optionnel | nom de la marketplace, présent sur `installed` et `failed` |282| `name` | chaîne, optionnel | nom du marketplace, présent sur `installed` et `failed` |

278| `error` | chaîne, optionnel | message d'échec, présent sur `failed` |283| `error` | chaîne, optionnel | message d'échec, présent sur `failed` |

279| `uuid` | chaîne | identifiant d'événement unique |284| `uuid` | chaîne | identifiant d'événement unique |

280| `session_id` | chaîne | session à laquelle appartient l'événement |285| `session_id` | chaîne | session à laquelle appartient l'événement |


290 --allowedTools "Bash,Read,Edit"295 --allowedTools "Bash,Read,Edit"

291```296```

292 297 

293Pour 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](/docs/fr/permission-modes). Pour `-p`, le [mode de permission de démarrage intégré](/docs/fr/permission-modes#which-mode-a-session-starts-in) est Manual sur tous les plans, donc passez le mode de permission que vous voulez :298Pour 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](/docs/fr/permission-modes). Pour `-p`, le [mode de permission de démarrage intégré](/docs/fr/permission-modes#which-mode-a-session-starts-in) est Manual sur tous les plans, donc passez le mode de permission que vous souhaitez :

294 299 

295* **`auto`** : passez `--permission-mode auto` pour qu'un classificateur examine la plupart des actions au lieu de vous300* **`auto`** : passez `--permission-mode auto` pour qu'un classificateur examine la plupart des actions au lieu de vous

296* **`dontAsk`** : Claude Code refuse tout ce qui n'est pas dans vos règles `permissions.allow` ou l'[ensemble de commandes en lecture seule](/docs/fr/permissions#read-only-commands), ce qui est utile pour les exécutions CI verrouillées. `AskUserQuestion`, les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools), et les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) sont refusés même quand une règle d'autorisation correspond301* **`dontAsk`** : Claude Code refuse chaque appel qui demanderait autrement, ce qui est utile pour les exécutions CI verrouillées. Les actions qui n'ont pas besoin d'approbation en mode Manual s'exécutent toujours, telles que les lectures de fichiers dans vos répertoires de travail et l'[ensemble de commandes en lecture seule](/docs/fr/permissions#read-only-commands), ainsi que les actions que vos entrées `--allowedTools` ou les règles `permissions.allow` couvrent. `AskUserQuestion`, les outils de connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools), et les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) sont refusés même lorsqu'une règle d'autorisation correspond

297* **`acceptEdits`** : Claude écrit des fichiers sans demander, et Claude Code approuve automatiquement les commandes de système de fichiers courants telles que `mkdir`, `touch`, `mv` et `cp`. Les [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves) s'appliquent toujours. À part l'ensemble de commandes en lecture seule, les autres commandes shell et requêtes réseau ont toujours besoin d'une entrée `--allowedTools` ou d'une règle `permissions.allow`. Consultez [ce que `acceptEdits` approuve automatiquement](/docs/fr/permission-modes#auto-approve-file-edits-with-acceptedits-mode) pour la liste complète302* **`acceptEdits`** : Claude écrit les fichiers sans demander, et Claude Code approuve automatiquement les commandes de système de fichiers courants telles que `mkdir`, `touch`, `mv` et `cp`. Les [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves) s'appliquent toujours. Hormis l'ensemble de commandes en lecture seule, les autres commandes shell et requêtes réseau ont toujours besoin d'une entrée `--allowedTools` ou d'une règle `permissions.allow`. Consultez [ce que `acceptEdits` approuve automatiquement](/docs/fr/permission-modes#auto-approve-file-edits-with-acceptedits-mode) pour la liste complète

298 303 

299Cet exemple applique les corrections de lint avec `acceptEdits` comme base de référence :304Cet exemple applique les corrections de lint avec `acceptEdits` comme base de référence :

300 305 


306 Désactiver les invites de permission dans les exécutions sans surveillance311 Désactiver les invites de permission dans les exécutions sans surveillance

307</h3>312</h3>

308 313 

309Passez `--permission-prompts none` quand personne n'est disponible pour répondre aux invites de permission, par exemple dans une tâche planifiée. Le flag est particulièrement important quand votre exécution a un hôte de permission : une application Agent SDK avec un callback [`canUseTool`](/docs/fr/agent-sdk/user-input), ou un outil MCP que vous passez avec [`--permission-prompt-tool`](/docs/fr/cli-reference#cli-flags). Sans le flag, votre exécution attend que cet hôte réponde à chaque demande de permission.314Passez `--permission-prompts none` lorsque personne n'est disponible pour répondre aux invites de permission, par exemple dans une tâche planifiée. L'indicateur est plus important lorsque votre exécution a un hôte de permission : une application Agent SDK avec un rappel [`canUseTool`](/docs/fr/agent-sdk/user-input), ou un outil MCP que vous passez avec [`--permission-prompt-tool`](/docs/fr/cli-reference#cli-flags). Sans l'indicateur, votre exécution attend que cet hôte réponde à chaque demande de permission.

310 315 

311Avec le flag, votre exécution ne consulte pas l'hôte et ne l'attend pas. Tout ce qui demanderait une permission est refusé sauf si un hook `PermissionRequest` l'autorise, Claude est informé que personne ne peut approuver la demande et ne doit pas la réessayer, et l'exécution continue. Dans une exécution `-p` sans hôte, ces demandes sont refusées de toute façon, et le flag indique également à Claude de ne pas les réessayer. Les règles de permission, les hooks [`PermissionRequest`](/docs/fr/hooks#permissionrequest) et le mode de permission que vous définissez décident toujours de chaque appel en premier ; Claude Code refuse uniquement les demandes que rien d'autre ne résout.316Avec l'indicateur, votre exécution ne consulte pas l'hôte et n'attend pas. Tout ce qui demanderait est refusé sauf si un hook `PermissionRequest` l'autorise, Claude est informé que personne ne peut approuver la demande et ne pas la réessayer, et l'exécution continue. Dans une exécution `-p` sans hôte, ces demandes sont refusées de toute façon, et l'indicateur indique également à Claude de ne pas les réessayer. Les règles de permission, les hooks [`PermissionRequest`](/docs/fr/hooks#permissionrequest) et le mode de permission que vous définissez décident toujours de chaque appel en premier ; Claude Code refuse uniquement les demandes que rien d'autre ne résout.

312 317 

313Cet exemple exécute une tâche sans surveillance en [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode). Le classificateur examine chaque action comme d'habitude, et Claude Code refuse tout ce qui aurait autrement nécessité une invite :318Cet exemple exécute une tâche sans surveillance en [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode). Le classificateur examine chaque action comme d'habitude, et Claude Code refuse tout ce qui aurait autrement entraîné une invite :

314 319 

315```bash theme={null}320```bash theme={null}

316claude -p "Update the dependency pins and run the tests" --permission-mode auto --permission-prompts none321claude -p "Update the dependency pins and run the tests" --permission-mode auto --permission-prompts none

317```322```

318 323 

319Avec `--permission-prompts none`, Claude Code supprime les outils qui ont besoin d'une réponse d'une personne, tels que [`AskUserQuestion`](/docs/fr/tools-reference#askuserquestion-tool-behavior), afin que Claude ne puisse pas les appeler. Toute [demande d'élicitation MCP](/docs/fr/mcp#respond-to-mcp-elicitation-requests) qu'aucun hook [`Elicitation`](/docs/fr/hooks#elicitation) ne répond est annulée.324Avec `--permission-prompts none`, Claude Code supprime les outils qui ont besoin d'une réponse d'une personne, tels que [`AskUserQuestion`](/docs/fr/tools-reference#askuserquestion-tool-behavior), afin que Claude ne puisse pas les appeler. Toute [demande d'élicitation MCP](/docs/fr/mcp#respond-to-mcp-elicitation-requests) à laquelle aucun hook [`Elicitation`](/docs/fr/hooks#elicitation) ne répond est annulée.

320 325 

321Avec `--output-format stream-json`, les refus apparaissent sous forme de messages système `permission_denied`, et le message de résultat final les énumère dans `permission_denials`.326Avec `--output-format stream-json`, les refus apparaissent sous forme de messages système `permission_denied`, et le message de résultat final les énumère dans `permission_denials`.

322 327 

323<Note>328<Note>

324 Le flag `--permission-prompts` nécessite Claude Code v2.1.259 ou ultérieur. Les versions antérieures le rejettent avec une erreur d'option inconnue.329 L'indicateur `--permission-prompts` nécessite Claude Code v2.1.259 ou ultérieur. Les versions antérieures le rejettent avec une erreur d'option inconnue.

325</Note>330</Note>

326 331 

327<h3 id="create-a-commit">332<h3 id="create-a-commit">


335 --allowedTools "Bash(git diff *),Bash(git log *),Bash(git status *),Bash(git commit *)"340 --allowedTools "Bash(git diff *),Bash(git log *),Bash(git status *),Bash(git commit *)"

336```341```

337 342 

338Le flag `--allowedTools` utilise la [syntaxe des règles de permission](/docs/fr/settings-reference#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`.343L'indicateur `--allowedTools` utilise la [syntaxe de règle de permission](/docs/fr/settings-reference#permission-rule-syntax). Le ` *` de fin active la correspondance de préfixe, donc `Bash(git diff *)` autorise toute commande commençant par `git diff`. L'espace avant `*` est important : sans lui, `Bash(git diff*)` correspondrait également à `git diff-index`.

339 344 

340<Note>345<Note>

341 Les [skills](/docs/fr/skills) invoquées par l'utilisateur et les commandes personnalisées fonctionnent en mode `-p` : incluez `/skill-name` dans la chaîne de prompt et Claude Code l'étend avant d'exécuter. Les commandes intégrées qui ouvrent un dialogue interactif, telles que `/login`, ne sont pas disponibles en mode `-p`. `/model`, `/effort`, `/fast`, `/color` et `/rename` acceptent la valeur comme argument, par exemple `/model sonnet`, et `/mcp` sans argument affiche un résumé textuel du statut du serveur ; ces formes nécessitent Claude Code v2.1.205 ou ultérieur et suivent les notes de disponibilité de chaque commande]\(/fr/commands#all-commands). Pour modifier un paramètre à partir d'une invocation `-p`, passez `key=value` à `/config`, par exemple `/config thinking=false`.346 Les [compétences](/docs/fr/skills) invoquées par l'utilisateur et les commandes personnalisées fonctionnent en mode `-p` : incluez `/skill-name` dans la chaîne d'invite et Claude Code l'étend avant d'exécuter. Les commandes intégrées qui ne s'exécutent que dans l'interface du terminal, telles que `/login`, ne sont pas disponibles en mode `-p`. `/model`, `/effort`, `/fast`, `/color` et `/rename` acceptent la valeur comme argument, par exemple `/model sonnet`, et `/mcp` sans argument imprime un résumé textuel du statut du serveur ; ces formes nécessitent Claude Code v2.1.205 ou ultérieur et suivent les notes de disponibilité de chaque commande]\(/fr/commands#all-commands). Pour modifier un paramètre à partir d'une invocation `-p`, passez `key=value` à `/config`, par exemple `/config thinking=false`.

342</Note>347</Note>

343 348 

344<h3 id="customize-the-system-prompt">349<h3 id="customize-the-system-prompt">

345 Personnaliser le prompt système350 Personnaliser l'invite système

346</h3>351</h3>

347 352 

348Utilisez `--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é. Enregistrez-le en tant que script shell, par exemple `review.sh` :353Utilisez `--append-system-prompt` pour ajouter des instructions tout en conservant le comportement par défaut de Claude Code. Cet exemple transmet un diff PR à Claude et lui demande de vérifier les vulnérabilités de sécurité. Enregistrez-le en tant que script shell, par exemple `review.sh` :

349 354 

350```bash theme={null}355```bash theme={null}

351gh pr diff "$1" | claude -p \356gh pr diff "$1" | claude -p \


353 --output-format json358 --output-format json

354```359```

355 360 

356Dans le script, `"$1"` représente le premier argument que vous passez sur la ligne de commande. Exécutez `bash review.sh 123` et le shell remplace `"$1"` par `123`, donc le script récupère le diff pour la PR 123. Claude Code affiche l'examen au format JSON, avec le texte dans le champ `result`.361Dans le script, `"$1"` représente le premier argument que vous passez sur la ligne de commande. Exécutez `bash review.sh 123` et le shell remplace `"$1"` par `123`, donc le script récupère le diff pour la PR 123. Claude Code imprime l'examen en JSON, avec le texte dans le champ `result`.

357 362 

358Consultez les [flags de prompt système](/docs/fr/cli-reference#system-prompt-flags) pour plus d'options, notamment `--system-prompt` pour remplacer complètement le prompt par défaut.363Consultez les [indicateurs d'invite système](/docs/fr/cli-reference#system-prompt-flags) pour plus d'options, y compris `--system-prompt` pour remplacer complètement l'invite par défaut.

359 364 

360<h3 id="continue-conversations">365<h3 id="continue-conversations">

361 Continuer les conversations366 Continuer les conversations

362</h3>367</h3>

363 368 

364Utilisez `--continue` pour continuer la conversation la plus récente, ou `--resume` avec un ID de session pour continuer une conversation spécifique. `--continue` ignore les [sessions en arrière-plan](/docs/fr/sessions#resume-a-session). Cet exemple exécute un examen, puis envoie des prompts de suivi :369Utilisez `--continue` pour continuer la conversation la plus récente, ou `--resume` avec un ID de session pour continuer une conversation spécifique. Sur Claude Code v2.1.257 ou ultérieur, lorsque vous passez `--continue`, Claude Code ouvre une [session en arrière-plan](/docs/fr/sessions#resume-a-session) qui a terminé, mais pas une qui s'exécute toujours. Cet exemple exécute un examen, puis envoie des invites de suivi :

365 370 

366```bash theme={null}371```bash theme={null}

367# First request372# First request


379claude -p "Continue that review" --resume "$session_id"384claude -p "Continue that review" --resume "$session_id"

380```385```

381 386 

382Vous pouvez exécuter les deux commandes à partir de répertoires différents : Claude Code [trouve la session par son ID](/docs/fr/sessions#resume-a-session) dans n'importe quel projet sur cette machine. Avant v2.1.223, Claude Code cherchait l'ID uniquement dans le répertoire de projet actuel et ses git worktrees, donc vous deviez exécuter les deux commandes à partir du même répertoire.387Vous pouvez exécuter les deux commandes à partir de répertoires différents : Claude Code [trouve la session par son ID](/docs/fr/sessions#resume-a-session) dans n'importe quel projet sur cette machine. Avant la v2.1.223, Claude Code recherchait l'ID uniquement dans le répertoire du projet actuel et ses git worktrees, vous deviez donc exécuter les deux commandes à partir du même répertoire.

388 

389À la place de l'ID de session, vous pouvez passer à `--resume` le chemin absolu vers le fichier de [transcription](/docs/fr/sessions#where-transcripts-are-stored) `.jsonl` d'une session, et Claude Code continue la conversation stockée dans ce fichier.

383 390 

384<h2 id="next-steps">391<h2 id="next-steps">

385 Étapes suivantes392 Étapes suivantes

hooks-guide.md +42 −37

Details

499 499 

500Claude Code déclenche des événements de hook à des points spécifiques de son cycle de vie. Lorsqu'un événement se déclenche, Claude Code exécute tous les hooks correspondants en parallèle ; consultez [Champs de gestionnaire de hook](/docs/fr/hooks#hook-handler-fields) pour savoir comment les gestionnaires en doublon sont traités. Le tableau ci-dessous montre chaque événement et quand il se déclenche :500Claude Code déclenche des événements de hook à des points spécifiques de son cycle de vie. Lorsqu'un événement se déclenche, Claude Code exécute tous les hooks correspondants en parallèle ; consultez [Champs de gestionnaire de hook](/docs/fr/hooks#hook-handler-fields) pour savoir comment les gestionnaires en doublon sont traités. Le tableau ci-dessous montre chaque événement et quand il se déclenche :

501 501 

502| Event | When it fires |502| Événement | Quand il se déclenche |

503| :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |503| :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

504| `SessionStart` | When a session begins or resumes |504| `SessionStart` | Quand une session commence ou reprend |

505| `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 |505| `Setup` | Quand vous démarrez Claude Code avec `--init-only`, ou avec `--init` ou `--maintenance` en mode `-p`. Pour une préparation unique en CI ou dans les scripts |

506| `UserPromptSubmit` | When you submit a prompt, before Claude processes it |506| `UserPromptSubmit` | Quand vous soumettez une invite, avant que Claude la traite |

507| `UserPromptExpansion` | When a user-typed command expands into a prompt, before it reaches Claude. Can block the expansion |507| `UserPromptExpansion` | Quand une commande tapée par l'utilisateur se développe en une invite, avant qu'elle n'atteigne Claude. Peut bloquer l'expansion |

508| `PreToolUse` | Before a tool call executes. Can block it |508| `PreToolUse` | Avant qu'un appel d'outil s'exécute. Peut le bloquer |

509| `PermissionRequest` | When a tool call needs a permission decision |509| `PermissionRequest` | Quand un appel d'outil nécessite une décision de permission |

510| `PermissionDenied` | When auto mode denies a tool call, including denials without a classifier verdict. Use JSON `hookSpecificOutput.retry: true` to tell the model it may retry the denied tool call. Claude Code ignores `retry` when the classifier produced no verdict |510| `PermissionDenied` | Quand le mode automatique refuse un appel d'outil, y compris les refus sans verdict du classificateur. Utilisez la sortie JSON `hookSpecificOutput.retry: true` pour indiquer au modèle qu'il peut réessayer l'appel d'outil refusé. Claude Code ignore `retry` quand le classificateur n'a produit aucun verdict |

511| `PostToolUse` | After a tool call succeeds |511| `PostToolUse` | Après qu'un appel d'outil réussisse |

512| `PostToolUseFailure` | After a tool call fails |512| `PostToolUseFailure` | Après qu'un appel d'outil échoue |

513| `PostToolBatch` | After a full batch of parallel tool calls resolves, before the next model call |513| `PostToolBatch` | Après qu'un lot complet d'appels d'outils parallèles se résout, avant l'appel du modèle suivant |

514| `Notification` | When Claude Code sends a notification |514| `Notification` | Quand Claude Code envoie une notification |

515| `MessageDisplay` | While assistant message text is displayed |515| `MessageDisplay` | Pendant que le texte du message assistant s'affiche |

516| `SubagentStart` | When a subagent is spawned |516| `SubagentStart` | Quand un sous-agent est généré |

517| `SubagentStop` | When a subagent finishes |517| `SubagentStop` | Quand un sous-agent se termine |

518| `TaskCreated` | When a task is being created via `TaskCreate` |518| `TaskCreated` | Quand une tâche est en cours de création via `TaskCreate` |

519| `TaskCompleted` | When a task is being marked as completed |519| `TaskCompleted` | Quand une tâche est marquée comme complétée |

520| `Stop` | When Claude finishes responding |520| `Stop` | Quand Claude finit de répondre |

521| `StopFailure` | When the turn ends due to an API error |521| `StopFailure` | Quand le tour se termine en raison d'une erreur API |

522| `TeammateIdle` | When an [agent team](/docs/en/agent-teams) teammate is about to go idle |522| `TeammateIdle` | Quand un coéquipier d'une [équipe d'agents](/docs/fr/agent-teams) est sur le point de devenir inactif |

523| `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 |523| `InstructionsLoaded` | Quand un fichier CLAUDE.md ou `.claude/rules/*.md` est chargé dans le contexte. Se déclenche au démarrage de la session et quand les fichiers sont chargés paresseusement pendant une session |

524| `ConfigChange` | When a configuration file changes during a session |524| `ConfigChange` | Quand un fichier de configuration change pendant une session |

525| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |525| `CwdChanged` | Quand le répertoire de travail change, par exemple quand Claude exécute une commande `cd`. Utile pour la gestion réactive de l'environnement avec des outils comme direnv |

526| `DirectoryAdded` | When a working directory is added mid-session via `/add-dir` or the SDK `register_repo_root` control request |526| `DirectoryAdded` | Quand un répertoire de travail est ajouté en milieu de session via `/add-dir` ou la demande de contrôle SDK `register_repo_root` |

527| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |527| `FileChanged` | Quand un fichier surveillé change sur le disque. Le champ `matcher` spécifie les noms de fichiers à surveiller |

528| `WorktreeCreate` | When a worktree is being created via `--worktree`, `isolation: "worktree"`, or for a background session. Replaces default git behavior |528| `WorktreeCreate` | Quand un worktree est en cours de création via `--worktree`, `isolation: "worktree"`, ou pour une session en arrière-plan. Remplace le comportement git par défaut |

529| `WorktreeRemove` | When a worktree is being removed at session exit, when a subagent finishes, or when you delete a background session |529| `WorktreeRemove` | Quand un worktree est supprimé à la sortie de la session, quand un sous-agent se termine, ou quand vous supprimez une session en arrière-plan |

530| `PreCompact` | Before context compaction |530| `PreCompact` | Avant la compaction du contexte |

531| `PostCompact` | After context compaction completes |531| `PostCompact` | Après la compaction du contexte est complétée |

532| `PreModelSwitch` | Before Claude Code applies a model switch that you or a client requested. Can block the switch |532| `PreModelSwitch` | Avant que Claude Code applique un changement de modèle que vous ou un client avez demandé. Peut bloquer le changement |

533| `PostModelSwitch` | After the session's model changes, including changes Claude Code makes on its own, such as restoring the model when you resume a session |533| `PostModelSwitch` | Après que le modèle de la session change, y compris les changements que Claude Code effectue de lui-même, comme la restauration du modèle quand vous reprenez une session |

534| `Elicitation` | When an MCP server requests user input during a tool call |534| `Elicitation` | Quand un serveur MCP demande une entrée utilisateur pendant un appel d'outil |

535| `ElicitationResult` | After a user responds to an MCP elicitation, before the response is sent back to the server |535| `ElicitationResult` | Après qu'un utilisateur réponde à une élicitation MCP, avant que la réponse soit renvoyée au serveur |

536| `SessionEnd` | When a session terminates |536| `SessionEnd` | Quand une session se termine |

537 537 

538Chaque 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 :538Chaque 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 :

539 539 


731| `SubagentStop` | type d'agent | mêmes valeurs que `SubagentStart` |731| `SubagentStop` | type d'agent | mêmes valeurs que `SubagentStart` |

732| `ConfigChange` | source de configuration | `user_settings`, `project_settings`, `local_settings`, `policy_settings`, `skills` |732| `ConfigChange` | source de configuration | `user_settings`, `project_settings`, `local_settings`, `policy_settings`, `skills` |

733| `DirectoryAdded` | comment le répertoire a été ajouté | `slash_command`, `register_repo_root` |733| `DirectoryAdded` | comment le répertoire a été ajouté | `slash_command`, `register_repo_root` |

734| `StopFailure` | type d'erreur | `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `unknown` |734| `StopFailure` | type d'erreur | `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error`, `unknown` |

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

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

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


1077 Hook JSON n'a aucun effet1077 Hook JSON n'a aucun effet

1078</h3>1078</h3>

1079 1079 

1080Votre hook imprime du JSON valide, mais la décision ne prend pas effet et aucune erreur n'apparaît dans la transcription.1080Votre hook imprime du JSON valide, mais la décision ne prend pas effet et aucune erreur n'apparaît dans la transcription. Vérifiez quelle cause s'applique :

1081 

1082* **Sortie supplémentaire avant le JSON** : quelque chose d'autre écrit sur stdout en premier, généralement un `echo` inconditionnel dans votre profil shell, donc la sortie ne commence plus par `{` et Claude Code ne l'analyse pas en JSON. La cause et la correction suivent cette liste.

1083* **Un champ au mauvais niveau** : comparez le placement de chaque champ par rapport au format [JSON output](/docs/fr/hooks#json-output). Par exemple, `permissionDecision` appartient à l'intérieur de `hookSpecificOutput`, pas au niveau supérieur.

1081 1084 

1082Lorsque Claude Code exécute un hook de commande sous forme de shell, un sans `args`, il génère `sh -c` sur macOS et Linux, Git Bash sur Windows, ou PowerShell lorsque Git Bash n'est pas installé par défaut. Ce shell est non-interactif, mais Git Bash et certaines configurations, comme `BASH_ENV` pointant vers `~/.bashrc`, sourcent toujours votre profil. Si ce profil contient des instructions `echo` inconditionnelles, la sortie est ajoutée au début de votre JSON du hook :1085Lorsque Claude Code exécute un hook de commande sous forme de shell, un sans `args`, il génère `sh -c` sur macOS et Linux, Git Bash sur Windows, ou PowerShell lorsque Git Bash n'est pas installé par défaut. Ce shell est non-interactif, mais Git Bash et certaines configurations, comme `BASH_ENV` pointant vers `~/.bashrc`, sourcent toujours votre profil. Si ce profil contient des instructions `echo` inconditionnelles, la sortie est ajoutée au début de votre JSON du hook :

1083 1086 


1097 1100 

1098La 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é.1101La 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é.

1099 1102 

1103Lorsque votre hook retourne `permissionDecision` ou `additionalContext` au niveau supérieur au lieu de l'intérieur de `hookSpecificOutput`, le JSON s'analyse toujours, et Claude Code ignore les champs mal placés sans signaler une erreur. Pour voir quels champs il a ignorés, démarrez Claude Code avec `claude --debug` et recherchez dans le [journal de débogage](/docs/fr/hooks#debug-hooks) `Hook JSON output had unrecognized keys`.

1104 

1100<h3 id="debug-techniques">1105<h3 id="debug-techniques">

1101 Techniques de débogage1106 Techniques de débogage

1102</h3>1107</h3>

Details

141 141 

142Consultez la [référence des commandes](/docs/fr/commands) pour la liste complète des commandes incluses dans Claude Code.142Consultez la [référence des commandes](/docs/fr/commands) pour la liste complète des commandes incluses dans Claude Code.

143 143 

144<h3 id="complete-a-command-mid-prompt">

145 Compléter une commande au milieu d'une invite

146</h3>

147 

148La complétion de commande fonctionne également au milieu d'une invite : tapez `/` après un espace, puis les premières lettres d'un nom, comme dans `exécuter les tests, puis /com`. Seules les commandes dont les noms commencent par ces lettres correspondent, donc un chemin de fichier tel que `/tmp/notes.md` ne maintient pas une liste ouverte. Claude Code exécute une commande lui-même uniquement lorsque la commande [commence votre message](/docs/fr/commands).

149 

150* **Dans le [rendu en plein écran](/docs/fr/fullscreen)** : les correspondances s'ouvrent sous forme de liste pendant que vous tapez, sans ligne en surbrillance, donc `Entrée` envoie toujours votre invite telle que vous l'avez tapée. Appuyez sur `Tab` pour insérer la correspondance supérieure, ou choisissez une ligne avec les touches fléchées et `Entrée`.

151* **En dehors du plein écran** : le reste de la correspondance supérieure apparaît sous forme de texte fantôme à votre curseur, avec un décompte tel que `+2` lorsque plusieurs commandes correspondent. Appuyez sur `Tab` pour insérer la seule correspondance, ou pour ouvrir la liste lorsque plusieurs correspondent, puis choisissez une ligne avec les touches fléchées et `Entrée`.

152 

153Dans les deux rendus, appuyez sur `Tab` sur un `/` nu au milieu d'une invite pour lister chaque commande.

154 

155Une compétence de plugin correspond également sur son nom nu, donc `/deploy` trouve une compétence nommée `myplugin:deploy-app`. Lorsque vous insérez la correspondance, Claude Code écrit le `/myplugin:deploy-app` complet.

156 

144<h2 id="vim-editor-mode">157<h2 id="vim-editor-mode">

145 Mode d'édition Vim158 Mode d'édition Vim

146</h2>159</h2>


335* Les tâches en arrière-plan sont automatiquement nettoyées lorsque Claude Code se ferme. Sur macOS et Linux, lorsque vous arrêtez une tâche en arrière-plan à partir de [`/tasks`](/docs/fr/commands) ou que Claude Code l'arrête à la fermeture, les processus qui se sont détachés du shell de la tâche, comme ceux démarrés sous `setsid` ou `timeout`, s'arrêtent également348* Les tâches en arrière-plan sont automatiquement nettoyées lorsque Claude Code se ferme. Sur macOS et Linux, lorsque vous arrêtez une tâche en arrière-plan à partir de [`/tasks`](/docs/fr/commands) ou que Claude Code l'arrête à la fermeture, les processus qui se sont détachés du shell de la tâche, comme ceux démarrés sous `setsid` ou `timeout`, s'arrêtent également

336* Si vous mettez la session en arrière-plan au lieu de la fermer, vos tâches en arrière-plan continuent à s'exécuter dans la session en arrière-plan. Voir [mettre une session en cours en arrière-plan](/docs/fr/agent-view#from-inside-a-session)349* Si vous mettez la session en arrière-plan au lieu de la fermer, vos tâches en arrière-plan continuent à s'exécuter dans la session en arrière-plan. Voir [mettre une session en cours en arrière-plan](/docs/fr/agent-view#from-inside-a-session)

337* Les tâches en arrière-plan sont automatiquement terminées si la sortie dépasse 5 Go, avec une note dans stderr expliquant pourquoi350* 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

338* Sur macOS et Linux, Claude Code termine les tâches en arrière-plan en cours d'exécution lorsque le système d'exploitation signale une pression mémoire, à condition que la session soit inactive depuis au moins 30 minutes et qu'aucun tour ou sous-agent ne soit en cours d'exécution. Définissez [`CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP`](/docs/fr/env-vars) sur `1` pour désactiver cette fonction. Nécessite Claude Code v2.1.193 ou version ultérieure. Les commandes en arrière-plan appartenant à un [sous-agent](/docs/fr/sub-agents) sont plutôt terminées après 60 minutes, configurables en millisecondes avec [`CLAUDE_SUBAGENT_BG_SHELL_MAX_MS`](/docs/fr/env-vars). Une commande appartenant à un sous-agent s'exécutant au premier plan se termine également lorsque ce sous-agent donne sa réponse finale ; voir [Commandes en arrière-plan](/docs/fr/tools-reference#background-commands) dans la référence des outils. Avant v2.1.218, ni la récolte de pression mémoire ni la limite de 60 minutes ne couvraient les commandes déplacées vers l'arrière-plan avec `Ctrl+B`351* Sur macOS et Linux, Claude Code termine les tâches en arrière-plan en cours d'exécution lorsque le système d'exploitation signale une pression mémoire, à condition que la session soit inactive depuis au moins 30 minutes et qu'aucun tour ou sous-agent ne soit en cours d'exécution. Définissez [`CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP`](/docs/fr/env-vars) sur `1` pour désactiver cette fonction. Nécessite Claude Code v2.1.193 ou version ultérieure

352* Les commandes en arrière-plan appartenant à un [sous-agent](/docs/fr/sub-agents) n'ont pas de limite de temps, sauf qu'une commande appartenant à un sous-agent s'exécutant au premier plan se termine lorsque ce sous-agent donne sa réponse finale ; voir [Commandes en arrière-plan](/docs/fr/tools-reference#background-commands) dans la référence des outils. Avant v2.1.218, ni la récolte de pression mémoire ni la limite de 60 minutes ne couvraient les commandes déplacées vers l'arrière-plan avec `Ctrl+B`

339 353 

340Pour 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`. Voir [Variables d'environnement](/docs/fr/env-vars) pour plus de détails.354Pour 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`. Voir [Variables d'environnement](/docs/fr/env-vars) pour plus de détails.

341 355 


370* Quittez avec `Escape`, `Backspace`, ou `Ctrl+U` sur une invite vide384* Quittez avec `Escape`, `Backspace`, ou `Ctrl+U` sur une invite vide

371* Coller du texte commençant par `!` dans une invite vide entre automatiquement en mode shell, correspondant au comportement du `!` tapé385* Coller du texte commençant par `!` dans une invite vide entre automatiquement en mode shell, correspondant au comportement du `!` tapé

372 386 

373Dans une session interactive régulière, les commandes que vous tapez en mode shell s'exécutent en dehors du [sandbox](/docs/fr/sandboxing) même si vous avez activé le sandboxing, car le sandbox s'applique aux commandes que Claude exécute. Voir [mode sandbox strict](/docs/fr/sandboxing#the-unsandboxed-retry-escape-hatch) pour les sessions où les commandes en mode shell s'exécutent également en sandbox, comme les sessions en arrière-plan avec le mode sandbox strict activé.387À moins que votre session ne soit l'une de celles énumérées sous [mode sandbox strict](/docs/fr/sandboxing#the-unsandboxed-retry-escape-hatch), les commandes que vous tapez en mode shell s'exécutent en dehors du [sandbox](/docs/fr/sandboxing) même si vous avez activé le sandboxing, car le sandbox s'applique aux commandes que Claude exécute.

374 388 

375Claude répond automatiquement à la sortie de la commande une fois qu'elle arrive dans la transcription, vous pouvez donc exécuter `! npm test` et obtenir une explication des défaillances sans une deuxième invite. La réponse coûte la même chose que l'envoi d'une invite normale. Pour restaurer le comportement antérieur où la sortie est ajoutée au contexte sans réponse, définissez [`respondToBashCommands`](/docs/fr/settings-reference#respondtobashcommands) sur `false` dans `settings.json`. Avant v2.1.186, le mode shell ajoutait toujours la sortie au contexte sans réponse.389Claude répond automatiquement à la sortie de la commande une fois qu'elle arrive dans la transcription, vous pouvez donc exécuter `! npm test` et obtenir une explication des défaillances sans une deuxième invite. La réponse coûte la même chose que l'envoi d'une invite normale. Pour restaurer le comportement antérieur où la sortie est ajoutée au contexte sans réponse, définissez [`respondToBashCommands`](/docs/fr/settings-reference#respondtobashcommands) sur `false` dans `settings.json`. Avant v2.1.186, le mode shell ajoutait toujours la sortie au contexte sans réponse.

376 390 


576 590 

577Exécutez `/diff` pour examiner les modifications dans votre arborescence de travail sans quitter Claude Code. Vous voyez les modifications que Claude a apportées jusqu'à présent ainsi que tout ce que vous n'avez pas validé.591Exécutez `/diff` pour examiner les modifications dans votre arborescence de travail sans quitter Claude Code. Vous voyez les modifications que Claude a apportées jusqu'à présent ainsi que tout ce que vous n'avez pas validé.

578 592 

593Dans les modifications que `/diff` lit à partir de git, un sous-module apparaît comme une seule entrée, et uniquement lorsque le commit vers lequel il pointe change ; les modifications apportées aux fichiers à l'intérieur du sous-module n'y apparaissent pas.

594 

579Dans le [rendu en plein écran](/docs/fr/fullscreen), `/diff` ouvre le [panneau de diff](#diff-panel) à côté de la conversation, qui reste ouvert et se met à jour pendant que vous continuez à travailler. Dans le rendu classique, `/diff` ouvre la [visionneuse de diff](#diff-viewer) à la place de l'invite, et vous la fermez une fois que vous avez fini de lire.595Dans le [rendu en plein écran](/docs/fr/fullscreen), `/diff` ouvre le [panneau de diff](#diff-panel) à côté de la conversation, qui reste ouvert et se met à jour pendant que vous continuez à travailler. Dans le rendu classique, `/diff` ouvre la [visionneuse de diff](#diff-viewer) à la place de l'invite, et vous la fermez une fois que vous avez fini de lire.

580 596 

581<h3 id="diff-panel">597<h3 id="diff-panel">


640 656 

641Vos cinq questions annexes antérieures les plus récentes apparaissent sous forme de liste estompée au-dessus de la réponse actuelle, avec un décompte de celles plus anciennes. Elles restent en dehors de l'historique de la conversation.657Vos cinq questions annexes antérieures les plus récentes apparaissent sous forme de liste estompée au-dessus de la réponse actuelle, avec un décompte de celles plus anciennes. Elles restent en dehors de l'historique de la conversation.

642 658 

643Pour revenir à la superposition après l'avoir fermée, exécutez `/btw` sans question. La superposition se rouvre sur votre échange le plus récent. Appuyez sur `Left` pour revenir en arrière dans les réponses antérieures. Avant la version 2.1.212, `/btw` sans question affichait un message d'utilisation à la place.659Pour revenir à la superposition après l'avoir fermée, exécutez `/btw` sans question. La superposition se rouvre sur votre échange le plus récent. Avant la version 2.1.212, `/btw` sans question affichait un message d'utilisation à la place.

644 660 

645Une fois que la réponse apparaît, la superposition accepte ces touches.661Une fois que la réponse apparaît, la superposition accepte ces touches.

646 662 

647| Touche | Action |663| Touche | Action |

648| :------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |664| :--------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

649| `Space`, `Enter`, `Escape` | Fermer la réponse et revenir à l'invite |665| `Space`, `Enter`, `Escape` | Fermer la réponse et revenir à l'invite |

650| `Up` / `Down` | Faire défiler la réponse |666| `Up` / `Down` | Faire défiler la réponse |

651| `Left` / `Right` | Naviguer entre cette réponse et vos réponses `/btw` antérieures. `Left` se déplace vers les réponses plus anciennes et `Right` revient vers la réponse actuelle. Nécessite Claude Code v2.1.187 ou ultérieure |667| `Shift+Left` / `Shift+Right` | Naviguer entre cette réponse et vos réponses `/btw` antérieures. `Shift+Left` se déplace vers les réponses plus anciennes et `Shift+Right` revient vers la réponse actuelle. `[` et `]` font la même chose, pour les terminaux qui ne signalent pas `Shift` avec les touches fléchées. `Tab` / `Shift+Tab` parcourent les mêmes réponses. Nécessite Claude Code v2.1.257 ou ultérieure. Entre v2.1.187 et v2.1.256, les touches étaient `Left` / `Right` simples |

652| `c` | Copier la réponse dans votre presse-papiers en tant que Markdown brut. Utilisez ceci au lieu de la sélection à la souris, qui capture le rendu du terminal avec retour à la ligne plutôt que le texte source |668| `c` | Copier la réponse dans votre presse-papiers en tant que Markdown brut. Utilisez ceci au lieu de la sélection à la souris, qui capture le rendu du terminal avec retour à la ligne plutôt que le texte source |

653| `f` | Démarrer un [sous-agent créé](/docs/fr/sub-agents#fork-the-current-conversation) qui hérite de la conversation parent plus cette question et réponse, afin qu'il puisse continuer avec un accès complet aux outils. Vous restez dans la session actuelle et trouvez la création dans le [panneau sous votre invite](/docs/fr/sub-agents#observe-and-steer-running-forks). Disponible uniquement dans les sessions locales |669| `f` | Démarrer un [sous-agent créé](/docs/fr/sub-agents#fork-the-current-conversation) qui hérite de la conversation parent plus cette question et réponse, afin qu'il puisse continuer avec un accès complet aux outils. Vous restez dans la session actuelle et trouvez la création dans le [panneau sous votre invite](/docs/fr/sub-agents#observe-and-steer-running-forks). Disponible uniquement dans les sessions locales |

654| `x` | Effacer la liste des échanges `/btw` antérieurs affichés au-dessus de la réponse actuelle |670| `x` | Effacer la liste des échanges `/btw` antérieurs affichés au-dessus de la réponse actuelle |

655 671 

672Dans une [session en arrière-plan](/docs/fr/agent-view#attach-to-a-session) attachée, `Left` se détache et vous ramène à la vue agent, même pendant que la réponse arrive encore. La question annexe continue de s'exécuter pendant que vous êtes absent. La prochaine fois que vous vous attachez à la session, la superposition se rouvre avec la question annexe, ou avec sa réponse. Avant v2.1.257, `Left` ne se détachait pas là.

673 

656`/btw` voit votre conversation complète mais n'a pas d'outils. Un [sous-agent](/docs/fr/sub-agents) a des outils et commence à partir de l'invite qu'il reçoit, ou, pour une [création](/docs/fr/sub-agents#fork-the-current-conversation), à partir d'une copie de cette conversation. Utilisez `/btw` pour poser des questions sur ce que Claude connaît déjà de cette session ; utilisez un sous-agent pour aller découvrir quelque chose de nouveau.674`/btw` voit votre conversation complète mais n'a pas d'outils. Un [sous-agent](/docs/fr/sub-agents) a des outils et commence à partir de l'invite qu'il reçoit, ou, pour une [création](/docs/fr/sub-agents#fork-the-current-conversation), à partir d'une copie de cette conversation. Utilisez `/btw` pour poser des questions sur ce que Claude connaît déjà de cette session ; utilisez un sous-agent pour aller découvrir quelque chose de nouveau.

657 675 

658<h2 id="task-list">676<h2 id="task-list">


661 679 

662La liste des tâches est la liste de contrôle de Claude : des éléments que Claude a créés pour planifier un travail multi-étapes, avec des indicateurs montrant ce qui est en attente, en cours ou terminé. Elle est distincte de la vue des tâches en arrière-plan. Pour voir les shells en cours d'exécution et les sous-agents, utilisez [`/tasks`](/docs/fr/commands) à la place.680La liste des tâches est la liste de contrôle de Claude : des éléments que Claude a créés pour planifier un travail multi-étapes, avec des indicateurs montrant ce qui est en attente, en cours ou terminé. Elle est distincte de la vue des tâches en arrière-plan. Pour voir les shells en cours d'exécution et les sous-agents, utilisez [`/tasks`](/docs/fr/commands) à la place.

663 681 

664Sur [Opus 4.8, Sonnet 5, Fable 5, Mythos 5 et les versions ultérieures de ces familles](/docs/fr/tools-reference#task-tool-availability), Claude assure le suivi du travail multi-étapes sans liste de contrôle écrite, et Claude Code ne fournit pas les outils qui remplissent cette liste, elle reste donc vide. Si vous souhaitez la liste des tâches sur ces modèles de toute façon, activez-la avec `CLAUDE_CODE_ENABLE_TODO_TOOLS=1` ou l'une des autres méthodes sous [Disponibilité de l'outil de tâche](/docs/fr/tools-reference#task-tool-availability). Sur les modèles antérieurs tels qu'Opus 4.7, et après activation, la liste des tâches fonctionne comme suit :682La liste se remplit uniquement dans les sessions qui disposent des outils de suivi des tâches, que Claude Code fournit par défaut sur [les modèles Claude 3.x, Opus 4 à 4.7, Sonnet 4 à 4.6 et Haiku 4.5](/docs/fr/tools-reference#task-tool-availability). Sur tout autre modèle, y compris un identifiant de modèle que Claude Code ne reconnaît pas, la liste reste vide sauf si vous acceptez avec `CLAUDE_CODE_ENABLE_TODO_TOOLS=1` ou l'une des autres méthodes sous [Disponibilité de l'outil de tâche](/docs/fr/tools-reference#task-tool-availability). Lorsque la session dispose des outils, la liste des tâches fonctionne comme suit :

665 683 

666* Appuyez sur `Ctrl+T` pour basculer l'affichage de la liste des tâches. L'affichage montre jusqu'à cinq tâches à la fois. Lorsque Claude n'a pas encore créé d'éléments de liste de contrôle, le basculement n'a aucun effet visible car il n'y a rien à afficher684* Appuyez sur `Ctrl+T` pour basculer l'affichage de la liste des tâches. L'affichage montre jusqu'à cinq tâches à la fois. Lorsque Claude n'a pas encore créé d'éléments de liste de contrôle, le basculement n'a aucun effet visible car il n'y a rien à afficher

667* Si vous laissez la liste développée, Claude Code restaure la vue développée la prochaine fois que vous lancez une session qui contient toujours des tâches, par exemple avec `--resume` ou `--continue`. Lorsque la liste des tâches est vide, Claude Code la démarre en mode réduit685* Si vous laissez la liste développée, Claude Code restaure la vue développée la prochaine fois que vous lancez une session qui contient toujours des tâches, par exemple avec `--resume` ou `--continue`. Lorsque la liste des tâches est vide, Claude Code la démarre en mode réduit


754 772 

755`Cmd+clic` (macOS) ou `Ctrl+clic` (Windows/Linux) sur le lien pour ouvrir la demande de fusion dans votre navigateur.773`Cmd+clic` (macOS) ou `Ctrl+clic` (Windows/Linux) sur le lien pour ouvrir la demande de fusion dans votre navigateur.

756 774 

757Le statut s'actualise dès qu'un `git push`, ou une commande `gh pr` qui modifie la demande de fusion, comme `gh pr create` ou `gh pr merge`, réussit dans la session.775Le statut se rafraîchit dès qu'un `git push`, ou une commande `gh pr` qui modifie la demande de fusion, comme `gh pr create` ou `gh pr merge`, réussit dans la session.

758 776 

759Claude Code affiche le badge comme un lien hypertexte même lorsqu'il ne peut pas détecter la prise en charge des liens hypertextes dans votre terminal, ce qui se produit couramment via SSH ou dans tmux. Définissez [`FORCE_HYPERLINK=0`](/docs/fr/env-vars) pour afficher le badge en tant que texte brut.777Claude Code affiche le badge comme un lien hypertexte même lorsqu'il ne peut pas détecter la prise en charge des liens hypertextes dans votre terminal, ce qui se produit couramment via SSH ou dans tmux. Définissez [`FORCE_HYPERLINK=0`](/docs/fr/env-vars) pour afficher le badge en tant que texte brut.

760 778 


764 Le statut de PR pour les référentiels GitHub nécessite un jeton GitHub. Claude Code en trouve un en fonction de l'hôte du distant :782 Le statut de PR pour les référentiels GitHub nécessite un jeton GitHub. Claude Code en trouve un en fonction de l'hôte du distant :

765 783 

766 * **github.com** : `GH_TOKEN` ou `GITHUB_TOKEN`, ou le jeton enregistré par `gh auth login`. Sans celui-ci, le pied de page affiche `install gh for PR status` lorsque la CLI `gh` n'est pas installée, ou `gh auth login for PR status` lorsqu'elle l'est784 * **github.com** : `GH_TOKEN` ou `GITHUB_TOKEN`, ou le jeton enregistré par `gh auth login`. Sans celui-ci, le pied de page affiche `install gh for PR status` lorsque la CLI `gh` n'est pas installée, ou `gh auth login for PR status` lorsqu'elle l'est

767 * **Un hôte GitHub Enterprise défini comme `GH_HOST`** : `GH_ENTERPRISE_TOKEN` ou `GITHUB_ENTERPRISE_TOKEN`, ou le jeton enregistré par `gh auth login --hostname <host>`. Sans celui-ci, le pied de page affiche les mêmes conseils785 * **Un hôte GitHub Enterprise défini comme `GH_HOST`** : `GH_ENTERPRISE_TOKEN` ou `GITHUB_ENTERPRISE_TOKEN`, ou le jeton enregistré par `gh auth login --hostname <host>`. Sans celui-ci, le pied de page affiche les mêmes indices

768 * **Tout autre hôte GitHub** : le jeton enregistré par `gh auth login --hostname <host>`. Sans celui-ci, Claude Code n'affiche aucun badge et aucun conseil786 * **Tout autre hôte GitHub** : le jeton enregistré par `gh auth login --hostname <host>`. Sans celui-ci, Claude Code n'affiche aucun badge et aucun indice

769</Note>787</Note>

770 788 

771<h3 id="gitlab-merge-requests">789<h3 id="gitlab-merge-requests">


780 798 

781Le badge disparaît une fois que la demande de fusion est fusionnée ou fermée.799Le badge disparaît une fois que la demande de fusion est fusionnée ou fermée.

782 800 

783Il s'actualise dès qu'un `glab mr create` ou `git push` réussit dans la session.801Il se rafraîchit dès qu'un `git push`, ou une commande `glab mr` qui modifie la demande de fusion, comme `glab mr create` ou `glab mr merge`, réussit dans la session.

784 802 

785Pour obtenir le badge, vous avez besoin de :803Pour obtenir le badge, vous avez besoin de :

786 804 

787* Claude Code v2.1.234 ou version ultérieure805* Claude Code v2.1.234 ou version ultérieure

788* Un distant de référentiels qui pointe vers votre hôte GitLab, soit gitlab.com, soit une instance auto-gérée806* Un distant de référentiel qui pointe vers votre hôte GitLab, soit gitlab.com, soit une instance auto-gérée

789* La [CLI `glab`](https://gitlab.com/gitlab-org/cli) sur votre `PATH`, authentifiée avec `glab auth login`807* La [CLI `glab`](https://gitlab.com/gitlab-org/cli) sur votre `PATH`, authentifiée avec `glab auth login`

790 808 

791Claude Code ignore les variables d'environnement du jeton de `glab`, comme `GITLAB_TOKEN`, lorsqu'il vérifie le statut, donc vous n'obtenez aucun badge à partir d'un jeton exporté seul. Claude Code recherche également `glab` et sa connexion une fois par session, donc redémarrez Claude Code après avoir installé `glab` ou exécuté `glab auth login`.809Claude Code ignore les variables d'environnement du jeton de `glab`, comme `GITLAB_TOKEN`, lorsqu'il vérifie le statut, donc vous n'obtenez aucun badge à partir d'un jeton exporté seul. Claude Code recherche également `glab` et sa connexion une fois par session, donc redémarrez Claude Code après avoir installé `glab` ou exécuté `glab auth login`.

792 810 

811<h2 id="issue-reference-links">

812 Liens de référence aux problèmes

813</h2>

814 

815Lorsque Claude mentionne un problème sous la forme `owner/repo#123`, vous pouvez cliquer sur la référence pour l'ouvrir, à condition que votre terminal supporte les hyperliens. Si Claude Code ne détecte pas la prise en charge des hyperliens dans votre terminal, définissez [`FORCE_HYPERLINK`](/docs/fr/env-vars) sur `1` pour activer les liens, ou sur `0` pour conserver les références sous forme de texte brut.

816 

817Vous n'obtenez un lien que pour la forme à deux parties `owner/repo#123`. Ceux-ci restent du texte brut :

818 

819* Un `#123` isolé

820* Un chemin GitLab imbriqué tel que `group/subgroup/project#123`

821* Toute référence à l'intérieur d'une portée de code ou d'un bloc de code

822 

823Claude Code construit le lien pour l'hôte du référentiel qu'il identifie à partir de votre git remote, et non pour le référentiel que la référence nomme :

824 

825| L'hôte de votre référentiel | Où `owner/repo#123` crée des liens |

826| :----------------------------------------------------------------------- | :--------------------------------------------- |

827| github.com, un hôte GitHub Enterprise, ou tout hôte non listé ci-dessous | `https://<host>/owner/repo/issues/123` |

828| gitlab.com | `https://gitlab.com/owner/repo/-/issues/123` |

829| bitbucket.org, codeberg.org, ou gitea.com | Pas de lien ; la référence reste du texte brut |

830 

793<h2 id="see-also">831<h2 id="see-also">

794 Voir aussi832 Voir aussi

795</h2>833</h2>

keybindings.md +37 −4

Details

65| `DiffDialog` | Navigation de la visionneuse de diff |65| `DiffDialog` | Navigation de la visionneuse de diff |

66| `DiffPanel` | Le [panneau de diff](/docs/fr/interactive-mode#diff-panel) est ouvert |66| `DiffPanel` | Le [panneau de diff](/docs/fr/interactive-mode#diff-panel) est ouvert |

67| `ModelPicker` | Niveau d'effort du sélecteur de modèle |67| `ModelPicker` | Niveau d'effort du sélecteur de modèle |

68| `EffortSlider` | Curseur d'effort ouvert par `/effort` |

68| `Select` | Composants génériques de sélection/liste |69| `Select` | Composants génériques de sélection/liste |

69| `Plugin` | Dialogue du plugin (parcourir, découvrir, gérer) |70| `Plugin` | Dialogue du plugin (parcourir, découvrir, gérer) |

71| `Agents` | [Vue Agent](/docs/fr/agent-view) (`claude agents`) |

70| `Scroll` | Défilement de la conversation et sélection de texte en mode plein écran |72| `Scroll` | Défilement de la conversation et sélection de texte en mode plein écran |

71 73 

72Avant v2.1.205, un contexte `Doctor` et une action `doctor:fix` existaient pour l'écran de diagnostics `/doctor`.74Avant v2.1.205, un contexte `Doctor` et une action `doctor:fix` existaient pour l'écran de diagnostics `/doctor`.


110Actions disponibles dans le contexte `Chat` :112Actions disponibles dans le contexte `Chat` :

111 113 

112| Action | Par défaut | Description |114| Action | Par défaut | Description |

113| :-------------------- | :--------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |115| :-------------------- | :--------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

114| `chat:cancel` | Échappement | Annuler l'entrée actuelle |116| `chat:cancel` | Échappement | Annuler l'entrée actuelle |

115| `chat:clearInput` | Ctrl+L | Forcer un redessinage complet de l'écran, en préservant l'entrée et la conversation. Dans le [rendu plein écran](/docs/fr/fullscreen#clear-the-conversation), effacer également l'écran |117| `chat:clearInput` | Ctrl+L | Forcer un redessinage complet de l'écran, en préservant l'entrée et la conversation. Dans le [rendu plein écran](/docs/fr/fullscreen#clear-the-conversation), effacer également l'écran |

116| `chat:clearScreen` | Cmd+K | Identique à `chat:clearInput`. Voir [Effacer la conversation](/docs/fr/fullscreen#clear-the-conversation) pour savoir comment Cmd+K se comporte sur iTerm2 et Terminal.app |118| `chat:clearScreen` | Cmd+K | Identique à `chat:clearInput`. Voir [Effacer la conversation](/docs/fr/fullscreen#clear-the-conversation) pour savoir comment Cmd+K se comporte sur iTerm2 et Terminal.app |


120| `chat:fastMode` | Meta+O | Basculer le mode rapide |122| `chat:fastMode` | Meta+O | Basculer le mode rapide |

121| `chat:thinkingToggle` | Meta+T | Basculer la réflexion étendue |123| `chat:thinkingToggle` | Meta+T | Basculer la réflexion étendue |

122| `chat:submit` | Entrée | Soumettre le message |124| `chat:submit` | Entrée | Soumettre le message |

123| `chat:queueSubmit` | Ctrl+X Entrée | Soumettre le message, marqué pour attendre son tour : pendant que Claude travaille, Claude Code [le met en file d'attente](/docs/fr/interactive-mode#queue-messages-while-claude-works) et n'interrompt jamais le tour. Contrairement à `chat:submit`, il soumet le brouillon même si les suggestions d'autocomplétion sont ouvertes. Nécessite v2.1.247 ou ultérieure |125| `chat:queueSubmit` | Ctrl+X Entrée | Soumettre le message, marqué pour attendre son tour : pendant que Claude travaille, Claude Code [le met en file d'attente](/docs/fr/interactive-mode#queue-messages-while-claude-works) et n'interrompt jamais le tour. Contrairement à `chat:submit`, il soumet le brouillon même si une suggestion d'autocomplétion est en surbrillance. Nécessite v2.1.247 ou ultérieure |

124| `chat:newline` | Ctrl+J | Insérer une nouvelle ligne sans soumettre |126| `chat:newline` | Ctrl+J | Insérer une nouvelle ligne sans soumettre |

125| `chat:undo` | Ctrl+\_, Ctrl+Maj+- | Annuler la dernière action |127| `chat:undo` | Ctrl+\_, Ctrl+Maj+- | Annuler la dernière action |

126| `chat:externalEditor` | Ctrl+G, Ctrl+X Ctrl+E | Ouvrir dans un éditeur externe |128| `chat:externalEditor` | Ctrl+G, Ctrl+X Ctrl+E | Ouvrir dans un éditeur externe. La [saisie de dispatch de la vue agent](/docs/fr/agent-view#keyboard-shortcuts) suit également les liaisons à un seul trait de ce raccourci |

127| `chat:stash` | Ctrl+S | Mettre en cache l'invite actuelle |129| `chat:stash` | Ctrl+S | Mettre en cache l'invite actuelle |

128| `chat:imagePaste` | Ctrl+V (Alt+V sous Windows et WSL) | Coller une image depuis le presse-papiers. Sur WSL, les deux raccourcis sont liés par défaut |130| `chat:imagePaste` | Ctrl+V (Alt+V sous Windows et WSL) | Coller une image depuis le presse-papiers. Sur WSL, les deux raccourcis sont liés par défaut |

129 131 


340| `modelPicker:increaseEffort` | Droite | Augmenter le niveau d'effort |342| `modelPicker:increaseEffort` | Droite | Augmenter le niveau d'effort |

341| `modelPicker:thisSessionOnly` | s | Appliquer le modèle en surbrillance à cette session uniquement |343| `modelPicker:thisSessionOnly` | s | Appliquer le modèle en surbrillance à cette session uniquement |

342 344 

345<h3 id="effort-slider-actions">

346 Actions d'effort

347</h3>

348 

349Actions disponibles dans le contexte `EffortSlider`, le curseur qui s'ouvre lorsque vous exécutez `/effort` sans arguments. Les touches Gauche, Droite, Entrée et Échappement du curseur ne peuvent pas être reliées.

350 

351| Action | Par défaut | Description |

352| :----------------------------- | :--------- | :-------------------------------------------------------------------------------------------------------------------------------------- |

353| `effortSlider:thisSessionOnly` | s | Appliquer le [niveau d'effort](/docs/fr/model-config#adjust-effort-level) ciblé à cette session uniquement. Nécessite v2.1.257 ou ultérieure |

354 

343<h3 id="select-actions">355<h3 id="select-actions">

344 Actions de sélection356 Actions de sélection

345</h3>357</h3>


384| `select:accept` | Entrée, Espace | Modifier le paramètre sélectionné ou ouvrir son sous-menu |396| `select:accept` | Entrée, Espace | Modifier le paramètre sélectionné ou ouvrir son sous-menu |

385| `confirm:no` | Échappement | Fermer le panneau. Les modifications sont déjà enregistrées |397| `confirm:no` | Échappement | Fermer le panneau. Les modifications sont déjà enregistrées |

386 398 

399<h3 id="agents-actions">

400 Actions des agents

401</h3>

402 

403Actions disponibles dans le contexte `Agents`, qui s'applique dans la [vue agent](/docs/fr/agent-view), ouverte avec `claude agents`. Nécessite v2.1.257 ou ultérieure.

404 

405| Action | Par défaut | Description |

406| :------------------ | :--------- | :---------------------------------------------------------------------------------------------------- |

407| `agents:switchView` | Ctrl+S | Basculer le [regroupement de session](/docs/fr/agent-view#organize-the-list) entre l'état et le répertoire |

408| `agents:togglePin` | Ctrl+T | [Épingler ou dépingler](/docs/fr/agent-view#organize-the-list) la session sélectionnée |

409 

410Pendant que la vue agent est ouverte, Claude Code utilise la liaison `Agents` pour toute touche que le contexte `Agents` lie, et il ignore une liaison `Chat` ou `Global` sur la même touche. Par exemple, appuyer sur Ctrl+S dans la vue agent bascule le regroupement de session plutôt que de déclencher la valeur par défaut `chat:stash`.

411 

412Le raccourci d'éditeur externe de la saisie de dispatch n'est pas une action `Agents`. La vue agent suit la liaison `chat:externalEditor` du contexte `Chat`, Ctrl+G par défaut.

413 

414Les liaisons se déclenchent sur des traits simples dans la vue agent, donc l'accord Ctrl+X Ctrl+E lié à `chat:externalEditor` n'ouvre pas l'éditeur là.

415 

387<h3 id="voice-actions">416<h3 id="voice-actions">

388 Actions vocales417 Actions vocales

389</h3>418</h3>


476ctrl+k ctrl+s Appuyez sur Ctrl+K, relâchez, puis Ctrl+S505ctrl+k ctrl+s Appuyez sur Ctrl+K, relâchez, puis Ctrl+S

477```506```

478 507 

508Appuyez sur chaque séquence de touches dans les 3 secondes suivant la précédente. Si vous attendez plus longtemps, Claude Code annule l'accord et affiche un bref message indiquant que c'est le cas.

509 

479<h3 id="special-keys">510<h3 id="special-keys">

480 Touches spéciales511 Touches spéciales

481</h3>512</h3>


511 542 

512Cela 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. Un accord dans n'importe quel contexte actif conserve son préfixe réservé, vous devez donc délier chaque accord dans le contexte qui le définit.543Cela 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. Un accord dans n'importe quel contexte actif conserve son préfixe réservé, vous devez donc délier chaque accord dans le contexte qui le définit.

513 544 

514Claude Code lie ces accords par défaut sur le préfixe `ctrl+x` : `ctrl+x ctrl+k`, `ctrl+x ctrl+e`, et `ctrl+x enter` dans `Chat`, `ctrl+x ctrl+b` dans `Task`, et `ctrl+x b` dans `DiffPanel`. L'accord `ctrl+x enter` nécessite la v2.1.247 ou une version ultérieure, et `ctrl+x b` nécessite la v2.1.260 ou une version ultérieure. Pour récupérer `ctrl+x` lui-même comme liaison à touche unique, déliez tous les éléments suivants :545Claude Code lie ces accords par défaut sur le préfixe `ctrl+x` : `ctrl+x ctrl+k`, `ctrl+x ctrl+e`, `ctrl+x enter`, `ctrl+x ctrl+a`, et `ctrl+x tab` dans `Chat`, `ctrl+x ctrl+b` dans `Task`, et `ctrl+x b` dans `DiffPanel`. L'accord `ctrl+x enter` nécessite la v2.1.247 ou une version ultérieure, et `ctrl+x b`, `ctrl+x ctrl+a`, et `ctrl+x tab` nécessitent la v2.1.260 ou une version ultérieure. Pour récupérer `ctrl+x` lui-même comme liaison à touche unique, déliez tous les éléments suivants :

515 546 

516```json theme={null}547```json theme={null}

517{548{


534 "ctrl+x ctrl+k": null,565 "ctrl+x ctrl+k": null,

535 "ctrl+x ctrl+e": null,566 "ctrl+x ctrl+e": null,

536 "ctrl+x enter": null,567 "ctrl+x enter": null,

568 "ctrl+x ctrl+a": null,

569 "ctrl+x tab": null,

537 "ctrl+x": "chat:newline"570 "ctrl+x": "chat:newline"

538 }571 }

539 }572 }

Details

176Les règles de refus peuvent couvrir tous ceux qui travaillent dans le référentiel, vous seul, ou chaque session sur la machine, selon le fichier de paramètres dans lequel vous les mettez :176Les règles de refus peuvent couvrir tous ceux qui travaillent dans le référentiel, vous seul, ou chaque session sur la machine, selon le fichier de paramètres dans lequel vous les mettez :

177 177 

178* **Tous ceux qui travaillent dans le référentiel** : validez les règles dans `.claude/settings.json`, à la racine du référentiel si vous démarrez Claude là, ou dans le `.claude/` de chaque package si vous démarrez à partir de sous-répertoires. Comme d'autres paramètres de projet sur cette page, ce fichier n'est pas hérité des répertoires parents.178* **Tous ceux qui travaillent dans le référentiel** : validez les règles dans `.claude/settings.json`, à la racine du référentiel si vous démarrez Claude là, ou dans le `.claude/` de chaque package si vous démarrez à partir de sous-répertoires. Comme d'autres paramètres de projet sur cette page, ce fichier n'est pas hérité des répertoires parents.

179* **Vous seul** : utilisez `.claude/settings.local.json` à la racine du référentiel, qui se charge dans chaque session CLI à l'intérieur du référentiel quel que soit le répertoire de démarrage, sauf dans les cas où Claude Code [n'utilise pas la racine du référentiel](/docs/fr/settings#where-claude-code-looks-for-each-file), comme sur Windows. Les modèles relatifs comme `Read(./vendor/**)` de l'exemple s'[ancrent toujours au répertoire de travail actuel de la session](/docs/fr/permissions#read-and-edit) plutôt qu'à la racine du référentiel, donc si vous démarrez des sessions à partir de sous-répertoires, écrivez les règles dans ce fichier comme des chemins absolus `//`, comme `Read(//absolute/path/to/repo/vendor/**)`. Avant v2.1.211, `.claude/settings.local.json` se chargeait également uniquement à partir du répertoire de démarrage.179* **Vous seul** : utilisez `.claude/settings.local.json` à la racine du référentiel, qui se charge dans chaque session CLI à l'intérieur du référentiel quel que soit le répertoire de démarrage, sauf dans les cas où Claude Code [n'utilise pas la racine du référentiel](/docs/fr/settings#where-claude-code-looks-for-each-file), comme sur Windows. Les modèles relatifs comme l'exemple `Read(./**/vendor/**/*)` s'[ancrent toujours au répertoire de travail actuel de la session](/docs/fr/permissions#read-and-edit) plutôt qu'à la racine du référentiel, donc si vous démarrez des sessions à partir de sous-répertoires, écrivez les règles dans ce fichier comme des chemins absolus `//`, comme `Read(//absolute/path/to/repo/**/vendor/**/*)`. Avant v2.1.211, `.claude/settings.local.json` se chargeait également uniquement à partir du répertoire de démarrage.

180* **Tous, appliqué dans chaque session** : définissez les règles dans [paramètres gérés](/docs/fr/managed-settings), que les paramètres utilisateur et projet ne peuvent pas remplacer.180* **Tous, appliqué dans chaque session** : définissez les règles dans [paramètres gérés](/docs/fr/managed-settings), que les paramètres utilisateur et projet ne peuvent pas remplacer.

181 181 

182L'exemple ci-dessous bloque les artefacts de compilation et un SDK vendu :182L'exemple ci-dessous bloque les artefacts de compilation et un SDK vendu. Ses modèles de répertoire se terminent par `/**/*` plutôt que `/**` afin que chaque règle couvre tout ce qui se trouve à l'intérieur du répertoire mais pas le répertoire lui-même. Claude peut alors toujours lister ces répertoires ou y accéder, par exemple avec `ls dist` ou `cd build`.

183 183 

184```json .claude/settings.json theme={null}184```json .claude/settings.json theme={null}

185{185{

186 "permissions": {186 "permissions": {

187 "deny": [187 "deny": [

188 "Read(./**/dist/**)",188 "Read(./**/dist/**/*)",

189 "Read(./**/build/**)",189 "Read(./**/build/**/*)",

190 "Read(./**/*.generated.*)",190 "Read(./**/*.generated.*)",

191 "Read(./vendor/**)"191 "Read(./**/vendor/**/*)"

192 ]192 ]

193 }193 }

194}194}


446 "../shared"446 "../shared"

447 ],447 ],

448 "deny": [448 "deny": [

449 "Read(./**/dist/**)",449 "Read(./**/dist/**/*)",

450 "Read(./**/build/**)"450 "Read(./**/build/**/*)"

451 ]451 ]

452 }452 }

453}453}


461{461{

462 "permissions": {462 "permissions": {

463 "deny": [463 "deny": [

464 "Read(./**/dist/**)",464 "Read(./**/dist/**/*)",

465 "Read(./**/build/**)"465 "Read(./**/build/**/*)"

466 ]466 ]

467 }467 }

468}468}

Details

438 Router vers un fournisseur cloud via une passerelle438 Router vers un fournisseur cloud via une passerelle

439</h3>439</h3>

440 440 

441Ces configurations pointent Claude Code vers une passerelle via une variable d'URL de base spécifique au fournisseur à la place de `ANTHROPIC_BASE_URL`. Les passerelles Amazon Bedrock et Google Cloud's Agent Platform acceptent les formats de demande natifs de ces fournisseurs ; les passerelles Microsoft Foundry et Claude Platform sur AWS acceptent le format Anthropic Messages et diffèrent uniquement par la variable d'URL de base qui les atteint.441Ces configurations pointent Claude Code vers une passerelle via une variable d'URL de base spécifique au fournisseur à la place de `ANTHROPIC_BASE_URL`. Les passerelles Amazon Bedrock et Google Cloud's Agent Platform acceptent les formats de demande natifs de ces fournisseurs ; les passerelles Microsoft Foundry et Claude Platform sur AWS acceptent le format Anthropic Messages. Sur les routes Amazon Bedrock et Google Cloud's Agent Platform, Claude Code limite aussi les en-têtes bêta et les champs de demande qu'il envoie à l'ensemble que le fournisseur accepte. Pour ce que votre passerelle reçoit sur chaque route, voir le [guide de compatibilité de passerelle](/docs/fr/llm-gateway-protocol).

442 442 

443Utilisez-en une uniquement si votre équipe de passerelle a spécifiquement nommé Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, ou Claude Platform sur AWS. Si la [demande de vérification](#verify-the-connection) ci-dessus a retourné JSON, vous pouvez ignorer cette section.443Utilisez-en une uniquement si votre équipe de passerelle a spécifiquement nommé Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, ou Claude Platform sur AWS. Si la [demande de vérification](#verify-the-connection) ci-dessus a retourné JSON, vous pouvez ignorer cette section.

444 444 

445Définissez le bloc pour le fournisseur que votre équipe de passerelle a nommé. Les variables skip-auth disent à Claude Code de ne pas signer les demandes avec les identifiants du fournisseur, puisque la passerelle les détient. Si la passerelle a besoin de son propre jeton, ajoutez `ANTHROPIC_AUTH_TOKEN` après le bloc, sauf pour Microsoft Foundry, qui utilise `ANTHROPIC_FOUNDRY_API_KEY` comme montré.445Définissez le bloc pour le fournisseur que votre équipe de passerelle a nommé. Les variables skip-auth dans les blocs Amazon Bedrock, Google Cloud's Agent Platform, et Claude Platform sur AWS disent à Claude Code de ne pas signer les demandes avec les identifiants du fournisseur cloud, puisque la passerelle les détient. Si la passerelle a besoin de son propre jeton, où vous le mettez dépend du fournisseur :

446 

447* **Amazon Bedrock, Google Cloud's Agent Platform, ou Claude Platform sur AWS** : ajoutez `ANTHROPIC_AUTH_TOKEN` après le bloc. Claude Code l'envoie à la passerelle comme en-tête `Authorization: Bearer`. Pour un identifiant dans un schéma ou un en-tête différent, utilisez [`ANTHROPIC_CUSTOM_HEADERS`](#send-additional-headers) à la place. Gardez la variable skip-auth définie de toute façon, puisque sans elle Claude Code supprime tout en-tête `Authorization` que `ANTHROPIC_AUTH_TOKEN`, un [`apiKeyHelper`](#rotate-credentials-with-apikeyhelper), ou `ANTHROPIC_CUSTOM_HEADERS` ajouterait.

448* **Microsoft Foundry** : utilisez `ANTHROPIC_FOUNDRY_API_KEY` comme [son bloc](#microsoft-foundry) le montre

446 449 

447<h4 id="amazon-bedrock">450<h4 id="amazon-bedrock">

448 Amazon Bedrock451 Amazon Bedrock

449</h4>452</h4>

450 453 

454Laissez `AWS_BEARER_TOKEN_BEDROCK` non défini quand la passerelle émet son propre identifiant. Si vous le définissez, Claude Code envoie cette [clé API Amazon Bedrock](/docs/fr/amazon-bedrock#2-configure-aws-credentials) comme en-tête `Authorization` à la place de votre jeton de passerelle, même avec `CLAUDE_CODE_SKIP_BEDROCK_AUTH` défini.

455 

451<Tabs>456<Tabs>

452 <Tab title="Bash ou Zsh">457 <Tab title="Bash ou Zsh">

453 ```bash theme={null}458 ```bash theme={null}


470 Google Cloud's Agent Platform475 Google Cloud's Agent Platform

471</h4>476</h4>

472 477 

478Remplacez l'ID de projet et la région par vos propres valeurs. Claude Code inclut les deux dans le chemin de chaque demande qu'il envoie à la passerelle :

479 

473<Tabs>480<Tabs>

474 <Tab title="Bash ou Zsh">481 <Tab title="Bash ou Zsh">

475 ```bash theme={null}482 ```bash theme={null}


492 </Tab>499 </Tab>

493</Tabs>500</Tabs>

494 501 

502Le bloc couvre le routage et l'authentification. Les remplacements de région et les épingles de modèle de la [configuration Agent Platform](/docs/fr/google-vertex-ai#4-configure-claude-code) s'appliquent aussi via une passerelle :

503 

504* **Régions par modèle** : si votre passerelle sert certains modèles à partir d'une région autre que `CLOUD_ML_REGION`, définissez la variable `VERTEX_REGION_CLAUDE_*` correspondante pour chacun, par exemple `VERTEX_REGION_CLAUDE_4_6_SONNET=europe-west1`. La [référence des variables d'environnement](/docs/fr/env-vars) liste les noms exacts.

505* **Versions de modèle** : épinglez `ANTHROPIC_DEFAULT_OPUS_MODEL`, `ANTHROPIC_DEFAULT_SONNET_MODEL`, et `ANTHROPIC_DEFAULT_HAIKU_MODEL` comme dans [Épingler les versions de modèle](/docs/fr/google-vertex-ai#5-pin-model-versions). Définir `ANTHROPIC_DEFAULT_HAIKU_MODEL` déplace aussi les tâches de fond telles que les titres de session vers ce modèle, et cette section explique quel modèle les exécute autrement.

506* **Capacités de modèle** : si vous épinglez un ID de modèle que votre version de Claude Code ne reconnaît pas, les fonctionnalités telles que les niveaux d'effort ou la réflexion étendue peuvent rester désactivées sur celui-ci. Déclarez ce que le modèle supporte avec [`ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES`](/docs/fr/model-config#customize-pinned-model-display-and-capabilities) et ses homologues Sonnet et Haiku.

507 

495<h4 id="microsoft-foundry">508<h4 id="microsoft-foundry">

496 Microsoft Foundry509 Microsoft Foundry

497</h4>510</h4>


568| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |581| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

569| Un avertissement de démarrage nommant deux sources d'identifiant et se terminant par `auth may not work as expected`. Les versions plus anciennes affichent `Auth conflict: Both a token (SOURCE) and an API key (SOURCE) are set` à la place. | Un identifiant de passerelle et une connexion sauvegardée sont tous deux actifs ; la variable est utilisée pour les demandes, mais la connexion obsolète peut causer un comportement d'authentification inattendu | Désactivez la variable pour utiliser la connexion sauvegardée, ou exécutez `/logout` pour utiliser l'identifiant de passerelle |582| Un avertissement de démarrage nommant deux sources d'identifiant et se terminant par `auth may not work as expected`. Les versions plus anciennes affichent `Auth conflict: Both a token (SOURCE) and an API key (SOURCE) are set` à la place. | Un identifiant de passerelle et une connexion sauvegardée sont tous deux actifs ; la variable est utilisée pour les demandes, mais la connexion obsolète peut causer un comportement d'authentification inattendu | Désactivez la variable pour utiliser la connexion sauvegardée, ou exécutez `/logout` pour utiliser l'identifiant de passerelle |

570| Erreurs `401` nommant un jeton invalide ou non reconnu | L'identifiant n'en est pas un que la passerelle a émis, ou il est dans un en-tête que la passerelle ne lit pas | Confirmez que la variable correspond à votre type d'identifiant dans le [tableau d'identifiant](#set-the-credential-variable), et régénérez la clé à la passerelle si elle a été révoquée |583| Erreurs `401` nommant un jeton invalide ou non reconnu | L'identifiant n'en est pas un que la passerelle a émis, ou il est dans un en-tête que la passerelle ne lit pas | Confirmez que la variable correspond à votre type d'identifiant dans le [tableau d'identifiant](#set-the-credential-variable), et régénérez la clé à la passerelle si elle a été révoquée |

571| `Your apiKeyHelper script is failing` | La commande dans le paramètre [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper) n'a pas produit une clé utilisable, de sorte que les demandes portent une clé d'espace réservé | Exécutez la commande directement pour voir pourquoi elle échoue, et réauthentifiez-vous auprès de votre fournisseur d'identifiants s'il signale une session expirée ; voir [la référence d'erreur](/docs/fr/errors#your-apikeyhelper-script-is-failing) |584| `Your apiKeyHelper script is failing`, ou `apiKeyHelper failed:` sur stderr en mode non interactif | La commande dans le paramètre [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper) n'a pas produit une clé utilisable, de sorte que les demandes portent une clé d'espace réservé | Exécutez la commande directement pour voir pourquoi elle échoue, et réauthentifiez-vous auprès de votre fournisseur d'identifiants s'il signale une session expirée ; voir [la référence d'erreur](/docs/fr/errors#your-apikeyhelper-script-is-failing) |

572| `Connection refused — a firewall or proxy may be blocking it (ConnectionRefused)` quand rien ne répond à l'adresse, ou `Can't reach the API server — check your internet or DNS (ENOTFOUND)` quand le nom d'hôte ne se résout pas, souvent après une pause silencieuse tandis que Claude Code [réessaie avec backoff](/docs/fr/errors#automatic-retries). Le code entre parenthèses varie ; [Unable to connect to API](/docs/fr/errors#unable-to-connect-to-api) couvre les orthographes de code et la formulation antérieure | Rien n'a répondu à l'URL de base : l'adresse est mauvaise, ou un VPN ou un pare-feu bloque le chemin vers la passerelle | Exécutez le [test curl ci-dessus](#verify-the-connection), qui échoue immédiatement avec la même cause, et confirmez l'URL et le chemin réseau avec votre équipe de passerelle |585| `Connection refused — a firewall or proxy may be blocking it (ConnectionRefused)` quand rien ne répond à l'adresse, ou `Can't reach the API server — check your internet or DNS (ENOTFOUND)` quand le nom d'hôte ne se résout pas, souvent après une pause silencieuse tandis que Claude Code [réessaie avec backoff](/docs/fr/errors#automatic-retries). Le code entre parenthèses varie ; [Unable to connect to API](/docs/fr/errors#unable-to-connect-to-api) couvre les orthographes de code et la formulation antérieure | Rien n'a répondu à l'URL de base : l'adresse est mauvaise, ou un VPN ou un pare-feu bloque le chemin vers la passerelle | Exécutez le [test curl ci-dessus](#verify-the-connection), qui échoue immédiatement avec la même cause, et confirmez l'URL et le chemin réseau avec votre équipe de passerelle |

573| `API returned an empty or malformed response (HTTP 200)` | La passerelle ou un proxy intermédiaire a retourné une réponse non-API, souvent une page d'erreur HTML ou de connexion | Testez avec la [demande curl ci-dessus](#verify-the-connection) ; corrigez la route de passerelle qui retourne quelque chose d'autre qu'une réponse Claude API. [La référence d'erreur](/docs/fr/errors#api-returned-an-empty-or-malformed-response) explique le détail que le message signale |586| `API returned an empty or malformed response (HTTP 200)` | La passerelle ou un proxy intermédiaire a retourné une réponse non-API, souvent une page d'erreur HTML ou de connexion | Testez avec la [demande curl ci-dessus](#verify-the-connection) ; corrigez la route de passerelle qui retourne quelque chose d'autre qu'une réponse Claude API. [La référence d'erreur](/docs/fr/errors#api-returned-an-empty-or-malformed-response) explique le détail que le message signale |

574| Erreurs `400` nommant `context_management`, `Extra inputs are not permitted`, ou d'autres champs non reconnus | La passerelle transfère les demandes à un amont qui rejette les champs que Claude Code envoie aux points de terminaison au format Anthropic | Définissez `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`, qui supprime la plupart des champs de pré-version ; voir [feature pass-through](/docs/fr/llm-gateway-protocol#feature-pass-through). Certaines betas ne sont pas fermées par ce drapeau ; pour celles-ci, définissez la variable de fournisseur `CLAUDE_CODE_USE_*` correspondante de sorte que Claude Code envoie uniquement ce que ce fournisseur accepte |587| Erreurs `400` nommant `context_management`, `Extra inputs are not permitted`, ou d'autres champs non reconnus | La passerelle transfère les demandes à un amont qui rejette les champs que Claude Code envoie aux points de terminaison au format Anthropic | Définissez `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`, qui supprime la plupart des champs de pré-version ; voir [feature pass-through](/docs/fr/llm-gateway-protocol#feature-pass-through). Certaines betas ne sont pas fermées par ce drapeau ; pour celles-ci, définissez la variable de fournisseur `CLAUDE_CODE_USE_*` correspondante de sorte que Claude Code envoie uniquement ce que ce fournisseur accepte |

Details

54 Points de terminaison optionnels et trafic de démarrage54 Points de terminaison optionnels et trafic de démarrage

55</h3>55</h3>

56 56 

57Les points de terminaison de comptage de jetons sont les seuls optionnels : lorsqu'ils sont absents, Claude Code revient au comptage de l'utilisation du contexte via le point de terminaison d'inférence à la place. Les requêtes d'inférence sont envoyées à `/v1/messages?beta=true`, donc faites correspondre le chemin, pas l'URL complète. La méthode Google Cloud's Agent Platform ajoute des suffixes au chemin du modèle de l'éditeur, comme dans `/projects/{project}/locations/{location}/publishers/anthropic/models/{model}:streamRawPredict`.57Les points de terminaison de comptage de jetons sont les seuls optionnels : lorsqu'ils sont absents, Claude Code revient à une estimation basée sur les caractères de l'utilisation du contexte.

58 

59Faites correspondre le chemin, pas l'URL complète :

60 

61* Les requêtes d'inférence sont envoyées à `/v1/messages?beta=true`

62* La méthode Google Cloud's Agent Platform ajoute des suffixes au chemin du modèle de l'éditeur, comme dans `/projects/{project}/locations/{location}/publishers/anthropic/models/{model}:streamRawPredict`

58 63 

59Une passerelle voit également du trafic de démarrage au meilleur effort qu'elle peut rejeter sans rien casser. Une passerelle au format Messages Anthropic reçoit une sonde de réchauffement de connexion `HEAD /api/hello`, que Claude Code ignore lorsqu'un proxy HTTP ou un certificat client est configuré. Une passerelle au format Amazon Bedrock reçoit une requête `GET /inference-profiles?type=SYSTEM_DEFINED` et, lorsque le modèle configuré est un profil d'inférence, des recherches `GET /inference-profiles/{profile}`.64Une passerelle voit également du trafic de démarrage au meilleur effort qu'elle peut rejeter sans rien casser. Une passerelle au format Messages Anthropic reçoit une sonde de réchauffement de connexion `HEAD /api/hello`, que Claude Code ignore lorsqu'un proxy HTTP ou un certificat client est configuré. Une passerelle au format Amazon Bedrock reçoit une requête `GET /inference-profiles?type=SYSTEM_DEFINED` et, lorsque le modèle configuré est un profil d'inférence, des recherches `GET /inference-profiles/{profile}`.

60 65 


152| Champs d'outil [bêta](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) | Les en-têtes bêta liés aux outils s'associent aux champs de schéma d'outil tels que `strict` et `defer_loading` | `400` nommant le champ de schéma d'outil non reconnu lorsque le corps passe sans son en-tête | Transmettez les deux, ou [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities) |157| Champs d'outil [bêta](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) | Les en-têtes bêta liés aux outils s'associent aux champs de schéma d'outil tels que `strict` et `defer_loading` | `400` nommant le champ de schéma d'outil non reconnu lorsque le corps passe sans son en-tête | Transmettez les deux, ou [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities) |

153| [Effort](https://platform.claude.com/docs/en/build-with-claude/effort) et [sorties structurées](https://platform.claude.com/docs/en/build-with-claude/structured-outputs) | Le champ de corps `output_config` porte les paramètres d'effort, de format de sortie structurée et de budget de tâche ; chacun s'associe à son propre en-tête bêta | `400` nommant `output_config`, souvent `Extra inputs are not permitted`, sur les amonts Amazon Bedrock et Agent Platform de Google Cloud | Transmettez le champ et ses en-têtes ensemble |158| [Effort](https://platform.claude.com/docs/en/build-with-claude/effort) et [sorties structurées](https://platform.claude.com/docs/en/build-with-claude/structured-outputs) | Le champ de corps `output_config` porte les paramètres d'effort, de format de sortie structurée et de budget de tâche ; chacun s'associe à son propre en-tête bêta | `400` nommant `output_config`, souvent `Extra inputs are not permitted`, sur les amonts Amazon Bedrock et Agent Platform de Google Cloud | Transmettez le champ et ses en-têtes ensemble |

154| [Mise en cache des invites](/docs/fr/prompt-caching) | Pas d'appairage bêta. Claude Code attache les marqueurs `cache_control` aux blocs `system` et aux entrées `messages`, y compris les entrées `role: "system"` ajoutées en milieu de conversation | Pas d'erreur : la conversation est facturée comme entrée non mise en cache à chaque tour, visible comme `input_tokens` élevé avec peu ou pas d'activité de cache dans `usage` | Transmettez `cache_control` inchangé partout où il apparaît, et ne convertissez pas le formulaire de bloc `system` ou le contenu du message en chaînes simples |159| [Mise en cache des invites](/docs/fr/prompt-caching) | Pas d'appairage bêta. Claude Code attache les marqueurs `cache_control` aux blocs `system` et aux entrées `messages`, y compris les entrées `role: "system"` ajoutées en milieu de conversation | Pas d'erreur : la conversation est facturée comme entrée non mise en cache à chaque tour, visible comme `input_tokens` élevé avec peu ou pas d'activité de cache dans `usage` | Transmettez `cache_control` inchangé partout où il apparaît, et ne convertissez pas le formulaire de bloc `system` ou le contenu du message en chaînes simples |

155| [Comptage des jetons](https://platform.claude.com/docs/en/build-with-claude/token-counting) | Pas d'appairage bêta ; utilise le point de terminaison `count_tokens` | Claude Code revient à l'estimation de l'utilisation du contexte via le point de terminaison des messages | Exposez le point de terminaison pour que les comptages de jetons ne consomment pas les requêtes d'inférence |160| [Comptage des jetons](https://platform.claude.com/docs/en/build-with-claude/token-counting) | Pas d'appairage bêta ; utilise le point de terminaison `count_tokens` | Pas d'erreur : Claude Code revient à une estimation basée sur les caractères, donc `/context` affiche les comptages approximatifs | Exposez le point de terminaison pour les comptages de jetons exacts |

156 161 

157Les [variables](/docs/fr/model-config) `ANTHROPIC_DEFAULT_*_MODEL_SUPPORTED_CAPABILITIES` déclarent les capacités du modèle uniquement dans les configurations du fournisseur : `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX`, `CLAUDE_CODE_USE_FOUNDRY`, et [`CLAUDE_CODE_USE_MANTLE`](/docs/fr/amazon-bedrock#use-the-mantle-endpoint). Elles n'ont aucun effet derrière une passerelle `ANTHROPIC_BASE_URL`.162Les [variables](/docs/fr/model-config) `ANTHROPIC_DEFAULT_*_MODEL_SUPPORTED_CAPABILITIES` déclarent les capacités du modèle uniquement dans les configurations du fournisseur : `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX`, `CLAUDE_CODE_USE_FOUNDRY`, et [`CLAUDE_CODE_USE_MANTLE`](/docs/fr/amazon-bedrock#use-the-mantle-endpoint). Elles n'ont aucun effet derrière une passerelle `ANTHROPIC_BASE_URL`.

158 163 


160 Nouvelle tentative automatique et transmission d'erreur165 Nouvelle tentative automatique et transmission d'erreur

161</h3>166</h3>

162 167 

163Lorsque l'amont rejette le champ `thinking`, une [signature de pensée](https://platform.claude.com/docs/en/build-with-claude/extended-thinking), un message système en milieu de conversation, ou le marqueur `cache_control` sur l'un de ces messages, Claude Code réessaie la requête et désactive la capacité rejetée pour le reste de la conversation. Claude Code ne réessaie pas les rejets de gestion du contexte ou de champ de schéma d'outil ; ces erreurs `400` atteignent le développeur.168Ce que Claude Code fait après un rejet en amont dépend de ce qui a été rejeté :

169 

170* Lorsque l'amont rejette le champ `thinking`, un message système en milieu de conversation, ou le marqueur `cache_control` sur un tel message, Claude Code réessaie la requête et désactive la capacité rejetée pour le reste de la conversation

171* Lorsque l'amont rejette une [signature de pensée](https://platform.claude.com/docs/en/build-with-claude/extended-thinking), Claude Code réessaie la requête sans les blocs de pensée antérieurs de la conversation et les garde hors de chaque requête ultérieure. Les nouvelles réponses incluent toujours la pensée

172* Claude Code ne réessaie pas les rejets de gestion du contexte ou de champ de schéma d'outil, donc ces erreurs `400` atteignent le développeur

164 173 

165La logique de nouvelle tentative correspond à la formulation d'erreur de l'amont, donc transmettez les corps de réponse d'erreur inmodifiés. Une passerelle qui enveloppe les erreurs en amont dans sa propre enveloppe casse le chemin de récupération, même lorsqu'elle préserve le code d'état, sauf si le message de l'enveloppe porte un jeton `capability_rejected:` stable. [La passerelle des applications Claude substitue ces jetons à la formulation d'erreur des fournisseurs de cloud](/docs/fr/claude-apps-gateway-config#upstream-error-messages), par exemple `capability_rejected: prompt_too_long`.174La logique de nouvelle tentative correspond à la formulation d'erreur de l'amont, donc transmettez les corps de réponse d'erreur inmodifiés. Une passerelle qui enveloppe les erreurs en amont dans sa propre enveloppe casse le chemin de récupération, même lorsqu'elle préserve le code d'état, sauf si le message de l'enveloppe porte un jeton `capability_rejected:` stable. [La passerelle des applications Claude substitue ces jetons à la formulation d'erreur des fournisseurs de cloud](/docs/fr/claude-apps-gateway-config#upstream-error-messages), par exemple `capability_rejected: prompt_too_long`.

166 175 

Details

207 207 

208Ajoutez les variables conditionnelles du tableau au même bloc `env`. Un `ANTHROPIC_BASE_URL` géré est appliqué et ne peut pas être remplacé par l'export shell d'un développeur, puisque Claude Code l'applique sur l'environnement du processus et les paramètres de priorité inférieure.208Ajoutez les variables conditionnelles du tableau au même bloc `env`. Un `ANTHROPIC_BASE_URL` géré est appliqué et ne peut pas être remplacé par l'export shell d'un développeur, puisque Claude Code l'applique sur l'environnement du processus et les paramètres de priorité inférieure.

209 209 

210N'incluez pas `forceLoginMethod` ou `forceLoginOrgUUID` dans les paramètres gérés aux côtés d'un identifiant de passerelle. L'une ou l'autre clé, avec n'importe quelle valeur, bloque `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, et `apiKeyHelper` au démarrage, pour que les développeurs voient `This machine's managed settings require a first-party login` et ne puissent pas continuer.210N'incluez pas `forceLoginMethod` ou `forceLoginOrgUUID` dans les paramètres gérés aux côtés d'un identifiant de passerelle. L'une ou l'autre clé, avec n'importe quelle valeur, bloque `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, et `apiKeyHelper` au démarrage, et les développeurs ne peuvent pas continuer. Ils voient `This machine's managed settings require a first-party login`, ou [`Administrator policy requires a Cloud gateway sign-in`](/docs/fr/errors#administrator-policy-requires-a-cloud-gateway-sign-in) sous une valeur `"gateway"`.

211 211 

212La livraison des [paramètres gérés par le serveur](/docs/fr/server-managed-settings#platform-availability) nécessite une connexion directe à `api.anthropic.com`, elle n'atteint donc pas les sessions routées par passerelle. Les déploiements de passerelle utilisent ce chemin de paramètres gérés basé sur fichier, qui applique les mêmes clés.212La livraison des [paramètres gérés par le serveur](/docs/fr/server-managed-settings#platform-availability) nécessite une connexion directe à `api.anthropic.com`, elle n'atteint donc pas les sessions routées par passerelle. Les déploiements de passerelle utilisent ce chemin de paramètres gérés basé sur fichier, qui applique les mêmes clés.

213 213 

managed-mcp.md +210 −83

Details

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt2> 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.3> Use this file to discover all available pages before exploring further.

4 4 

5# Contrôler l'accès aux serveurs MCP pour votre organisation5# Contrôlez l'accès aux serveurs MCP pour votre organisation

6 6 

7> Limitez les serveurs MCP que les utilisateurs peuvent ajouter ou connecter avec des fichiers de configuration gérés, des listes blanches et des listes noires.7> Limitez les serveurs MCP que les utilisateurs peuvent ajouter ou connecter, ou fournissez des serveurs à tous les utilisateurs, avec des fichiers de configuration gérés, des paramètres gérés, des listes blanches et des listes noires.

8 8 

9Par défaut, toute personne exécutant Claude Code peut connecter n'importe quel [serveur MCP](/docs/fr/mcp) de son choix. Anthropic examine les connecteurs par rapport à ses [critères d'examen](https://claude.com/docs/connectors/building/review-criteria) avant de les ajouter à l'[Annuaire Anthropic](https://claude.ai/directory), mais n'effectue pas d'audit de sécurité ni ne gère aucun serveur MCP. En tant qu'administrateur, vous pouvez restreindre les serveurs qui s'exécutent dans votre organisation, du déploiement d'un ensemble approuvé fixe à la désactivation complète de MCP.9Par défaut, toute personne exécutant Claude Code peut connecter n'importe quel [serveur MCP](/docs/fr/mcp) de son choix. Anthropic examine les connecteurs par rapport à ses [critères d'examen](https://claude.com/docs/connectors/building/review-criteria) avant de les ajouter à l'[Annuaire Anthropic](https://claude.ai/directory), mais n'effectue pas d'audit de sécurité ni ne gère aucun serveur MCP. En tant qu'administrateur, vous pouvez limiter les serveurs qui s'exécutent dans votre organisation, en déployant un ensemble approuvé fixe ou en désactivant complètement MCP, et vous pouvez fournir des serveurs à tous les utilisateurs.

10 10 

11Ces restrictions couvrent les serveurs que Claude Code charge lui-même, y compris les connecteurs qu'il récupère depuis claude.ai. Les connecteurs que l'application de bureau fournit à ses sessions locales et SSH arrivent en processus et sont gouvernés par vos paramètres d'organisation claude.ai à la place ; [Comment les connecteurs atteignent Claude Code](/docs/fr/mcp#how-connectors-reach-claude-code) montre quels contrôles s'appliquent aux connecteurs dans chaque type de session, y compris les sessions cloud.11Ces restrictions couvrent les serveurs que Claude Code charge lui-même, y compris les connecteurs qu'il récupère depuis claude.ai. Les connecteurs que l'application de bureau fournit à ses sessions locales et SSH arrivent en processus et sont gouvernés par vos paramètres d'organisation claude.ai à la place ; [Comment les connecteurs atteignent Claude Code](/docs/fr/mcp#how-connectors-reach-claude-code) montre quels contrôles s'appliquent aux connecteurs dans chaque type de session, y compris les sessions cloud.

12 12 

13Cette page couvre comment :13Cette page couvre comment :

14 14 

15* [Choisir un modèle](#choose-a-pattern) qui correspond au niveau de contrôle dont vous avez besoin15* [Choisir un modèle](#choose-a-pattern) qui correspond au niveau de contrôle dont vous avez besoin

16* [Déployer un ensemble de serveurs fixe avec `managed-mcp.json`](#exclusive-control-with-managed-mcp-json), y compris comment [désactiver MCP entièrement](#disable-mcp-entirely)16* [Déployer un ensemble de serveurs fixe avec `managed-mcp.json`](#exclusive-control-with-managed-mcp-json), y compris comment [désactiver complètement MCP](#disable-mcp-entirely)

17* [Fournir des serveurs via les paramètres gérés](#provide-servers-through-managed-settings) tandis que les utilisateurs conservent les leurs

17* [Contrôler les serveurs avec des listes blanches et des listes noires](#policy-based-control-with-allowlists-and-denylists)18* [Contrôler les serveurs avec des listes blanches et des listes noires](#policy-based-control-with-allowlists-and-denylists)

18* [Indiquer aux utilisateurs à quoi s'attendre](#how-restrictions-appear-to-users) quand une restriction bloque un serveur19* [Informer les utilisateurs de ce à quoi s'attendre](#how-restrictions-appear-to-users) quand une restriction bloque un serveur

19* [Surveiller les serveurs que votre organisation utilise réellement](#monitor-mcp-usage)20* [Surveiller les serveurs que votre organisation utilise réellement](#monitor-mcp-usage)

20 21 

21<Note>22<Note>


26 Choisir un modèle27 Choisir un modèle

27</h2>28</h2>

28 29 

29Claude Code prend en charge une gamme de niveaux de restriction. Chaque modèle utilise l'un ou les deux mécanismes couverts ci-dessous : `managed-mcp.json` pour déployer un ensemble fixe, et `allowedMcpServers`/`deniedMcpServers` pour filtrer ce que les utilisateurs configurent.30Claude Code prend en charge une gamme de niveaux de restriction. Chaque modèle utilise un ou plusieurs des mécanismes couverts ci-dessous : `managed-mcp.json` pour déployer un ensemble fixe, le paramètre géré `managedMcpServers` pour fournir des serveurs aux côtés de ceux que les utilisateurs ajoutent, et `allowedMcpServers`/`deniedMcpServers` pour filtrer ce que les utilisateurs configurent.

30 31 

31| Modèle | Ce qu'il fait | Configurer |32| Modèle | Ce qu'il fait | Configurer |

32| :--------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------- |33| :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------- |

33| **Désactiver MCP** | Aucun serveur ne se charge, à part [les serveurs en processus que l'application qui a démarré la session enregistre](#exclusive-control-with-managed-mcp-json) | `managed-mcp.json` avec une carte de serveurs vide |34| **Désactiver MCP** | Aucun serveur ne se charge, à part [les serveurs en processus que l'application qui a démarré la session enregistre](#exclusive-control-with-managed-mcp-json) et tous ceux que vous [fournissez via `managedMcpServers`](#provide-servers-through-managed-settings) | `managed-mcp.json` avec une carte de serveurs vide |

34| **Déploiement fixe** | Chaque utilisateur obtient les mêmes serveurs et ne peut pas en ajouter d'autres | `managed-mcp.json` avec les serveurs que vous voulez |35| **Déploiement fixe** | Chaque utilisateur obtient les mêmes serveurs et ne peut pas en ajouter d'autres | `managed-mcp.json` avec les serveurs que vous souhaitez |

35| **Catalogue approuvé** | Publiez une liste de serveurs approuvés ; les utilisateurs ajoutent ceux qu'ils veulent, tout le reste est bloqué | `allowedMcpServers` + `allowManagedMcpServersOnly: true` |36| **Serveurs fournis** | Chaque utilisateur obtient les serveurs distants que vous listez et conserve les siens | `managedMcpServers` dans les paramètres gérés |

36| **Serveurs de plugins uniquement** | Les utilisateurs ne peuvent pas ajouter de serveurs via `~/.claude.json` ou `.mcp.json` ; les serveurs de plugins se chargent toujours | [`strictPluginOnlyCustomization`](/docs/fr/settings-reference#strictpluginonlycustomization) avec `mcp` dans la liste |37| **Catalogue approuvé** | Publiez une liste de serveurs approuvés ; les utilisateurs ajoutent ceux qu'ils souhaitent, tout le reste est bloqué | `allowedMcpServers` + `allowManagedMcpServersOnly: true` |

37| **Liste blanche souple** | Appliquer une liste blanche que les utilisateurs peuvent élargir dans leurs propres paramètres | `allowedMcpServers` sans `allowManagedMcpServersOnly` |38| **Serveurs de plugin uniquement** | Les utilisateurs ne peuvent pas ajouter de serveurs via `~/.claude.json` ou `.mcp.json` ; les serveurs de plugin se chargent toujours | [`strictPluginOnlyCustomization`](/docs/fr/settings-reference#strictpluginonlycustomization) avec `mcp` dans la liste |

38| **Liste noire uniquement** | Bloquer les serveurs connus comme mauvais, autoriser tout le reste | `deniedMcpServers` |39| **Liste d'approbation souple** | Appliquer une liste d'approbation que les utilisateurs peuvent élargir dans leurs propres paramètres | `allowedMcpServers` sans `allowManagedMcpServersOnly` |

40| **Liste de refus uniquement** | Bloquer les serveurs connus comme mauvais, autoriser tout le reste | `deniedMcpServers` |

39| **Aucune restriction** | Les utilisateurs ajoutent n'importe quoi | Ne déployez aucune configuration MCP gérée |41| **Aucune restriction** | Les utilisateurs ajoutent n'importe quoi | Ne déployez aucune configuration MCP gérée |

40 42 

41<Note>43<Note>

42 Claude Code n'a pas de registre de serveurs MCP intégré que les utilisateurs peuvent parcourir et installer. Pour le modèle de catalogue approuvé, partagez la liste approuvée et ses commandes `claude mcp add` quelque part où vos utilisateurs les trouveront, comme un wiki interne, ou distribuez les serveurs en tant que plugins via une [place de marché de plugins gérée](/docs/fr/plugin-marketplaces#managed-marketplace-restrictions) afin que les utilisateurs puissent les parcourir et les installer à partir de `/plugin`.44 Claude Code n'a pas de registre de serveur MCP intégré que les utilisateurs peuvent parcourir et installer. Pour le modèle de catalogue approuvé, partagez la liste approuvée et ses commandes `claude mcp add` quelque part où vos utilisateurs les trouveront, comme un wiki interne, ou distribuez les serveurs en tant que plugins via une [place de marché de plugins gérée](/docs/fr/plugin-marketplaces#managed-marketplace-restrictions) afin que les utilisateurs puissent les parcourir et les installer depuis `/plugin`.

43</Note>45</Note>

44 46 

45<h2 id="exclusive-control-with-managed-mcp-json">47<h2 id="exclusive-control-with-managed-mcp-json">

46 Contrôle exclusif avec managed-mcp.json48 Contrôle exclusif avec managed-mcp.json

47</h2>49</h2>

48 50 

49Si vous déployez un fichier `managed-mcp.json`, Claude Code charge uniquement les serveurs que ce fichier définit, plus tous les serveurs en processus que l'application qui a démarré la session enregistre, comme le serveur propre de l'extension VS Code ou les [connecteurs que l'application de bureau fournit](/docs/fr/mcp#how-connectors-reach-claude-code). Les utilisateurs ne peuvent pas ajouter, modifier ou utiliser d'autres serveurs MCP, y compris les serveurs fournis par les plugins et les serveurs passés avec le [drapeau CLI `--mcp-config`](/docs/fr/cli-reference#cli-flags). Le fichier supprime également les connecteurs claude.ai que Claude Code récupère lui-même sauf si vous [les autorisez aux côtés de l'ensemble géré](#allow-claude-ai-connectors-alongside-the-managed-set).51Si vous déployez un fichier `managed-mcp.json`, Claude Code charge uniquement les serveurs que ce fichier définit, les serveurs que vous [fournissez via `managedMcpServers`](#provide-servers-through-managed-settings), plus tous les serveurs en processus que l'application qui a démarré la session enregistre, comme le serveur propre de l'extension VS Code ou les [connecteurs que l'application de bureau fournit](/docs/fr/mcp#how-connectors-reach-claude-code). Les utilisateurs ne peuvent pas ajouter, modifier ou utiliser d'autres serveurs MCP, y compris les serveurs fournis par les plugins et les serveurs transmis avec le [drapeau CLI `--mcp-config`](/docs/fr/cli-reference#cli-flags). Le fichier supprime également les connecteurs claude.ai que Claude Code récupère lui-même, sauf si vous [les autorisez aux côtés de l'ensemble géré](#allow-claude-ai-connectors-alongside-the-managed-set).

50 52 

51Ce qu'un utilisateur voit quand une session reçoit des serveurs `--mcp-config` dépend de l'endroit où la session s'exécute :53<h3 id="deploy-managed-mcp-json">

52 54 Déployer managed-mcp.json

53* Sur une station de travail, Claude Code se ferme au démarrage avec `You cannot dynamically configure MCP servers when an enterprise MCP config is present`.55</h3>

54* Dans les [sessions cloud](/docs/fr/claude-code-on-the-web) sur un hôte où le fichier est déployé, comme un [exécuteur auto-hébergé](/docs/fr/self-hosted-environments-configuration#mcp-servers), Claude Code démarre avec les serveurs gérés uniquement et ignore les connecteurs claude.ai et les autres serveurs que l'hôte cloud fournit via `--mcp-config`. Rien dans la session ne dit à l'utilisateur quels serveurs ont été laissés de côté. Claude Code les nomme dans un avertissement sur son stderr, qu'un exécuteur auto-hébergé enregistre au niveau de journal `debug`. Avant v2.1.229, ces sessions se fermaient avec la même erreur qu'une station de travail affiche.

55 

56Si un utilisateur passe `--strict-mcp-config`, Claude Code se ferme au démarrage sur une station de travail et dans une session cloud de la même manière, car ce drapeau demande de remplacer l'ensemble géré.

57 

58Deux autres paramètres peuvent filtrer davantage l'ensemble géré :

59 

60* `allowedMcpServers` et `deniedMcpServers` s'appliquent également aux serveurs gérés, donc un serveur géré qui ne les satisfait pas ne se chargera pas.

61* Le propre `deniedMcpServers` d'un utilisateur se fusionne à partir de ses paramètres, donc les utilisateurs peuvent bloquer un serveur géré pour eux-mêmes.

62 56 

63Voir [Comment un serveur est évalué](#how-a-server-is-evaluated) pour l'ordre complet des vérifications.57`managed-mcp.json` est un fichier autonome, il ne peut donc pas être livré via les [paramètres gérés par le serveur](/docs/fr/server-managed-settings). Pour livrer les serveurs via les paramètres gérés à la place, sans contrôle exclusif, utilisez [`managedMcpServers`](#provide-servers-through-managed-settings).

64 58 

65`managed-mcp.json` est un fichier autonome, il ne peut donc pas être livré via [les paramètres gérés par le serveur](/docs/fr/server-managed-settings). Tout processus pouvant écrire dans un chemin système avec des privilèges d'administrateur peut le déployer. À grande échelle, c'est généralement via des outils de gestion des appareils, tels que Jamf ou un profil de configuration sur macOS, Group Policy ou Intune sur Windows, ou votre gestion de flotte de choix sur Linux. Claude Code recherche le fichier à l'un de ces chemins :59Tout processus pouvant écrire dans un chemin système avec des privilèges d'administrateur peut déployer le fichier. Sur une flotte, c'est généralement via des outils de gestion d'appareils, comme Jamf ou un profil de configuration sur macOS, une stratégie de groupe ou Intune sur Windows, ou votre gestion de flotte de choix sur Linux. Claude Code recherche le fichier à l'un de ces chemins :

66 60 

67| Plateforme | Chemin |61| Plateforme | Chemin |

68| :----------- | :--------------------------------------------------------- |62| :----------- | :--------------------------------------------------------- |


70| Linux et WSL | `/etc/claude-code/managed-mcp.json` |64| Linux et WSL | `/etc/claude-code/managed-mcp.json` |

71| Windows | `C:\Program Files\ClaudeCode\managed-mcp.json` |65| Windows | `C:\Program Files\ClaudeCode\managed-mcp.json` |

72 66 

73Le fichier utilise le même format qu'un fichier de projet [`.mcp.json`](/docs/fr/mcp#project-scope) :67Le fichier utilise le même format qu'un fichier [`.mcp.json`](/docs/fr/mcp#project-scope) de projet :

74 68 

75```json theme={null}69```json theme={null}

76{70{


99 S'authentifier avec des identifiants par utilisateur93 S'authentifier avec des identifiants par utilisateur

100</h3>94</h3>

101 95 

102N'importe quel utilisateur sur la machine peut lire ce fichier, donc ne stockez pas de clés API ou d'autres identifiants dans les blocs `env`. Transmettez plutôt les identifiants par utilisateur avec l'un de ceux-ci :96N'importe quel utilisateur sur la machine peut lire ce fichier, donc ne stockez pas de clés API ou d'autres identifiants dans les blocs `env`. Transmettez les identifiants par utilisateur avec l'une de ces options à la place :

103 97 

104* [Expansion `${VAR}`](/docs/fr/mcp#environment-variable-expansion-in-mcp-json) pour lire les secrets de l'environnement de chaque utilisateur.98* [Expansion `${VAR}`](/docs/fr/mcp#environment-variable-expansion-in-mcp-json) pour lire les secrets de l'environnement de chaque utilisateur.

105* [OAuth ou en-têtes par utilisateur](/docs/fr/mcp#authenticate-with-remote-mcp-servers) afin que chaque utilisateur s'authentifie en tant que lui-même.99* [OAuth ou en-têtes par utilisateur](/docs/fr/mcp#authenticate-with-remote-mcp-servers) pour que chaque utilisateur s'authentifie en tant que lui-même.

106* [`headersHelper`](/docs/fr/mcp#use-dynamic-headers-for-custom-authentication) pour générer des identifiants au moment de la connexion.100* [`headersHelper`](/docs/fr/mcp#use-dynamic-headers-for-custom-authentication) pour générer des identifiants au moment de la connexion.

107 101 

102<h3 id="servers-passed-with-mcp-config-or-strict-mcp-config">

103 Serveurs transmis avec `--mcp-config` ou `--strict-mcp-config`

104</h3>

105 

106Lorsqu'une session reçoit des serveurs via `--mcp-config` tandis que `managed-mcp.json` est déployé, ce que l'utilisateur voit diffère entre une station de travail et une session cloud :

107 

108* Sur une station de travail, Claude Code se ferme au démarrage avec `You cannot dynamically configure MCP servers when an enterprise MCP config is present`.

109* Dans les [sessions cloud](/docs/fr/claude-code-on-the-web) sur un hôte où le fichier est déployé, comme un [exécuteur auto-hébergé](/docs/fr/self-hosted-environments-configuration#mcp-servers), Claude Code démarre avec les serveurs gérés uniquement et ignore les connecteurs claude.ai et les autres serveurs que l'hôte cloud fournit via `--mcp-config`. Rien dans la session n'indique à l'utilisateur quels serveurs ont été omis. Claude Code les nomme dans un avertissement sur son stderr, qu'un exécuteur auto-hébergé enregistre au niveau de journal `debug`.

110 

111Si un utilisateur transmet `--strict-mcp-config`, Claude Code se ferme au démarrage sur une station de travail et dans une session cloud, car ce drapeau demande de remplacer l'ensemble géré.

112 

113<h3 id="how-allowlists-and-denylists-apply-to-the-managed-set">

114 Comment les listes blanches et les listes noires s'appliquent à l'ensemble géré

115</h3>

116 

117La liste noire peut filtrer davantage les serveurs dans `managed-mcp.json` :

118 

119* `deniedMcpServers` s'applique également aux serveurs gérés, donc un serveur géré qui correspond à une entrée ne se chargera pas.

120* La propre `deniedMcpServers` d'un utilisateur se fusionne à partir de ses paramètres, donc les utilisateurs peuvent bloquer un serveur géré pour eux-mêmes.

121 

122`allowedMcpServers` ne s'applique pas aux serveurs dans `managed-mcp.json`, à une exception près : Claude Code vérifie toujours un serveur dont la définition utilise [l'expansion `${VAR}`](/docs/fr/mcp#environment-variable-expansion-in-mcp-json) par rapport à la liste blanche, car la configuration effective de ce serveur provient de l'environnement de chaque utilisateur plutôt que du fichier seul. Avant la v2.1.259, chaque serveur géré devait passer la liste blanche chaque fois qu'une était définie. Consultez [Comment un serveur est évalué](#how-a-server-is-evaluated) pour savoir quels champs déclenchent la vérification `${VAR}` et l'ordre complet des vérifications.

123 

124Si vous avez utilisé `allowedMcpServers` pour empêcher certains de vos propres serveurs `managed-mcp.json` de se charger, ces serveurs commencent à se charger au premier lancement de chaque utilisateur de la v2.1.259 ou ultérieure, sauf s'ils utilisent l'expansion `${VAR}`, sans invite ni avis : seul `deniedMcpServers` soustrait toujours de ces serveurs. Ajoutez des entrées de liste noire pour eux, ou déployez un `managed-mcp.json` séparé par groupe, avant que vos utilisateurs ne mettent à niveau.

125 

108<h3 id="validate-the-configuration">126<h3 id="validate-the-configuration">

109 Valider la configuration127 Valider la configuration

110</h3>128</h3>

111 129 

112Pour confirmer que le fichier est en vigueur, exécutez deux vérifications sur une machine gérée :130Pour confirmer que le fichier est en vigueur, exécutez deux vérifications sur une machine gérée :

113 131 

1141. `claude mcp list` affiche uniquement les serveurs dans `managed-mcp.json`. Si les propres serveurs d'un utilisateur apparaissent toujours, le fichier n'est pas lu ; vérifiez le chemin et les permissions.1321. `claude mcp list` affiche uniquement les serveurs dans `managed-mcp.json`, plus tous ceux que vous fournissez via `managedMcpServers`. Si les propres serveurs d'un utilisateur apparaissent toujours, le fichier n'est pas lu ; vérifiez le chemin et les permissions.

1152. `claude mcp add --transport http test https://example.com/mcp` échoue avec `Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers`. L'URL n'a pas besoin d'être un vrai serveur, car la vérification de la politique rejette la commande avant que quoi que ce soit ne soit contacté.1332. `claude mcp add --transport http test https://example.com/mcp` échoue avec `Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers`. L'URL n'a pas besoin d'être un serveur réel, car la vérification de la politique rejette la commande avant que quoi que ce soit ne soit contacté.

116 134 

117<h3 id="disable-mcp-entirely">135<h3 id="disable-mcp-entirely">

118 Désactiver MCP entièrement136 Désactiver MCP entièrement

119</h3>137</h3>

120 138 

121Déployez un `managed-mcp.json` contenant une carte de serveurs vide pour bloquer tous les serveurs MCP en dehors des [serveurs en processus que l'application qui a démarré la session enregistre](#exclusive-control-with-managed-mcp-json) :139Déployez un `managed-mcp.json` contenant une carte de serveur vide pour bloquer chaque serveur MCP à part les [serveurs en processus que l'application qui a démarré la session enregistre](#exclusive-control-with-managed-mcp-json) :

122 140 

123```json theme={null}141```json theme={null}

124{142{


126}144}

127```145```

128 146 

129`claude mcp add` échoue avec l'erreur de politique d'entreprise ci-dessus. Les serveurs que les utilisateurs avaient précédemment configurés cessent de se charger la prochaine fois qu'ils démarrent une session, sans avertissement que la politique en est la raison.147`claude mcp add` échoue avec l'erreur de politique d'entreprise ci-dessus. Les serveurs que les utilisateurs avaient précédemment configurés cessent de se charger la prochaine fois qu'ils démarrent une session, sans avertissement que la politique en est la raison. Les serveurs que vous fournissez via `managedMcpServers` se chargent toujours sous une carte vide, donc laissez cette clé non définie également pour désactiver MCP complètement.

130 148 

131<h3 id="allow-claude-ai-connectors-alongside-the-managed-set">149<h3 id="allow-claude-ai-connectors-alongside-the-managed-set">

132 Autoriser les connecteurs claude.ai aux côtés de l'ensemble géré150 Autoriser les connecteurs claude.ai aux côtés de l'ensemble géré


134 152 

135Par défaut, le déploiement de `managed-mcp.json` supprime les [connecteurs claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai) que Claude Code récupère lui-même, y compris les connecteurs qu'un administrateur a configurés pour l'organisation dans la console d'administration claude.ai. Pour charger ces connecteurs aux côtés des serveurs dans `managed-mcp.json`, définissez `"allowAllClaudeAiMcps": true` dans une [source de paramètres gérés](/docs/fr/admin-setup#decide-how-settings-reach-devices).153Par défaut, le déploiement de `managed-mcp.json` supprime les [connecteurs claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai) que Claude Code récupère lui-même, y compris les connecteurs qu'un administrateur a configurés pour l'organisation dans la console d'administration claude.ai. Pour charger ces connecteurs aux côtés des serveurs dans `managed-mcp.json`, définissez `"allowAllClaudeAiMcps": true` dans une [source de paramètres gérés](/docs/fr/admin-setup#decide-how-settings-reach-devices).

136 154 

137Avec le paramètre activé, Claude Code charge les mêmes connecteurs claude.ai qu'il chargerait si `managed-mcp.json` n'était pas déployé. Les [listes blanches et listes noires](#policy-based-control-with-allowlists-and-denylists) s'appliquent toujours à ces connecteurs, vous pouvez donc en bloquer des spécifiques avec `deniedMcpServers`. Le paramètre affecte uniquement les connecteurs claude.ai que Claude Code récupère lui-même ; les serveurs fournis par les plugins restent supprimés.155Avec le paramètre activé, Claude Code charge les mêmes connecteurs claude.ai qu'il chargerait si `managed-mcp.json` n'était pas déployé. Les [listes blanches et les listes noires](#policy-based-control-with-allowlists-and-denylists) s'appliquent toujours à ces connecteurs, donc vous pouvez en bloquer des spécifiques avec `deniedMcpServers`. Le paramètre affecte uniquement les connecteurs claude.ai que Claude Code récupère lui-même ; les serveurs fournis par les plugins restent supprimés.

138 156 

139Les sessions cloud et les sessions locales et SSH de l'application de bureau reçoivent les connecteurs d'une autre manière, décrite dans [Comment les connecteurs atteignent Claude Code](/docs/fr/mcp#how-connectors-reach-claude-code). Un `managed-mcp.json` sur l'hôte qui exécute une session cloud, comme un [hôte d'exécuteur auto-hébergé](/docs/fr/self-hosted-environments-configuration#mcp-servers), supprime les connecteurs de cette session que vous ayez défini `allowAllClaudeAiMcps` ou non. Aucun `managed-mcp.json` n'atteint les connecteurs que l'application de bureau fournit à ses sessions locales et SSH.157Les sessions cloud et les sessions locales et SSH de l'application de bureau reçoivent les connecteurs d'une autre manière, décrite dans [Comment les connecteurs atteignent Claude Code](/docs/fr/mcp#how-connectors-reach-claude-code). Un `managed-mcp.json` sur l'hôte qui exécute une session cloud, comme un [hôte d'exécuteur auto-hébergé](/docs/fr/self-hosted-environments-configuration#mcp-servers), supprime les connecteurs de cette session, que vous définissiez ou non `allowAllClaudeAiMcps`. Aucun `managed-mcp.json` n'atteint les connecteurs que l'application de bureau fournit à ses sessions locales et SSH.

140 158 

141Claude Code lit `allowAllClaudeAiMcps` uniquement à partir des niveaux de politique contrôlés par l'administrateur : paramètres gérés par le serveur, une clé plist déployée par MDM ou une clé de registre HKLM, ou un fichier `managed-settings.json` système. Le placer dans les paramètres utilisateur ou projet n'a aucun effet, donc les utilisateurs ne peuvent pas réactiver les connecteurs que le contrôle exclusif a supprimés.159Claude Code lit `allowAllClaudeAiMcps` uniquement à partir des niveaux de politique contrôlés par l'administrateur : paramètres gérés par le serveur, une clé plist déployée par MDM ou une clé de registre HKLM, ou un fichier `managed-settings.json` système. Le placer dans les paramètres utilisateur ou projet n'a aucun effet, donc les utilisateurs ne peuvent pas réactiver les connecteurs que le contrôle exclusif a supprimés.

142 160 

161<h2 id="provide-servers-through-managed-settings">

162 Fournir des serveurs via les paramètres gérés

163</h2>

164 

165Pour donner à chaque utilisateur un ensemble de serveurs MCP distants sans prendre le contrôle exclusif de MCP, listez-les sous `managedMcpServers` dans une [source de paramètres gérés](/docs/fr/admin-setup#decide-how-settings-reach-devices) : paramètres gérés par le serveur, une [passerelle d'applications Claude](/docs/fr/claude-apps-gateway-config#what-goes-in-cli), un profil MDM ou une politique de registre, ou `managed-settings.json`. Les utilisateurs conservent les serveurs qu'ils ajoutent eux-mêmes et reçoivent les vôtres en plus. Nécessite Claude Code v2.1.259 ou ultérieur. Les clients antérieurs ignorent la clé.

166 

167La valeur est un objet indexé par le nom du serveur. Chaque entrée a la même forme qu'un serveur HTTP ou SSE dans un fichier [`.mcp.json`](/docs/fr/mcp#project-scope) de projet, y compris les membres optionnels `headers` et `oauth` décrits dans [S'authentifier auprès des serveurs MCP distants](/docs/fr/mcp#authenticate-with-remote-mcp-servers). Cet exemple fournit un serveur de recherche auquel chaque utilisateur se connecte avec OAuth, et un serveur d'enregistrements qui envoie un en-tête que votre organisation émet :

168 

169```json theme={null}

170{

171 "managedMcpServers": {

172 "search": {

173 "type": "http",

174 "url": "https://search.example.com/mcp"

175 },

176 "records": {

177 "type": "http",

178 "url": "https://records.example.com/mcp",

179 "headers": {

180 "X-Records-Key": "key-issued-for-all-claude-code-users"

181 }

182 }

183 }

184}

185```

186 

187Quiconque peut lire les paramètres gérés sur une machine, y compris l'utilisateur, peut lire une valeur d'en-tête que vous définissez ici. Utilisez une credential émise pour tout ce public, ou omettez `headers` et laissez chaque utilisateur se connecter avec OAuth.

188 

189<h3 id="what-an-entry-can-contain">

190 Ce qu'une entrée peut contenir

191</h3>

192 

193Claude Code charge une entrée uniquement si elle réussit chaque vérification ci-dessous. Il supprime une entrée qui en échoue une, enregistre un avis que vous pouvez lire avec `/status`, et charge toujours les autres entrées :

194 

195* `type` est `http` ou `sse`. Comme dans `.mcp.json`, `streamable-http` est accepté comme alias pour `http`.

196* `url` est une URL `https://`. Claude Code refuse une URL `http://` simple, y compris une qui pointe sur `localhost`.

197* L'entrée n'a pas de membre `command`, `args`, `env`, ou `headersHelper`, donc un document de paramètres gérés ne nomme jamais un programme à exécuter sur la machine d'un utilisateur.

198* Aucune valeur ne contient de référence `${VAR}`. Claude Code n'étend pas les variables d'environnement dans ces entrées, donc écrivez des valeurs littérales.

199* Le nom du serveur contient uniquement des lettres, des chiffres, des tirets et des traits de soulignement, et aucune clé ou valeur ne contient de caractères de contrôle ou de formatage invisible.

200 

201Claude Desktop a un paramètre géré portant le même nom dont la valeur est un tableau d'une forme d'entrée différente, donc ne copiez pas l'un dans l'autre. Claude Code n'accepte pas la forme de tableau et enregistre un avis au lieu de la charger.

202 

203Une passerelle d'applications Claude exécute les mêmes vérifications au démarrage ; voir [Serveurs MCP dans une politique](/docs/fr/claude-apps-gateway-config#mcp-servers-in-a-policy).

204 

205<h3 id="how-provided-servers-load">

206 Comment les serveurs fournis se chargent

207</h3>

208 

209Ces règles décident ce qui se charge quand un serveur fourni chevauche une autre définition de serveur ou un autre paramètre sur cette page :

210 

211* Un serveur fourni a la priorité sur un serveur portant le même nom dans la portée locale, de projet ou d'utilisateur, et sur un serveur de plugin ou un connecteur claude.ai qui pointe sur la même URL.

212* Si vous déployez également `managed-mcp.json`, Claude Code charge ses serveurs et les serveurs fournis ensemble, et l'entrée du fichier a la priorité quand les deux définissent un nom.

213* Les serveurs fournis continuent de se charger quand [`strictPluginOnlyCustomization`](/docs/fr/settings-reference#strictpluginonlycustomization) verrouille la surface `mcp`.

214* `deniedMcpServers` s'applique aux serveurs fournis, y compris les entrées des propres paramètres d'un utilisateur, donc un utilisateur peut en bloquer un pour lui-même. Les serveurs fournis n'ont besoin d'aucune entrée `allowedMcpServers`.

215 

216Quand vous n'avez pas également déployé `managed-mcp.json`, les drapeaux par exécution conservent leur signification :

217 

218* Un serveur qu'un utilisateur transmet avec `--mcp-config` sous le même nom remplace le serveur fourni pour cette exécution et est vérifié par rapport à `allowedMcpServers`.

219* `--strict-mcp-config` laisse les serveurs fournis de côté ainsi que tous les autres serveurs configurés.

220 

221Avec `managed-mcp.json` déployé, les deux drapeaux se comportent comme [Contrôle exclusif avec managed-mcp.json](#exclusive-control-with-managed-mcp-json) le décrit.

222 

223<h3 id="what-users-can-see-and-change">

224 Ce que les utilisateurs peuvent voir et modifier

225</h3>

226 

227Les utilisateurs ne peuvent pas modifier ou supprimer un serveur fourni :

228 

229* `claude mcp remove` signale que le serveur est fourni par l'organisation.

230* Quand vous n'avez pas également déployé `managed-mcp.json`, une entrée qu'un utilisateur ajoute sous le même nom est enregistrée mais non utilisée tant que la vôtre est présente.

231* Les utilisateurs peuvent toujours désactiver un serveur fourni pour eux-mêmes dans [`/mcp`](/docs/fr/mcp#disable-a-server-without-removing-it), qui liste les serveurs fournis sous **Managed MCPs**.

232 

233`claude mcp get` et `/mcp` affichent l'URL d'un serveur fourni comme son hôte uniquement, par exemple `https://mcp.example.com/…`, et `claude mcp get` affiche les noms de ses en-têtes sans leurs valeurs.

234 

235<h3 id="where-managedmcpservers-applies">

236 Où `managedMcpServers` s'applique

237</h3>

238 

239Claude Code lit `managedMcpServers` à partir de la source gérée qu'il sélectionne sous [Comment Claude Code combine les sources gérées](/docs/fr/managed-settings#how-claude-code-combines-managed-sources). Quand cette source définit [`managedSourcesBehavior`](/docs/fr/settings-reference#managedsourcesbehavior) sur `"merge"`, Claude Code fournit à la place les serveurs de chaque source d'administrateur, et quand deux sources définissent le même nom, l'entrée de la source de rang supérieur s'applique entièrement. Il ne lit jamais la clé à partir du registre HKCU accessible en écriture par l'utilisateur, à partir des [paramètres parents qu'un hôte d'intégration fournit](/docs/fr/managed-settings#parent-settings-from-embedding-hosts), ou à partir des fichiers de paramètres utilisateur, de projet ou locaux, où il supprime la clé avec un avertissement.

240 

241Claude Code ne lit pas la clé dans l'onglet Code de l'application Claude Desktop sur un déploiement tiers ou dans les sessions Cowork de l'application, car Claude Desktop fournit et verrouille les serveurs MCP de ces sessions lui-même. `/status` et `claude doctor` le disent quand vos paramètres gérés portent la clé là.

242 

243<h3 id="when-provided-servers-connect">

244 Quand les serveurs fournis se connectent

245</h3>

246 

247Quand `managedMcpServers` arrive via les paramètres gérés par le serveur, son calendrier suit [Comportement de récupération et de mise en cache](/docs/fr/server-managed-settings#fetch-and-caching-behavior) :

248 

249* Sur une machine avec des paramètres en cache, Claude Code retient la copie en cache de cette clé jusqu'à ce que le serveur confirme les paramètres pour la session, et attend cette confirmation avant de charger les serveurs MCP. Si la confirmation échoue, la session continue sans les serveurs fournis et `/status` dit qu'ils sont retenus.

250* Au premier lancement d'une machine, sans rien en cache encore, une session interactive qui démarre avant l'arrivée des paramètres connecte les serveurs fournis dès qu'ils arrivent, et une exécution `claude -p` qui a déjà commencé peut se terminer sans eux.

251 

252Avec [la connexion à la passerelle](/docs/fr/claude-apps-gateway-config#precedence-with-other-managed-sources), Claude Code charge la politique avant le démarrage de la session, donc aucun des deux cas ne retarde ou ne saute les serveurs fournis.

253 

254Les sessions interactives déjà en cours appliquent vos modifications à la clé :

255 

256* **Ajouter un serveur** : Claude Code le connecte quand les paramètres mis à jour arrivent, sans redémarrage.

257* **Modifier l'entrée d'un serveur** : ces sessions se reconnectent à celui-ci avec la nouvelle définition.

258* **Supprimer un serveur** : une session interactive en cours le déconnecte une fois qu'elle lit les paramètres modifiés. Une exécution non-interactive (`-p`) le conserve jusqu'à ce qu'elle se termine.

259 

143<h2 id="policy-based-control-with-allowlists-and-denylists">260<h2 id="policy-based-control-with-allowlists-and-denylists">

144 Contrôle basé sur les politiques avec listes blanches et listes noires261 Contrôle basé sur les politiques avec listes blanches et listes noires

145</h2>262</h2>

146 263 

147Les listes blanches et les listes noires filtrent les serveurs configurés autorisés à se charger. Ce ne sont pas un registre : un serveur doit toujours être ajouté par un utilisateur, un plugin ou `managed-mcp.json` avant que la liste blanche ou la liste noire ne s'applique à lui. Pour déployer des serveurs aux utilisateurs, utilisez [`managed-mcp.json`](#exclusive-control-with-managed-mcp-json). Les deux listes filtrent également les serveurs transmis avec l'indicateur CLI [`--mcp-config`](/docs/fr/cli-reference#cli-flags), à l'exception des entrées `type: "sdk"` en processus ; `--strict-mcp-config` limite les fichiers de configuration qui se chargent et ne contourne aucune des deux listes.264Les listes blanches et les listes noires filtrent les serveurs configurés autorisés à se charger. Ce ne sont pas un registre : un serveur doit toujours être ajouté par un utilisateur, un plugin ou votre organisation avant que l'une ou l'autre liste ne s'applique à lui.

148 265 

149Pour rendre la liste blanche faisant autorité, définissez `allowedMcpServers` et `allowManagedMcpServersOnly: true` ensemble dans une [source de paramètres gérés](/docs/fr/admin-setup#decide-how-settings-reach-devices), telle que les paramètres gérés par le serveur ou un fichier `managed-settings.json` déployé. [Restreindre la liste blanche aux paramètres gérés uniquement](#restrict-the-allowlist-to-managed-settings-only) montre la configuration. Sans `allowManagedMcpServersOnly`, les listes blanches de chaque source de paramètres fusionnent, y compris le propre `~/.claude/settings.json` d'un utilisateur, donc un utilisateur peut élargir ce que votre liste blanche permet. Les listes noires fusionnent de chaque source indépendamment.266Les serveurs que votre organisation fournit via `managedMcpServers` se chargent sans entrée de liste blanche, et [Comment un serveur est évalué](#how-a-server-is-evaluated) couvre les serveurs `managed-mcp.json`. La liste noire s'applique à tous les serveurs, peu importe d'où ils proviennent, sauf pour les entrées `type: "sdk"` en processus.

267 

268Pour déployer des serveurs aux utilisateurs, utilisez [`managed-mcp.json`](#exclusive-control-with-managed-mcp-json) ou [`managedMcpServers`](#provide-servers-through-managed-settings). Les deux listes filtrent également les serveurs transmis avec l'indicateur CLI [`--mcp-config`](/docs/fr/cli-reference#cli-flags), sauf pour les entrées `type: "sdk"` en processus ; `--strict-mcp-config` limite les fichiers de configuration qui se chargent et ne contourne aucune des deux listes.

269 

270Pour rendre la liste blanche faisant autorité, définissez `allowedMcpServers` et `allowManagedMcpServersOnly: true` ensemble dans une [source de paramètres gérés](/docs/fr/admin-setup#decide-how-settings-reach-devices), comme les paramètres gérés par le serveur ou un fichier `managed-settings.json` déployé. [Restreindre la liste blanche aux paramètres gérés uniquement](#restrict-the-allowlist-to-managed-settings-only) montre la configuration. Sans `allowManagedMcpServersOnly`, les listes blanches de chaque portée de paramètres fusionnent, y compris le propre `~/.claude/settings.json` d'un utilisateur, donc un utilisateur peut élargir ce que votre liste blanche permet. Les listes noires fusionnent de chaque portée indépendamment.

150 271 

151<Note>272<Note>

152 `allowManagedMcpServersOnly` est séparé de `allowManagedPermissionRulesOnly`, qui verrouille uniquement les [règles de permission](/docs/fr/permissions#managed-settings). La définition de cet indicateur n'applique pas la liste blanche MCP.273 `allowManagedMcpServersOnly` est distinct de `allowManagedPermissionRulesOnly`, qui verrouille uniquement les [règles de permission](/docs/fr/permissions#managed-settings). La définition de cet indicateur n'applique pas la liste blanche MCP.

153</Note>274</Note>

154 275 

155<h3 id="match-servers-by-url-command-or-name">276<h3 id="match-servers-by-url-command-or-name">


167Laisser `allowedMcpServers` non défini est différent de le définir sur un tableau vide :288Laisser `allowedMcpServers` non défini est différent de le définir sur un tableau vide :

168 289 

169| Paramètre | Non défini (par défaut) | Tableau vide `[]` | Rempli |290| Paramètre | Non défini (par défaut) | Tableau vide `[]` | Rempli |

170| :------------------ | :-------------------------- | :--------------------- | :------------------------------------------ |291| :------------------ | :-------------------------- | :------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------- |

171| `allowedMcpServers` | Tous les serveurs autorisés | Aucun serveur autorisé | Seuls les serveurs correspondants autorisés |292| `allowedMcpServers` | Tous les serveurs autorisés | Aucun serveur autorisé, à part [les serveurs de l'organisation](#how-a-server-is-evaluated) | Seuls les serveurs correspondants autorisés, à part [les serveurs de l'organisation](#how-a-server-is-evaluated) |

172| `deniedMcpServers` | Aucun serveur bloqué | Aucun serveur bloqué | Serveurs correspondants bloqués |293| `deniedMcpServers` | Aucun serveur bloqué | Aucun serveur bloqué | Serveurs correspondants bloqués |

173 294 

174Voir [Entrées invalides dans les paramètres gérés](/docs/fr/managed-settings#invalid-entries-in-managed-settings) pour savoir ce qui se passe quand une entrée échoue la validation du schéma.295Voir [Entrées invalides dans les paramètres gérés](/docs/fr/managed-settings#invalid-entries-in-managed-settings) pour savoir ce qui se passe quand une entrée échoue la validation du schéma.


179 300 

180La validation `serverName` diffère entre les deux listes :301La validation `serverName` diffère entre les deux listes :

181 302 

182* Dans `deniedMcpServers`, `serverName` accepte n'importe quelle chaîne non vide, donc vous pouvez bloquer les [connecteurs claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai) par leur nom d'affichage. Par exemple, `{ "serverName": "claude.ai Slack" }` bloque le connecteur Slack. Préférez une entrée `serverUrl` quand vous avez besoin que le refus soit robuste aux renommages, ou quand un nom de connecteur entre en collision et gagne un suffixe ` (N)`.303* Dans `deniedMcpServers`, `serverName` accepte n'importe quelle chaîne non vide, vous pouvez donc bloquer les [connecteurs claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai) par leur nom d'affichage. Par exemple, `{ "serverName": "claude.ai Slack" }` bloque le connecteur Slack. Préférez une entrée `serverUrl` quand vous avez besoin que le refus soit robuste aux renommages, ou quand un nom de connecteur entre en collision et gagne un suffixe ` (N)`.

183* Dans `allowedMcpServers`, `serverName` est limité aux lettres, chiffres, traits d'union et traits de soulignement. Utilisez `serverUrl` pour ajouter un connecteur claude.ai à la liste blanche que Claude Code récupère lui-même ; pour les connecteurs qu'un hôte cloud livre aux sessions auto-hébergées, utilisez plutôt les entrées répertoriées sous [Le trafic des connecteurs quitte votre réseau](/docs/fr/self-hosted-environments-deploy#connector-traffic-leaves-your-network).304* Dans `allowedMcpServers`, `serverName` est limité aux lettres, chiffres, traits d'union et traits de soulignement. Utilisez `serverUrl` pour ajouter à la liste blanche un connecteur claude.ai que Claude Code récupère lui-même ; pour les connecteurs qu'un hôte cloud fournit aux sessions auto-hébergées, utilisez plutôt les entrées listées sous [Le trafic des connecteurs quitte votre réseau](/docs/fr/self-hosted-environments-deploy#connector-traffic-leaves-your-network).

184 305 

185Pour désactiver tous les connecteurs claude.ai que Claude Code récupère lui-même, voir [`disableClaudeAiConnectors`](/docs/fr/mcp#disable-claude-ai-connectors).306Pour désactiver tous les connecteurs claude.ai que Claude Code récupère lui-même, voir [`disableClaudeAiConnectors`](/docs/fr/mcp#disable-claude-ai-connectors).

186 307 


190 311 

191Avant de charger un serveur, y compris un serveur de `managed-mcp.json`, Claude Code exécute les trois vérifications ci-dessous dans l'ordre. Il les exécute à nouveau quand un utilisateur reconnecte un serveur ou réactive un serveur désactivé dans `/mcp`. Les serveurs `type: "sdk"` en processus, que [l'application qui a démarré la session enregistre](/docs/fr/mcp#how-connectors-reach-claude-code), ignorent les trois.312Avant de charger un serveur, y compris un serveur de `managed-mcp.json`, Claude Code exécute les trois vérifications ci-dessous dans l'ordre. Il les exécute à nouveau quand un utilisateur reconnecte un serveur ou réactive un serveur désactivé dans `/mcp`. Les serveurs `type: "sdk"` en processus, que [l'application qui a démarré la session enregistre](/docs/fr/mcp#how-connectors-reach-claude-code), ignorent les trois.

192 313 

1931. **Fusionner les listes.** Les entrées de liste blanche et de liste noire de chaque source de paramètres se combinent en une liste blanche et une liste noire, les listes de la source gérée provenant de la [source ou des sources gérées que Claude Code applique](/docs/fr/managed-settings#how-claude-code-combines-managed-sources). Quand `allowManagedMcpServersOnly` est `true`, seule la liste blanche gérée est conservée ; la liste noire fusionne toujours de chaque source.3141. **Fusionner les listes.** Les entrées de liste blanche et de liste noire de chaque portée de paramètres se combinent en une liste blanche et une liste noire, les listes de la portée gérée provenant de la [source ou des sources gérées que Claude Code applique](/docs/fr/managed-settings#how-claude-code-combines-managed-sources). Quand `allowManagedMcpServersOnly` est `true`, seule la liste blanche gérée est conservée ; la liste noire fusionne toujours de chaque portée.

1942. **Vérifier la liste noire.** Un serveur qui correspond à n'importe quelle entrée de liste noire, par URL, commande ou nom, est bloqué. Rien ne remplace une correspondance de liste noire.3152. **Vérifier la liste noire.** Un serveur qui correspond à n'importe quelle entrée de liste noire, par URL, commande ou nom, est bloqué. Rien ne remplace une correspondance de liste noire.

1953. **Vérifier la liste blanche.** Si `allowedMcpServers` n'est défini nulle part, chaque serveur qui a réussi la liste noire se charge. S'il est défini, ce à quoi le serveur doit correspondre dépend de son type, indiqué dans le tableau ci-dessous. Les serveurs intégrés tels que Claude dans Chrome, le serveur `ide` auquel Claude Code se connecte dans un IDE VS Code ou JetBrains en cours d'exécution, et les serveurs que l'interface CLI elle-même configure ignorent cette vérification.3163. **Vérifier la liste blanche.** Si `allowedMcpServers` n'est défini nulle part, tous les serveurs qui ont réussi la liste noire se chargent. S'il est défini, ce que le serveur doit correspondre dépend de son type, montré dans le tableau ci-dessous.

317 

318 Les serveurs de l'organisation ignorent cette vérification : chaque entrée `managedMcpServers`, et toute entrée `managed-mcp.json` dont les valeurs n'utilisent pas d'expansion `${VAR}`. Les serveurs intégrés l'ignorent aussi, comme Claude dans Chrome, le serveur `ide` auquel Claude Code se connecte dans un IDE VS Code ou JetBrains en cours d'exécution, et les serveurs que l'interface CLI elle-même configure.

319 

320 Un serveur `managed-mcp.json` qui utilise l'expansion `${VAR}` dans sa commande, ses arguments, `env`, son URL ou ses en-têtes est toujours vérifié, tout comme tous les serveurs qu'un utilisateur, un plugin, `--mcp-config` ou claude.ai ajoute.

196 321 

197| Type de serveur | Autorisé quand il correspond à |322| Type de serveur | Autorisé quand il correspond |

198| :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------- |323| :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------- |

199| Distant (HTTP ou SSE) | Une entrée `serverUrl`. Une correspondance `serverName` compte uniquement quand la liste blanche ne contient aucune entrée `serverUrl` |324| Distant (HTTP ou SSE) | Une entrée `serverUrl`. Une correspondance `serverName` compte uniquement quand la liste blanche ne contient pas d'entrées `serverUrl` |

200| Stdio | Une entrée `serverCommand`. Une correspondance `serverName` compte uniquement quand la liste blanche ne contient aucune entrée `serverCommand` |325| Stdio | Une entrée `serverCommand`. Une correspondance `serverName` compte uniquement quand la liste blanche ne contient pas d'entrées `serverCommand` |

201 326 

202Trois règles de correspondance s'appliquent dans ces vérifications :327Trois règles de correspondance s'appliquent dans ces vérifications :

203 328 

204* **Les commandes correspondent exactement.** Chaque argument, dans l'ordre. `["npx", "-y", "server"]` ne correspond pas à `["npx", "server"]` ou `["npx", "-y", "server", "--flag"]`.329* **Les commandes correspondent exactement.** Chaque argument, dans l'ordre. `["npx", "-y", "server"]` ne correspond pas à `["npx", "server"]` ou `["npx", "-y", "server", "--flag"]`.

205* **Les valeurs `serverCommand` et `serverUrl` se développent avant la correspondance.** La valeur de la politique et la valeur configurée du serveur passent toutes les deux par la même expansion [`${VAR}` et `${VAR:-default}`](/docs/fr/mcp#environment-variable-expansion-in-mcp-json), donc une entrée écrite comme `["${HOME}/bin/server"]` correspond à une configuration de serveur qui utilise soit la même référence, soit le chemin développé. Sur Windows, référencez une variable d'environnement qui y est définie, telle que `${USERPROFILE}` au lieu de `${HOME}`. Les valeurs `serverName` correspondent littéralement et ne se développent jamais. Les deux côtés lisent des environnements différents ; [Comment les entrées de politique se développent](#how-policy-entries-expand) couvre lesquels, et comment les entrées de liste blanche et de liste noire diffèrent.330* **Les valeurs `serverCommand` et `serverUrl` se développent avant la correspondance.** L'entrée de politique et la valeur configurée du serveur passent toutes les deux par l'expansion [`${VAR}` et `${VAR:-default}`](/docs/fr/mcp#environment-variable-expansion-in-mcp-json), donc une entrée écrite comme `["${HOME}/bin/server"]` correspond à une configuration de serveur qui utilise soit la même référence, soit le chemin développé. Sous Windows, référencez une variable d'environnement qui y est définie, comme `${USERPROFILE}` au lieu de `${HOME}`. Les valeurs `serverName` correspondent littéralement et ne se développent jamais. Les deux côtés lisent des environnements différents ; [Comment les entrées de politique se développent](#how-policy-entries-expand) couvre lesquels, et comment les entrées de liste blanche et de liste noire diffèrent.

206* **Les URL supportent les caractères génériques `*`** n'importe où dans le modèle, y compris le schéma. La correspondance du nom d'hôte est insensible à la casse et ignore un point FQDN final, donc `https://Mcp.Example.com/*` correspond à `https://mcp.example.com/api`. Les chemins restent sensibles à la casse.331* **Les URL supportent les caractères génériques `*`** n'importe où dans le motif, y compris le schéma. La correspondance du nom d'hôte est insensible à la casse et ignore un point FQDN final, donc `https://Mcp.Example.com/*` correspond à `https://mcp.example.com/api`. Les chemins restent sensibles à la casse.

207 332 

208| Modèle | Autorise |333| Motif | Autorise |

209| :-------------------------- | :---------------------------------------------------------------------------------------------- |334| :-------------------------- | :--------------------------------------------------------------------------------------------- |

210| `https://mcp.example.com/*` | Tous les chemins sur un domaine spécifique |335| `https://mcp.example.com/*` | Tous les chemins sur un domaine spécifique |

211| `https://mcp.example.com` | Aussi tous les chemins sur ce domaine. Un modèle sans chemin correspond à n'importe quel chemin |336| `https://mcp.example.com` | Aussi tous les chemins sur ce domaine. Un motif sans chemin correspond à n'importe quel chemin |

212| `https://*.example.com/*` | N'importe quel sous-domaine de `example.com` |337| `https://*.example.com/*` | N'importe quel sous-domaine de `example.com` |

213| `http://localhost:*/*` | N'importe quel port sur localhost |338| `http://localhost:*/*` | N'importe quel port sur localhost |

214| `*://mcp.example.com/*` | N'importe quel schéma vers un domaine spécifique |339| `*://mcp.example.com/*` | N'importe quel schéma vers un domaine spécifique |


217 Comment les entrées de politique se développent342 Comment les entrées de politique se développent

218</h4>343</h4>

219 344 

220La valeur configurée du serveur se développe à partir de l'environnement de processus en direct, comme le reste de `.mcp.json`. Une entrée de politique se développe à partir d'un environnement épinglé à la place, donc une variable définie par un fichier de paramètres de projet ou d'utilisateur ne peut pas changer ce qu'une entrée de liste blanche signifie. Parce qu'une entrée de politique dépend toujours de la valeur du shell de lancement pour toute variable qu'elle référence, utilisez des URL et des commandes littérales pour les entrées sur lesquelles vous comptez pour l'application.345La valeur configurée du serveur se développe à partir de l'environnement de processus en direct, comme le reste de `.mcp.json`. Une entrée de politique se développe à partir d'un environnement épinglé à la place, donc une variable définie par un projet ou un fichier de paramètres utilisateur ne peut pas changer ce qu'une entrée de liste blanche signifie. Parce qu'une entrée de politique dépend toujours de la valeur du shell de lancement pour toute variable qu'elle référence, utilisez des URL et des commandes littérales pour les entrées sur lesquelles vous comptez pour l'application.

221 346 

222| Liste d'entrées | Se développe à partir de | Expansion qui changerait le schéma, l'hôte ou la portée du chemin d'une entrée d'URL |347| Liste d'entrées | Se développe à partir de | Expansion qui changerait le schéma, l'hôte ou la portée du chemin d'une entrée URL |

223| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ |348| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |

224| `allowedMcpServers` | L'environnement avec lequel Claude Code a démarré, plus les valeurs `env` des paramètres gérés | Claude Code ignore l'entrée |349| `allowedMcpServers` | L'environnement avec lequel Claude Code a démarré, plus les valeurs `env` des paramètres gérés | Claude Code ignore l'entrée |

225| `deniedMcpServers` | Le même, et une variable sans valeur de démarrage et sans `:-default` se remplit à partir des fichiers de paramètres en dehors du référentiel, tels que les paramètres utilisateur ou gérés, qui n'élargissent jamais ce que l'entrée correspond | L'entrée correspond toujours |350| `deniedMcpServers` | Le même, et une variable sans valeur de démarrage et sans `:-default` se remplit à partir des fichiers de paramètres en dehors du référentiel, comme les paramètres utilisateur ou gérés, qui élargissent uniquement ce que l'entrée correspond | L'entrée correspond toujours |

226 351 

227Nécessite Claude Code v2.1.219 ou ultérieur.352Nécessite Claude Code v2.1.219 ou ultérieur.

228 353 


250}375}

251```376```

252 377 

253* **Ligne 3** : la première entrée `serverUrl`. Une fois qu'elle existe, chaque serveur distant doit correspondre à un modèle d'URL, donc un utilisateur ne peut pas obtenir un serveur distant non répertorié en lui donnant un nom autorisé.378* **Ligne 3** : la première entrée `serverUrl`. Une fois qu'elle existe, chaque serveur distant doit correspondre à un motif d'URL, donc un utilisateur ne peut pas obtenir un serveur distant non listé en lui donnant un nom autorisé.

254* **Ligne 5** : la première entrée `serverCommand`. Même effet pour les serveurs stdio, donc chaque serveur local doit correspondre exactement à une commande répertoriée.379* **Ligne 5** : la première entrée `serverCommand`. Même effet pour les serveurs stdio, donc chaque serveur local doit correspondre exactement à une commande listée.

255* **Ligne 11** : une entrée `serverName` dans la liste noire. Les entrées de liste noire s'appliquent toujours, donc n'importe quel serveur nommé `dangerous-server` est bloqué indépendamment de son URL ou de sa commande.380* **Ligne 11** : une entrée `serverName` dans la liste noire. Les entrées de liste noire s'appliquent toujours, donc n'importe quel serveur nommé `dangerous-server` est bloqué indépendamment de son URL ou de sa commande.

256 381 

257Une entrée `serverName` dans cette liste blanche ne correspondrait jamais à rien, car les deux types de transport ont déjà des entrées plus strictes.382Une entrée `serverName` dans cette liste blanche ne correspondrait jamais à rien, puisque les deux types de transport ont déjà des entrées plus strictes.

258 383 

259Les accordéons ci-dessous parcourent la façon dont un serveur est évalué par rapport à d'autres combinaisons de listes blanches et de listes noires.384Les accordéons ci-dessous parcourent la façon dont un serveur est évalué par rapport à d'autres combinaisons de liste blanche et de liste noire.

260 385 

261<Accordion title="Liste blanche URL uniquement">386<Accordion title="Liste blanche URL uniquement">

262 ```json theme={null}387 ```json theme={null}


270 395 

271 | Serveur | Résultat |396 | Serveur | Résultat |

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

273 | Serveur HTTP à `https://mcp.example.com/api` | Autorisé : correspond au modèle d'URL |398 | Serveur HTTP à `https://mcp.example.com/api` | Autorisé : correspond au motif d'URL |

274 | Serveur HTTP à `https://api.internal.example.com/mcp` | Autorisé : correspond au sous-domaine générique |399 | Serveur HTTP à `https://api.internal.example.com/mcp` | Autorisé : correspond au sous-domaine générique |

275 | Serveur HTTP à `https://external.example.com/mcp` | Bloqué : ne correspond à aucun modèle d'URL |400 | Serveur HTTP à `https://external.example.com/mcp` | Bloqué : ne correspond à aucun motif d'URL |

276 | Serveur stdio avec n'importe quelle commande | Bloqué : aucune entrée de nom ou de commande pour correspondre |401 | Serveur stdio avec n'importe quelle commande | Bloqué : pas d'entrées de nom ou de commande pour correspondre |

277</Accordion>402</Accordion>

278 403 

279<Accordion title="Liste blanche commande uniquement">404<Accordion title="Liste blanche commande uniquement">


289 | :----------------------------------------------------- | :---------------------------------------------- |414 | :----------------------------------------------------- | :---------------------------------------------- |

290 | Serveur stdio avec `["npx", "-y", "approved-package"]` | Autorisé : correspond à la commande |415 | Serveur stdio avec `["npx", "-y", "approved-package"]` | Autorisé : correspond à la commande |

291 | Serveur stdio avec `["node", "server.js"]` | Bloqué : ne correspond pas à la commande |416 | Serveur stdio avec `["node", "server.js"]` | Bloqué : ne correspond pas à la commande |

292 | Serveur HTTP nommé `my-api` | Bloqué : aucune entrée de nom pour correspondre |417 | Serveur HTTP nommé `my-api` | Bloqué : pas d'entrées de nom pour correspondre |

293</Accordion>418</Accordion>

294 419 

295<Accordion title="Liste blanche mixte nom et commande">420<Accordion title="Liste blanche mixte nom et commande">


322 ```447 ```

323 448 

324 | Serveur | Résultat |449 | Serveur | Résultat |

325 | :----------------------------------------------------------------- | :---------------------------------------- |450 | :----------------------------------------------------------------- | :----------------------------------------- |

326 | Serveur stdio nommé `github` avec n'importe quelle commande | Autorisé : aucune restriction de commande |451 | Serveur stdio nommé `github` avec n'importe quelle commande | Autorisé : pas de restrictions de commande |

327 | Serveur stdio nommé `internal-tool` avec n'importe quelle commande | Autorisé : aucune restriction de commande |452 | Serveur stdio nommé `internal-tool` avec n'importe quelle commande | Autorisé : pas de restrictions de commande |

328 | Serveur HTTP nommé `github` | Autorisé : correspond au nom |453 | Serveur HTTP nommé `github` | Autorisé : correspond au nom |

329 | N'importe quel serveur nommé `other` | Bloqué : le nom ne correspond pas |454 | N'importe quel serveur nommé `other` | Bloqué : le nom ne correspond pas |

330</Accordion>455</Accordion>


342 ```467 ```

343 468 

344 | Serveur | Résultat |469 | Serveur | Résultat |

345 | :----------------------------------------------- | :---------------------------------------------------------------------------------------------- |470 | :----------------------------------------------- | :------------------------------------------------------------------------------------------ |

346 | Serveur HTTP à `https://mcp.example.com/api` | Autorisé : correspond au modèle d'URL de la liste blanche, aucune correspondance de liste noire |471 | Serveur HTTP à `https://mcp.example.com/api` | Autorisé : correspond au motif d'URL de liste blanche, pas de correspondance de liste noire |

347 | Serveur HTTP à `https://staging.example.com/api` | Bloqué : correspond aux deux, mais la liste noire a la priorité |472 | Serveur HTTP à `https://staging.example.com/api` | Bloqué : correspond aux deux, mais la liste noire a la priorité |

348 | Serveur HTTP à `https://other.com/mcp` | Bloqué : ne correspond pas à la liste blanche |473 | Serveur HTTP à `https://other.com/mcp` | Bloqué : ne correspond pas à la liste blanche |

349</Accordion>474</Accordion>


364}489}

365```490```

366 491 

367Quand `allowManagedMcpServersOnly` est `true`, les listes blanches des paramètres utilisateur, projet et local sont ignorées. La liste noire fusionne toujours de toutes les sources, donc les utilisateurs peuvent toujours bloquer les serveurs pour eux-mêmes.492Quand `allowManagedMcpServersOnly` est `true`, les listes blanches des paramètres utilisateur, projet et locaux sont ignorées. La liste noire fusionne toujours de chaque portée de paramètres, donc les utilisateurs peuvent toujours bloquer les serveurs pour eux-mêmes.

368 493 

369<h2 id="how-restrictions-appear-to-users">494<h2 id="how-restrictions-appear-to-users">

370 Comment les restrictions apparaissent aux utilisateurs495 Comment les restrictions apparaissent aux utilisateurs


373Pour voir ce que les utilisateurs voient au démarrage quand `managed-mcp.json` est déployé et que la session a également des serveurs `--mcp-config`, consultez [Contrôle exclusif avec managed-mcp.json](#exclusive-control-with-managed-mcp-json). Utilisez ce tableau pour reconnaître les autres rapports et pour indiquer aux utilisateurs à quoi s'attendre avant de déployer une modification :498Pour voir ce que les utilisateurs voient au démarrage quand `managed-mcp.json` est déployé et que la session a également des serveurs `--mcp-config`, consultez [Contrôle exclusif avec managed-mcp.json](#exclusive-control-with-managed-mcp-json). Utilisez ce tableau pour reconnaître les autres rapports et pour indiquer aux utilisateurs à quoi s'attendre avant de déployer une modification :

374 499 

375| Restriction | Ce que l'utilisateur voit |500| Restriction | Ce que l'utilisateur voit |

376| :------------------------------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------- |501| :-------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------- |

377| `managed-mcp.json` est présent et l'utilisateur exécute `claude mcp add` | `Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers` |502| `managed-mcp.json` est présent et l'utilisateur exécute `claude mcp add` | `Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers` |

378| Le serveur est sur une liste noire et l'utilisateur exécute `claude mcp add` | `Cannot add MCP server "<name>": server is explicitly blocked by enterprise policy` |503| Le serveur est sur une liste de blocage et l'utilisateur exécute `claude mcp add` | `Cannot add MCP server "<name>": server is explicitly blocked by enterprise policy` |

379| Le serveur n'est pas sur la liste blanche et l'utilisateur exécute `claude mcp add` | `Cannot add MCP server "<name>": not allowed by enterprise policy` |504| Le serveur n'est pas sur la liste d'autorisation et l'utilisateur exécute `claude mcp add` | `Cannot add MCP server "<name>": not allowed by enterprise policy` |

505| L'utilisateur exécute `claude mcp remove` sur un serveur de `managedMcpServers` | `MCP server "<name>" is provided by your organization (managed settings) and cannot be removed locally.` |

380| Un serveur précédemment configuré est maintenant bloqué par la politique | Le serveur disparaît silencieusement de `/mcp` et `claude mcp list` sans avertissement |506| Un serveur précédemment configuré est maintenant bloqué par la politique | Le serveur disparaît silencieusement de `/mcp` et `claude mcp list` sans avertissement |

381| Un serveur devient bloqué pendant qu'une session est en cours, et l'utilisateur sélectionne **Reconnect** ou l'active à nouveau dans `/mcp` | [`MCP server <name> is blocked by enterprise managed policy`](/docs/fr/errors#mcp-server-is-blocked-by-enterprise-managed-policy) |507| Un serveur est bloqué pendant qu'une session est en cours d'exécution, et l'utilisateur sélectionne **Reconnect** ou l'active à nouveau dans `/mcp` | [`MCP server <name> is blocked by enterprise managed policy`](/docs/fr/errors#mcp-server-is-blocked-by-enterprise-managed-policy) |

382 508 

383Quand un serveur disparaît silencieusement, l'utilisateur n'obtient aucun signal que la politique est la raison, donc informez les utilisateurs affectés des serveurs bloqués quand vous déployez une nouvelle restriction.509Quand un serveur disparaît silencieusement, l'utilisateur ne reçoit aucun signal indiquant que la politique en est la raison, alors informez les utilisateurs affectés des serveurs bloqués quand vous déployez une nouvelle restriction.

384 510 

385<h2 id="monitor-mcp-usage">511<h2 id="monitor-mcp-usage">

386 Surveiller l'utilisation de MCP512 Surveiller l'utilisation de MCP


392 Résumé de la configuration518 Résumé de la configuration

393</h2>519</h2>

394 520 

395Chaque fichier et paramètre que cette page couvre, ce qu'il contrôle et comment le livrer :521Chaque fichier et paramètre couvert par cette page, ce qu'il contrôle et comment le livrer :

396 522 

397| Surface | Ce qu'il contrôle | Où il se trouve | Comment le livrer |523| Surface | Ce qu'il contrôle | Où il se trouve | Comment le livrer |

398| :--------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |524| :--------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

399| `managed-mcp.json` | Ensemble de serveurs fixe, contrôle exclusif | Chemin système : `/Library/Application Support/ClaudeCode/`, `/etc/claude-code/`, ou `C:\Program Files\ClaudeCode\` | MDM, GPO, gestion de flotte, ou tout processus avec privilèges d'administrateur. Ne peut pas être défini via les paramètres gérés par le serveur |525| `managed-mcp.json` | Ensemble de serveurs fixe, contrôle exclusif | Chemin système : `/Library/Application Support/ClaudeCode/`, `/etc/claude-code/`, ou `C:\Program Files\ClaudeCode\` | MDM, GPO, gestion de flotte, ou tout processus disposant de privilèges administrateur. Ne peut pas être défini via les paramètres gérés par le serveur |

400| `allowedMcpServers` | Liste blanche des serveurs autorisés | N'importe quel [paramètre de paramètres](/docs/fr/settings#where-settings-live) ; Claude Code fusionne les listes de chaque portée sauf si `allowManagedMcpServersOnly` est défini, et prend la liste de la portée gérée à partir de la [source gérée unique qu'il sélectionne](/docs/fr/managed-settings#precedence-within-the-managed-tier) ou [compose](/docs/fr/managed-settings#compose-every-managed-source) | Pour l'application, une [source de paramètres gérés](/docs/fr/admin-setup#decide-how-settings-reach-devices) : paramètres gérés par le serveur, `managed-settings.json`, profil MDM, ou registre |526| `managedMcpServers` | Serveurs distants fournis à chaque utilisateur aux côtés des leurs | Sources de paramètres gérés uniquement ; le paramètre n'a aucun effet ailleurs | Une [source de paramètres gérés](/docs/fr/admin-setup#decide-how-settings-reach-devices) : paramètres gérés par le serveur, une politique de passerelle, `managed-settings.json`, profil MDM, ou registre HKLM |

401| `deniedMcpServers` | Liste noire des serveurs bloqués | N'importe quel paramètre de paramètres ; Claude Code fusionne les listes de chaque portée, et entre les sources gérées comme [comment Claude Code combine les sources gérées](/docs/fr/managed-settings#how-claude-code-combines-managed-sources) le décrit | Identique à `allowedMcpServers` |527| `allowedMcpServers` | Liste d'autorisation des serveurs autorisés | N'importe quel [scope de paramètres](/docs/fr/settings#where-settings-live) ; Claude Code fusionne les listes de chaque scope sauf si `allowManagedMcpServersOnly` est défini, et prend la liste du scope géré à partir de la [source gérée qu'il sélectionne](/docs/fr/managed-settings#precedence-within-the-managed-tier) ou [compose](/docs/fr/managed-settings#compose-every-managed-source) | Pour l'application, une [source de paramètres gérés](/docs/fr/admin-setup#decide-how-settings-reach-devices) : paramètres gérés par le serveur, `managed-settings.json`, profil MDM, ou registre |

402| `allowManagedMcpServersOnly` | Verrouille la liste blanche aux sources gérées uniquement | Sources de paramètres gérés uniquement ; le paramètre n'a aucun effet ailleurs | Identique à `allowedMcpServers` |528| `deniedMcpServers` | Liste de refus des serveurs bloqués | N'importe quel scope de paramètres ; Claude Code fusionne les listes de chaque scope, et entre les sources gérées comme [la façon dont Claude Code combine les sources gérées](/docs/fr/managed-settings#how-claude-code-combines-managed-sources) le décrit | Identique à `allowedMcpServers` |

529| `allowManagedMcpServersOnly` | Verrouille la liste d'autorisation aux sources gérées uniquement | Sources de paramètres gérés uniquement ; le paramètre n'a aucun effet ailleurs | Identique à `allowedMcpServers` |

403| `allowAllClaudeAiMcps` | Charge les connecteurs claude.ai que Claude Code récupère lui-même aux côtés de `managed-mcp.json`. [Un `managed-mcp.json` sur l'hôte qui exécute une session cloud supprime toujours les connecteurs de cette session](#allow-claude-ai-connectors-alongside-the-managed-set) | Sources de paramètres gérés uniquement ; le paramètre n'a aucun effet ailleurs | Identique à `allowedMcpServers` |530| `allowAllClaudeAiMcps` | Charge les connecteurs claude.ai que Claude Code récupère lui-même aux côtés de `managed-mcp.json`. [Un `managed-mcp.json` sur l'hôte qui exécute une session cloud supprime toujours les connecteurs de cette session](#allow-claude-ai-connectors-alongside-the-managed-set) | Sources de paramètres gérés uniquement ; le paramètre n'a aucun effet ailleurs | Identique à `allowedMcpServers` |

404 531 

405<h2 id="related-resources">532<h2 id="related-resources">

managed-settings.md +445 −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éployer les paramètres gérés

6 

7> Déployez les paramètres gérés sur la machine de chaque développeur : mécanismes de livraison par système d'exploitation, comment Claude Code combine les sources gérées, et comment vérifier l'application.

8 

9Les paramètres gérés sont les paramètres que votre organisation déploie sur la machine de chaque développeur. Claude Code les applique au-dessus de tous les autres niveaux, donc aucune valeur utilisateur, projet, locale ou `--settings` ne peut les remplacer, à l'exception de quelques [exceptions sensibles à la sécurité](/docs/fr/settings#exceptions-to-managed-settings-precedence) où une valeur plus stricte d'un niveau inférieur compte toujours.

10 

11Cette page s'adresse à l'administrateur qui déploie les paramètres gérés ou qui débogue pourquoi l'un d'eux ne s'applique pas. Pour décider ce qu'il faut appliquer, commencez par le tableau [Décider ce qu'il faut appliquer](/docs/fr/admin-setup#decide-what-to-enforce). Pour le chemin de la console claude.ai, consultez [Paramètres gérés par le serveur](/docs/fr/server-managed-settings). Pour savoir dans quel fichier les propres valeurs d'un développeur vont, consultez [Paramètres](/docs/fr/settings).

12 

13<h2 id="deploy-a-managed-settings-file">

14 Déployer un fichier de paramètres gérés

15</h2>

16 

17C'est le moyen le plus rapide de mettre une politique sur chaque machine : un fichier `managed-settings.json`. Si vous n'avez pas encore choisi comment livrer les paramètres gérés, ou si vos appareils sont sous MDM ou si les développeurs exécutent des sessions cloud, lisez d'abord [Choisir un mécanisme de livraison](#choose-a-delivery-mechanism).

18 

19<Steps>

20 <Step title="Écrire managed-settings.json">

21 Écrivez un `managed-settings.json` qui contient les clés que vous avez décidé d'appliquer, dans la même forme JSON que `settings.json`. Le tableau [Décider ce qu'il faut appliquer](/docs/fr/admin-setup#decide-what-to-enforce) énumère les clés derrière chaque contrôle, et chaque entrée dans la [référence des paramètres](/docs/fr/settings-reference) indique si une source gérée peut la définir. Ce fichier bloque deux lectures de fichiers, désactive le mode de contournement, et fait que Claude Code ignore les règles de permission des fichiers utilisateur, projet et local et de `--allowedTools` :

22 

23 ```json managed-settings.json theme={null}

24 {

25 "permissions": {

26 "deny": [

27 "Read(./.env)",

28 "Read(./secrets/**)"

29 ],

30 "disableBypassPermissionsMode": "disable"

31 },

32 "allowManagedPermissionRulesOnly": true

33 }

34 ```

35 

36 Pour un exemple plus complet qui montre la forme de plus de clés gérées, y compris la méthode de connexion, les modèles, les serveurs MCP et les places de marché, consultez [Les paramètres gérés d'une organisation](/docs/fr/settings-example#an-organizations-managed-settings).

37 </Step>

38 

39 <Step title="Placer le fichier sur chaque machine">

40 Enregistrez le fichier sous le nom `managed-settings.json` dans le répertoire système du système d'exploitation, en utilisant les outils que vous utilisez déjà pour placer des fichiers sur votre parc :

41 

42 * **macOS** : `/Library/Application Support/ClaudeCode/managed-settings.json`

43 * **Linux et WSL** : `/etc/claude-code/managed-settings.json`

44 * **Windows** : `C:\Program Files\ClaudeCode\managed-settings.json`

45 </Step>

46 

47 <Step title="Confirmer que la politique a été appliquée">

48 Sur une machine, exécutez `/status` dans Claude Code. La ligne `Setting sources` affiche `Enterprise managed settings (file)`. Déployez sur le reste du parc après cela ; [Vérifier qu'une politique est en vigueur](#check-that-a-policy-is-in-force) couvre ce qu'il faut regarder quand la ligne est manquante.

49 </Step>

50</Steps>

51 

52<span id="managed-settings-delivery" />

53 

54<span id="delivery-mechanisms" />

55 

56<h2 id="choose-a-delivery-mechanism">

57 Choisir un mécanisme de livraison

58</h2>

59 

60Le fichier dans les étapes ci-dessus est l'un des quatre moyens de mettre les paramètres gérés sur une machine. Chaque mécanisme porte les mêmes clés de politique qu'un fichier `settings.json`, donc la [référence des paramètres](/docs/fr/settings-reference) s'applique à tous. Quelques clés sont liées à des sources particulières, et la ligne Scope de chaque entrée indique lesquelles :

61 

62* **Contrôles de livraison** : [`policyHelper`](/docs/fr/settings-reference#policyhelper), [`wslInheritsWindowsSettings`](/docs/fr/settings-reference#wslinheritswindowssettings), et [`managedSourcesBehavior`](/docs/fr/settings-reference#managedsourcesbehavior)

63* **Clés de connexion à la passerelle** : [`forceLoginGatewayUrl`](/docs/fr/settings-reference#forcelogingatewayurl) et la valeur `"gateway"` de [`forceLoginMethod`](/docs/fr/settings-reference#forceloginmethod)

64 

65Un fichier de paramètres gérés, un profil MDM, ou la console claude.ai applique une politique à tous ceux qu'il atteint. Pour donner à un groupe de développeurs une politique différente, déployez un fichier ou un profil différent à ce groupe ; la console claude.ai [ne peut pas encore cibler un groupe](/docs/fr/server-managed-settings#current-limitations), tandis qu'une [passerelle d'applications Claude](/docs/fr/claude-apps-gateway) auto-hébergée livre les paramètres gérés par groupe IdP.

66 

67Quand plus d'un mécanisme livre une politique à la même machine, Claude Code utilise par défaut l'un et ignore les autres. [Comment Claude Code combine les sources gérées](#how-claude-code-combines-managed-sources) donne l'ordre et l'opt-in qui s'applique à chaque source.

68 

69Les lignes MDM et fichier sont ensemble appelées paramètres gérés par le point de terminaison, car la politique est stockée sur l'appareil du développeur, par opposition à la ligne gérée par le serveur, où Claude Code la récupère.

70 

71Choisissez un mécanisme selon la façon dont vous gérez déjà les appareils, en utilisant le tableau ci-dessous.

72 

73| Mécanisme | Comment vous le livrez | Quand Claude Code le lit | Utilisez-le quand |

74| :------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------ |

75| [Paramètres gérés par le serveur](/docs/fr/server-managed-settings) | Dans la console d'administration claude.ai, ou sur une [passerelle d'applications Claude](/docs/fr/claude-apps-gateway) auto-hébergée | Récupérés au démarrage et interrogés toutes les heures ; consultez [les modifications qui nécessitent une approbation](#where-and-when-a-policy-applies) | Vous voulez un seul endroit pour changer la politique pour une organisation claude.ai sans toucher à chaque machine |

76| Politique MDM ou au niveau du système d'exploitation | Comme un profil de configuration macOS ou une valeur de registre Windows `HKLM`, via Jamf, Intune, Group Policy, ou un outil similaire ; consultez [où chaque mécanisme stocke la politique](#where-each-mechanism-stores-the-policy) | Lus au démarrage et vérifiés pour les modifications toutes les 30 minutes | Vous gérez déjà les appareils avec MDM ou Group Policy |

77| Basé sur fichier | Comme `managed-settings.json` dans un répertoire système sur chaque machine ; consultez [où chaque mécanisme stocke la politique](#where-each-mechanism-stores-the-policy) | Lus au démarrage et rechargés quand un fichier change | Machines sans MDM, hôtes Linux, ou images que vous construisez vous-même |

78| Registre HKCU, Windows et WSL | Comme une valeur de registre Windows `HKCU` ; consultez [où chaque mécanisme stocke la politique](#where-each-mechanism-stores-the-policy) | Lus au démarrage et vérifiés pour les modifications toutes les 30 minutes ; Claude Code ne l'utilise que quand aucune autre source gérée ne livre une clé de politique et aucun [paramètre parent fourni par l'hôte](#let-an-embedding-host-add-policy) ne fournit une clé restrictive | Vous ne pouvez pas écrire la clé au niveau de la machine `HKLM` |

79 

80Les modèles de démarrage pour Jamf, Iru, Intune et Group Policy se trouvent dans le [référentiel d'exemples MDM](https://github.com/anthropics/claude-code/tree/main/examples/mdm).

81 

82Pour les serveurs MCP gérés, que vous déployez aux côtés de l'un de ceux-ci via `managed-mcp.json` ou que vous fournissez via la clé [`managedMcpServers`](/docs/fr/settings-reference#managedmcpservers), consultez [Configuration MCP gérée](/docs/fr/managed-mcp).

83 

84<h3 id="where-and-when-a-policy-applies">

85 Où et quand une politique s'applique

86</h3>

87 

88Une politique déployée atteint les sessions du développeur comme suit :

89 

90* **Surfaces** : sur la machine du développeur, le terminal, les extensions VS Code et JetBrains, l'onglet Code de l'application de bureau, et les sessions [Agent SDK](/docs/fr/agent-sdk/typescript) lisent toutes ces sources. Les sessions Agent SDK chargent les paramètres gérés même quand `settingSources` exclut les fichiers utilisateur, projet et local.

91* **Sessions cloud** : une session dans un environnement hébergé par Anthropic ne lit pas un profil MDM ou un fichier d'appareil, donc la politique pour cela doit provenir des paramètres gérés par le serveur. Une session dans un [environnement auto-hébergé](/docs/fr/self-hosted-environments) lit également le fichier de paramètres gérés dans son image de runner, par défaut uniquement quand les paramètres gérés par le serveur ne livrent aucune clé de politique, à l'exception des [clés que Claude Code lit de chaque source d'administration](#keys-read-from-every-admin-source). [Comment Claude Code combine les sources gérées](#how-claude-code-combines-managed-sources) couvre l'opt-in qui s'applique aux deux.

92* **Sessions Cowork** : [Cowork](https://claude.com/docs/cowork/overview) dans l'application Claude Desktop exécute ses sessions sur Claude Code. Dans une session Cowork, Claude Code ne récupère jamais les paramètres gérés par le serveur de la console d'administration claude.ai, même quand l'utilisateur se connecte avec un compte Team ou Enterprise, donc la politique qui s'applique dépend de l'endroit où la session s'exécute :

93 

94 * **Sur la machine de l'utilisateur** : par défaut, Claude Code dans une session Cowork lit la politique MDM ou au niveau du système d'exploitation et le fichier de paramètres gérés sur cet appareil, donc déployez la politique là.

95 * **Dans un sandbox VM complet** : quand votre configuration gérée Claude Desktop définit [`requireCoworkFullVmSandbox`](https://claude.com/docs/third-party/claude-desktop/configuration#requirecoworkfullvmsandbox), Claude Code s'exécute à l'intérieur d'une machine virtuelle où la politique MDM de l'appareil et le fichier de paramètres gérés ne sont pas présents.

96 * **Sessions Cowork distantes** : celles-ci s'exécutent sur des machines virtuelles gérées par Anthropic, où Claude Code n'a pas de politique d'appareil à lire.

97 

98 Le tableau [couverture de surface](/docs/fr/model-config#surface-coverage) compare Cowork avec les autres surfaces.

99* **Sessions en cours d'exécution** : la plupart des modifications atteignent une session en cours d'exécution selon le calendrier du tableau de [mécanisme de livraison](#choose-a-delivery-mechanism), sans redémarrage.

100 * Les modifications apportées à [`forceRemoteSettingsRefresh`](/docs/fr/settings-reference#forceremotesettingsrefresh), [`requiredMinimumVersion`](/docs/fr/settings-reference#requiredminimumversion), et [certaines clés modifiables par l'utilisateur](/docs/fr/settings#when-edits-take-effect) prennent effet au prochain démarrage de session.

101 * Une entrée [`policyHelper`](/docs/fr/settings-reference#policyhelper) nouvelle ou modifiée prend effet au prochain lancement. Si les paramètres gérés par le serveur masquent l'assistant à ce lancement, l'assistant s'exécute dès qu'une récupération signale que ces paramètres ont été supprimés.

102* **Modifications qui nécessitent une approbation** : à part les [mises à jour qui attendent le prochain lancement](/docs/fr/server-managed-settings#fetch-and-caching-behavior), une modification gérée par le serveur d'un paramètre qui [nécessite une approbation](/docs/fr/server-managed-settings#security-approval-dialogs), comme un hook ou une variable `env`, attend que le développeur accepte la boîte de dialogue dans une session interactive, et s'applique pour l'exécution actuelle dans une session qu'une extension IDE ou l'Agent SDK héberge. Les autres modifications gérées par le serveur s'appliquent au prochain sondage.

103* **Sessions longue durée** : une session laissée ouverte pendant des semaines peut toujours être en retard sur un déploiement. [`requiredMinimumVersion`](/docs/fr/settings-reference#requiredminimumversion) bloque un binaire obsolète de démarrer et ne termine pas une session qui s'exécute déjà.

104 

105<span id="format-the-policy-for-each-platform" />

106 

107<h3 id="where-each-mechanism-stores-the-policy">

108 Où chaque mécanisme stocke la politique

109</h3>

110 

111Les clés sont les mêmes partout, mais chaque mécanisme les stocke dans un endroit et une forme différents :

112 

113* **Gérée par le serveur** : les serveurs d'Anthropic, ou votre passerelle, détiennent la politique. Claude Code conserve un cache local qu'il applique au démarrage et [remplace à chaque récupération réussie](/docs/fr/server-managed-settings#security-considerations).

114* **Profil de configuration macOS** : le domaine des préférences gérées `com.anthropic.claudecode`. Utilisez les mêmes clés de niveau supérieur que `managed-settings.json`, avec les paramètres imbriqués comme dictionnaires et les listes comme tableaux plist.

115* **Registre Windows HKLM** : le JSON comme valeur `REG_SZ` ou `REG_EXPAND_SZ` nommée `Settings` sous `HKLM\SOFTWARE\Policies\ClaudeCode`.

116* **Basé sur fichier** : `managed-settings.json`, un répertoire optionnel `managed-settings.d/`, et `managed-mcp.json` dans le répertoire système : `/Library/Application Support/ClaudeCode/` sur macOS, `/etc/claude-code/` sur Linux et WSL, et `C:\Program Files\ClaudeCode\` sur Windows. Claude Code ne lit pas le chemin Windows hérité `C:\ProgramData\ClaudeCode\managed-settings.json`.

117* **Registre Windows HKCU** : la même valeur `Settings` sous `HKCU\SOFTWARE\Policies\ClaudeCode`.

118 

119<h3 id="split-a-file-based-policy-across-teams">

120 Diviser une politique basée sur fichier entre les équipes

121</h3>

122 

123Si plusieurs équipes possèdent des parties d'une politique, mettez chaque partie dans son propre fichier dans `managed-settings.d/`, à côté de `managed-settings.json` dans le même répertoire système, au lieu de modifier un fichier partagé.

124 

125Claude Code fusionne d'abord `managed-settings.json`, puis chaque fichier `*.json` du répertoire dans l'ordre alphabétique. Nommez les fichiers avec des préfixes numériques pour contrôler l'ordre, comme `10-telemetry.json` et `20-security.json`. Claude Code ignore les fichiers cachés et les fichiers qui ne se terminent pas par `.json`.

126 

127Quand deux fichiers définissent la même clé, Claude Code les combine selon ces règles :

128 

129* **Valeurs uniques**, comme `"model": "opus"` ou `"cleanupPeriodDays": 7` : la valeur du fichier ultérieur remplace celle du fichier antérieur

130* **Listes**, comme `permissions.deny` ou `sandbox.network.allowedDomains` : les deux listes se combinent, avec les doublons supprimés

131* **Blocs imbriqués**, comme `env` ou `sandbox` : les deux blocs fusionnent clé par clé, et chaque clé à l'intérieur suit ces mêmes règles

132* **`fallbackModel`** : la chaîne ultérieure remplace entièrement la chaîne antérieure

133* **[`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces) et [`managedMcpServers`](/docs/fr/settings-reference#managedmcpservers)** : une entrée ultérieure avec le même nom remplace entièrement celle antérieure

134* **[`modelPicker`](/docs/fr/settings-reference#modelpicker)** : la lineup ultérieure remplace entièrement la lineup antérieure

135 

136<span id="precedence-within-the-managed-tier" />

137 

138<span id="which-managed-source-claude-code-uses" />

139 

140<h2 id="how-claude-code-combines-managed-sources">

141 Comment Claude Code combine les sources gérées

142</h2>

143 

144Quand votre organisation livre plus d'une source gérée à la même machine, la clé [`managedSourcesBehavior`](/docs/fr/settings-reference#managedsourcesbehavior) décide ce que Claude Code fait avec les autres :

145 

146* **`"first-wins"`, la valeur par défaut** : Claude Code utilise la source la mieux classée qui livre au moins une clé de politique et ignore le reste plutôt que de les fusionner, à l'exception des quelques clés dans [Clés lues de chaque source d'administration](#keys-read-from-every-admin-source). Claude Code n'affiche aucun avertissement pour les sources qu'il ignore ; `/status` [nomme la source qu'il a utilisée et celles qu'il a ignorées](#read-the-source-in-/status).

147* **`"merge"`** : Claude Code applique chaque source d'administration qui livre une clé de politique et les combine par type de clé : sur la plupart des clés, la valeur de la source la mieux classée s'applique, les listes s'unissent, et les verrous prennent la valeur la plus stricte. [Composer chaque source gérée](#compose-every-managed-source) dit où définir la clé et comment chaque type de clé se combine. Nécessite Claude Code v2.1.242 ou ultérieur.

148 

149Les deux paramètres classent les sources de la même manière. Deux termes reviennent dans cette section :

150 

151* **Clé de politique** : toute clé de paramètres autre que les deux clés de contrôle, [`wslInheritsWindowsSettings`](/docs/fr/settings-reference#wslinheritswindowssettings) et [`managedSourcesBehavior`](/docs/fr/settings-reference#managedsourcesbehavior). Un fichier de paramètres gérés ou une politique MDM qui contient uniquement ceux-ci ne compte pas, et Claude Code passe à la source suivante.

152* **Source d'administration** : l'une des trois premières sources ci-dessous. Le registre HKCU modifiable par l'utilisateur n'en est pas une.

153 

154Claude Code vérifie les sources dans cet ordre, priorité la plus élevée en premier :

155 

1561. Paramètres distants, livrés de claude.ai comme [paramètres gérés par le serveur](/docs/fr/server-managed-settings) ou par une [passerelle d'applications Claude](/docs/fr/claude-apps-gateway). Claude Code récupère cette source uniquement quand la session s'authentifie à l'API d'Anthropic directement avec une [connexion ou clé éligible](/docs/fr/server-managed-settings#platform-availability), ou se connecte à une passerelle avec `/login`. Sur d'autres fournisseurs, ou quand `ANTHROPIC_BASE_URL` pointe ailleurs que l'API d'Anthropic, il commence à la source suivante

1572. Politiques MDM ou au niveau du système d'exploitation : le plist macOS ou la clé de registre HKLM

1583. Fichiers de paramètres gérés, `managed-settings.d/*.json` et `managed-settings.json` fusionnés ensemble

1594. Le registre HKCU, sur Windows, et sur WSL une fois que le registre HKLM ou le fichier de paramètres gérés Windows active [`wslInheritsWindowsSettings`](/docs/fr/settings-reference#wslinheritswindowssettings) et la valeur HKCU le définit également. Claude Code ne le lit que quand aucune source au-dessus ne livre une clé de politique et aucun [paramètre parent fourni par l'hôte](#let-an-embedding-host-add-policy) ne fournit une clé restrictive

160 

161Ce diagramme montre le classement, avec des exemples des clés inter-sources que Claude Code lit des trois premières sources sous l'un ou l'autre paramètre :

162 

163<img src="https://mintcdn.com/claude-code/zuWID2B-Rxm8DEC8/images/managed-source-precedence.svg?fit=max&auto=format&n=zuWID2B-Rxm8DEC8&q=85&s=53f6be49f06eff48e01422c8ae1bc2e6" className="dark:hidden" alt="Diagramme montrant les quatre sources de paramètres gérés classées des paramètres distants en haut jusqu'à MDM, fichiers de paramètres gérés, et le registre HKCU en bas. Par défaut, la première source avec une clé de politique fournit la politique et le reste est ignoré ; avec managedSourcesBehavior défini sur merge, chaque source d'administration avec une clé de politique contribue, combinée par type de clé, et le registre HKCU reste en dehors. Un panneau latéral montre que les clés inter-sources telles que les verrous sandbox, forceRemoteSettingsRefresh, et la fusion env par variable sont lues de chaque source d'administration, ce qui exclut le registre HKCU." width="680" height="330" data-path="images/managed-source-precedence.svg" />

164 

165<img src="https://mintcdn.com/claude-code/zuWID2B-Rxm8DEC8/images/managed-source-precedence-dark.svg?fit=max&auto=format&n=zuWID2B-Rxm8DEC8&q=85&s=ae407a9a08a3d680e80cf1a2af845d71" className="hidden dark:block" alt="Diagramme montrant les quatre sources de paramètres gérés classées des paramètres distants en haut jusqu'à MDM, fichiers de paramètres gérés, et le registre HKCU en bas. Par défaut, la première source avec une clé de politique fournit la politique et le reste est ignoré ; avec managedSourcesBehavior défini sur merge, chaque source d'administration avec une clé de politique contribue, combinée par type de clé, et le registre HKCU reste en dehors. Un panneau latéral montre que les clés inter-sources telles que les verrous sandbox, forceRemoteSettingsRefresh, et la fusion env par variable sont lues de chaque source d'administration, ce qui exclut le registre HKCU." width="680" height="330" data-path="images/managed-source-precedence-dark.svg" />

166 

167<h3 id="keys-read-from-every-admin-source">

168 Clés lues de chaque source d'administration

169</h3>

170 

171Sous le paramètre par défaut `"first-wins"`, Claude Code lit la plupart des clés uniquement de la [source qu'il a sélectionnée](#how-claude-code-combines-managed-sources), et ignore une valeur dans une source de rang inférieur même quand la source sélectionnée laisse cette clé non définie.

172 

173Quelques clés fonctionnent différemment. Claude Code les lit de chaque source d'administration, donc une politique MDM ou un fichier de paramètres gérés de rang inférieur peut toujours les définir quand la source sélectionnée ne le fait pas. Claude Code laisse le registre HKCU modifiable par l'utilisateur en dehors de cette analyse ; quand HKCU est la seule source et qu'aucun hôte ne fournit de paramètres parent, HKCU s'applique comme n'importe quelle source sélectionnée.

174 

175Les clés inter-sources incluent :

176 

177* `sandbox.network.allowManagedDomainsOnly` et `sandbox.filesystem.allowManagedReadPathsOnly` : un `true` dans n'importe quelle source d'administration active le verrou. Pendant qu'un verrou est actif, Claude Code unit la liste d'autorisation qu'il verrouille, `sandbox.network.allowedDomains` ensemble avec les règles d'autorisation `WebFetch(domain:...)`, ou `sandbox.filesystem.allowRead`, de chaque source d'administration. Sans le verrou, Claude Code traite la liste d'autorisation comme n'importe quelle autre clé, donc sous `"first-wins"` la liste d'autorisation d'une source d'administration non sélectionnée est ignorée

178* `allowAllClaudeAiMcps`

179* Les chemins binaires sandbox `sandbox.bwrapPath` et `sandbox.socatPath`

180* Le binaire sandbox `ripgrep`, [`sandbox.ripgrep`](/docs/fr/settings-reference#sandbox-ripgrep)

181* `sandbox.filesystem.disabled` et `sandbox.network.strictAllowlist`

182* [`useAutoModeDuringPlan`](/docs/fr/settings-reference#useautomodeduringplan) et [`syncClaudeAiSkills`](/docs/fr/settings-reference#syncclaudeaiskills), où un `false` de n'importe quelle source d'administration désactive le comportement. Un `false` dans les paramètres utilisateur ou local du développeur le désactive également ; chaque clé ne peut que refuser

183* [`enableArtifact`](/docs/fr/settings-reference#enableartifact), où un `false` de n'importe quelle source d'administration désactive l'[outil Artifact](/docs/fr/artifacts). Un `false` dans les paramètres utilisateur, projet ou local du développeur le désactive également, et aucune source ne le réactive ; consultez [quelles valeurs de niveau inférieur comptent toujours](/docs/fr/settings#exceptions-to-managed-settings-precedence). Nécessite Claude Code v2.1.242 ou ultérieur

184* [`maxEffortLevel`](/docs/fr/settings-reference#maxeffortlevel), où le plafond le plus bas dans n'importe quelle source d'administration s'applique. Si un développeur définit un plafond plus bas dans ses propres paramètres ou avec `--settings`, Claude Code applique celui-ci ; aucune source ne peut augmenter le plafond. Nécessite Claude Code v2.1.267 ou ultérieur

185* Une opt-out de commit-trailer dans `attribution`, ou dans le `includeCoAuthoredBy` déprécié, de n'importe quel niveau

186* [`forceRemoteSettingsRefresh`](/docs/fr/server-managed-settings)

187* `env`, fusionné par variable de chaque source d'administration : chaque variable provient de la source de priorité la plus élevée qui la définit, donc les sources inférieures remplissent les variables que les sources supérieures laissent non définies. Quelques variables suivent leurs propres règles ; [Exceptions par clé de chaque source gérée](/docs/fr/server-managed-settings#per-key-exceptions-across-managed-sources) nomme chacune. Nécessite Claude Code v2.1.223 ou ultérieur. Avant v2.1.223, Claude Code appliquait uniquement le bloc `env` entier de la source sélectionnée

188 

189<h3 id="compose-every-managed-source">

190 Composer chaque source gérée

191</h3>

192 

193Pour que Claude Code applique chaque source d'administration que votre organisation livre, définissez [`managedSourcesBehavior`](/docs/fr/settings-reference#managedsourcesbehavior) sur `"merge"` dans la source la mieux classée que vous déployez. Claude Code lit la clé uniquement de la source la mieux classée qui porte soit la clé soit une clé de politique, donc une source inférieure ne peut pas se faire fusionner avec la source au-dessus, et une machine qui ne reçoit jamais les paramètres gérés par le serveur a besoin de la clé dans son profil MDM également. Le registre HKCU modifiable par l'utilisateur ne fusionne jamais avec une autre source. Nécessite Claude Code v2.1.242 ou ultérieur.

194 

195Sous `"merge"`, Claude Code ajoute les entrées de liste d'une source inférieure, comme les règles `permissions.allow` et les hooks, à la politique, donc activez-le uniquement quand chaque source classée en dessous de votre source la plus élevée est sous le contrôle d'un administrateur.

196 

197Ce tableau montre comment Claude Code combine chaque type de clé sous `"merge"`. L'entrée [`managedSourcesBehavior`](/docs/fr/settings-reference#managedsourcesbehavior) nomme chaque clé dans trois des lignes : listes d'autorisation de restriction, valeurs prises entièrement, et clés lues uniquement de la source la mieux classée.

198 

199| Type de clé | Comment Claude Code la combine | Exemples |

200| :------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------- |

201| Listes | Combine les entrées de chaque source | `permissions.allow`, `hooks`, `sandbox.network.allowedDomains`, `deniedMcpServers` |

202| Verrous | Applique la valeur la plus stricte que n'importe quelle source définit ; une valeur plus souple s'applique uniquement de la source la mieux classée | `allowManagedHooksOnly`, `permissions.disableBypassPermissionsMode`, `crossSessionInbound` |

203| Listes d'autorisation de restriction | Prend la liste entière de la source la mieux classée qui la définit, sans ajouter d'entrées de sources inférieures | `availableModels`, `allowedMcpServers`, `strictKnownMarketplaces`, `allowedChannelPlugins`, et la chaîne `fallbackModel` |

204| Valeurs prises entièrement | Prend la valeur entière de la source la mieux classée qui la définit, sans combiner d'entrées ou de champs de sources inférieures | `sandbox.credentials.awsPairs`, `sandbox.ripgrep` |

205| Serveurs MCP fournis | Combine les noms de serveur de chaque source ; quand deux sources définissent le même nom, applique l'entrée entière de la source la mieux classée | `managedMcpServers` |

206| Clés lues uniquement de la source la mieux classée | Ignore la clé dans chaque source inférieure, même quand la source la mieux classée la laisse non définie | Les aides aux identifiants comme `apiKeyHelper`, les épingles de connexion comme `forceLoginOrgUUID`, `modelPicker`, `permissions.defaultMode` |

207| `env` | Fusionne par variable de chaque source d'administration sous l'un ou l'autre paramètre, comme [Clés lues de chaque source d'administration](#keys-read-from-every-admin-source) le décrit | |

208| Chaque autre clé | Prend la valeur de la source la mieux classée qui la définit | `model`, `cleanupPeriodDays` |

209 

210Pour confirmer quelles sources se sont combinées sur une machine, [lisez la ligne `Setting sources` dans `/status`](#read-the-source-in-/status) ; cette section dit ce que chaque étiquette signifie.

211 

212<h3 id="compute-the-policy-with-a-helper-program">

213 Calculer la politique avec un programme d'aide

214</h3>

215 

216Un [`policyHelper`](/docs/fr/settings-reference#policyhelper) est un exécutable que votre politique MDM ou fichier de paramètres gérés nomme, et Claude Code l'exécute pour calculer les paramètres gérés au démarrage. Quand la source sélectionnée en configure un et que l'aide émet un objet `managedSettings`, cette sortie change ce que Claude Code lit :

217 

218* **L'objet `managedSettings` émis est le seul paramètre géré pour la session**, y compris pour les [clés qu'il lit autrement de chaque source d'administration](#keys-read-from-every-admin-source), à l'exception de [`forceRemoteSettingsRefresh`, qui a sa propre règle de démarrage](/docs/fr/settings-reference#forceremotesettingsrefresh)

219 

220Pour savoir quels aides échouent, et ce que Claude Code fait quand l'une le fait, consultez [Défaillances d'aide](/docs/fr/settings-reference#helper-failures).

221 

222<span id="parent-settings-from-embedding-hosts" />

223 

224<span id="control-policy-from-an-embedding-host" />

225 

226<span id="merge-policy-from-an-embedding-host" />

227 

228<h3 id="let-an-embedding-host-add-policy">

229 Laisser un hôte d'intégration ajouter une politique

230</h3>

231 

232Quand une autre application lance Claude Code, comme Claude Desktop, une extension IDE, ou une application Agent SDK, cet hôte peut passer ses propres paramètres gérés via l'option SDK `managedSettings`. Claude Code appelle ces paramètres parent.

233 

234Par défaut, Claude Code ignore les paramètres parent chaque fois qu'une source d'administration est présente : paramètres gérés par le serveur, une politique MDM ou au niveau du système d'exploitation, ou un fichier de paramètres gérés.

235 

236Pour que Claude Code fusionne les paramètres parent aux côtés d'une source d'administration, définissez [`parentSettingsBehavior`](/docs/fr/settings-reference#parentsettingsbehavior) sur `"merge"` dans la source gérée de priorité la plus élevée ; Claude Code lit la clé de cette source uniquement.

237 

238Claude Code conserve alors uniquement les valeurs de l'hôte qui restreignent ce que Claude peut faire, avec une lacune à connaître : à moins que vous ne définissiez également les verrous `allowManaged*Only`, les règles d'autorisation de permission de l'hôte et les listes d'autorisation sandbox s'appliquent toujours. Consultez [Restreindre les paramètres parent](/docs/fr/claude-apps-gateway#restrict-parent-settings) pour les verrous.

239 

240Un [`policyHelper`](/docs/fr/settings-reference#policyhelper) peut désactiver la fusion parent indépendamment de cette clé ; son entrée dit quand.

241 

242Claude Code applique également ces vérifications aux valeurs fournies par le parent d'elles-mêmes :

243 

244* Quand n'importe quelle source d'administration définit `allowManagedPermissionRulesOnly`, Claude Code supprime les [règles d'autorisation de permission fournies par le parent](/docs/fr/claude-apps-gateway#restrict-parent-settings) et `additionalDirectories` au fur et à mesure qu'il les lit, même quand une source de priorité plus élevée laisse la clé non définie. L'effet de la clé sur vos propres règles de permission provient des paramètres gérés que Claude Code applique, ou des paramètres parent que vous avez choisi de fusionner

245* Claude Code applique la valeur `forceLoginOrgUUID` ou `allowedMcpServers` dans les paramètres gérés qu'il applique et bloque une valeur fournie par le parent. Une valeur dans une source d'administration inférieure que Claude Code n'applique pas ne s'applique ni ne bloque celle du parent. L'entrée [`managedSourcesBehavior`](/docs/fr/settings-reference#managedsourcesbehavior) dit quelle source fournit chaque clé sous `"merge"`. Avant v2.1.223, une valeur dans n'importe quelle source d'administration bloquait celle du parent

246* Une valeur `availableModels` suit la même règle que `allowedMcpServers`

247 

248<h4 id="keep-cowork-folder-access-when-only-managed-rules-apply">

249 Garder l'accès au dossier Cowork quand seules les règles gérées s'appliquent

250</h4>

251 

252[Cowork](https://claude.com/docs/cowork/overview) dans l'application Claude Desktop exécute ses sessions sur Claude Code et accorde à chaque session l'accès à ses dossiers de travail, comme le dossier que l'utilisateur connecte, via les règles d'autorisation qu'il fournit quand il lance la session. Quand votre politique gérée définit [`allowManagedPermissionRulesOnly`](/docs/fr/settings-reference#allowmanagedpermissionrulesonly), Claude Code conserve uniquement les règles d'autorisation dans la politique gérée : il supprime les règles d'autorisation qu'un hôte fournit comme paramètres parent, comme `--allowedTools`, ou dans un fichier de paramètres, donc les écritures dans ces dossiers perdent leur pré-approbation. Dans une session Cowork qui demande avant les modifications, Cowork ne peut pas afficher l'invite, et Claude signale chaque écriture comme bloquée car le chemin se résout à un emplacement protégé ou un chemin en dehors du dossier connecté.

253 

254Pour restaurer les écritures, ajoutez des règles d'autorisation pour ces dossiers à la source gérée que Claude Code [sélectionne](#precedence-within-the-managed-tier) sur ces machines : sur une flotte gérée par MDM, c'est la politique MDM plutôt qu'un fichier de paramètres gérés séparé. Cet exemple utilise la forme de fichier, et une politique MDM prend les mêmes clés. Il garde `allowManagedPermissionRulesOnly` défini et permet les modifications sous un dossier `CoworkProjects` dans le répertoire personnel de chaque utilisateur ; remplacez le chemin par les dossiers que vos utilisateurs connectent :

255 

256```json managed-settings.json theme={null}

257{

258 "allowManagedPermissionRulesOnly": true,

259 "permissions": {

260 "allow": [

261 "Edit(~/CoworkProjects/**)"

262 ]

263 }

264}

265```

266 

267Après avoir déployé la politique, Claude peut enregistrer les fichiers sous ce dossier dans une nouvelle session Cowork. [Règles Read et Edit](/docs/fr/permissions#read-and-edit) couvrent la syntaxe du chemin, y compris la forme `//` pour les chemins absolus.

268 

269<h3 id="what-a-developer-can-change">

270 Ce qu'un développeur peut changer

271</h3>

272 

273Les fichiers de paramètres propres d'un développeur, les valeurs `--settings`, et les fichiers de projet ne remplacent jamais une valeur gérée ; les [exceptions](/docs/fr/settings#exceptions-to-managed-settings-precedence) permettent uniquement à une valeur plus stricte de niveau inférieur de compter. Quatre choses se situent en dehors de cette règle :

274 

275* **Le modèle pour une session** : un `model` géré est une valeur par défaut, pas un verrou. `--model` et `ANTHROPIC_MODEL` choisissent toujours le modèle pour cette session, donc déployez [`availableModels`](/docs/fr/settings-reference#availablemodels) pour restreindre le choix.

276* **Droits d'administrateur local** : un développeur qui est administrateur sur la machine peut modifier la source gérée elle-même, c'est pourquoi les outils MDM peuvent redéployer le profil ou le fichier selon un calendrier et pourquoi le registre HKLM et le domaine des préférences gérées macOS existent.

277* **Le cache géré par le serveur** : les paramètres gérés par le serveur proviennent des serveurs d'Anthropic, et une modification du cache local [dure uniquement jusqu'à la prochaine récupération réussie](/docs/fr/server-managed-settings#security-considerations).

278* **Autres outils** : les paramètres gérés lient uniquement Claude Code. Un développeur qui appelle l'API à partir d'un autre outil n'est pas sous eux.

279 

280<span id="verify-enforcement" />

281 

282<span id="verify-that-a-policy-is-in-force" />

283 

284<h2 id="check-that-a-policy-is-in-force">

285 Vérifier qu'une politique est en vigueur

286</h2>

287 

288Un développeur signale qu'une politique ne s'applique pas, ou vous voulez confirmer qu'un déploiement a atterri avant de le pousser à la flotte. Deux commandes sur cette machine répondent : `/status` montre quelle source gérée Claude Code a sélectionnée, et `claude doctor` énumère ce qu'il a supprimé.

289 

290<h3 id="read-the-source-in-/status">

291 Lire la source dans /status

292</h3>

293 

294Sur la machine du développeur, exécutez `/status` dans Claude Code et lisez la ligne `Setting sources`. Quand une source gérée est en vigueur, la ligne énumère `Enterprise managed settings` avec la source que Claude Code a sélectionnée entre parenthèses :

295 

296* `(remote)` : paramètres gérés par le serveur de claude.ai ou une passerelle

297* `(plist)` ou `(HKLM)` : une politique MDM ou au niveau du système d'exploitation

298* `(file)`, `(drop-ins)`, ou `(file + drop-ins)` : `managed-settings.json`, le répertoire drop-in, ou les deux

299* `(remote + file, merged)`, ou une autre liste se terminant par `, merged` : votre organisation [compose chaque source gérée](#compose-every-managed-source), et Claude Code a fusionné les sources énumérées dans la politique. Une source inférieure peut toujours fournir des variables `env` sans apparaître dans la liste. Nécessite Claude Code v2.1.242 ou ultérieur

300* `(HKCU)` : le registre modifiable par l'utilisateur fallback

301* `(parent process)` : un [hôte d'intégration](#let-an-embedding-host-add-policy) a fourni des paramètres restrictifs

302* `(helper)` : un [`policyHelper`](/docs/fr/settings-reference#policyhelper) configuré par la source MDM ou fichier sélectionnée

303 

304Quand Claude Code a trouvé une source gérée sur la machine et ne l'a pas sélectionnée, une deuxième ligne, `Skipped sources`, nomme chaque source de ce type. Lisez-la pour distinguer une politique qui n'a jamais atteint la machine d'une qui l'a atteinte et qu'une source de priorité plus élevée a remplacée. Nécessite Claude Code v2.1.242 ou ultérieur.

305 

306Quand la politique ne s'applique pas, la ligne `Setting sources` vous dit lequel de deux problèmes vous avez :

307 

308* **La ligne est manquante** : Claude Code n'a trouvé aucune source gérée qui livre une clé de politique.

309 

310 Si vous avez déployé un fichier de paramètres gérés, vérifiez qu'il se trouve au chemin du système d'exploitation et qu'il contient une [clé de politique](#how-claude-code-combines-managed-sources) plutôt que uniquement les clés de contrôle. Un fichier qui n'est pas un JSON valide ne produit pas cet état ; Claude Code [refuse de démarrer](#find-entries-claude-code-dropped) à la place.

311 

312 Quand vous avez déployé via les paramètres gérés par le serveur à la place, exécutez `claude doctor`, qui signale le [résultat de la récupération](/docs/fr/server-managed-settings#verify-settings-delivery).

313* **La ligne nomme une source autre que celle que vous avez déployée** : une source de priorité plus élevée est présente et Claude Code a ignoré la vôtre, et `Skipped sources` l'énumère. [Comment Claude Code combine les sources gérées](#how-claude-code-combines-managed-sources) donne l'ordre.

314 

315<span id="invalid-entries-in-managed-settings" />

316 

317<h3 id="find-entries-claude-code-dropped">

318 Trouver les entrées que Claude Code a supprimées

319</h3>

320 

321Quand un fichier de paramètres gérés, un profil MDM, une valeur de registre, ou une charge utile gérée par le serveur échoue la validation du schéma, Claude Code ignore d'abord les entrées individuelles qu'il peut réparer, comme une règle de permission invalide, avec un avertissement pour chacune, puis supprime toute clé de niveau supérieur dont la valeur échoue toujours et continue à appliquer chaque clé valide restante.

322 

323Claude Code est plus strict avec le `managedSettings` qu'un [`policyHelper`](/docs/fr/settings-reference#policyhelper) émet : il fait les mêmes réparations d'entrée, mais toute violation de schéma qui survit échoue l'exécution entière de l'aide, et au démarrage Claude Code refuse de démarrer, de la même manière que pour une aide qui se termine avec un code non nul.

324 

325Quand un fichier de paramètres gérés, un fichier drop-in, un plist MDM, ou une valeur de registre HKLM est présent mais ne peut pas être analysé comme un objet JSON, Claude Code refuse de démarrer et imprime [une erreur nommant la source](/docs/fr/errors#managed-settings-document-could-not-be-parsed), même quand une autre source d'administration livre une politique valide. Chaque source échoue de cette manière quand :

326 

327* **Fichier de paramètres gérés ou fichier drop-in** : le fichier n'est pas un JSON valide, ou son niveau supérieur n'est pas un objet

328* **Plist MDM** : le `plutil` de macOS signale le plist malformé, ou son contenu converti n'est pas un objet JSON

329* **Valeur de registre HKLM** : la valeur `Settings` n'est pas une chaîne, est vide, ou ne contient pas un objet JSON

330 

331Trois états de source ne causent pas ce refus :

332 

333* Un fichier, profil, ou valeur de registre absent n'est pas une défaillance ; Claude Code s'exécute sans cette source.

334* Un fichier de paramètres gérés vide compte comme `{}`.

335* Une valeur malformée dans la clé de registre HKCU modifiable par l'utilisateur ne bloque jamais le lancement. Claude Code la signale comme un avis dans `/status` et `claude doctor` à la place.

336 

337Si un fichier de paramètres gérés, un fichier drop-in, ou un répertoire `managed-settings.d/` ne peut pas être lu et qu'aucune source d'administration ne fournit une politique, les sessions connectées avec des identifiants claude.ai ou Claude Console se terminent au démarrage avec un message pour contacter un administrateur.

338 

339Pour trouver une entrée supprimée, regardez dans l'un de trois endroits :

340 

341* Les sessions interactives affichent une boîte de dialogue au démarrage énumérant les entrées invalides.

342* Les exécutions non interactives avec `-p` impriment un résumé sur stderr.

343* [`claude doctor`](/docs/fr/debug-your-config) énumère chaque entrée invalide avec sa source et son champ.

344 

345<h4 id="keys-that-fail-closed">

346 Clés qui échouent fermées

347</h4>

348 

349Quelques clés d'application ne sont pas supprimées quand elles sont invalides. Claude Code applique un fallback plus strict jusqu'à ce que la valeur soit corrigée ; le tableau montre ce qu'il applique pour chaque clé :

350 

351| Champ | Comportement quand présent mais invalide |

352| :---------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

353| `allowedMcpServers` | Appliquée comme une liste d'autorisation vide jusqu'à ce que la valeur soit corrigée, donc aucun serveur MCP que les utilisateurs ajoutent n'est admis. Les serveurs que votre organisation livre via [`managedMcpServers`](/docs/fr/settings-reference#managedmcpservers) se chargent toujours, et les serveurs `managed-mcp.json` se chargent selon [Comment un serveur est évalué](/docs/fr/managed-mcp#how-a-server-is-evaluated). Une entrée invalide individuelle est supprimée et le sous-ensemble valide est appliqué. |

354| `allowedHttpHookUrls` | Claude Code applique une [liste d'autorisation](/docs/fr/settings-reference#allowedhttphookurls) gérée vide jusqu'à ce que vous corrigiez la valeur, donc un hook HTTP s'exécute uniquement si un autre fichier de paramètres énumère son URL. Si seule une entrée individuelle est invalide, Claude Code supprime cette entrée et applique le reste. |

355| `httpHookAllowedEnvVars` | Claude Code applique une [liste d'autorisation](/docs/fr/settings-reference#httphookallowedenvvars) gérée vide jusqu'à ce que vous corrigiez la valeur, donc une variable d'en-tête est interpolée uniquement si un autre fichier de paramètres la nomme. Si seule une entrée individuelle est invalide, Claude Code supprime cette entrée et applique le reste. |

356| `allowedChannelPlugins` | Claude Code applique une liste d'autorisation vide jusqu'à ce que vous corrigiez la valeur, donc aucun plugin de canal passé à `--channels` n'est admis. Si seule une entrée individuelle est invalide, il supprime cette entrée et applique le reste. |

357| `allowManagedHooksOnly` | Traitée comme `true` jusqu'à correction : les [restrictions de hook](/docs/fr/settings-reference#allowmanagedhooksonly) s'appliquent et, à moins que `disableCommandPluginSources` ne soit explicitement `false`, les plugins sourced par commande sont désactivés. |

358| `allowManagedMcpServersOnly` | Traitée comme `true`. |

359| `disableCommandPluginSources` | Traitée comme `true`, donc les plugins sourced par commande restent désactivés jusqu'à ce que la valeur soit corrigée. |

360| `availableModels` | Appliquée comme une liste d'autorisation vide jusqu'à correction, donc seul le modèle par défaut est disponible ; une entrée non-chaîne est supprimée et le sous-ensemble valide est appliqué. |

361| `enforceAvailableModels` | Traitée comme `true`. |

362| `forceLoginOrgUUID` | Aucune organisation n'est autorisée à se connecter jusqu'à ce que la valeur soit corrigée. |

363| `crossSessionInbound` | Traitée comme `refuse`, la valeur la plus restrictive, donc les [messages inter-sessions](/docs/fr/cross-session-messaging#control-inbound-messages) entrants sont refusés jusqu'à ce que la valeur soit corrigée. Le développeur voit [un avertissement](/docs/fr/errors#crosssessioninbound-must-be-one-of-accept-hold-refuse). |

364| `deniedMcpServers` | Une entrée invalide individuelle est supprimée et le sous-ensemble valide est appliqué. Une valeur entièrement invalide est supprimée avec un avertissement, car refuser chaque serveur bloquerait les serveurs que la politique n'a jamais nommés. |

365| `sandbox.credentials` | Une entrée invalide récupérable est dégradée à `mode: "deny"` avec un avertissement ; une irrécupérable est supprimée ; les entrées valides restent appliquées. Consultez [entrées de credential invalides](/docs/fr/settings-reference#invalid-credential-entries-in-managed-settings) |

366 

367`allowedHttpHookUrls` et `httpHookAllowedEnvVars` fusionnent entre les fichiers de paramètres, donc les entrées dans vos paramètres utilisateur, projet ou local s'appliquent toujours tandis que la liste gérée est vide. Les fallbacks pour ces deux clés et pour `allowedChannelPlugins` nécessitent Claude Code v2.1.267 ou ultérieur ; les versions antérieures suppriment la clé entière quand sa valeur ou une entrée est invalide.

368 

369`requiredMinimumVersion` et `requiredMaximumVersion` échouent ouvertes par conception : une valeur invalide est supprimée plutôt qu'appliquée.

370 

371Cette tolérance s'applique uniquement aux paramètres gérés. Les fichiers de paramètres utilisateur, projet et local restent stricts : un fichier dont le JSON ou la forme de niveau supérieur échoue la validation est rejeté entièrement et signalé, et une entrée individuelle qui échoue, comme une règle de permission malformée, est ignorée avec un avertissement tandis que le reste du fichier s'applique.

372 

373<span id="managed-only-settings" />

374 

375<h2 id="keys-only-a-managed-source-can-set">

376 Clés qu'une source gérée seule peut définir

377</h2>

378 

379Claude Code lit les clés suivantes uniquement d'une source gérée ; les placer dans les fichiers de paramètres utilisateur ou projet n'a aucun effet.

380 

381La plupart d'entre elles sont des verrous : la valeur qu'un verrou gouverne, comme les règles de permission ou `sandbox.network.allowedDomains`, est une clé ordinaire que n'importe quel niveau peut définir, et le verrou dit à Claude Code d'honorer uniquement la valeur gérée.

382 

383Le tableau couvre les contrôles de permission, plugin et livraison. Pour toute clé non énumérée ici, la colonne Scope de l'[index de référence des paramètres](/docs/fr/settings-reference#all-settings) dit si elle est gérée uniquement ; les clés gérées uniquement restantes là incluent l'URL de connexion à la passerelle, la version, le navigateur, le simulateur mobile, l'hôte SSH, la session locale Desktop, le chemin binaire sandbox, la tarification du modèle, et les contrôles CLAUDE.md.

384 

385| Paramètre | Description |

386| :-------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

387| [`allowAllClaudeAiMcps`](/docs/fr/settings-reference#allowallclaudeaimcps) | Charger les connecteurs claude.ai que Claude Code récupère lui-même aux côtés d'un `managed-mcp.json` déployé au lieu de les supprimer |

388| [`allowedChannelPlugins`](/docs/fr/settings-reference#allowedchannelplugins) | Liste d'autorisation des plugins de canal qui peuvent pousser des messages. Remplace la liste d'autorisation Anthropic par défaut quand défini. Nécessite `channelsEnabled: true`. Consultez [Restreindre quels plugins de canal peuvent s'exécuter](/docs/fr/channels#restrict-which-channel-plugins-can-run) |

389| [`allowManagedHooksOnly`](/docs/fr/settings-reference#allowmanagedhooksonly) | Quand `true`, restreint quels hooks s'exécutent ; consultez [ce qui s'exécute sous `allowManagedHooksOnly`](/docs/fr/settings-reference#what-runs-under-allowmanagedhooksonly) pour la liste complète des effets |

390| [`allowManagedMcpServersOnly`](/docs/fr/settings-reference#allowmanagedmcpserversonly) | Quand `true`, seul `allowedMcpServers` des paramètres gérés est respecté. `deniedMcpServers` fusionne toujours de toutes les sources. Consultez [Configuration MCP gérée](/docs/fr/managed-mcp) |

391| [`allowManagedPermissionRulesOnly`](/docs/fr/settings-reference#allowmanagedpermissionrulesonly) | Rend les paramètres gérés la seule source de paramètres des règles de permission. L'entrée énumère chaque source qu'elle ignore |

392| [`blockedMarketplaces`](/docs/fr/settings-reference#blockedmarketplaces) | Liste de blocage des sources de place de marché. Les sources bloquées sont vérifiées avant le téléchargement, donc elles ne touchent jamais le système de fichiers. Consultez [restrictions de place de marché gérée](/docs/fr/plugin-marketplaces#managed-marketplace-restrictions) |

393| [`channelsEnabled`](/docs/fr/settings-reference#channelsenabled) | Autoriser les [canaux](/docs/fr/channels) pour l'organisation. Consultez [contrôles d'entreprise](/docs/fr/channels#enterprise-controls) pour la valeur par défaut sur chaque plan |

394| [`disableCommandPluginSources`](/docs/fr/settings-reference#disablecommandpluginsources) | Quand `true`, bloque entièrement les [sources de plugin `command`](/docs/fr/plugin-marketplaces#command-sources), donc la commande déclarée par la place de marché ne s'exécute jamais. Bloque également les commandes [`headersHelper`](/docs/fr/plugin-marketplaces#authenticate-archive-downloads) de la place de marché, sauf pour une place de marché que les paramètres gérés eux-mêmes déclarent. Quand non défini, suit `allowManagedHooksOnly`. Nécessite Claude Code v2.1.229 ou ultérieur, et le bloc `headersHelper` nécessite v2.1.238 ou ultérieur |

395| [`disableSideloadFlags`](/docs/fr/settings-reference#disablesideloadflags) | Rejeter les drapeaux `--plugin-dir`, `--plugin-url`, `--agents`, et `--mcp-config` au démarrage. Dans les sessions cloud, Claude Code supprime les serveurs MCP que le serveur a livrés via `--mcp-config`, autres que les entrées `type: "sdk"` en processus, et démarre la session. Nécessite Claude Code v2.1.193 ou ultérieur |

396| [`forceRemoteSettingsRefresh`](/docs/fr/settings-reference#forceremotesettingsrefresh) | Quand `true`, bloque le démarrage CLI jusqu'à ce que les paramètres gérés distants soient fraîchement récupérés et se termine si la récupération échoue. Consultez [application fail-closed](/docs/fr/server-managed-settings#enforce-fail-closed-startup) |

397| [`managedMcpServers`](/docs/fr/settings-reference#managedmcpservers) | Serveurs MCP distants fournis à chaque utilisateur aux côtés des leurs. Il fournit des serveurs plutôt que de verrouiller quoi que ce soit. Consultez [Fournir des serveurs via les paramètres gérés](/docs/fr/managed-mcp#provide-servers-through-managed-settings). Nécessite Claude Code v2.1.259 ou ultérieur |

398| [`managedSourcesBehavior`](/docs/fr/settings-reference#managedsourcesbehavior) | Si Claude Code applique uniquement la source gérée de priorité la plus élevée ou [compose chacune d'elles](#compose-every-managed-source) |

399| [`parentSettingsBehavior`](/docs/fr/settings-reference#parentsettingsbehavior) | Si les paramètres parent fournis par l'hôte fusionnent sous la politique gérée |

400| [`pluginSuggestionMarketplaces`](/docs/fr/settings-reference#pluginsuggestionmarketplaces) | Places de marché dont les plugins Claude Code peut suggérer aux utilisateurs |

401| [`pluginTrustMessage`](/docs/fr/settings-reference#plugintrustmessage) | Message personnalisé ajouté à l'avertissement de confiance du plugin affiché avant l'installation |

402| [`policyHelper`](/docs/fr/settings-reference#policyhelper) | Exécutable qui calcule les paramètres gérés au démarrage ; consultez [Calculer les paramètres gérés avec un aide de politique](/docs/fr/settings-reference#policyhelper) |

403| [`sandbox.filesystem.allowManagedReadPathsOnly`](/docs/fr/settings-reference#sandbox-filesystem-allowmanagedreadpathsonly) | Quand `true`, seuls les chemins `filesystem.allowRead` des paramètres gérés sont respectés. `denyRead` fusionne toujours de toutes les sources |

404| [`sandbox.network.allowManagedDomainsOnly`](/docs/fr/settings-reference#sandbox-network-allowmanageddomainsonly) | Honorer uniquement les `allowedDomains` gérés et les règles d'autorisation `WebFetch(domain:...)` ; bloquer les autres domaines sans demander |

405| [`strictKnownMarketplaces`](/docs/fr/settings-reference#strictknownmarketplaces) | Contrôle quelles sources de place de marché de plugin les utilisateurs peuvent ajouter et installer des plugins. Consultez [restrictions de place de marché gérée](/docs/fr/plugin-marketplaces#managed-marketplace-restrictions) |

406| [`strictPluginOnlyCustomization`](/docs/fr/settings-reference#strictpluginonlycustomization) | Bloquer les skills, agents, hooks, et serveurs MCP des sources utilisateur et projet ; `true` verrouille les quatre, un tableau nomme lesquels |

407| [`wslInheritsWindowsSettings`](/docs/fr/settings-reference#wslinheritswindowssettings) | Quand défini dans le registre HKLM ou un fichier sous `C:\Program Files\ClaudeCode`, faire que WSL lise la chaîne de politique Windows, et lire `/etc/claude-code` uniquement quand aucun fichier de paramètres gérés ou drop-in sous ce répertoire ne livre une [clé de politique](#how-claude-code-combines-managed-sources) ; l'entrée donne l'ordre |

408 

409<Note>

410 Sur les plans Team et Enterprise, un Owner active ou désactive [Remote Control](/docs/fr/remote-control) et [sessions web](/docs/fr/claude-code-on-the-web) à l'échelle de l'organisation dans [les paramètres d'administration Claude Code](https://claude.ai/admin-settings/claude-code). Remote Control peut en outre être désactivé par appareil avec le paramètre [`disableRemoteControl`](/docs/fr/settings-reference#disableremotecontrol). Les sessions web n'ont pas de clé de paramètres gérés par appareil.

411 

412 Pour vérifier si ces paramètres d'organisation ont atteint une machine donnée, exécutez `claude doctor` là et lisez la ligne `Organization policy`, qui dit où Claude Code a chargé la politique ou pourquoi il ne l'a pas chargée. Nécessite Claude Code v2.1.261 ou ultérieur. Dans une session en cours d'exécution, `/status` affiche la même ligne quand la politique n'a pas été chargée.

413</Note>

414 

415<h2 id="turn-telemetry-off-for-your-organization">

416 Désactiver la télémétrie pour votre organisation

417</h2>

418 

419Claude Code envoie la [télémétrie](/docs/fr/data-usage#telemetry-services) opérationnelle d'Anthropic par défaut sur les sessions qui utilisent l'API Anthropic, directement, via une passerelle LLM, ou via un `ANTHROPIC_BASE_URL` personnalisé ; [Comportements par défaut par fournisseur d'API](/docs/fr/data-usage#default-behaviors-by-api-provider) dit quels fournisseurs l'envoient. Pour la désactiver pour chaque développeur sans compter sur la shell de chaque personne, livrez `DISABLE_TELEMETRY` via le bloc `env` de vos paramètres gérés. Cet exemple définit `DISABLE_TELEMETRY` pour tous ceux que la politique atteint :

420 

421```json theme={null}

422{

423 "env": {

424 "DISABLE_TELEMETRY": "1"

425 }

426}

427```

428 

429Claude Code applique une valeur de `1` sans afficher à l'utilisateur la [boîte de dialogue d'approbation](/docs/fr/server-managed-settings#environment-variables-and-the-approval-dialog).

430 

431Si vous désactivez la télémétrie, Claude Code arrête d'envoyer les données d'utilisation qui alimentent le [tableau de bord d'analyse](/docs/fr/analytics) de votre organisation pour les développeurs que la politique atteint. La variable désactive également la récupération des drapeaux de fonctionnalité, ce qui rend Remote Control, le mode auto par défaut, et les autres [fonctionnalités qui nécessitent la récupération des drapeaux de fonctionnalité](/docs/fr/env-vars#features-that-need-feature-flag-fetching) indisponibles pour ces développeurs.

432 

433[Où et quand une politique s'applique](#where-and-when-a-policy-applies) dit quel mécanisme de livraison atteint chaque surface, et [Disponibilité de la plateforme](/docs/fr/server-managed-settings#platform-availability) dit quelles sessions ignorent la récupération des paramètres gérés par le serveur.

434 

435Si votre organisation utilise des clés de chiffrement gérées par le client et achemine Claude Code via une passerelle, [Configurer les proxies et les passerelles](/docs/fr/third-party-integrations#configure-proxies-and-gateways) dit pourquoi ces sessions ont besoin de cette variable.

436 

437<h2 id="see-also">

438 Voir aussi

439</h2>

440 

441* [Configurer Claude Code pour votre organisation](/docs/fr/admin-setup) : décider ce qu'il faut appliquer et comment

442* [Paramètres gérés par le serveur](/docs/fr/server-managed-settings) : livrer la politique de la console claude.ai ou une passerelle

443* [Configuration MCP gérée](/docs/fr/managed-mcp) : contrôler quels serveurs MCP les développeurs peuvent utiliser

444* [Tous les paramètres](/docs/fr/settings-reference) : chaque clé, avec si une source gérée peut la définir

445* [Fichiers de paramètres d'exemple](/docs/fr/settings-example#an-organizations-managed-settings) : un `managed-settings.json` complet montrant la forme des clés gérées

mcp.md +21 −10

Details

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

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

54 54 

55 Vérifiez le résumé de l'installation : s'il signale `Run /reload-plugins to activate.`, exécutez cette commande.55 Si le résumé de l'installation signale `Run /reload-plugins to activate.`, Claude Code exécute ensuite ce rechargement pour vous. Si le rechargement vous avertit que votre prochain message relierait la conversation, exécutez `/reload-plugins --force`.

56 </Step>56 </Step>

57 57 

58 <Step title="Exécuter la compétence de création">58 <Step title="Exécuter la compétence de création">


102 Le transport SSE (Server-Sent Events) est déprécié. Utilisez plutôt des serveurs HTTP, si disponibles.102 Le transport SSE (Server-Sent Events) est déprécié. Utilisez plutôt des serveurs HTTP, si disponibles.

103</Warning>103</Warning>

104 104 

105Certains services exposent toujours uniquement un point de terminaison SSE. Utilisez la même commande que pour le transport HTTP, avec `--transport sse` :105Certains services exposent toujours uniquement un point de terminaison SSE. Ajoutez-les avec la même commande `claude mcp add --transport http <name> <url>` que pour [un serveur HTTP](#option-1-add-a-remote-http-server). Claude Code essaie d'abord le transport HTTP et bascule vers SSE lorsque le serveur ne l'accepte pas. Le basculement automatique nécessite Claude Code v2.1.265 ou ultérieur.

106 

107Sur une version antérieure, ou pour se connecter directement via SSE, passez `--transport sse` à la place :

106 108 

107```bash theme={null}109```bash theme={null}

108# Syntaxe de base110# Syntaxe de base


183 À partir d'une URL185 À partir d'une URL

184</h4>186</h4>

185 187 

186Une URL signifie que le serveur est distant. Pour un point de terminaison `https://`, ajoutez-le avec `--transport http`, ou avec `--transport sse` lorsque les instructions disent que le point de terminaison utilise SSE. Pour un point de terminaison `wss://`, utilisez plutôt l'[Option 4](#option-4-add-a-remote-websocket-server), car `--transport` n'accepte pas `ws` :188Une URL signifie que le serveur est distant. Pour un point de terminaison `https://`, ajoutez-le avec `--transport http`, ou suivez l'[Option 2](#option-2-add-a-remote-sse-server) lorsque les instructions disent que le point de terminaison utilise SSE. Pour un point de terminaison `wss://`, utilisez plutôt l'[Option 4](#option-4-add-a-remote-websocket-server), car `--transport` n'accepte pas `ws` :

187 189 

188```bash theme={null}190```bash theme={null}

189claude mcp add --transport http example https://mcp.example.com/mcp191claude mcp add --transport http example https://mcp.example.com/mcp


307Lorsque vous terminez l'authentification depuis `/mcp` et que la connexion échoue toujours avec un statut HTTP ou un code d'erreur de transport, Claude Code ajoute ce code et l'origine de l'URL qu'il a essayée au message qu'il imprime après la tentative. L'origine est le schéma et l'hôte, plus le port lorsque l'URL en nomme un, tel que `https://mcp.example.com`.309Lorsque vous terminez l'authentification depuis `/mcp` et que la connexion échoue toujours avec un statut HTTP ou un code d'erreur de transport, Claude Code ajoute ce code et l'origine de l'URL qu'il a essayée au message qu'il imprime après la tentative. L'origine est le schéma et l'hôte, plus le port lorsque l'URL en nomme un, tel que `https://mcp.example.com`.

308 310 

309* Le chemin et la requête n'apparaissent jamais dans ce message.311* Le chemin et la requête n'apparaissent jamais dans ce message.

310* Claude Code prend l'origine après l'expansion `${VAR}`, donc un hôte qui provient d'une variable apparaît développé.312* Pour un serveur dans la portée locale, de projet, ou utilisateur [scope](#mcp-installation-scopes) ou dans la configuration MCP gérée, l'origine affiche l'hôte tel qu'écrit dans cette configuration, donc une référence `${VAR}` dans l'hôte n'est pas développée dans le message.

311* Pour un échec sans code de statut ou d'erreur, Claude Code affiche le texte d'erreur sans l'origine.313* Pour un échec sans code de statut ou d'erreur, Claude Code affiche le texte d'erreur sans l'origine.

312 314 

313Un serveur distant dont la configuration a une `url` vide s'affiche comme `not configured` dans `/mcp`, dans `claude mcp list`, et dans le [gestionnaire `/plugin`](/docs/fr/plugins), et Claude Code ne tente pas de s'y connecter. Un plugin peut inclure une entrée d'espace réservé comme celle-ci pour un connecteur que vous configurez plus tard, afin que Claude Code ne la rapporte pas comme une erreur ou un problème de configuration. La vue de détail du serveur dans `/mcp` lit `No URL configured for this server` ; définissez l'`url` de l'entrée pour la connecter. Avant la v2.1.208, Claude Code rapportait une `url` vide comme un problème de configuration avec une invite de reconnexion.315Un serveur distant dont la configuration a une `url` vide s'affiche comme `not configured` dans `/mcp`, dans `claude mcp list`, et dans le [gestionnaire `/plugin`](/docs/fr/plugins), et Claude Code ne tente pas de s'y connecter. Un plugin peut inclure une entrée d'espace réservé comme celle-ci pour un connecteur que vous configurez plus tard, afin que Claude Code ne la rapporte pas comme une erreur ou un problème de configuration. La vue de détail du serveur dans `/mcp` lit `No URL configured for this server` ; définissez l'`url` de l'entrée pour la connecter. Avant la v2.1.208, Claude Code rapportait une `url` vide comme un problème de configuration avec une invite de reconnexion.


345 347 

346Lorsque vous basculez un serveur, Claude Code enregistre votre choix par projet dans `~/.claude.json`, dans l'une de deux listes qui couvrent des ensembles disjoints de serveurs :348Lorsque vous basculez un serveur, Claude Code enregistre votre choix par projet dans `~/.claude.json`, dans l'une de deux listes qui couvrent des ensembles disjoints de serveurs :

347 349 

348* `disabledMcpServers` : une liste d'exclusion pour les serveurs configurés par l'utilisateur, les serveurs de plugins, les connecteurs claude.ai que Claude Code [récupère lui-même](#how-connectors-reach-claude-code), et les serveurs intégrés qui sont activés par défaut. Claude Code ne se connecte pas à un serveur que vous listez ici. Lorsque vous désactivez un connecteur claude.ai avec le basculement `/mcp` par projet décrit dans [Désactiver les connecteurs claude.ai](#disable-claude-ai-connectors), Claude Code l'écrit dans cette liste sous son nom d'affichage, par exemple `claude.ai Slack`.350* `disabledMcpServers` : une liste d'exclusion pour les serveurs configurés par l'utilisateur, les serveurs de plugins, les serveurs que votre organisation [fournit via les paramètres gérés](/docs/fr/managed-mcp#provide-servers-through-managed-settings), les connecteurs claude.ai que Claude Code [récupère lui-même](#how-connectors-reach-claude-code), et les serveurs intégrés qui sont activés par défaut. Claude Code ne se connecte pas à un serveur que vous listez ici. Lorsque vous désactivez un connecteur claude.ai avec le basculement `/mcp` par projet décrit dans [Désactiver les connecteurs claude.ai](#disable-claude-ai-connectors), Claude Code l'écrit dans cette liste sous son nom d'affichage, par exemple `claude.ai Slack`.

349* `enabledMcpServers` : une liste d'inclusion pour les serveurs intégrés qui sont désactivés par défaut, tels que `computer-use`. Claude Code se connecte à un serveur désactivé par défaut uniquement lorsque vous le listez ici.351* `enabledMcpServers` : une liste d'inclusion pour les serveurs intégrés qui sont désactivés par défaut, tels que `computer-use`. Claude Code se connecte à un serveur désactivé par défaut uniquement lorsque vous le listez ici.

350 352 

351Claude Code consulte exactement l'une des deux listes pour chaque serveur, donc aucune liste ne remplace l'autre. Si vous ajoutez un serveur régulier à `enabledMcpServers`, ou un serveur intégré désactivé par défaut à `disabledMcpServers`, Claude Code ignore l'entrée.353Claude Code consulte exactement l'une des deux listes pour chaque serveur, donc aucune liste ne remplace l'autre. Si vous ajoutez un serveur régulier à `enabledMcpServers`, ou un serveur intégré désactivé par défaut à `disabledMcpServers`, Claude Code ignore l'entrée.


371* N'enregistre pas un serveur de [canal](#push-messages-with-channels) qui se connecte sur la révision plus récente, car cette révision ne peut pas transporter les messages de canal.373* N'enregistre pas un serveur de [canal](#push-messages-with-channels) qui se connecte sur la révision plus récente, car cette révision ne peut pas transporter les messages de canal.

372* Échoue une [connexion OAuth MCP](#authenticate-with-remote-mcp-servers) dont la réponse d'autorisation nomme un émetteur inattendu.374* Échoue une [connexion OAuth MCP](#authenticate-with-remote-mcp-servers) dont la réponse d'autorisation nomme un émetteur inattendu.

373 375 

374Anthropic peut garder un serveur spécifique sur le protocole antérieur, ou hors de ce flux, avec un drapeau de fonctionnalité que Claude Code récupère. Dans une session [Claude Code sur le web](/docs/fr/cloud-environments#network-access), Claude Code demande à ses connecteurs MCP uniquement si vous définissez `MCP_PROTOCOL_NEGOTIATION` sur `auto`.376Anthropic peut garder un serveur spécifique sur le protocole antérieur, ou hors de ce flux, avec un drapeau de fonctionnalité que Claude Code récupère.

375 377 

376Pour choisir le runtime vous-même, définissez [`MCP_SDK_GENERATION`](/docs/fr/env-vars) sur `v1` ou `v2`. Pour décider si Claude Code demande, définissez [`MCP_PROTOCOL_NEGOTIATION`](/docs/fr/env-vars) sur `auto` ou `legacy`. Où Claude Code utilise v1 par défaut, épingler `v2` ne le fait pas demander, donc définissez `auto` aussi.378Pour choisir le runtime vous-même, définissez [`MCP_SDK_GENERATION`](/docs/fr/env-vars) sur `v1` ou `v2`. Pour décider si Claude Code demande, définissez [`MCP_PROTOCOL_NEGOTIATION`](/docs/fr/env-vars) sur `auto` ou `legacy`. Où Claude Code utilise v1 par défaut, épingler `v2` ne le fait pas demander, donc définissez `auto` aussi.

377 379 


535 537 

536* **Cycle de vie automatique** : les serveurs se connectent et se déconnectent à ces points :538* **Cycle de vie automatique** : les serveurs se connectent et se déconnectent à ces points :

537 * Au démarrage de la session, Claude Code connecte automatiquement les serveurs des plugins activés. Dans `/mcp`, un serveur de plugin distant (HTTP ou SSE) que vous avez utilisé auparavant peut afficher le statut [`cached`](#server-status-detail) à la place ; Claude Code le connecte lorsque Claude appelle pour la première fois l'un de ses outils539 * Au démarrage de la session, Claude Code connecte automatiquement les serveurs des plugins activés. Dans `/mcp`, un serveur de plugin distant (HTTP ou SSE) que vous avez utilisé auparavant peut afficher le statut [`cached`](#server-status-detail) à la place ; Claude Code le connecte lorsque Claude appelle pour la première fois l'un de ses outils

538 * Si vous activez ou désactivez un plugin pendant une session, exécutez `/reload-plugins` pour connecter ou déconnecter ses serveurs MCP. Lorsque vous rechargez, Claude Code conserve les connexions en direct des serveurs de plugins dont la configuration est inchangée, et fait de même lorsque vous [remplacez la liste des serveurs MCP de la session](/docs/fr/agent-sdk/typescript#mcpsetserversresult) à partir du Agent SDK sans les nommer540 * Si vous activez ou désactivez un plugin pendant une session, Claude Code connecte ou déconnecte ses serveurs MCP lorsque la modification s'applique. [Appliquer les modifications de plugin sans redémarrer](/docs/fr/discover-plugins#apply-plugin-changes-without-restarting) décrit quand c'est le cas. Dans une session sans terminal interactif, `/reload-plugins` ne connecte ou ne déconnecte pas les serveurs MCP du plugin ; ces modifications prennent effet dans votre prochaine session

541 * Lorsque vous rechargez, Claude Code conserve les connexions en direct des serveurs de plugins dont la configuration est inchangée, et fait de même lorsque vous [remplacez la liste des serveurs MCP de la session](/docs/fr/agent-sdk/typescript#mcpsetserversresult) à partir du Agent SDK sans les nommer

539 * Lorsque vous [déplacez la session avec `/cd`](/docs/fr/permissions#move-the-session-to-another-directory) sur v2.1.246 ou ultérieur, Claude Code connecte les serveurs des plugins que les paramètres du nouveau répertoire activent et déconnecte les serveurs des plugins qui ne sont plus activés, donc vous n'avez pas besoin d'exécuter `/reload-plugins` après le déplacement542 * Lorsque vous [déplacez la session avec `/cd`](/docs/fr/permissions#move-the-session-to-another-directory) sur v2.1.246 ou ultérieur, Claude Code connecte les serveurs des plugins que les paramètres du nouveau répertoire activent et déconnecte les serveurs des plugins qui ne sont plus activés, donc vous n'avez pas besoin d'exécuter `/reload-plugins` après le déplacement

540 * Dans les [sessions web](/docs/fr/claude-code-on-the-web), un appel MCP à un serveur de plugin qui n'est pas encore connecté, comme juste après qu'une session inactive se réveille, démarre le serveur à la demande et attend qu'il se connecte543 * Dans les [sessions web](/docs/fr/claude-code-on-the-web), un appel MCP à un serveur de plugin qui n'est pas encore connecté, comme juste après qu'une session inactive se réveille, démarre le serveur à la demande et attend qu'il se connecte

541* **Espaces réservés de chemin** : `${CLAUDE_PLUGIN_ROOT}` se résout au répertoire d'installation du plugin, `${CLAUDE_PLUGIN_DATA}` à son répertoire d'[état persistant](/docs/fr/plugins-reference#persistent-data-directory), et `${CLAUDE_PROJECT_DIR}` à la racine du projet stable. La substitution s'applique à :544* **Espaces réservés de chemin** : `${CLAUDE_PLUGIN_ROOT}` se résout au répertoire d'installation du plugin, `${CLAUDE_PLUGIN_DATA}` à son répertoire d'[état persistant](/docs/fr/plugins-reference#persistent-data-directory), et `${CLAUDE_PROJECT_DIR}` à la racine du projet stable. La substitution s'applique à :


564 Portées d'installation MCP567 Portées d'installation MCP

565</h2>568</h2>

566 569 

567Les 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. Les administrateurs peuvent également déployer des serveurs au niveau de l'entreprise via la [configuration gérée](#managed-mcp-configuration).570Les 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. Les administrateurs peuvent également déployer ou fournir des serveurs pour chaque utilisateur via la [configuration gérée](#managed-mcp-configuration).

568 571 

569| Portée | Se charge dans | Partagé avec l'équipe | Stocké dans |572| Portée | Se charge dans | Partagé avec l'équipe | Stocké dans |

570| -------------------------- | ------------------------ | ------------------------------- | --------------------------------- |573| -------------------------- | ------------------------ | ------------------------------- | --------------------------------- |


633 636 

634Pour des raisons de sécurité, Claude Code demande une approbation dans les sessions interactives avant d'utiliser les serveurs à portée de projet à partir des fichiers `.mcp.json`. Pour réinitialiser ces choix d'approbation, exécutez `claude mcp reset-project-choices`.637Pour des raisons de sécurité, Claude Code demande une approbation dans les sessions interactives avant d'utiliser les serveurs à portée de projet à partir des fichiers `.mcp.json`. Pour réinitialiser ces choix d'approbation, exécutez `claude mcp reset-project-choices`.

635 638 

636Dans les exécutions `claude -p`, les sessions du [SDK Agent](/docs/fr/headless) et les [sessions cloud](/docs/fr/claude-code-on-the-web), Claude Code ne peut pas afficher cette invite : il charge les serveurs à portée de projet sans demander. Claude Code ignore également l'invite dans une session que vous démarrez en mode `bypassPermissions` avec [`skipDangerousModePermissionPrompt`](/docs/fr/settings-reference#skipdangerousmodepermissionprompt) défini. Pour garder un serveur à l'écart de toute façon :639Dans les exécutions `claude -p`, les sessions du [SDK Agent](/docs/fr/headless) et les [sessions cloud](/docs/fr/claude-code-on-the-web), Claude Code ne peut pas afficher cette invite : il charge les serveurs à portée de projet sans demander. Claude Code ignore également l'invite dans une session que vous démarrez en mode `bypassPermissions` avec [`skipDangerousModePermissionPrompt`](/docs/fr/settings-reference#skipdangerousmodepermissionprompt) défini dans vos paramètres utilisateur ou dans les paramètres gérés. Pour garder un serveur à l'écart de toute façon :

637 640 

638* Ajoutez-le à [`disabledMcpjsonServers`](/docs/fr/settings-reference#disabledmcpjsonservers), qui le bloque dans tous les modes de permission.641* Ajoutez-le à [`disabledMcpjsonServers`](/docs/fr/settings-reference#disabledmcpjsonservers), qui le bloque dans tous les modes de permission.

639* Excluez entièrement les paramètres du projet avec [`--setting-sources`](/docs/fr/cli-reference#cli-flags) ou l'option `settingSources` du SDK.642* Excluez entièrement les paramètres du projet avec [`--setting-sources`](/docs/fr/cli-reference#cli-flags) ou l'option `settingSources` du SDK.


666 669 

667Les 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.670Les 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.

668 671 

672Un serveur que votre organisation fournit via le paramètre géré [`managedMcpServers`](/docs/fr/managed-mcp#provide-servers-through-managed-settings) se classe au-dessus de tous ceux-ci, donc lorsque l'un d'eux le duplique, Claude Code se connecte à la définition de l'organisation. Nécessite Claude Code v2.1.259 ou ultérieur.

673 

669Si vous ouvrez une session locale dans l'[onglet Code de l'application de bureau](/docs/fr/desktop#mcp-servers-from-the-claude-desktop-chat-app) avec le même nom de serveur stdio au niveau supérieur de `~/.claude.json` (portée utilisateur) et dans `.mcp.json`, l'onglet Code utilise la définition `~/.claude.json`.674Si vous ouvrez une session locale dans l'[onglet Code de l'application de bureau](/docs/fr/desktop#mcp-servers-from-the-claude-desktop-chat-app) avec le même nom de serveur stdio au niveau supérieur de `~/.claude.json` (portée utilisateur) et dans `.mcp.json`, l'onglet Code utilise la définition `~/.claude.json`.

670 675 

671<h3 id="environment-variable-expansion-in-mcp-json">676<h3 id="environment-variable-expansion-in-mcp-json">


775* Pour un serveur auprès duquel vous ne vous êtes pas connecté, l'un ou l'autre code de statut le signale dans `/mcp` afin que vous puissiez compléter le flux OAuth.780* Pour un serveur auprès duquel vous ne vous êtes pas connecté, l'un ou l'autre code de statut le signale dans `/mcp` afin que vous puissiez compléter le flux OAuth.

776* Pour un [connecteur claude.ai](#use-mcp-servers-from-claude-ai), un `401` causé par le rejet de votre jeton de session par claude.ai ne signale pas le connecteur, car la réautorisation du connecteur ne peut pas corriger votre connexion. Claude Code affiche plutôt l'[état de rejet du jeton de session](/docs/fr/errors#claude-ai-rejected-the-session-token).781* Pour un [connecteur claude.ai](#use-mcp-servers-from-claude-ai), un `401` causé par le rejet de votre jeton de session par claude.ai ne signale pas le connecteur, car la réautorisation du connecteur ne peut pas corriger votre connexion. Claude Code affiche plutôt l'[état de rejet du jeton de session](/docs/fr/errors#claude-ai-rejected-the-session-token).

777* Pour un serveur dont vous avez configuré l'en-tête `Authorization`, dans `headers` ou via un [`headersHelper`](#use-dynamic-headers-for-custom-authentication), un `401` ou `403` lors de la connexion ne signale pas le serveur, car l'identifiant à corriger est celui que vous avez configuré. Claude Code signale plutôt la connexion comme échouée.782* Pour un serveur dont vous avez configuré l'en-tête `Authorization`, dans `headers` ou via un [`headersHelper`](#use-dynamic-headers-for-custom-authentication), un `401` ou `403` lors de la connexion ne signale pas le serveur, car l'identifiant à corriger est celui que vous avez configuré. Claude Code signale plutôt la connexion comme échouée.

783* Pour un connecteur [livré à une session cloud](#how-connectors-reach-claude-code), Claude Code n'exécute pas de flux de connexion, car le proxy de la session s'authentifie auprès du connecteur avec l'autorisation que vous avez accordée dans claude.ai. Lorsqu'un connecteur là-bas a besoin d'être autorisé à nouveau, reconnectez-le à [claude.ai/customize/connectors](https://claude.ai/customize/connectors) plutôt que depuis la session.

778 784 

779Lorsqu'une demande à un serveur OAuth auprès duquel vous vous êtes déjà connecté retourne `401 Unauthorized`, Claude Code actualise le jeton stocké, se reconnecte et réessaie la demande une fois. Il signale le serveur dans `/mcp` uniquement si cette nouvelle tentative échoue également. Avant la v2.1.206, une actualisation de jeton qui échouait pour une raison transitoire, comme une erreur réseau, signalait un serveur OAuth comme nécessitant une authentification pour le reste de la session même si son jeton d'actualisation était toujours valide.785Lorsqu'une demande à un serveur OAuth auprès duquel vous vous êtes déjà connecté retourne `401 Unauthorized`, Claude Code actualise le jeton stocké, se reconnecte et réessaie la demande une fois. Il signale le serveur dans `/mcp` uniquement si cette nouvelle tentative échoue également. Avant la v2.1.206, une actualisation de jeton qui échouait pour une raison transitoire, comme une erreur réseau, signalait un serveur OAuth comme nécessitant une authentification pour le reste de la session même si son jeton d'actualisation était toujours valide.

780 786 


920 Conseils :926 Conseils :

921 927 

922 * 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 configuration928 * 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

929 * Vous pouvez définir le secret client uniquement lorsque vous ajoutez le serveur. Lorsque vous vous authentifiez avec `claude mcp login` ou à partir de `/mcp`, Claude Code utilise le secret stocké et ne demande pas de secret ou ne lit pas `MCP_CLIENT_SECRET`

930 * Pour ajouter ou modifier le secret ultérieurement, supprimez le serveur avec `claude mcp remove <name>`, puis ajoutez-le à nouveau avec `--client-secret` et le même `--scope`

923 * Si le serveur utilise un client OAuth public sans secret, utilisez uniquement `--client-id` sans `--client-secret`931 * Si le serveur utilise un client OAuth public sans secret, utilisez uniquement `--client-id` sans `--client-secret`

924 * Ces drapeaux s'appliquent uniquement aux transports HTTP et SSE. Ils n'ont aucun effet sur les serveurs stdio932 * Ces drapeaux s'appliquent uniquement aux transports HTTP et SSE. Ils n'ont aucun effet sur les serveurs stdio

925 * Utilisez `claude mcp get <name>` pour vérifier que les identifiants OAuth sont configurés pour un serveur933 * Utilisez `claude mcp get <name>` pour vérifier que les identifiants OAuth sont configurés pour un serveur


1190 1198 

1191Si `/mcp` ne liste pas un connecteur que vous avez ajouté, exécutez `/status` pour confirmer quelle méthode d'authentification est active. Désinscrivez cette variable d'environnement, supprimez le paramètre `apiKeyHelper`, ou [désactivez le profil](/docs/fr/authentication#anthropic-profiles-and-federation-credentials), puis exécutez `/login` pour sélectionner votre compte claude.ai.1199Si `/mcp` ne liste pas un connecteur que vous avez ajouté, exécutez `/status` pour confirmer quelle méthode d'authentification est active. Désinscrivez cette variable d'environnement, supprimez le paramètre `apiKeyHelper`, ou [désactivez le profil](/docs/fr/authentication#anthropic-profiles-and-federation-credentials), puis exécutez `/login` pour sélectionner votre compte claude.ai.

1192 1200 

1201Si une temporaire problème réseau empêche la liste des connecteurs de se charger au démarrage de votre session, Claude Code réessaie la récupération jusqu'à trois fois en arrière-plan, et les connecteurs apparaissent une fois qu'une tentative réussit. S'ils n'ont toujours pas apparu, redémarrez Claude Code pour récupérer la liste à nouveau.

1202 

1193Si `/mcp` affiche un connecteur comme `connected · session token rejected`, ou sa vue détaillée affiche [`claude.ai rejected the session token`](/docs/fr/errors#claude-ai-rejected-the-session-token), claude.ai a rejeté le jeton de votre connexion Claude Code, généralement parce que la connexion a expiré et n'a pas pu être actualisée. Autoriser à nouveau le connecteur n'efface pas cet état, car l'autorisation propre du connecteur dans claude.ai n'est pas ce qui a été rejeté. Pour l'effacer :1203Si `/mcp` affiche un connecteur comme `connected · session token rejected`, ou sa vue détaillée affiche [`claude.ai rejected the session token`](/docs/fr/errors#claude-ai-rejected-the-session-token), claude.ai a rejeté le jeton de votre connexion Claude Code, généralement parce que la connexion a expiré et n'a pas pu être actualisée. Autoriser à nouveau le connecteur n'efface pas cet état, car l'autorisation propre du connecteur dans claude.ai n'est pas ce qui a été rejeté. Pour l'effacer :

1194 1204 

11951. Exécutez `/login` pour vous reconnecter.12051. Exécutez `/login` pour vous reconnecter.


1323* **Limite configurable** : vous pouvez ajuster le nombre maximum de tokens de sortie MCP autorisés à l'aide de la variable d'environnement `MAX_MCP_OUTPUT_TOKENS`1333* **Limite configurable** : vous pouvez ajuster le nombre maximum de tokens de sortie MCP autorisés à l'aide de la variable d'environnement `MAX_MCP_OUTPUT_TOKENS`

1324* **Limite par défaut** : le maximum par défaut est de 25 000 tokens1334* **Limite par défaut** : le maximum par défaut est de 25 000 tokens

1325* **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 textuel, indépendamment de la valeur définie pour `MAX_MCP_OUTPUT_TOKENS`. Les outils qui retournent des données d'image restent soumis à `MAX_MCP_OUTPUT_TOKENS`1335* **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 textuel, indépendamment de la valeur définie pour `MAX_MCP_OUTPUT_TOKENS`. Les outils qui retournent des données d'image restent soumis à `MAX_MCP_OUTPUT_TOKENS`

1336* **Au-delà de la limite** : lorsqu'un résultat sans contenu d'image dépasse la limite, Claude Code l'enregistre dans un fichier et le remplace dans la conversation par un message qui indique le chemin du fichier, de sorte que Claude lit le fichier lorsqu'il a besoin du contenu. Le fichier se trouve dans le répertoire `tool-results` de la session sous [`~/.claude/projects/`](/docs/fr/claude-directory#cleaned-up-automatically).

1326 1337 

1327Pour augmenter la limite pour les outils qui produisent des sorties volumineuses :1338Pour augmenter la limite pour les outils qui produisent des sorties volumineuses :

1328 1339 


1621 Configuration MCP gérée1632 Configuration MCP gérée

1622</h2>1633</h2>

1623 1634 

1624Pour les organisations qui ont besoin d'un contrôle centralisé sur les serveurs MCP auxquels les utilisateurs peuvent se connecter, consultez [Configuration MCP gérée](/docs/fr/managed-mcp). Elle couvre le déploiement d'un ensemble fixe de serveurs avec `managed-mcp.json`, la restriction des serveurs avec `allowedMcpServers` et `deniedMcpServers`, et ce que les utilisateurs voient lorsqu'un serveur est bloqué.1635Pour les organisations qui ont besoin d'un contrôle centralisé sur les serveurs MCP auxquels les utilisateurs peuvent se connecter, consultez [Configuration MCP gérée](/docs/fr/managed-mcp). Elle couvre le déploiement d'un ensemble fixe de serveurs avec `managed-mcp.json`, la fourniture de serveurs à chaque utilisateur avec `managedMcpServers`, la restriction des serveurs avec `allowedMcpServers` et `deniedMcpServers`, et ce que les utilisateurs voient lorsqu'un serveur est bloqué.

mobile.md +104 −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 mobile

6 

7> Démarrez, surveillez et pilotez les tâches Claude Code depuis votre téléphone avec l'application Claude pour iOS et Android.

8 

9L'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) est un client pour les sessions Claude Code plutôt qu'un endroit où le code s'exécute. Depuis votre téléphone, vous accédez à des [sessions cloud](#start-and-monitor-cloud-sessions) dans le cloud, une session s'exécutant sur votre propre machine via [Remote Control](#continue-a-local-session-with-remote-control), ou l'application Desktop via [Dispatch](/docs/fr/desktop#sessions-from-dispatch).

10 

11<Note>

12 Claude Code n'a pas d'application mobile distincte : les sessions cloud et Remote Control se trouvent tous deux dans l'onglet **Code** de l'application Claude, et Dispatch est une tâche à laquelle vous envoyez des messages dans l'application.

13</Note>

14 

15<h2 id="get-the-app">

16 Obtenir l'application

17</h2>

18 

19<Steps>

20 <Step title="Télécharger l'application Claude">

21 Installez 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). Sur un iPad, installez la même application iOS.

22 

23 <Tip>

24 Exécutez `/mobile` dans une session Claude Code pour afficher un code QR de téléchargement que vous pouvez scanner. `/ios` et `/android` font la même chose.

25 </Tip>

26 </Step>

27 

28 <Step title="Se connecter">

29 Connectez-vous avec le même compte claude.ai et la même organisation que vous utilisez pour Claude Code. Les sessions cloud et Remote Control nécessitent un compte claude.ai, ils ne sont donc pas accessibles avec une clé API Anthropic Console ou auprès d'un fournisseur tiers tel qu'Amazon Bedrock.

30 </Step>

31 

32 <Step title="Ouvrir l'onglet Code">

33 Appuyez sur **Code** dans la navigation de l'application pour accéder à vos sessions, ou ouvrez [claude.ai/code/new](https://claude.ai/code/new) sur votre téléphone pour démarrer une nouvelle session Code dans l'application. Si vous ne voyez pas l'onglet Code, votre plan ou votre organisation peut ne pas inclure ces fonctionnalités ; consultez [disponibilité par plan d'abonnement](/docs/fr/feature-availability#availability-by-subscription-plan).

34 </Step>

35</Steps>

36 

37<h2 id="work-from-your-phone">

38 Travailler depuis votre téléphone

39</h2>

40 

41Depuis l'application, vous pouvez démarrer des sessions cloud, piloter une session Claude Code s'exécutant sur votre ordinateur, ou envoyer une tâche à Dispatch. L'application est la même pour les trois ; ils diffèrent par l'endroit où le travail se fait.

42 

43| Fonctionnalité | Ce à quoi vous vous connectez | Quand l'utiliser |

44| :--------------------------------------------------- | :--------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

45| [Claude Code sur le web](/docs/fr/claude-code-on-the-web) | Une session cloud sur l'infrastructure cloud, gérée par Anthropic par défaut | Votre référentiel est sur GitHub et la tâche doit continuer à s'exécuter après avoir rangé votre téléphone. Consultez le [guide de démarrage rapide web](/docs/fr/web-quickstart) pour configurer. |

46| [Remote Control](/docs/fr/remote-control) | Une session Claude Code s'exécutant sur votre ordinateur | Le travail a besoin de votre système de fichiers local, d'outils ou de serveurs MCP. |

47| [Dispatch](/docs/fr/desktop#sessions-from-dispatch) | L'application Desktop sur votre ordinateur | Vous voulez envoyer une tâche et laisser Dispatch décider comment l'exécuter. Nécessite un plan Pro ou Max. |

48 

49Si votre ordinateur sera éteint, utilisez les sessions cloud, qui s'exécutent sur le cloud et continuent avec votre ordinateur portable fermé. Remote Control et Dispatch pilotent votre propre machine, elle doit donc rester allumée avec Claude Code ou l'application Desktop en cours d'exécution. Si votre machine se met en veille pendant une session Remote Control, Claude Code se reconnecte quand la machine revient en ligne.

50 

51Pour une comparaison plus complète, consultez [travailler quand vous êtes loin de votre terminal](/docs/fr/platforms#work-when-you-are-away-from-your-terminal).

52 

53Les sessions cloud et Remote Control s'exécutent à partir de l'onglet **Code**. Pour Dispatch, que vous envoyez en tant que tâche dans l'application, consultez [sessions de Dispatch](/docs/fr/desktop#sessions-from-dispatch).

54 

55<h3 id="start-and-monitor-cloud-sessions">

56 Démarrer et surveiller les sessions cloud

57</h3>

58 

59Claude Code sur le web exécute les tâches sur l'infrastructure cloud, gérée par Anthropic par défaut, donc une session continue après avoir rangé votre téléphone. À partir de l'onglet Code, sélectionnez un référentiel et une branche, décrivez la tâche et soumettez-la. Les sessions persistent sur les appareils : une tâche que vous démarrez sur votre ordinateur portable est prête à être examinée depuis votre téléphone, et une que vous démarrez depuis votre téléphone vous attend quand vous êtes de retour à votre bureau.

60 

61Ouvrez une session dans l'application pour vérifier la progression, répondre aux questions de Claude ou la diriger dans une nouvelle direction. Vous pouvez également dire à Claude de [surveiller une demande de tirage](/docs/fr/claude-code-on-the-web#auto-fix-pull-requests) et corriger les défaillances CI ou les commentaires d'examen au fur et à mesure qu'ils arrivent. Pour connecter GitHub et configurer votre environnement, suivez le [guide de démarrage rapide web](/docs/fr/web-quickstart), et consultez [Claude Code sur le web](/docs/fr/claude-code-on-the-web) pour tout ce que les sessions cloud peuvent faire.

62 

63<h3 id="continue-a-local-session-with-remote-control">

64 Continuer une session locale avec Remote Control

65</h3>

66 

67Remote Control connecte l'application Claude à une session Claude Code s'exécutant sur votre machine, de sorte que l'exécution du code et l'accès au système de fichiers restent locaux tandis que vous pilotez la session depuis votre téléphone. Démarrez la session sur votre ordinateur avec `claude remote-control`, ou exécutez `/remote-control` dans une session déjà ouverte. Ensuite, scannez le code QR de la session que le terminal peut afficher, ou ouvrez l'application Claude, appuyez sur **Code**, et choisissez la session dans la liste. Consultez [se connecter depuis un autre appareil](/docs/fr/remote-control#connect-from-another-device) pour chaque option.

68 

69Quand vous ajoutez une pièce jointe dans l'application Claude, elle atteint également la session locale :

70 

71* **Photos** : Claude voit les photos jointes directement comme faisant partie de votre message. Claude Code enregistre également chaque photo sous `~/.claude/uploads/` et indique à Claude le chemin du fichier enregistré, de sorte que Claude peut copier l'image dans les fichiers qu'il crée.

72* **Autres fichiers** : Claude Code les télécharge sur votre machine et les transmet à Claude en tant que références de fichier `@`.

73 

74Pour les exigences, les modes d'invocation et la résolution des problèmes, consultez l'[aperçu de Remote Control](/docs/fr/remote-control).

75 

76<h3 id="get-push-notifications">

77 Obtenir des notifications push

78</h3>

79 

80Quand Remote Control est actif, Claude peut envoyer des notifications push à votre téléphone, généralement quand une tâche longue se termine ou quand il a besoin d'une décision de votre part. Vous pouvez également en demander une dans votre invite, par exemple `notify me when the tests finish`. Consultez [notifications push mobiles](/docs/fr/remote-control#mobile-push-notifications) pour les deux bascules `/config` et la résolution des problèmes de livraison.

81 

82Dispatch envoie sa propre notification quand une session Code qu'il a créée se termine ou a besoin de votre approbation, décrite dans [sessions de Dispatch](/docs/fr/desktop#sessions-from-dispatch).

83 

84<h2 id="limitations">

85 Limitations

86</h2>

87 

88Le client mobile couvre la plupart de ce dont une session a besoin, avec quelques limitations :

89 

90* **Commandes locales uniquement** : les commandes qui s'exécutent uniquement dans l'interface du terminal, telles que `/plugin` et `/resume`, ne fonctionnent pas depuis l'application. Les [limitations de Remote Control](/docs/fr/remote-control#limitations) listent les commandes qui fonctionnent depuis mobile et comment leur comportement diffère.

91* **Modes de permission** : les sessions cloud offrent Accept edits, Plan et Auto dans le menu déroulant du mode, et les sessions Remote Control offrent Manual, Accept edits et Plan. Vous ne pouvez pas sélectionner Bypass permissions depuis l'application dans les deux cas, et vous ne pouvez pas sélectionner Auto pour une session Remote Control. Consultez [changer les modes de permission](/docs/fr/permission-modes#switch-permission-modes).

92* **Plans Dispatch** : Dispatch nécessite un plan Pro ou Max et n'est pas disponible sur Team ou Enterprise.

93 

94<h2 id="related-resources">

95 Ressources connexes

96</h2>

97 

98* [Plateformes et intégrations](/docs/fr/platforms) : comparez chaque surface sur laquelle Claude Code s'exécute

99* [Claude Code sur le web](/docs/fr/claude-code-on-the-web) : comment les sessions cloud s'exécutent et comment déplacer le travail vers et depuis votre terminal

100* [Configurer les environnements cloud](/docs/fr/cloud-environments) : niveaux d'accès réseau, variables d'environnement et scripts de configuration pour les sessions cloud

101* [Remote Control](/docs/fr/remote-control) : continuer une session locale depuis n'importe quel appareil

102* [Sessions de Dispatch](/docs/fr/desktop#sessions-from-dispatch) : comment les tâches Dispatch deviennent des sessions Code dans l'application Desktop

103* [Channels](/docs/fr/channels) : posez une question à Claude depuis votre téléphone via Telegram, Discord ou iMessage tandis que le travail s'exécute sur votre machine

104* [Claude Code dans Slack](/docs/fr/slack) : déléguez les tâches de codage depuis votre espace de travail Slack en mentionnant `@Claude`

model-config.md +128 −93

Details

34| Alias de modèle | Comportement |34| Alias de modèle | Comportement |

35| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |35| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

36| **`default`** | Valeur spéciale qui efface tout remplacement de modèle et revient à la [valeur par défaut du runtime pour votre compte](#default-model-setting). N'est pas en soi un alias de modèle |36| **`default`** | Valeur spéciale qui efface tout remplacement de modèle et revient à la [valeur par défaut du runtime pour votre compte](#default-model-setting). N'est pas en soi un alias de modèle |

37| **`best`** | Utilise le dernier modèle Fable où il est disponible pour vous, sinon le même modèle que `opus` |37| **`best`** | Utilise le modèle auquel l'alias [`fable` se résout](#fable-alias-resolution) où Fable est disponible pour vous, sinon le même modèle que `opus` |

38| **`fable`** | Utilise le dernier modèle Fable pour vos tâches les plus difficiles et les plus longues |38| **`fable`** | Utilise le [modèle Fable pour votre fournisseur](#fable-alias-resolution) pour vos tâches les plus difficiles et les plus longues |

39| **`sonnet`** | Utilise le dernier modèle Sonnet pour les tâches de codage quotidiennes |39| **`sonnet`** | Utilise le dernier modèle Sonnet pour les tâches de codage quotidiennes |

40| **`opus`** | Utilise le dernier modèle Opus pour les tâches de raisonnement complexe |40| **`opus`** | Utilise le dernier modèle Opus pour les tâches de raisonnement complexe |

41| **`haiku`** | Utilise le modèle Haiku rapide et efficace pour les tâches simples |41| **`haiku`** | Utilise le modèle Haiku rapide et efficace pour les tâches simples |


52| Amazon Bedrock, Agent Platform de Google Cloud | Opus 5 | Sonnet 4.5 |52| Amazon Bedrock, Agent Platform de Google Cloud | Opus 5 | Sonnet 4.5 |

53| Microsoft Foundry | Opus 4.6 | Sonnet 4.5 |53| Microsoft Foundry | Opus 4.6 | Sonnet 4.5 |

54 54 

55Sauf si vous définissez `ANTHROPIC_DEFAULT_FABLE_MODEL`, l'alias `fable` se résout en Fable 5.1. Avant v2.1.255, il se résolvait en Fable 5.55<span id="fable-alias-resolution" />

56 

57Sauf si vous définissez `ANTHROPIC_DEFAULT_FABLE_MODEL`, l'alias `fable` se résout en Fable 5.1, sauf dans les sessions de [passerelle des applications Claude](/docs/fr/claude-apps-gateway), où `fable` et `best` se résolvent en Fable 5. Avant v2.1.257, `fable` se résolvait en Fable 5 sur chaque fournisseur.

58 

59Une passerelle qui n'est pas configurée pour servir `claude-fable-5-1` rejette les demandes pour ce modèle. Pour utiliser Fable 5.1 via une passerelle qui le sert, sélectionnez-le avec `/model claude-fable-5-1`.

56 60 

57Lorsqu'un alias se résout en un modèle plus ancien, les modèles plus récents sont disponibles en sélectionnant explicitement le nom de modèle complet ou en définissant `ANTHROPIC_DEFAULT_OPUS_MODEL` ou `ANTHROPIC_DEFAULT_SONNET_MODEL`.61Lorsqu'un alias se résout en un modèle plus ancien, les modèles plus récents sont disponibles en sélectionnant explicitement le nom de modèle complet ou en définissant `ANTHROPIC_DEFAULT_OPUS_MODEL` ou `ANTHROPIC_DEFAULT_SONNET_MODEL`.

58 62 


72 76 

73Aucun des deux modèles Fable n'est la valeur par défaut du type de compte sur aucun plan ou fournisseur. Sélectionnez-en un explicitement :77Aucun des deux modèles Fable n'est la valeur par défaut du type de compte sur aucun plan ou fournisseur. Sélectionnez-en un explicitement :

74 78 

75* **Fable 5.1** : exécutez `/model fable`, ou lancez avec `claude --model fable`.79* **Fable 5.1** : exécutez `/model fable`, ou lancez avec `claude --model fable`. Dans les sessions de [passerelle des applications Claude](/docs/fr/claude-apps-gateway), où l'alias se résout en Fable 5, exécutez `/model claude-fable-5-1` à la place.

76* **Fable 5** : sélectionnez-le par ID de modèle. Sur l'API Anthropic, exécutez `/model claude-fable-5` ou lancez avec `claude --model claude-fable-5`. Sur d'autres fournisseurs, utilisez l'ID de modèle Fable 5 de votre fournisseur ou [épinglez-le](#pin-models-for-third-party-deployments) avec `ANTHROPIC_DEFAULT_FABLE_MODEL`.80* **Fable 5** : sélectionnez-le par ID de modèle. Sur l'API Anthropic, exécutez `/model claude-fable-5` ou lancez avec `claude --model claude-fable-5`. Sur d'autres fournisseurs, utilisez l'ID de modèle Fable 5 de votre fournisseur ou [épinglez-le](#pin-models-for-third-party-deployments) avec `ANTHROPIC_DEFAULT_FABLE_MODEL`.

77 81 

78Si vos paramètres utilisateur contiennent `claude-fable-5` ou `claude-fable-5[1m]` comme modèle, par exemple parce que vous avez sélectionné Fable dans le sélecteur `/model` avant v2.1.255, et que vous vous connectez directement à l'API Anthropic, Claude Code change cette valeur enregistrée en alias `fable` ou `fable[1m]` la première fois que vous exécutez v2.1.255 ou version ultérieure, et la ligne du modèle de démarrage affiche `(auto-updated)` une fois. Une valeur `claude-fable-5` dans les paramètres du projet, locaux ou gérés est laissée telle quelle.82Si vous vous connectez directement à l'API Anthropic et que vos paramètres utilisateur contiennent `claude-fable-5` ou `claude-fable-5[1m]` comme modèle, par exemple parce que vous avez sélectionné Fable dans le sélecteur `/model` avant v2.1.257, Claude Code change cette valeur enregistrée en alias `fable` ou `fable[1m]` la première fois que vous exécutez v2.1.257 ou version ultérieure. La ligne du modèle de démarrage affiche `(auto-updated)` une fois. Une valeur `claude-fable-5` dans les paramètres du projet, locaux ou gérés reste telle quelle.

79 83 

80Les demandes qu'un modèle Fable signale par ses classificateurs de sécurité, le plus souvent dans les domaines de la cybersécurité et de la biologie, déclenchent un [basculement automatique du modèle](#automatic-model-fallback).84Les demandes qu'un modèle Fable signale par ses classificateurs de sécurité, le plus souvent dans les domaines de la cybersécurité et de la biologie, déclenchent un [basculement automatique du modèle](#automatic-model-fallback).

81 85 


87* **Dimensionnez les tâches plus importantes** : donnez-lui du travail que vous diviseriez normalement en morceaux. Il maintient de longues sessions sans perdre le fil.91* **Dimensionnez les tâches plus importantes** : donnez-lui du travail que vous diviseriez normalement en morceaux. Il maintient de longues sessions sans perdre le fil.

88 92 

89<Note>93<Note>

90 Fable 5.1 nécessite Claude Code v2.1.255 ou version ultérieure. Si une demande pour celui-ci à partir d'une version plus ancienne échoue, consultez [Claude Code does not support this model](/docs/fr/errors#claude-code-does-not-support-this-model). Fable 5 nécessite v2.1.170 ou version ultérieure. Exécutez `claude update` pour mettre à jour. Pour la disponibilité en vertu de la rétention zéro des données, consultez [Model availability under ZDR](/docs/fr/zero-data-retention#model-availability-under-zdr).94 Fable 5.1 nécessite Claude Code v2.1.257 ou version ultérieure. Si une demande pour celui-ci à partir d'une version plus ancienne échoue, consultez [Claude Code does not support this model](/docs/fr/errors#claude-code-does-not-support-this-model). Exécutez `claude update` pour mettre à jour. Pour la disponibilité en vertu de la rétention zéro des données, consultez [Model availability under ZDR](/docs/fr/zero-data-retention#model-availability-under-zdr).

91</Note>95</Note>

92 96 

93Sur l'API Anthropic, le sélecteur `/model` répertorie un modèle Fable uniquement après que le serveur le signale comme disponible pour votre organisation. Lorsque vous tapez `/model fable` ou un ID de modèle Fable, Claude Code vérifie la disponibilité directement auprès du serveur, de sorte qu'une sélection tapée peut réussir même lorsque le sélecteur ne répertorie pas l'entrée.97Sur l'API Anthropic, le sélecteur `/model` répertorie un modèle Fable uniquement après que le serveur le signale comme disponible pour votre organisation. Lorsque vous tapez `/model fable` ou un ID de modèle Fable, Claude Code vérifie la disponibilité directement auprès du serveur, de sorte qu'une sélection tapée peut réussir même lorsque le sélecteur ne répertorie pas l'entrée.


132* `Enter` : basculer le modèle et enregistrer comme valeur par défaut136* `Enter` : basculer le modèle et enregistrer comme valeur par défaut

133* `s` : basculer le modèle pour cette session uniquement137* `s` : basculer le modèle pour cette session uniquement

134 138 

135Taper `/model <name>` directement se comporte comme `Enter`. Un modèle défini avec `/model` en [mode non interactif](/docs/fr/headless), avec l'indicateur `-p`, s'applique à la session actuelle uniquement et n'est pas enregistré comme valeur par défaut. Les paramètres du projet et gérés conservent toujours la priorité et se réappliquent au prochain lancement. Un [modèle par défaut de l'organisation](#organization-default-model) que votre administrateur a configuré pour remplacer la sélection de l'utilisateur se réapplique également au prochain lancement.139Taper `/model <name>` directement se comporte comme `Enter`. Si vous définissez un modèle avec `/model` en [mode non interactif](/docs/fr/headless), avec l'indicateur `-p`, votre choix s'applique à la session actuelle uniquement et n'est pas enregistré comme valeur par défaut ; `/model` dans ce mode nécessite Claude Code v2.1.205 ou version ultérieure. Les paramètres du projet et gérés conservent toujours la priorité et se réappliquent au prochain lancement. Un [modèle par défaut de l'organisation](#organization-default-model) que votre administrateur a configuré pour remplacer la sélection de l'utilisateur se réapplique également au prochain lancement.

136 140 

137Dans v2.1.144 à v2.1.152, `/model` s'appliquait à la session actuelle uniquement et `d` dans le sélecteur enregistrait une valeur par défaut.141Dans v2.1.144 à v2.1.152, `/model` s'appliquait à la session actuelle uniquement et `d` dans le sélecteur enregistrait une valeur par défaut.

138 142 


146 150 

147Lorsque 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 ; le paramètre du projet ou géré se réapplique au prochain lancement. Sur les plates-formes qui intègrent Claude Code et définissent [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/fr/env-vars), la configuration du modèle de l'hôte a priorité sur les paramètres du modèle géré, tandis qu'une liste d'autorisation `availableModels` gérée reste en vigueur sauf si l'hôte en fournit une ; [Exceptions to managed settings precedence](/docs/fr/settings#exceptions-to-managed-settings-precedence) indique quelles clés et variables l'hôte remplace.151Lorsque 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 ; le paramètre du projet ou géré se réapplique au prochain lancement. Sur les plates-formes qui intègrent Claude Code et définissent [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/fr/env-vars), la configuration du modèle de l'hôte a priorité sur les paramètres du modèle géré, tandis qu'une liste d'autorisation `availableModels` gérée reste en vigueur sauf si l'hôte en fournit une ; [Exceptions to managed settings precedence](/docs/fr/settings#exceptions-to-managed-settings-precedence) indique quelles clés et variables l'hôte remplace.

148 152 

149Lorsqu'un changement de modèle est demandé via la méthode [`setModel()`](/docs/fr/agent-sdk/overview) du SDK Agent ou par une application telle que l'[application de bureau](/docs/fr/desktop) qui exécute l'interface de ligne de commande Claude Code pour vous, Claude Code vérifie que la chaîne est une qu'il reconnaît avant de l'enregistrer. Cette vérification nécessite Claude Code v2.1.200 ou version ultérieure. Sur l'API Anthropic, Claude Code reconnaît :153Si vous ou votre organisation configurez des crochets [PreModelSwitch](/docs/fr/hooks#premodelswitch), ils s'exécutent avant qu'un changement demandé s'applique et peuvent le bloquer ou vous demander de confirmer.

154 

155Lorsque Claude Code ne peut pas déterminer quels crochets PreModelSwitch vos [plugins gérés](/docs/fr/settings-reference#enabledplugins) de l'organisation fournissent, par exemple parce qu'un plugin géré n'a pas pu se charger, il refuse le changement plutôt que de l'appliquer sans vérification, et il vérifie à nouveau à chaque nouvelle tentative. Consultez [Model switch was blocked by a PreModelSwitch hook](/docs/fr/errors#model-switch-was-blocked-by-a-premodelswitch-hook) pour le message et la récupération.

156 

157Lorsque vous changez de modèle via la méthode [`setModel()`](/docs/fr/agent-sdk/overview) du SDK Agent ou à partir d'un appareil connecté via [Remote Control](/docs/fr/remote-control), ou une application telle que l'[application de bureau](/docs/fr/desktop) qui exécute l'interface de ligne de commande Claude Code pour vous, Claude Code vérifie que la chaîne est une qu'il reconnaît avant de l'enregistrer. Cette vérification nécessite Claude Code v2.1.200 ou version ultérieure. Vérifier un choix Remote Control nécessite Claude Code v2.1.260 ou version ultérieure sur votre machine. Sur l'API Anthropic, Claude Code reconnaît :

150 158 

151* un alias de modèle159* un alias de modèle

152* une entrée du sélecteur `/model`160* une entrée du sélecteur `/model`


417 Limites d'effort au niveau de l'organisation425 Limites d'effort au niveau de l'organisation

418</h2>426</h2>

419 427 

428Votre organisation peut plafonner le [niveau d'effort](#adjust-effort-level) de deux façons. Sur un plan Claude Enterprise, les administrateurs d'organisation définissent des limites d'effort par rôle, décrites ci-dessous. Sur n'importe quel plan et n'importe quel fournisseur, y compris Amazon Bedrock, Google Cloud's Agent Platform et Microsoft Foundry, le paramètre géré [`maxEffortLevel`](/docs/fr/settings-reference#maxeffortlevel) plafonne l'effort côté client. Lorsque les deux s'appliquent à un modèle, le plafond inférieur s'applique.

429 

420Les administrateurs d'organisation sur les plans Claude Enterprise peuvent définir un [niveau d'effort](#adjust-effort-level) maximum par modèle pour chaque rôle personnalisé, aux côtés des [restrictions de modèle au niveau de l'organisation](#organization-model-restrictions). Les niveaux au-dessus du plafond ne sont pas proposés dans le sélecteur `/effort`, et nommer un niveau supérieur avec `--effort` ou `/effort` s'exécute au plafond à la place. Dans les sessions interactives et les exécutions en texte brut `--print`, un avertissement nomme les niveaux demandés et appliqués ; avec une sortie `json` ou `stream-json` ou dans les agents en arrière-plan, le plafonnement s'applique silencieusement. Les plafonds sont par modèle, donc changer de modèle peut modifier les niveaux disponibles. Lorsque plusieurs de vos rôles accordent le même modèle, le plafond le moins restrictif s'applique. Nécessite Claude Code v2.1.195 ou version ultérieure.430Les administrateurs d'organisation sur les plans Claude Enterprise peuvent définir un [niveau d'effort](#adjust-effort-level) maximum par modèle pour chaque rôle personnalisé, aux côtés des [restrictions de modèle au niveau de l'organisation](#organization-model-restrictions). Les niveaux au-dessus du plafond ne sont pas proposés dans le sélecteur `/effort`, et nommer un niveau supérieur avec `--effort` ou `/effort` s'exécute au plafond à la place. Dans les sessions interactives et les exécutions en texte brut `--print`, un avertissement nomme les niveaux demandés et appliqués ; avec une sortie `json` ou `stream-json` ou dans les agents en arrière-plan, le plafonnement s'applique silencieusement. Les plafonds sont par modèle, donc changer de modèle peut modifier les niveaux disponibles. Lorsque plusieurs de vos rôles accordent le même modèle, le plafond le moins restrictif s'applique. Nécessite Claude Code v2.1.195 ou version ultérieure.

421 431 

422Les limites d'effort sont livrées avec les [restrictions de modèle au niveau de l'organisation](#organization-model-restrictions) et atteignent les mêmes sessions.432Les limites d'effort sont livrées avec les [restrictions de modèle au niveau de l'organisation](#organization-model-restrictions) et atteignent les mêmes sessions.


438 448 

439Avant la v2.1.219, `default` se résolvait en Opus 4.8 sur l'API Anthropic, Max, Team Premium et Enterprise avec paiement à l'usage à partir de la v2.1.154, et sur Claude Platform sur AWS, Amazon Bedrock et Agent Platform de Google Cloud à partir de la v2.1.207. Avant la v2.1.207, `default` se résolvait en Opus 4.7 sur Claude Platform sur AWS et en Sonnet 4.5 sur Amazon Bedrock et Agent Platform de Google Cloud.449Avant la v2.1.219, `default` se résolvait en Opus 4.8 sur l'API Anthropic, Max, Team Premium et Enterprise avec paiement à l'usage à partir de la v2.1.154, et sur Claude Platform sur AWS, Amazon Bedrock et Agent Platform de Google Cloud à partir de la v2.1.207. Avant la v2.1.207, `default` se résolvait en Opus 4.7 sur Claude Platform sur AWS et en Sonnet 4.5 sur Amazon Bedrock et Agent Platform de Google Cloud.

440 450 

441Lorsqu'un administrateur a défini un [modèle par défaut de l'organisation](#organization-default-model), `default` se résout en ce modèle au lieu du modèle par défaut du type de compte ci-dessus. Nécessite Claude Code v2.1.196 ou ultérieure. `default` peut également se résoudre en le modèle que vous définissez avec [`ANTHROPIC_DEFAULT_MODEL`](#set-a-default-model-for-new-sessions), selon les conditions énumérées dans sa section.451Quand un administrateur a défini un [modèle par défaut de l'organisation](#organization-default-model), `default` se résout en ce modèle au lieu du modèle par défaut du type de compte ci-dessus. Nécessite Claude Code v2.1.196 ou ultérieure. `default` peut également se résoudre en le modèle que vous avez défini avec [`ANTHROPIC_DEFAULT_MODEL`](#set-a-default-model-for-new-sessions), selon les conditions énumérées dans sa section.

442 452 

443Lorsque les paramètres gérés [appliquent la liste d'autorisation pour le modèle par défaut](#enforce-the-allowlist-for-the-default-model) et que le modèle par défaut du type de compte ne figure pas dans `availableModels`, `default` se résout en le modèle par défaut appliqué au lieu du modèle par défaut du type de compte ci-dessus. Lorsque les deux s'appliquent, le modèle par défaut de l'organisation remplace d'abord le modèle par défaut du type de compte, puis l'application s'applique à celui-ci : un modèle par défaut de l'organisation autorisé est conservé, tandis qu'un modèle en dehors de la liste se résout en le modèle par défaut appliqué.453Quand les paramètres gérés [appliquent la liste d'autorisation pour le modèle par défaut](#enforce-the-allowlist-for-the-default-model) et que le modèle par défaut du type de compte ne figure pas dans `availableModels`, `default` se résout en Default appliqué au lieu du modèle par défaut du type de compte ci-dessus. Quand les deux s'appliquent, le modèle par défaut de l'organisation remplace d'abord le modèle par défaut du type de compte, puis l'application s'y applique : un modèle par défaut de l'organisation autorisé est conservé, tandis qu'un modèle en dehors de la liste se résout en Default appliqué.

444 454 

445Les modèles Fable ne sont pas le modèle par défaut du type de compte sur aucun plan ou fournisseur. En choisir un avec `/model` l'enregistre comme modèle sélectionné dans vos paramètres utilisateur, de sorte que les sessions ultérieures commencent dessus. Pour la modification unique que Claude Code apporte à une sélection Fable 5 enregistrée dans la v2.1.255, voir [Travailler avec Fable](#work-with-fable).455Les modèles Fable ne sont le modèle par défaut du type de compte sur aucun plan ou fournisseur. En choisir un avec `/model` l'enregistre comme modèle sélectionné dans vos paramètres utilisateur, de sorte que les sessions ultérieures commencent dessus. Pour le changement unique que Claude Code apporte à une sélection Fable 5 enregistrée dans la v2.1.257, voir [Travailler avec Fable](#work-with-fable).

446 456 

447<h3 id="opusplan-model-setting">457<h3 id="opusplan-model-setting">

448 Paramètre de modèle `opusplan`458 Paramètre de modèle `opusplan`


455 465 

456Cela associe le raisonnement d'Opus pour la planification à l'efficacité de Sonnet pour l'exécution.466Cela associe le raisonnement d'Opus pour la planification à l'efficacité de Sonnet pour l'exécution.

457 467 

458La phase Opus en mode plan utilise la même fenêtre de contexte que le paramètre de modèle `opus`. Sur les niveaux d'abonnement où Opus est [automatiquement mis à niveau vers un contexte de 1M](#extended-context), `opusplan` reçoit la mise à niveau en mode plan également. Pour forcer un contexte de 1M pour les deux phases lorsque vous n'êtes pas sur un niveau de mise à niveau automatique, définissez le modèle sur `opusplan[1m]`.468La phase Opus en mode plan utilise la même fenêtre de contexte que le paramètre de modèle `opus`. Sur les niveaux d'abonnement où Opus est [automatiquement mis à niveau vers un contexte de 1M](#extended-context), `opusplan` reçoit la mise à niveau en mode plan également. Pour forcer un contexte de 1M pour les deux phases quand vous n'êtes pas sur un niveau de mise à niveau automatique, [définissez le modèle](#setting-your-model) sur `opusplan[1m]`, par exemple avec `/model opusplan[1m]`. Le définir avec `/model` nécessite Claude Code v2.1.265 ou ultérieure ; sur les versions antérieures, utilisez l'indicateur `--model` ou le paramètre `model` à la place.

459 469 

460Lorsque [`availableModels`](#restrict-model-selection) exclut le dernier Opus mais permet une version antérieure, par exemple `["sonnet", "claude-opus-4-6"]`, `opusplan` utilise le dernier Opus autorisé pour la planification et reste sur Sonnet uniquement lorsque chaque Opus est exclu. Une session Haiku qui se mettrait normalement à niveau vers Sonnet en mode plan utilise de même le dernier Sonnet autorisé, et reste sur Haiku uniquement lorsque chaque Sonnet est exclu. Avant la v2.1.205, le mode plan restait sur le modèle de la session chaque fois que la version la plus récente de la famille de mise à niveau était exclue, même lorsque la liste d'autorisation permettait une version antérieure.470Quand [`availableModels`](#restrict-model-selection) exclut le plus récent Opus mais permet une version antérieure, par exemple `["sonnet", "claude-opus-4-6"]`, `opusplan` utilise le plus récent Opus autorisé pour la planification et reste sur Sonnet uniquement quand chaque Opus est exclu. Une session Haiku qui se mettrait normalement à niveau vers Sonnet en mode plan utilise de même le plus récent Sonnet autorisé, et reste sur Haiku uniquement quand chaque Sonnet est exclu. Avant la v2.1.205, le mode plan restait sur le modèle de la session chaque fois que la version la plus récente de la famille de mise à niveau était exclue, même quand la liste d'autorisation permettait une version antérieure.

461 471 

462La substitution d'une version antérieure autorisée s'applique sur l'API Anthropic et [Claude Platform sur AWS](/docs/fr/claude-platform-on-aws). Sur Amazon Bedrock, Agent Platform de Google Cloud, Microsoft Foundry et Mantle, dont les déploiements utilisent des identifiants de modèle spécifiques au fournisseur, le mode plan reste sur le modèle de la session chaque fois que le modèle de mise à niveau est exclu.472La substitution d'une version antérieure autorisée s'applique sur l'API Anthropic et [Claude Platform sur AWS](/docs/fr/claude-platform-on-aws). Sur Amazon Bedrock, Agent Platform de Google Cloud, Microsoft Foundry et Mantle, dont les déploiements utilisent des ID de modèle spécifiques au fournisseur, le mode plan reste sur le modèle de la session chaque fois que le modèle de mise à niveau est exclu.

463 473 

464Pour une approche hybride où Claude décide à mi-tâche quand consulter un deuxième modèle plutôt que de basculer à la limite du plan, voir l'[outil conseiller](/docs/fr/advisor).474Pour une approche hybride où Claude décide au milieu d'une tâche quand consulter un deuxième modèle plutôt que de basculer à la limite du plan, voir l'[outil advisor](/docs/fr/advisor).

465 475 

466<h3 id="fallback-model-chains">476<h3 id="fallback-model-chains">

467 Chaînes de modèles de secours477 Chaînes de modèles de secours

468</h3>478</h3>

469 479 

470Lorsque le modèle principal est surchargé, indisponible ou retourne une autre erreur serveur non renouvelable, Claude Code peut basculer vers un modèle de secours au lieu d'échouer la demande. L'authentification, la facturation, les limites de débit, la taille des demandes et les erreurs de transport, ainsi qu'un [refus par la vérification de politique de votre organisation](/docs/fr/errors#automatic-retries), ne déclenchent jamais un basculement ; ceux-ci suivent leur gestion normale des tentatives et des erreurs.480Quand le modèle principal est surchargé, indisponible ou retourne une autre erreur serveur non renouvelable, Claude Code peut basculer vers un modèle de secours au lieu d'échouer la demande. Les erreurs d'authentification, de facturation, de limite de débit, de taille de demande et de transport, et un [refus par la vérification de politique de votre organisation](/docs/fr/errors#automatic-retries), ne déclenchent jamais un basculement ; ceux-ci suivent leur gestion normale des tentatives et des erreurs.

471 481 

472Configurez un ou plusieurs modèles de secours et Claude Code les essaie dans l'ordre, affichant un avis lors du basculement. Le basculement dure uniquement pour le tour actuel, de sorte que votre message suivant essaie d'abord le modèle principal à nouveau. Claude Code limite les chaînes à trois modèles après suppression des doublons et ignore les entrées supplémentaires.482Configurez un ou plusieurs modèles de secours et Claude Code les essaie dans l'ordre, affichant un avis quand il bascule. Le basculement dure uniquement pour le tour actuel, de sorte que votre prochain message essaie d'abord le modèle principal à nouveau. Claude Code limite les chaînes à trois modèles après suppression des doublons et ignore les entrées supplémentaires.

473 483 

474Définissez une chaîne pour une session avec l'indicateur `--fallback-model`, qui accepte une liste séparée par des virgules :484Définissez une chaîne pour une session avec l'indicateur `--fallback-model`, qui accepte une liste séparée par des virgules :

475 485 


485}495}

486```496```

487 497 

488L'indicateur `--fallback-model` a priorité sur le paramètre `fallbackModel`. Chaque entrée accepte un nom de modèle ou un alias, et `"default"` se développe en le modèle par défaut.498L'indicateur `--fallback-model` a la priorité sur le paramètre `fallbackModel`. Chaque entrée accepte un nom de modèle ou un alias, et `"default"` se développe en le modèle par défaut.

489 499 

490Claude Code ne confirme pas la chaîne au démarrage et `/status` ne l'affiche pas. L'avis affiché lors d'un basculement est le premier signe visible qu'un secours est configuré.500Claude Code ne confirme pas la chaîne au démarrage et `/status` ne l'affiche pas. L'avis affiché quand un basculement se produit est le premier signe visible qu'un secours est configuré.

491 501 

492Lorsqu'une demande bascule, Claude Code essaie chaque entrée dans l'ordre jusqu'à ce que l'une l'accepte. Une entrée qui ne peut pas être atteinte non plus, comme un modèle retiré épinglé dans les paramètres, bascule vers la suivante de la même manière. Claude Code supprime deux types d'entrée avant ce parcours :502Quand une demande bascule, Claude Code essaie chaque entrée dans l'ordre jusqu'à ce que l'une l'accepte. Une entrée qui ne peut pas être atteinte non plus, comme un modèle retiré épinglé dans les paramètres, bascule vers la suivante de la même manière. Claude Code supprime deux types d'entrée avant cette traversée :

493 503 

494* **En dehors de la liste d'autorisation** : Claude Code supprime toute entrée non autorisée par [`availableModels`](#restrict-model-selection) lorsqu'il lit la chaîne.504* **En dehors de la liste d'autorisation** : Claude Code supprime toute entrée non autorisée par [`availableModels`](#restrict-model-selection) quand il lit la chaîne.

495* **Fenêtre de contexte plus petite lors de la compaction** : la chaîne couvre également la [compaction](/docs/fr/context-window#what-survives-compaction), mais Claude Code ne basculera pas vers un modèle avec une fenêtre de contexte plus petite que celle du modèle principal, car résumer là-bas couperait d'abord une partie de la conversation. Si chaque secours est plus petit, la compaction affiche l'erreur d'origine et vous pouvez réessayer.505* **Fenêtre de contexte plus petite lors de la compaction** : la chaîne couvre également la [compaction](/docs/fr/context-window#what-survives-compaction), mais Claude Code ne basculera pas vers un modèle avec une fenêtre de contexte plus petite que celle du modèle principal, car résumer là couperait d'abord une partie de la conversation. Si chaque secours est plus petit, la compaction affiche l'erreur d'origine et vous pouvez réessayer.

496 506 

497Claude Code applique également la chaîne aux [sous-agents](/docs/fr/sub-agents). Lorsqu'une demande d'un sous-agent bascule, Claude Code essaie vos modèles de secours configurés dans l'ordre, et le sous-agent continue sur le modèle qui accepte la demande. Le modèle de votre session reste inchangé. Avant la v2.1.247, un échec que la chaîne couvre terminait le sous-agent à la place.507Claude Code applique également la chaîne aux [sous-agents](/docs/fr/sub-agents). Quand la demande d'un sous-agent bascule, Claude Code essaie vos modèles de secours configurés dans l'ordre, et le sous-agent continue sur le modèle qui accepte la demande. Le modèle de votre session reste inchangé. Avant la v2.1.247, un échec que la chaîne couvre terminait le sous-agent à la place.

498 508 

499<h3 id="automatic-model-fallback">509<h3 id="automatic-model-fallback">

500 Secours automatique du modèle510 Secours automatique du modèle

501</h3>511</h3>

502 512 

503Cette section couvre le secours basé sur le contenu des modèles Fable et Opus 5. Pour le secours basé sur la disponibilité lorsqu'un modèle est surchargé ou indisponible, voir [Chaînes de modèles de secours](#fallback-model-chains).513Cette section couvre le secours basé sur le contenu des modèles Fable et Opus 5. Pour le secours basé sur la disponibilité quand un modèle est surchargé ou indisponible, voir [Chaînes de modèles de secours](#fallback-model-chains).

504 514 

505Les modèles Fable et Opus 5 s'exécutent avec des classificateurs de sécurité, qui signalent le plus souvent le contenu de cybersécurité et de biologie. Lorsqu'un classificateur signale une demande et que la catégorie signalée a un modèle de secours, Claude Code réexécute la demande sur ce modèle et affiche un avis dans la transcription. Pour ces deux catégories, le modèle de secours dépend du modèle qui a refusé :515Les modèles Fable et Opus 5 s'exécutent avec des classificateurs de sécurité, qui signalent le plus souvent le contenu de cybersécurité et de biologie. Quand un classificateur signale une demande et que la catégorie signalée a un modèle de secours, Claude Code réexécute la demande sur ce modèle et affiche un avis dans la transcription. Pour ces deux catégories, le modèle de secours dépend du modèle qui a refusé :

506 516 

507* **Fable 5.1 et Fable 5** : les demandes signalées pour biologie se réexécutent sur Opus 5, et les demandes signalées pour cybersécurité se réexécutent sur Opus 4.8.517* **Fable 5.1 et Fable 5** : les demandes signalées pour biologie se réexécutent sur Opus 5, et les demandes signalées pour cybersécurité se réexécutent sur Opus 4.8.

508* **Opus 5** : les demandes signalées pour cybersécurité se réexécutent sur Opus 4.8. Les demandes signalées pour biologie se terminent par un refus à la place, car Opus 5 exécute ses propres classificateurs de biologie sans modèle de secours.518* **Opus 5** : les demandes signalées pour cybersécurité se réexécutent sur Opus 4.8. Les demandes signalées pour biologie se terminent par un refus à la place, car Opus 5 exécute ses propres classificateurs de biologie sans modèle de secours.


513 523 

514Le secours basé sur les catégories nécessite Claude Code v2.1.219 ou ultérieure. Avant la v2.1.219, chaque demande Fable 5 signalée se réexécutait sur le modèle Opus par défaut de votre fournisseur, et Opus 5 n'était pas une source de secours.524Le secours basé sur les catégories nécessite Claude Code v2.1.219 ou ultérieure. Avant la v2.1.219, chaque demande Fable 5 signalée se réexécutait sur le modèle Opus par défaut de votre fournisseur, et Opus 5 n'était pas une source de secours.

515 525 

516Le modèle de secours est vérifié par rapport à [`availableModels`](#restrict-model-selection). Lorsqu'il est bloqué, aucun secours ne se produit. Le refus est affiché comme une erreur normale et le modèle de la session reste inchangé.526Le modèle de secours est vérifié par rapport à [`availableModels`](#restrict-model-selection). Quand il est bloqué, aucun secours ne se produit. Le refus est affiché comme une erreur normale et le modèle de la session reste inchangé.

517 527 

518<h4 id="check-what-triggered-fallback">528<h4 id="check-what-triggered-fallback">

519 Vérifier ce qui a déclenché le secours529 Vérifier ce qui a déclenché le secours

520</h4>530</h4>

521 531 

522Le secours peut se déclencher à la première demande d'une session, avant que vous n'envoyiez quelque chose d'inhabituel, car la première demande porte le contexte de l'espace de travail tel que votre contenu CLAUDE.md et l'état git. Un référentiel qui contient du matériel de sécurité ou de biologie peut déclencher le classificateur sur ce contexte seul.532Le secours peut se déclencher à la première demande d'une session, avant que vous n'envoyiez quelque chose d'inhabituel, car la première demande porte le contexte de l'espace de travail comme votre contenu CLAUDE.md et l'état git. Un référentiel qui contient du matériel de sécurité ou de biologie peut déclencher le classificateur sur ce contexte seul.

523 533 

524Pour vérifier si les personnalisations sont le déclencheur, démarrez une session avec `claude --safe-mode`, qui désactive les personnalisations telles que CLAUDE.md, les compétences, les serveurs MCP et les hooks. L'état git et les noms de répertoires ne sont pas des personnalisations et sont toujours inclus.534Pour vérifier si les personnalisations sont le déclencheur, démarrez une session avec `claude --safe-mode`, qui désactive les personnalisations comme CLAUDE.md, les skills, les serveurs MCP et les hooks. L'état git et les noms de répertoires ne sont pas des personnalisations et sont toujours inclus.

525 535 

526<h4 id="ask-before-switching">536<h4 id="ask-before-switching">

527 Demander avant de basculer537 Demander avant de basculer

528</h4>538</h4>

529 539 

530Pour décider ce qui se passe chaque fois qu'une demande est signalée, plutôt que de basculer automatiquement, exécutez `/config` et désactivez **Basculer les modèles lorsqu'un message est signalé**, ou définissez [`switchModelsOnFlag`](/docs/fr/settings-reference#switchmodelsonflag) sur `false` dans votre fichier de paramètres. Une demande signalée met alors la session en pause avec deux options : basculer vers le modèle de secours, ou modifier l'invite et réessayer sur le modèle actuel.540Pour décider ce qui se passe chaque fois qu'une demande est signalée, plutôt que de basculer automatiquement, exécutez `/config` et désactivez **Basculer les modèles quand un message est signalé**, ou définissez [`switchModelsOnFlag`](/docs/fr/settings-reference#switchmodelsonflag) sur `false` dans votre fichier de paramètres. Une demande signalée met alors la session en pause avec deux options : basculer vers le modèle de secours, ou modifier l'invite et réessayer sur le modèle actuel.

531 541 

532Certains cas se comportent différemment :542Certains cas se comportent différemment :

533 543 

534* Lorsque la catégorie signalée n'a pas de modèle de secours, comme un drapeau de biologie sur Opus 5, Claude Code n'affiche pas l'invite et la demande se termine par le refus.544* Quand la catégorie signalée n'a pas de modèle de secours, comme un signal de biologie sur Opus 5, Claude Code n'affiche pas l'invite et la demande se termine par le refus.

535* Si les deux modèles signalent la même demande, vous pouvez modifier l'invite et réessayer, ou démarrer une nouvelle session.545* Si les deux modèles signalent la même demande, vous pouvez modifier l'invite et réessayer, ou démarrer une nouvelle session.

536* Sur les sessions mobiles [Claude Code sur le web](/docs/fr/claude-code-on-the-web), la modification et la nouvelle tentative ne sont pas prises en charge. Basculez les modèles, ou continuez la session à partir d'un navigateur de bureau ou de l'application de bureau.546* Sur les sessions mobiles [Claude Code sur le web](/docs/fr/claude-code-on-the-web), la modification et la nouvelle tentative ne sont pas prises en charge. Basculez les modèles, ou continuez la session à partir d'un navigateur de bureau ou de l'application de bureau.

537* En [mode non interactif](/docs/fr/cli-reference#cli-flags) et les intégrations SDK qui ne peuvent pas afficher l'invite, une demande signalée termine le tour par un refus à la place.547* En [mode non interactif](/docs/fr/cli-reference#cli-flags) et les intégrations SDK qui ne peuvent pas afficher l'invite, une demande signalée termine le tour par un refus à la place.

538* Lorsque la cible de secours est bloquée par [`availableModels`](#restrict-model-selection), Claude Code n'affiche pas l'invite. La demande signalée se termine par le refus, de la même manière que le secours automatique lorsque la cible est bloquée.548* Quand la cible de secours est bloquée par [`availableModels`](#restrict-model-selection), Claude Code n'affiche pas l'invite. La demande signalée se termine par le refus, de la même manière que le secours automatique quand la cible est bloquée.

539 549 

540<h4 id="enable-fallback-on-bedrock-agent-platform-and-foundry">550<h4 id="enable-fallback-on-bedrock-agent-platform-and-foundry">

541 Activer le secours sur Bedrock, Agent Platform et Foundry551 Activer le secours sur Bedrock, Agent Platform et Foundry

542</h4>552</h4>

543 553 

544Sur [Amazon Bedrock](/docs/fr/amazon-bedrock), [Agent Platform de Google Cloud](/docs/fr/google-vertex-ai) et [Microsoft Foundry](/docs/fr/microsoft-foundry), les identifiants de modèle sont spécifiques au fournisseur, de sorte que le secours automatique ne fonctionne que lorsque Claude Code peut identifier les deux modèles impliqués :554Sur [Amazon Bedrock](/docs/fr/amazon-bedrock), [Agent Platform de Google Cloud](/docs/fr/google-vertex-ai) et [Microsoft Foundry](/docs/fr/microsoft-foundry), les ID de modèle sont spécifiques au fournisseur, de sorte que le secours automatique ne fonctionne que quand Claude Code peut identifier les deux modèles impliqués :

545 555 

546* Claude Code doit reconnaître le modèle actuel comme une source de secours. Fable 5.1 et Fable 5 sont reconnus lorsque l'identifiant de modèle contient `claude-fable-5`, correspond à la valeur de `ANTHROPIC_DEFAULT_FABLE_MODEL`, ou est mappé avec [`modelOverrides`](#override-model-ids-per-version). Opus 5 est reconnu par son identifiant de modèle du fournisseur ou un mappage [`modelOverrides`](#override-model-ids-per-version).556* Claude Code doit reconnaître le modèle actuel comme une source de secours. Fable 5.1 et Fable 5 sont reconnus quand l'ID de modèle contient `claude-fable-5`, correspond à la valeur de `ANTHROPIC_DEFAULT_FABLE_MODEL`, ou est mappé avec [`modelOverrides`](#override-model-ids-per-version). Opus 5 est reconnu par son ID de modèle du fournisseur ou un mappage [`modelOverrides`](#override-model-ids-per-version).

547* Le modèle de secours doit se résoudre dans votre déploiement. Si vous définissez `ANTHROPIC_DEFAULT_OPUS_MODEL`, les demandes signalées se réexécutent sur ce modèle pour chaque catégorie qui a un secours ; un drapeau de biologie sur Opus 5 se termine toujours par un refus. Si vous ne le définissez pas, les demandes signalées pour cybersécurité se réexécutent sur une entrée Opus 4.8 dans la liste des modèles du fournisseur, et les demandes signalées pour biologie d'un modèle Fable sur une entrée Opus 5.557* Le modèle de secours doit se résoudre dans votre déploiement. Si vous définissez `ANTHROPIC_DEFAULT_OPUS_MODEL`, les demandes signalées se réexécutent sur ce modèle pour chaque catégorie qui a un secours ; un signal de biologie sur Opus 5 se termine toujours par un refus. Si vous ne le définissez pas, les demandes signalées pour cybersécurité se réexécutent sur une entrée Opus 4.8 dans la liste des modèles du fournisseur, et les demandes signalées pour biologie d'un modèle Fable sur une entrée Opus 5.

548 558 

549Si l'un des modèles ne peut pas être identifié, Claude Code ne bascule pas automatiquement. La demande signalée se termine par un message de refus, et vous pouvez basculer les modèles avec [`/model`](#setting-your-model) et réessayer. Définir `ANTHROPIC_DEFAULT_FABLE_MODEL` sur votre identifiant de modèle Fable active la reconnaissance Fable. Définir `ANTHROPIC_DEFAULT_OPUS_MODEL` sur un identifiant de modèle Opus donne aux catégories signalées une cible de secours, sauf si l'épingle nomme un modèle en dehors de la famille Opus ou le modèle qui a refusé ; alors Claude Code ne bascule pas et le refus tient.559Si l'un ou l'autre modèle ne peut pas être identifié, Claude Code ne bascule pas automatiquement. La demande signalée se termine par un message de refus, et vous pouvez basculer les modèles avec [`/model`](#setting-your-model) et réessayer. Définir `ANTHROPIC_DEFAULT_FABLE_MODEL` sur votre ID de modèle Fable active la reconnaissance Fable. Définir `ANTHROPIC_DEFAULT_OPUS_MODEL` sur un ID de modèle Opus donne aux catégories signalées une cible de secours, sauf si l'épingle nomme un modèle en dehors de la famille Opus ou le modèle qui a refusé ; alors Claude Code ne bascule pas et le refus tient.

550 560 

551<h4 id="security-research-and-biology-workloads">561<h4 id="security-research-and-biology-workloads">

552 Recherche en sécurité et charges de travail en biologie562 Recherche en sécurité et charges de travail en biologie

553</h4>563</h4>

554 564 

555Les charges de travail en sécurité offensive ou en biologie, y compris les tests de pénétration, les exercices Capture the Flag (CTF) et les bases de code adjacentes à la biologie, déclenchent fréquemment le secours, souvent à la première demande. Pour un travail substantiel en biologie sur Fable 5.1 ou Fable 5, Claude Code déplace la session vers Opus 5 à la première demande signalée, et les demandes signalées pour biologie ultérieures se terminent par des refus là-bas, car Opus 5 n'a pas de secours pour la biologie. Sur Opus 5, vous obtenez ces refus à partir de la première demande signalée.565Les charges de travail en sécurité offensive ou en biologie, y compris les tests de pénétration, les exercices Capture the Flag (CTF) et les bases de code adjacentes à la biologie, déclenchent fréquemment le secours, souvent à la première demande. Pour un travail substantiel en biologie sur Fable 5.1 ou Fable 5, Claude Code déplace la session vers Opus 5 à la première demande signalée, et les demandes signalées pour biologie ultérieures se terminent par des refus là, car Opus 5 n'a pas de secours pour la biologie. Sur Opus 5, vous obtenez ces refus à partir de la première demande signalée.

556 566 

557C'est un routage attendu pour ces domaines, pas un drapeau de compte. Si votre organisation a besoin de la capacité de classe Fable pour ce travail, demandez à votre équipe de compte Anthropic les programmes d'accès de confiance.567C'est un routage attendu pour ces domaines, pas un signal de compte. Si votre organisation a besoin de la capacité de classe Fable pour ce travail, demandez à votre équipe de compte Anthropic les programmes d'accès de confiance.

558 568 

559<h3 id="adjust-effort-level">569<h3 id="adjust-effort-level">

560 Ajuster le niveau d'effort570 Ajuster le niveau d'effort


562 572 

563Les [niveaux d'effort](https://platform.claude.com/docs/en/build-with-claude/effort) contrôlent le raisonnement adaptatif, qui permet au modèle de décider si et combien penser à 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.573Les [niveaux d'effort](https://platform.claude.com/docs/en/build-with-claude/effort) contrôlent le raisonnement adaptatif, qui permet au modèle de décider si et combien penser à 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.

564 574 

565Les niveaux d'effort disponibles dépendent du modèle. Les modèles non énumérés ici ne prennent pas en charge l'effort :575Les niveaux d'effort disponibles dépendent du modèle. Les modèles non énumérés ici ne supportent pas l'effort :

566 576 

567| Modèle | Niveaux |577| Modèle | Niveaux |

568| :------------------------------------- | :-------------------------------------- |578| :------------------------------------- | :-------------------------------------- |


570| Opus 5, Sonnet 5, Opus 4.8 et Opus 4.7 | `low`, `medium`, `high`, `xhigh`, `max` |580| Opus 5, Sonnet 5, Opus 4.8 et Opus 4.7 | `low`, `medium`, `high`, `xhigh`, `max` |

571| Opus 4.6 et Sonnet 4.6 | `low`, `medium`, `high`, `max` |581| Opus 4.6 et Sonnet 4.6 | `low`, `medium`, `high`, `max` |

572 582 

573Si 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. Votre organisation peut également limiter les niveaux disponibles pour un modèle ; voir [Limites d'effort de l'organisation](#organization-effort-limits).583Si vous définissez un niveau que le modèle actif ne supporte pas, Claude Code revient au niveau le plus élevé supporté au niveau ou en dessous de celui que vous avez défini. Par exemple, `xhigh` s'exécute comme `high` sur Opus 4.6. Votre organisation ou vos propres paramètres peuvent également limiter les niveaux qu'un modèle offre ; voir [Limites d'effort de l'organisation](#organization-effort-limits).

574 584 

575Avec le paramètre [`ultracode`](/docs/fr/settings-reference#ultracode) désactivé, Claude Code résout le niveau d'effort de la session dans cet ordre, en prenant le premier qui s'applique :585Avec le paramètre [`ultracode`](/docs/fr/settings-reference#ultracode) désactivé, Claude Code résout le niveau d'effort de la session dans cet ordre, en prenant le premier qui s'applique :

576 586 

5771. Un choix explicite : la variable d'environnement [`CLAUDE_CODE_EFFORT_LEVEL`](/docs/fr/env-vars#variables), le lancement avec `--effort`, ou `/effort` dans la session ([un `/effort` non interactif a un effet plus étroit](#non-interactive-effort))5871. Un choix explicite : la variable d'environnement [`CLAUDE_CODE_EFFORT_LEVEL`](/docs/fr/env-vars#variables), le lancement avec `--effort`, ou `/effort` dans la session ([un `/effort` non interactif a un effet plus étroit](#non-interactive-effort))

5782. L'effort par défaut du modèle, sur Fable 5, Opus 4.8 ou Opus 4.7 : à partir de la première fois que vous exécutez l'un de ces modèles, Claude Code maintient l'effort par défaut de ce modèle entre les sessions, même lorsque vos paramètres résolvent un niveau différent, jusqu'à ce que vous changiez l'effort une fois, par exemple avec un `/effort` interactif, le curseur d'effort du sélecteur `/model`, ou `--effort` au lancement. Opus 5 et Fable 5.1 n'ont pas une telle retenue5882. L'effort par défaut du modèle, sur Fable 5, Opus 4.8 ou Opus 4.7 : à partir de la première fois que vous exécutez l'un de ces modèles, Claude Code maintient l'effort par défaut de ce modèle entre les sessions, même quand vos paramètres résolvent un niveau différent. Opus 5 et Fable 5.1 n'ont pas une telle retenue. Que un niveau que vous avez défini termine la retenue dépend de comment vous l'avez défini, par exemple :

589 * **Termine la retenue** : confirmer un niveau de manière interactive, avec `Entrée` dans le curseur `/effort` ou le sélecteur `/model` ou avec un niveau tapé après `/effort`, ou choisir un niveau à partir du contrôle d'effort [Contrôle à distance](/docs/fr/remote-control#what-connected-devices-see) d'un appareil connecté

590 * **Laisse la retenue en place pour les sessions ultérieures** : `--effort` au lancement, ou `s` dans le curseur `/effort` ou le sélecteur `/model`

5793. Vos paramètres : le niveau que vous avez enregistré pour le modèle ou une clé [`effortLevel`](/docs/fr/settings-reference#effortlevel), avec la priorité entre eux et entre les fichiers de paramètres énoncée à [`modelSettings`](/docs/fr/settings-reference#modelsettings)5913. Vos paramètres : le niveau que vous avez enregistré pour le modèle ou une clé [`effortLevel`](/docs/fr/settings-reference#effortlevel), avec la priorité entre eux et entre les fichiers de paramètres énoncée à [`modelSettings`](/docs/fr/settings-reference#modelsettings)

5804. L'effort par défaut du modèle : `high` sur chaque modèle qui prend en charge l'effort, sauf qu'Opus 4.7 par défaut à `xhigh` et, lorsque votre organisation définit un niveau d'effort par défaut pour son [modèle par défaut de l'organisation](#organization-default-model), ce niveau est le défaut lorsque vous exécutez ce modèle5924. L'effort par défaut du modèle : `high` sur chaque modèle qui supporte l'effort, sauf qu'Opus 4.7 par défaut à `xhigh` et, quand votre organisation définit un niveau d'effort par défaut pour son [modèle par défaut de l'organisation](#organization-default-model), ce niveau est le défaut quand vous exécutez ce modèle

593 

594Quand vous définissez `low`, `medium`, `high` ou `xhigh` dans une session interactive sur votre machine, vous choisissez combien de temps cela dure en comment vous le confirmez :

581 595 

582Lorsque vous définissez `low`, `medium`, `high` ou `xhigh` dans une session interactive sur votre machine, Claude Code enregistre le niveau et l'applique dans les sessions ultérieures. Il enregistre le niveau par modèle, sous la clé [`modelSettings`](/docs/fr/settings-reference#modelsettings) dans vos paramètres utilisateur, de sorte que chaque modèle conserve son propre niveau enregistré.596* `Entrée` dans le curseur `/effort` ou le sélecteur `/model`, ou un niveau tapé après `/effort` : enregistrez le niveau comme votre défaut et appliquez-le dans les sessions ultérieures

597* `s` dans le curseur `/effort` ou le sélecteur `/model` : appliquez le niveau à cette session uniquement. Nécessite Claude Code v2.1.257 ou ultérieure

598 

599Claude Code enregistre le niveau par modèle, sous la clé [`modelSettings`](/docs/fr/settings-reference#modelsettings) dans vos paramètres utilisateur, de sorte que chaque modèle conserve son propre niveau enregistré.

583 600 

584`max` est le niveau de raisonnement le plus profond. À moins que vous ne le définissiez via la variable d'environnement `CLAUDE_CODE_EFFORT_LEVEL`, Claude Code applique `max` à la session actuelle uniquement.601`max` est le niveau de raisonnement le plus profond. À moins que vous ne le définissiez via la variable d'environnement `CLAUDE_CODE_EFFORT_LEVEL`, Claude Code applique `max` à la session actuelle uniquement.

585 602 

586<Note>603<Note>

587 Un niveau que vous choisissez dans le contrôle d'effort sur un téléphone ou un navigateur connecté via [Contrôle à distance](/docs/fr/remote-control#what-connected-devices-see) s'applique à cette session uniquement.604 Un niveau que vous choisissez à partir du contrôle d'effort sur un téléphone ou un navigateur connecté via [Contrôle à distance](/docs/fr/remote-control#what-connected-devices-see) s'applique à cette session uniquement.

588</Note>605</Note>

589 606 

590<span id="non-interactive-effort" />607<span id="non-interactive-effort" />

591 608 

592Un niveau défini avec `/effort` en [mode non interactif](/docs/fr/headless), avec l'indicateur `-p`, s'applique à la session actuelle uniquement et n'est pas enregistré comme votre défaut. Il ne compte pas non plus comme le changement unique qui termine l'étape du modèle par défaut ci-dessus sur Fable 5, Opus 4.8 ou Opus 4.7 : tandis que cette étape est en vigueur, un `/effort` non interactif signale `Not applied`, donc passez `--effort` au lancement à la place.609Quand vous définissez un niveau avec `/effort` dans une exécution [`-p`](/docs/fr/headless), Claude Code l'applique à cette session uniquement et ne l'enregistre pas comme votre défaut. Sur Fable 5, Opus 4.8 et Opus 4.7, ce niveau ne termine pas non plus la retenue sur l'effort par défaut du modèle ni ne le remplace pour la session. Tant que cette retenue est en vigueur, un `/effort` non interactif rapporte `Not applied`, donc passez `--effort` au lancement à la place.

593 610 

594Le menu `/effort` offre également `ultracode`. Ultracode est un paramètre Claude Code plutôt qu'un niveau d'effort de modèle : il envoie `xhigh` au modèle et a également Claude orchestrer les [flux de travail dynamiques](/docs/fr/workflows) pour les tâches substantielles. Pour où il peut être défini de manière persistante, voir le paramètre [`ultracode`](/docs/fr/settings-reference#ultracode).611Le menu `/effort` offre également `ultracode`. Ultracode est un paramètre Claude Code plutôt qu'un niveau d'effort du modèle : il envoie `xhigh` au modèle et a en outre Claude orchestrer les [flux de travail dynamiques](/docs/fr/workflows) pour les tâches substantielles. Pour où il peut être défini de manière persistante, voir le paramètre [`ultracode`](/docs/fr/settings-reference#ultracode).

595 612 

596Vous pouvez activer ultracode via l'une des méthodes suivantes :613Vous pouvez activer ultracode via l'une des options suivantes :

597 614 

598* **`/effort`** : exécutez `/effort ultracode`, ou sélectionnez-le dans le menu615* **`/effort`** : exécutez `/effort ultracode`, ou sélectionnez-le dans le menu

599* **Indicateur `--effort`** : lancez avec `claude --effort ultracode`, qui démarre la session à l'effort `xhigh` avec ultracode activé616* **Indicateur `--effort`** : lancez avec `claude --effort ultracode`, qui démarre la session à l'effort `xhigh` avec ultracode activé

600* **Paramètre `ultracode`** : définissez [`"ultracode": true`](/docs/fr/settings-reference#ultracode) dans un fichier de paramètres, avec `--settings`, ou dans une demande de contrôle Agent SDK. Une demande [`applyFlagSettings()`](/docs/fr/agent-sdk/typescript#applyflagsettings) accepte également `effortLevel: "ultracode"`617* **Paramètre `ultracode`** : définissez [`"ultracode": true`](/docs/fr/settings-reference#ultracode) dans un fichier de paramètres, avec `--settings`, ou dans une demande de contrôle Agent SDK. Une demande [`applyFlagSettings()`](/docs/fr/agent-sdk/typescript#applyflagsettings) accepte également `effortLevel: "ultracode"`

601* **Sélecteur `/model`** : déplacez le curseur d'effort vers `ultracode` avec les touches fléchées tout en choisissant un modèle. Claude Code l'active pour la session actuelle, même lorsque vous enregistrez ce modèle comme votre défaut618* **Sélecteur `/model`** : déplacez le curseur d'effort vers `ultracode` avec les touches fléchées pendant que vous choisissez un modèle. Claude Code l'active pour la session actuelle, même quand vous enregistrez ce modèle comme votre défaut

602 619 

603Passer `ultracode` à l'indicateur `--effort` ou à la valeur Agent SDK `effortLevel` nécessite Claude Code v2.1.203 ou ultérieure. Avant la v2.1.203, `--effort ultracode` imprimait `Unknown --effort value 'ultracode'` et la session démarrait à l'effort par défaut.620Passer `ultracode` à l'indicateur `--effort` ou à la valeur Agent SDK `effortLevel` nécessite Claude Code v2.1.203 ou ultérieure. Avant la v2.1.203, `--effort ultracode` imprimait `Unknown --effort value 'ultracode'` et la session démarrait à l'effort par défaut.

604 621 

605Le paramètre `effortLevel` persisté et la variable d'environnement `CLAUDE_CODE_EFFORT_LEVEL` n'acceptent pas `ultracode`. Lorsque `CLAUDE_CODE_EFFORT_LEVEL` est défini sur un niveau autre que `xhigh`, les demandes s'exécutent à ce niveau et l'orchestration du flux de travail d'ultracode reste inactive. Sélectionner ultracode affiche alors un avertissement que la variable d'environnement remplace l'effort pour la session.622Le paramètre `effortLevel` persisté et la variable d'environnement `CLAUDE_CODE_EFFORT_LEVEL` n'acceptent pas `ultracode`. Quand `CLAUDE_CODE_EFFORT_LEVEL` est défini sur un niveau autre que `xhigh`, les demandes s'exécutent à ce niveau et l'orchestration de flux de travail d'ultracode reste inactive. Sélectionner ultracode affiche alors un avertissement que la variable d'environnement remplace l'effort pour la session.

623 

624<span id="when-ultracode-is-available" />

606 625 

607Lorsque ultracode n'est pas disponible, par exemple lorsque les [flux de travail sont désactivés](/docs/fr/workflows#turn-workflows-off), `--effort ultracode` définit uniquement l'effort `xhigh`.626Ultracode n'est pas disponible quand :

627 

628* [Les flux de travail sont désactivés](/docs/fr/workflows#turn-workflows-off)

629* Le modèle ne supporte pas l'effort `xhigh`

630* Un [plafond d'effort](#organization-effort-limits) en dessous de `xhigh` s'applique au modèle

631 

632Dans ces cas, `--effort ultracode` démarre la session avec ultracode désactivé, au niveau d'effort le plus élevé que le modèle et tout plafond permettent, jusqu'à `xhigh`.

608 633 

609<h4 id="choose-an-effort-level">634<h4 id="choose-an-effort-level">

610 Choisir un niveau d'effort635 Choisir un niveau d'effort

611</h4>636</h4>

612 637 

613Chaque niveau échange la dépense de jetons contre la capacité. Le défaut convient à la plupart des tâches de codage ; ajustez lorsque vous voulez un équilibre différent.638Chaque niveau échange la dépense de jetons contre la capacité. Le défaut convient à la plupart des tâches de codage ; ajustez quand vous voulez un équilibre différent.

614 639 

615| Niveau | Quand l'utiliser |640| Niveau | Quand l'utiliser |

616| :---------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |641| :---------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

617| `low` | Réservé aux tâches courtes, délimitées, sensibles à la latence qui ne sont pas sensibles à l'intelligence |642| `low` | Réservez pour les tâches courtes, délimitées, sensibles à la latence qui ne sont pas sensibles à l'intelligence |

618| `medium` | Réduit l'utilisation des jetons pour le travail sensible aux coûts qui peut faire des compromis sur une certaine intelligence |643| `medium` | Réduit l'utilisation de jetons pour le travail sensible aux coûts qui peut faire des compromis sur une certaine intelligence |

619| `high` | Équilibre l'utilisation des jetons et l'intelligence. Le défaut sur chaque modèle sauf Opus 4.7 |644| `high` | Équilibre l'utilisation de jetons et l'intelligence. Le défaut sur chaque modèle sauf Opus 4.7 |

620| `xhigh` | Raisonnement plus profond à une dépense de jetons plus élevée. Le défaut sur Opus 4.7 |645| `xhigh` | Raisonnement plus profond à une dépense de jetons plus élevée. Le défaut sur Opus 4.7 |

621| `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 |646| `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 |

622| `ultracode` | Un paramètre Claude Code qui planifie un [flux de travail dynamique](/docs/fr/workflows) pour chaque tâche substantielle avec un raisonnement `xhigh` par message |647| `ultracode` | Un paramètre Claude Code qui planifie un [flux de travail dynamique](/docs/fr/workflows) pour chaque tâche substantielle avec un raisonnement `xhigh` par message |


627 Utiliser ultrathink pour un raisonnement profond ponctuel652 Utiliser ultrathink pour un raisonnement profond ponctuel

628</h4>653</h4>

629 654 

630Incluez `ultrathink` n'importe où dans votre invite pour demander un raisonnement plus profond sur ce tour sans modifier votre paramètre d'effort de session. Claude Code reconnaît le mot-clé et ajoute une instruction en contexte. Le niveau d'effort envoyé à l'API est inchangé. Claude Code transmet d'autres phrases telles que « think », « think hard » et « think more » comme du texte d'invite ordinaire et ne les reconnaît pas comme des mots-clés.655Incluez `ultrathink` n'importe où dans votre invite pour demander un raisonnement plus profond sur ce tour sans changer votre paramètre d'effort de session. Claude Code reconnaît le mot-clé et ajoute une instruction en contexte. Le niveau d'effort envoyé à l'API est inchangé. Claude Code transmet d'autres phrases comme « think », « think hard » et « think more » comme du texte d'invite ordinaire et ne les reconnaît pas comme des mots-clés.

631 656 

632<h4 id="set-the-effort-level">657<h4 id="set-the-effort-level">

633 Définir le niveau d'effort658 Définir le niveau d'effort

634</h4>659</h4>

635 660 

636Vous pouvez modifier l'effort via l'une des méthodes suivantes :661Vous pouvez changer l'effort via l'une des options suivantes :

637 662 

638* **`/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 effacer votre niveau enregistré pour le modèle actif. Vous pouvez l'exécuter pendant que Claude travaille, et une fois que vous confirmez l'[avertissement de cache](/docs/fr/prompt-caching#changing-effort-level), si Claude Code en affiche un, Claude Code applique le nouveau niveau à la demande suivante du tour663* **`/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 effacer votre niveau enregistré pour le modèle actif. Vous pouvez l'exécuter pendant que Claude travaille, et une fois que vous confirmez l'[avertissement de cache](/docs/fr/prompt-caching#changing-effort-level), si Claude Code en affiche un, Claude Code applique le nouveau niveau à la demande suivante du tour

639* **Dans `/model`** : utilisez les touches fléchées gauche/droite pour ajuster le curseur d'effort lors de la sélection d'un modèle664* **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

640* **Indicateur `--effort`** : passez un nom de niveau pour le définir pour une seule session lors du lancement de Claude Code665* **Indicateur `--effort`** : passez un nom de niveau pour le définir pour une seule session lors du lancement de Claude Code

641* **Variable d'environnement** : définissez `CLAUDE_CODE_EFFORT_LEVEL` sur un nom de niveau ou `auto`666* **Variable d'environnement** : définissez `CLAUDE_CODE_EFFORT_LEVEL` sur un nom de niveau ou `auto`

642* **Paramètres** : définissez un niveau par modèle dans [`modelSettings`](/docs/fr/settings-reference#modelsettings), ou définissez [`effortLevel`](/docs/fr/settings-reference#effortlevel) sur `low`, `medium`, `high` ou `xhigh` comme défaut pour les modèles sans un. `max` n'est pas accepté dans l'une ou l'autre clé, et `ultracode` a sa propre clé [`ultracode`](/docs/fr/settings-reference#ultracode)667* **Paramètres** : définissez un niveau par modèle dans [`modelSettings`](/docs/fr/settings-reference#modelsettings), ou définissez [`effortLevel`](/docs/fr/settings-reference#effortlevel) sur `low`, `medium`, `high` ou `xhigh` comme défaut pour les modèles sans un. `max` n'est pas accepté comme niveau dans l'une ou l'autre clé, et `ultracode` a sa propre clé [`ultracode`](/docs/fr/settings-reference#ultracode)

643* **À partir d'un appareil connecté** : dans une session [Contrôle à distance](/docs/fr/remote-control#what-connected-devices-see), choisissez un niveau dans le contrôle d'effort sur votre téléphone ou dans votre navigateur. Le niveau s'applique à la session actuelle uniquement. Nécessite Claude Code v2.1.234 ou ultérieure668* **À partir d'un appareil connecté** : dans une session [Contrôle à distance](/docs/fr/remote-control#what-connected-devices-see), choisissez un niveau à partir du contrôle d'effort sur votre téléphone ou dans votre navigateur. Le niveau s'applique à la session actuelle uniquement, bien qu'il termine également la [retenue sur l'effort par défaut du modèle](#adjust-effort-level). Nécessite Claude Code v2.1.234 ou ultérieure

644* **Frontmatter de compétence et de sous-agent** : définissez `effort` dans un fichier markdown de [compétence](/docs/fr/skills#frontmatter-reference) ou de [sous-agent](/docs/fr/sub-agents#supported-frontmatter-fields) pour remplacer le niveau d'effort lorsque cette compétence ou ce sous-agent s'exécute669* **Frontmatter de skill et de sous-agent** : définissez `effort` dans un fichier markdown [skill](/docs/fr/skills#frontmatter-reference) ou [sous-agent](/docs/fr/sub-agents#supported-frontmatter-fields) pour remplacer le niveau d'effort quand ce skill ou sous-agent s'exécute

645 670 

646L'effort du frontmatter s'applique lorsque cette compétence ou ce sous-agent est actif, remplaçant le niveau de session mais pas la variable d'environnement.671L'effort du frontmatter s'applique quand ce skill ou sous-agent est actif, remplaçant le niveau de session mais pas la variable d'environnement. Un [`maxEffortLevel`](/docs/fr/settings-reference#maxeffortlevel) ou un [plafond d'effort de l'organisation](#organization-effort-limits) limite toujours le niveau auquel le skill ou sous-agent s'exécute.

647 672 

648La clé `effortLevel` dans les [paramètres gérés](/docs/fr/managed-settings) est un défaut de démarrage, pas une application : les utilisateurs peuvent la modifier pour une session avec `/effort` ou `--effort`, et la valeur gérée se réaffirme comme défaut dans les nouvelles sessions.673Sur Fable 5, Opus 4.8 et Opus 4.7, l'effort du frontmatter s'applique également pendant que la [retenue sur l'effort par défaut du modèle](#adjust-effort-level) est en vigueur. Avant la v2.1.267, la retenue avait la priorité et Claude Code ignorait le niveau du frontmatter pendant que la retenue était active.

649 674 

650Le 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é dans l'en-tête de session à côté du nom du modèle, par exemple « with low effort », de sorte que vous pouvez confirmer quel paramètre est actif sans ouvrir `/model`. Le pied de page affiche également brièvement le niveau d'effort au démarrage et lorsqu'il change.675Si vous définissez `effortLevel` dans les [paramètres gérés](/docs/fr/managed-settings), Claude Code l'applique à l'étape des paramètres de l'[ordre de résolution d'effort](#adjust-effort-level), et les utilisateurs peuvent toujours changer le niveau avec `/effort` ou `--effort`. Pour garder les utilisateurs au niveau ou en dessous d'un niveau, définissez [`maxEffortLevel`](/docs/fr/settings-reference#maxeffortlevel).

676 

677Le curseur d'effort apparaît dans `/model` quand un modèle supporté est sélectionné. Le niveau d'effort actuel est également affiché dans l'en-tête de session à côté du nom du modèle, par exemple « with low effort », de sorte que vous pouvez confirmer quel paramètre est actif sans ouvrir `/model`. Le pied de page affiche également brièvement le niveau d'effort au démarrage et quand il change.

651 678 

652<h4 id="adaptive-reasoning-and-fixed-thinking-budgets">679<h4 id="adaptive-reasoning-and-fixed-thinking-budgets">

653 Raisonnement adaptatif et budgets de réflexion fixes680 Raisonnement adaptatif et budgets de réflexion fixes

654</h4>681</h4>

655 682 

656Le raisonnement adaptatif rend la réflexion optionnelle à chaque étape, de sorte que 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 voulez que Claude pense 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.683Le raisonnement adaptatif rend la réflexion optionnelle à chaque étape, de sorte que 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 voulez que Claude pense plus ou moins souvent que le niveau actuel ne 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.

657 684 

658Fable 5.1, Fable 5, Sonnet 5 et Opus 4.7 et ultérieur utilisent toujours le raisonnement adaptatif. Le mode de budget de réflexion fixe et `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` ne s'appliquent pas à eux.685Les modèles Fable, Sonnet 5 et Opus 4.7 et ultérieur utilisent toujours le raisonnement adaptatif. Le mode de budget de réflexion fixe et `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` ne s'y appliquent pas.

659 686 

660Sur 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](/docs/fr/env-vars).687Sur 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](/docs/fr/env-vars).

661 688 


663 Réflexion étendue690 Réflexion étendue

664</h3>691</h3>

665 692 

666La réflexion étendue est le raisonnement que Claude émet avant de répondre. Sur les modèles qui prennent en charge le [raisonnement adaptatif](#adjust-effort-level), le niveau d'effort est le contrôle principal de la quantité de réflexion qui se produit ; les paramètres ci-dessous activent ou désactivent la réflexion et contrôlent son affichage. Avec la réflexion désactivée sur l'API Anthropic, Claude Code envoie l'effort `high` au lieu d'un niveau supérieur aux modèles qu'il sait [n'acceptent pas cette combinaison](/docs/fr/errors#effort-isnt-available-with-thinking-turned-off), comme Opus 5.693La réflexion étendue est le raisonnement que Claude émet avant de répondre. Sur les modèles qui supportent le [raisonnement adaptatif](#adjust-effort-level), le niveau d'effort est le contrôle principal pour la quantité de réflexion qui se produit ; les paramètres ci-dessous activent ou désactivent la réflexion et contrôlent comment elle s'affiche. Avec la réflexion désactivée sur l'API Anthropic, Claude Code envoie l'effort `high` au lieu d'un niveau supérieur aux modèles qu'il sait [n'acceptent pas cette combinaison](/docs/fr/errors#effort-isnt-available-with-thinking-turned-off), comme Opus 5.

667 694 

668| Contrôle | Comment le définir |695| Contrôle | Comment le définir |

669| :------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |696| :------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

670| Basculer pour la session actuelle | Appuyez sur `Option+T` sur macOS ou `Alt+T` sur Windows et Linux |697| Basculer pour la session actuelle | Appuyez sur `Option+T` sur macOS ou `Alt+T` sur Windows et Linux |

671| Définir le défaut global | Exécutez `/config` et basculez le mode de réflexion. Enregistré comme `alwaysThinkingEnabled` dans `~/.claude/settings.json` |698| Définir le défaut global | Exécutez `/config` et basculez le mode de réflexion. Enregistré comme `alwaysThinkingEnabled` dans `~/.claude/settings.json` |

672| Désactiver via une variable d'environnement | Définissez [`MAX_THINKING_TOKENS=0`](/docs/fr/env-vars), qui désactive la réflexion sur l'API Anthropic sauf sur Fable 5.1 et Fable 5. Sur les [fournisseurs tiers](/docs/fr/third-party-integrations) cela omet le paramètre `thinking` à la place, et les modèles de raisonnement adaptatif peuvent toujours penser. D'autres valeurs s'appliquent uniquement avec un [budget de réflexion fixe](#adaptive-reasoning-and-fixed-thinking-budgets) |699| Désactiver via une variable d'environnement | Définissez [`MAX_THINKING_TOKENS=0`](/docs/fr/env-vars), qui désactive la réflexion sur l'API Anthropic sauf sur les modèles Fable. Sur les [fournisseurs tiers](/docs/fr/third-party-integrations), Claude Code omet le paramètre `thinking` à la place, et les modèles de raisonnement adaptatif peuvent toujours penser. D'autres valeurs s'appliquent uniquement avec un [budget de réflexion fixe](#adaptive-reasoning-and-fixed-thinking-budgets) |

673 700 

674La réflexion ne peut pas être désactivée sur Fable 5.1 ou Fable 5. Le basculement de session, `alwaysThinkingEnabled` et `MAX_THINKING_TOKENS=0` n'ont aucun effet là-bas, et le modèle décide à chaque étape combien penser en fonction du niveau d'effort.701Vous ne pouvez pas désactiver la réflexion sur les modèles Fable. Le basculement de session, `alwaysThinkingEnabled` et `MAX_THINKING_TOKENS=0` n'ont aucun effet là, et un modèle Fable décide à chaque étape combien penser en fonction du niveau d'effort.

675 702 

676Claude Code réduit la sortie de réflexion par défaut. Appuyez sur `Ctrl+O` pour basculer le mode verbeux et voir le raisonnement en tant que texte gris en italique. Les sessions interactives sur l'API Anthropic reçoivent les blocs de réflexion expurgés par défaut, donc définissez `showThinkingSummaries: true` dans les [paramètres](/docs/fr/settings) si vous voulez les résumés complets disponibles lorsque vous développez. Vous êtes facturé pour tous les jetons de réflexion générés, même lorsqu'ils sont réduits ou expurgés.703Claude Code réduit la sortie de réflexion par défaut. Appuyez sur `Ctrl+O` pour basculer le mode verbeux et voir le raisonnement en tant que texte gris en italique. Les sessions interactives sur l'API Anthropic reçoivent des blocs de réflexion édités par défaut, donc définissez `showThinkingSummaries: true` dans les [paramètres](/docs/fr/settings) si vous voulez les résumés complets disponibles quand vous développez. Vous êtes facturé pour tous les jetons de réflexion générés, même quand réduits ou édités.

677 704 

678<h3 id="extended-context">705<h3 id="extended-context">

679 Contexte étendu706 Contexte étendu

680</h3>707</h3>

681 708 

682Fable 5.1, Fable 5, Sonnet 5, Opus 4.6 et ultérieur, et Sonnet 4.6 prennent en charge une [fenêtre de contexte de 1 million de jetons](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model) pour les sessions longues avec de grandes bases de code.709Fable 5.1, Fable 5, Sonnet 5, Opus 4.6 et ultérieur, et Sonnet 4.6 supportent une [fenêtre de contexte de 1 million de jetons](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model) pour les sessions longues avec de grandes bases de code.

683 710 

684La disponibilité varie selon le modèle et le plan. Sur l'API Anthropic, Fable 5.1, Fable 5, Sonnet 5 et Opus 4.7 et ultérieur s'exécutent avec la fenêtre 1M par défaut.711La disponibilité varie selon le modèle et le plan. Sur l'API Anthropic, Fable 5.1, Fable 5, Sonnet 5 et Opus 4.7 et ultérieur s'exécutent avec la fenêtre de 1M par défaut.

685 712 

686Sur les plans Max, Team et Enterprise, y compris les sièges Team Standard et Team Premium, Opus est automatiquement mis à niveau vers un contexte 1M sans configuration supplémentaire. Sonnet 4.6 avec un contexte 1M ne fait pas partie de la mise à niveau automatique et nécessite des [crédits d'utilisation](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) sur chaque plan d'abonnement, y compris Max.713Sur les plans Max, Team et Enterprise, y compris les sièges Team Standard et Team Premium, Opus est automatiquement mis à niveau vers un contexte de 1M sans configuration supplémentaire. Sonnet 4.6 avec un contexte de 1M ne fait pas partie de la mise à niveau automatique et nécessite des [crédits d'utilisation](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) sur chaque plan d'abonnement, y compris Max.

687 714 

688| Plan | Opus avec contexte 1M | Sonnet 4.6 avec contexte 1M |715| Plan | Opus avec contexte de 1M | Sonnet 4.6 avec contexte de 1M |

689| ------------------------- | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ |716| ------------------------- | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ |

690| Max, Team et Enterprise | Inclus avec l'abonnement | Nécessite des [crédits d'utilisation](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |717| Max, Team et Enterprise | Inclus avec l'abonnement | Nécessite des [crédits d'utilisation](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |

691| Pro | Nécessite des [crédits d'utilisation](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) | Nécessite des [crédits d'utilisation](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |718| Pro | Nécessite des [crédits d'utilisation](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) | Nécessite des [crédits d'utilisation](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |

692| API et paiement à l'usage | Accès complet | Accès complet |719| API et paiement à l'usage | Accès complet | Accès complet |

693 720 

694Claude Code vérifie ces exigences de plan uniquement lorsqu'il se connecte directement à l'API Anthropic. Si vous pointez `ANTHROPIC_BASE_URL` vers une [passerelle LLM](/docs/fr/llm-gateway#subscriptions-and-gateways) et votre connexion claude.ai enregistrée reste la credential active, Claude Code ne vérifie pas les crédits d'utilisation de votre plan. Les options `[1m]` restent disponibles dans `/model`, et la passerelle décide si la demande réussit. Avant la v2.1.229, Claude Code rejetait `/model sonnet[1m]` dans cette configuration lorsqu'il ne pouvait pas confirmer les crédits d'utilisation sur le compte.721Claude Code vérifie ces exigences de plan uniquement quand il se connecte directement à l'API Anthropic. Si vous pointez `ANTHROPIC_BASE_URL` vers une [passerelle LLM](/docs/fr/llm-gateway#subscriptions-and-gateways) et votre connexion claude.ai enregistrée reste la credential active, Claude Code ne vérifie pas les crédits d'utilisation de votre plan. Les options `[1m]` restent disponibles dans `/model`, et la passerelle décide si la demande réussit. Avant la v2.1.229, Claude Code rejetait `/model sonnet[1m]` dans cette configuration quand il ne pouvait pas confirmer les crédits d'utilisation sur le compte.

695 722 

696Pour désactiver le contexte 1M, définissez `CLAUDE_CODE_DISABLE_1M_CONTEXT=1`. Claude Code supprime les variantes de modèle 1M du sélecteur de modèle. Sur les modèles avec une fenêtre 1M native, comme Sonnet 5 et les modèles Fable, il traite également le modèle comme ayant une fenêtre de contexte de 200K :723Pour désactiver le contexte de 1M, définissez `CLAUDE_CODE_DISABLE_1M_CONTEXT=1`. Claude Code supprime les variantes de modèle de 1M du sélecteur de modèle. Sur les modèles avec une fenêtre de 1M native, comme Sonnet 5 et les modèles Fable, il traite également le modèle comme ayant une fenêtre de contexte de 200K :

697 724 

698* Avec la compaction automatique activée, les sessions se compactent à la limite 200K via la [compaction automatique](#set-the-auto-compact-window). Définir la fenêtre de compaction automatique au-dessus de 200K ne lève pas la retenue, car Claude Code limite cette fenêtre à la fenêtre de contexte du modèle.725* Avec la compaction automatique activée, les sessions se compactent à la limite de 200K via la [compaction automatique](#set-the-auto-compact-window). Définir la fenêtre de compaction automatique au-dessus de 200K ne lève pas la retenue, car Claude Code limite cette fenêtre à la fenêtre de contexte du modèle.

699* Avec la compaction automatique désactivée, les sessions s'arrêtent à la limite 200K avec l'[erreur de limite de contexte](/docs/fr/errors#prompt-is-too-long) au lieu de se compacter.726* Avec la compaction automatique désactivée, les sessions s'arrêtent à la limite de 200K avec l'[erreur de limite de contexte](/docs/fr/errors#prompt-is-too-long) au lieu de se compacter.

700 727 

701Avant la v2.1.223, Claude Code maintenait uniquement Sonnet 5, Opus 4.8 et Opus 5 sessions à 200K. Voir [variables d'environnement](/docs/fr/env-vars).728Avant la v2.1.223, Claude Code tenait uniquement Sonnet 5, Opus 4.8 et Opus 5 sessions à 200K. Voir [variables d'environnement](/docs/fr/env-vars).

702 729 

703La fenêtre de contexte 1M utilise la tarification standard du modèle sans prime pour les jetons au-delà de 200K. Pour les plans où le contexte étendu est inclus avec votre abonnement, l'utilisation reste couverte par votre abonnement. Pour les plans qui accèdent au contexte étendu via des crédits d'utilisation, les jetons sont facturés aux crédits d'utilisation.730La fenêtre de contexte de 1M utilise la tarification standard du modèle sans prime pour les jetons au-delà de 200K. Pour les plans où le contexte étendu est inclus avec votre abonnement, l'utilisation reste couverte par votre abonnement. Pour les plans qui accèdent au contexte étendu via des crédits d'utilisation, les jetons sont facturés aux crédits d'utilisation.

704 731 

705Si votre compte prend en charge le contexte 1M, l'option apparaît dans le sélecteur `/model` dans les dernières versions de Claude Code. Si vous ne la voyez pas, essayez de redémarrer votre session.732Si votre compte supporte le contexte de 1M, l'option apparaît dans le sélecteur `/model` dans les dernières versions de Claude Code. Si vous ne la voyez pas, essayez de redémarrer votre session.

706 733 

707Vous pouvez également utiliser le suffixe `[1m]` avec les alias de modèle ou les noms de modèle complets :734Vous pouvez également utiliser le suffixe `[1m]` avec les alias de modèle ou les noms de modèle complets :

708 735 

709```text theme={null}736```text theme={null}

710# Utiliser l'alias opus[1m] ou sonnet[1m]737# Utilisez l'alias opus[1m] ou sonnet[1m]

711/model opus[1m]738/model opus[1m]

712/model sonnet[1m]739/model sonnet[1m]

713 740 

714# Ou ajouter [1m] à un nom de modèle complet741# Ou ajoutez [1m] à un nom de modèle complet

715/model claude-opus-4-8[1m]742/model claude-opus-4-8[1m]

716```743```

717 744 


719 Fenêtre de contexte Sonnet 5746 Fenêtre de contexte Sonnet 5

720</h4>747</h4>

721 748 

722Sur l'API Anthropic, Sonnet 5 s'exécute toujours avec la fenêtre de contexte 1M. Il n'y a pas de variante 200K, pas de suffixe `[1m]` à sélectionner, et aucun crédit d'utilisation requis sur aucun plan. Les sessions se compactent automatiquement avant que la fenêtre ne se remplisse, à environ 967K jetons par défaut ; définissez [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/fr/env-vars) pour choisir un seuil différent.749Sur l'API Anthropic, Sonnet 5 s'exécute toujours avec la fenêtre de contexte de 1M. Il n'y a pas de variante de 200K, pas de suffixe `[1m]` à sélectionner, et aucun crédit d'utilisation requis sur aucun plan. Les sessions se compactent automatiquement avant que la fenêtre ne se remplisse, à environ 967K jetons par défaut ; définissez [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/fr/env-vars) pour choisir un seuil différent.

723 750 

724Deux configurations budgétisent la fenêtre à 200K à la place :751Deux configurations budgètent la fenêtre à 200K à la place :

725 752 

726* **Passerelle LLM** : lorsque `ANTHROPIC_BASE_URL` pointe vers une [passerelle](/docs/fr/llm-gateway), Claude Code ne peut pas vérifier le support 1M. Pour utiliser la fenêtre complète, sélectionnez Sonnet 5 (1M context) dans le sélecteur de modèle, qui mappe à `sonnet[1m]`.753* **Passerelle LLM** : quand `ANTHROPIC_BASE_URL` pointe vers une [passerelle](/docs/fr/llm-gateway), Claude Code ne peut pas vérifier le support de 1M. Pour utiliser la fenêtre complète, sélectionnez Sonnet 5 (1M context) dans le sélecteur de modèle, qui mappe à `sonnet[1m]`.

727* **`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`** : maintient les sessions sur chaque modèle avec une fenêtre 1M native à une fenêtre 200K ; voir [Contexte étendu](#extended-context) pour comment la retenue est appliquée. Utile pour les déploiements qui doivent limiter le contexte.754* **`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`** : tient les sessions sur chaque modèle avec une fenêtre de 1M native à une fenêtre de 200K ; voir [Contexte étendu](#extended-context) pour comment la retenue est appliquée. Utile pour les déploiements qui ont besoin de limiter le contexte.

728 755 

729<h2 id="context-window-and-auto-compaction">756<h2 id="context-window-and-auto-compaction">

730 Fenêtre de contexte et compaction automatique757 Fenêtre de contexte et compaction automatique


759* Les [sessions cloud](/docs/fr/claude-code-on-the-web) se compactent à mesure que la conversation approche de la limite du modèle786* Les [sessions cloud](/docs/fr/claude-code-on-the-web) se compactent à mesure que la conversation approche de la limite du modèle

760* Sonnet 4.6 et Opus 4.6 sans [contexte étendu](#extended-context) se compactent à la limite de 200 K, tout comme Opus 4.8 et Opus 5 lorsqu'ils s'exécutent avec une fenêtre de contexte de 200 K, comme sur Amazon Bedrock, Google Cloud's Agent Platform et Microsoft Foundry787* Sonnet 4.6 et Opus 4.6 sans [contexte étendu](#extended-context) se compactent à la limite de 200 K, tout comme Opus 4.8 et Opus 5 lorsqu'ils s'exécutent avec une fenêtre de contexte de 200 K, comme sur Amazon Bedrock, Google Cloud's Agent Platform et Microsoft Foundry

761* Lorsque vous définissez [`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`](/docs/fr/env-vars), les modèles avec une fenêtre native de 1 M, comme Sonnet 5 et les modèles Fable, se compactent à la limite de 200 K788* Lorsque vous définissez [`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`](/docs/fr/env-vars), les modèles avec une fenêtre native de 1 M, comme Sonnet 5 et les modèles Fable, se compactent à la limite de 200 K

762* Sonnet 5 se compacte au [seuil de sa configuration](#sonnet-5-context-window)789* Les modèles s'exécutant avec une fenêtre native de 1 M, comme Sonnet 5, les modèles Fable, et Opus 4.7 et versions ultérieures sur l'API Anthropic, se compactent avant que la fenêtre ne se remplisse, à environ 967 K jetons par défaut. Sur Amazon Bedrock, Google Cloud's Agent Platform et Microsoft Foundry, [Épingler les modèles pour les déploiements tiers](#pin-models-for-third-party-deployments) indique quels modèles s'exécutent avec cette fenêtre ; pour les configurations qui budgétisent Sonnet 5 à 200 K à la place, consultez [Fenêtre de contexte Sonnet 5](#sonnet-5-context-window)

763* Les sessions sur un ID de modèle que Claude Code ne reconnaît pas, comme un alias de [passerelle LLM](/docs/fr/llm-gateway), se compactent à la fenêtre de contexte que Claude Code suppose pour l'ID ; consultez [Corriger la fenêtre pour une passerelle ou un ID de modèle personnalisé](#correct-the-window-for-a-gateway-or-custom-model-id)790* Les sessions sur un ID de modèle que Claude Code ne reconnaît pas, comme un alias de [passerelle LLM](/docs/fr/llm-gateway), se compactent à la fenêtre de contexte que Claude Code suppose pour l'ID ; consultez [Corriger la fenêtre pour une passerelle ou un ID de modèle personnalisé](#correct-the-window-for-a-gateway-or-custom-model-id)

764 791 

765<h3 id="correct-the-window-for-a-gateway-or-custom-model-id">792<h3 id="correct-the-window-for-a-gateway-or-custom-model-id">

766 Corriger la fenêtre pour une passerelle ou un ID de modèle personnalisé793 Corriger la fenêtre pour une passerelle ou un ID de modèle personnalisé

767</h3>794</h3>

768 795 

769Sur une [passerelle LLM](/docs/fr/llm-gateway) ou un autre déploiement personnalisé, Claude Code peut supposer une fenêtre de contexte pour l'ID de modèle qui diffère de la fenêtre réelle du modèle, qu'il résolve ou non l'ID en un modèle Claude. [`CLAUDE_CODE_MAX_CONTEXT_TOKENS`](/docs/fr/env-vars) déclare la fenêtre que Claude Code devrait supposer à la place. La façon dont la variable s'applique dépend de l'ID. Un ID non reconnu, un ID `[1m]` non reconnu et un ID qui commence par `claude-` ou se résout en un modèle Claude sont trois cas distincts :796Sur une [passerelle LLM](/docs/fr/llm-gateway) ou un autre déploiement personnalisé, Claude Code peut supposer une fenêtre de contexte pour l'ID de modèle qui diffère de la fenêtre réelle du modèle, qu'il résolve ou non l'ID en un modèle Claude. Définissez [`CLAUDE_CODE_MAX_CONTEXT_TOKENS`](/docs/fr/env-vars) à la fenêtre que Claude Code devrait supposer à la place.

797 

798La façon dont la variable s'applique dépend de l'ID. Claude Code traite un ID comme un fournisseur ou une orthographe personnalisée lorsqu'il ne commence pas par `claude-`, en toute casse, ou lorsqu'il porte un suffixe que Claude Code supprime lors de la lecture de l'ID, comme la date `@YYYYMMDD` utilisée sur Google Cloud's Agent Platform. Avant la v2.1.259, Claude Code ne comptait pas un suffixe supprimé, donc un ID `claude-` non reconnu avec un suffixe de date était traité comme un nom `claude-` simple.

799 

800Un fournisseur ou une orthographe personnalisée non reconnu, la même orthographe avec `[1m]`, et tous les autres ID sont trois cas distincts :

801 

802* Si Claude Code ne peut pas résoudre un fournisseur ou une orthographe personnalisée en un modèle qu'il reconnaît et que l'ID ne contient pas `[1m]`, la variable s'applique directement et la compaction proactive continue à la fenêtre déclarée.

803* Si Claude Code ne peut pas résoudre un fournisseur ou une orthographe personnalisée en un modèle qu'il reconnaît et que l'ID contient `[1m]`, en toute casse, Claude Code suppose une fenêtre de 1 M pour celui-ci et la variable ne s'applique pas d'elle-même. Pour corriger la fenêtre tout en maintenant la compaction proactive, définissez également [`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`](/docs/fr/env-vars). Avec cette variable définie, Claude Code dimensionne l'ID comme la même orthographe sans `[1m]`, donc `CLAUDE_CODE_MAX_CONTEXT_TOKENS` s'applique lorsqu'il s'appliquerait à cette orthographe sans étiquette.

804 

805 Avec une fenêtre déclarée supérieure à 200 K, Claude Code affiche alors un [avertissement au démarrage](/docs/fr/errors#the-200k-limit-isnt-enforced) indiquant que la limite de 200 K n'est pas appliquée. L'avertissement est attendu dans cette configuration.

806* Si l'ID se résout en un modèle Claude Code reconnaît, ou si l'ID est un nom `claude-` simple sans suffixe pour Claude Code à supprimer, en toute casse, la variable ne prend effet que lorsque vous définissez également [`DISABLE_COMPACT`](/docs/fr/env-vars), ce qui désactive toute compaction.

770 807 

771* Si l'ID ne commence pas par `claude-` ou ne contient pas `[1m]`, en toute casse, et que Claude Code ne peut pas le résoudre en un modèle Claude, la variable s'applique directement et la compaction proactive continue à la fenêtre déclarée.808 Par exemple, un ID qui contient un nom de modèle Claude que Claude Code connaît, comme `anthropic/claude-opus-4-8`, `us.anthropic.claude-…-v1:0`, ou le daté `claude-sonnet-4-5@20250929`, se résout en ce modèle. Cela inclut les ID qui contiennent également `[1m]` : Claude Code résout `claude-opus-4-8[1m]` en Opus 4.8 même avec `CLAUDE_CODE_DISABLE_1M_CONTEXT` défini.

772* Si l'ID ne commence pas par `claude-` mais contient `[1m]`, en toute casse, et que Claude Code ne peut pas le résoudre en un modèle Claude, Claude Code suppose une fenêtre de 1 M pour celui-ci et la variable ne s'applique pas d'elle-même. Pour corriger la fenêtre tout en maintenant la compaction proactive, définissez également [`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`](/docs/fr/env-vars). Avec une fenêtre déclarée supérieure à 200 K, Claude Code affiche alors un [avertissement au démarrage](/docs/fr/errors#the-200k-limit-isnt-enforced) indiquant que la limite de 200 K n'est pas appliquée. L'avertissement est attendu dans cette configuration.

773* Si l'ID commence par `claude-` en toute casse ou se résout en un modèle Claude, la variable ne prend effet que lorsque [`DISABLE_COMPACT`](/docs/fr/env-vars) est également défini, ce qui désactive toute compaction. Par exemple, Claude Code résout un ID qui contient un nom de modèle Claude, comme `anthropic/claude-opus-4-8` ou `us.anthropic.claude-…-v1:0`, en ce modèle. Cela inclut les ID qui contiennent également `[1m]` : Claude Code résout `claude-opus-4-8[1m]` en Opus 4.8 même avec `CLAUDE_CODE_DISABLE_1M_CONTEXT` défini.

774 809 

775Pour un ID de modèle que Claude Code ne reconnaît pas, définissez [`CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT=1`](/docs/fr/env-vars) pour que Claude Code se compacte uniquement après que l'API rejette la conversation avec une [erreur de longueur excessive que Claude Code reconnaît](/docs/fr/errors#prompt-is-too-long). Claude Code n'exécute pas cette récupération lorsqu'une passerelle [réécrit l'erreur](/docs/fr/llm-gateway-connect#troubleshoot-gateway-errors) avec un libellé que Claude Code ne reconnaît pas.810Pour un ID de modèle que Claude Code ne reconnaît pas, définissez [`CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT=1`](/docs/fr/env-vars) pour que Claude Code se compacte uniquement après que l'API rejette la conversation avec une [erreur de longueur excessive que Claude Code reconnaît](/docs/fr/errors#prompt-is-too-long). Claude Code n'exécute pas cette récupération lorsqu'une passerelle [réécrit l'erreur](/docs/fr/llm-gateway-connect#troubleshoot-gateway-errors) avec un libellé que Claude Code ne reconnaît pas.

776 811 


852 887 

853Appliquez le même modèle pour `ANTHROPIC_DEFAULT_FABLE_MODEL`, `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/en/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.888Appliquez le même modèle pour `ANTHROPIC_DEFAULT_FABLE_MODEL`, `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/en/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.

854 889 

855Pour 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` :890Pour activer le [contexte étendu](#extended-context) pour un modèle épinglé, ajoutez `[1m]` à l'ID du modèle dans `ANTHROPIC_DEFAULT_OPUS_MODEL`, `ANTHROPIC_DEFAULT_SONNET_MODEL`, ou `ANTHROPIC_DEFAULT_FABLE_MODEL` :

856 891 

857```bash theme={null}892```bash theme={null}

858export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8[1m]'893export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8[1m]'

859```894```

860 895 

861Le suffixe `[1m]` applique la fenêtre de contexte 1M à toute utilisation des alias `opus` et `sonnet`, y compris la phase Opus en mode plan de [`opusplan`](#opusplan-model-setting).896Avec le suffixe `[1m]`, la fenêtre de contexte 1M s'applique à toute utilisation de l'alias épinglé, y compris la phase Opus en mode plan de [`opusplan`](#opusplan-model-setting) et les [subagents](/docs/fr/sub-agents#choose-a-model) dont le frontmatter `model` nomme l'alias.

862 897 

863* Claude Code supprime le suffixe avant d'envoyer l'ID du modèle à votre fournisseur.898* Claude Code supprime le suffixe avant d'envoyer l'ID du modèle à votre fournisseur.

864* N'ajoutez `[1m]` que lorsque le modèle sous-jacent [prend en charge le contexte 1M](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model).899* N'ajoutez `[1m]` que lorsque le modèle sous-jacent [prend en charge le contexte 1M](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model).


867<Note>902<Note>

868 Une liste d'autorisation `availableModels` livrée via [MDM ou un fichier de paramètres gérés](/docs/fr/managed-settings#delivery-mechanisms) s'applique toujours lors de l'utilisation de fournisseurs tiers ; les [paramètres gérés par le serveur ne sont pas livrés là](/docs/fr/server-managed-settings#platform-availability).903 Une liste d'autorisation `availableModels` livrée via [MDM ou un fichier de paramètres gérés](/docs/fr/managed-settings#delivery-mechanisms) s'applique toujours lors de l'utilisation de fournisseurs tiers ; les [paramètres gérés par le serveur ne sont pas livrés là](/docs/fr/server-managed-settings#platform-availability).

869 904 

870 Le filtrage correspond à un alias de modèle tel que `opus`, un préfixe de version tel que `claude-opus-4-8`, ou l'ID de modèle complet spécifique au fournisseur. Les préfixes spécifiques au fournisseur tels que `us.anthropic.` ne sont pas supprimés, donc pour autoriser un modèle spécifique, listez son ID complet spécifique au fournisseur, ou mappez-le via [`modelOverrides`](#override-model-ids-per-version). Tout suffixe `[1m]` est supprimé de l'entrée de la liste d'autorisation et du modèle demandé avant la correspondance.905 Le filtrage correspond à un alias de modèle tel que `opus`, un préfixe de version tel que `claude-opus-4-8`, ou l'ID de modèle complet spécifique au fournisseur. Les préfixes spécifiques au fournisseur tels que `us.anthropic.` ne sont pas supprimés, donc pour autoriser un modèle spécifique, listez son ID complet spécifique au fournisseur, ou mappez-le via [`modelOverrides`](#override-model-ids-per-version). Pour un modèle épinglé, cet ID est la valeur que vous avez définie dans sa variable `ANTHROPIC_DEFAULT_*_MODEL`. Tout suffixe `[1m]` est supprimé de l'entrée de la liste d'autorisation et du modèle demandé avant la correspondance.

871</Note>906</Note>

872 907 

873<h3 id="customize-pinned-model-display-and-capabilities">908<h3 id="customize-pinned-model-display-and-capabilities">

Details

219**`claude_code.interaction`**219**`claude_code.interaction`**

220 220 

221| Attribut | Description | Contrôlé par |221| Attribut | Description | Contrôlé par |

222| ------------------------- | -------------------------------------------------------------------------- | ----------------------- |222| ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |

223| `user_prompt` | Texte de l'invite. La valeur est `<REDACTED>` sauf si la porte est définie | `OTEL_LOG_USER_PROMPTS` |223| `user_prompt` | Texte de l'invite. La valeur est `<REDACTED>` sauf si la porte est définie | `OTEL_LOG_USER_PROMPTS` |

224| `user_prompt_length` | Longueur de l'invite en caractères | |224| `user_prompt_length` | Longueur de l'invite en caractères | |

225| `interaction.sequence` | Compteur basé sur 1 des interactions dans cette session | |225| `interaction.sequence` | Compteur basé sur 1 des interactions dans cette session | |

226| `parent.source` | Comment l'intervalle a obtenu son parent de trace : `env` lorsqu'il a été parent sous un `TRACEPARENT` entrant, `none` lorsqu'il a démarré sa propre trace. Nécessite Claude Code v2.1.268 ou version ultérieure | |

226| `interaction.duration_ms` | Durée murale du tour | |227| `interaction.duration_ms` | Durée murale du tour | |

227 228 

228**`claude_code.llm_request`**229**`claude_code.llm_request`**

229 230 

230| Attribut | Description | Contrôlé par |231| Attribut | Description | Contrôlé par |

231| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |232| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------ |

232| `model` | Identifiant du modèle | |233| `model` | Identifiant du modèle | |

233| `gen_ai.system` | Toujours `anthropic`. Convention sémantique GenAI OpenTelemetry | |234| `gen_ai.system` | Toujours `anthropic`. Convention sémantique GenAI OpenTelemetry | |

234| `gen_ai.request.model` | Même valeur que `model`. Convention sémantique GenAI OpenTelemetry | |235| `gen_ai.request.model` | Même valeur que `model`. Convention sémantique GenAI OpenTelemetry | |

235| `query_source` | Sous-système qui a émis la demande, tel que `repl_main_thread` ou un nom de sous-agent | |236| `query_source` | Sous-système qui a émis la demande, tel que `repl_main_thread` ou un nom de sous-agent | `ENABLE_BETA_TRACING_DETAILED` |

237| `query_source_safe` | Forme bornée de `query_source`, émise que le traçage bêta détaillé soit actif ou non, avec des valeurs telles que `repl_main_thread` ou `agent.builtin.general-purpose`. `:` devient `.` et les agents nommés par l'utilisateur apparaissent comme `agent.custom`. Nécessite Claude Code v2.1.268 ou version ultérieure | |

236| `agent_id` | Identifiant du sous-agent ou du coéquipier qui a émis la demande. Absent dans la session principale | |238| `agent_id` | Identifiant du sous-agent ou du coéquipier qui a émis la demande. Absent dans la session principale | |

237| `parent_agent_id` | Identifiant de l'agent qui a généré celui-ci. Absent pour la session principale et pour les agents générés directement à partir de celle-ci | |239| `parent_agent_id` | Identifiant de l'agent qui a généré celui-ci. Absent pour la session principale et pour les agents générés directement à partir de celle-ci | |

238| `workflow.run_id` | Identifiant d'exécution de l'exécution de l'outil [Workflow](/docs/fr/workflows), préfixé `wf_`. Absent pour les agents non générés par un workflow | |240| `workflow.run_id` | Identifiant d'exécution de l'exécution de l'outil [Workflow](/docs/fr/workflows), préfixé `wf_`. Absent pour les agents non générés par un workflow | |


241| `llm_request.context` | `interaction`, `tool`, ou `standalone` selon l'intervalle parent | |243| `llm_request.context` | `interaction`, `tool`, ou `standalone` selon l'intervalle parent | |

242| `duration_ms` | Durée murale incluant les tentatives | |244| `duration_ms` | Durée murale incluant les tentatives | |

243| `ttft_ms` | Temps jusqu'au premier jeton en millisecondes | |245| `ttft_ms` | Temps jusqu'au premier jeton en millisecondes | |

246| `first_content_ms` | Temps du début de la demande au premier bloc de contenu de la tentative réussie, en millisecondes. Absent sur les demandes qui sont revenues au chemin non-streaming. Nécessite Claude Code v2.1.268 ou version ultérieure | |

244| `input_tokens` | Nombre de jetons d'entrée du bloc d'utilisation de l'API | |247| `input_tokens` | Nombre de jetons d'entrée du bloc d'utilisation de l'API | |

245| `output_tokens` | Nombre de jetons de sortie | |248| `output_tokens` | Nombre de jetons de sortie | |

246| `cache_read_tokens` | Jetons lus à partir du cache de prompt | |249| `cache_read_tokens` | Jetons lus à partir du cache de prompt | |


252| `success` | `true` ou `false` | |255| `success` | `true` ou `false` | |

253| `status_code` | Code de statut HTTP lorsque la demande a échoué | |256| `status_code` | Code de statut HTTP lorsque la demande a échoué | |

254| `error` | Message d'erreur lorsque la demande a échoué | |257| `error` | Message d'erreur lorsque la demande a échoué | |

258| `error_class` | Jeton de classe d'erreur court lorsque la demande a échoué, tel que `api_timeout` ou `server_overload`. Nécessite Claude Code v2.1.268 ou version ultérieure | |

255| `response.has_tool_call` | `true` lorsque la réponse contenait des blocs tool-use | |259| `response.has_tool_call` | `true` lorsque la réponse contenait des blocs tool-use | |

256| `stop_reason` | `stop_reason` de la réponse API, tel que `end_turn`, `tool_use`, `max_tokens`, `stop_sequence`, `pause_turn`, ou `refusal` | |260| `stop_reason` | `stop_reason` de la réponse API, tel que `end_turn`, `tool_use`, `max_tokens`, `stop_sequence`, `pause_turn`, ou `refusal` | |

257| `gen_ai.response.finish_reasons` | Même valeur que `stop_reason`, enveloppée dans un tableau de chaînes. Convention sémantique GenAI OpenTelemetry | |261| `gen_ai.response.finish_reasons` | Même valeur que `stop_reason`, enveloppée dans un tableau de chaînes. Convention sémantique GenAI OpenTelemetry | |


261**`claude_code.tool`**265**`claude_code.tool`**

262 266 

263| Attribut | Description | Contrôlé par |267| Attribut | Description | Contrôlé par |

264| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------- |268| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |

265| `tool_name` | Nom de l'outil | |269| `tool_name` | Nom de l'outil | |

270| `tool_name_safe` | Forme de `tool_name` qui ne porte aucun nom choisi par l'utilisateur. Les noms d'outils intégrés passent verbatim. Les noms d'outils MCP apparaissent comme `mcp_other`, sauf les noms d'outils correspondant à quelques formes fixes, tels que les outils `playwright` nommés `browser_*`, qui passent verbatim. Nécessite Claude Code v2.1.268 ou version ultérieure | |

271| `bash_command_class` | Pour l'outil Bash : catégorie du premier programme de la commande à partir d'une liste fixe, telle que `vcs` ou `package_manager`. `other` pour un programme en dehors de la liste, `unparsed` lorsque la ligne ne peut pas être analysée. Nécessite Claude Code v2.1.268 ou version ultérieure | |

272| `bash_argv0` | Pour l'outil Bash : le premier programme de la commande lorsqu'il est sur la même liste fixe, tel que `git` ou `npm`. `other` pour tout programme en dehors de la liste. Nécessite Claude Code v2.1.268 ou version ultérieure | |

266| `duration_ms` | Durée murale incluant l'attente de permission et l'exécution | |273| `duration_ms` | Durée murale incluant l'attente de permission et l'exécution | |

267| `result_tokens` | Taille approximative en jetons du résultat de l'outil | |274| `result_tokens` | Taille approximative en jetons du résultat de l'outil | |

268| `agent_id` | Identifiant du sous-agent ou du coéquipier qui a exécuté l'outil. Absent dans la session principale | |275| `agent_id` | Identifiant du sous-agent ou du coéquipier qui a exécuté l'outil. Absent dans la session principale | |


289**`claude_code.tool.execution`**296**`claude_code.tool.execution`**

290 297 

291| Attribut | Description | Contrôlé par |298| Attribut | Description | Contrôlé par |

292| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |299| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------- |

293| `duration_ms` | Temps passé à exécuter le corps de l'outil | |300| `duration_ms` | Temps passé à exécuter le corps de l'outil | |

294| `tool_use_id` | Même valeur que sur l'intervalle parent `claude_code.tool` | |301| `tool_use_id` | Même valeur que sur l'intervalle parent `claude_code.tool` | |

295| `gen_ai.tool.call.id` | Même valeur que `tool_use_id`. Convention sémantique GenAI OpenTelemetry | |302| `gen_ai.tool.call.id` | Même valeur que `tool_use_id`. Convention sémantique GenAI OpenTelemetry | |

296| `success` | `true` ou `false` | |303| `success` | `true` ou `false` | |

297| `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` |304| `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` |

305| `error_class` | La catégorie d'erreur sous forme d'identifiant, avec les caractères en dehors des lettres, des chiffres et des traits de soulignement remplacés par `_`, tels que `Error_ENOENT` ou `ShellError`. Porte la catégorie même lorsque `error` porte le message complet. Nécessite Claude Code v2.1.268 ou version ultérieure | |

298 306 

299**`claude_code.hook`**307**`claude_code.hook`**

300 308 


499| `user.account_uuid` | UUID du compte (si authentifié) | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (par défaut : true) |507| `user.account_uuid` | UUID du compte (si authentifié) | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (par défaut : true) |

500| `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) |508| `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) |

501| `user.id` | Identifiant anonyme aléatoire généré à la première exécution et conservé dans `~/.claude.json`. Il ne contient aucune information personnelle et n'est pas dérivé de votre compte Claude. La suppression du fichier produit une nouvelle valeur sans rapport à la prochaine exécution. | Toujours inclus |509| `user.id` | Identifiant anonyme aléatoire généré à la première exécution et conservé dans `~/.claude.json`. Il ne contient aucune information personnelle et n'est pas dérivé de votre compte Claude. La suppression du fichier produit une nouvelle valeur sans rapport à la prochaine exécution. | Toujours inclus |

502| `user.email` | Adresse e-mail de l'utilisateur (si authentifié via OAuth) | Toujours inclus si disponible |510| `user.email` | Adresse e-mail de l'utilisateur, de votre connexion ou, dans une [session cloud](/docs/fr/claude-code-on-the-web), des identifiants de la session elle-même | Toujours inclus si disponible |

503| `terminal.type` | Type de terminal, tel que `iTerm.app`, `vscode`, `cursor`, ou `tmux` | Toujours inclus si détecté |511| `terminal.type` | Type de terminal, tel que `iTerm.app`, `vscode`, `cursor`, ou `tmux` | Toujours inclus si détecté |

504| Clés de `OTEL_RESOURCE_ATTRIBUTES` | Attributs personnalisés que vous définissez, tels que `department` ou `team.id`. Voir [Support des organisations multi-équipes](#multi-team-organization-support) | `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` (par défaut : true) |512| Clés de `OTEL_RESOURCE_ATTRIBUTES` | Attributs personnalisés que vous définissez, tels que `department` ou `team.id`. Voir [Support des organisations multi-équipes](#multi-team-organization-support) | `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` (par défaut : true) |

505 513 


1329 1337 

1330Claude 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.1338Claude 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.

1331 1339 

1332L'attribut `attempt` sur l'événement enregistre le nombre total de tentatives effectuées. `CLAUDE_CODE_MAX_RETRIES` est par défaut `10` et plafonné à `15` ; à partir de la v2.1.199, `CLAUDE_CODE_RETRY_WATCHDOG` augmente la valeur par défaut et supprime le plafond. Lorsque la demande épuise toutes les tentatives sur une erreur transitoire, `attempt` est égal à un de plus que cette limite effective : 11 par défaut, et jamais plus de 16 sauf si le watchdog est défini. Une valeur inférieure indique une erreur non réessayable telle qu'une réponse `400`.1340L'attribut `attempt` sur l'événement enregistre le nombre total de tentatives effectuées. `CLAUDE_CODE_MAX_RETRIES` est par défaut `10` et plafonné à `15`. À partir de la v2.1.199, vous pouvez définir `CLAUDE_CODE_RETRY_WATCHDOG` pour augmenter la valeur par défaut et supprimer le plafond.

1341 

1342Lorsque la demande épuise toutes les tentatives sur une erreur transitoire, `attempt` est égal à un de plus que cette limite effective : 11 par défaut, et jamais plus de 16 sauf si le watchdog est défini. Une valeur inférieure indique une erreur non réessayable telle qu'une réponse `400`, ou une cause avec son propre budget de tentatives plus petit. Par exemple, Claude Code réessaie un échec de chargement des identifiants AWS ou Google Cloud au maximum deux fois.

1333 1343 

1334Pour 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.1344Pour 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.

1335 1345 


1358 Attribuer les actions aux utilisateurs1368 Attribuer les actions aux utilisateurs

1359</h3>1369</h3>

1360 1370 

1361Les [attributs standard](#standard-attributes) sur chaque événement incluent l'identité de l'utilisateur authentifié : `user.email`, `user.account_uuid`, `user.account_id`, et `organization.id` lorsqu'il est connecté avec un compte Claude, plus `user.id` et le per-session `session.id`. `user.id` est un identifiant limité à l'installation, sauf sur les sessions de [passerelle d'applications Claude](/docs/fr/claude-apps-gateway), où il s'agit du sujet IdP du jeton émis par la passerelle.1371Les [attributs standard](#standard-attributes) sur chaque événement incluent l'identité de l'utilisateur authentifié : `user.email`, `user.account_uuid`, `user.account_id`, et `organization.id` lorsqu'il est connecté avec un compte Claude ou, dans une [session cloud](/docs/fr/claude-code-on-the-web), lorsque les propres identifiants de la session les portent, plus `user.id` et le per-session `session.id`. `user.id` est un identifiant limité à l'installation, sauf sur les sessions de [passerelle d'applications Claude](/docs/fr/claude-apps-gateway), où il s'agit du sujet IdP du jeton émis par la passerelle.

1362 1372 

1363Les appels d'outils MCP, les commandes Bash et les éditions de fichiers sont donc attribués au développeur qui a démarré la session. Claude Code n'agit pas sous un compte de service distinct ; l'identité enregistrée sur chaque événement est le propre compte Claude du développeur, ou l'identité IdP du développeur sur une session de [passerelle d'applications Claude](/docs/fr/claude-apps-gateway).1373Les appels d'outils MCP, les commandes Bash et les éditions de fichiers sont donc attribués au développeur qui a démarré la session. Claude Code n'agit pas sous un compte de service distinct ; l'identité enregistrée sur chaque événement est le propre compte Claude du développeur, ou l'identité IdP du développeur sur une session de [passerelle d'applications Claude](/docs/fr/claude-apps-gateway).

1364 1374 


1486 1496 

1487* 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](/docs/fr/data-usage#telemetry-services)1497* 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](/docs/fr/data-usage#telemetry-services)

1488* 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-dessous1498* 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

1489* 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 champ1499* Lorsqu'authentifié via OAuth, `user.email` est inclus dans les attributs de télémétrie, envoyé uniquement au point de terminaison OTel que vous configurez, jamais à Anthropic. Si cela pose un problème pour votre organisation, travaillez avec votre backend de télémétrie pour filtrer ou masquer ce champ

1490* 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`1500* 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`

1491* Le texte de réponse de l'assistant n'est pas collecté par défaut. Seule la longueur de la réponse est enregistrée. Pour inclure le texte de réponse, définissez `OTEL_LOG_ASSISTANT_RESPONSES=1`. Comme toutes les données OpenTelemetry de Claude Code, le texte de réponse est envoyé uniquement au point de terminaison OTel que vous configurez, jamais à Anthropic. Lorsque cette variable n'est pas définie, `OTEL_LOG_USER_PROMPTS` est utilisé comme solution de secours, donc définissez `OTEL_LOG_ASSISTANT_RESPONSES=0` si vous souhaitez le contenu de l'invite sans contenu de réponse1501* Le texte de réponse de l'assistant n'est pas collecté par défaut. Seule la longueur de la réponse est enregistrée. Pour inclure le texte de réponse, définissez `OTEL_LOG_ASSISTANT_RESPONSES=1`. Comme toutes les données OpenTelemetry de Claude Code, le texte de réponse est envoyé uniquement au point de terminaison OTel que vous configurez, jamais à Anthropic. Lorsque cette variable n'est pas définie, `OTEL_LOG_USER_PROMPTS` est utilisé comme solution de secours, donc définissez `OTEL_LOG_ASSISTANT_RESPONSES=0` si vous souhaitez le contenu de l'invite sans contenu de réponse

1492* 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`. Pour les serveurs intégrés de Claude Desktop, dans les sessions que Claude Desktop possède, `tool_decision` et `tool_result` portent la paire `mcp_server_name`/`mcp_tool_name`, des noms créés par l'hôte plutôt que du contenu d'argument, même avec le drapeau désactivé. L'exception nécessite Claude Code v2.1.214 ou version ultérieure. Ces données sont envoyées uniquement au point de terminaison OTEL que vous configurez, jamais à Anthropic. Les arguments peuvent toujours contenir des valeurs sensibles, donc configurez votre backend de télémétrie pour filtrer ou masquer ces attributs selon les besoins. Lorsqu'activé :1502* 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`. Pour les serveurs intégrés de Claude Desktop, dans les sessions que Claude Desktop possède, `tool_decision` et `tool_result` portent la paire `mcp_server_name`/`mcp_tool_name`, des noms créés par l'hôte plutôt que du contenu d'argument, même avec le drapeau désactivé. L'exception nécessite Claude Code v2.1.214 ou version ultérieure. Ces données sont envoyées uniquement au point de terminaison OTEL que vous configurez, jamais à Anthropic. Les arguments peuvent toujours contenir des valeurs sensibles, donc configurez votre backend de télémétrie pour filtrer ou masquer ces attributs selon les besoins. Lorsqu'activé :

Details

246| `bridge.claudeusercontent.com` | Extension [Claude in Chrome](/docs/fr/chrome) WebSocket bridge |246| `bridge.claudeusercontent.com` | Extension [Claude in Chrome](/docs/fr/chrome) WebSocket bridge |

247| `*.frame.claudeusercontent.com` | Lectures de contenu [Artifact](/docs/fr/artifacts). L'interface de ligne de commande récupère les fichiers d'un artifact depuis cet hôte lorsque Claude en ouvre un, et uniquement lorsque l'outil Artifact est [disponible](/docs/fr/artifacts#availability) pour votre compte. Pour désactiver l'outil et supprimer cette exigence, définissez [`"enableArtifact": false`](/docs/fr/settings-reference#enableartifact) ou [`CLAUDE_CODE_DISABLE_ARTIFACT=1`](/docs/fr/env-vars) ; Claude Code honore également le paramètre [`disableArtifact`](/docs/fr/settings-reference#disableartifact) déprécié. Consultez [Désactiver les artifacts](/docs/fr/artifacts#disable-artifacts) pour voir comment ces paramètres interagissent |247| `*.frame.claudeusercontent.com` | Lectures de contenu [Artifact](/docs/fr/artifacts). L'interface de ligne de commande récupère les fichiers d'un artifact depuis cet hôte lorsque Claude en ouvre un, et uniquement lorsque l'outil Artifact est [disponible](/docs/fr/artifacts#availability) pour votre compte. Pour désactiver l'outil et supprimer cette exigence, définissez [`"enableArtifact": false`](/docs/fr/settings-reference#enableartifact) ou [`CLAUDE_CODE_DISABLE_ARTIFACT=1`](/docs/fr/env-vars) ; Claude Code honore également le paramètre [`disableArtifact`](/docs/fr/settings-reference#disableartifact) déprécié. Consultez [Désactiver les artifacts](/docs/fr/artifacts#disable-artifacts) pour voir comment ces paramètres interagissent |

248| `raw.githubusercontent.com` | Flux de changelog pour [`/release-notes`](/docs/fr/commands). Dans les sessions interactives, Claude Code le récupère également en arrière-plan au démarrage lorsque son changelog en cache ne couvre pas encore la version en cours d'exécution, par exemple au premier démarrage après une mise à jour ; les sessions non interactives et cloud ne le récupèrent jamais |248| `raw.githubusercontent.com` | Flux de changelog pour [`/release-notes`](/docs/fr/commands). Dans les sessions interactives, Claude Code le récupère également en arrière-plan au démarrage lorsque son changelog en cache ne couvre pas encore la version en cours d'exécution, par exemple au premier démarrage après une mise à jour ; les sessions non interactives et cloud ne le récupèrent jamais |

249| `*-review.googlesource.com` | Recherche de changement Gerrit sur les checkouts `googlesource.com`. Lorsqu'une session d'onglet Claude Desktop Code démarre ou reprend sur un checkout [approuvé](/docs/fr/permissions#project-allow-rules-and-workspace-trust) dont l'`origin` est un hôte `googlesource.com`, Claude Code demande anonymement au serveur `-review` de cet hôte le changement ouvert correspondant au `Change-Id` de HEAD, une fois par démarrage ou reprise. Les autres types de sessions ignorent la recherche, et aucun autre hôte Gerrit n'est contacté. Facultatif : désactiver avec [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/fr/env-vars) |

249| `http-intake.logs.us5.datadoghq.com` | Événements de télémétrie opérationnelle, envoyés uniquement lorsque l'interface de ligne de commande utilise directement l'API Anthropic, jamais pour Amazon Bedrock, la plateforme d'agent de Google Cloud ou Microsoft Foundry. Facultatif : désactiver avec [`DISABLE_TELEMETRY`](/docs/fr/data-usage#telemetry-services) ou `DO_NOT_TRACK` |250| `http-intake.logs.us5.datadoghq.com` | Événements de télémétrie opérationnelle, envoyés uniquement lorsque l'interface de ligne de commande utilise directement l'API Anthropic, jamais pour Amazon Bedrock, la plateforme d'agent de Google Cloud ou Microsoft Foundry. Facultatif : désactiver avec [`DISABLE_TELEMETRY`](/docs/fr/data-usage#telemetry-services) ou `DO_NOT_TRACK` |

250| `browser-intake-us5-datadoghq.com` | Rapports d'erreurs opérationnels, envoyés lorsque l'interface de ligne de commande utilise directement l'API Anthropic et qu'une porte de déploiement côté serveur les active. Facultatif : désactiver avec `DISABLE_ERROR_REPORTING` ou `DISABLE_TELEMETRY` ; consultez [Services de télémétrie](/docs/fr/data-usage#telemetry-services) |251| `browser-intake-us5-datadoghq.com` | Rapports d'erreurs opérationnels, envoyés lorsque l'interface de ligne de commande utilise directement l'API Anthropic et qu'une porte de déploiement côté serveur les active. Facultatif : désactiver avec `DISABLE_ERROR_REPORTING` ou `DISABLE_TELEMETRY` ; consultez [Services de télémétrie](/docs/fr/data-usage#telemetry-services) |

251| `formulae.brew.sh` | Vérifications de version de mise à jour sur les installations Homebrew. Les autres méthodes d'installation ne contactent pas cet hôte |252| `formulae.brew.sh` | Vérifications de version de mise à jour sur les installations Homebrew. Les autres méthodes d'installation ne contactent pas cet hôte |

overview.md +13 −13

Details

18 <Tab title="Terminal">18 <Tab title="Terminal">

19 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.19 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.

20 20 

21 To install Claude Code, use one of the following methods:21 Pour installer Claude Code, utilisez l'une des méthodes suivantes :

22 22 

23 <Tabs>23 <Tabs>

24 <Tab title="Native Install (Recommended)">24 <Tab title="Installation native (recommandée)">

25 **macOS, Linux, WSL:**25 **macOS, Linux, WSL :**

26 26 

27 ```bash theme={null}27 ```bash theme={null}

28 curl -fsSL https://claude.ai/install.sh | bash28 curl -fsSL https://claude.ai/install.sh | bash

29 ```29 ```

30 30 

31 **Windows PowerShell:**31 **Windows PowerShell :**

32 32 

33 ```powershell theme={null}33 ```powershell theme={null}

34 irm https://claude.ai/install.ps1 | iex34 irm https://claude.ai/install.ps1 | iex

35 ```35 ```

36 36 

37 **Windows CMD:**37 **Windows CMD :**

38 38 

39 ```batch theme={null}39 ```batch theme={null}

40 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd40 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

41 ```41 ```

42 42 

43 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.43 Si vous voyez `The token '&&' is not a valid statement separator`, vous êtes dans PowerShell, pas dans CMD. Si vous voyez `'irm' is not recognized as an internal or external command`, vous êtes dans CMD, pas dans PowerShell. Votre invite affiche `PS C:\` quand vous êtes dans PowerShell et `C:\` sans le `PS` quand vous êtes dans CMD.

44 44 

45 If the install command fails with `syntax error near unexpected token '<'`, a `403`, or another curl error, see [Troubleshoot installation](/docs/en/troubleshoot-install#find-your-error) to match the error to a fix and for alternative install methods.45 Si la commande d'installation échoue avec `syntax error near unexpected token '<'`, un `403`, ou une autre erreur curl, consultez [Dépannage de l'installation](/docs/fr/troubleshoot-install#find-your-error) pour faire correspondre l'erreur à une solution et pour connaître les méthodes d'installation alternatives.

46 46 

47 [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.47 [Git for Windows](https://git-scm.com/downloads/win) est recommandé sur Windows natif afin que Claude Code puisse utiliser l'outil Bash. Si Git for Windows n'est pas installé, Claude Code utilise PowerShell comme outil shell à la place. Les configurations WSL n'ont pas besoin de Git for Windows.

48 48 

49 <Info>49 <Info>

50 Native installations automatically update in the background to keep you on the latest version.50 Les installations natives se mettent à jour automatiquement en arrière-plan pour vous maintenir à jour avec la dernière version.

51 </Info>51 </Info>

52 </Tab>52 </Tab>

53 53 


56 brew install --cask claude-code56 brew install --cask claude-code

57 ```57 ```

58 58 

59 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.59 Homebrew propose deux casks. `claude-code` suit le canal de version stable, qui est généralement environ une semaine en retard et ignore les versions avec des régressions majeures. `claude-code@latest` suit le canal le plus récent et reçoit les nouvelles versions dès qu'elles sont publiées.

60 60 

61 <Info>61 <Info>

62 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.62 Les installations Homebrew ne se mettent pas à jour automatiquement. Exécutez `brew upgrade claude-code` ou `brew upgrade claude-code@latest`, selon le cask que vous avez installé, pour obtenir les dernières fonctionnalités et correctifs de sécurité.

63 </Info>63 </Info>

64 </Tab>64 </Tab>

65 65 


69 ```69 ```

70 70 

71 <Info>71 <Info>

72 WinGet installations do not auto-update. Run `winget upgrade Anthropic.ClaudeCode` periodically to get the latest features and security fixes.72 Les installations WinGet ne se mettent pas à jour automatiquement. Exécutez `winget upgrade Anthropic.ClaudeCode` périodiquement pour obtenir les dernières fonctionnalités et correctifs de sécurité.

73 </Info>73 </Info>

74 </Tab>74 </Tab>

75 </Tabs>75 </Tabs>

76 76 

77 You can also install with [apt, dnf, or apk](/docs/en/setup#install-with-linux-package-managers) on Debian, Fedora, RHEL, and Alpine.77 Vous pouvez également installer avec [apt, dnf, ou apk](/docs/fr/setup#install-with-linux-package-managers) sur Debian, Fedora, RHEL et Alpine.

78 78 

79 Ensuite, démarrez Claude Code dans n'importe quel projet. Remplacez `your-project` par le chemin d'accès à un répertoire de projet sur votre machine :79 Ensuite, démarrez Claude Code dans n'importe quel projet. Remplacez `your-project` par le chemin d'accès à un répertoire de projet sur votre machine :

80 80 

Details

22| [`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 |22| [`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 |

23| [`plan`](#analyze-before-you-edit-with-plan-mode) | Lectures, plus commandes approuvées par le classificateur quand le [mode auto](#eliminate-prompts-with-auto-mode) est disponible | Explorer une base de code avant de la modifier |23| [`plan`](#analyze-before-you-edit-with-plan-mode) | Lectures, plus commandes approuvées par le classificateur quand le [mode auto](#eliminate-prompts-with-auto-mode) est disponible | Explorer une base de code avant de la modifier |

24| [`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 |24| [`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 |

25| [`dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode) | Outils pré-approuvés uniquement | CI verrouillé et scripts |25| [`dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode) | Lectures et outils pré-approuvés ; tout ce qui déclencherait une invite est refusé | CI verrouillé et scripts |

26| [`bypassPermissions`](#skip-all-checks-with-bypasspermissions-mode) | Tout | Conteneurs et machines virtuelles isolés uniquement |26| [`bypassPermissions`](#skip-all-checks-with-bypasspermissions-mode) | Tout | Conteneurs et machines virtuelles isolés uniquement |

27 27 

28Le mode qui examine chaque action s'appelle **Manual** dans la CLI, dans `claude --help`, dans les extensions VS Code et JetBrains, et dans l'application de bureau. Sa valeur de configuration est `default`, ce que les hooks et les intégrations SDK utilisent. La CLI accepte `manual` comme alias partout où vous tapez la valeur, par exemple `claude --permission-mode manual` ou `"defaultMode": "manual"`. L'étiquette Manual et l'alias `manual` nécessitent Claude Code v2.1.200 ou version ultérieure. L'étiquette de l'application de bureau ne dépend pas de votre version CLI.28Le mode qui examine chaque action s'appelle **Manual** dans la CLI, dans `claude --help`, dans les extensions VS Code et JetBrains, et dans l'application de bureau. Sa valeur de configuration est `default`, ce que les hooks et les intégrations SDK utilisent. La CLI accepte `manual` comme alias partout où vous tapez la valeur, par exemple `claude --permission-mode manual` ou `"defaultMode": "manual"`. L'étiquette Manual et l'alias `manual` nécessitent Claude Code v2.1.200 ou version ultérieure. L'étiquette de l'application de bureau ne dépend pas de votre version CLI.


131 Basculer les modes de permission131 Basculer les modes de permission

132</h2>132</h2>

133 133 

134Chaque interface a son propre contrôle pour basculer les modes de permission pendant une session et sa propre façon de choisir le mode de permission que les nouvelles sessions démarrent. Demander à Claude dans le chat de modifier le mode de permission ne fonctionne pas. Sélectionnez votre interface pour voir ses contrôles.134Chaque interface a son propre contrôle pour basculer les modes de permission pendant une session et sa propre façon de choisir le mode de permission que les nouvelles sessions démarrent. Sélectionnez votre interface pour voir ses contrôles.

135 135 

136<Tabs>136<Tabs>

137 <Tab title="CLI">137 <Tab title="CLI">


409* Installation de dépendances déclarées dans vos fichiers de verrouillage ou manifestes409* Installation de dépendances déclarées dans vos fichiers de verrouillage ou manifestes

410* Lecture de `.env` et envoi de credentials à leur API correspondante410* Lecture de `.env` et envoi de credentials à leur API correspondante

411* Demandes HTTP en lecture seule411* Demandes HTTP en lecture seule

412* Poussée vers n'importe quelle branche du dépôt sur lequel vous travaillez, y compris la branche par défaut. Une branche non par défaut dont le nom la marque comme cible de déploiement ou de publication, comme `production` ou `gh-pages`, n'est pas couverte : le classificateur juge une poussée là-bas selon ses propres termes. Le contenu de la poussée est toujours vérifié par rapport aux autres règles, les [règles `permissions.deny`](/docs/fr/permissions#manage-permissions) peuvent toujours bloquer les poussées vers des branches spécifiques directement dans tous les modes, et la protection de branche propre de la télécommande s'applique toujours. Avant v2.1.211, seules les poussées vers la branche sur laquelle vous avez commencé, les branches que Claude a créées, et les poussées routinières vers la branche par défaut étaient autorisées par défaut, et avant v2.1.203 toute poussée directe vers la branche par défaut était bloquée412* Poussée vers n'importe quelle branche du dépôt sur lequel vous travaillez, y compris la branche par défaut. Une branche non par défaut dont le nom la marque comme cible de déploiement ou de publication, comme `production` ou `gh-pages`, n'est pas couverte : le classificateur juge une poussée là-bas selon ses propres termes. Le contenu de la poussée est toujours vérifié par rapport aux autres règles, les [règles `permissions.deny`](/docs/fr/permissions#manage-permissions) peuvent toujours bloquer les poussées [telles qu'écrites](/docs/fr/permissions#bash-rule-limits) dans tous les modes, et la protection de branche propre de la télécommande s'applique toujours. Avant v2.1.211, seules les poussées vers la branche sur laquelle vous avez commencé, les branches que Claude a créées, et les poussées routinières vers la branche par défaut étaient autorisées par défaut, et avant v2.1.203 toute poussée directe vers la branche par défaut était bloquée

413 413 

414Claude Code v2.1.195 et ultérieur autorisent également ces éléments par défaut :414Claude Code v2.1.195 et ultérieur autorisent également ces éléments par défaut :

415 415 


428 428 

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

430 430 

431Pousser vers n'importe quelle branche du dépôt sur lequel vous travaillez et créer une demande de tirage qui correspond à votre demande s'exécutent sans invite, sauf si la poussée ou la demande de tirage tombe sous la [liste bloquée](#what-the-classifier-blocks-by-default), comme des secrets ou des données sensibles quittant le dépôt, ou une demande de tirage qui cible un dépôt ou une organisation différente. Pour exiger un point de contrôle humain avant ces actions tout en restant en mode auto, ajoutez des règles `permissions.ask` : voir [Limites communes](/docs/fr/auto-mode-config#common-boundaries).431Pousser vers n'importe quelle branche du dépôt sur lequel vous travaillez et créer une demande de tirage qui correspond à votre demande s'exécutent sans invite, sauf si la poussée ou la demande de tirage tombe sous la [liste bloquée](#what-the-classifier-blocks-by-default), comme des secrets ou des données sensibles quittant le dépôt, ou une demande de tirage qui cible un dépôt ou une organisation différente. Pour exiger un point de contrôle humain avant ces actions tout en restant en mode auto, ajoutez des règles `permissions.ask`, qui correspondent à la commande [telle qu'écrite](/docs/fr/permissions#bash-rule-limits) : voir [Limites communes](/docs/fr/auto-mode-config#common-boundaries).

432 432 

433<h3 id="first-read-outside-the-working-directories">433<h3 id="first-read-outside-the-working-directories">

434 La première lecture en dehors des répertoires de travail434 La première lecture en dehors des répertoires de travail


474 1. Les actions correspondant à vos [règles allow, ask ou deny](/docs/fr/permissions#manage-permissions) se résolvent immédiatement. Les écritures vers les [chemins protégés](#protected-paths) sont acheminées vers le classificateur même lorsqu'une règle allow correspond, et il en va de même pour les suppressions `rm` et `rmdir` ciblant un [chemin critique](#critical-paths) dans Claude Code v2.1.218 et ultérieur. Les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) vous invitent directement même lorsqu'une règle allow correspond, et il en va de même pour les outils de connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) dans les sessions où ce paramètre atteint Claude Code. Les règles ask qui correspondent sur le contenu d'une commande, comme `Bash(git push *)`, se replient sur une invite de permission474 1. Les actions correspondant à vos [règles allow, ask ou deny](/docs/fr/permissions#manage-permissions) se résolvent immédiatement. Les écritures vers les [chemins protégés](#protected-paths) sont acheminées vers le classificateur même lorsqu'une règle allow correspond, et il en va de même pour les suppressions `rm` et `rmdir` ciblant un [chemin critique](#critical-paths) dans Claude Code v2.1.218 et ultérieur. Les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) vous invitent directement même lorsqu'une règle allow correspond, et il en va de même pour les outils de connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) dans les sessions où ce paramètre atteint Claude Code. Les règles ask qui correspondent sur le contenu d'une commande, comme `Bash(git push *)`, se replient sur une invite de permission

475 2. Les actions en lecture seule et les éditions de fichiers dans votre répertoire de travail sont auto-approuvées, sauf les écritures vers les [chemins protégés](#protected-paths) et [la première lecture en dehors des répertoires de travail](#first-read-outside-the-working-directories), qui vous invite475 2. Les actions en lecture seule et les éditions de fichiers dans votre répertoire de travail sont auto-approuvées, sauf les écritures vers les [chemins protégés](#protected-paths) et [la première lecture en dehors des répertoires de travail](#first-read-outside-the-working-directories), qui vous invite

476 3. Tout le reste va au classificateur. Les outils de connecteur et les outils MCP `requiresUserInteraction` qui vous invitent directement à l'étape 1 ne parviennent jamais au classificateur, donc ni une approbation requise par l'organisation ni une étape de consentement n'est auto-approuvée476 3. Tout le reste va au classificateur. Les outils de connecteur et les outils MCP `requiresUserInteraction` qui vous invitent directement à l'étape 1 ne parviennent jamais au classificateur, donc ni une approbation requise par l'organisation ni une étape de consentement n'est auto-approuvée

477 4. Si le classificateur bloque, Claude reçoit la raison et essaie une alternative. Dans la plupart des sessions, la raison est le texte fixe `Blocked by classifier` plutôt qu'une explication écrite, dans Claude Code v2.1.208 et ultérieur ; voir [Examiner les refus](/docs/fr/auto-mode-config#review-denials)477 4. Si le classificateur bloque, Claude reçoit la raison et essaie une alternative. Dans la plupart des sessions, la raison nomme la règle que le classificateur a trouvée, comme `[Data Exfiltration]`, plutôt que de donner une explication écrite ; voir [Examiner les refus](/docs/fr/auto-mode-config#review-denials)

478 478 

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

480 480 


518 Autoriser uniquement les outils pré-approuvés avec le mode dontAsk518 Autoriser uniquement les outils pré-approuvés avec le mode dontAsk

519</h2>519</h2>

520 520 

521Si vous définissez le mode `dontAsk`, Claude Code refuse automatiquement chaque appel d'outil qui déclencherait autrement une invite. Claude exécute uniquement les actions correspondant à vos règles `permissions.allow`, les [commandes Bash en lecture seule](/docs/fr/permissions#read-only-commands), et les appels approuvés par un [hook PreToolUse](/docs/fr/permissions#extend-permissions-with-hooks). Utilisez ce mode pour les pipelines CI ou les environnements restreints où vous prédéfinissez exactement ce que Claude peut faire ; la session n'attend jamais d'entrée. La barre d'état affiche `⏵⏵ don't ask on` tandis que ce mode est actif.521Si vous définissez le mode `dontAsk`, Claude Code refuse automatiquement chaque appel d'outil qui déclencherait autrement une invite. Claude exécute toujours les actions qui ne nécessitent aucune approbation en mode Manual, telles que les lectures de fichiers dans vos répertoires de travail et les [commandes Bash en lecture seule](/docs/fr/permissions#read-only-commands), ainsi que les actions correspondant à vos règles `permissions.allow` et les appels approuvés par un [hook PreToolUse](/docs/fr/permissions#extend-permissions-with-hooks). Utilisez ce mode pour les pipelines CI ou les environnements restreints où vous prédéfinissez ce que Claude peut faire ; la session n'attend jamais d'entrée. La barre d'état affiche `⏵⏵ don't ask on` tandis que ce mode est actif.

522 522 

523Claude Code refuse les appels correspondant à vos [règles `ask` explicites](/docs/fr/permissions#manage-permissions) plutôt que de déclencher une invite. Il refuse également l'outil intégré `AskUserQuestion` même si vos règles allow les correspondent, et il en va de même pour les outils de connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) dans les sessions où ce paramètre atteint Claude Code. Il refuse les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) de la même manière, car leur carte d'approbation nécessite une réponse que ce mode ne collecte jamais ; cela nécessite Claude Code v2.1.199 ou ultérieur.523Claude Code refuse les appels correspondant à vos [règles `ask` explicites](/docs/fr/permissions#manage-permissions) plutôt que de déclencher une invite. Il refuse également l'outil intégré `AskUserQuestion` même si vos règles allow les correspondent, et il en va de même pour les outils de connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) dans les sessions où ce paramètre atteint Claude Code. Il refuse les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) de la même manière, car leur carte d'approbation nécessite une réponse que ce mode ne collecte jamais ; cela nécessite Claude Code v2.1.199 ou ultérieur.

524 524 

permissions.md +8 −4

Details

82Claude Code prend en charge plusieurs modes d'autorisation qui contrôlent la façon dont il approuve les appels d'outils. Consultez [Modes d'autorisation](/docs/fr/permission-modes) pour savoir quand utiliser chacun. Pour modifier le mode dans lequel les sessions commencent, définissez `defaultMode` dans vos [fichiers de paramètres](/docs/fr/settings#where-settings-live). [Quel mode une session commence](/docs/fr/permission-modes#which-mode-a-session-starts-in) couvre la valeur par défaut intégrée pour chaque plan et ce que l'extension VS Code lit.82Claude Code prend en charge plusieurs modes d'autorisation qui contrôlent la façon dont il approuve les appels d'outils. Consultez [Modes d'autorisation](/docs/fr/permission-modes) pour savoir quand utiliser chacun. Pour modifier le mode dans lequel les sessions commencent, définissez `defaultMode` dans vos [fichiers de paramètres](/docs/fr/settings#where-settings-live). [Quel mode une session commence](/docs/fr/permission-modes#which-mode-a-session-starts-in) couvre la valeur par défaut intégrée pour chaque plan et ce que l'extension VS Code lit.

83 83 

84| Mode | Description |84| Mode | Description |

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

86| `default` | Demande une autorisation à la première utilisation de chaque outil. Étiqueté Manuel dans l'interface de ligne de commande, les extensions VS Code et JetBrains, et l'application de bureau, et Claude Code accepte `manual` comme alias. L'étiquette et l'alias nécessitent Claude Code v2.1.200 ou version ultérieure. L'étiquette de l'application de bureau ne dépend pas de votre version CLI |86| `default` | Demande une autorisation à la première utilisation de chaque outil. Étiqueté Manuel dans l'interface de ligne de commande, les extensions VS Code et JetBrains, et l'application de bureau, et Claude Code accepte `manual` comme alias. L'étiquette et l'alias nécessitent Claude Code v2.1.200 ou version ultérieure. L'étiquette de l'application de bureau ne dépend pas de votre version CLI |

87| `acceptEdits` | Accepte automatiquement les éditions de fichiers et les commandes courantes du système de fichiers telles que `mkdir`, `touch`, `mv` et `cp` pour les chemins du répertoire de travail ou `additionalDirectories` |87| `acceptEdits` | Accepte automatiquement les éditions de fichiers et les commandes courantes du système de fichiers telles que `mkdir`, `touch`, `mv` et `cp` pour les chemins du répertoire de travail ou `additionalDirectories` |

88| `plan` | Claude lit les fichiers et exécute les commandes shell en lecture seule pour explorer mais n'édite pas vos fichiers source ; avec le [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) disponible, les commandes approuvées par le classificateur s'exécutent également. Étiqueté Plan dans l'interface de ligne de commande et l'extension VS Code |88| `plan` | Claude lit les fichiers et exécute les commandes shell en lecture seule pour explorer mais n'édite pas vos fichiers source ; avec le [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) disponible, les commandes approuvées par le classificateur s'exécutent également. Étiqueté Plan dans l'interface de ligne de commande et l'extension VS Code |

89| `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 |89| `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 |

90| `dontAsk` | Refuse automatiquement les outils sauf s'ils sont pré-approuvés via `/permissions` ou les règles `permissions.allow`. `AskUserQuestion`, les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool), et les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) dans les sessions où ce paramètre atteint Claude Code sont refusés même si vous les avez autorisés |90| `dontAsk` | Refuse automatiquement chaque appel qui demanderait autrement une autorisation ; les lectures de fichiers dans vos répertoires de travail et autres actions qui ne nécessitent aucune approbation s'exécutent toujours, tout comme les outils pré-approuvés via `/permissions` ou les règles `permissions.allow`. `AskUserQuestion`, les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool), et les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) dans les sessions où ce paramètre atteint Claude Code sont refusés même si vous les avez autorisés |

91| `bypassPermissions` | Ignore les invites d'autorisation, sauf pour les [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves) |91| `bypassPermissions` | Ignore les invites d'autorisation, sauf pour les [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves) |

92 92 

93<Warning>93<Warning>


455Lorsque 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.455Lorsque 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.

456 456 

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

458* **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é.458* **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é. Par 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.

459 459 

460Par 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.460Sur macOS et Linux, une règle de refus ou de demande écrite via un répertoire lié symboliquement avec un modèle `//`, `~/` ou `/` s'applique également à l'emplacement réel du répertoire. Par exemple, sur macOS, où `/etc` se résout à `/private/etc`, `Read(//etc/**)` bloque également `/private/etc/hosts`. Avant la v2.1.268, une règle de refus ou de demande écrite via un répertoire lié symboliquement ne s'appliquait pas à un chemin donné par son emplacement réel.

461 461 

462Lorsqu'un outil ouvre un fichier approuvé, Claude Code [confirme que le chemin se résout toujours à l'emplacement que la vérification d'autorisation a approuvé](/docs/fr/errors#refusing-after-a-symlink-changed).462Lorsqu'un outil ouvre un fichier approuvé, Claude Code [confirme que le chemin se résout toujours à l'emplacement que la vérification d'autorisation a approuvé](/docs/fr/errors#refusing-after-a-symlink-changed).

463 463 


490| `WebFetch` | Claude fetch sans vous inviter. Ne change pas quels hôtes les commandes en sandbox peuvent atteindre. | Claude Code supprime l'outil `WebFetch`, donc Claude ne peut pas fetch du tout. Ne change pas quels hôtes les commandes en sandbox peuvent atteindre. |490| `WebFetch` | Claude fetch sans vous inviter. Ne change pas quels hôtes les commandes en sandbox peuvent atteindre. | Claude Code supprime l'outil `WebFetch`, donc Claude ne peut pas fetch du tout. Ne change pas quels hôtes les commandes en sandbox peuvent atteindre. |

491| `WebFetch(domain:*)` | Claude fetch sans vous inviter, et les commandes en sandbox peuvent atteindre n'importe quel hôte. | Claude Code garde l'outil et refuse chaque fetch, et les commandes en sandbox ne peuvent atteindre aucun hôte. |491| `WebFetch(domain:*)` | Claude fetch sans vous inviter, et les commandes en sandbox peuvent atteindre n'importe quel hôte. | Claude Code garde l'outil et refuse chaque fetch, et les commandes en sandbox ne peuvent atteindre aucun hôte. |

492 492 

493Les deux formes diffèrent également sur les lectures des [artifacts](/docs/fr/artifacts), les pages que l'outil Artifact publie sur claude.ai. Une règle de refus ou de demande `WebFetch` nu ne s'applique pas à ces lectures. Une règle `domain:` couvrant `claude.ai` ou l'hôte de contenu `*.claudeusercontent.com`, telle que `WebFetch(domain:claude.ai)` ou `WebFetch(domain:*)`, refuse chaque lecture ou demande avant celle-ci. Une règle [`Artifact`](/docs/fr/artifacts#disable-artifacts) fait la même chose.

494 

495Lorsqu'une règle bloque une lecture, le refus nomme la règle. Avant la v2.1.268, une règle de refus `WebFetch` nu bloquait chaque lecture d'artifact, et une règle de demande nu demandait avant chacune.

496 

493Pour laisser Claude fetch librement tout en gardant la liste d'autorisation du sandbox telle qu'elle est, utilisez la forme nu. Ce `settings.json` fait cela :497Pour laisser Claude fetch librement tout en gardant la liste d'autorisation du sandbox telle qu'elle est, utilisez la forme nu. Ce `settings.json` fait cela :

494 498 

495```json theme={null}499```json theme={null}

platforms.md +10 −10

Details

48 Travaillez quand vous êtes loin de votre terminal48 Travaillez quand vous êtes loin de votre terminal

49</h2>49</h2>

50 50 

51Claude 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.51Claude Code offre plusieurs façons de travailler quand vous n'êtes pas à votre terminal. Elles diffèrent par ce qui déclenche le travail, où Claude s'exécute et la quantité de configuration dont vous avez besoin.

52 52 

53| | Trigger | Claude runs on | Setup | Best for |53| | Déclencheur | Claude s'exécute sur | Configuration | Idéal pour |

54| :------------------------------------------------------- | :--------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------ |54| :----------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------------- |

55| [Dispatch](/docs/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 |55| [Dispatch](/docs/fr/desktop#sessions-from-dispatch) | Envoyer une tâche depuis l'application mobile Claude | Votre machine (Desktop) | [Associer l'application mobile à Desktop](https://support.claude.com/en/articles/13947068) | Déléguer du travail quand vous êtes absent, configuration minimale |

56| [Remote Control](/docs/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 |56| [Remote Control](/docs/fr/remote-control) | Piloter une session en cours depuis [claude.ai/code](https://claude.ai/code) ou l'application mobile Claude | Votre machine (CLI ou VS Code) | Exécuter `claude remote-control` | Diriger le travail en cours depuis un autre appareil |

57| [Channels](/docs/en/channels) | Push events from a chat app like Telegram or Discord, or your own server | Your machine (CLI) | [Install a channel plugin](/docs/en/channels#quickstart) or [build your own](/docs/en/channels-reference) | Reacting to external events like CI failures or chat messages |57| [Channels](/docs/fr/channels) | Envoyer des événements depuis une application de chat comme Telegram ou Discord, ou votre propre serveur | Votre machine (CLI) | [Installer un plugin de canal](/docs/fr/channels#quickstart) ou [créer le vôtre](/docs/fr/channels-reference) | Réagir à des événements externes comme les échecs CI ou les messages de chat |

58| [Slack](/docs/en/slack) | Mention `@Claude` in a team channel | Anthropic cloud | [Install the Slack app](/docs/en/slack#setting-up-claude-code-in-slack) with [Claude Code on the web](/docs/en/claude-code-on-the-web) enabled | PRs and reviews from team chat |58| [Slack](/docs/fr/slack) | Mentionner `@Claude` dans un canal d'équipe | Cloud Anthropic | [Installer l'application Slack](/docs/fr/slack#setting-up-claude-code-in-slack) avec [Claude Code sur le web](/docs/fr/claude-code-on-the-web) activé | PRs et révisions depuis le chat d'équipe |

59| [Self-hosted environments](/docs/en/self-hosted-environments) | Start a [cloud session](/docs/en/claude-code-on-the-web) and pick your organization's environment | Your organization's infrastructure | [Deploy runners](/docs/en/self-hosted-environments-quickstart), on Team and Enterprise plans | Cloud sessions that must run inside your network |59| [Environnements auto-hébergés](/docs/fr/self-hosted-environments) | Démarrer une [session cloud](/docs/fr/claude-code-on-the-web) et choisir l'environnement de votre organisation | Infrastructure de votre organisation | [Déployer des runners](/docs/fr/self-hosted-environments-quickstart), sur les plans Team et Enterprise | Sessions cloud qui doivent s'exécuter dans votre réseau |

60| [Scheduled tasks](/docs/en/scheduled-tasks) | Set a schedule | [CLI](/docs/en/scheduled-tasks), [Desktop](/docs/en/desktop-scheduled-tasks), or [cloud](/docs/en/routines) | Pick a frequency | Recurring automation like daily reviews |60| [Tâches planifiées](/docs/fr/scheduled-tasks) | Définir un calendrier | [CLI](/docs/fr/scheduled-tasks), [Desktop](/docs/fr/desktop-scheduled-tasks), ou [cloud](/docs/fr/routines) | Choisir une fréquence | Automatisation récurrente comme les révisions quotidiennes |

61 61 

62Si vous ne savez pas par où commencer, [installez le CLI](/docs/fr/quickstart) et exécutez-le dans un répertoire de projet. Si vous préférez ne pas utiliser un terminal, [Desktop](/docs/fr/desktop-quickstart) vous donne le même moteur avec une interface graphique.62Si vous ne savez pas par où commencer, [installez le CLI](/docs/fr/quickstart) et exécutez-le dans un répertoire de projet. Si vous préférez ne pas utiliser un terminal, [Desktop](/docs/fr/desktop-quickstart) vous donne le même moteur avec une interface graphique.

63 63 

Details

123 123 

124La copie locale de la dépendance satisfait l'entrée de dépendance de votre plugin, même quand l'entrée nomme une marketplace, donc vous n'avez pas besoin d'installer la dépendance depuis sa marketplace. Claude Code ne vérifie pas une [contrainte de version](#declare-a-dependency-with-a-version-constraint) par rapport à une copie locale, donc le `plugin.json` local n'a pas besoin d'une `version`. Avant la v2.1.242, une entrée de dépendance qui nommait une marketplace ne correspondait jamais à la copie locale, et Claude Code désactivait votre plugin au chargement.124La copie locale de la dépendance satisfait l'entrée de dépendance de votre plugin, même quand l'entrée nomme une marketplace, donc vous n'avez pas besoin d'installer la dépendance depuis sa marketplace. Claude Code ne vérifie pas une [contrainte de version](#declare-a-dependency-with-a-version-constraint) par rapport à une copie locale, donc le `plugin.json` local n'a pas besoin d'une `version`. Avant la v2.1.242, une entrée de dépendance qui nommait une marketplace ne correspondait jamais à la copie locale, et Claude Code désactivait votre plugin au chargement.

125 125 

126Quand les deux plugins se trouvent dans un dossier parent unique, vous pouvez passer ce dossier à `--plugin-dir` une seule fois. Si le dossier n'est pas lui-même un plugin, Claude Code charge chaque dossier enfant qui a un `.claude-plugin/plugin.json`. Nécessite Claude Code v2.1.265 ou ultérieur.

127 

126Si vous n'avez pas installé la dépendance depuis sa marketplace, votre plugin arrête de se charger quand la copie locale disparaît :128Si vous n'avez pas installé la dépendance depuis sa marketplace, votre plugin arrête de se charger quand la copie locale disparaît :

127 129 

128* **Vous avez désactivé la copie locale** : Claude Code désactive votre plugin au prochain chargement de plugin. Pour une entrée de dépendance qui nomme une marketplace, Claude Code rapporte `Dependency "<name>@inline" is disabled — enable it or remove the dependency` ; pour une entrée de nom simple, il rapporte la dépendance par son nom simple. `<name>@inline` est comment Claude Code identifie chaque plugin `--plugin-dir` et `--plugin-url`.130* **Vous avez désactivé la copie locale** : Claude Code désactive votre plugin au prochain chargement de plugin. Pour une entrée de dépendance qui nomme une marketplace, Claude Code rapporte `Dependency "<name>@inline" is disabled — enable it or remove the dependency` ; pour une entrée de nom simple, il rapporte la dépendance par son nom simple. `<name>@inline` est comment Claude Code identifie chaque plugin `--plugin-dir` et `--plugin-url`.

plugin-evals.md +705 −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# Tester les plugins avec des evals

6 

7> Écrivez des cas d'eval pour votre plugin Claude Code, exécutez-les avec claude plugin eval, notez les résultats, comparez-les avec une base de référence sans plugin et contrôlez CI sur le score.

8 

9`claude plugin eval` exécute votre [plugin](/docs/fr/plugins) par rapport à une suite de cas de test et note les résultats. Chaque cas est une invite réaliste plus un ou plusieurs évaluateurs. Un évaluateur est une vérification réussi/échoué sur ce que Claude a produit, comme une regex sur la réponse, si un outil particulier a été appelé, ou une rubrique qu'un deuxième modèle juge sur la réponse.

10 

11Vous n'avez pas à écrire la suite à la main ; `claude plugin eval init` vous pose des questions sur votre plugin, propose les cas et les évaluateurs, les essaie, et écrit les fichiers. Vous pouvez aussi demander à Claude de faire la même chose à partir d'une session que vous avez déjà ouverte.

12 

13Utilisez les evals pour mesurer la fiabilité avec laquelle votre plugin oriente Claude vers le bon résultat, pour détecter les régressions lorsque vous modifiez le plugin ou qu'un nouveau modèle est lancé, et pour voir ce que le plugin contribue par rapport à aucun plugin du tout.

14 

15Cette page est destinée aux auteurs de plugins et de skills qui ont un plugin fonctionnel et qui veulent tester son comportement, et aux équipes qui contrôlent les modifications de plugins dans CI. Son format de cas est séparé du fichier `evals/evals.json` que le [plugin skill-creator](/docs/fr/skills#run-evals-with-skill-creator) utilise. Pour créer un plugin, voir [Créer des plugins](/docs/fr/plugins) ; pour vérifier les fichiers d'un plugin pour les erreurs de syntaxe et de schéma plutôt que son comportement, utilisez [`claude plugin validate`](/docs/fr/plugins-reference#plugin-validate).

16 

17<Note>

18 Chaque exécution d'eval et chaque évaluateur de juge est un vrai appel de modèle sur votre compte, compté par rapport à l'utilisation de votre plan ou votre facture API, alors vérifiez d'abord les [exigences](#requirements). Ensuite [créez votre première suite d'eval](#create-your-first-eval-suite), ou allez à [Exécuter les evals dans CI](#run-evals-in-ci) si vous en avez déjà une.

19</Note>

20 

21<h2 id="requirements">

22 Exigences

23</h2>

24 

25Pour exécuter les evals de plugin, vous avez besoin de :

26 

27* Claude Code v2.1.269 ou ultérieur. Exécutez `claude --version` pour vérifier et `claude update` pour mettre à jour.

28* Un répertoire de plugin avec un manifeste `plugin.json` ou `.claude-plugin/plugin.json`, ou un [plugin de répertoire de skills](/docs/fr/plugins-reference#skills-directory-plugins).

29* La même authentification et le même fournisseur de modèle que vos sessions Claude Code normales. Les exécutions d'eval, les évaluateurs notés par le juge, et `claude plugin eval init` appellent le modèle avec vos identifiants, donc ils comptent par rapport à vos limites d'utilisation du plan ou votre facture API. Lorsque la commande rapporte un coût, le chiffre est une [estimation du prix catalogue](/docs/fr/costs) de ces appels.

30 

31<h2 id="how-an-eval-run-works">

32 Comment fonctionne une exécution d'eval

33</h2>

34 

35Une suite d'eval vit dans un répertoire appelé `evals/` à l'intérieur de votre plugin, disposé comme [Écrire et affiner les cas](#write-and-refine-cases) le montre. Chaque cas est son propre sous-répertoire avec une [invite](#set-run-limits-and-tools-in-prompt-md) et un ou plusieurs [évaluateurs](#grade-the-result). L'invite est quelque chose qu'une personne utilisant votre plugin pourrait taper, comme une demande que l'une de ses skills devrait gérer.

36 

37<h3 id="what-happens-in-a-run">

38 Ce qui se passe dans une exécution

39</h3>

40 

41Pour chaque exécution d'un cas, Claude Code démarre une nouvelle session [isolée](#how-runs-are-isolated) [non-interactive](/docs/fr/headless) avec seulement votre plugin chargé, envoie l'invite, et laisse Claude travailler jusqu'à ce qu'il finisse ou atteigne la limite de tour ou de temps du cas. Chaque évaluateur vérifie ensuite la réponse finale, la transcription, ou un fichier que Claude a créé, et réussit ou échoue.

42 

43<h3 id="how-a-case-is-scored">

44 Comment un cas est noté

45</h3>

46 

47Une exécution d'un agent non-déterministe vous dit peu de choses, donc chaque cas s'exécute trois fois par défaut. Le score d'une exécution est la fraction de ses évaluateurs qui ont réussi, pondérée si vous définissez des poids, et le score du cas est la moyenne sur ses exécutions. Un cas réussit lorsque son score atteint le [`--threshold`](#command-options), `1.0` par défaut. Dans les appels de modèle, une suite fait environ cas × exécutions appels d'agent avec le plugin et autant à nouveau pour la [base de référence sans plugin](#the-no-plugin-baseline), plus trois appels de juge courts par évaluateur `llm` ou `baseline` par exécution.

48 

49<h3 id="the-no-plugin-baseline">

50 La base de référence sans plugin

51</h3>

52 

53Un score élevé en soi ne vous dit pas si le plugin a aidé, car Claude pourrait faire aussi bien sans lui. Pour séparer les deux, les exécutions de chaque cas sont répétées sans plugin chargé par défaut, et vous obtenez deux scores, `WITH` et `W/OUT`. Leur différence, `Δ`, est ce que le plugin a contribué. Si un cas marque 1.0 à la fois avec et sans le plugin, le plugin n'est pas ce qui l'a fait réussir. Les deux ensembles d'exécutions sont appelés le bras with et le bras without ; [Comparer avec une base de référence sans plugin](#compare-against-a-no-plugin-baseline) couvre comment les évaluateurs sont notés sur les deux bras et comment désactiver la base de référence.

54 

55<h2 id="create-your-first-eval-suite">

56 Créez votre première suite d'eval

57</h2>

58 

59Cette procédure écrit un cas pour votre propre plugin, l'exécute, et lit le résultat. Avant de commencer, assurez-vous que vous avez :

60 

61* Claude Code v2.1.269 ou ultérieur et les autres [exigences](#requirements)

62* Un terminal ouvert au répertoire racine de votre plugin, celui contenant `plugin.json` ou `.claude-plugin/plugin.json`

63* Une skill dans le plugin que vous voulez tester, et une demande qu'un utilisateur taperait qui devrait la déclencher

64 

65<Steps>

66 <Step title="Créer les cas">

67 À partir de la racine du plugin, exécutez :

68 

69 ```bash theme={null}

70 claude plugin eval init

71 ```

72 

73 Si Claude Code ne fait pas déjà confiance à ce répertoire, il demande d'abord `Trust this plugin directory?` ; répondez `y`. Une session Claude Code interactive s'ouvre ensuite. Claude lit votre plugin et vous demande à quoi ressemble un bon résultat, propose des invites qui devraient et ne devraient pas déclencher le plugin, conçoit des évaluateurs pour chacun, les teste une fois pour vérifier qu'ils se comportent, et écrit un répertoire de cas par invite sous `evals/`, chacun nommé d'après son invite. Lorsque Claude vous dit que la suite est prête, quittez cette session avec `/exit` ou Ctrl+D pour revenir à votre shell.

74 

75 Si vous avez déjà une session Claude Code ouverte à la racine du plugin, vous pouvez plutôt demander à Claude d'exécuter `claude plugin eval init`. Claude exécute la commande et vous pose ensuite les mêmes questions dans cette conversation.

76 

77 Si vous préférez écrire un cas vous-même pour voir exactement ce que contiennent les fichiers, suivez [Écrire un cas à la main](#write-a-case-manually) et revenez ici pour l'exécuter.

78 </Step>

79 

80 <Step title="Exécuter la suite">

81 De retour à votre shell à la racine du plugin, exécutez chaque cas sous `evals/` :

82 

83 ```bash theme={null}

84 claude plugin eval .

85 ```

86 

87 Vous avez déjà fait confiance à ce répertoire lors de l'étape 1, donc l'exécution commence immédiatement. Si vous avez écrit le cas à la main à la place, l'exécution demande d'abord `Trust this plugin directory? [y/N]` ; répondez `y`. [Ce qu'une exécution peut accéder](#security) explique à quoi vous acceptez.

88 

89 Chaque cas s'exécute trois fois avec votre plugin et trois fois sans lui, donc un cas est six exécutions. Une ligne de progression s'affiche à la fin de chaque exécution, avec le score de cette exécution et le verdict de chaque évaluateur.

90 </Step>

91 

92 <Step title="Lire le résumé">

93 Lorsque la suite se termine, vous voyez un tableau récapitulatif, suivi de l'endroit où le rapport est allé :

94 

95 ```text theme={null}

96 CASE WITH W/OUT Δ RUNS COST NOTES

97 first-case 1.00 0.33 +0.67 6 $0.41

98 

99 1 case(s) · mean Δ +0.67 · 74s · $0.41

100 Report: /Users/you/my-plugin/evals/results/2026-09-10T17-02-11-482Z/report.html

101 Published: https://claude.ai/... · keep local next time with --no-publish

102 ```

103 

104 `WITH` est le score du cas avec votre plugin chargé, `W/OUT` est le score sans lui, et un `Δ` positif signifie que le plugin a augmenté le score. `COST` est une estimation du prix catalogue des appels de modèle, et `NOTES` affiche l'explication de l'évaluateur défaillant de poids le plus élevé, ou l'erreur de l'exécution, du bras with.

105 </Step>

106 

107 <Step title="Ouvrir le rapport et itérer">

108 Ouvrez l'URL `Published:`, ou le chemin `Report:` lorsqu'aucune ligne `Published:` n'apparaît, pour voir le verdict de chaque évaluateur et l'explication pour chaque exécution, et pour les évaluateurs `llm` les votes du juge et l'extrait qu'il a jugé. La ligne `Published:` n'apparaît que lorsque votre compte peut [publier des rapports](#html-report).

109 

110 La découverte la plus courante au premier abord est un `Δ` proche de zéro avec l'évaluateur `tool_used: Skill` du cas échouant, ce qui signifie que Claude ne choisit pas votre skill sur une formulation naturelle. Ajustez la [`description`](/docs/fr/skills#frontmatter-reference) de la skill, exécutez `claude plugin eval .` à nouveau, et comparez.

111 

112 Pour itérer sur un cas à moindre coût, exécutez un seul bras une fois. Une seule exécution est bruyante, donc confirmez tout changement aux trois exécutions par défaut avant de lui faire confiance. Avec un seul bras, le tableau affiche les colonnes `SCORE` et `PASS%` au lieu de `WITH`, `W/OUT`, et `Δ` :

113 

114 ```bash theme={null}

115 claude plugin eval . --case <case-name> --runs 1 --ablation none

116 ```

117 

118 Remplacez `<case-name>` par l'un des noms de répertoire sous `evals/`.

119 </Step>

120</Steps>

121 

122<h2 id="write-and-refine-cases">

123 Écrire et affiner les cas

124</h2>

125 

126Les cas que `claude plugin eval init` écrit sont des fichiers simples que vous pouvez ouvrir, modifier et ajouter. Un cas est un répertoire sous le répertoire eval du plugin qui contient un `prompt.md`, un `case.yaml`, ou les deux. Pour regrouper les cas, imbriquez-les sous un répertoire qui n'est pas lui-même un cas ; tout ce qui se trouve à l'intérieur d'un répertoire de cas, comme `graders/` et les fichiers de fixture, appartient à ce cas.

127 

128Ceci est la disposition que `claude plugin eval init` écrit et celle à utiliser pour les nouvelles suites. La [référence de la suite d'eval](#eval-suite-reference) a l'arborescence complète, y compris les mocks et les résultats :

129 

130```text theme={null}

131my-plugin/

132├── .claude-plugin/plugin.json

133├── skills/...

134└── evals/

135 ├── first-case/

136 │ ├── prompt.md # frontmatter: case fields; body: the prompt

137 │ ├── graders/

138 │ │ ├── criteria.md # frontmatter: type + options; body: rubric or pattern

139 │ │ └── skill-fired.md

140 │ └── case.yaml # optional: only for context.* fields

141 ├── ignores-unrelated-request/

142 │ └── ...

143 └── results/ # written by each run; add to .gitignore

144```

145 

146<h3 id="write-a-case-manually">

147 Écrire un cas à la main

148</h3>

149 

150Faire écrire les cas par Claude avec `claude plugin eval init` est le chemin recommandé. Pour en écrire un vous-même à la place, commencez par un modèle vierge. La commande suivante écrit un cas nommé `first-case` avec un `prompt.md` d'espace réservé et un évaluateur d'espace réservé, et n'exécute rien :

151 

152```bash theme={null}

153claude plugin eval init --bare first-case

154```

155 

156```text theme={null}

157evals/first-case/

158├── prompt.md # the prompt sent to Claude, plus run limits

159└── graders/

160 └── criteria.md # one grader: how to score the result

161```

162 

163Dans `prompt.md`, vous écrivez le message que Claude reçoit dans chaque exécution, et définissez les limites de l'exécution et les outils que le cas peut utiliser dans son frontmatter. Ouvrez `evals/first-case/prompt.md` et remplacez le corps d'espace réservé par une demande que l'une de vos skills devrait traiter, formulée de la manière qu'un utilisateur la taperait plutôt que de nommer la skill. Cet exemple concerne une skill qui rédige des messages de commit ; utilisez votre propre demande :

164 

165```markdown theme={null}

166---

167max_turns: 10

168allowed_tools: [Read, Glob, Grep, Skill]

169---

170 

171Write me a commit message for this change: I renamed getUser to fetchUser and updated the three call sites.

172```

173 

174Chaque exécution commence dans un répertoire de travail vide, donc mettez tout ce dont la tâche a besoin dans l'invite elle-même, ou [configurez l'espace de travail](#add-setup-or-history-with-case-yaml) d'abord. La [liste complète des champs frontmatter](#prompt-md-fields) couvre le modèle, le délai d'expiration, les balises et les variables d'environnement.

175 

176Chaque fichier sous `graders/` est une vérification appliquée après l'exécution. Ouvrez `evals/first-case/graders/criteria.md` et remplacez l'espace réservé par une rubrique pour le modèle juge, écrite comme des conditions PASS et FAIL concrètes :

177 

178```markdown theme={null}

179---

180type: llm

181---

182 

183PASS if <what a correct response contains>.

184FAIL if <what a wrong or missing response looks like>.

185```

186 

187Ensuite, ajoutez un deuxième évaluateur qui vérifie si votre skill est ce qui a produit la réponse. Créez `evals/first-case/graders/skill-fired.md`, en remplaçant `your-skill-name` par le `name` du `SKILL.md` de votre skill :

188 

189```markdown theme={null}

190---

191type: tool_used

192tool: Skill

193input_match: '"skill"\s*:\s*"(?:[\w-]+:)?your-skill-name"'

194---

195```

196 

197Cela réussit lorsque Claude a invoqué cette skill au moins une fois pendant l'exécution, y compris par sa forme `plugin-name:skill-name` avec espace de noms. [Types d'évaluateurs](#grader-types) énumère les autres vérifications disponibles, comme la correspondance d'une regex ou la confirmation qu'un fichier a été créé.

198 

199Avec les deux fichiers enregistrés, exécutez le cas de la manière que le [démarrage rapide](#create-your-first-eval-suite) le fait, avec `claude plugin eval .` à partir de la racine du plugin.

200 

201<h3 id="set-run-limits-and-tools-in-prompt-md">

202 Définir les limites d'exécution et les outils dans prompt.md

203</h3>

204 

205Définissez `max_turns`, `timeout_seconds`, `model`, `tags` d'un cas, et les `allowed_tools` qu'il peut utiliser dans le frontmatter de `prompt.md` ; la référence [frontmatter de prompt.md](#prompt-md-fields) énumère chaque champ et sa valeur par défaut. Claude reçoit le corps exactement comme vous l'avez écrit. Les mentions `@path` dedans ne sont pas développées en pièces jointes de fichier, donc si Claude a besoin de lire un fichier, accordez un outil pour cela dans `allowed_tools`.

206 

207<h3 id="grade-the-result">

208 Choisir et pondérer les évaluateurs

209</h3>

210 

211Le frontmatter d'un évaluateur définit son `type`, et optionnellement un `weight` qui le fait compter pour plus du score de l'exécution et un [`arm`](#compare-against-a-no-plugin-baseline) qui contrôle comment il est noté par rapport à la base de référence. Des six types, `regex`, `tool_used`, `tool_order`, et `file_exists` sont calculés à partir de la transcription et des fichiers et ne coûtent rien, tandis que `llm` et `baseline` appellent un modèle juge et s'ajoutent au coût de l'exécution.

212 

213Il n'y a pas d'évaluateurs de code personnalisé. [Types d'évaluateurs](#grader-types) énumère les options de chaque type et la condition de réussite, et [ce qu'un évaluateur peut regarder](#what-a-grader-can-look-at) énumère les valeurs que `target` et `focus` acceptent.

214 

215Le juge pour les évaluateurs `llm` et `baseline` est un petit modèle rapide par défaut. Passez `--judge-model sonnet` ou un ID de modèle complet pour en utiliser un plus fort pour les rubriques nuancées.

216 

217<h4 id="choose-graders-that-give-a-stable-signal">

218 Choisir des évaluateurs qui donnent un signal stable

219</h4>

220 

221Un évaluateur `llm` demande à un modèle un verdict, donc sa réponse peut différer entre les exécutions, et elle diffère plus le plus long le texte qu'il doit lire. Ces habitudes gardent les scores d'une suite assez stables pour être dignes de confiance :

222 

223* Pour une sortie longue comme un fichier généré, notez-la avec un évaluateur `regex` sur le contenu du fichier, qui vérifie le fichier entier de la même manière à chaque fois. Gardez les évaluateurs `llm` pour les sorties courtes, avec des rubriques écrites comme des conditions PASS et FAIL concrètes.

224* Donnez à chaque cas un évaluateur sur le résultat, comme le message final ou un fichier produit, et un sur la façon dont Claude y est arrivé, comme `tool_used` ou `tool_order`. Ensemble, ils vous disent à la fois si la réponse était correcte et si votre plugin l'a produite.

225* Si l'évaluateur `tool_used: Skill` d'un cas réussit mais `Δ` est négatif, soupçonnez le juge avant le plugin. Un petit modèle juge peut marquer une réponse correcte comme fausse parce qu'elle est formatée différemment de ce que la rubrique décrit. Réexécutez avec `--judge-model sonnet`, et resserrez la rubrique pour que le formatage ne décide pas du verdict.

226* Pour vérifier qu'une construction ou un test a réussi à l'intérieur de l'exécution, demandez à Claude de l'exécuter et d'écrire le résultat dans un fichier, notez ce fichier, et affirmez que la commande a été exécutée avec un évaluateur `tool_used` dont `input_match` nomme la commande.

227 

228<h3 id="compare-against-a-no-plugin-baseline">

229 Noter par rapport à la base de référence sans plugin

230</h3>

231 

232Lorsqu'un plugin est en test, chaque cas s'exécute dans deux bras par défaut. Le bras with est ses exécutions avec le plugin chargé, et le bras without est le même nombre d'exécutions sans aucun plugin. Le résumé et le rapport affichent les deux scores et `Δ`, le score du bras with moins le score du bras without. Passez `--ablation none` pour exécuter seulement le bras with, ce qui réduit de moitié le coût lorsque vous n'avez pas besoin de la comparaison, comme lors de l'itération sur les évaluateurs.

233 

234Dans une exécution à deux bras, certains évaluateurs sont rapportés avec `scored: false`. Une vérification comme « la skill a été invoquée » ne peut jamais réussir sans le plugin, donc la compter pousserait le bras without vers zéro et gonflerait `Δ`. Pour garder les deux bras comparables, Claude Code exclut ces évaluateurs du score dans les deux bras et les rapporte dans le bras with comme des indicateurs réussi/échoué uniquement. Cela inclut :

235 

236* Chaque évaluateur `tool_used` dont `tool` est `Skill`

237* Tout évaluateur que vous marquez `arm: with-only`

238 

239Si chaque évaluateur dans un cas en est un, ils sont notés normalement à la place, puisqu'il n'y aurait rien d'autre à noter. Définissez `arm: both` sur un évaluateur pour le noter dans les deux bras indépendamment, ce que vous voulez pour une vérification « ne doit pas invoquer la skill » avec `min: 0` et `max: 0`. Sous `--ablation none`, rien n'est exclu, donc la même suite peut produire un score absolu différent dans les deux modes.

240 

241<h3 id="use-a-different-eval-directory">

242 Utiliser un répertoire d'eval différent

243</h3>

244 

245Si `evals/` est déjà pris par un autre outil, gardez la suite dans un répertoire différent. Vous pouvez enregistrer ce répertoire dans le `plugin.json` du plugin pour que chaque exécution et chaque collaborateur l'utilise, ou le passer sur la ligne de commande pour une seule exécution :

246 

247* **Dans `plugin.json`** : ajoutez `"experimental": { "evals": "quality/evals" }`.

248* **Sur la ligne de commande** : passez `--eval-dir quality/evals` à la fois à `claude plugin eval` et `claude plugin eval init`.

249 

250Si vous définissez les deux, le répertoire du drapeau est utilisé. Donnez un chemin relatif de noms de répertoire simples comme `qa` ou `quality/evals`. Un chemin absolu ou contenant `..` n'est pas accepté : comme valeur de drapeau c'est une erreur, tandis qu'une valeur de manifeste inutilisable imprime une ligne `Warning:` et l'exécution utilise `evals/` à la place. Les cas, les résultats, et la sortie `init` se déplacent tous vers ce répertoire.

251 

252<h2 id="set-up-fixtures-and-mocks">

253 Configurer les fixtures et les mocks

254</h2>

255 

256Un cas peut avoir besoin de plus qu'une invite : des fichiers ou un référentiel git dans l'espace de travail, une conversation antérieure à continuer, ou des réponses des serveurs MCP avec lesquels votre plugin communique. Chacun d'eux est configuré à côté du cas pour que les exécutions restent reproductibles.

257 

258<h3 id="add-setup-or-history-with-case-yaml">

259 Ensemencer l'espace de travail ou la conversation

260</h3>

261 

262Chaque exécution commence dans un espace de travail vide. Lorsqu'un cas a besoin de plus que l'invite, ajoutez un `case.yaml` à côté de `prompt.md` avec un bloc `context`.

263 

264Pour créer d'abord des fichiers de fixture ou un référentiel git, écrivez un script Bash dans le répertoire de cas et nommez-le dans `context.scaffold_script`. Le script s'exécute en tant que vous, en dehors du sandbox de l'agent, et seulement lorsque vous passez `--scaffold`, donc passez ce drapeau seulement pour les suites que vous ou votre organisation avez écrites. Pour continuer une conversation antérieure, enregistrez la transcription en tant que fichier `.jsonl` et nommez-la dans `context.history_file`, et l'invite du cas devient le prochain tour utilisateur. Pour laisser Claude lire les répertoires de fixture pendant l'exécution, énumérez-les dans `context.add_dirs`.

265 

266Un `case.yaml` a également besoin de `schema_version: "1.1"` et `name` ; la référence [champs case.yaml](#case-yaml-fields) a la liste complète.

267 

268Ce `case.yaml` ensemence un espace de travail à partir d'un script et laisse Claude lire les fixtures à partir d'un répertoire `resources/` :

269 

270```yaml theme={null}

271schema_version: "1.1"

272name: changelog-from-diff

273tags: [smoke]

274context:

275 scaffold_script: fixture.sh

276 add_dirs: [resources]

277```

278 

279<h3 id="mock-mcp-servers">

280 Serveurs MCP fictifs

281</h3>

282 

283Vous pouvez évaluer un plugin dont les skills appellent des outils MCP sans le vrai service derrière eux. Mettez un fichier Markdown par outil sous `evals/mocks/<server>/<tool>.md` pour la suite entière, ou sous le répertoire `mocks/` propre d'un cas pour un cas, où `<server>` est le nom du serveur dans la [configuration MCP](/docs/fr/plugins-reference#mcp-servers) de votre plugin.

284 

285Une exécution ne démarre jamais les vrais serveurs MCP de votre plugin à moins que vous le demandiez. Claude Code enregistre un remplaçant sous le nom propre de chaque serveur. Les outils avec un fichier mock répondent à partir de celui-ci et sont autorisés sans une concession `--allow-tools`, et un outil sans fichier mock n'est pas disponible pour Claude. Un serveur sans aucun mock du tout apparaît dans la ligne de progression `mocked:` du cas comme `plugin_<plugin>_<server>[not started: no mock]`.

286 

287Le corps du fichier est ce que l'outil retourne à Claude. Ce mock se substitue à un outil `create_issue` sur un serveur nommé `tracker`, vérifie l'entrée que Claude envoie, et renvoie le titre. Enregistrez-le en tant que `evals/mocks/tracker/create_issue.md` :

288 

289```markdown theme={null}

290---

291expect:

292 title: string

293 priority: [low, medium, high]

294---

295 

296Created issue #4821: {{input.title}}

297```

298 

299Insérez les champs de l'entrée de l'appel avec `{{input.<field>}}`, et le contenu d'un fichier de fixture à côté du mock avec `{{file:fixtures/{input.<field>}.json}}`. Le bloc `expect:` protège l'entrée. Si un appel le viole, l'exécution s'arrête avec un score de 0 et enregistre pourquoi, donc un cas peut affirmer ce que votre plugin a demandé au serveur de faire. Définissez `error: true` pour retourner le corps comme une erreur d'outil à la place, ou `type: agent` pour avoir un petit modèle répondre en tant que serveur à partir d'instructions dans le corps. La [référence du fichier mock](#mock-files) énumère chaque clé et les fichiers `_server.md` et `_tools.json`.

300 

301Pour noter les appels eux-mêmes, pointez un évaluateur vers `target: mock_calls`.

302 

303Pour exécuter contre les vrais serveurs MCP du plugin à la place, passez l'un de ces drapeaux. De toute façon, ces processus s'exécutent en tant que vous, en dehors du sandbox de l'exécution, et leurs outils ont besoin d'une concession [`--allow-tools`](#grant-tools) :

304 

305* **`--allow-real-servers`** : démarrez le processus réel pour chaque serveur que vous n'avez pas mocké, et continuez à répondre aux outils mockés à partir de leurs fichiers

306* **`--mocks off`** : ignorez `mocks/` entièrement et démarrez chaque serveur que le plugin déclare

307 

308<h4 id="replay-agent-mock-answers">

309 Rejouer les réponses mock d'agent

310</h4>

311 

312Un mock `type: agent` répond avec un appel au [`--judge-model`](#command-options), donc sa sortie varie entre les exécutions et change si vous changez le juge. Lorsqu'une exécution se termine sans erreur ou abandon, Claude Code enregistre chaque réponse qu'un mock d'agent a donnée sous le répertoire des résultats dans `mock-recordings/`.

313 

314Ouvrez `ADOPT.txt` là pour voir chaque enregistrement et le répertoire `.replay/<server>/` pour le copier dedans, à côté du mock qui l'a produit. Après avoir copié un enregistrement là, les exécutions ultérieures répondent à l'appel identique à partir de celui-ci sans appel de modèle. Validez `mocks/.replay/` avec le reste de `mocks/` pour que les exécutions CI soient reproductibles.

315 

316<h2 id="run-evals">

317 Exécuter les evals

318</h2>

319 

320Une fois qu'une suite existe, `claude plugin eval` l'exécute. Vous choisissez quel plugin et quels cas exécuter avec l'argument cible, accordez tous les outils que les cas ont besoin au-delà de l'ensemble en lecture seule avec `--allow-tools`, et contrôlez le nombre d'exécutions, les modèles, le coût et la sortie avec les autres options.

321 

322<h3 id="choose-what-to-evaluate">

323 Choisir ce qu'il faut évaluer

324</h3>

325 

326La plupart du temps, vous exécutez `claude plugin eval .` à partir de la racine du plugin, ce qui exécute chaque cas de la suite avec le plugin dans lequel vous vous tenez chargé. Pour exécuter un fichier de cas unique, ou pour évaluer un plugin que vous avez installé plutôt qu'un que vous développez, passez une cible différente :

327 

328| Cible | Ce qui s'exécute |

329| :------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

330| Le répertoire racine d'un plugin, comme `.` | Chaque cas sous son répertoire d'eval, avec ce plugin chargé |

331| Un fichier `prompt.md` ou `case.yaml` unique | Ce cas, avec son plugin englobant chargé |

332| Un plugin installé par nom, `name` ou `name@marketplace` | Les cas dans le répertoire d'eval de la copie installée, avec la copie installée chargée. Les résultats sont écrits sous `./evals/results/` dans votre répertoire courant, ou `./<dir>/results/` avec `--eval-dir` |

333| `name@skills-dir` | La même chose, pour un [plugin de répertoire de skills](/docs/fr/plugins-reference#skills-directory-plugins) |

334| Omis | Le répertoire courant en tant que chemin |

335 

336Ajoutez `--case <glob>` pour filtrer par nom de cas et `--tag <tag>` pour garder les cas avec l'une des balises données. Mettez la cible avant `--tag`, `--allow-tools`, et `--json`. Les deux premiers prennent une liste et `--json` prend un chemin optionnel, donc chacun d'eux lit une cible qui suit comme sa propre valeur.

337 

338<h3 id="grant-tools">

339 Accorder les outils

340</h3>

341 

342Les exécutions ne s'arrêtent jamais pour demander la permission. Les outils intégrés qui ont besoin d'une concession que vous n'avez pas donnée, comme `Bash`, `Write`, `Edit`, `WebFetch`, et `WebSearch`, sont supprimés de la session, donc Claude ne peut pas les appeler du tout. La liste d'autorisation est les outils en lecture seule que le cas énumère dans `allowed_tools`, à partir de `Read`, `Glob`, `Grep`, `NotebookRead`, `Skill`, `Agent`, `TodoWrite`, et les outils de tâche `TaskCreate`, `TaskGet`, `TaskList`, `TaskUpdate`, `TaskStop`, et `TaskOutput`, plus tout ce que vous accordez avec `--allow-tools`, qui s'applique à chaque cas de l'exécution. Pour laisser les cas utiliser `Bash`, `Write`, `Edit`, `WebFetch`, ou `WebSearch`, accordez-les vous-même :

343 

344```bash theme={null}

345claude plugin eval . --allow-tools Write Edit "Bash(npm test *)"

346```

347 

348Lorsqu'un cas a demandé un outil que vous n'avez pas accordé, l'exécution le énumère sur stderr comme `not granted`. Les outils sur un serveur MCP [mocké](#mock-mcp-servers) n'ont besoin d'aucune concession. Les outils sur un vrai serveur MCP de plugin ont besoin à la fois du serveur démarré, avec `--allow-real-servers` ou `--mocks off`, et d'une concession par nom, comme `--allow-tools "mcp__plugin_my-plugin_github__*"` ; les outils MCP d'un plugin sont nommés `mcp__plugin_<plugin>_<server>__<tool>`.

349 

350Lorsque vous accordez `Bash` sous n'importe quelle forme, chaque commande s'exécute sous le [sandbox au niveau du système d'exploitation](/docs/fr/sandboxing) de Claude Code. Les écritures sont confinées à l'espace de travail de l'exécution, votre répertoire personnel et la configuration de Claude Code sont illisibles, et l'accès réseau est limité aux domaines que vous accordez avec `--allow-tools "WebFetch(domain:example.com)"`. Si vous accordez Bash ou PowerShell sur une machine sans backend de sandbox, Claude Code refuse chaque exécution plutôt que de l'exécuter sans confinement, et le cas affiche une erreur d'exécution et marque généralement 0. Windows natif n'a pas de backend, donc exécutez les suites accordant le shell sous WSL2 ; sur Linux, installez d'abord `bubblewrap` et `socat`. Voir les [prérequis du sandboxing](/docs/fr/sandboxing).

351 

352<h3 id="command-options">

353 Options de commande

354</h3>

355 

356Ce tableau couvre les options pour le nombre d'exécutions, les modèles, la notation, le coût, les concessions d'outils, les mocks et la sortie. Exécutez `claude plugin eval --help` pour la liste complète, qui inclut également `--case`, `--tag`, `--eval-dir`, `--no-scaffold`, `--report`, et `--verbose`.

357 

358| Option | Par défaut | Effet |

359| :------------------------- | :-------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

360| `--runs <n>` | `runs` de chaque cas, sinon 3 | Exécutions par cas par bras |

361| `-j`, `--concurrency <n>` | `1` | Exécutez jusqu'à ce nombre d'exécutions d'agent à la fois, de 1 à 8. Elles partagent la limite de débit de votre compte, donc cela raccourcit le temps mural plutôt que d'augmenter le débit au-delà de cette limite. Les résultats gardent l'ordre des cas |

362| `--model <model>` | `model` de chaque cas, sinon `ANTHROPIC_MODEL` s'il est défini, sinon la valeur par défaut de Claude Code | Modèle pour l'agent en test. Épinglez-le dans CI pour qu'un déploiement de modèle ne soit pas confondu avec une régression de plugin |

363| `--judge-model <model>` | Un petit modèle rapide | Modèle pour les évaluateurs `llm` et `baseline` |

364| `--ablation <mode>` | `with-without` lorsqu'un plugin se résout, sinon `none` | Qu'il faut aussi exécuter chaque cas sans le plugin pour mesurer ce qu'il ajoute. `none` exécute un bras ; `with-without` ajoute la base de référence sans plugin |

365| `--threshold <0..1>` | `1.0` | Un cas réussit lorsque son score du bras with est au moins cela. Tout cas en dessous le fait quitter la commande 1 |

366| `--max-cost-usd <usd>` | Pas de plafond | Un plafond sur l'estimation du coût du prix catalogue de l'exécution, pas sur l'utilisation du plan. Vérifié avant chaque exécution. Une fois dépensé, rien d'autre ne démarre ; les exécutions déjà en vol se terminent, donc la dépense peut dépasser le plafond par ces exécutions. Si une exécution est laissée non démarrée, la commande quitte 2 avec des résultats partiels |

367| `--allow-tools <tools...>` | Aucun | Accordez les outils au-delà de l'ensemble en lecture seule. Voir [Accorder les outils](#grant-tools) |

368| `--scaffold` | Désactivé | Exécutez le [`scaffold_script`](#add-setup-or-history-with-case-yaml) de chaque cas |

369| `--trust-plugin` | Désactivé | Ignorez l'invite de confiance à la première exécution pour un plugin dont vous exécuteriez le code et la suite vous-même. Passez-le dans CI pour que le travail ne soit jamais refusé par ou laissé en attente à l'invite. Voir [Ce qu'une exécution peut accéder](#security) |

370| `--mocks <mode>` | `record` | `record` répond aux appels d'outils MCP à partir de [mocks](#mock-mcp-servers), ne démarre pas les vrais serveurs du plugin, et enregistre les réponses des mocks d'agent pour la relecture. `off` ignore les mocks et démarre les vrais serveurs MCP du plugin |

371| `--allow-real-servers` | Désactivé | Avec `--mocks record`, démarrez aussi les vrais serveurs MCP du plugin pour les serveurs qui n'ont pas de mock |

372| `--json [path]` | Désactivé | Imprimez le [document de résultat](#json-result) sur stdout, ou écrivez-le dans un chemin se terminant par `.json`. L'exécution est silencieuse : pas de lignes de progression ou de tableau récapitulatif |

373| `--output-dir <dir>` | `<eval dir>/results/<timestamp>/` | Où vont `aggregate-result.json` et `report.html` |

374| `--no-publish` | | Gardez le rapport HTML local. Voir [Rapport HTML](#html-report) |

375| `--publish-report` | | Publiez le rapport même où il resterait local par défaut, comme une exécution qu'une session Claude Code a démarrée |

376| `--keep-temp` | Désactivé | Gardez le répertoire sandbox de chaque exécution et imprimez son chemin, pour déboguer ce que Claude a produit |

377 

378<h3 id="run-evals-in-ci">

379 Exécuter les evals dans CI

380</h3>

381 

382Dans votre travail CI, exécutez la suite avec `--json` pour écrire le résultat pour l'archivage, et échouez la construction sur le code de sortie. Passez `--trust-plugin` pour que le travail n'attende jamais à l'[invite de confiance à la première exécution](#security), épinglez les deux modèles pour que les scores soient comparables au fil du temps, gardez le rapport local, et définissez un plafond de coût comme limite supérieure :

383 

384```bash theme={null}

385claude plugin eval . \

386 --trust-plugin \

387 --json results.json \

388 --threshold 0.8 \

389 --model claude-sonnet-5 \

390 --judge-model claude-haiku-4-5 \

391 --no-publish \

392 --max-cost-usd 20

393```

394 

395Le code de sortie du travail vous dit ce qui s'est passé :

396 

397| Code de sortie | Signification |

398| :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

399| 0 | Chaque cas a marqué au ou au-dessus de `--threshold` et chaque fichier de cas a chargé |

400| 1 | Un cas a marqué en dessous du seuil, un fichier de cas n'a pas pu charger, aucun cas n'a été trouvé, une exécution n'a pas pu être démarrée, le répertoire du plugin n'est pas approuvé et `--trust-plugin` n'a pas été passé, ou une option était invalide |

401| 2 | Exécution partielle : le plafond `--max-cost-usd` a été atteint, ou votre identifiant a été rejeté avant ou à la première exécution. `results.json` est toujours écrit avec `partial: true` et la raison |

402| 130 | Interrompu. Les résultats partiels sont écrits |

403| 143 | Terminé, comme par un délai d'expiration CI |

404 

405Les problèmes d'écriture ou de publication du rapport HTML ne changent jamais le code de sortie. Pour voir pourquoi un cas a marqué bas, exécutez-le localement sans `--json` pour que les lignes de progression par exécution et d'évaluateur s'impriment.

406 

407Un exécuteur CI a besoin d'une installation Claude Code et de [identifiants dans l'environnement](/docs/fr/authentication) comme `ANTHROPIC_API_KEY`. Sans `--trust-plugin`, un travail dont le répertoire de checkout Claude Code ne fait pas déjà confiance est refusé avec la sortie 1 lorsqu'il n'a pas de terminal, ou attend à l'invite lorsque le coureur en alloue un. `claude plugin eval init` a besoin d'un terminal pour vous poser ses questions ; dans CI, exécutez `claude plugin eval init --bare <name>` pour obtenir le modèle vierge.

408 

409Pour garder les coûts prévisibles, donnez aux suites rapides à chaque changement seulement des évaluateurs qui n'appellent pas un juge, utilisez `--ablation none` où vous n'avez pas besoin de `Δ`, et laissez les documents `partial: true` et les exécutions avec `skippedPaidGraders` en dehors de toute tendance que vous tracez.

410 

411<h2 id="read-the-results">

412 Lire les résultats

413</h2>

414 

415Chaque exécution avec au moins un cas écrit un répertoire `results/<timestamp>/` à l'intérieur du répertoire d'eval, contenant `aggregate-result.json` et `report.html`. Pour une cible de chemin qui est sous le plugin ; pour un plugin que vous avez nommé, c'est sous votre répertoire courant, comme le [tableau cible](#choose-what-to-evaluate) le montre. Le tableau récapitulatif, le JSON, et le rapport rendent tous les mêmes données de résultat.

416 

417<h3 id="html-report">

418 Rapport HTML

419</h3>

420 

421`report.html` est un fichier unique autonome qui ne fait aucune demande externe, donc vous pouvez le joindre à un travail CI ou l'ouvrir à partir du disque. Cet exemple est le haut d'un rapport pour une exécution de suite à trois cas avec `--threshold 0.8` ; le coût affiché est une estimation au prix catalogue et varie selon le modèle et le nombre de cas :

422 

423<img src="https://mintcdn.com/claude-code/qq7LHDi_F0aeFHgk/images/plugin-eval-report.png?fit=max&auto=format&n=qq7LHDi_F0aeFHgk&q=85&s=106eb6e6a70a6565f891ea3a4564f87d" alt="Haut d'un rapport d'eval : une ligne de verdict lisant « Plugin effect: +33.3 pts vs baseline, improved 2, flat 1, regressed 0 of 3 cases », cinq tuiles récapitulatives pour le score de la suite, le delta d'ablation, le score de base, les cas passant le seuil, et les exécutions parfaites, puis le premier cas avec son delta, sa barre de score, et une exécution dont les deux évaluateurs affichent tous deux un passage" width="1360" height="1032" data-path="images/plugin-eval-report.png" />

424 

425Lisez-le de haut en bas :

426 

427* **La ligne de verdict et les tuiles** répondent à la question de savoir si le plugin a aidé sur l'ensemble de la suite. Le score de la suite est la moyenne des scores avec-plugin par cas, Ablation Δ est la distance à laquelle cela se situe au-dessus ou au-dessous du score de base, et Cases compte combien ont atteint le seuil. Perfect runs est la part des exécutions avec-plugin où chaque évaluateur a réussi.

428* **Chaque carte de cas** affiche le propre `Δ` du cas et le score avec-plugin, avec une coche sur la barre au seuil. Un cas dont le `Δ` est négatif obtient un bord gauche rouge, donc les régressions se démarquent lorsque vous faites défiler.

429* **À l'intérieur d'un cas**, les exécutions avec-plugin viennent en premier et les exécutions de base après. Chaque exécution énumère ses évaluateurs avec une puce de passage ou d'échec. Un évaluateur échoué est déjà développé avec son explication, et un évaluateur `llm` affiche également les votes du juge et la preuve qui lui a été montrée, ce qui est l'endroit où vous découvrez pourquoi une exécution a obtenu un score faible. Les évaluateurs qui ne comptent pas vers le score, comme `tool_used: Skill`, portent un badge `plugin-fired indicator`.

430* **Prompt et Graders**, sous les exécutions, affichent l'invite du cas et la rubrique ou le motif de chaque évaluateur, afin que quelqu'un lisant le rapport sans la suite puisse voir ce qui a été demandé et ce qui comptait comme bon.

431 

432Si vous êtes connecté avec un abonnement claude.ai et que les [artifacts](/docs/fr/artifacts) sont disponibles pour votre compte, Claude Code publie également le rapport en tant qu'artifact privé et imprime `Published: <url>`. Passez `--no-publish` pour le garder local. Si aucune ligne `Published:` n'apparaît, comme avec l'authentification par clé API, le fichier local est le rapport.

433 

434Une exécution qu'une session Claude Code a démarrée, comme lorsque vous demandez à Claude d'exécuter la suite pour vous, reste également locale, et sa ligne `Report:` dit `kept local`. Ajoutez `--publish-report` à cette commande pour la publier.

435 

436<h3 id="json-result">

437 Résultat JSON

438</h3>

439 

440`aggregate-result.json`, et la sortie `--json`, est un document versionné avec `schemaVersion: 1` pour que les scripts CI l'analysent. Les noms de champs sont camelCase et les nouveaux champs sont ajoutés sans renommer les existants, donc écrivez votre script pour ignorer les champs qu'il ne reconnaît pas.

441 

442Ce sont les champs qu'un script de gating lit généralement. Le document porte également la configuration de la suite, chaque définition d'évaluateur, et les résultats d'évaluateur par exécution avec explications et preuves :

443 

444| Champ | Signification |

445| :------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

446| `partial`, `partialReason` | `true` avec `cost_ceiling`, `interrupted`, ou `auth_failed` lorsque la suite n'a pas terminé. Laissez les résultats partiels en dehors des graphiques de tendance |

447| `aggregates.overallScore` | Score de cas moyen sur la suite |

448| `aggregates.casesPassed`, `aggregates.casesTotal` | Cas au ou au-dessus de `--threshold`, et le total |

449| `aggregates.meanDelta` | `Δ` moyen sur les cas, en mode à deux bras |

450| `cases[].name` | Nom du cas |

451| `cases[].aggregates.score` | Score d'exécution du bras with moyen pour le cas |

452| `cases[].aggregates.delta` | Score du bras with moins score du bras without. Omis lorsque les bras ne sont pas comparables |

453| `cases[].arms.with[].error` | `null`, ou pourquoi une exécution s'est terminée anormalement, comme `timed out after 300s`. Une exécution qui a démarré mais s'est terminée mal est toujours notée sur ce qu'elle a produit, donc une erreur non-null n'implique pas un score de 0 |

454| `cases[].arms.with[].aborted` | Présent lorsqu'un [mock](#mock-mcp-servers) `expect:` ou `abort_when` a arrêté l'exécution, avec `server`, `tool`, et `reason`. L'exécution marque 0 et `error` reste `null` |

455| `cases[].arms.with[].skippedPaidGraders` | `true` lorsque le plafond de coût a ignoré les évaluateurs de juge de cette exécution, donc son score n'est pas comparable |

456| `costUsd`, `durationSeconds`, `claudeVersion` | Coût estimé au prix catalogue incluant les appels de juge, secondes de temps mural, et la version de Claude Code qui a exécuté la suite |

457 

458<h2 id="security">

459 Ce qu'une exécution peut accéder

460</h2>

461 

462`claude plugin eval` charge les skills et hooks du plugin cible et exécute sa suite d'eval sur votre machine, en tant que vous. Le pointer vers un plugin est la même décision de confiance que `claude --plugin-dir`, donc n'évaluez que les plugins en lesquels vous avez confiance. L'isolation décrite dans cette section limite ce que l'agent en test peut atteindre ; ce n'est pas une limite contre le code du plugin lui-même, et une suite qui réussit ne dit rien sur la sécurité du plugin.

463 

464<h3 id="trust-the-plugin-directory">

465 Faire confiance au répertoire du plugin

466</h3>

467 

468La première fois que vous exécutez `claude plugin eval` contre un répertoire, Claude Code demande `Trust this plugin directory?` avant de charger quoi que ce soit à partir de celui-ci, à moins que vous ayez déjà accepté l'invite de confiance là dans une session `claude` interactive. À l'intérieur d'un référentiel git, répondre oui fait confiance au référentiel entier, pour les sessions interactives aussi. Lorsque stdin ou stdout n'est pas un terminal, ou sous `--json`, l'exécution ne peut pas demander et est refusée avec la sortie 1 ; passez `--trust-plugin` pour affirmer la confiance vous-même, seulement pour un plugin que vous exécuteriez sur votre propre machine. Une cible que vous nommez plutôt que de donner en tant que chemin, signifiant un plugin installé ou un plugin de répertoire de skills, ignore l'invite.

469 

470Certaines parties du plugin et de la suite s'exécutent seulement lorsque vous passez leur drapeau pour cette exécution : un [`scaffold_script`](#add-setup-or-history-with-case-yaml) de cas avec `--scaffold`, [outils au-delà de l'ensemble en lecture seule](#grant-tools) avec `--allow-tools`, et les [vrais serveurs MCP](#mock-mcp-servers) du plugin avec `--allow-real-servers` ou `--mocks off`. Un `allowed_tools` de cas et un frontmatter `allowed-tools` propre d'une skill ne peuvent pas élargir aucun d'eux. Lorsque le plugin expédie des hooks que vous n'avez pas écrits, ou que vous démarrez ses vrais serveurs MCP, traitez ses scores comme consultatifs à moins que vous ne l'ayez exécuté dans un environnement isolé comme un conteneur ou un coureur CI, puisque les hooks et les serveurs s'exécutent en dehors du sandbox de l'agent et pourraient toucher les fichiers que les évaluateurs lisent.

471 

472<h3 id="how-runs-are-isolated">

473 Comment les exécutions sont isolées

474</h3>

475 

476Chaque exécution obtient un répertoire personnel jetable, un répertoire de travail, et une configuration Claude Code, et l'agent en test s'exécute là en tant que processus enfant `claude -p` avec seulement votre plugin chargé. Gardez ces conséquences à l'esprit lorsque vous écrivez des cas :

477 

478* **Rien de personnel ou au niveau du projet ne charge.** Vos paramètres utilisateur, hooks, fichiers `CLAUDE.md`, serveurs MCP, autres plugins installés, mémoire, et skills sont absents, et aucun `.claude/` ou `.mcp.json` au niveau du projet au-dessus du sandbox n'est lu. La plupart de votre environnement shell est également retenu ; seulement une [liste d'autorisation](#prompt-md-fields) et les variables `EVAL_*` atteignent l'exécution. Si le plugin a besoin de configuration, livrez-la dans le plugin, créez-la dans un `scaffold_script`, ou passez les variables `EVAL_*`.

479* **La politique gérée peut toujours restreindre une exécution.** Les restrictions dans les [paramètres gérés](/docs/fr/managed-settings) qu'un administrateur a déployés sur la machine s'appliquent à l'intérieur d'une exécution, donc les résultats sur une machine gérée peuvent différer d'une machine non gérée par cette politique.

480* **L'outil Artifact est désactivé.** Une skill qui publie un [artifact](/docs/fr/artifacts) ne peut être notée que sur ce qu'elle produit avant cette étape.

481* **Les définitions de cas sont cachées à l'agent.** Une exécution ne peut pas lire le répertoire d'eval, donc Claude ne peut pas voir l'invite du cas, ses évaluateurs, ou les cas frères.

482* **Pas de sandbox réseau en dehors des commandes shell.** Les commandes shell que vous accordez s'exécutent sous les règles de sandbox du réseau. Une concession `WebFetch(domain:…)` atteint ce domaine directement, et les hooks propres du plugin et tous les vrais serveurs MCP que vous démarrez peuvent atteindre n'importe quel hôte.

483 

484<h2 id="eval-suite-reference">

485 Référence de la suite d'eval

486</h2>

487 

488Tout ce qu'une suite d'eval peut contenir vit sous le répertoire d'eval du plugin, `evals/` à moins que vous [ayez configuré un autre](#use-a-different-eval-directory). Cet arborescence montre chaque fichier que `claude plugin eval` lit ou écrit là ; seulement `prompt.md` ou `case.yaml` est requis pour qu'un cas existe :

489 

490```text theme={null}

491evals/

492├── <case>/ # one directory per case; nest under a non-case directory to group

493│ ├── prompt.md # frontmatter: case and run fields; body: the prompt

494│ ├── case.yaml # optional: context.* fields, or the whole case in one file

495│ ├── graders/

496│ │ └── <name>.md # one grader per file; frontmatter: type and options; body: rubric

497│ ├── mocks/ # optional: mocks for this case only, same layout as below

498│ └── <fixtures, scripts, transcripts referenced by case.yaml>

499├── mocks/ # optional: suite-wide MCP mocks

500│ ├── <server>/

501│ │ ├── <tool>.md # one mocked tool; body: the tool result

502│ │ ├── _server.md # optional: one agent that answers several tools

503│ │ ├── _tools.json # optional: saved tools/list response for real descriptions and schemas

504│ │ └── fixtures/ # files inserted with {{file:fixtures/...}}

505│ └── .replay/<server>/ # adopted agent-mock recordings, answered without a model call

506└── results/<timestamp>/ # written by each run; add results/ to .gitignore

507 ├── aggregate-result.json

508 ├── report.html

509 └── mock-recordings/ # agent-mock answers from clean runs, with ADOPT.txt

510```

511 

512<h3 id="prompt-md-fields">

513 Frontmatter de prompt.md

514</h3>

515 

516Le frontmatter de `prompt.md` accepte ces champs. Une clé inconnue est une erreur :

517 

518| Champ | Par défaut | Objectif |

519| :--------------------- | :---------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

520| `schema_version` | `"1.1"`, défini pour vous | Version du format de cas. Les cas écrits en tant que `prompt.md` l'obtiennent automatiquement, donc vous le définissez rarement |

521| `name` | Le nom du répertoire | Nom du cas. Les globs `--case` le correspondent et le rapport le clé |

522| `description` | | Pour les humains. Non utilisé au moment de l'exécution |

523| `tags` | `[]` | Étiquettes pour le filtrage `--tag`. Un cas s'exécute si l'une de ses balises correspond |

524| `plugins` | Le plugin englobant le plus proche | Répertoires de plugins en test, relatifs au répertoire de cas. Définissez `plugins: ["../.."]` lorsque la détection automatique ne trouve pas votre plugin ; voir [le plugin n'a pas chargé](#the-baseline-arm-shows-no-plugin-or-delta-is-zero) |

525| `runs` | `3` | Exécutions par bras, 1 à 50. `--runs` le remplace |

526| `expected_outcome` | | Pour les humains. Non utilisé au moment de l'exécution |

527| `model` | La valeur par défaut de la session enfant | Modèle pour l'agent en test. `--model` le remplace |

528| `max_turns` | `10` | Limite de tour, jusqu'à 200. L'atteindre est enregistré comme une erreur d'exécution et abaisse généralement le score, donc définissez-le généreusement |

529| `timeout_seconds` | `300` | Limite de temps mural par exécution, jusqu'à 3600 |

530| `allowed_tools` | `[]` | Outils que le cas veut, comme `[Read, Glob, Grep, Skill]`. Les outils en lecture seule sont accordés lorsqu'ils sont énumérés ici ; pour tout le reste, voir [Accorder les outils](#grant-tools) |

531| `append_system_prompt` | | Texte ajouté à l'invite système de la session enfant |

532| `env` | `{}` | Variables d'environnement supplémentaires pour la session enfant. Les clés doivent correspondre à `EVAL_[A-Z0-9_]*` ; toute autre clé échoue l'exécution. L'exécution hérite seulement d'une liste d'autorisation de votre shell : les bases comme `PATH` et les paramètres régionaux, les paramètres de proxy et de certificat, les variables qui sélectionnent et authentifient votre fournisseur de modèle, la plupart des configurations `ANTHROPIC_*` et `CLAUDE_CODE_*`, et `EVAL_*`. Pour donner au plugin autre chose, comme un paramètre de chaîne d'outils, exportez-le en tant que variable `EVAL_*` |

533 

534<h3 id="case-yaml-fields">

535 Champs case.yaml

536</h3>

537 

538`case.yaml` décrit le même cas en YAML et ajoute les champs qui pointent vers d'autres fichiers. Il nécessite `schema_version: "1.1"` et `name`. Les champs `prompt.md` `description`, `tags`, `plugins`, `runs`, et `expected_outcome` vont au niveau supérieur ; `model`, `max_turns`, `timeout_seconds`, `allowed_tools`, `append_system_prompt`, et `env` vont sous `execution:`. Lorsque les deux fichiers existent, le frontmatter de `prompt.md` remplace les champs `case.yaml` correspondants, le corps de `prompt.md` est l'invite, et `graders/*.md` sont ajoutés après tous les évaluateurs énumérés dans `case.yaml`.

539 

540Ces champs existent seulement dans `case.yaml` :

541 

542| Champ | Objectif |

543| :------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

544| `context.scaffold_script` | Un script Bash dans le répertoire de cas qui s'exécute dans l'espace de travail vide avant que Claude ne démarre, pour créer des fichiers de fixture ou un référentiel git. Il s'exécute seulement lorsque vous passez [`--scaffold`](#add-setup-or-history-with-case-yaml) |

545| `context.history_file` | Une transcription `.jsonl` dans le répertoire de cas à reprendre. L'invite du cas devient le prochain tour utilisateur |

546| `context.add_dirs` | Répertoires à l'intérieur du répertoire de cas que Claude peut lire pendant l'exécution, accordés en lecture seule |

547| `execution.prompt` | L'invite, lorsque vous gardez le cas entier dans `case.yaml` et omettez `prompt.md` |

548| `graders` | Une liste d'évaluateurs, chacun avec un `name` plus les mêmes clés qu'un fichier `graders/*.md` prend en frontmatter. Pour les évaluateurs `llm`, mettez la rubrique dans `criteria` |

549 

550<h3 id="grader-frontmatter">

551 Frontmatter d'évaluateur

552</h3>

553 

554Chaque fichier d'évaluateur sous `graders/` prend ces clés en frontmatter, plus les options pour son type. Le nom de l'évaluateur est le nom du fichier sans `.md` :

555 

556| Clé | Par défaut | Objectif |

557| :------- | :--------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

558| `type` | requis | L'un des [types d'évaluateurs](#grader-types) |

559| `weight` | `1` | Poids relatif dans le score de l'exécution. N'importe quel nombre positif |

560| `arm` | non défini | `with-only` exclut l'évaluateur de la notation dans une [exécution à deux bras](#compare-against-a-no-plugin-baseline) ; `both` force un évaluateur `tool_used: Skill` à être noté dans les deux bras |

561 

562<h4 id="what-a-grader-can-look-at">

563 Ce qu'un évaluateur peut regarder

564</h4>

565 

566Les évaluateurs `regex` prennent un `target` et les évaluateurs `llm` prennent un `focus`. Les deux acceptent les mêmes valeurs :

567 

568| Valeur | Ce que l'évaluateur voit |

569| :------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

570| `last_message` | Le texte de la réponse finale de Claude. C'est la valeur par défaut |

571| `trace` | La session entière en JSON, un message par ligne. Un évaluateur `regex` voit chaque message ; un juge `llm` voit les 12 premiers et les 12 derniers. Les guillemets et les sauts de ligne dedans sont échappés en JSON, donc une regex correspond à `\"` plutôt qu'à `"` |

572| `files` | La liste des chemins que Claude a créés pendant l'exécution, un par ligne. Pas leurs contenus, et pas les fichiers qu'un scaffold a créés ou que Claude a seulement modifiés |

573| `{ source: file, path: <path> }` | Le contenu d'un fichier dans l'espace de travail après l'exécution. Utilisez ceci pour noter ce que le plugin a produit. Un fichier PNG, JPEG, GIF, ou WebP est montré à un juge `llm` en tant qu'image. Un juge `llm` refuse les autres fichiers binaires comme `.pptx` ou PDF ; rendez-les en image ou écrivez-les en tant que texte et notez cela |

574| `mock_calls` | Chaque appel que Claude a fait à un [outil MCP mocké](#mock-mcp-servers), avec son entrée et la réponse du mock |

575 

576<h4 id="grader-types">

577 Types d'évaluateurs

578</h4>

579 

580Chaque type d'évaluateur ci-dessous énumère ses options et quand il réussit :

581 

582| Type | Options | Réussit quand |

583| :------------ | :------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

584| `regex` | `pattern`, `flags`, `match`, `target` | La regex JavaScript `pattern` est trouvée dans la cible. Définissez `match: not_contains` pour exiger l'absence ou `match: "count:N"` pour exiger exactement N correspondances. Mettez l'insensibilité à la casse dans `flags: i` ; l'inline `(?i)` n'est pas supporté |

585| `tool_used` | `tool`, `input_match`, `min`, `max` | Le nombre d'appels à `tool` dont l'entrée JSON-encodée correspond à la regex optionnelle `input_match` est entre `min`, par défaut 1, et `max`, par défaut illimité. Pour affirmer qu'un outil n'a jamais été appelé, définissez à la fois `min: 0` et `max: 0` |

586| `tool_order` | `before`, `after` | Les deux outils ont été appelés et le premier appel `before` correspondant précède le premier appel `after` correspondant. Chacun est un nom d'outil ou `{ tool, input_match }` |

587| `file_exists` | `path`, `exists` | Un fichier que Claude a créé correspond au glob `path`, ou aucun ne le fait avec `exists: false`. Seulement les fichiers créés pendant l'exécution comptent |

588| `llm` | `criteria`, `focus` | Un modèle juge vote PASS sur la rubrique dans au moins deux des trois votes. Dans la disposition `.md`, le corps du fichier est les critères |

589| `baseline` | `baseline_file`, `criteria` | Un juge trouve que l'exécution satisfait les critères au moins aussi bien que la transcription de référence à `baseline_file`, un `.jsonl` dans le répertoire de cas |

590 

591<h3 id="mock-files">

592 Fichiers mock

593</h3>

594 

595Un fichier `<tool>.md` sous `mocks/<server>/` répond à un outil. Son corps est le résultat de l'outil, avec les substitutions `{{input.<field>}}` et `{{file:fixtures/<name>}}`. Son frontmatter accepte ces clés :

596 

597| Clé | Par défaut | Objectif |

598| :----------- | :--------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

599| `type` | `fixed` | `fixed` retourne le corps tel qu'écrit. `agent` traite le corps comme des instructions pour un petit modèle qui joue le serveur pour l'exécution et voit les appels antérieurs comme l'historique |

600| `expect` | non défini | Une carte des chemins d'entrée pointillés vers un nom de type comme `string`, `number`, `boolean`, `array`, ou `object`, une `/regex/`, un littéral, ou une liste de littéraux autorisés. Un appel qui le viole arrête l'exécution avec un score de 0 et est rapporté comme `aborted` avec le serveur, l'outil, et la raison |

601| `error` | `false` | `fixed` seulement. Retournez le corps comme une erreur d'outil |

602| `abort_when` | non défini | `agent` seulement. Prose énumérant les seules conditions sous lesquelles l'agent peut arrêter l'exécution |

603 

604Deux fichiers optionnels se trouvent à côté des fichiers d'outil dans le répertoire d'un serveur :

605 

606* **`_server.md`** : un seul mock `type: agent` qui répond à plusieurs outils, énumérés dans sa clé frontmatter `tools:`. Un `<tool>.md` pour le même outil a la priorité. Mettez une garde `expect:` sur le `<tool>.md` individuel, pas ici

607* **`_tools.json`** : une réponse `tools/list` enregistrée du vrai serveur, pour que les outils mockés portent leurs vraies descriptions et schémas d'entrée au lieu d'un espace réservé permissif

608 

609Le répertoire `mocks/` propre d'un cas utilise la même disposition et remplace les fichiers mocks de la suite fichier par fichier.

610 

611<h2 id="troubleshooting">

612 Dépannage

613</h2>

614 

615Ce sont les problèmes que les auteurs rencontrent le plus souvent, indexés sur ce que vous voyez.

616 

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

618 « plugin eval is currently in early access »

619</h3>

620 

621Votre construction précède la disponibilité générale de la commande. Exécutez `claude update`, puis exécutez la commande à nouveau dans une session fraîche.

622 

623<h3 id="plugin-eval-is-currently-unavailable">

624 « plugin eval is currently unavailable »

625</h3>

626 

627Anthropic a désactivé la commande côté serveur. Rien sur votre machine ne la réactive ; exécutez `claude update` et réessayez dans une session fraîche plus tard.

628 

629<h3 id="is-not-a-trusted-plugin-directory-and-this-run-cannot-stop-to-ask-you-about-it">

630 « is not a trusted plugin directory, and this run cannot stop to ask you about it »

631</h3>

632 

633C'est la première exécution contre un répertoire que Claude Code ne fait pas confiance encore, et il ne peut pas demander parce que stdin ou stdout n'est pas un terminal ou vous avez passé `--json`. Exécutez `claude plugin eval <dir>` une fois dans un terminal et répondez à l'invite, ou passez `--trust-plugin` si vous faites confiance au code et à la suite du plugin. Voir [Ce qu'une exécution peut accéder](#security).

634 

635<h3 id="no-eval-cases-found">

636 « No eval cases found »

637</h3>

638 

639Aucun `<case>/prompt.md` ou `<case>/case.yaml` n'existe sous le répertoire d'eval en vigueur, ou vos filtres `--case` et `--tag` n'ont pas correspondu à aucun cas. Exécutez à partir de la racine du plugin, ou exécutez `claude plugin eval init` pour créer une suite.

640 

641<h3 id="the-baseline-arm-shows-no-plugin-or-delta-is-zero">

642 Le bras de base de référence n'affiche aucun plugin, ou delta est zéro

643</h3>

644 

645Si le résumé n'a pas de colonne `W/OUT`, ou le cas échoue avec « ablation requested but no plugin resolved », aucun plugin n'a été trouvé pour le cas. Ajoutez `plugins: ["../.."]` au cas, donnant le chemin du répertoire de cas au répertoire du plugin.

646 

647Si le plugin a chargé et `Δ` est toujours proche de zéro avec votre évaluateur `tool_used: Skill` échouant, c'est généralement une vraie découverte, signifiant que la `description` de la skill ne déclenche pas sur la formulation de l'invite. Ajustez la description et réexécutez la même suite.

648 

649<h3 id="everything-scores-zero-although-the-right-files-were-produced">

650 Tout marque zéro bien que les bons fichiers aient été produits

651</h3>

652 

653Vos évaluateurs ciblent `files`, la liste des chemins créés, lorsque vous aviez l'intention du contenu du fichier. Utilisez `{ source: file, path: <path> }` comme `target` ou `focus`. Séparément, `file_exists` compte seulement les fichiers créés pendant l'exécution, donc un fichier que le scaffold a créé ou que Claude a seulement modifié est invisible pour lui ; notez son contenu, ou utilisez `tool_used` sur `Edit`.

654 

655<h3 id="a-regex-over-the-trace-doesn’t-match-text-i-can-see">

656 Une regex sur la trace ne correspond pas au texte que je peux voir

657</h3>

658 

659La `target` par défaut est `last_message`, pas la trace. Lorsque vous ciblez `trace`, c'est du JSON par ligne, donc les guillemets apparaissent comme `\"`. Les regexes utilisent la syntaxe JavaScript, donc mettez `i` dans `flags` plutôt que d'écrire `(?i)`.

660 

661<h3 id="tools-are-denied-mcp-tools-are-missing-or-bash-won’t-run">

662 Les outils sont refusés, les outils MCP manquent, ou Bash ne s'exécutera pas

663</h3>

664 

665Tout au-delà de l'ensemble en lecture seule a besoin de votre concession, comme `--allow-tools Bash Write`. Vos serveurs MCP personnels ne chargent jamais dans une exécution. Les serveurs propres du plugin ne démarrent pas à moins que vous [optiez pour](#mock-mcp-servers), et leurs outils ont alors aussi besoin d'une concession `--allow-tools "mcp__plugin_<plugin>_<server>__*"` ; un outil mocké n'en a besoin d'aucune.

666 

667<h3 id="the-run-exits-1-but-the-results-look-fine">

668 L'exécution quitte 1 mais les résultats semblent bien

669</h3>

670 

671La `--threshold` par défaut est 1.0, donc la commande quitte 1 lorsqu'un cas marque en dessous de parfait. Définissez un seuil qui correspond à votre barre. La sortie 1 couvre également un fichier de cas qui n'a pas pu charger, qui est rapporté sur stderr au-dessus du tableau.

672 

673<h3 id="json-output-path-must-end-in-json">

674 « --json output path must end in .json »

675</h3>

676 

677Vous avez mis la cible après `--json`, donc elle a été lue comme le chemin de sortie. Mettez la cible en premier, comme dans `claude plugin eval . --json`, ou donnez à `--json` un chemin `.json` explicite.

678 

679<h3 id="a-grader-shows-passed-false-under-a-run-that-scored-1-0">

680 Un évaluateur affiche passed: false sous une exécution qui a marqué 1.0

681</h3>

682 

683Cet évaluateur est exclu du score par conception dans une exécution à deux bras, et son champ `scored` est `false`. Voir [Comparer avec une base de référence sans plugin](#compare-against-a-no-plugin-baseline).

684 

685<h3 id="runs-fail-with-a-usage-limit-or-rate-limit-error-partway-through">

686 Les exécutions échouent avec une erreur de limite d'utilisation ou de limite de débit à mi-chemin

687</h3>

688 

689Si votre compte atteint la limite d'utilisation de son plan ou une limite de débit API pendant qu'une suite s'exécute, chaque exécution ultérieure se termine avec cette erreur, est notée sur ce qu'elle a produit, et marque généralement 0. La suite se termine toujours et n'est pas marquée `partial`, donc le résultat peut ressembler à une régression. Vérifiez la colonne `NOTES` ou `cases[].arms.with[].error` dans le JSON pour le message de limite avant de faire confiance aux scores, puis réexécutez après que la limite se réinitialise, avec `--runs 1` ou un filtre `--case` si vous avez besoin de rester en dessous.

690 

691<h3 id="runs-time-out-or-hit-the-turn-cap">

692 Les exécutions expirent ou atteignent la limite de tour

693</h3>

694 

695Les valeurs par défaut sont 10 tours et 300 secondes. Augmentez `max_turns` et `timeout_seconds` dans le cas pour les tâches qui en ont besoin, et utilisez `--max-cost-usd` comme plafond de coût plutôt que des limites serrées par exécution.

696 

697<h2 id="see-also">

698 Voir aussi

699</h2>

700 

701* [Créer des plugins](/docs/fr/plugins) : construisez le plugin que vous testez, et chargez-le avec `--plugin-dir` pendant le développement

702* [Référence des plugins](/docs/fr/plugins-reference#plugin-eval) : les entrées de commande `plugin eval` et `plugin eval init` et la clé `experimental.evals` du manifeste

703* [Skills](/docs/fr/skills) : comment la description d'une skill décide quand Claude l'invoque, ce qu'un cas qui vérifie si la skill se déclenche mesure

704* [Sandboxing](/docs/fr/sandboxing) : le sandbox au niveau du système d'exploitation qui s'applique lorsque vous accordez Bash à une exécution

705* [Créer et distribuer un marché de plugins](/docs/fr/plugin-marketplaces) : publiez le plugin une fois que sa suite réussit

plugin-hints.md +4 −4

Details

31 Émettre l'indice31 Émettre l'indice

32</h2>32</h2>

33 33 

34Les invites d'indice ne s'activent que pour les plugins listés dans la marketplace officielle d'Anthropic. Consultez [Faire entrer votre plugin dans la marketplace officielle](#get-your-plugin-into-the-official-marketplace) avant de déployer l'intégration.34Les invites d'indice ne s'activent que pour les plugins listés sur la marketplace officielle d'Anthropic. Consultez [Faire entrer votre plugin dans la marketplace officielle](#get-your-plugin-into-the-official-marketplace) avant de déployer l'intégration.

35 35 

36Conditionnez l'émission sur une variable d'environnement afin que le marqueur n'apparaisse pas lorsqu'un utilisateur humain exécute directement votre CLI, puis écrivez la balise sur stderr sur sa propre ligne. Choisissez la variable à vérifier :36Conditionnez l'émission sur une variable d'environnement afin que le marqueur soit peu probable d'apparaître lorsqu'un humain exécute votre CLI directement, puis écrivez la balise sur stderr sur sa propre ligne. Choisissez quelle variable vérifier :

37 37 

38* `CLAUDECODE` : définie sur chaque version de Claude Code, elle atteint donc le plus de sessions. Elle est également définie dans les sessions tmux et les sous-processus du serveur MCP stdio que Claude Code démarre. Les extensions IDE la définissent également dans leurs terminaux intégrés, où un utilisateur humain peut exécuter directement votre CLI.38* `CLAUDECODE` : défini sur chaque version de Claude Code, il atteint donc le plus de sessions. Il est également défini dans les sessions tmux et les sous-processus du serveur MCP stdio que Claude Code démarre. Les extensions IDE le définissent également dans leurs terminaux intégrés, où un humain peut exécuter votre CLI directement.

39* `CLAUDE_CODE_CHILD_SESSION` : définie uniquement dans les sous-processus que Claude Code lui-même génère, tels que les appels d'outils, les commandes hook et les commandes de [ligne d'état](/docs/fr/statusline), de sorte que la balise n'atteint normalement pas un terminal humain. Un processus de longue durée qui a été démarré à l'intérieur d'une session, tel qu'un serveur tmux, capture la variable, de sorte que les shells lancés ultérieurement à partir de ce processus affichent toujours la balise brute. Nécessite Claude Code v2.1.172 ou version ultérieure, de sorte que les sessions sur les versions antérieures manquent l'indice.39* `CLAUDE_CODE_CHILD_SESSION` : défini uniquement dans les sous-processus que Claude Code lui-même génère, tels que les appels d'outils, les commandes hook et les commandes de [ligne d'état](/docs/fr/statusline), afin que la balise n'atteigne normalement pas un terminal humain. Un processus de longue durée qui a été démarré à l'intérieur d'une session, comme un serveur tmux, capture la variable, de sorte que les shells lancés ultérieurement à partir de ce processus affichent toujours la balise brute.

40 40 

41Les exemples suivants conditionnent sur `CLAUDECODE` pour une portée maximale et émettent un indice pour un plugin nommé `example-cli` dans la marketplace officielle :41Les exemples suivants conditionnent sur `CLAUDECODE` pour une portée maximale et émettent un indice pour un plugin nommé `example-cli` dans la marketplace officielle :

42 42 

Details

96 </Step>96 </Step>

97 97 

98 <Step title="Ajouter et installer">98 <Step title="Ajouter et installer">

99 À partir du répertoire qui contient `my-marketplace`, démarrez Claude Code et exécutez les commandes suivantes. La commande d'installation ouvre une vue de détails du plugin où vous sélectionnez une portée d'installation pour confirmer l'installation. Vérifiez le résumé d'installation : s'il signale `Run /reload-plugins to activate.`, exécutez cette commande.99 À partir du répertoire qui contient `my-marketplace`, démarrez Claude Code et exécutez les commandes suivantes. La commande d'installation ouvre une vue de détails du plugin où vous sélectionnez une portée d'installation pour confirmer l'installation. Vérifiez le résumé d'installation : s'il signale `Run /reload-plugins to activate.`, consultez [Appliquer les modifications du plugin sans redémarrer](/docs/fr/discover-plugins#apply-plugin-changes-without-restarting).

100 100 

101 ```shell theme={null}101 ```shell theme={null}

102 /plugin marketplace add ./my-marketplace102 /plugin marketplace add ./my-marketplace


173| `plugins` | array | Liste des plugins disponibles | Voir ci-dessous |173| `plugins` | array | Liste des plugins disponibles | Voir ci-dessous |

174 174 

175<Note>175<Note>

176 **Noms réservés** : les noms de place de marché suivants sont réservés à l'usage officiel d'Anthropic et ne peuvent pas être utilisés par les places de marché tierces : `claude-code-marketplace`, `claude-code-plugins`, `claude-plugins-official`, `claude-plugins-community`, `claude-community`, `anthropic-marketplace`, `anthropic-plugins`, `agent-skills`, `anthropic-agent-skills`, `knowledge-work-plugins`, `life-sciences`, `claude-for-legal`, `claude-for-financial-services`, `financial-services-plugins`, `first-party-plugins`, `healthcare`. Les noms qui usurpent l'identité de places de marché officielles, comme `official-claude-plugins` ou `anthropic-plugins-v2`, sont également bloqués. La réservation de ces noms empêche une place de marché tierce de se présenter comme une source publiée par Anthropic.176 **Noms réservés** : les noms de place de marché suivants sont réservés à l'usage officiel d'Anthropic et ne peuvent pas être utilisés par les places de marché tierces : `claude-code-marketplace`, `claude-code-plugins`, `claude-plugins-official`, `claude-plugins-community`, `claude-community`, `anthropic-marketplace`, `anthropic-plugins`, `agent-skills`, `anthropic-agent-skills`, `knowledge-work-plugins`, `life-sciences`, `claude-for-legal`, `claude-for-financial-services`, `financial-services-plugins`, `first-party-plugins`, `claude-tag-plugins`, `healthcare`. Les noms qui usurpent l'identité de places de marché officielles, comme `official-claude-plugins` ou `anthropic-plugins-v2`, sont également bloqués. La réservation de ces noms empêche une place de marché tierce de se présenter comme une source publiée par Anthropic.

177 177 

178 Claude Code revérifie les noms réservés chaque fois qu'il charge une place de marché, pas seulement lorsque vous en ajoutez une. Une place de marché qui a été enregistrée sous l'un de ces noms avant que le nom ne soit réservé cesse de se charger et signale qu'elle est [enregistrée à partir d'une source non fiable](/docs/fr/errors#marketplace-is-registered-from-an-untrusted-source). Supprimez cette place de marché et rajoutez-la à partir de la source officielle d'Anthropic. Une place de marché tierce affectée par un nom nouvellement réservé se charge à nouveau dès que vous la rajoutez sous un nom différent. Avant la v2.1.205, `first-party-plugins` et `healthcare` n'étaient pas réservés, et une place de marché déjà enregistrée sous un nom réservé continuait à se charger.178 Claude Code revérifie les noms réservés chaque fois qu'il charge une place de marché, pas seulement lorsque vous en ajoutez une. Une place de marché qui a été enregistrée sous l'un de ces noms avant que le nom ne soit réservé cesse de se charger et signale qu'elle est [enregistrée à partir d'une source non fiable](/docs/fr/errors#marketplace-is-registered-from-an-untrusted-source). Supprimez cette place de marché et rajoutez-la à partir de la source officielle d'Anthropic. Une place de marché tierce affectée par un nom nouvellement réservé se charge à nouveau dès que vous la rajoutez sous un nom différent. Avant la v2.1.205, `first-party-plugins` et `healthcare` n'étaient pas réservés, et une place de marché déjà enregistrée sous un nom réservé continuait à se charger. Avant la v2.1.265, `claude-tag-plugins` n'était pas réservé.

179</Note>179</Note>

180 180 

181<h3 id="owner-fields">181<h3 id="owner-fields">


226 226 

227| Champ | Type | Description |227| Champ | Type | Description |

228| :--------------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |228| :--------------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

229| `displayName` | string | Nom lisible affiché dans les surfaces de l'interface utilisateur. Revient à `name` lorsqu'il est omis. Peut contenir des espaces et n'importe quelle casse. Non utilisé pour l'espace de noms ou la recherche. |229| `displayName` | string | Nom lisible affiché dans les surfaces de l'interface utilisateur. Lorsque ni l'entrée ni le `plugin.json` du plugin n'en définissent un, les utilisateurs voient le `name` du plugin. Peut contenir des espaces et n'importe quelle casse. Non utilisé pour l'espace de noms ou la recherche. |

230| `description` | string | Brève description du plugin |230| `description` | string | Brève description du plugin |

231| `version` | string | Version du plugin. Si défini (ici ou dans `plugin.json`), le plugin est épinglé à cette chaîne et les utilisateurs ne reçoivent des mises à jour que lorsqu'elle change. Un plugin avec une [source `command`](#command-sources) n'est pas épinglé par l'un ou l'autre champ. Si défini dans aucun des deux endroits, la version provient de la source suivante dans [gestion des versions](/docs/fr/plugins-reference#version-management). |231| `version` | string | Version du plugin. Si défini (ici ou dans `plugin.json`), le plugin est épinglé à cette chaîne et les utilisateurs ne reçoivent des mises à jour que lorsqu'elle change. Un plugin avec une [source `command`](#command-sources) n'est pas épinglé par l'un ou l'autre champ. Si défini dans aucun des deux endroits, la version provient de la source suivante dans [gestion des versions](/docs/fr/plugins-reference#version-management). |

232| `author` | object | Informations sur l'auteur du plugin (`name` obligatoire ; `email` et `url` optionnels) |232| `author` | object | Informations sur l'auteur du plugin (`name` obligatoire ; `email` et `url` optionnels) |


241| `relevance` | object | Signaux qui indiquent à Claude Code quand suggérer ce plugin aux utilisateurs. Prend effet uniquement pour les places de marché qu'un administrateur autorise dans les paramètres gérés. Voir [Recommander des plugins pour votre organisation](/docs/fr/plugin-relevance). |241| `relevance` | object | Signaux qui indiquent à Claude Code quand suggérer ce plugin aux utilisateurs. Prend effet uniquement pour les places de marché qu'un administrateur autorise dans les paramètres gérés. Voir [Recommander des plugins pour votre organisation](/docs/fr/plugin-relevance). |

242| `defaultEnabled` | boolean | Si le plugin est activé après l'installation (par défaut : true). Définissez sur `false` pour installer le plugin désactivé jusqu'à ce que l'utilisateur l'active. Prend la priorité sur le même champ dans le `plugin.json` du plugin. Voir [Activation par défaut](/docs/fr/plugins-reference#default-enablement). |242| `defaultEnabled` | boolean | Si le plugin est activé après l'installation (par défaut : true). Définissez sur `false` pour installer le plugin désactivé jusqu'à ce que l'utilisateur l'active. Prend la priorité sur le même champ dans le `plugin.json` du plugin. Voir [Activation par défaut](/docs/fr/plugins-reference#default-enablement). |

243 243 

244Les deux l'entrée et le `plugin.json` du plugin peuvent définir les champs d'affichage `displayName`, `description`, `author`, `homepage`, `repository`, `license` et `keywords`. Dans les listes de plugins et les détails, avant et après l'installation :

245 

246* Pour un champ que vous définissez sur l'entrée, les utilisateurs voient la valeur de l'entrée, même lorsque `plugin.json` en définit une différente.

247* Pour un champ que l'entrée laisse non défini, les utilisateurs voient la valeur de `plugin.json`.

248 

249Avant l'installation, Claude Code ne peut lire `plugin.json` que pour les entrées avec une [source de chemin relatif](#relative-paths), dont les fichiers de plugin se trouvent à l'intérieur de la place de marché elle-même. Pour une entrée avec tout autre type de source, les utilisateurs ne voient que les champs de l'entrée elle-même jusqu'à ce qu'ils installent le plugin.

250 

244**Champs de configuration des composants :**251**Champs de configuration des composants :**

245 252 

246| Champ | Type | Description |253| Champ | Type | Description |


307}314}

308```315```

309 316 

310Les 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é.317Les 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é. Sur macOS et Linux, Claude Code refuse une entrée de chemin avec une barre oblique inverse n'importe où après le `./` initial, donc écrivez les séparateurs comme `/` sur chaque plateforme.

311 318 

312Un nom nu est un seul nom de répertoire sans `/`, tel que `"formatter"`. Pour écrire des noms nus au lieu de chemins `./`, définissez [`metadata.pluginRoot`](#optional-fields) sur le répertoire sous lequel ils se résolvent. Avec `"pluginRoot": "./plugins"`, Claude Code résout `"source": "formatter"` en `./plugins/formatter`. Nécessite Claude Code v2.1.239 ou ultérieur.319Un nom nu est un seul nom de répertoire sans `/`, tel que `"formatter"`. Pour écrire des noms nus au lieu de chemins `./`, définissez [`metadata.pluginRoot`](#optional-fields) sur le répertoire sous lequel ils se résolvent. Avec `"pluginRoot": "./plugins"`, Claude Code résout `"source": "formatter"` en `./plugins/formatter`. Nécessite Claude Code v2.1.239 ou ultérieur.

313 320 


1270 Validation et test1277 Validation et test

1271</h2>1278</h2>

1272 1279 

1273Testez votre place de marché avant de la partager.1280Testez votre place de marché avant de la partager. La validation vérifie la structure des fichiers ; pour tester si un plugin modifie le comportement de Claude sur des invites réalistes, exécutez sa suite d'évaluation avec [`claude plugin eval`](/docs/fr/plugin-evals) avant de publier une nouvelle version.

1274 1281 

1275Validez la syntaxe JSON de votre répertoire de place de marché :1282Depuis votre répertoire de place de marché, validez la syntaxe JSON :

1276 1283 

1277```bash theme={null}1284```bash theme={null}

1278claude plugin validate .1285claude plugin validate .


1609 Les plugins avec chemins relatifs échouent dans les places de marché basées sur les URL1616 Les plugins avec chemins relatifs échouent dans les places de marché basées sur les URL

1610</h3>1617</h3>

1611 1618 

1612**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 ».1619**Symptômes** : Vous avez ajouté une place de marché via une URL comme `https://example.com/marketplace.json`, mais les plugins avec des sources de chemin relatif comme `"./plugins/my-plugin"` échouent à installer avec `its marketplace entry path does not stay inside the marketplace directory`. Les plugins déjà installés échouent à charger avec `Plugin source path refused`. Les deux messages ont une [entrée de référence d'erreur](/docs/fr/errors#marketplace-entry-path-does-not-stay-inside-the-marketplace-directory).

1613 1620 

1614**Cause** : L'ajout d'une place de marché basée sur les URL télécharge uniquement le fichier `marketplace.json` lui-même, et Claude Code ne récupère pas les fichiers de plugins par chemin relatif à partir de ce serveur. Les chemins relatifs dans l'entrée de la place de marché référencent des fichiers sur le serveur distant qui n'ont pas été téléchargés.1621**Cause** : L'ajout d'une place de marché basée sur les URL télécharge uniquement le fichier `marketplace.json` lui-même, et Claude Code ne récupère pas les fichiers de plugins par chemin relatif à partir de ce serveur. Les chemins relatifs dans l'entrée de la place de marché référencent des fichiers sur le serveur distant qui n'ont pas été téléchargés.

1615 1622 

plugins.md +11 −3

Details

179<Warning>179<Warning>

180 **Erreur courante** : Ne mettez pas `commands/`, `agents/`, `skills/` ou `hooks/` à l'intérieur du répertoire `.claude-plugin/`. Seul `plugin.json` va à l'intérieur de `.claude-plugin/`. Tous les autres répertoires doivent être au niveau racine du plugin.180 **Erreur courante** : Ne mettez pas `commands/`, `agents/`, `skills/` ou `hooks/` à l'intérieur du répertoire `.claude-plugin/`. Seul `plugin.json` va à l'intérieur de `.claude-plugin/`. Tous les autres répertoires doivent être au niveau racine du plugin.

181 181 

182 La racine du plugin est le répertoire propre du plugin individuel : celui que vous transmettez à `--plugin-dir` ou celui qui contient `.claude-plugin/plugin.json`. Ce n'est jamais `~/.claude/`. Par exemple, Claude Code ne lit pas un `.mcp.json` placé à `~/.claude/.mcp.json`.182 La racine du plugin est le répertoire propre du plugin individuel, tel que `my-first-plugin/` du [démarrage rapide](#quickstart). Ce n'est jamais `~/.claude/`. Par exemple, Claude Code ne lit pas un `.mcp.json` placé à `~/.claude/.mcp.json`.

183</Warning>183</Warning>

184 184 

185| Répertoire | Emplacement | Objectif |185| Répertoire | Emplacement | Objectif |


2344. Test coverage2344. Test coverage

235```235```

236 236 

237Après l'installation du plugin, vérifiez le résumé d'installation : s'il signale `Run /reload-plugins to activate.`, exécutez cette commande 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](/docs/fr/skills).237Après l'installation du plugin, vérifiez le résumé d'installation : s'il signale `Run /reload-plugins to activate.`, consultez [Appliquer les modifications du plugin sans redémarrer](/docs/fr/discover-plugins#apply-plugin-changes-without-restarting) pour charger les Skills dans votre session actuelle. Pour des conseils complets sur la création de Skills incluant la divulgation progressive et les restrictions d'outils, consultez [Agent Skills](/docs/fr/skills).

238 238 

239<h3 id="add-lsp-servers-to-your-plugin">239<h3 id="add-lsp-servers-to-your-plugin">

240 Ajoutez des serveurs LSP à votre plugin240 Ajoutez des serveurs LSP à votre plugin


324 324 

325Quand un plugin `--plugin-dir` a le même nom qu'un plugin marketplace installé, la copie locale prend la priorité pour cette session. Cela vous permet de tester les modifications d'un plugin que vous avez déjà installé sans le désinstaller d'abord. L'exception concerne les plugins dont les paramètres gérés forcent l'activation ou la désactivation : `--plugin-dir` ne peut pas les remplacer.325Quand un plugin `--plugin-dir` a le même nom qu'un plugin marketplace installé, la copie locale prend la priorité pour cette session. Cela vous permet de tester les modifications d'un plugin que vous avez déjà installé sans le désinstaller d'abord. L'exception concerne les plugins dont les paramètres gérés forcent l'activation ou la désactivation : `--plugin-dir` ne peut pas les remplacer.

326 326 

327À 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 :327À mesure que vous apportez des modifications à votre plugin, exécutez `/reload-plugins` pour récupérer les mises à jour sans redémarrer. Cela recharge les plugins, les skills, les agents, les hooks, les serveurs MCP du plugin et les serveurs LSP du plugin ; dans une session sans terminal interactif, les modifications du serveur MCP du plugin [attendent votre prochaine session](/docs/fr/discover-plugins#apply-plugin-changes-without-restarting). Testez vos composants de plugin :

328 328 

329* Essayez vos skills avec `/plugin-name:skill-name`329* Essayez vos skills avec `/plugin-name:skill-name`

330* Vérifiez que les agents apparaissent dans `/context` sous Agents personnalisés, ou mentionnez-en un avec le symbole @ par son nom délimité330* Vérifiez que les agents apparaissent dans `/context` sous Agents personnalisés, ou mentionnez-en un avec le symbole @ par son nom délimité


340 Pour tester un plugin avec un plugin dont il dépend, consultez [Testez un plugin et sa dépendance localement](/docs/fr/plugin-dependencies#test-a-plugin-and-its-dependency-locally).340 Pour tester un plugin avec un plugin dont il dépend, consultez [Testez un plugin et sa dépendance localement](/docs/fr/plugin-dependencies#test-a-plugin-and-its-dependency-locally).

341</Tip>341</Tip>

342 342 

343Essayer le plugin avec `--plugin-dir` vous indique qu'il peut fonctionner. Pour savoir à quelle fréquence Claude y recourt réellement et obtient le bon résultat, exécutez-le sur un ensemble de prompts de test avec [`claude plugin eval`](/docs/fr/plugin-evals). Chaque prompt s'exécute plusieurs fois avec et sans le plugin chargé, afin que vous puissiez voir ce que le plugin contribue et détecter les régressions quand vous le modifiez ou qu'un nouveau modèle est lancé.

344 

345Pour charger plusieurs plugins à partir d'un seul endroit, passez un dossier qui les contient, comme `--plugin-dir ./plugins`. Le chargement d'un dossier de plugins nécessite Claude Code v2.1.265 ou ultérieur. Claude Code lit le niveau supérieur du dossier pour décider quels plugins charger, et dans une session interactive, il surveille également le dossier pour les modifications ultérieures :

346 

347* **Ce qui se charge** : si le dossier n'a pas de manifeste ou de composants de plugin à son niveau supérieur, Claude Code le traite comme un dossier de plugins. Chaque sous-dossier immédiat qui a un manifeste `.claude-plugin/plugin.json` se charge en tant que plugin séparé. Claude Code ignore tout le reste dans le dossier sans signaler d'erreur, y compris les plugins qui n'ont pas de manifeste.

348* **Modifications pendant une session interactive** : un sous-dossier que vous ajoutez se charge en tant que nouveau plugin une fois que son manifeste est en place, et quand vous supprimez un sous-dossier, son plugin se décharge. Claude Code affiche une ligne dans la session pour chaque modification. Si l'application d'une modification en milieu de conversation [invaliderait le cache d'invite](/docs/fr/prompt-caching#enabling-or-disabling-a-plugin), Claude Code la retient, et la ligne dit d'exécuter `/reload-plugins` pour l'appliquer.

349 

343Pour tester un plugin qui est déjà empaqueté en tant qu'archive `.zip` et hébergé à une URL, comme un artefact de build CI, utilisez `--plugin-url` à la place. Claude Code récupère l'archive au démarrage et la charge pour cette session uniquement. Si Claude Code ne peut pas récupérer l'archive, ou que l'archive est invalide, il démarre sans le plugin et enregistre une erreur de chargement de plugin que vous pouvez examiner dans l'onglet **Erreurs** du gestionnaire `/plugin`. Les mêmes [considérations de confiance](/docs/fr/discover-plugins#security) s'appliquent que pour toute source de plugin : pointez uniquement ce drapeau vers des archives que vous contrôlez ou en lesquelles vous avez confiance.350Pour tester un plugin qui est déjà empaqueté en tant qu'archive `.zip` et hébergé à une URL, comme un artefact de build CI, utilisez `--plugin-url` à la place. Claude Code récupère l'archive au démarrage et la charge pour cette session uniquement. Si Claude Code ne peut pas récupérer l'archive, ou que l'archive est invalide, il démarre sans le plugin et enregistre une erreur de chargement de plugin que vous pouvez examiner dans l'onglet **Erreurs** du gestionnaire `/plugin`. Les mêmes [considérations de confiance](/docs/fr/discover-plugins#security) s'appliquent que pour toute source de plugin : pointez uniquement ce drapeau vers des archives que vous contrôlez ou en lesquelles vous avez confiance.

344 351 

345Pour charger plusieurs plugins, répétez le drapeau pour chaque URL :352Pour charger plusieurs plugins, répétez le drapeau pour chaque URL :


510 Pour les développeurs de plugins517 Pour les développeurs de plugins

511</h3>518</h3>

512 519 

520* [Tester les plugins avec des evals](/docs/fr/plugin-evals) : mesurer ce que votre plugin change et gater CI sur celui-ci

513* [Créer et distribuer une marketplace](/docs/fr/plugin-marketplaces) : empaqueter et partager vos plugins521* [Créer et distribuer une marketplace](/docs/fr/plugin-marketplaces) : empaqueter et partager vos plugins

514* [Référence des plugins](/docs/fr/plugins-reference) : spécifications techniques complètes522* [Référence des plugins](/docs/fr/plugins-reference) : spécifications techniques complètes

515* Approfondissez les composants spécifiques du plugin :523* Approfondissez les composants spécifiques du plugin :

Details

121 121 

122Les hooks de plugin répondent aux mêmes événements de cycle de vie que les [hooks définis par l'utilisateur](/docs/fr/hooks) :122Les hooks de plugin répondent aux mêmes événements de cycle de vie que les [hooks définis par l'utilisateur](/docs/fr/hooks) :

123 123 

124| Event | When it fires |124| Événement | Quand il se déclenche |

125| :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |125| :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

126| `SessionStart` | When a session begins or resumes |126| `SessionStart` | Quand une session commence ou reprend |

127| `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 |127| `Setup` | Quand vous démarrez Claude Code avec `--init-only`, ou avec `--init` ou `--maintenance` en mode `-p`. Pour une préparation unique en CI ou dans les scripts |

128| `UserPromptSubmit` | When you submit a prompt, before Claude processes it |128| `UserPromptSubmit` | Quand vous soumettez une invite, avant que Claude la traite |

129| `UserPromptExpansion` | When a user-typed command expands into a prompt, before it reaches Claude. Can block the expansion |129| `UserPromptExpansion` | Quand une commande tapée par l'utilisateur se développe en une invite, avant qu'elle n'atteigne Claude. Peut bloquer l'expansion |

130| `PreToolUse` | Before a tool call executes. Can block it |130| `PreToolUse` | Avant qu'un appel d'outil s'exécute. Peut le bloquer |

131| `PermissionRequest` | When a tool call needs a permission decision |131| `PermissionRequest` | Quand un appel d'outil nécessite une décision de permission |

132| `PermissionDenied` | When auto mode denies a tool call, including denials without a classifier verdict. Use JSON `hookSpecificOutput.retry: true` to tell the model it may retry the denied tool call. Claude Code ignores `retry` when the classifier produced no verdict |132| `PermissionDenied` | Quand le mode automatique refuse un appel d'outil, y compris les refus sans verdict du classificateur. Utilisez la sortie JSON `hookSpecificOutput.retry: true` pour indiquer au modèle qu'il peut réessayer l'appel d'outil refusé. Claude Code ignore `retry` quand le classificateur n'a produit aucun verdict |

133| `PostToolUse` | After a tool call succeeds |133| `PostToolUse` | Après qu'un appel d'outil réussisse |

134| `PostToolUseFailure` | After a tool call fails |134| `PostToolUseFailure` | Après qu'un appel d'outil échoue |

135| `PostToolBatch` | After a full batch of parallel tool calls resolves, before the next model call |135| `PostToolBatch` | Après qu'un lot complet d'appels d'outils parallèles se résout, avant l'appel du modèle suivant |

136| `Notification` | When Claude Code sends a notification |136| `Notification` | Quand Claude Code envoie une notification |

137| `MessageDisplay` | While assistant message text is displayed |137| `MessageDisplay` | Pendant que le texte du message assistant s'affiche |

138| `SubagentStart` | When a subagent is spawned |138| `SubagentStart` | Quand un sous-agent est généré |

139| `SubagentStop` | When a subagent finishes |139| `SubagentStop` | Quand un sous-agent se termine |

140| `TaskCreated` | When a task is being created via `TaskCreate` |140| `TaskCreated` | Quand une tâche est en cours de création via `TaskCreate` |

141| `TaskCompleted` | When a task is being marked as completed |141| `TaskCompleted` | Quand une tâche est marquée comme complétée |

142| `Stop` | When Claude finishes responding |142| `Stop` | Quand Claude finit de répondre |

143| `StopFailure` | When the turn ends due to an API error |143| `StopFailure` | Quand le tour se termine en raison d'une erreur API |

144| `TeammateIdle` | When an [agent team](/docs/en/agent-teams) teammate is about to go idle |144| `TeammateIdle` | Quand un coéquipier d'une [équipe d'agents](/docs/fr/agent-teams) est sur le point de devenir inactif |

145| `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 |145| `InstructionsLoaded` | Quand un fichier CLAUDE.md ou `.claude/rules/*.md` est chargé dans le contexte. Se déclenche au démarrage de la session et quand les fichiers sont chargés paresseusement pendant une session |

146| `ConfigChange` | When a configuration file changes during a session |146| `ConfigChange` | Quand un fichier de configuration change pendant une session |

147| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |147| `CwdChanged` | Quand le répertoire de travail change, par exemple quand Claude exécute une commande `cd`. Utile pour la gestion réactive de l'environnement avec des outils comme direnv |

148| `DirectoryAdded` | When a working directory is added mid-session via `/add-dir` or the SDK `register_repo_root` control request |148| `DirectoryAdded` | Quand un répertoire de travail est ajouté en milieu de session via `/add-dir` ou la demande de contrôle SDK `register_repo_root` |

149| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |149| `FileChanged` | Quand un fichier surveillé change sur le disque. Le champ `matcher` spécifie les noms de fichiers à surveiller |

150| `WorktreeCreate` | When a worktree is being created via `--worktree`, `isolation: "worktree"`, or for a background session. Replaces default git behavior |150| `WorktreeCreate` | Quand un worktree est en cours de création via `--worktree`, `isolation: "worktree"`, ou pour une session en arrière-plan. Remplace le comportement git par défaut |

151| `WorktreeRemove` | When a worktree is being removed at session exit, when a subagent finishes, or when you delete a background session |151| `WorktreeRemove` | Quand un worktree est supprimé à la sortie de la session, quand un sous-agent se termine, ou quand vous supprimez une session en arrière-plan |

152| `PreCompact` | Before context compaction |152| `PreCompact` | Avant la compaction du contexte |

153| `PostCompact` | After context compaction completes |153| `PostCompact` | Après la compaction du contexte est complétée |

154| `PreModelSwitch` | Before Claude Code applies a model switch that you or a client requested. Can block the switch |154| `PreModelSwitch` | Avant que Claude Code applique un changement de modèle que vous ou un client avez demandé. Peut bloquer le changement |

155| `PostModelSwitch` | After the session's model changes, including changes Claude Code makes on its own, such as restoring the model when you resume a session |155| `PostModelSwitch` | Après que le modèle de la session change, y compris les changements que Claude Code effectue de lui-même, comme la restauration du modèle quand vous reprenez une session |

156| `Elicitation` | When an MCP server requests user input during a tool call |156| `Elicitation` | Quand un serveur MCP demande une entrée utilisateur pendant un appel d'outil |

157| `ElicitationResult` | After a user responds to an MCP elicitation, before the response is sent back to the server |157| `ElicitationResult` | Après qu'un utilisateur réponde à une élicitation MCP, avant que la réponse soit renvoyée au serveur |

158| `SessionEnd` | When a session terminates |158| `SessionEnd` | Quand une session se termine |

159 159 

160**Types de hook** :160**Types de hook** :

161 161 


488 "lspServers": "./.lsp.json",488 "lspServers": "./.lsp.json",

489 "experimental": {489 "experimental": {

490 "themes": "./themes/",490 "themes": "./themes/",

491 "monitors": "./monitors.json"491 "monitors": "./monitors.json",

492 "evals": "quality/evals"

492 },493 },

493 "dependencies": [494 "dependencies": [

494 "helper-lib",495 "helper-lib",


533</h3>534</h3>

534 535 

535| Champ | Type | Description | Exemple |536| Champ | Type | Description | Exemple |

536| :--------------- | :------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------- |537| :--------------- | :------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------- |

537| `$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"` |538| `$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"` |

538| `displayName` | string | Nom lisible par l'homme affiché dans le sélecteur `/plugin` et autres surfaces d'interface utilisateur. Revient à `name` lorsqu'il est omis. Contrairement à `name`, peut contenir des espaces et n'importe quelle casse. Non utilisé pour l'espace de noms ou la recherche. | `"Deployment Tools"` |539| `displayName` | string | Nom lisible par l'homme affiché dans le sélecteur `/plugin` et autres surfaces d'interface utilisateur. Pour un plugin installé depuis une marketplace, un `displayName` sur l'[entrée de marketplace](/docs/fr/plugin-marketplaces#optional-plugin-fields) prend précédence sur cette valeur. Lorsqu'aucun nom d'affichage n'est défini dans l'un ou l'autre endroit, les utilisateurs voient `name`. Contrairement à `name`, peut contenir des espaces et n'importe quelle casse. Non utilisé pour l'espace de noms ou la recherche. | `"Deployment Tools"` |

539| `version` | string | Facultatif. Version sémantique. La définition de ceci épingle le plugin à cette chaîne de version, de sorte que les utilisateurs ne reçoivent des mises à jour que lorsque vous la modifiez, sauf pour une [`command` source](/docs/fr/plugin-marketplaces#command-sources) ; voir [Gestion des versions](#version-management). S'il est également défini dans l'entrée de marketplace, `plugin.json` gagne. S'il est omis, la version provient de la source suivante dans [Gestion des versions](#version-management). | `"2.1.0"` |540| `version` | string | Facultatif. Version sémantique. La définition de ceci épingle le plugin à cette chaîne de version, de sorte que les utilisateurs ne reçoivent des mises à jour que lorsque vous la modifiez, sauf pour une [`command` source](/docs/fr/plugin-marketplaces#command-sources) ; voir [Gestion des versions](#version-management). S'il est également défini dans l'entrée de marketplace, `plugin.json` gagne. S'il est omis, la version provient de la source suivante dans [Gestion des versions](#version-management). | `"2.1.0"` |

540| `description` | string | Brève explication de l'objectif du plugin | `"Deployment automation tools"` |541| `description` | string | Brève explication de l'objectif du plugin | `"Deployment automation tools"` |

541| `author` | object | Informations sur l'auteur | `{"name": "Dev Team", "email": "dev@company.com"}` |542| `author` | object | Informations sur l'auteur | `{"name": "Dev Team", "email": "dev@company.com"}` |


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

576| `experimental.themes` | string\|array | Fichiers/répertoires de thème de couleur (remplace le défaut `themes/`). Voir [Thèmes](#themes) | `"./themes/"` |577| `experimental.themes` | string\|array | Fichiers/répertoires de thème de couleur (remplace le défaut `themes/`). Voir [Thèmes](#themes) | `"./themes/"` |

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

579| `experimental.evals` | string\|array | Répertoire sous la racine du plugin qui contient les [cas d'évaluation](/docs/fr/plugin-evals#use-a-different-eval-directory) du plugin, lorsqu'il n'est pas le défaut `evals/`. `claude plugin eval --eval-dir` le remplace | `"quality/evals"` |

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

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

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


762 764 

763`${CLAUDE_PLUGIN_ROOT}` change lorsque le plugin se met à jour. Le répertoire de la version précédente reste sur le disque pendant une période de grâce après une mise à jour, mais traitez-le comme éphémère et n'écrivez pas d'état là. Voir [mise en cache du plugin](#plugin-caching-and-file-resolution) pour la sémantique de nettoyage.765`${CLAUDE_PLUGIN_ROOT}` change lorsque le plugin se met à jour. Le répertoire de la version précédente reste sur le disque pendant une période de grâce après une mise à jour, mais traitez-le comme éphémère et n'écrivez pas d'état là. Voir [mise en cache du plugin](#plugin-caching-and-file-resolution) pour la sémantique de nettoyage.

764 766 

765Lorsqu'un plugin se met à jour en milieu de session, les commandes de hook, les moniteurs, les serveurs MCP et les serveurs LSP continuent d'utiliser le chemin de la version précédente. Exécutez `/reload-plugins` pour basculer les hooks, les serveurs MCP et les serveurs LSP vers le nouveau chemin ; les moniteurs nécessitent un redémarrage de session. Pour un plugin avec une source `command`, Claude Code [peut recharger le plugin lui-même](/docs/fr/plugin-marketplaces#when-claude-code-re-runs-the-command).767Lorsqu'un plugin se met à jour en milieu de session, les commandes de hook, les moniteurs, les serveurs MCP et les serveurs LSP continuent d'utiliser le chemin de la version précédente. Exécutez `/reload-plugins` pour basculer les hooks, les serveurs MCP et les serveurs LSP vers le nouveau chemin ; les moniteurs nécessitent un redémarrage de session. Dans une session sans terminal interactif, le rechargement laisse les serveurs MCP du plugin sur l'ancien chemin jusqu'à la session suivante. Pour un plugin avec une source `command`, Claude Code [peut recharger le plugin lui-même](/docs/fr/plugin-marketplaces#when-claude-code-re-runs-the-command).

766 768 

767Les serveurs MCP peuvent également appeler la demande `roots/list` pour lire les répertoires de travail de la session au moment de l'exécution. Voir [ce que `roots/list` retourne et quand Claude Code notifie le serveur des changements](/docs/fr/mcp#option-3-add-a-local-stdio-server).769Les serveurs MCP peuvent également appeler la demande `roots/list` pour lire les répertoires de travail de la session au moment de l'exécution. Voir [ce que `roots/list` retourne et quand Claude Code notifie le serveur des changements](/docs/fr/mcp#option-3-add-a-local-stdio-server).

768 770 


873 875 

874Claude Code ne permet pas à un plugin de référencer des fichiers en dehors de son propre répertoire. Il rejette un chemin de composant qui se résout en dehors de la racine du plugin, que le chemin soit déclaré dans `plugin.json` ou dans une [entrée de marketplace](/docs/fr/plugin-marketplaces#plugin-entries). Cela couvre un chemin qui pointe en dehors du plugin tel qu'écrit, comme `../shared-utils`, et un lien symbolique qui mène en dehors du plugin, autre que les [liens au sein d'une marketplace](#share-files-within-a-marketplace-with-symlinks).876Claude Code ne permet pas à un plugin de référencer des fichiers en dehors de son propre répertoire. Il rejette un chemin de composant qui se résout en dehors de la racine du plugin, que le chemin soit déclaré dans `plugin.json` ou dans une [entrée de marketplace](/docs/fr/plugin-marketplaces#plugin-entries). Cela couvre un chemin qui pointe en dehors du plugin tel qu'écrit, comme `../shared-utils`, et un lien symbolique qui mène en dehors du plugin, autre que les [liens au sein d'une marketplace](#share-files-within-a-marketplace-with-symlinks).

875 877 

878Sur macOS et Linux, Claude Code rejette également un chemin de composant qui contient une barre oblique inverse n'importe où dedans, même lorsque le chemin reste à l'intérieur du plugin. Les composants déclarés avec des chemins de barre oblique inverse se chargent donc uniquement sous Windows. Écrivez les chemins de composant avec des barres obliques avant, comme `./commands/deploy.md`.

879 

876Lorsque Claude Code rejette un chemin, il signale une erreur [`path escapes plugin directory`](/docs/fr/errors#path-escapes-plugin-directory) et charge le plugin sans ce composant.880Lorsque Claude Code rejette un chemin, il signale une erreur [`path escapes plugin directory`](/docs/fr/errors#path-escapes-plugin-directory) et charge le plugin sans ce composant.

877 881 

878Claude Code ne copie pas non plus les fichiers en dehors du répertoire du plugin dans le cache lorsqu'il installe le plugin, de sorte que lorsqu'un script à l'intérieur d'un plugin copié lit un chemin au-dessus de la racine du plugin, il ne trouve pas non plus ces fichiers.882Claude Code ne copie pas non plus les fichiers en dehors du répertoire du plugin dans le cache lorsqu'il installe le plugin, de sorte que lorsqu'un script à l'intérieur d'un plugin copié lit un chemin au-dessus de la racine du plugin, il ne trouve pas non plus ces fichiers.


994claude plugin init <name> [options]998claude plugin init <name> [options]

995```999```

996 1000 

997**Arguments :**1001La commande prend ces arguments :

998 1002 

999* `<name>` : Nom du plugin. Devient l'espace de noms de la compétence et le nom du répertoire sous `~/.claude/skills/`, il ne peut donc pas contenir d'espaces ou de séparateurs de chemin.1003* `<name>` : Nom du plugin. Devient l'espace de noms de la compétence et le nom du répertoire sous `~/.claude/skills/`, il ne peut donc pas contenir d'espaces ou de séparateurs de chemin.

1000 1004 

1001**Options :**1005La commande accepte ces options :

1002 1006 

1003| Option | Description | Par défaut |1007| Option | Description | Par défaut |

1004| :----------------------- | :--------------------------------------------------------------------------------------------------------------------------------- | :---------------------- |1008| :----------------------- | :--------------------------------------------------------------------------------------------------------------------------------- | :---------------------- |


1009| `-f, --force` | Remplacez un `.claude-plugin/` existant à la cible | |1013| `-f, --force` | Remplacez un `.claude-plugin/` existant à la cible | |

1010| `-h, --help` | Afficher l'aide pour la commande | |1014| `-h, --help` | Afficher l'aide pour la commande | |

1011 1015 

1012**Alias :** `new`1016`claude plugin new` est un alias pour cette commande.

1013 1017 

1014Chaque valeur `--with` ajoute un fichier de démarrage pour ce composant, prêt à être modifié :1018Chaque valeur `--with` ajoute un fichier de démarrage pour ce composant, prêt à être modifié :

1015 1019 


1025 1029 

1026Le plugin créé utilise la source `@skills-dir` plutôt qu'une marketplace. Les administrateurs peuvent bloquer cette source avec `strictKnownMarketplaces` ou en ajoutant `{"source": "skills-dir"}` à `blockedMarketplaces` dans les [paramètres gérés](/docs/fr/plugin-marketplaces#managed-marketplace-restrictions). Lorsqu'elle est bloquée, `plugin init` échoue avant d'écrire.1030Le plugin créé utilise la source `@skills-dir` plutôt qu'une marketplace. Les administrateurs peuvent bloquer cette source avec `strictKnownMarketplaces` ou en ajoutant `{"source": "skills-dir"}` à `blockedMarketplaces` dans les [paramètres gérés](/docs/fr/plugin-marketplaces#managed-marketplace-restrictions). Lorsqu'elle est bloquée, `plugin init` échoue avant d'écrire.

1027 1031 

1028**Exemples :**1032Ces exemples montrent les invocations courantes :

1029 1033 

1030```bash theme={null}1034```bash theme={null}

1031# Créer un plugin minimal1035# Créer un plugin minimal


1048claude plugin install <plugin> [options]1052claude plugin install <plugin> [options]

1049```1053```

1050 1054 

1051**Arguments :**1055La commande prend ces arguments :

1052 1056 

1053* `<plugin>` : Nom du plugin ou `plugin-name@marketplace-name` pour une marketplace spécifique1057* `<plugin>` : Nom du plugin ou `plugin-name@marketplace-name` pour une marketplace spécifique

1054 1058 

1055**Options :**1059La commande accepte ces options :

1056 1060 

1057| Option | Description | Par défaut |1061| Option | Description | Par défaut |

1058| :--------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------- |1062| :--------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------- |

1059| `-s, --scope <scope>` | Portée d'installation : `user`, `project`, ou `local` | `user` |1063| `-s, --scope <scope>` | Portée d'installation : `user`, `project`, ou `local` | `user` |

1060| `--config <key=value>` | Définissez une option [`userConfig`](#user-configuration) déclarée dans le manifeste du plugin. Répétez le drapeau pour définir plusieurs options | |1064| `--config <key=value>` | Définissez une option [`userConfig`](#user-configuration) déclarée dans le manifeste du plugin. Répétez le drapeau pour définir plusieurs options | |

1061| `-y, --yes` | Acceptez une commande que la marketplace du plugin déclare, sans l'invite de confirmation : la commande qui produit un plugin avec une [`command` source](/docs/fr/plugin-marketplaces#command-sources), ou le [`headersHelper`](/docs/fr/plugin-marketplaces#authenticate-archive-downloads) qui authentifie un téléchargement d'archive. Accepter un `headersHelper` nécessite Claude Code v2.1.238 ou ultérieur. Claude Code imprime toujours la commande en premier. Requis lorsque stdin ou stdout n'est pas un TTY. N'a aucun effet dans une session Claude Code, exécutez donc la commande depuis votre propre terminal | |1065| `-y, --yes` | Acceptez une commande que la marketplace du plugin déclare, sans l'invite de confirmation : la commande qui produit un plugin avec une [`command` source](/docs/fr/plugin-marketplaces#command-sources), ou le [`headersHelper`](/docs/fr/plugin-marketplaces#authenticate-archive-downloads) qui authentifie un téléchargement d'archive. Accepter un `headersHelper` nécessite Claude Code v2.1.238 ou ultérieur. Claude Code imprime toujours la commande en premier. Requis lorsque stdin ou stdout n'est pas un TTY. N'a aucun effet dans une session Claude Code, exécutez donc la commande depuis votre propre terminal | |

1066| `--json` | Imprimez le résultat en tant qu'un objet JSON sur la dernière ligne de stdout au lieu du message lisible par l'homme, pour une utilisation dans les scripts. Consultez [Format de résultat JSON](#plugin-json-result). Nécessite Claude Code v2.1.268 ou ultérieur | |

1062| `-h, --help` | Afficher l'aide pour la commande | |1067| `-h, --help` | Afficher l'aide pour la commande | |

1063 1068 

1064La portée détermine quel fichier de paramètres le plugin installé est ajouté à. Par exemple, `--scope project` écrit dans `enabledPlugins` dans .claude/settings.json, rendant le plugin disponible pour tous ceux qui clonent le référentiel du projet.1069La portée détermine quel fichier de paramètres le plugin installé est ajouté à. Par exemple, `--scope project` écrit dans `enabledPlugins` dans .claude/settings.json, rendant le plugin disponible pour tous ceux qui clonent le référentiel du projet.

1065 1070 

1066**Exemples :**1071<span id="plugin-json-result" />Avec `--json`, la dernière ligne de stdout est un objet JSON. Analysez uniquement cette ligne, car Claude Code imprime toute commande que la marketplace déclare avant elle. Trois champs sont toujours présents :

1072 

1073* `command` : la sous-commande qui a été exécutée, comme `install`

1074* `outcome` : `ok` ou `failed`

1075* `message` : une description lisible par l'homme du résultat

1076 

1077D'autres champs, tels que `pluginId`, `scope`, et `failureCode`, n'apparaissent que lorsqu'ils s'appliquent. L'option `--json` sur `plugin uninstall`, `plugin update`, `plugin enable`, et `plugin disable` imprime le même objet avec les propres champs de cette sous-commande. Une erreur d'utilisation, comme un `--scope` invalide, n'imprime aucune ligne de résultat et quitte 1 avec la raison sur stderr.

1078 

1079Ces exemples montrent les invocations courantes :

1067 1080 

1068```bash theme={null}1081```bash theme={null}

1069# Installer dans la portée utilisateur (par défaut)1082# Installer dans la portée utilisateur (par défaut)


1086claude plugin uninstall <plugin> [options]1099claude plugin uninstall <plugin> [options]

1087```1100```

1088 1101 

1089**Arguments :**1102La commande prend ces arguments :

1090 1103 

1091* `<plugin>` : Nom du plugin ou `plugin-name@marketplace-name`1104* `<plugin>` : Nom du plugin ou `plugin-name@marketplace-name`

1092 1105 

1093**Options :**1106La commande accepte ces options :

1094 1107 

1095| Option | Description | Par défaut |1108| Option | Description | Par défaut |

1096| :-------------------- | :------------------------------------------------------------------------------------------------------------------------------ | :--------- |1109| :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------- |

1097| `-s, --scope <scope>` | Désinstaller de la portée : `user`, `project`, ou `local` | `user` |1110| `-s, --scope <scope>` | Désinstaller de la portée : `user`, `project`, ou `local` | `user` |

1098| `--keep-data` | Préservez le [répertoire de données persistantes](#persistent-data-directory) du plugin | |1111| `--keep-data` | Préservez le [répertoire de données persistantes](#persistent-data-directory) du plugin | |

1099| `--prune` | Supprimez également les dépendances auto-installées qu'aucun autre plugin ne nécessite. Consultez [plugin prune](#plugin-prune) | |1112| `--prune` | Supprimez également les dépendances auto-installées qu'aucun autre plugin ne nécessite. Consultez [plugin prune](#plugin-prune) | |

1100| `-y, --yes` | Ignorez l'invite de confirmation `--prune`. Requis lorsque stdin ou stdout n'est pas un TTY | |1113| `-y, --yes` | Ignorez l'invite de confirmation `--prune`. Requis lorsque stdin ou stdout n'est pas un TTY | |

1114| `--json` | Imprimez le résultat en tant qu'un objet JSON sur la dernière ligne de stdout, au [même format que `plugin install --json`](#plugin-json-result). Ne peut pas être combiné avec `--prune`. Nécessite Claude Code v2.1.268 ou ultérieur | |

1101| `-h, --help` | Afficher l'aide pour la commande | |1115| `-h, --help` | Afficher l'aide pour la commande | |

1102 1116 

1103**Alias :** `remove`, `rm`1117`claude plugin remove` et `claude plugin rm` sont des alias pour cette commande.

1104 1118 

1105Par défaut, la désinstallation de la dernière portée restante supprime également le répertoire `${CLAUDE_PLUGIN_DATA}` du plugin. Utilisez `--keep-data` pour le préserver, par exemple lors de la réinstallation après avoir testé une nouvelle version.1119Par défaut, la désinstallation de la dernière portée restante supprime également le répertoire `${CLAUDE_PLUGIN_DATA}` du plugin. Utilisez `--keep-data` pour le préserver, par exemple lors de la réinstallation après avoir testé une nouvelle version.

1106 1120 


1118claude plugin prune [options]1132claude plugin prune [options]

1119```1133```

1120 1134 

1121**Options :**1135La commande accepte ces options :

1122 1136 

1123| Option | Description | Par défaut |1137| Option | Description | Par défaut |

1124| :-------------------- | :-------------------------------------------------------------------------------- | :--------- |1138| :-------------------- | :-------------------------------------------------------------------------------- | :--------- |


1127| `-y, --yes` | Ignorez l'invite de confirmation. Requis lorsque stdin ou stdout n'est pas un TTY | |1141| `-y, --yes` | Ignorez l'invite de confirmation. Requis lorsque stdin ou stdout n'est pas un TTY | |

1128| `-h, --help` | Afficher l'aide pour la commande | |1142| `-h, --help` | Afficher l'aide pour la commande | |

1129 1143 

1130**Alias :** `autoremove`1144`claude plugin autoremove` est un alias pour cette commande.

1131 1145 

1132La 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`.1146La 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`.

1133 1147 


1141claude plugin enable <plugin> [options]1155claude plugin enable <plugin> [options]

1142```1156```

1143 1157 

1144**Arguments :**1158La commande prend ces arguments :

1145 1159 

1146* `<plugin>` : Nom du plugin ou `plugin-name@marketplace-name`1160* `<plugin>` : Nom du plugin ou `plugin-name@marketplace-name`

1147 1161 

1148**Options :**1162La commande accepte ces options :

1149 1163 

1150| Option | Description | Par défaut |1164| Option | Description | Par défaut |

1151| :-------------------- | :------------------------------------------------------------------------------------------------------------------------------- | :-------------------- |1165| :-------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------- |

1152| `-s, --scope <scope>` | Portée à activer : `user`, `project`, ou `local`. Lorsqu'elle est omise, Claude Code détecte la portée où le plugin est installé | Détection automatique |1166| `-s, --scope <scope>` | Portée à activer : `user`, `project`, ou `local`. Lorsqu'elle est omise, Claude Code détecte la portée où le plugin est installé | Détection automatique |

1167| `--json` | Imprimez le résultat en tant qu'un objet JSON sur la dernière ligne de stdout, au [même format que `plugin install --json`](#plugin-json-result). Nécessite Claude Code v2.1.268 ou ultérieur | |

1153| `-h, --help` | Afficher l'aide pour la commande | |1168| `-h, --help` | Afficher l'aide pour la commande | |

1154 1169 

1155<h3 id="plugin-disable">1170<h3 id="plugin-disable">


1162claude plugin disable [plugin] [options]1177claude plugin disable [plugin] [options]

1163```1178```

1164 1179 

1165**Arguments :**1180La commande prend ces arguments :

1166 1181 

1167* `[plugin]` : Nom du plugin ou `plugin-name@marketplace-name`. Optionnel lors de l'utilisation de `--all`1182* `[plugin]` : Nom du plugin ou `plugin-name@marketplace-name`. Optionnel lors de l'utilisation de `--all`

1168 1183 

1169**Options :**1184La commande accepte ces options :

1170 1185 

1171| Option | Description | Par défaut |1186| Option | Description | Par défaut |

1172| :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------- | :-------------------- |1187| :-------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------- |

1173| `-a, --all` | Désactivez tous les plugins activés. Ne peut pas être combiné avec `--scope` | |1188| `-a, --all` | Désactivez tous les plugins activés. Ne peut pas être combiné avec `--scope` | |

1174| `-s, --scope <scope>` | Portée à désactiver : `user`, `project`, ou `local`. Lorsqu'elle est omise, Claude Code détecte la portée où le plugin est installé | Détection automatique |1189| `-s, --scope <scope>` | Portée à désactiver : `user`, `project`, ou `local`. Lorsqu'elle est omise, Claude Code détecte la portée où le plugin est installé | Détection automatique |

1190| `--json` | Imprimez le résultat en tant qu'un objet JSON sur la dernière ligne de stdout, au [même format que `plugin install --json`](#plugin-json-result). Nécessite Claude Code v2.1.268 ou ultérieur | |

1175| `-h, --help` | Afficher l'aide pour la commande | |1191| `-h, --help` | Afficher l'aide pour la commande | |

1176 1192 

1177<h3 id="plugin-update">1193<h3 id="plugin-update">


1184claude plugin update <plugin> [options]1200claude plugin update <plugin> [options]

1185```1201```

1186 1202 

1187**Arguments :**1203La commande prend ces arguments :

1188 1204 

1189* `<plugin>` : Nom du plugin ou `plugin-name@marketplace-name`1205* `<plugin>` : Nom du plugin ou `plugin-name@marketplace-name`

1190 1206 

1191**Options :**1207La commande accepte ces options :

1192 1208 

1193| Option | Description | Par défaut |1209| Option | Description | Par défaut |

1194| :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------- |1210| :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------- |

1195| `-s, --scope <scope>` | Portée à mettre à jour : `user`, `project`, `local`, ou `managed` | `user` |1211| `-s, --scope <scope>` | Portée à mettre à jour : `user`, `project`, `local`, ou `managed` | `user` |

1196| `-y, --yes` | Acceptez une commande que la marketplace du plugin déclare, sans l'invite de confirmation : la commande qui produit un plugin avec une [`command` source](/docs/fr/plugin-marketplaces#command-sources), ou le [`headersHelper`](/docs/fr/plugin-marketplaces#authenticate-archive-downloads) qui authentifie un téléchargement d'archive. Accepter un `headersHelper` nécessite Claude Code v2.1.238 ou ultérieur. Claude Code imprime toujours la commande en premier. Requis lorsque stdin ou stdout n'est pas un TTY. N'a aucun effet dans une session Claude Code, exécutez donc la commande depuis votre propre terminal | |1212| `-y, --yes` | Acceptez une commande que la marketplace du plugin déclare, sans l'invite de confirmation : la commande qui produit un plugin avec une [`command` source](/docs/fr/plugin-marketplaces#command-sources), ou le [`headersHelper`](/docs/fr/plugin-marketplaces#authenticate-archive-downloads) qui authentifie un téléchargement d'archive. Accepter un `headersHelper` nécessite Claude Code v2.1.238 ou ultérieur. Claude Code imprime toujours la commande en premier. Requis lorsque stdin ou stdout n'est pas un TTY. N'a aucun effet dans une session Claude Code, exécutez donc la commande depuis votre propre terminal | |

1213| `--json` | Imprimez le résultat en tant qu'un objet JSON sur la dernière ligne de stdout, au [même format que `plugin install --json`](#plugin-json-result). Nécessite Claude Code v2.1.268 ou ultérieur | |

1197| `-h, --help` | Afficher l'aide pour la commande | |1214| `-h, --help` | Afficher l'aide pour la commande | |

1198 1215 

1199<Note>1216<Note>


1212claude plugin list [options]1229claude plugin list [options]

1213```1230```

1214 1231 

1215**Options :**1232La commande accepte ces options :

1216 1233 

1217| Option | Description | Par défaut |1234| Option | Description | Par défaut |

1218| :------------ | :------------------------------------------------------------------- | :--------- |1235| :------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------- |

1219| `--json` | Sortie en JSON | |1236| `--json` | Sortie en JSON. Une ligne de plugin avec des problèmes de chargement ou des avertissements de création porte des tableaux de chaînes `errors` ou `notes`. Sur Claude Code v2.1.268 ou ultérieur, les tableaux parallèles `errorDetails` et `noteDetails` donnent à chaque entrée son `type` de diagnostic et les noms auxquels elle se réfère, comme le plugin, la marketplace, le serveur ou le fichier | |

1220| `--available` | Incluez les plugins disponibles des marketplaces. Nécessite `--json` | |1237| `--available` | Incluez les plugins disponibles des marketplaces. Nécessite `--json` | |

1221| `-h, --help` | Afficher l'aide pour la commande | |1238| `-h, --help` | Afficher l'aide pour la commande | |

1222 1239 


1238claude plugin details <name>1255claude plugin details <name>

1239```1256```

1240 1257 

1241**Arguments :**1258La commande prend ces arguments :

1242 1259 

1243* `<name>` : Nom du plugin ou `plugin-name@marketplace-name`1260* `<name>` : Nom du plugin ou `plugin-name@marketplace-name`

1244 1261 

1245**Options :**1262La commande accepte ces options :

1246 1263 

1247| Option | Description | Par défaut |1264| Option | Description | Par défaut |

1248| :----------- | :------------------------------- | :--------- |1265| :----------- | :------------------------------- | :--------- |


1293claude plugin validate <path> [options]1310claude plugin validate <path> [options]

1294```1311```

1295 1312 

1296**Arguments :**1313La commande prend ces arguments :

1297 1314 

1298* `<path>` : Chemin vers un répertoire de plugin ou un répertoire de marketplace. Consultez [Valider un plugin ou un répertoire sans manifeste](/docs/fr/plugin-marketplaces#validate-a-plugin-or-a-directory-without-a-manifest) pour savoir quels fichiers une exécution de plugin couvre.1315* `<path>` : Chemin vers un répertoire de plugin ou un répertoire de marketplace. Consultez [Valider un plugin ou un répertoire sans manifeste](/docs/fr/plugin-marketplaces#validate-a-plugin-or-a-directory-without-a-manifest) pour savoir quels fichiers une exécution de plugin couvre.

1299 1316 

1300**Options :**1317La commande accepte ces options :

1301 1318 

1302| Option | Description | Par défaut |1319| Option | Description | Par défaut |

1303| :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------- |1320| :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------- |


1317 1334 

1318Dans une session interactive, `/plugin validate <path>` exécute les mêmes vérifications en ligne.1335Dans une session interactive, `/plugin validate <path>` exécute les mêmes vérifications en ligne.

1319 1336 

1337<h3 id="plugin-eval">

1338 plugin eval

1339</h3>

1340 

1341Exécutez les [cas d'évaluation](/docs/fr/plugin-evals) d'un plugin et rapportez les résultats notés. Nécessite Claude Code v2.1.269 ou ultérieur. Chaque cas est une invite plus des évaluateurs ; Claude Code l'exécute plusieurs fois dans une session isolée avec uniquement le plugin cible chargé, et par défaut aussi sans le plugin afin que le rapport montre la différence. Consultez [Tester les plugins avec des évaluations](/docs/fr/plugin-evals) pour le format des cas, les évaluateurs, les résultats et l'utilisation en CI.

1342 

1343```bash theme={null}

1344claude plugin eval [target] [options]

1345```

1346 

1347La `target` optionnelle est un répertoire de plugin, un seul fichier `prompt.md` ou `case.yaml`, un plugin installé en tant que `name` ou `name@marketplace`, ou `name@skills-dir`, et par défaut le répertoire courant. Mettez-le avant `--tag`, `--allow-tools`, et `--json`.

1348 

1349Ce tableau énumère les options que la plupart des exécutions utilisent. Exécutez `claude plugin eval --help` pour l'ensemble complet, y compris `--case`, `--tag`, `--output-dir`, `--report`, `--allow-real-servers`, `--keep-temp`, et `--verbose`.

1350 

1351| Option | Description | Par défaut |

1352| :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------- |

1353| `--runs <n>` | Exécutions par cas par bras | `runs` de chaque cas, sinon 3 |

1354| `-j, --concurrency <n>` | Sessions d'agent à exécuter à la fois, 1 à 8. Elles partagent votre limite de débit | `1` |

1355| `--model <model>` | Modèle pour l'agent en test | `model` de chaque cas, sinon `ANTHROPIC_MODEL` s'il est défini, sinon la valeur par défaut de Claude Code |

1356| `--judge-model <model>` | Modèle pour les évaluateurs `llm` et `baseline` | Un petit modèle rapide |

1357| `--ablation <mode>` | `none` ou `with-without`. Consultez [Comparer par rapport à une ligne de base sans plugin](/docs/fr/plugin-evals#compare-against-a-no-plugin-baseline) | `with-without` lorsqu'un plugin se résout, sinon `none` |

1358| `--threshold <0..1>` | Quittez 1 si un cas quelconque note en dessous de ceci | `1.0` |

1359| `--max-cost-usd <usd>` | Arrêtez avant la prochaine exécution une fois que les dépenses atteignent ceci, quittez 2, et rapportez les résultats partiels | Pas de plafond |

1360| `--allow-tools <tools...>` | Accordez des outils au-delà de l'ensemble en lecture seule, comme `Bash`, `Write`, `Edit`, ou `"mcp__plugin_<plugin>_<server>__*"`. Consultez [Accorder des outils](/docs/fr/plugin-evals#grant-tools) | |

1361| `--scaffold` | Exécutez le [`scaffold_script`](/docs/fr/plugin-evals#add-setup-or-history-with-case-yaml) de chaque cas | Désactivé |

1362| `--trust-plugin` | Ignorez l'invite de confiance à la première exécution, pour CI. Consultez [Ce qu'une exécution peut accéder](/docs/fr/plugin-evals#security) | Désactivé |

1363| `--mocks <mode>` | `record` ou `off`. Consultez [Serveurs MCP fictifs](/docs/fr/plugin-evals#mock-mcp-servers) | `record` |

1364| `--eval-dir <dir>` | Répertoire sous le plugin qui contient les cas | Le `experimental.evals` du manifeste, sinon `evals` |

1365| `--json [path]` | Imprimez le [document de résultat](/docs/fr/plugin-evals#json-result) sur stdout, ou écrivez-le dans un chemin `.json` | |

1366| `--no-publish` | Gardez le rapport HTML local | |

1367| `-h, --help` | Afficher l'aide pour la commande | |

1368 

1369La commande quitte 0 lorsque chaque cas respecte le seuil, 1 sur un cas défaillant, une erreur de chargement, ou un répertoire de plugin non approuvé, 2 sur une exécution partielle, 130 lorsqu'elle est interrompue, et 143 lorsqu'elle est terminée. Consultez [Exécuter les évaluations en CI](/docs/fr/plugin-evals#run-evals-in-ci).

1370 

1371<h3 id="plugin-eval-init">

1372 plugin eval init

1373</h3>

1374 

1375Créez une suite d'évaluation pour le plugin dans le répertoire courant. Nécessite Claude Code v2.1.269 ou ultérieur. Dans un terminal, cela démarre une interview de création qui lit le plugin, propose des cas et des évaluateurs, les teste, et écrit les fichiers. Avec `--bare`, ou sans terminal, il écrit un modèle de cas unique vierge à la place. Exécutez depuis une session Claude Code interactive, il imprime les instructions d'interview pour que cette session suive plutôt que d'écrire un modèle. Consultez [Créer votre première suite d'évaluation](/docs/fr/plugin-evals#create-your-first-eval-suite).

1376 

1377```bash theme={null}

1378claude plugin eval init [name] [options]

1379```

1380 

1381Le `name` optionnel est un nom de cas : l'interview n'en a pas besoin, tandis que `--bare` et le chemin du modèle sans terminal l'exigent. Il accepte ces options :

1382 

1383| Option | Description | Par défaut |

1384| :------------------ | :-------------------------------------------------------------------------------------------------- | :-------------------------------------------------- |

1385| `--bare` | Écrivez un `prompt.md` vierge et `graders/criteria.md` pour `<name>` au lieu d'exécuter l'interview | |

1386| `-i, --interactive` | Exigez l'interview. Échoue sans terminal au lieu d'écrire un modèle | |

1387| `--eval-dir <dir>` | Répertoire sous le répertoire courant pour écrire les cas dans | Le `experimental.evals` du manifeste, sinon `evals` |

1388| `-h, --help` | Afficher l'aide pour la commande | |

1389 

1320<h3 id="plugin-tag">1390<h3 id="plugin-tag">

1321 plugin tag1391 plugin tag

1322</h3>1392</h3>


1327claude plugin tag [path] [options]1397claude plugin tag [path] [options]

1328```1398```

1329 1399 

1330**Arguments :**1400La commande prend ces arguments :

1331 1401 

1332* `[path]` : Chemin vers le répertoire du plugin. Par défaut, le répertoire courant.1402* `[path]` : Chemin vers le répertoire du plugin. Par défaut, le répertoire courant.

1333 1403 

1334**Options :**1404La commande accepte ces options :

1335 1405 

1336| Option | Description | Par défaut |1406| Option | Description | Par défaut |

1337| :-------------------- | :---------------------------------------------------------------------------------- | :--------- |1407| :-------------------- | :---------------------------------------------------------------------------------- | :--------- |

prompt-caching.md +124 −108

Details

14 Comment le cache est organisé14 Comment le cache est organisé

15</h2>15</h2>

16 16 

17Chaque fois que vous envoyez un message dans Claude Code, il effectue une nouvelle requête API. Le modèle ne se souvient de rien entre les requêtes, donc Claude Code renvoie le contexte complet : le prompt système, votre contexte de projet, chaque message antérieur et résultat d'outil, et votre nouveau message. Le nouveau contenu est ajouté à la fin, ce qui signifie que la plupart de chaque requête est identique à celle précédente. Le prompt caching est la façon dont l'API évite de retraiter la partie qui n'a pas changé.17Chaque fois que vous envoyez un message dans Claude Code, il effectue une nouvelle requête API. Le modèle ne se souvient de rien entre les requêtes, donc Claude Code renvoie le contexte complet : l'invite système, votre contexte de projet, tous les messages et résultats d'outils précédents, et votre nouveau message. Le nouveau contenu est ajouté à la fin, ce qui signifie que la plupart de chaque requête est identique à celle précédente. La mise en cache des invites est la façon dont l'API évite de retraiter la partie qui n'a pas changé.

18 18 

19L'API met en cache en faisant correspondre le début de chaque requête, appelé le préfixe, avec le contenu qu'elle a récemment traité. À un tour normal, le préfixe est la requête entière précédente et seul l'échange le plus récent est nouveau. La correspondance est exacte, donc un changement n'importe où dans le préfixe recalcule tout ce qui suit. Il n'y a pas de caching par fichier ou par segment. Voir [comment fonctionne le prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#how-prompt-caching-works) dans la référence API pour le mécanisme sous-jacent.19L'API met en cache en faisant correspondre le début de chaque requête, appelé le préfixe, avec le contenu qu'elle a récemment traité. À un tour normal, le préfixe est la requête entière précédente et seul l'échange le plus récent est nouveau. La correspondance est exacte, donc une modification n'importe où dans le préfixe recalcule tout ce qui suit. Il n'y a pas de mise en cache par fichier ou par segment. Consultez [comment fonctionne la mise en cache des invites](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#how-prompt-caching-works) dans la référence API pour le mécanisme sous-jacent.

20 20 

21<img src="https://mintcdn.com/claude-code/VbDJw--l6T9a9Wvm/images/prompt-caching-prefix.svg?fit=max&auto=format&n=VbDJw--l6T9a9Wvm&q=85&s=f2e8f0b8298a50305fe428ca3f1d1594" className="dark:hidden" alt="Quatre tours affichés sous forme de barres horizontales croissantes. La requête de chaque tour contient tout ce qui provient du tour précédent plus l'échange le plus récent ajouté à la fin. Aux tours deux et trois, le préfixe inchangé est lu à partir du cache et seul le nouvel échange est traité. Au tour quatre, le prompt système a changé, donc le préfixe ne correspond plus et la requête entière est retraitée et écrite." width="720" height="454" data-path="images/prompt-caching-prefix.svg" />21<img src="https://mintcdn.com/claude-code/VbDJw--l6T9a9Wvm/images/prompt-caching-prefix.svg?fit=max&auto=format&n=VbDJw--l6T9a9Wvm&q=85&s=f2e8f0b8298a50305fe428ca3f1d1594" className="dark:hidden" alt="Quatre tours affichés sous forme de barres horizontales croissantes. La requête de chaque tour contient tout ce qui provient du tour précédent plus l'échange le plus récent ajouté à la fin. Aux tours deux et trois, le préfixe inchangé est lu à partir du cache et seul le nouvel échange est traité. Au tour quatre, l'invite système a changé, donc le préfixe ne correspond plus et la requête entière est retraitée et écrite." width="720" height="454" data-path="images/prompt-caching-prefix.svg" />

22 22 

23<img src="https://mintcdn.com/claude-code/_xqph1dUOslCOwsj/images/prompt-caching-prefix-dark.svg?fit=max&auto=format&n=_xqph1dUOslCOwsj&q=85&s=297dc1c639f0915cae858d0c4b6f3be5" className="hidden dark:block" alt="Quatre tours affichés sous forme de barres horizontales croissantes. La requête de chaque tour contient tout ce qui provient du tour précédent plus l'échange le plus récent ajouté à la fin. Aux tours deux et trois, le préfixe inchangé est lu à partir du cache et seul le nouvel échange est traité. Au tour quatre, le prompt système a changé, donc le préfixe ne correspond plus et la requête entière est retraitée et écrite." width="720" height="454" data-path="images/prompt-caching-prefix-dark.svg" />23<img src="https://mintcdn.com/claude-code/_xqph1dUOslCOwsj/images/prompt-caching-prefix-dark.svg?fit=max&auto=format&n=_xqph1dUOslCOwsj&q=85&s=297dc1c639f0915cae858d0c4b6f3be5" className="hidden dark:block" alt="Quatre tours affichés sous forme de barres horizontales croissantes. La requête de chaque tour contient tout ce qui provient du tour précédent plus l'échange le plus récent ajouté à la fin. Aux tours deux et trois, le préfixe inchangé est lu à partir du cache et seul le nouvel échange est traité. Au tour quatre, l'invite système a changé, donc le préfixe ne correspond plus et la requête entière est retraitée et écrite." width="720" height="454" data-path="images/prompt-caching-prefix-dark.svg" />

24 24 

25Pour tirer le meilleur parti de la correspondance de préfixe, Claude Code organise chaque requête de sorte que le contenu qui change rarement entre les tours vient en premier :25Pour tirer le meilleur parti de la correspondance des préfixes, Claude Code organise chaque requête de sorte que le contenu qui change rarement entre les tours vient en premier :

26 26 

27| Couche | Contenu | Change quand |27| Couche | Contenu | Change quand |

28| ------------------ | --------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |28| ------------------ | ------------------------------------------------------------ | ---------------------------------------------------- |

29| Prompt système | Instructions principales, définitions d'outils, style de sortie | L'ensemble des définitions d'outils chargées change, vous changez de style de sortie, ou Claude Code est mis à niveau |29| Invite système | Instructions principales, définitions d'outils | L'ensemble des définitions d'outils chargées change |

30| Contexte du projet | CLAUDE.md, mémoire automatique, règles non délimitées | La session démarre, ou après `/clear` ou `/compact` |30| Contexte du projet | CLAUDE.md, mémoire automatique, règles non délimitées | La session commence, ou après `/clear` ou `/compact` |

31| Conversation | Vos messages, les réponses de Claude, les résultats d'outils | À chaque tour |31| Conversation | Vos messages, les réponses de Claude, les résultats d'outils | À chaque tour |

32 32 

33Un changement à la couche conversation laisse le prompt système et le contexte du projet en cache. Un changement au prompt système invalide tout, car tout le contenu ultérieur se trouve maintenant derrière un préfixe différent. La troisième colonne donne les déclencheurs courants plutôt qu'une liste exhaustive, et les sections ci-dessous couvrent l'ensemble complet.33Une modification de la couche de conversation laisse l'invite système et le contexte du projet en cache. Une modification de l'invite système invalide tout, car tout le contenu ultérieur se trouve maintenant derrière un préfixe différent. La troisième colonne donne les déclencheurs courants plutôt qu'une liste exhaustive, et les sections ci-dessous couvrent l'ensemble complet.

34 34 

35La règle de correspondance de préfixe explique la plupart des comportements sur cette page. Le [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode) et le [chargement de compétences](/docs/fr/skills), par exemple, ajoutent leurs instructions comme messages de conversation, de sorte que le préfixe en cache reste intact.35La règle de correspondance des préfixes explique la plupart des comportements sur cette page. Le [mode Plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode) et le [chargement des compétences](/docs/fr/skills), par exemple, ajoutent leurs instructions sous forme de messages de conversation, de sorte que le préfixe en cache reste intact.

36 36 

37Deux paramètres n'apparaissent pas dans le tableau des couches mais affectent toujours ce qui reste en cache :37Deux paramètres n'apparaissent pas dans le tableau des couches mais affectent toujours ce qui reste en cache :

38 38 

39* **Modèle** : chaque modèle a son propre cache. Changer de modèle recalcule la requête entière même quand le contenu est identique. Voir [Changer de modèle](#switching-models) ci-dessous.39* **Modèle** : chaque modèle a son propre cache. Changer de modèle recalcule la requête entière même lorsque le contenu est identique. Consultez [Changer de modèle](#switching-models) ci-dessous.

40* **Niveau d'effort** : sur la plupart des modèles, chaque niveau d'effort a son propre cache, donc changer d'effort en cours de session recalcule la requête entière. Sur Fable 5.1 avec une clé API ou un abonnement Claude, le cache reste intact par défaut. Voir [Changer le niveau d'effort](#changing-effort-level) ci-dessous.40* **Niveau d'effort** : sur la plupart des modèles, chaque niveau d'effort a son propre cache, donc changer d'effort en cours de session recalcule la requête entière. Sur Fable 5.1 avec une clé API ou un abonnement Claude, le cache reste intact par défaut. Consultez [Changer le niveau d'effort](#changing-effort-level) ci-dessous.

41 41 

42<Tip>42<Tip>

43 Choisissez votre modèle et votre niveau d'effort au début d'une session, puis réservez `/compact` pour les pauses naturelles entre les tâches. Moins vous faites de changements en cours de tâche, plus votre taux de cache hit est élevé.43 Choisissez votre modèle et votre niveau d'effort au début d'une session, puis réservez `/compact` pour les pauses naturelles entre les tâches. Moins vous apportez de modifications en cours de tâche, plus votre taux de succès du cache est élevé.

44</Tip>44</Tip>

45 45 

46<h3 id="where-the-cache-lives">46<h3 id="where-the-cache-lives">

47 Où vit le cache47 Où vit le cache

48</h3>48</h3>

49 49 

50Le caching se produit côté serveur, dans l'infrastructure qui sert votre modèle. L'endroit où cela se trouve dépend de la façon dont vous vous authentifiez :50La mise en cache se produit côté serveur, dans l'infrastructure qui sert votre modèle. L'endroit où cela se trouve dépend de la façon dont vous vous authentifiez :

51 51 

52* **Clé API, abonnement Claude, ou [Claude Platform on AWS](/docs/fr/claude-platform-on-aws)** : le cache vit dans l'infrastructure d'Anthropic, accessible via l'[API Claude](https://platform.claude.com/docs)52* **Clé API, abonnement Claude, ou [Claude Platform on AWS](/docs/fr/claude-platform-on-aws)** : le cache se trouve dans l'infrastructure d'Anthropic, accessible via l'[API Claude](https://platform.claude.com/docs)

53* **Amazon Bedrock ou Google Cloud's Agent Platform** : le cache vit dans l'infrastructure de service de votre fournisseur cloud53* **Amazon Bedrock ou Agent Platform de Google Cloud** : le cache se trouve dans l'infrastructure de service de votre fournisseur cloud

54* **Microsoft Foundry** : dépend de l'[option d'hébergement](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options) du déploiement. Les déploiements hébergés sur Azure sont servis sur l'infrastructure Azure ; les déploiements hébergés sur Anthropic sont servis sur l'infrastructure d'Anthropic54* **Microsoft Foundry** : dépend de l'[option d'hébergement](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options) du déploiement. Les déploiements hébergés sur Azure sont servis sur l'infrastructure Azure ; les déploiements hébergés sur Anthropic sont servis sur l'infrastructure d'Anthropic

55* **`ANTHROPIC_BASE_URL` personnalisé ou [passerelle LLM](/docs/fr/llm-gateway)** : le cache vit là où vos requêtes sont transférées, et le fonctionnement du caching dépend de la passerelle55* **`ANTHROPIC_BASE_URL` personnalisé ou [passerelle LLM](/docs/fr/llm-gateway)** : le cache se trouve là où vos requêtes sont transférées, et le fonctionnement de la mise en cache dépend de la passerelle

56 56 

57Claude Code ajoute également le contexte système en cours de conversation, comme les avis de changement de fichier, et marque ce bloc pour la mise en cache sur chaque fournisseur et connexion.57Claude Code ajoute également le contexte système en cours de conversation, comme les avis de modification de fichiers, et marque ce bloc pour la mise en cache sur chaque fournisseur et connexion sauf si vous définissez [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/fr/llm-gateway-protocol#disable-pre-release-capabilities), auquel cas ce bloc est envoyé sans cache.

58 58 

59Au point de terminaison propre du fournisseur, Amazon Bedrock et son [point de terminaison Mantle](/docs/fr/amazon-bedrock#use-the-mantle-endpoint), Google Cloud's Agent Platform, et Microsoft Foundry mettent en cache le bloc de la même manière que l'API Claude.59Au point de terminaison propre du fournisseur, Amazon Bedrock et son [point de terminaison Mantle](/docs/fr/amazon-bedrock#use-the-mantle-endpoint), Agent Platform de Google Cloud, et Microsoft Foundry mettent en cache le bloc de la même manière que l'API Claude.

60 60 

61Quand vos requêtes passent par une [passerelle LLM](/docs/fr/llm-gateway), un `ANTHROPIC_BASE_URL` personnalisé, ou un remplacement d'URL de base du fournisseur cloud tel que [`ANTHROPIC_BEDROCK_BASE_URL`](/docs/fr/env-vars), ce qui reste en cache dépend de la façon dont la passerelle gère les [marqueurs `cache_control`](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#explicit-cache-breakpoints) que Claude Code envoie :61Lorsque vos requêtes passent par une [passerelle LLM](/docs/fr/llm-gateway), un `ANTHROPIC_BASE_URL` personnalisé, ou un remplacement d'URL de base du fournisseur cloud tel que [`ANTHROPIC_BEDROCK_BASE_URL`](/docs/fr/env-vars), ce qui reste en cache dépend de la façon dont la passerelle gère les [marqueurs `cache_control`](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#explicit-cache-breakpoints) que Claude Code envoie :

62 62 

63* **Les transmet inchangés** : le bloc et votre conversation se mettent en cache de la même manière qu'au point de terminaison propre du fournisseur.63* **Les transmet inchangés** : le bloc et votre conversation se mettent en cache de la même manière qu'au point de terminaison propre du fournisseur.

64* **Rejette la requête marquée avec une erreur `400` nommant `cache_control`** : Claude Code renvoie la requête avec le marqueur déplacé du bloc vers votre dernier message de conversation, et le garde là pour le reste de la conversation. Le bloc est facturé comme entrée non mise en cache ; votre conversation reste mise en cache.64* **Rejette la requête marquée avec une erreur `400` nommant `cache_control`** : Claude Code renvoie la requête avec le marqueur déplacé du bloc vers votre dernier message de conversation, et le garde là pour le reste de la conversation. Le bloc est facturé comme entrée non mise en cache ; votre conversation reste mise en cache.

65* **Supprime les marqueurs tout en retournant le succès** : l'intégralité de votre historique de conversation est facturée comme entrée non mise en cache à chaque tour. Une passerelle qui convertit le contenu du système sous forme de bloc en une chaîne simple supprime le marqueur de la même manière.65* **Supprime les marqueurs tout en retournant le succès** : l'historique de votre conversation entière est facturé comme entrée non mise en cache à chaque tour. Une passerelle qui convertit le contenu du système sous forme de bloc en une chaîne simple supprime le marqueur de la même manière.

66 66 

67Pour ce que chaque fournisseur stocke et traite, voir [utilisation des données](/docs/fr/data-usage). Où que le cache vive, les entrées expirent après une période d'inactivité, et [Durée de vie du cache](#cache-lifetime) ci-dessous couvre le TTL et comment l'étendre.67Pour ce que chaque fournisseur stocke et traite, consultez [utilisation des données](/docs/fr/data-usage). Où que le cache se trouve, les entrées expirent après une période d'inactivité, et [Durée de vie du cache](#cache-lifetime) ci-dessous couvre le TTL et comment l'étendre.

68 68 

69<h2 id="actions-that-invalidate-the-cache">69<h2 id="actions-that-invalidate-the-cache">

70 Actions qui invalident le cache70 Actions qui invalident le cache

71</h2>71</h2>

72 72 

73Ces actions font que la requête suivante manque une partie ou la totalité du cache. Vous voyez un tour plus lent et plus coûteux une seule fois, après quoi le nouveau préfixe est mis en cache. La plupart d'entre elles sont évitables en cours de tâche une fois que vous savez qu'elles ont un coût. Un changement de modèle peut sembler gratuit jusqu'à ce que vous remarquiez le tour plus lent qui suit.73Ces actions font que la demande suivante manque une partie ou la totalité du cache. Vous voyez un tour plus lent et plus coûteux une seule fois, après quoi le nouveau préfixe est mis en cache. La plupart d'entre elles sont évitables au cours d'une tâche une fois que vous savez qu'elles ont un coût. Un changement de modèle peut sembler gratuit jusqu'à ce que vous remarquiez le tour plus lent qui suit.

74 74 

75* [Changer de modèle](#switching-models)75* [Changement de modèles](#switching-models)

76* [Modifier le niveau d'effort](#changing-effort-level)76* [Modification du niveau d'effort](#changing-effort-level)

77* [Activer le mode rapide](#turning-on-fast-mode)77* [Activation du mode rapide](#turning-on-fast-mode)

78* [Connecter ou déconnecter un serveur MCP](#connecting-or-disconnecting-an-mcp-server)78* [Connexion ou déconnexion d'un serveur MCP](#connecting-or-disconnecting-an-mcp-server)

79* [Activer ou désactiver un plugin](#enabling-or-disabling-a-plugin)79* [Activation ou désactivation d'un plugin](#enabling-or-disabling-a-plugin)

80* [Refuser un outil entier](#denying-an-entire-tool)80* [Refus d'un outil entier](#denying-an-entire-tool)

81* [Modifier le style de sortie](#changing-output-style)81* [Compactage de la conversation](#compacting-the-conversation)

82* [Compacter la conversation](#compacting-the-conversation)82* [Accumulation de nombreuses images](#accumulating-many-images)

83* [Accumuler de nombreuses images](#accumulating-many-images)83* [Mise à niveau de Claude Code](#upgrading-claude-code)

84* [Mettre à niveau Claude Code](#upgrading-claude-code)

85 84 

86<h3 id="switching-models">85<h3 id="switching-models">

87 Changer de modèle86 Changement de modèles

88</h3>87</h3>

89 88 

90Chaque modèle a son propre cache. Changer avec [`/model`](/docs/fr/model-config#setting-your-model) signifie que la requête suivante lit l'historique de conversation entier sans cache hits, même si le contenu est identique.89Chaque modèle a son propre cache. Basculer avec [`/model`](/docs/fr/model-config#setting-your-model) signifie que la demande suivante lit l'historique de conversation entier sans aucun accès au cache, même si le contenu est identique.

91 90 

92Quand vous exécutez `/model` au terminal, Claude Code vous demande de confirmer le changement uniquement tant que le cache est encore chaud. Le cache reste chaud pendant une [durée de vie du cache](#cache-lifetime) après que Claude Code ait envoyé une dernière requête dans cette conversation ou que Claude ait répondu. Une fois ce délai écoulé, le cache a expiré, donc Claude Code bascule sans demander.91Lorsque vous exécutez `/model` au terminal, Claude Code vous demande de confirmer le changement uniquement tant que le cache est encore chaud. Le cache reste chaud pendant un [TTL de cache](#cache-lifetime) après que Claude Code a envoyé une dernière demande dans cette conversation ou que Claude a répondu. Une fois ce délai écoulé, le cache a expiré, donc Claude Code bascule sans demander.

93 92 

94Avant la v2.1.238, Claude Code ne vérifiait pas la durée de vie du cache et demandait même après l'expiration du cache.93Avant la v2.1.238, Claude Code ne vérifiait pas le TTL du cache et demandait même après l'expiration du cache.

95 94 

96Vous pouvez également exiger cette confirmation ou l'ignorer avec un [hook PreModelSwitch](/docs/fr/hooks#premodelswitch-decision-control).95Vous pouvez également exiger cette confirmation ou l'ignorer avec un [hook PreModelSwitch](/docs/fr/hooks#premodelswitch-decision-control).

97 96 

98Le [paramètre de modèle `opusplan`](/docs/fr/model-config#opusplan-model-setting) se résout en Opus pendant le mode plan et Sonnet pendant l'exécution, donc chaque basculement de mode plan est un changement de modèle et démarre un cache frais.97Le [paramètre de modèle `opusplan`](/docs/fr/model-config#opusplan-model-setting) se résout en Opus pendant le mode plan et Sonnet pendant l'exécution, donc chaque basculement du mode plan est un changement de modèle et démarre un nouveau cache.

99 98 

100Le [basculement automatique du modèle](/docs/fr/model-config#automatic-model-fallback) sur Fable 5.1, Fable 5 et Opus 5 est également un changement de modèle. Quand un classificateur de sécurité signale une requête et que la catégorie signalée a un modèle de secours, Claude Code réexécute la requête sur ce modèle et la session continue là.99[Le basculement automatique du modèle](/docs/fr/model-config#automatic-model-fallback) sur les modèles Fable et Opus 5 est également un changement de modèle. Lorsqu'un classificateur de sécurité signale une demande dans une catégorie qui a un modèle de secours, Claude Code réexécute la demande sur ce modèle et la session continue là.

100 

101Lorsque le frontmatter d'une compétence ou d'une commande nomme un [`model`](/docs/fr/skills#frontmatter-reference) autre que le modèle actuel de la session, ce tour est également un changement de modèle : la demande suivante lit l'historique de conversation entier sans aucun accès au cache. Le modèle de session reprend à votre prochaine invite. Une compétence `context: fork` définit le [modèle du sous-agent forké](/docs/fr/skills#run-skills-in-a-subagent) à la place.

101 102 

102<h3 id="changing-effort-level">103<h3 id="changing-effort-level">

103 Modifier le niveau d'effort104 Modification du niveau d'effort

104</h3>105</h3>

105 106 

106Sur la plupart des modèles, modifier le [niveau d'effort](/docs/fr/model-config#adjust-effort-level) en cours de session signifie que la requête suivante lit l'historique de conversation entier sans cache hits. Tant que le cache est encore chaud, Claude Code vous demande de confirmer le changement d'abord.107Sur la plupart des modèles, modifier le [niveau d'effort](/docs/fr/model-config#adjust-effort-level) en cours de session signifie que la demande suivante lit l'historique de conversation entier sans aucun accès au cache. Tant que le cache est encore chaud, Claude Code vous demande de confirmer le changement en premier.

107 108 

108Sur Fable 5.1 avec une clé API ou un abonnement Claude, modifier l'effort conserve le cache, et Claude Code applique le nouveau niveau sans demander. Cela ne s'applique pas sur Amazon Bedrock, Google Cloud's Agent Platform, ou une [passerelle d'applications Claude](/docs/fr/claude-apps-gateway), ou quand vous définissez [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/fr/llm-gateway-protocol#disable-pre-release-capabilities) ou que votre organisation a une configuration HIPAA.109Sur Fable 5.1 avec une clé API ou un abonnement Claude, modifier l'effort conserve le cache, et Claude Code applique le nouveau niveau sans demander. Cela ne s'applique pas sur Amazon Bedrock, sur la plateforme Agent de Google Cloud, ou sur une [passerelle d'applications Claude](/docs/fr/claude-apps-gateway), ou lorsque vous définissez [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/fr/llm-gateway-protocol#disable-pre-release-capabilities) ou que votre organisation a une configuration HIPAA.

109 110 

110Avant la v2.1.260, modifier l'effort sur Fable 5.1 avec une clé API ou un abonnement Claude invalidait également le cache.111Avant la v2.1.260, modifier l'effort sur Fable 5.1 avec une clé API ou un abonnement Claude invalidait également le cache.

111 112 

112<h3 id="turning-on-fast-mode">113<h3 id="turning-on-fast-mode">

113 Activer le mode rapide114 Activation du mode rapide

114</h3>115</h3>

115 116 

116L'activation du [mode rapide](/docs/fr/fast-mode) ajoute un en-tête de requête qui fait partie de la clé de cache, donc la première requête que Claude Code envoie avec le mode rapide activé lit l'historique de conversation entier sans cache hits. Claude Code définit cet en-tête une fois quand un tour commence et le conserve pour tout le tour, donc quand vous activez le mode rapide pendant que Claude travaille, le cache miss de l'en-tête se produit sur la première requête de votre tour suivant. Ces jetons d'entrée non mis en cache sont facturés aux [tarifs du mode rapide](/docs/fr/fast-mode#understand-the-cost-tradeoff), c'est pourquoi l'activer au début d'une session coûte moins cher que de l'activer profondément dans une longue session. Si votre modèle actuel ne supporte pas le mode rapide, l'activation du mode rapide [bascule également votre modèle](#switching-models), et ce changement démarre un cache frais en soi à partir de la requête suivante du tour en cours.117L'activation du [mode rapide](/docs/fr/fast-mode) ajoute un en-tête de demande qui fait partie de la clé de cache, donc la première demande que Claude Code envoie avec le mode rapide activé lit l'historique de conversation entier sans aucun accès au cache. Claude Code définit cet en-tête une fois au démarrage d'un tour et le conserve pour tout le tour, donc lorsque vous activez le mode rapide pendant que Claude travaille, le manque de cache de l'en-tête se produit à la première demande de votre tour suivant. Ces jetons d'entrée non mis en cache sont facturés aux [tarifs du mode rapide](/docs/fr/fast-mode#understand-the-cost-tradeoff), c'est pourquoi l'activation au début d'une session coûte moins cher que l'activation au cœur d'une longue session. Si votre modèle actuel ne supporte pas le mode rapide, l'activation du mode rapide [bascule également votre modèle](#switching-models), et ce basculement démarre un nouveau cache à partir de la demande suivante du tour en cours.

117 118 

118Le coût s'applique une fois par conversation. Après le premier tour en mode rapide, Claude Code continue d'envoyer l'en-tête et varie uniquement le paramètre de vitesse de la requête, qui ne fait pas partie de la clé de cache. Désactiver le mode rapide, le [basculement automatique vers la vitesse standard](/docs/fr/fast-mode#handle-rate-limits) après une limite de débit, et le réactiver plus tard conservent tous le cache. Si vous [épuisez vos crédits d'utilisation](/docs/fr/fast-mode#handle-rate-limits) en cours de session, Claude Code réessaie chaque requête en mode rapide rejetée à la vitesse standard de la même manière, donc ce basculement conserve également le cache. `/clear` et `/compact` réinitialisent cela, puisqu'ils reconstruisent le cache à ces points de toute façon.119Le coût s'applique une fois par conversation. Après le premier tour en mode rapide, Claude Code continue d'envoyer l'en-tête et varie uniquement le paramètre de vitesse de la demande, qui ne fait pas partie de la clé de cache. Désactiver le mode rapide, le [basculement automatique vers la vitesse standard](/docs/fr/fast-mode#handle-rate-limits) après une limite de débit, et le réactiver plus tard conservent tous le cache. Si vous [manquez de crédits d'utilisation](/docs/fr/fast-mode#handle-rate-limits) en cours de session, Claude Code réessaie chaque demande en mode rapide rejetée à la vitesse standard de la même manière, donc ce basculement conserve également le cache. `/clear` et `/compact` réinitialisent cela, puisqu'ils reconstruisent le cache à ces points de toute façon.

119 120 

120<h3 id="connecting-or-disconnecting-an-mcp-server">121<h3 id="connecting-or-disconnecting-an-mcp-server">

121 Connecter ou déconnecter un serveur MCP122 Connexion ou déconnexion d'un serveur MCP

122</h3>123</h3>

123 124 

124Les définitions d'outils se trouvent dans la couche du prompt système, donc le cache s'invalide quand l'ensemble des définitions d'outils dans la requête change entre les tours. Basculer l'[outil conseiller](/docs/fr/advisor) est une exception : sa définition se trouve après le point de rupture du cache, donc activer ou désactiver `/advisor` conserve le préfixe mis en cache intact. Qu'un changement de [serveur MCP](/docs/fr/mcp) fasse cela dépend de si ses outils sont différés par la [recherche d'outils](/docs/fr/mcp#scale-with-mcp-tool-search) ou chargés dans le préfixe :125Les définitions d'outils se trouvent dans la couche d'invite système, donc le cache s'invalide lorsque l'ensemble des définitions d'outils dans la demande change entre les tours. Basculer l'[outil conseiller](/docs/fr/advisor) est une exception : sa définition se trouve après le point de rupture du cache, donc l'activation ou la désactivation de `/advisor` conserve le préfixe mis en cache intact. Qu'un changement de [serveur MCP](/docs/fr/mcp) fasse cela dépend de si ses outils sont différés par [la recherche d'outils](/docs/fr/mcp#scale-with-mcp-tool-search) ou chargés dans le préfixe :

125 126 

126* **Outils différés**, la valeur par défaut sur les modèles supportés : un serveur qui se connecte, se déconnecte, ou change sa liste d'outils n'ajoute que du nouveau contenu et ne perturbe rien de ce qui est déjà en cache.127* **Outils différés**, la valeur par défaut sur les modèles supportés : un serveur se connectant, se déconnectant, ou changeant sa liste d'outils n'ajoute que du nouveau contenu et ne perturbe rien de déjà mis en cache.

127* **Outils chargés dans le préfixe** : tout changement à leur égard invalide le cache. Cela se produit quand la [recherche d'outils n'est pas disponible ou est désactivée](/docs/fr/mcp#configure-tool-search), comme sur les modèles Google Cloud's Agent Platform antérieurs à la génération Claude 4.5, avec une passerelle `ANTHROPIC_BASE_URL` personnalisée, ou sur un [déploiement Microsoft Foundry hébergé sur Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options) une fois que Claude Code détecte que le déploiement rejette la recherche d'outils. Cela se produit également pour un serveur ou un outil marqué [`alwaysLoad`](/docs/fr/mcp#exempt-a-server-from-deferral), et pour les définitions conservées en avant par le [chargement basé sur le seuil](/docs/fr/mcp#configure-tool-search).128* **Outils chargés dans le préfixe** : tout changement à leur égard invalide le cache. Cela se produit lorsque [la recherche d'outils n'est pas disponible ou est désactivée](/docs/fr/mcp#configure-tool-search), par exemple sur les modèles de la plateforme Agent de Google Cloud antérieurs à la génération Claude 4.5, avec une passerelle `ANTHROPIC_BASE_URL` personnalisée, ou sur un déploiement Microsoft Foundry [hébergé sur Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options) une fois que Claude Code détecte que le déploiement rejette la recherche d'outils. Cela se produit également pour un serveur ou un outil marqué [`alwaysLoad`](/docs/fr/mcp#exempt-a-server-from-deferral), et pour les définitions conservées en avant par [le chargement basé sur le seuil](/docs/fr/mcp#configure-tool-search).

128 129 

129Quand les outils se chargent dans le préfixe, la cause la plus courante d'une invalidation est un serveur qui se connecte ou se déconnecte en cours de session, ce qui peut se produire sans aucune action de votre part : le processus d'un serveur stdio se termine, une session HTTP expire, ou un serveur se [reconnecte automatiquement après une défaillance transitoire](/docs/fr/mcp#automatic-reconnection). Un serveur connecté peut également envoyer une [mise à jour d'outil dynamique](/docs/fr/mcp#dynamic-tool-updates) qui change sa liste d'outils.130Lorsque les outils se chargent dans le préfixe, la cause la plus courante d'une invalidation est un serveur se connectant ou se déconnectant en cours de session, ce qui peut se produire sans aucune action de votre part : le processus d'un serveur stdio se termine, une session HTTP expire, ou un serveur [se reconnecte automatiquement après une défaillance transitoire](/docs/fr/mcp#automatic-reconnection). Un serveur connecté peut également envoyer une [mise à jour d'outil dynamique](/docs/fr/mcp#dynamic-tool-updates) qui change sa liste d'outils.

130 131 

131Éditer votre configuration MCP ne change pas le cache en soi. La nouvelle configuration ne prend effet qu'après un redémarrage, c'est à ce moment que le serveur se connecte ou se déconnecte.132Éditer votre configuration MCP ne change pas le cache en soi. La nouvelle configuration ne prend effet qu'après un redémarrage, c'est à ce moment que le serveur se connecte ou se déconnecte.

132 133 

133<h3 id="enabling-or-disabling-a-plugin">134<h3 id="enabling-or-disabling-a-plugin">

134 Activer ou désactiver un plugin135 Activation ou désactivation d'un plugin

135</h3>136</h3>

136 137 

137Quand vous activez ou désactivez un [plugin](/docs/fr/plugins), ce que le changement coûte dépend des types de composants que le plugin fournit. Les cas ci-dessous couvrent chaque type de composant, quand Claude Code applique le changement, et ce qui se passe quand vous désactivez un plugin à nouveau dans la même session.138Lorsque vous activez ou désactivez un [plugin](/docs/fr/plugins), ce que le changement coûte dépend des types de composants que le plugin fournit. Les cas ci-dessous couvrent chaque type de composant, quand Claude Code applique le changement, et ce qui se passe lorsque vous désactivez un plugin à nouveau dans la même session.

138 139 

139<h4 id="plugin-components-that-keep-the-cache">140<h4 id="plugin-components-that-keep-the-cache">

140 Composants de plugin qui conservent le cache141 Composants de plugin qui conservent le cache

141</h4>142</h4>

142 143 

143Claude Code n'invalide jamais le cache pour les skills, commandes, agents, hooks, moniteurs ou thèmes d'un plugin. Il ajoute leur contenu après la conversation existante, donc la requête suivante paie pour ce contenu et lit toujours tout ce qui le précède à partir du cache.144Claude Code n'invalide jamais le cache pour les compétences, commandes, agents, hooks, moniteurs ou thèmes d'un plugin. Il ajoute leur contenu après la conversation existante, donc la demande suivante paie pour ce contenu et lit toujours tout ce qui le précède à partir du cache.

144 145 

145<h4 id="plugins-that-provide-mcp-servers">146<h4 id="plugins-that-provide-mcp-servers">

146 Plugins qui fournissent des serveurs MCP147 Plugins qui fournissent des serveurs MCP

147</h4>148</h4>

148 149 

149Quand vous activez ou désactivez un plugin qui fournit des [serveurs MCP](/docs/fr/plugins-reference#mcp-servers), Claude Code suit les mêmes règles que quand vous [connectez ou déconnectez un serveur MCP](#connecting-or-disconnecting-an-mcp-server) :150Lorsque vous activez ou désactivez un plugin qui fournit des [serveurs MCP](/docs/fr/plugins-reference#mcp-servers), Claude Code suit les mêmes règles que lorsque vous [connectez ou déconnectez un serveur MCP](#connecting-or-disconnecting-an-mcp-server) :

150 151 

151* Si Claude Code diffère les outils du serveur, il conserve le cache.152* Si Claude Code diffère les outils du serveur, il conserve le cache.

152* Si Claude Code les charge dans le préfixe, la requête suivante relit la conversation entière.153* Si Claude Code les charge dans le préfixe, la demande suivante relit la conversation entière.

153 154 

154<h4 id="code-intelligence-plugins">155<h4 id="code-intelligence-plugins">

155 Plugins d'intelligence de code156 Plugins d'intelligence de code

156</h4>157</h4>

157 158 

158Quand vous activez un [plugin d'intelligence de code](/docs/fr/discover-plugins#code-intelligence), Claude obtient l'[outil LSP](/docs/fr/tools-reference#lsp-tool-behavior).159Lorsque vous activez un [plugin d'intelligence de code](/docs/fr/discover-plugins#code-intelligence), Claude obtient l'[outil LSP](/docs/fr/tools-reference#lsp-tool-behavior).

159 160 

160<h4 id="when-plugin-changes-apply">161<h4 id="when-plugin-changes-apply">

161 Quand les changements de plugin s'appliquent162 Quand les changements de plugin s'appliquent

162</h4>163</h4>

163 164 

164Claude Code applique un changement de plugin quand vous exécutez [`/reload-plugins`](/docs/fr/discover-plugins#apply-plugin-changes-without-restarting) ou démarrez une nouvelle session. Vous payez le coût, qu'il s'agisse d'annonces ajoutées ou d'une relecture complète, au premier tour après l'application du changement, pas quand vous exécutez `/plugin enable` ou `/plugin disable`. Claude Code peut également appliquer un changement de son propre chef dans trois cas :165Un changement que vous effectuez dans le menu `/plugin` passe par [`/reload-plugins`](/docs/fr/discover-plugins#apply-plugin-changes-without-restarting), que Claude Code exécute pour vous lorsque vous fermez le menu. Vous payez le coût, qu'il s'agisse d'annonces ajoutées ou d'une relecture complète, au premier tour après l'application du changement. Claude Code peut également appliquer un changement de son propre chef :

165 166 

166* Pour un plugin avec une source `command`, Claude Code [peut recharger le plugin lui-même](/docs/fr/plugin-marketplaces#when-claude-code-re-runs-the-command).167* Pour un plugin avec une source `command`, Claude Code [peut recharger le plugin lui-même](/docs/fr/plugin-marketplaces#when-claude-code-re-runs-the-command).

167* Quand vous [installez un plugin à partir de l'interface `/plugin`](/docs/fr/discover-plugins#install-plugins), Claude Code peut l'activer pendant l'installation. Claude Code vous indique dans le résumé d'installation s'il l'a fait ou s'il faut exécuter `/reload-plugins`.168* Lorsque vous [installez un plugin à partir de l'interface `/plugin`](/docs/fr/discover-plugins#install-plugins), Claude Code peut l'activer pendant l'installation. Le résumé d'installation vous indique s'il l'a fait.

168* Quand vous [déplacez la session avec `/cd`](/docs/fr/permissions#move-the-session-to-another-directory) sur v2.1.246 ou ultérieur, Claude Code applique les plugins que les paramètres du nouveau répertoire activent dans le cadre du déplacement, sans l'avertissement de relecture complète qui accompagne un `/reload-plugins`.169* Lorsque vous [déplacez la session avec `/cd`](/docs/fr/permissions#move-the-session-to-another-directory) sur v2.1.246 ou ultérieur, Claude Code applique les plugins que les paramètres du nouveau répertoire activent dans le cadre du déplacement, sans l'avertissement de relecture complète qui retient un `/reload-plugins`.

170* Dans les sessions interactives, lorsque vous ajoutez ou supprimez un plugin dans un [dossier de plugins](/docs/fr/plugins#test-your-plugins-locally) que vous avez transmis avec `--plugin-dir`, le changement s'applique immédiatement. Si l'appliquer déclencherait une relecture complète, Claude Code retient le changement à la place et affiche un avis pour exécuter `/reload-plugins`. Nécessite Claude Code v2.1.265 ou ultérieur.

171 

172Lorsque `/reload-plugins` s'exécute et que la recharge déclencherait une relecture complète, Claude Code affiche un avertissement et n'applique pas la recharge. Exécutez `/reload-plugins --force` pour l'appliquer de toute façon.

173 

174`/reload-plugins` s'exécute également dans les sessions sans terminal interactif, comme l'application de bureau, le SDK Agent, et le [mode non interactif](/docs/fr/headless) avec `-p`, lorsque vous le tapez directement dans la session. Nécessite Claude Code v2.1.260 ou ultérieur.

169 175 

170Quand vous exécutez `/reload-plugins` et que le rechargement déclencherait une relecture complète, Claude Code affiche un avertissement et n'applique pas le rechargement. Réexécutez-le avec `--force` pour appliquer le rechargement de toute façon.176Dans ces sessions, la recharge applique tout sauf les changements de serveur MCP de plugin, qui [prennent effet dans votre session suivante](/docs/fr/discover-plugins#apply-plugin-changes-without-restarting) et ne coûtent donc jamais une relecture complète en cours de session.

171 177 

172<h4 id="plugins-you-enable-and-then-disable-in-one-session">178<h4 id="plugins-you-enable-and-then-disable-in-one-session">

173 Plugins que vous activez puis désactivez dans une session179 Plugins que vous activez puis désactivez dans une session

174</h4>180</h4>

175 181 

176Quand vous désactivez un plugin que vous avez activé plus tôt dans la session, Claude Code restaure la forme de requête précédente. Si ce préfixe se trouve toujours dans sa [durée de vie du cache](#cache-lifetime), la requête suivante lit l'entrée de cache plus ancienne au lieu de la reconstruire.182Lorsque vous désactivez un plugin que vous avez activé plus tôt dans la session, Claude Code restaure la forme de demande précédente. Si ce préfixe se trouve toujours dans sa [durée de vie du cache](#cache-lifetime), la demande suivante lit l'entrée de cache plus ancienne au lieu de la reconstruire.

177 183 

178<h3 id="denying-an-entire-tool">184<h3 id="denying-an-entire-tool">

179 Refuser un outil entier185 Refus d'un outil entier

180</h3>186</h3>

181 187 

182Ajouter un nom d'outil simple comme `Bash` ou `WebFetch` comme [règle de refus](/docs/fr/permissions#manage-permissions) supprime cet outil du contexte de Claude entièrement. Claude Code charge les définitions d'outils intégrés dans la couche du prompt système, donc ajouter ou supprimer l'une de ces règles en cours de session invalide le cache. Claude Code applique le changement à la requête suivante, que vous l'ajoutiez via `/permissions` ou en [éditant un fichier de paramètres directement](/docs/fr/settings#when-edits-take-effect). Cela inclut une règle que vous ajoutez via `/permissions` au milieu d'un tour.188L'ajout d'un nom d'outil nu comme `Bash` ou `WebFetch` comme [règle de refus](/docs/fr/permissions#manage-permissions) supprime cet outil du contexte de Claude entièrement. Claude Code charge les définitions d'outils intégrés dans la couche d'invite système, donc l'ajout ou la suppression de l'une de ces règles en cours de session invalide le cache. Claude Code applique le changement à la demande suivante, que vous ajoutiez la règle via `/permissions` ou en [éditant directement un fichier de paramètres](/docs/fr/settings#when-edits-take-effect). Cela inclut une règle que vous ajoutez via `/permissions` au milieu d'un tour.

183 189 

184Seule une règle de refus qui correspond à la position du nom d'outil a cet effet : un nom d'outil simple, la forme équivalente `Bash(*)`, ou un [glob de nom d'outil](/docs/fr/permissions#tool-name-wildcards) comme `"*"`. Un glob qui correspond uniquement aux outils MCP, comme `"mcp__*"`, supprime ces outils de la même manière mais laisse le cache intact quand les outils correspondants sont [différés](#connecting-or-disconnecting-an-mcp-server), la valeur par défaut, puisque les définitions différées n'étaient jamais dans le préfixe mis en cache. Les règles de refus délimitées comme `Bash(rm *)`, et toutes les règles d'autorisation et de demande, ne changent pas les outils que Claude voit. Claude Code les vérifie quand Claude tente un appel, laissant le préfixe intact.190Seule une règle de refus qui correspond à la position du nom d'outil a cet effet : un nom d'outil nu, la forme équivalente `Bash(*)`, ou un [glob de nom d'outil](/docs/fr/permissions#tool-name-wildcards) comme `"*"`. Un glob qui correspond uniquement aux outils MCP, comme `"mcp__*"`, supprime ces outils de la même manière mais laisse le cache intact lorsque les outils correspondants sont [différés](#connecting-or-disconnecting-an-mcp-server), la valeur par défaut, puisque les définitions différées n'étaient jamais dans le préfixe mis en cache. Les règles de refus délimitées comme `Bash(rm *)`, et toutes les règles d'autorisation et de demande, ne changent pas les outils que Claude voit. Claude Code les vérifie lorsque Claude tente un appel, laissant le préfixe intact.

185 

186<h3 id="changing-output-style">

187 Modifier le style de sortie

188</h3>

189 

190Le [style de sortie](/docs/fr/output-styles) fait partie du prompt système. Quand vous changez de style en cours de session avec `/config` ou le paramètre `outputStyle`, Claude utilise le nouveau style à partir de votre message suivant, et cette requête lit l'historique de conversation entier sans cache hits. Pour garder ce coût petit, changez de style avant votre premier message dans une session ou juste après `/clear` ou `/compact`, quand il y a peu ou pas d'historique de conversation à relire.

191 

192Avant la v2.1.251, un changement de style en cours de session conservait le cache mais ne s'appliquait qu'après avoir exécuté `/clear` ou démarré une nouvelle session.

193 191 

194<h3 id="compacting-the-conversation">192<h3 id="compacting-the-conversation">

195 Compacter la conversation193 Compactage de la conversation

196</h3>194</h3>

197 195 

198La [compaction](/docs/fr/context-window#what-survives-compaction) remplace votre historique de messages par un résumé. Par conception, cela invalide la couche conversation, puisque la requête suivante a un nouvel historique plus court qui ne partage pas de préfixe avec l'ancien. Claude Code réutilise la couche du prompt système et recharge le contexte du projet à partir du disque, qui ne cache que si CLAUDE.md et la mémoire sont inchangés depuis le début de la session.196[Le compactage](/docs/fr/context-window#what-survives-compaction) remplace votre historique de messages par un résumé. Par conception, cela invalide la couche de conversation, puisque la demande suivante a un nouvel historique plus court qui ne partage pas de préfixe avec l'ancien. Claude Code réutilise la couche d'invite système sauf si la conversation a été [reprise tout en conservant une invite système qui aurait autrement changé](#resuming-a-session) ; dans ce cas, le premier compactage bascule vers l'invite actuelle et cette couche se reconstruit une fois. Il recharge le contexte du projet à partir du disque, qui ne met en cache que si CLAUDE.md et la mémoire sont inchangés depuis le début de la session.

199 197 

200Pour produire le résumé, Claude Code envoie une requête unique avec le même prompt système, les mêmes outils et le même historique que votre conversation, plus une instruction de résumé ajoutée comme dernier message utilisateur. Tant que le cache est chaud, cette requête lit votre préfixe à partir du cache, donc une `/compact` en cours de session coûte une fraction de ce que la taille du contexte suggère et passe la plupart de son temps à générer le résumé.198Pour produire le résumé, Claude Code envoie une demande séparée avec la même invite système, les mêmes outils et le même historique que votre conversation, plus une instruction de résumé ajoutée comme dernier message utilisateur. Tant que le cache est chaud, cette demande lit votre préfixe à partir du cache, donc un `/compact` en cours de session coûte une fraction de ce que la taille du contexte suggère et passe la plupart de son temps à générer le résumé.

201 199 

202Après une pause plus longue que la [durée de vie du cache](#cache-lifetime), il n'y a pas de cache à lire, donc la requête de résumé retraite l'historique complet en tant qu'entrée non mise en cache. C'est pourquoi `/compact` coûte le plus quand vous [reprenez une ancienne session](/docs/fr/sessions#resume-from-a-summary). Dans les deux cas, chaud et froid, le tour après compaction reconstruit le cache de conversation uniquement pour le résumé beaucoup plus court, donc ce tour n'est pas la partie lente.200Après une pause plus longue que la [durée de vie du cache](#cache-lifetime), il n'y a plus de cache à lire, donc la demande de résumé retraite l'historique complet en tant qu'entrée non mise en cache. C'est pourquoi `/compact` coûte le plus cher lorsque vous [reprenez une ancienne session](/docs/fr/sessions#resume-from-a-summary). Dans les deux cas, chaud et froid, le tour après compactage reconstruit le cache de conversation pour seulement le résumé beaucoup plus court, donc ce tour n'est pas la partie lente.

203 201 

204<Tip>202<Tip>

205 La compaction joue en votre faveur quand le contexte que vous abandonnez est du contenu dont vous n'avez plus besoin. Pour choisir quand son surcoût se produit, exécutez `/compact` à une pause naturelle dans votre travail, comme entre les tâches, au lieu d'attendre que la compaction automatique se déclenche en cours de tâche. Si vous avez suivi un chemin que vous voulez abandonner entièrement, [`/rewind`](#rewinding-the-conversation) à un tour antérieur à la place. Le rembobinage tronque jusqu'à un préfixe qui est déjà en cache, plutôt que de construire un nouveau comme le fait la compaction.203 Le compactage joue en votre faveur lorsque le contexte que vous rejetez est du contenu dont vous n'avez plus besoin. Pour choisir quand son surcharge se produit, exécutez `/compact` à une pause naturelle dans votre travail, par exemple entre les tâches, au lieu d'attendre que le compactage automatique se déclenche en cours de tâche. Si vous avez suivi un chemin que vous voulez abandonner entièrement, [`/rewind`](#rewinding-the-conversation) à un tour antérieur à la place. Le rembobinage tronque jusqu'à un préfixe qui est déjà mis en cache, plutôt que d'en construire un nouveau comme le fait le compactage.

206</Tip>204</Tip>

207 205 

208<h3 id="accumulating-many-images">206<h3 id="accumulating-many-images">

209 Accumuler de nombreuses images207 Accumulation de nombreuses images

210</h3>208</h3>

211 209 

212L'API limite le nombre d'images et de PDF que chaque requête peut contenir. Pour les chiffres actuels, voir [Limites de requête](https://platform.claude.com/docs/en/build-with-claude/vision#request-limits) dans la documentation de l'API. Claude Code limite également la taille totale des images et des PDF dans une requête, donc les grandes captures d'écran atteignent la limite avec moins d'images que les petites.210L'API limite le nombre d'images et de PDF que chaque demande peut contenir. Pour les chiffres actuels, voir [Limites de demande](https://platform.claude.com/docs/en/build-with-claude/vision#request-limits) dans la documentation de l'API. Claude Code limite également la taille totale des images et des PDF dans une demande, donc les grandes captures d'écran atteignent la limite avec moins d'images que les petites.

213 211 

214Quand la requête suivante dépasserait l'une ou l'autre limite, Claude Code supprime un lot des images et des PDF les plus anciens de ce qu'il envoie, ce qui libère de la place pour plus avant d'avoir besoin d'en supprimer à nouveau. Claude ne peut plus voir les images supprimées. Si Claude en a besoin à nouveau, partagez-la à nouveau.212Lorsque la demande suivante dépasserait l'une ou l'autre limite, Claude Code supprime un lot des images et PDF les plus anciennes de ce qu'il envoie, ce qui libère de la place pour plus avant d'avoir besoin d'en supprimer à nouveau. Claude ne peut plus voir les images supprimées. Si Claude en a besoin à nouveau, partagez-la à nouveau.

215 213 

216Supprimer des images change les messages qui les contenaient, donc la requête suivante retraite la conversation à partir du plus ancien de ces messages. Parce que Claude Code supprime un lot à la fois, vous voyez un tour plus lent par lot plutôt qu'un avec chaque nouvelle capture d'écran.214La suppression d'images change les messages qui les contenaient, donc la demande suivante retraite la conversation à partir du plus ancien de ces messages. Parce que Claude Code supprime un lot à la fois, vous voyez un tour plus lent par lot plutôt qu'un avec chaque nouvelle capture d'écran.

217 215 

218<h3 id="upgrading-claude-code">216<h3 id="upgrading-claude-code">

219 Mettre à niveau Claude Code217 Mise à niveau de Claude Code

220</h3>218</h3>

221 219 

222Une nouvelle version de Claude Code met généralement à jour le prompt système ou les définitions d'outils, donc la première requête après une mise à niveau reconstruit le cache à partir du début. La [mise à jour automatique](/docs/fr/setup#auto-updates) télécharge les nouvelles versions en arrière-plan mais les applique au prochain lancement, jamais en cours de session, donc vous voyez cela comme un premier tour sans cache après redémarrage plutôt qu'une surprise pendant une session. Définissez `DISABLE_AUTOUPDATER=1` pour contrôler quand les mises à niveau s'appliquent.220Une nouvelle version de Claude Code met généralement à jour l'invite système ou les définitions d'outils, donc la première conversation que vous démarrez après une mise à niveau construit son cache à partir du début. [La mise à jour automatique](/docs/fr/setup#auto-updates) télécharge les nouvelles versions en arrière-plan mais les applique au prochain lancement, jamais en cours de session, donc vous voyez cela comme un premier tour non mis en cache après redémarrage plutôt qu'une surprise pendant une session. Définissez `DISABLE_AUTOUPDATER=1` pour contrôler quand les mises à niveau s'appliquent.

223 221 

224<Note>222<Note>

225 [Reprendre une session](/docs/fr/sessions#resume-a-session) après une mise à niveau retraite l'historique de conversation entier sans cache hits, puisque l'historique se trouve maintenant derrière un prompt système différent. Le coût s'adapte à la longueur de la conversation reprise, donc le premier tour de retour dans une longue session peut être la requête la plus coûteuse que vous envoyez.223 Pour ce qu'il en coûte de reprendre une conversation que vous avez commencée avant la mise à niveau, voir [Reprise d'une session](#resuming-a-session).

226</Note>224</Note>

227 225 

228<h2 id="actions-that-keep-the-cache">226<h2 id="actions-that-keep-the-cache">

229 Actions qui conservent le cache227 Actions qui conservent le cache

230</h2>228</h2>

231 229 

232Ces actions ajoutent soit à la fin de la conversation, soit ne touchent pas du tout la requête. Certaines d'entre elles, comme éditer CLAUDE.md, conservent le cache pour la même raison que le changement ne parvient pas à la session en cours jusqu'à `/clear`, `/compact`, ou un redémarrage.230Ces actions ajoutent à la fin de la conversation ou ne touchent pas du tout à la requête. Certaines d'entre elles, comme l'édition de CLAUDE.md, conservent le cache pour la même raison que le changement n'atteint pas la session en cours jusqu'à `/clear`, `/compact` ou un redémarrage.

233 231 

234* [Éditer des fichiers dans votre référentiel](#editing-files-in-your-repository)232* [Édition de fichiers dans votre référentiel](#editing-files-in-your-repository)

235* [Éditer CLAUDE.md en cours de session](#editing-claude-md-mid-session)233* [Édition de CLAUDE.md en cours de session](#editing-claude-md-mid-session)

236* [Changer le mode de permission](#changing-permission-mode)234* [Modification du mode de permission](#changing-permission-mode)

237* [Invoquer des compétences et des commandes](#invoking-skills-and-commands)235* [Modification du style de sortie](#changing-output-style)

238* [Exécuter `/recap`](#running-%2Frecap)236* [Invocation de skills et de commandes](#invoking-skills-and-commands)

239* [Rembobiner la conversation](#rewinding-the-conversation)237* [Exécution de `/recap`](#running-%2Frecap)

240* [Générer un sous-agent](#subagents-and-the-cache)238* [Rembobinage de la conversation](#rewinding-the-conversation)

239* [Génération d'un sous-agent](#subagents-and-the-cache)

241 240 

242<h3 id="editing-files-in-your-repository">241<h3 id="editing-files-in-your-repository">

243 Éditer des fichiers dans votre référentiel242 Édition de fichiers dans votre référentiel

244</h3>243</h3>

245 244 

246Le contenu des fichiers entre en contexte uniquement quand Claude les lit, et les lectures s'ajoutent à la conversation. Éditer un fichier que Claude a précédemment lu ne change pas rétroactivement la lecture antérieure dans l'historique. Au lieu de cela, Claude Code ajoute un `<system-reminder>` notant que le fichier a changé, et Claude le relit si nécessaire.245Le contenu des fichiers entre en contexte uniquement lorsque Claude les lit, et les lectures s'ajoutent à la conversation. L'édition d'un fichier que Claude a précédemment lu ne change pas rétroactivement la lecture antérieure dans l'historique. Au lieu de cela, Claude Code ajoute un `<system-reminder>` notant que le fichier a changé, et Claude le relit si nécessaire.

247 246 

248<h3 id="editing-claude-md-mid-session">247<h3 id="editing-claude-md-mid-session">

249 Éditer CLAUDE.md en cours de session248 Édition de CLAUDE.md en cours de session

250</h3>249</h3>

251 250 

252Vos fichiers CLAUDE.md au niveau de la racine du projet et au niveau utilisateur sont lus une fois au démarrage de la session et conservés en mémoire. Les éditer en cours de session n'invalide pas le cache, mais l'édition ne s'applique pas non plus. Claude continue de travailler avec la version qui a été chargée au démarrage de la session. Le nouveau contenu se charge au prochain `/clear`, `/compact`, ou redémarrage.251Vos fichiers CLAUDE.md au niveau du projet-root et au niveau utilisateur sont lus une fois au démarrage de la session et conservés en mémoire. Les éditer en cours de session n'invalide pas le cache, mais l'édition ne s'applique pas non plus. Claude continue de travailler avec la version qui a été chargée au démarrage de la session. Le nouveau contenu se charge au prochain `/clear`, `/compact` ou redémarrage.

253 252 

254Les [fichiers CLAUDE.md imbriqués dans les sous-répertoires](/docs/fr/memory) et les [règles avec frontmatter `paths:`](/docs/fr/memory#path-specific-rules) se chargent plus tard, quand Claude lit pour la première fois un fichier correspondant. Éditer un avant qu'il se charge prend effet. Après son chargement, le contenu fait partie de l'historique de conversation, donc une édition en cours de session ne le change pas rétroactivement.253[Les fichiers CLAUDE.md imbriqués dans les sous-répertoires](/docs/fr/memory) et [les règles avec frontmatter `paths:`](/docs/fr/memory#path-specific-rules) se chargent plus tard, lorsque Claude lit pour la première fois un fichier correspondant. L'édition d'un avant qu'il ne se charge prend effet. Après son chargement, le contenu fait partie de l'historique de la conversation, donc une édition en cours de session ne le change pas rétroactivement.

255 254 

256<h3 id="changing-permission-mode">255<h3 id="changing-permission-mode">

257 Changer le mode de permission256 Modification du mode de permission

258</h3>257</h3>

259 258 

260Basculer entre les [modes de permission](/docs/fr/permission-modes), comme du défaut à accepter les éditions, ne change pas le prompt système ou les définitions d'outils, donc les changements de mode sont sûrs pour le cache. L'exception est le mode plan avec le paramètre de modèle [`opusplan`](/docs/fr/model-config#opusplan-model-setting), qui bascule le modèle entre Opus et Sonnet quand vous entrez ou quittez le mode plan. Cela rend le basculement de mode un [changement de modèle](#switching-models).259Le passage entre [les modes de permission](/docs/fr/permission-modes), par exemple de Manuel à accepter les éditions, ne change pas l'invite système ou les définitions d'outils, donc les changements de mode sont sûrs pour le cache. L'exception est le mode plan avec le paramètre de modèle [`opusplan`](/docs/fr/model-config#opusplan-model-setting), qui bascule le modèle entre Opus et Sonnet lorsque vous entrez ou quittez le mode plan. Cela rend le basculement de mode un [changement de modèle](#switching-models).

260 

261<h3 id="changing-output-style">

262 Modification du style de sortie

263</h3>

264 

265Lorsque vous changez [les styles de sortie](/docs/fr/output-styles) en cours de session avec `/config` ou le paramètre `outputStyle`, Claude utilise le nouveau style à partir de votre prochain message. Claude Code fournit les instructions du nouveau style sous forme de message dans la conversation, donc cette requête lit toujours l'invite système et la conversation antérieure à partir du cache.

266 

267Avant la v2.1.251, un changement de style en cours de session conservait le cache mais ne s'appliquait pas jusqu'à ce que vous exécutiez `/clear` ou démarriez une nouvelle session.

261 268 

262<h3 id="invoking-skills-and-commands">269<h3 id="invoking-skills-and-commands">

263 Invoquer des compétences et des commandes270 Invocation de skills et de commandes

264</h3>271</h3>

265 272 

266Les [compétences](/docs/fr/skills) et les [commandes](/docs/fr/commands) injectent leurs instructions comme messages utilisateur au point d'invocation. Rien d'antérieur dans la conversation ne change.273[Les skills](/docs/fr/skills) et [les commandes](/docs/fr/commands) injectent leurs instructions sous forme de messages utilisateur au point d'invocation. Rien d'antérieur dans la conversation ne change. Un skill ou une commande dont le frontmatter nomme un `model` peut être un [changement de modèle](#switching-models) pour ce tour.

267 274 

268<h3 id="running-/recap">275<h3 id="running-/recap">

269 Exécuter `/recap`276 Exécution de `/recap`

270</h3>277</h3>

271 278 

272[`/recap`](/docs/fr/interactive-mode#session-recap) génère un résumé pour l'affichage dans votre terminal. Contrairement à `/compact`, il ajoute le résumé comme sortie de commande plutôt que de remplacer votre historique de messages, de sorte que le préfixe en cache reste intact.279[`/recap`](/docs/fr/interactive-mode#session-recap) génère un résumé pour l'affichage dans votre terminal. Contrairement à `/compact`, il ajoute le résumé en tant que sortie de commande plutôt que de remplacer votre historique de messages, donc le préfixe mis en cache reste intact.

273 280 

274<h3 id="rewinding-the-conversation">281<h3 id="rewinding-the-conversation">

275 Rembobiner la conversation282 Rembobinage de la conversation

276</h3>283</h3>

277 284 

278[`/rewind`](/docs/fr/checkpointing) tronque votre conversation jusqu'à un tour antérieur. L'historique restant est le même contenu à partir duquel le cache a été construit à ce moment, et les couches du prompt système et du contexte du projet sont inchangées, donc la requête suivante atteint l'entrée de cache antérieure. Chaque tour depuis a lu ce préfixe, ce qui a gardé l'entrée active même si le tour original était plus loin que le TTL.285[`/rewind`](/docs/fr/checkpointing) tronque votre conversation jusqu'à un tour antérieur. L'historique restant est le même contenu à partir duquel le cache a été construit à ce moment-là, et l'invite système et les couches de contexte du projet sont inchangées, donc la requête suivante atteint l'entrée de cache antérieure. Chaque tour depuis lors a lu ce préfixe, ce qui a maintenu l'entrée active même si le tour original était plus ancien que le TTL.

286 

287La restauration des points de contrôle de fichiers aux côtés de la conversation n'a aucun effet séparé sur le cache. Le contenu des fichiers entre en contexte uniquement lorsque Claude les lit, de la même manière que [l'édition de fichiers dans votre référentiel](#editing-files-in-your-repository).

288 

289<h2 id="resuming-a-session">

290 Reprendre une session

291</h2>

292 

293Lorsque vous [reprenez une session](/docs/fr/sessions#resume-a-session), Claude Code renvoie l'intégralité de la conversation, et la demande lit à partir du cache la partie de son préfixe qui n'a pas changé et qui se situe toujours dans la [durée de vie du cache](#cache-lifetime). Le tableau des couches en haut de cette page indique ce qui change à chaque couche.

279 294 

280Restaurer les points de contrôle de fichiers aux côtés de la conversation n'a aucun effet séparé sur le cache. Le contenu des fichiers entre en contexte uniquement quand Claude les lit, comme [éditer des fichiers dans votre référentiel](#editing-files-in-your-repository).295L'invite système changerait après une [mise à niveau de Claude Code](#upgrading-claude-code) ou avec un texte [`--append-system-prompt`](/docs/fr/cli-reference#system-prompt-flags) différent lors de la reprise. Par défaut, la conversation reprise conserve l'invite système avec laquelle elle a commencé, de sorte que son historique se situe toujours derrière la même invite, et la modification prend effet une fois que la conversation est compactée ou dans une nouvelle conversation. [Les indicateurs d'invite système dans les conversations reprises](/docs/fr/cli-reference#system-prompt-flags-in-resumed-conversations) couvre `--system-prompt-snapshot off` et le mode nu, où cela ne s'applique pas.

281 296 

282<h2 id="cache-lifetime">297<h2 id="cache-lifetime">

283 Durée de vie du cache298 Durée de vie du cache


337 Portée du cache352 Portée du cache

338</h2>353</h2>

339 354 

340Dans Claude Code, le cache est effectivement limité à une machine et un répertoire. Le prompt système intègre le répertoire de travail, la plateforme, le shell, la version du système d'exploitation, et les chemins de mémoire automatique, donc deux sessions dans des répertoires différents construisent des préfixes différents et manquent le cache de l'autre. Cela inclut les worktrees du même référentiel, puisque chaque worktree a son propre répertoire de travail.355Dans Claude Code, le cache est effectivement limité à une machine et un répertoire. Chaque conversation porte le répertoire de travail, la plateforme, le shell, et la version du système d'exploitation, et le prompt système nomme vos chemins de mémoire automatique, donc deux sessions dans des répertoires différents construisent des préfixes différents et manquent le cache de l'autre. Cela inclut les worktrees du même référentiel, puisque chaque worktree a son propre répertoire de travail.

341 356 

342Les sessions que vous exécutez en parallèle dans le même répertoire construisent des préfixes correspondants et lisent le cache de l'autre. Les sessions séquentielles partagent le préfixe uniquement quand l'instantané du statut git au démarrage correspond, puisque le prompt système capture également la branche et les commits récents.357Les sessions que vous exécutez en parallèle dans le même répertoire construisent des préfixes correspondants et lisent le cache de l'autre. Les sessions séquentielles partagent le préfixe uniquement quand l'instantané du statut git au démarrage correspond, puisque chaque conversation porte également la branche et les commits récents de cet instantané.

343 358 

344Le cache API sous-jacent est plus large. Les caches sont isolés entre les organisations, et sur certains fournisseurs, [entre les espaces de travail au sein d'une organisation](https://platform.claude.com/docs/fr/build-with-claude/prompt-caching#cache-storage-and-sharing). Dans ces limites, deux requêtes quelconques avec le même modèle et préfixe lisent le même cache. Pour les appelants du SDK Agent exécutant des flottes de processus automatisés, voir [améliorer le prompt caching entre les utilisateurs et les machines](/docs/fr/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) pour supprimer les sections par machine du prompt système et partager le cache entre les machines.359Le cache API sous-jacent est plus large. Les caches sont isolés entre les organisations, et sur certains fournisseurs, [entre les espaces de travail au sein d'une organisation](https://platform.claude.com/docs/fr/build-with-claude/prompt-caching#cache-storage-and-sharing). Dans ces limites, deux requêtes quelconques avec le même modèle et préfixe lisent le même cache. Pour les appelants du SDK Agent exécutant des flottes de processus automatisés, voir [améliorer le prompt caching entre les utilisateurs et les machines](/docs/fr/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) pour supprimer les sections par machine du prompt système et partager le cache entre les machines.

345 360 


376 391 

377* **Copies de session** : une session que vous [copiez avec `/fork`](/docs/fr/agent-view#copy-the-session-with-%2Ffork) reçoit son instruction d'isolation en tant que message à la fin de la conversation copiée, donc le cache que la conversation originale a construit reste intact.392* **Copies de session** : une session que vous [copiez avec `/fork`](/docs/fr/agent-view#copy-the-session-with-%2Ffork) reçoit son instruction d'isolation en tant que message à la fin de la conversation copiée, donc le cache que la conversation originale a construit reste intact.

378* **Compaction** : l'appel de résumé décrit dans [Compacter la conversation](#compacting-the-conversation) utilise la même approche de partage de préfixe.393* **Compaction** : l'appel de résumé décrit dans [Compacter la conversation](#compacting-the-conversation) utilise la même approche de partage de préfixe.

394* **Sous-agents repris** : quand Claude [reprend un sous-agent](/docs/fr/sub-agents#resume-subagents), la première requête de l'exécution reprise peut lire le cache que l'exécution originale a réchaufé.

379* **Fan-outs de workflow** : dans un [fan-out de workflow](/docs/fr/workflows#prompt-caching-in-a-fan-out) d'agents de même préfixe, Claude Code retient tous sauf le premier pendant jusqu'à 5 secondes par défaut, donc leurs premières requêtes peuvent lire le préfixe que le premier agent a mis en cache.395* **Fan-outs de workflow** : dans un [fan-out de workflow](/docs/fr/workflows#prompt-caching-in-a-fan-out) d'agents de même préfixe, Claude Code retient tous sauf le premier pendant jusqu'à 5 secondes par défaut, donc leurs premières requêtes peuvent lire le préfixe que le premier agent a mis en cache.

380 396 

381<h2 id="disable-prompt-caching">397<h2 id="disable-prompt-caching">

quickstart.md +13 −13

Details

27 Étape 1 : Installer Claude Code27 Étape 1 : Installer Claude Code

28</h2>28</h2>

29 29 

30To install Claude Code, use one of the following methods:30Pour installer Claude Code, utilisez l'une des méthodes suivantes :

31 31 

32<Tabs>32<Tabs>

33 <Tab title="Native Install (Recommended)">33 <Tab title="Installation native (recommandée)">

34 **macOS, Linux, WSL:**34 **macOS, Linux, WSL :**

35 35 

36 ```bash theme={null}36 ```bash theme={null}

37 curl -fsSL https://claude.ai/install.sh | bash37 curl -fsSL https://claude.ai/install.sh | bash

38 ```38 ```

39 39 

40 **Windows PowerShell:**40 **Windows PowerShell :**

41 41 

42 ```powershell theme={null}42 ```powershell theme={null}

43 irm https://claude.ai/install.ps1 | iex43 irm https://claude.ai/install.ps1 | iex

44 ```44 ```

45 45 

46 **Windows CMD:**46 **Windows CMD :**

47 47 

48 ```batch theme={null}48 ```batch theme={null}

49 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd49 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

50 ```50 ```

51 51 

52 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.52 Si vous voyez `The token '&&' is not a valid statement separator`, vous êtes dans PowerShell, pas dans CMD. Si vous voyez `'irm' is not recognized as an internal or external command`, vous êtes dans CMD, pas dans PowerShell. Votre invite affiche `PS C:\` quand vous êtes dans PowerShell et `C:\` sans le `PS` quand vous êtes dans CMD.

53 53 

54 If the install command fails with `syntax error near unexpected token '<'`, a `403`, or another curl error, see [Troubleshoot installation](/docs/en/troubleshoot-install#find-your-error) to match the error to a fix and for alternative install methods.54 Si la commande d'installation échoue avec `syntax error near unexpected token '<'`, un `403`, ou une autre erreur curl, consultez [Dépannage de l'installation](/docs/fr/troubleshoot-install#find-your-error) pour faire correspondre l'erreur à une solution et pour connaître les méthodes d'installation alternatives.

55 55 

56 [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.56 [Git for Windows](https://git-scm.com/downloads/win) est recommandé sur Windows natif afin que Claude Code puisse utiliser l'outil Bash. Si Git for Windows n'est pas installé, Claude Code utilise PowerShell comme outil shell à la place. Les configurations WSL n'ont pas besoin de Git for Windows.

57 57 

58 <Info>58 <Info>

59 Native installations automatically update in the background to keep you on the latest version.59 Les installations natives se mettent à jour automatiquement en arrière-plan pour vous maintenir à jour avec la dernière version.

60 </Info>60 </Info>

61 </Tab>61 </Tab>

62 62 


65 brew install --cask claude-code65 brew install --cask claude-code

66 ```66 ```

67 67 

68 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.68 Homebrew propose deux casks. `claude-code` suit le canal de version stable, qui est généralement environ une semaine en retard et ignore les versions avec des régressions majeures. `claude-code@latest` suit le canal le plus récent et reçoit les nouvelles versions dès qu'elles sont publiées.

69 69 

70 <Info>70 <Info>

71 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.71 Les installations Homebrew ne se mettent pas à jour automatiquement. Exécutez `brew upgrade claude-code` ou `brew upgrade claude-code@latest`, selon le cask que vous avez installé, pour obtenir les dernières fonctionnalités et correctifs de sécurité.

72 </Info>72 </Info>

73 </Tab>73 </Tab>

74 74 


78 ```78 ```

79 79 

80 <Info>80 <Info>

81 WinGet installations do not auto-update. Run `winget upgrade Anthropic.ClaudeCode` periodically to get the latest features and security fixes.81 Les installations WinGet ne se mettent pas à jour automatiquement. Exécutez `winget upgrade Anthropic.ClaudeCode` périodiquement pour obtenir les dernières fonctionnalités et correctifs de sécurité.

82 </Info>82 </Info>

83 </Tab>83 </Tab>

84</Tabs>84</Tabs>

85 85 

86You can also install with [apt, dnf, or apk](/docs/en/setup#install-with-linux-package-managers) on Debian, Fedora, RHEL, and Alpine.86Vous pouvez également installer avec [apt, dnf, ou apk](/docs/fr/setup#install-with-linux-package-managers) sur Debian, Fedora, RHEL et Alpine.

87 87 

88Pour confirmer que l'installation a fonctionné, exécutez :88Pour confirmer que l'installation a fonctionné, exécutez :

89 89 

remote-control.md +37 −25

Details

52 claude remote-control52 claude remote-control

53 ```53 ```

54 54 

55 Jusqu'à ce que vous acceptiez la confirmation unique de Remote Control, `claude remote-control` explique ce qu'il fait et demande `Enable Remote Control? (y/n)` avant de démarrer le serveur. Répondez `y` pour accepter et démarrer le serveur. Si vous refusez, Claude Code se ferme sans démarrer le serveur et demande à nouveau la prochaine fois que vous exécutez la commande.

56 

55 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.57 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.

56 58 

57 Drapeaux disponibles :59 Drapeaux disponibles :


108 110 

109 Cela démarre une session Remote Control qui reprend votre historique de conversation actuel.111 Cela démarre une session Remote Control qui reprend votre historique de conversation actuel.

110 112 

113 Jusqu'à ce que vous acceptiez la confirmation unique de Remote Control, une boîte de dialogue apparaît avant que `/remote-control` se connecte. Sélectionnez **Enable Remote Control** pour accepter et vous connecter. Si vous sélectionnez **Never mind** ou appuyez sur Échap, Claude Code ne se connecte pas et demande à nouveau la prochaine fois que vous exécutez `/remote-control`.

114 

111 Les drapeaux `--verbose`, `--sandbox` et `--no-sandbox` ne sont pas disponibles avec cette commande.115 Les drapeaux `--verbose`, `--sandbox` et `--no-sandbox` ne sont pas disponibles avec cette commande.

112 </Tab>116 </Tab>

113 117 


128 Vérifier l'état de la connexion132 Vérifier l'état de la connexion

129</h3>133</h3>

130 134 

131Dans une session de terminal interactive, un indicateur `/rc active` se trouve dans le pied de page sous la zone de saisie tandis que la connexion est active, et est masqué si le terminal est trop étroit pour le contenir. Le texte de l'indicateur est un lien vers la session sur claude.ai. Sélectionnez-le avec la flèche vers le bas et appuyez sur Entrée, ou exécutez `/remote-control` à nouveau, pour ouvrir un panneau d'état avec l'URL de la session et un code QR que vous pouvez utiliser pour [vous connecter depuis un autre appareil](#connect-from-another-device). Le panneau d'état offre également une option de déconnexion. Sélectionnez-la pour désactiver Remote Control ; votre session locale continue de s'exécuter dans le terminal.135Dans une session de terminal interactive, un indicateur `/rc active` s'affiche tandis que la connexion est active, et est masqué si le terminal est trop étroit pour le contenir. Avec le [rendu en plein écran](/docs/fr/fullscreen), il se trouve à la fin de la ligne du répertoire de travail dans l'en-tête de démarrage, et sans lui, dans le pied de page sous la zone de saisie.

132 136 

133Si la connexion échoue, Claude Code affiche une notification avec la raison de l'échec et bascule l'indicateur à un état d'échec qui reste dans le pied de page. Pour relire la raison, sélectionnez l'indicateur avec la flèche vers le bas et appuyez sur Entrée. Pour vous reconnecter, exécutez `/remote-control`, sauf si la [raison indique que la session a été reprise ou s'est terminée ailleurs, ou que le serveur ne peut pas la trouver](#session-ended-elsewhere).137Le texte de l'indicateur est un lien vers la session sur claude.ai. Exécutez `/remote-control` à nouveau pour ouvrir un panneau d'état avec l'URL de la session et un code QR pour [vous connecter depuis un autre appareil](#connect-from-another-device). Lorsque l'indicateur se trouve dans le pied de page, vous pouvez également ouvrir le panneau en sélectionnant l'indicateur avec la flèche vers le bas et en appuyant sur Entrée. Le panneau offre également une option de déconnexion, qui désactive Remote Control tandis que votre session locale continue de s'exécuter dans le terminal.

138 

139Si la connexion échoue, Claude Code affiche une notification avec la raison de l'échec, ajoute une ligne d'avertissement avec la raison à la conversation, et bascule l'indicateur à un état d'échec qui reste en place. Pour vous reconnecter, exécutez `/remote-control`, sauf si la [raison indique que la session a été reprise ou s'est terminée ailleurs, ou que le serveur ne peut pas la trouver](#session-ended-elsewhere).

134 140 

135<span id="session-ended-elsewhere" />Lisez la raison avant de vous reconnecter. Lorsque la session a été reprise ou s'est terminée depuis un autre appareil, une autre application ou une autre session Claude Code, ou que le serveur ne peut pas la trouver, la raison indique laquelle, et Claude Code omet ses conseils habituels pour exécuter `/remote-control` :141<span id="session-ended-elsewhere" />Lisez la raison avant de vous reconnecter. Lorsque la session a été reprise ou s'est terminée depuis un autre appareil, une autre application ou une autre session Claude Code, ou que le serveur ne peut pas la trouver, la raison indique laquelle, et Claude Code omet ses conseils habituels pour exécuter `/remote-control` :

136 142 


182 188 

183* **Compaction et `/clear`** : tandis que Claude Code [compacte la conversation](/docs/fr/context-window#what-survives-compaction), les appareils connectés affichent la progression et ensuite où la conversation a été compactée. Lorsque vous exécutez `/clear`, la conversation se réinitialise également sur les appareils connectés.189* **Compaction et `/clear`** : tandis que Claude Code [compacte la conversation](/docs/fr/context-window#what-survives-compaction), les appareils connectés affichent la progression et ensuite où la conversation a été compactée. Lorsque vous exécutez `/clear`, la conversation se réinitialise également sur les appareils connectés.

184* **Basculer les conversations avec `/resume`** : l'appareil connecté ne reçoit pas le titre de la conversation basculée ou l'historique antérieur, mais les nouveaux messages dans les deux sens vont vers et depuis la conversation ouverte dans votre terminal. Pour travailler à nouveau sur la conversation d'origine depuis l'appareil, exécutez `/resume` dans votre terminal et revenez à celle-ci.190* **Basculer les conversations avec `/resume`** : l'appareil connecté ne reçoit pas le titre de la conversation basculée ou l'historique antérieur, mais les nouveaux messages dans les deux sens vont vers et depuis la conversation ouverte dans votre terminal. Pour travailler à nouveau sur la conversation d'origine depuis l'appareil, exécutez `/resume` dans votre terminal et revenez à celle-ci.

191* **Tirer une session avec `/teleport`** : lorsque vous tirez une [session Claude Code sur le web](/docs/fr/claude-code-on-the-web) dans votre terminal avec `/teleport`, l'appareil connecté ne reçoit pas l'historique antérieur de la conversation tirée. Les nouveaux messages dans les deux sens vont vers et depuis la conversation tirée, qui est maintenant celle ouverte dans votre terminal.

185* **Messages de vos autres sessions** : avec la [messagerie entre sessions](/docs/fr/cross-session-messaging), la même connexion porte les messages entre vos propres sessions sur différentes machines et depuis vos sessions [Claude Code sur le web](/docs/fr/claude-code-on-the-web), via les serveurs Anthropic comme le reste du trafic Remote Control. [Envoyer des messages aux sessions sur d'autres machines](/docs/fr/cross-session-messaging#message-sessions-on-other-machines) couvre les règles de livraison et [Contrôler les messages entrants](/docs/fr/cross-session-messaging#control-inbound-messages) couvre les contrôles entrants. Nécessite Claude Code v2.1.224 ou version ultérieure.192* **Messages de vos autres sessions** : avec la [messagerie entre sessions](/docs/fr/cross-session-messaging), la même connexion porte les messages entre vos propres sessions sur différentes machines et depuis vos sessions [Claude Code sur le web](/docs/fr/claude-code-on-the-web), via les serveurs Anthropic comme le reste du trafic Remote Control. [Envoyer des messages aux sessions sur d'autres machines](/docs/fr/cross-session-messaging#message-sessions-on-other-machines) couvre les règles de livraison et [Contrôler les messages entrants](/docs/fr/cross-session-messaging#control-inbound-messages) couvre les contrôles entrants. Nécessite Claude Code v2.1.224 ou version ultérieure.

186* **Messages que vous envoyez en milieu de tour** : lorsque vous envoyez un message depuis un appareil connecté avant la fin du tour actuel, Claude Code le met en file d'attente et le conserve dans la transcription de l'appareil après la fin de ce tour.193* **Messages que vous envoyez en milieu de tour** : lorsque vous envoyez un message depuis un appareil connecté avant la fin du tour actuel, Claude Code le met en file d'attente et le conserve dans la transcription de l'appareil après la fin de ce tour.

187* **Diff de vos modifications** : lorsque le répertoire de la session se trouve dans un référentiel git, le volet diff d'un appareil connecté affiche le diff de vos modifications non validées. L'appareil demande le diff sur la connexion, et Claude Code le calcule sur votre machine. Lorsque votre arborescence de travail est propre, Claude Code sert plutôt les modifications de votre branche depuis qu'elle a divergé de la branche par défaut. Avant v2.1.247, Claude Code signalait le diff aux appareils connectés uniquement dans les sessions servies par `claude remote-control`.194* **Diff de vos modifications** : lorsque le répertoire de la session se trouve dans un référentiel git, le volet diff d'un appareil connecté affiche le diff de vos modifications non validées. L'appareil demande le diff sur la connexion, et Claude Code le calcule sur votre machine. Lorsque votre arborescence de travail est propre, Claude Code sert plutôt les modifications de votre branche depuis qu'elle a divergé de la branche par défaut. Avant v2.1.247, Claude Code signalait le diff aux appareils connectés uniquement dans les sessions servies par `claude remote-control`.

188* **Modèle** : lorsque vous choisissez un [modèle](/docs/fr/model-config) depuis un appareil connecté, Claude Code exécute la session sur ce modèle. Le sélecteur `/model` du terminal, `/status` et `/config` affichent ce modèle. Un choix depuis le contrôle de modèle de l'appareil dure uniquement pour la session actuelle. `/model <name>` envoyé depuis l'appareil définit également votre défaut pour les nouvelles sessions, comme le taper dans le terminal.195* **Modèle** : lorsque vous choisissez un [modèle](/docs/fr/model-config) depuis un appareil connecté, Claude Code exécute la session sur ce modèle. Le sélecteur `/model` du terminal, `/status` et `/config` affichent ce modèle. Nécessite Claude Code v2.1.238 ou version ultérieure.

189* **Niveau d'effort** : lorsque vous définissez le [niveau d'effort](/docs/fr/model-config#adjust-effort-level) depuis un appareil connecté, avec `/effort` ou le contrôle d'effort de l'appareil, Claude Code l'applique à la session sur votre machine, et claude.ai/code affiche le niveau que la session utilise. Si vous avez épinglé un niveau avec `CLAUDE_CODE_EFFORT_LEVEL`, la session conserve ce niveau, et Claude Code refuse un choix différent du contrôle d'effort. Un niveau que vous choisissez depuis le contrôle d'effort s'applique uniquement à la session actuelle et ne change pas votre défaut enregistré. Choisir un niveau depuis le contrôle d'effort nécessite Claude Code v2.1.234 ou version ultérieure sur votre machine.196 * Un modèle que vous choisissez depuis le contrôle de modèle de l'appareil s'applique uniquement à la session actuelle. Lorsque vous envoyez `/model <name>` depuis l'appareil à une session interactive, Claude Code définit également votre défaut pour les nouvelles sessions.

197 * Si vous envoyez un nom que Claude Code ne reconnaît pas, comme un nom d'affichage où un ID de modèle est attendu, Claude Code [refuse le choix](/docs/fr/errors#model-is-not-a-recognized-model-id) et la session conserve son modèle actuel. Avant v2.1.260, Claude Code enregistrait un choix non reconnu depuis le contrôle de modèle de l'appareil, et votre prochain message échouait.

198* **Niveau d'effort** : lorsque vous définissez le [niveau d'effort](/docs/fr/model-config#adjust-effort-level) depuis un appareil connecté, avec `/effort` ou le contrôle d'effort de l'appareil, Claude Code l'applique à la session sur votre machine, et claude.ai/code affiche le niveau que la session utilise. Si vous avez épinglé un niveau avec `CLAUDE_CODE_EFFORT_LEVEL`, la session conserve ce niveau, et Claude Code refuse un choix différent du contrôle d'effort. Choisir un niveau depuis le contrôle d'effort nécessite Claude Code v2.1.234 ou version ultérieure sur votre machine.

190* **Reconnexion après une défaillance de connexion** : exécutez `/remote-control` pour vous reconnecter. Si la compaction a réécrit la conversation ou que vous avez basculé les conversations avec `/resume` entre-temps, Claude Code archive la session serveur qu'il utilisait au lieu de la laisser dans la liste des sessions. Vous pouvez toujours la trouver en [filtrant les sessions archivées](/docs/fr/claude-code-on-the-web#archive-sessions). Basculer les conversations tandis qu'un appareil est toujours connecté n'archive pas la session.199* **Reconnexion après une défaillance de connexion** : exécutez `/remote-control` pour vous reconnecter. Si la compaction a réécrit la conversation ou que vous avez basculé les conversations avec `/resume` entre-temps, Claude Code archive la session serveur qu'il utilisait au lieu de la laisser dans la liste des sessions. Vous pouvez toujours la trouver en [filtrant les sessions archivées](/docs/fr/claude-code-on-the-web#archive-sessions). Basculer les conversations tandis qu'un appareil est toujours connecté n'archive pas la session.

191 200 

192<h3 id="enable-remote-control-for-all-sessions">201<h3 id="enable-remote-control-for-all-sessions">


234 243 

235Votre 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.244Votre 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.

236 245 

237Tout 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.246Tout 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. Lorsque la credential d'enregistrement d'un serveur `claude remote-control` expire, le serveur s'enregistre à nouveau auprès de l'API Anthropic et continue de servir ses sessions.

238 247 

239Pendant que Remote Control est connecté, la transcription de session, y compris vos messages, les réponses de Claude et l'activité des outils, est stockée sur les serveurs Anthropic. La transcription stockée maintient la conversation synchronisée sur vos appareils et permet à la session de se reconnecter après une interruption réseau. L'exécution et l'accès au système de fichiers restent sur votre machine, et les transcriptions stockées sont conservées selon la politique de [Utilisation des données](/docs/fr/data-usage).248Pendant que Remote Control est connecté, la transcription de session, y compris vos messages, les réponses de Claude et l'activité des outils, est stockée sur les serveurs Anthropic. La transcription stockée maintient la conversation synchronisée sur vos appareils et permet à la session de se reconnecter après une interruption réseau. L'exécution et l'accès au système de fichiers restent sur votre machine, et les transcriptions stockées sont conservées selon la politique de [Utilisation des données](/docs/fr/data-usage).

240 249 


353 362 

354* **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.363* **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.

355* **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 met hors ligne jusqu'à ce que vous la [rétablissiez](#resume-sessions-after-stopping-the-server). Sauf si Claude est en train d'effectuer une tâche, claude.ai et l'application Claude affichent la session comme hors ligne quelques secondes après la fermeture du processus. Pour maintenir une session en cours d'exécution sur une machine distante après vous être déconnecté de SSH, démarrez-la dans `tmux` ou `screen`.364* **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 met hors ligne jusqu'à ce que vous la [rétablissiez](#resume-sessions-after-stopping-the-server). Sauf si Claude est en train d'effectuer une tâche, claude.ai et l'application Claude affichent la session comme hors ligne quelques secondes après la fermeture du processus. Pour maintenir une session en cours d'exécution sur une machine distante après vous être déconnecté de SSH, démarrez-la dans `tmux` ou `screen`.

356* **Sessions plantées en mode serveur** : si une session servie par `claude remote-control` plante, envoyez-lui un message à partir d'un appareil connecté. Claude Code la sert à nouveau. Vous n'avez pas besoin de redémarrer le serveur.365* **Sessions plantées en mode serveur** : si une session servie par `claude remote-control` plante, envoyez-lui un message à partir d'un appareil connecté. Claude Code la sert à nouveau. Vous n'avez pas besoin de redémarrer le serveur. Nécessite Claude Code v2.1.238 ou ultérieur.

357* **Refus HTTP 403 sur une session connectée** : une fois qu'une session interactive est connectée, Claude Code continue à réessayer pendant trois minutes au maximum lorsque quelque chose entre votre machine et les serveurs d'Anthropic répond avec HTTP 403, ce qui peut se produire après un changement de VPN ou de réseau. Si les refus durent plus longtemps, Claude Code se déconnecte, et la raison indique ce qui a refusé : un edge réseau, ou un proxy, VPN, ou pare-feu sur votre propre réseau.366* **Refus HTTP 403 sur une session connectée** : une fois qu'une session interactive est connectée, Claude Code continue à réessayer pendant trois minutes au maximum lorsque quelque chose entre votre machine et les serveurs d'Anthropic répond avec HTTP 403, ce qui peut se produire après un changement de VPN ou de réseau. Si les refus durent plus longtemps, Claude Code se déconnecte, et la raison indique ce qui a refusé : un edge réseau, ou un proxy, VPN, ou pare-feu sur votre propre réseau.

358* **Panne réseau prolongée** : si votre machine est allumée mais incapable d'atteindre le réseau, ce que vous faites ensuite dépend du mode :367* **Panne réseau prolongée** : si votre machine est allumée mais incapable d'atteindre le réseau, ce que vous faites ensuite dépend du mode :

359 * **Mode serveur** : Claude Code abandonne après environ 10 minutes et le processus `claude remote-control` se termine. Exécutez `claude remote-control` à nouveau pour démarrer une nouvelle session.368 * **Mode serveur** : Claude Code abandonne après environ 10 minutes et le processus `claude remote-control` se termine. Exécutez `claude remote-control` à nouveau pour démarrer une nouvelle session.

360 * **Session interactive** : continuez à travailler localement. Claude Code réessaye aussi longtemps que la panne dure et se reconnecte automatiquement lorsque le réseau revient.369 * **Session interactive** : continuez à travailler localement. Claude Code réessaye aussi longtemps que la panne dure et se reconnecte automatiquement lorsque le réseau revient.

361* **Battements de cœur de présence échouant** : si une session interactive se déconnecte avec `could not reach the Remote Control server for about 30 minutes`, exécutez `/remote-control` pour vous reconnecter. Claude Code affiche ce message uniquement lorsque les battements de cœur de présence de la session ont échoué tandis que le reste de la connexion est resté actif ; il réenregistre la session pendant environ 30 minutes avant de se déconnecter.370* **Battements de cœur de présence échouant** : si une session interactive se déconnecte avec `could not reach the Remote Control server for about 30 minutes`, exécutez `/remote-control` pour vous reconnecter. Claude Code affiche ce message uniquement lorsque les battements de cœur de présence de la session ont échoué tandis que le reste de la connexion est resté actif ; il réenregistre la session pendant environ 30 minutes avant de se déconnecter.

362* **Les dialogues transférés expirent** : Claude Code maintient les invites de permission et les questions `AskUserQuestion` ouvertes jusqu'à ce que vous y répondiez. Lorsque Claude Code transfère un autre type de dialogue à la session distante, comme l'invite de sélection de modèle affichée après un refus de sécurité, il attend cinq minutes par défaut, puis ferme le dialogue et continue avec la valeur par défaut sans action du dialogue. L'invite de consentement [Fable usage-credits](/docs/fr/model-config#fable-and-usage-credits) en milieu de session suit la même limite mais n'est pas transférée : Claude Code l'affiche uniquement dans le terminal où la session s'exécute, et si personne n'a répondu là-bas avant la limite, elle termine le tour sans envoyer la demande. Votre sélection de modèle est inchangée, et Claude Code demande à nouveau lors de votre prochain message. Définissez [`dialogExpiry`](/docs/fr/settings-reference#dialogexpiry) pour ajuster ou désactiver la limite. Nécessite Claude Code v2.1.224 ou ultérieur. Claude Code applique la même limite au dialogue d'approbation pour un message de session croisée maintenu. [Les règles d'expiration des messages maintenus](/docs/fr/cross-session-messaging#control-inbound-messages) couvrent les cas où Claude Code maintient le dialogue ouvert au-delà.371* **Les dialogues transférés expirent** : Claude Code maintient les invites de permission et les questions `AskUserQuestion` ouvertes jusqu'à ce que vous y répondiez. Lorsque Claude Code transfère un autre type de dialogue à la session distante, comme l'invite de sélection de modèle affichée après un refus de sécurité, il attend cinq minutes par défaut, puis ferme le dialogue et continue avec la valeur par défaut sans action du dialogue. Définissez [`dialogExpiry`](/docs/fr/settings-reference#dialogexpiry) pour ajuster ou désactiver la limite. Nécessite Claude Code v2.1.224 ou ultérieur.

372* **L'invite de consentement Fable usage-credits n'est pas transférée** : Claude Code affiche l'invite de consentement [Fable usage-credits](/docs/fr/model-config#fable-and-usage-credits) en milieu de session uniquement où la session s'exécute, pas sur votre appareil. Lorsque la session s'exécute dans un terminal et que personne là-bas ne répond avant que Claude Code ne ferme l'invite, le tour se termine sans envoyer la demande ; voir [L'invite de confirmation n'a pas reçu de réponse](/docs/fr/errors#the-prompt-to-confirm-went-unanswered).

363* **Certaines commandes sont locales uniquement** : les commandes qui s'exécutent uniquement dans l'interface du terminal, telles que `/plugin` ou `/resume`, fonctionnent uniquement à partir de la CLI locale, que vous transmettiez un argument ou non. Les commandes suivantes fonctionnent à partir du mobile et du web :373* **Certaines commandes sont locales uniquement** : les commandes qui s'exécutent uniquement dans l'interface du terminal, telles que `/plugin` ou `/resume`, fonctionnent uniquement à partir de la CLI locale, que vous transmettiez un argument ou non. Les commandes suivantes fonctionnent à partir du mobile et du web :

364 * Commandes de sortie textuelle : `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/usage-credits` (affiche l'URL de facturation au lieu d'ouvrir un navigateur), `/recap`, `/reload-plugins`374 * Commandes de sortie textuelle : `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/usage-credits`, `/recap`, et `/reload-plugins`. `/usage-credits` affiche l'URL de facturation au lieu d'ouvrir un navigateur. `/reload-plugins` fonctionne uniquement lorsque la session s'exécute dans un terminal interactif ; une session sans celui-ci le refuse.

365 * `/model`, `/effort`, `/fast`, `/color`, et `/rename` : transmettez la valeur en tant qu'argument, par exemple `/model sonnet` ou `/effort high`. À partir du mobile et du web, `/model` et `/effort` prennent l'argument à la place du sélecteur du terminal ou du curseur.375 * `/model`, `/effort`, `/fast`, `/color`, et `/rename` : transmettez la valeur en tant qu'argument, par exemple `/model sonnet` ou `/effort high`. À partir du mobile et du web, `/model` et `/effort` prennent l'argument à la place du sélecteur du terminal ou du curseur.

366 * `/mcp` : à partir de l'application mobile, retourne un résumé textuel de l'état du serveur au lieu d'ouvrir le sélecteur. Sur le web, `/mcp` seul ouvre un répertoire des [connecteurs claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai) au lieu de retourner le résumé. Les [sous-commandes](/docs/fr/commands#all-commands) `reconnect`, `enable`, et `disable` fonctionnent à partir des deux. Contrairement à la CLI locale, `/mcp reconnect` sans nom de serveur reconnecte tous les serveurs qui ont échoué ou nécessitent une authentification.376 * `/mcp` : à partir de l'application mobile, retourne un résumé textuel de l'état du serveur au lieu d'ouvrir le sélecteur. Sur le web, `/mcp` seul ouvre un répertoire des [connecteurs claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai) au lieu de retourner le résumé. Les sous-commandes `reconnect`, `enable`, et `disable` [](/docs/fr/commands#all-commands) fonctionnent à partir des deux. Contrairement à la CLI locale, `/mcp reconnect` sans nom de serveur reconnecte tous les serveurs qui ont échoué ou nécessitent une authentification.

367 * `/config`, à partir de la v2.1.181 : à partir de l'application mobile, transmettez `key=value` pour définir un paramètre, ou exécutez-le sans argument pour lister les clés que vous pouvez définir. Sur le web, `/config` ouvre la section Claude Code de vos paramètres à la place, et ignore le texte après la commande.377 * `/config`, à partir de la v2.1.181 : à partir de l'application mobile, transmettez `key=value` pour définir un paramètre, ou exécutez-le sans argument pour lister les clés que vous pouvez définir. Sur le web, `/config` ouvre la section Claude Code de vos paramètres à la place, et ignore le texte après la commande.

368 * Sur Team et Enterprise, `/usage-credits` à partir du mobile ou du web n'envoie pas une [demande usage-credits à votre administrateur](/docs/fr/costs#add-usage-credits-to-your-subscription). L'envoi nécessite une confirmation qui n'apparaît que dans la CLI interactive, donc la commande vous dit de l'exécuter là à la place. Avant la v2.1.211, le formulaire textuel envoyait la demande sans confirmation.378 * Sur Team et Enterprise, `/usage-credits` à partir du mobile ou du web n'envoie pas une [demande usage-credits à votre administrateur](/docs/fr/costs#add-usage-credits-to-your-subscription). L'envoi nécessite une confirmation qui n'apparaît que dans la CLI interactive, donc la commande vous dit de l'exécuter là à la place. Avant la v2.1.211, le formulaire textuel envoyait la demande sans confirmation.

369 * `/autocompact`, à partir de la v2.1.221 : transmettez la taille de la fenêtre en tant qu'argument, par exemple `/autocompact 500k`. Sans argument, il affiche la taille de fenêtre actuelle sous forme de texte au lieu d'ouvrir le dialogue que la commande affiche dans une session de terminal.379 * `/autocompact`, à partir de la v2.1.221 : transmettez la taille de la fenêtre en tant qu'argument, par exemple `/autocompact 500k`. Sans argument, il affiche la taille de fenêtre actuelle sous forme de texte au lieu d'ouvrir le dialogue que la commande affiche dans une session de terminal.

380 * `/advisor`, à partir de la v2.1.260 : transmettez le modèle en tant qu'argument, par exemple `/advisor opus`, ou transmettez `off` pour désactiver le conseiller. Les deux formes s'appliquent à la session actuelle uniquement et laissent votre valeur par défaut enregistrée inchangée. Sans argument, il affiche le conseiller actuel sous forme de texte au lieu d'ouvrir le sélecteur.

370 381 

371<h2 id="troubleshooting">382<h2 id="troubleshooting">

372 Dépannage383 Dépannage


376 « Remote Control requires a claude.ai subscription »387 « Remote Control requires a claude.ai subscription »

377</h3>388</h3>

378 389 

379Vous 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.390Vous n'êtes pas authentifié avec un compte claude.ai, ou une autre accréditation prend le pas sur votre connexion. Le message prend l'une de ces formes :

391 

392* Déconnecté, depuis `/remote-control` ou `--remote-control` : `Remote Control requires a claude.ai subscription.`

393* Déconnecté, depuis `claude remote-control` : `You must be logged in to use Remote Control. Remote Control is only available with claude.ai subscriptions.`

394* Connecté, mais une clé API ou un jeton est en cours d'utilisation : `Remote Control requires claude.ai subscription auth.` suivi de l'accréditation en cours d'utilisation, comme `ANTHROPIC_API_KEY is set, so this session is using API-key auth`. Un paramètre `apiKeyHelper` et `ANTHROPIC_AUTH_TOKEN` sont nommés de la même manière.

395 

396Exécutez `claude auth login` et choisissez l'option claude.ai. Si le message nomme `ANTHROPIC_API_KEY` ou `ANTHROPIC_AUTH_TOKEN`, supprimez-le partout où il est défini : votre environnement shell ou le bloc `env` d'un [fichier de paramètres](/docs/fr/settings-reference#env). S'il nomme `apiKeyHelper`, supprimez ce paramètre.

380 397 

381Avant la v2.1.206, l'exécution de `/remote-control` alors que vous étiez déconnecté signalait `Unknown command: /remote-control` au lieu de ce message.398Avant la v2.1.206, l'exécution de `/remote-control` alors que vous étiez déconnecté signalait `Unknown command: /remote-control` au lieu de ce message.

382 399 


431* **L'erreur mentionne `disableRemoteControl`** : votre administrateur informatique a désactivé Remote Control sur cet appareil via les [paramètres gérés](/docs/fr/managed-settings), indépendamment du bouton à l'échelle de l'organisation et de la façon dont vous êtes connecté.448* **L'erreur mentionne `disableRemoteControl`** : votre administrateur informatique a désactivé Remote Control sur cet appareil via les [paramètres gérés](/docs/fr/managed-settings), indépendamment du bouton à l'échelle de l'organisation et de la façon dont vous êtes connecté.

432* **Votre plan claude.ai est Pro ou Max** : Claude Code est toujours connecté sous une organisation Team ou Enterprise d'une connexion antérieure, il vérifie donc la politique Remote Control de cette organisation. Exécutez `/status` pour voir quel plan et quelle organisation votre connexion utilise. Exécutez `claude auth logout` puis `claude auth login` pour vous reconnecter sous votre plan actuel.449* **Votre plan claude.ai est Pro ou Max** : Claude Code est toujours connecté sous une organisation Team ou Enterprise d'une connexion antérieure, il vérifie donc la politique Remote Control de cette organisation. Exécutez `/status` pour voir quel plan et quelle organisation votre connexion utilise. Exécutez `claude auth logout` puis `claude auth login` pour vous reconnecter sous votre plan actuel.

433* **La politique organisationnelle n'a pas été chargée sur cette machine** : exécutez `claude doctor` et lisez la ligne `Organization policy`. Si la ligne montre que la politique n'est pas chargée, c'est ce qui maintient Remote Control désactivé. Avant la v2.1.261, `claude doctor` n'affichait pas cette ligne.450* **La politique organisationnelle n'a pas été chargée sur cette machine** : exécutez `claude doctor` et lisez la ligne `Organization policy`. Si la ligne montre que la politique n'est pas chargée, c'est ce qui maintient Remote Control désactivé. Avant la v2.1.261, `claude doctor` n'affichait pas cette ligne.

451* **Le message ne dit pas de contacter votre administrateur d'organisation** : votre organisation a une configuration HIPAA qui est incompatible avec Remote Control, et `/status` liste `HIPAA` dans sa ligne `Compliance`. Dans cet état, le bouton Remote Control du panneau d'administration est grisé, donc un propriétaire ne peut pas le modifier là. Contactez le support Anthropic pour discuter des options. Avant la v2.1.267, ce cas affichait « Remote Control isn't available for your organization due to its compliance policy » à la place.

434* **Sinon, un propriétaire ne l'a pas activé pour votre organisation** : Remote Control est désactivé par défaut sur les plans Team et Enterprise. Un propriétaire peut l'activer sur [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) en activant le bouton **Remote Control**. Ce bouton est un paramètre d'organisation côté serveur.452* **Sinon, un propriétaire ne l'a pas activé pour votre organisation** : Remote Control est désactivé par défaut sur les plans Team et Enterprise. Un propriétaire peut l'activer sur [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) en activant le bouton **Remote Control**. Ce bouton est un paramètre d'organisation côté serveur.

435 453 

436<h3 id="remote-control-isn’t-available-for-your-organization-due-to-its-compliance-policy">

437 « Remote Control isn't available for your organization due to its compliance policy »

438</h3>

439 

440Votre organisation a une configuration de rétention des données ou de conformité incompatible avec Remote Control ; la parenthèse à la fin du message la nomme. Dans cet état, le bouton Remote Control du panneau d'administration est grisé, donc un propriétaire ne peut pas le modifier là. Contactez le support Anthropic pour discuter des options.

441 

442<h3 id="remote-credentials-fetch-failed">454<h3 id="remote-credentials-fetch-failed">

443 « Remote credentials fetch failed »455 « Remote credentials fetch failed »

444</h3>456</h3>


508 Choisir la bonne approche520 Choisir la bonne approche

509</h2>521</h2>

510 522 

511Claude 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.523Claude Code offre plusieurs façons de travailler quand vous n'êtes pas à votre terminal. Elles diffèrent par ce qui déclenche le travail, où Claude s'exécute et la quantité de configuration dont vous avez besoin.

512 524 

513| | Trigger | Claude runs on | Setup | Best for |525| | Déclencheur | Claude s'exécute sur | Configuration | Idéal pour |

514| :------------------------------------------------------- | :--------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------ |526| :----------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------------- |

515| [Dispatch](/docs/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 |527| [Dispatch](/docs/fr/desktop#sessions-from-dispatch) | Envoyer une tâche depuis l'application mobile Claude | Votre machine (Desktop) | [Associer l'application mobile à Desktop](https://support.claude.com/en/articles/13947068) | Déléguer du travail quand vous êtes absent, configuration minimale |

516| [Remote Control](/docs/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 |528| [Remote Control](/docs/fr/remote-control) | Piloter une session en cours depuis [claude.ai/code](https://claude.ai/code) ou l'application mobile Claude | Votre machine (CLI ou VS Code) | Exécuter `claude remote-control` | Diriger le travail en cours depuis un autre appareil |

517| [Channels](/docs/en/channels) | Push events from a chat app like Telegram or Discord, or your own server | Your machine (CLI) | [Install a channel plugin](/docs/en/channels#quickstart) or [build your own](/docs/en/channels-reference) | Reacting to external events like CI failures or chat messages |529| [Channels](/docs/fr/channels) | Envoyer des événements depuis une application de chat comme Telegram ou Discord, ou votre propre serveur | Votre machine (CLI) | [Installer un plugin de canal](/docs/fr/channels#quickstart) ou [créer le vôtre](/docs/fr/channels-reference) | Réagir à des événements externes comme les échecs CI ou les messages de chat |

518| [Slack](/docs/en/slack) | Mention `@Claude` in a team channel | Anthropic cloud | [Install the Slack app](/docs/en/slack#setting-up-claude-code-in-slack) with [Claude Code on the web](/docs/en/claude-code-on-the-web) enabled | PRs and reviews from team chat |530| [Slack](/docs/fr/slack) | Mentionner `@Claude` dans un canal d'équipe | Cloud Anthropic | [Installer l'application Slack](/docs/fr/slack#setting-up-claude-code-in-slack) avec [Claude Code sur le web](/docs/fr/claude-code-on-the-web) activé | PRs et révisions depuis le chat d'équipe |

519| [Self-hosted environments](/docs/en/self-hosted-environments) | Start a [cloud session](/docs/en/claude-code-on-the-web) and pick your organization's environment | Your organization's infrastructure | [Deploy runners](/docs/en/self-hosted-environments-quickstart), on Team and Enterprise plans | Cloud sessions that must run inside your network |531| [Environnements auto-hébergés](/docs/fr/self-hosted-environments) | Démarrer une [session cloud](/docs/fr/claude-code-on-the-web) et choisir l'environnement de votre organisation | Infrastructure de votre organisation | [Déployer des runners](/docs/fr/self-hosted-environments-quickstart), sur les plans Team et Enterprise | Sessions cloud qui doivent s'exécuter dans votre réseau |

520| [Scheduled tasks](/docs/en/scheduled-tasks) | Set a schedule | [CLI](/docs/en/scheduled-tasks), [Desktop](/docs/en/desktop-scheduled-tasks), or [cloud](/docs/en/routines) | Pick a frequency | Recurring automation like daily reviews |532| [Tâches planifiées](/docs/fr/scheduled-tasks) | Définir un calendrier | [CLI](/docs/fr/scheduled-tasks), [Desktop](/docs/fr/desktop-scheduled-tasks), ou [cloud](/docs/fr/routines) | Choisir une fréquence | Automatisation récurrente comme les révisions quotidiennes |

521 533 

522<h2 id="related-resources">534<h2 id="related-resources">

523 Ressources connexes535 Ressources connexes

Details

181 181 

182[Claude Code sur le web](/docs/fr/claude-code-on-the-web) exécute chaque session dans une machine virtuelle isolée gérée par Anthropic. Un proxy réseau applique une liste blanche par défaut, et un proxy séparé détient votre token GitHub en dehors du sandbox tout en émettant des credentials limités pour l'accès au référentiel à l'intérieur. Les sessions que votre organisation achemine vers un [environnement auto-hébergé](/docs/fr/self-hosted-environments) s'exécutent sur l'infrastructure que vous provisionnez à la place, où l'isolation, le contrôle de sortie et les credentials git relèvent de la responsabilité de votre déploiement.182[Claude Code sur le web](/docs/fr/claude-code-on-the-web) exécute chaque session dans une machine virtuelle isolée gérée par Anthropic. Un proxy réseau applique une liste blanche par défaut, et un proxy séparé détient votre token GitHub en dehors du sandbox tout en émettant des credentials limités pour l'accès au référentiel à l'intérieur. Les sessions que votre organisation achemine vers un [environnement auto-hébergé](/docs/fr/self-hosted-environments) s'exécutent sur l'infrastructure que vous provisionnez à la place, où l'isolation, le contrôle de sortie et les credentials git relèvent de la responsabilité de votre déploiement.

183 183 

184Utilisez cette approche lorsque vous voulez une isolation VM complète sans provisionner l'infrastructure vous-même, ou lorsque vous déléguez des tâches à partir d'un appareil qui n'a pas d'environnement de développement local. Cela nécessite un abonnement Claude. Lorsque vous lancez une session à partir de l'interface web, vous avez également besoin d'un compte GitHub connecté pour que le sandbox puisse cloner votre référentiel. Lorsque vous lancez à partir de la CLI avec `--cloud`, Claude Code peut [regrouper et télécharger votre référentiel local](/docs/fr/claude-code-on-the-web#send-local-repositories-without-github) à la place si GitHub n'est pas connecté. Voir [Claude Code sur le web](/docs/fr/claude-code-on-the-web) pour la disponibilité du plan et les options d'authentification GitHub.184Utilisez cette approche lorsque vous voulez une isolation VM complète sans provisionner l'infrastructure vous-même, ou lorsque vous déléguez des tâches à partir d'un appareil qui n'a pas d'environnement de développement local. Cela nécessite un abonnement Claude. Lorsque vous lancez une session à partir de l'interface web, vous avez également besoin d'un compte GitHub connecté pour que le sandbox puisse cloner votre référentiel. Lorsque vous lancez à partir de la CLI avec `--cloud`, Claude Code peut [regrouper et télécharger votre référentiel local](/docs/fr/claude-code-on-the-web#send-local-repositories-without-github) à la place. Voir [Claude Code sur le web](/docs/fr/claude-code-on-the-web) pour la disponibilité du plan et les options d'authentification GitHub.

185 185 

186<h2 id="enforce-isolation-across-an-organization">186<h2 id="enforce-isolation-across-an-organization">

187 Appliquer l'isolation dans une organisation187 Appliquer l'isolation dans une organisation

sandboxing.md +9 −0

Details

52 52 

53Lorsque vous sélectionnez un mode dans le panneau, Claude Code l'enregistre dans les paramètres locaux de votre projet à `.claude/settings.local.json`, qui s'appliquent au projet actuel. Claude Code ajoute ce fichier à votre gitignore global lorsqu'il y enregistre un paramètre. Pour activer le sandbox dans tous vos projets, définissez [`sandbox.enabled`](/docs/fr/settings-reference#sandbox-enabled) sur `true` dans vos paramètres utilisateur à `~/.claude/settings.json`. Pour appliquer le sandboxing pour chaque développeur dans une organisation, utilisez [paramètres gérés](#enforce-sandboxing-with-managed-settings).53Lorsque vous sélectionnez un mode dans le panneau, Claude Code l'enregistre dans les paramètres locaux de votre projet à `.claude/settings.local.json`, qui s'appliquent au projet actuel. Claude Code ajoute ce fichier à votre gitignore global lorsqu'il y enregistre un paramètre. Pour activer le sandbox dans tous vos projets, définissez [`sandbox.enabled`](/docs/fr/settings-reference#sandbox-enabled) sur `true` dans vos paramètres utilisateur à `~/.claude/settings.json`. Pour appliquer le sandboxing pour chaque développeur dans une organisation, utilisez [paramètres gérés](#enforce-sandboxing-with-managed-settings).

54 54 

55Pour modifier le sandbox pour une seule session sans écrire dans un fichier de paramètres, démarrez Claude Code avec [`--settings`](/docs/fr/settings#change-a-setting-for-one-session). Par exemple, cette commande démarre une session sandboxée dans laquelle Claude ne peut pas réessayer une commande bloquée en dehors du sandbox :

56 

57```bash theme={null}

58claude --settings '{"sandbox": {"enabled": true, "allowUnsandboxedCommands": false}}'

59```

60 

55<Warning>61<Warning>

56 Par défaut, si le sandbox ne peut pas démarrer parce que les dépendances manquent ou que la plateforme n'est pas 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`](/docs/fr/settings-reference#sandbox-failifunavailable) sur `true`. Ceci est destiné aux déploiements gérés qui nécessitent le sandboxing comme porte de sécurité.62 Par défaut, si le sandbox ne peut pas démarrer parce que les dépendances manquent ou que la plateforme n'est pas 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`](/docs/fr/settings-reference#sandbox-failifunavailable) sur `true`. Ceci est destiné aux déploiements gérés qui nécessitent le sandboxing comme porte de sécurité.

57</Warning>63</Warning>


727 733 

728 Après l'échec, Claude peut [proposer de réexécuter la commande en dehors du sandbox](#the-unsandboxed-retry-escape-hatch) ; approuvez cette nouvelle tentative ou exécutez la commande git vous-même dans un autre terminal. Si vous avez défini `allowUnsandboxedCommands` sur `false`, Claude ne peut pas proposer la nouvelle tentative, alors exécutez la commande vous-même. Si la même commande git échoue souvent, ajoutez-la à [`excludedCommands`](/docs/fr/settings-reference#sandbox-excludedcommands).734 Après l'échec, Claude peut [proposer de réexécuter la commande en dehors du sandbox](#the-unsandboxed-retry-escape-hatch) ; approuvez cette nouvelle tentative ou exécutez la commande git vous-même dans un autre terminal. Si vous avez défini `allowUnsandboxedCommands` sur `false`, Claude ne peut pas proposer la nouvelle tentative, alors exécutez la commande vous-même. Si la même commande git échoue souvent, ajoutez-la à [`excludedCommands`](/docs/fr/settings-reference#sandbox-excludedcommands).

729* **Bubblewrap échoue à démarrer à l'intérieur d'un conteneur** : dans un conteneur sans privilèges, bubblewrap ne peut pas monter un système de fichiers `/proc` frais, donc les commandes sandboxées échouent avec une erreur `bwrap` telle que `Can't mount proc on /newroot/proc: Operation not permitted`. Définissez [`enableWeakerNestedSandbox`](/docs/fr/settings-reference#sandbox-enableweakernestedsandbox) sur `true` pour que le sandbox interne bind-monte le `/proc` existant du conteneur à la place. Utilisez ce paramètre uniquement lorsque le conteneur externe fournit déjà la limite d'isolation dont vous avez besoin, car il expose les informations de processus aux commandes sandboxées qu'un montage `/proc` frais cacherait.735* **Bubblewrap échoue à démarrer à l'intérieur d'un conteneur** : dans un conteneur sans privilèges, bubblewrap ne peut pas monter un système de fichiers `/proc` frais, donc les commandes sandboxées échouent avec une erreur `bwrap` telle que `Can't mount proc on /newroot/proc: Operation not permitted`. Définissez [`enableWeakerNestedSandbox`](/docs/fr/settings-reference#sandbox-enableweakernestedsandbox) sur `true` pour que le sandbox interne bind-monte le `/proc` existant du conteneur à la place. Utilisez ce paramètre uniquement lorsque le conteneur externe fournit déjà la limite d'isolation dont vous avez besoin, car il expose les informations de processus aux commandes sandboxées qu'un montage `/proc` frais cacherait.

736* **Les fichiers en lecture seule de 0 octet apparaissent aux chemins des paramètres `.claude`, et « Oui, et ne pas demander à nouveau » ne sauvegarde pas** : sur Linux et WSL2, le sandbox maintient un refus d'écriture sur un fichier qui n'existe pas encore en créant un espace réservé en lecture seule de 0 octet là-bas pendant qu'une commande sandboxée s'exécute. Le sandbox supprime l'espace réservé après. Si une session est tuée avant que ce nettoyage ne s'exécute, par exemple par SIGKILL, les espaces réservés restent. Les sessions ultérieures les lient en lecture seule à nouveau à chaque démarrage, donc une écriture de paramètres telle que l'enregistrement d'un choix de permission échoue là où l'un se trouve.

737 

738 Exécutez `claude doctor` pour lister les fichiers d'espace réservé restants. L'avertissement [`Stale sandbox mask files left by a killed session`](/docs/fr/errors#stale-sandbox-mask-files-left-by-a-killed-session) nomme jusqu'à trois d'entre eux et compte le reste. Supprimez chaque fichier avec `rm` tandis qu'aucune autre session Claude Code ne s'exécute dans ce projet. Avant v2.1.257, Claude Code laissait les mêmes espaces réservés derrière sans les signaler.

730* **`--dangerously-skip-permissions` échoue en tant que root** : cet indicateur est bloqué lors de l'exécution en tant que root ou via sudo sur Linux et macOS, car l'accès root combiné à aucune invite de permission peut modifier n'importe quel fichier ou service sur le système. La vérification est ignorée automatiquement à l'intérieur d'un sandbox reconnu. Pour exécuter de manière autonome dans un conteneur, utilisez la configuration [dev container](/docs/fr/devcontainer), qui exécute Claude Code en tant qu'utilisateur non-root.739* **`--dangerously-skip-permissions` échoue en tant que root** : cet indicateur est bloqué lors de l'exécution en tant que root ou via sudo sur Linux et macOS, car l'accès root combiné à aucune invite de permission peut modifier n'importe quel fichier ou service sur le système. La vérification est ignorée automatiquement à l'intérieur d'un sandbox reconnu. Pour exécuter de manière autonome dans un conteneur, utilisez la configuration [dev container](/docs/fr/devcontainer), qui exécute Claude Code en tant qu'utilisateur non-root.

731 740 

732<h2 id="limitations">741<h2 id="limitations">

scheduled-tasks.md +15 −15

Details

8 8 

9Les 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](/docs/fr/channels) : votre CI peut pousser l'échec directement dans la session. Pour maintenir la session en fonctionnement tour après tour jusqu'à ce qu'une condition soit remplie plutôt que sur un intervalle, consultez [`/goal`](/docs/fr/goal).9Les 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](/docs/fr/channels) : votre CI peut pousser l'échec directement dans la session. Pour maintenir la session en fonctionnement tour après tour jusqu'à ce qu'une condition soit remplie plutôt que sur un intervalle, consultez [`/goal`](/docs/fr/goal).

10 10 

11Les 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](/docs/fr/routines) pour créer une routine sur l'infrastructure gérée par Anthropic, configurez une [Tâche planifiée sur le bureau](/docs/fr/desktop-scheduled-tasks) ou utilisez [GitHub Actions](/docs/fr/github-actions).11Les tâches sont limitées à la session : elles vivent dans la conversation actuelle et s'arrêtent quand vous en commencez une nouvelle. Lorsque vous reprenez avec `--resume` ou `--continue`, Claude Code restaure les tâches qui n'ont pas [expiré](#seven-day-expiry), à l'exception de celles énumérées sous [Limitations](#limitations). Pour une planification qui survit indépendamment de toute session, utilisez [Routines](/docs/fr/routines) pour créer une routine sur le cloud, configurez une [Tâche planifiée sur le bureau](/docs/fr/desktop-scheduled-tasks) ou utilisez [GitHub Actions](/docs/fr/github-actions).

12 12 

13<h2 id="compare-scheduling-options">13<h2 id="compare-scheduling-options">

14 Comparer les options de planification14 Comparer les options de planification

15</h2>15</h2>

16 16 

17Claude Code offers three ways to schedule recurring or one-off work:17Claude Code offre trois façons de planifier des tâches récurrentes ou ponctuelles :

18 18 

19| | [Cloud](/docs/en/routines) | [Desktop](/docs/en/desktop-scheduled-tasks) | [`/loop`](/docs/en/scheduled-tasks) |19| | [Cloud](/docs/fr/routines) | [Desktop](/docs/fr/desktop-scheduled-tasks) | [`/loop`](/docs/fr/scheduled-tasks) |

20| :------------------------- | :---------------------------------- | :------------------------------------- | :------------------------------------------------------------------------- |20| :------------------------------------ | :----------------------------------- | :-------------------------------------------------- | :-------------------------------------------------------------------------- |

21| Runs on | Cloud, Anthropic-managed by default | Your machine | Your machine |21| S'exécute sur | Cloud, géré par Anthropic par défaut | Votre machine | Votre machine |

22| Requires machine on | No | Yes | Yes |22| Nécessite que la machine soit allumée | Non | Oui | Oui |

23| Requires open session | No | No | Yes |23| Nécessite une session ouverte | Non | Non | Oui |

24| Persistent across restarts | Yes | Yes | Restored on `--resume`, with [exceptions](/docs/en/scheduled-tasks#limitations) |24| Persistant après redémarrage | Oui | Oui | Restauré sur `--resume`, avec [exceptions](/docs/fr/scheduled-tasks#limitations) |

25| Access to local files | No (fresh clone) | Yes | Yes |25| Accès aux fichiers locaux | Non (clone frais) | Oui | Oui |

26| MCP servers | Connectors configured per task | [Config files](/docs/en/mcp) and connectors | Inherits from session |26| Serveurs MCP | Connecteurs configurés par tâche | [Fichiers de configuration](/docs/fr/mcp) et connecteurs | Hérité de la session |

27| Permission prompts | No (runs autonomously) | Configurable per task | Inherits from session |27| Invites de permission | Non (s'exécute de manière autonome) | Configurable par tâche | Hérité de la session |

28| Customizable schedule | Via `/schedule` in the CLI | Yes | Yes |28| Planification personnalisable | Via `/schedule` dans la CLI | Oui | Oui |

29| Minimum interval | 1 hour | 1 minute | 1 minute |29| Intervalle minimum | 1 heure | 1 minute | 1 minute |

30 30 

31<Tip>31<Tip>

32 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.32 Utilisez les **tâches cloud** pour les travaux qui doivent s'exécuter de manière fiable sans votre machine. Utilisez les **tâches Desktop** lorsque vous avez besoin d'accès aux fichiers et outils locaux. Utilisez **`/loop`** pour un sondage rapide pendant une session.

33</Tip>33</Tip>

34 34 

35<h2 id="run-a-prompt-repeatedly-with-/loop">35<h2 id="run-a-prompt-repeatedly-with-/loop">


237 237 

238* 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. [Mettre la session en arrière-plan](/docs/fr/agent-view#from-inside-a-session) transfère les tâches `/loop` vers une session en arrière-plan, qui continue de s'exécuter sans terminal.238* 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. [Mettre la session en arrière-plan](/docs/fr/agent-view#from-inside-a-session) transfère les tâches `/loop` vers une session en arrière-plan, qui continue de s'exécuter sans terminal.

239* 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é.239* 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é.

240* 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 récurrentes qui n'ont pas [expiré](#seven-day-expiry) 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.240* Démarrer une nouvelle conversation efface toutes les tâches limitées à la session. Quand vous reprenez une session avec `claude --resume` ou `claude --continue`, Claude Code restaure les tâches planifiées avec `CronCreate`, sauf les tâches récurrentes qui ont [expiré](#seven-day-expiry) et les tâches ponctuelles dont l'heure planifiée a passé. Une [boucle `/loop` à rythme personnel](#let-claude-choose-the-interval) n'est pas restaurée, donc exécutez `/loop` à nouveau pour la redémarrer. Les tâches Bash en arrière-plan et les tâches de surveillance ne sont jamais restaurées à la reprise.

241* Avec [la récupération des drapeaux de fonctionnalités désactivée](/docs/fr/env-vars#features-that-need-feature-flag-fetching), Claude Code stocke une tâche que vous avez demandé de conserver entre les sessions dans le répertoire `.claude` du projet. Quand ce répertoire ou le fichier de tâche qu'il contient est un lien symbolique, Claude Code retourne une erreur au lieu de planifier la tâche.241* Avec [la récupération des drapeaux de fonctionnalités désactivée](/docs/fr/env-vars#features-that-need-feature-flag-fetching), Claude Code stocke une tâche que vous avez demandé de conserver entre les sessions dans le répertoire `.claude` du projet. Quand ce répertoire ou le fichier de tâche qu'il contient est un lien symbolique, Claude Code retourne une erreur au lieu de planifier la tâche.

242 242 

243Pour l'automatisation pilotée par cron qui doit s'exécuter sans surveillance :243Pour l'automatisation pilotée par cron qui doit s'exécuter sans surveillance :

security.md +1 −1

Details

60* **Système de permissions** : En mode Manuel, les opérations sensibles nécessitent une approbation explicite60* **Système de permissions** : En mode Manuel, les opérations sensibles nécessitent une approbation explicite

61* **Analyse contextuelle** : Détecte les instructions potentiellement nuisibles en analysant la demande complète61* **Analyse contextuelle** : Détecte les instructions potentiellement nuisibles en analysant la demande complète

62* **Assainissement des entrées** : Prévient l'injection de commandes en traitant les entrées utilisateur62* **Assainissement des entrées** : Prévient l'injection de commandes en traitant les entrées utilisateur

63* **Approbation des commandes réseau** : Les commandes qui récupèrent du contenu sur le web comme `curl` et `wget` ne sont pas approuvées automatiquement par défaut. En mode Manuel, elles demandent une approbation comme n'importe quelle autre commande Bash non en lecture seule, vous pouvez donc toujours approuver une fois ou ajouter une règle d'autorisation explicite comme `Bash(curl *)`. Pour les bloquer entièrement, ajoutez-les à [`permissions.deny`](/docs/fr/permissions#tool-specific-permission-rules)63* **Approbation des commandes réseau** : Les commandes qui récupèrent du contenu sur le web comme `curl` et `wget` ne sont pas approuvées automatiquement par défaut. En mode Manuel, elles demandent une approbation comme n'importe quelle autre commande Bash non en lecture seule, vous pouvez donc toujours approuver une fois ou ajouter une règle d'autorisation explicite comme `Bash(curl *)`. Pour arrêter Claude d'exécuter ces commandes, ajoutez-les à [`permissions.deny`](/docs/fr/permissions#tool-specific-permission-rules). Une règle de refus correspond à la commande [telle qu'écrite](/docs/fr/permissions#bash-rule-limits) ; pour l'application du réseau qui ne dépend pas du texte de la commande, consultez [l'isolement du réseau sandbox](/docs/fr/sandboxing#network-isolation)

64 64 

65<h3 id="privacy-safeguards">65<h3 id="privacy-safeguards">

66 Protections de la vie privée66 Protections de la vie privée

Details

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

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

45 45 

46Vérifiez le résumé d'installation. S'il signale `Run /reload-plugins to activate.`, appliquez la modification en attente sans redémarrage :46Vérifiez le résumé d'installation. S'il signale `Run /reload-plugins to activate.`, consultez [Appliquer les modifications de plugin sans redémarrer](/docs/fr/discover-plugins#apply-plugin-changes-without-restarting) pour activer le plugin dans votre session actuelle.

47 

48```text theme={null}

49/reload-plugins

50```

51 47 

52<h3 id="enable-in-cloud-sessions-and-shared-repositories">48<h3 id="enable-in-cloud-sessions-and-shared-repositories">

53 Activer dans les sessions cloud et les référentiels partagés49 Activer dans les sessions cloud et les référentiels partagés

self-hosted-environments.md +164 −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# Environnements auto-hébergés

6 

7> Exécutez les sessions cloud Claude Code sur l'infrastructure que vous contrôlez : configurez un environnement auto-hébergé, déployez des runners, et routez les sessions vers votre propre calcul.

8 

9<Note>

10 Les environnements auto-hébergés sont en bêta publique sur les plans Team et Enterprise et sont désactivés par défaut. Consultez [Disponibilité et limitations](#availability-and-limitations) pour le chemin d'activation et ce qui est exclu.

11</Note>

12 

13Un environnement auto-hébergé exécute les sessions cloud Claude Code sur l'infrastructure que votre organisation exploite. Une [session cloud](/docs/fr/claude-code-on-the-web) est toute session qui s'exécute ailleurs que sur la machine du développeur : les développeurs les démarrent à partir de claude.ai, des applications mobiles et de bureau, du terminal avec [`claude --cloud`](/docs/fr/claude-code-on-the-web#from-terminal-to-web), et des [routines planifiées](/docs/fr/routines), et par défaut elles s'exécutent sur l'infrastructure d'Anthropic. Dans un environnement auto-hébergé, ces mêmes sessions s'exécutent à l'intérieur de votre réseau, et l'expérience développeur est par ailleurs la même à part les différences dans [Disponibilité et limitations](#availability-and-limitations) et les [problèmes connus](/docs/fr/self-hosted-environments-deploy#known-issues-and-limitations) de la page de déploiement.

14 

15Si votre équipe n'utilise pas les sessions cloud, il n'y a rien à configurer ici : les sessions dans un terminal ou un IDE s'exécutent toujours sur la machine du développeur. Si vous voulez exécuter Claude Code sur votre propre machine toujours active et la piloter à partir d'autres appareils, utilisez [Contrôle à distance](/docs/fr/remote-control), qui est également disponible sur les plans Pro et Max. Quand vous êtes prêt à configurer, allez directement au [démarrage rapide](/docs/fr/self-hosted-environments-quickstart) ; pour examiner d'abord la posture de sécurité, commencez par [Déployer en production](/docs/fr/self-hosted-environments-deploy). Le reste de cette page explique comment fonctionne l'auto-hébergement et quand le choisir.

16 

17<h2 id="how-self-hosted-environments-work">

18 Comment fonctionnent les environnements auto-hébergés

19</h2>

20 

21L'auto-hébergement comporte trois parties :

22 

23* **Environnement** : une destination nommée vers laquelle les sessions cloud peuvent être envoyées. Votre organisation crée des environnements dans les paramètres d'administration de claude.ai, et chacun regroupe un ensemble de runners.

24* **Runner** : un programme s'exécutant sur des hôtes à l'intérieur de votre réseau. Les runners exécutent les sessions ; l'idée est la même qu'un runner CI auto-hébergé.

25* **Session** : une tâche Claude Code qu'un développeur a démarrée.

26 

27Quand un développeur démarre une session cloud, l'interface de démarrage de session affiche un sélecteur d'environnement listant les environnements hébergés par Anthropic aux côtés de ceux que votre organisation a créés. S'ils choisissent le vôtre, le plan de contrôle d'Anthropic place la session dans la file d'attente de votre environnement, où un runner la réclame, clone le référentiel que le développeur a choisi, et démarre un processus Claude Code sur votre hôte pour l'exécuter. Le runner s'authentifie auprès de votre hôte git avec les identifiants que vous configurez ; [Configurer git](/docs/fr/self-hosted-environments-deploy#configure-git) couvre les options. Les sessions atteignent vos services internes de l'intérieur de votre réseau, et votre hôte git de la même manière quand il est interne ; le trafic vers Anthropic, l'interrogation de la file d'attente, le flux d'événements de la session, et l'inférence du modèle, est HTTPS sortant vers `api.anthropic.com`, avec la courte liste des hôtes supplémentaires que les sessions peuvent atteindre dans [Exigences réseau](/docs/fr/self-hosted-environments-deploy#network-requirements). Anthropic ne se connecte jamais à votre réseau.

28 

29<div style={{maxWidth: "640px", margin: "0 auto"}}>

30 <Frame>

31 <img src="https://mintcdn.com/claude-code/Y0sJ2uDoOVbOVZrQ/images/self-hosted-network-paths.svg?fit=max&auto=format&n=Y0sJ2uDoOVbOVZrQ&q=85&s=8056103fc1c5564c7f0ef219d260b99d" className="dark:hidden" alt="Diagramme d'architecture d'un environnement auto-hébergé : la limite de votre réseau contient un runner, deux processus de session Claude Code à l'intérieur, et votre hôte git, avec api.anthropic.com à l'extérieur contenant la file d'attente, le flux de session, et l'inférence. Le runner interroge la file d'attente et atteint l'hôte git, chaque processus de session ouvre ses propres connexions de flux, d'inférence et de git, et chaque connexion est sortante de votre réseau, sans aucune entrante." width="680" height="320" data-path="images/self-hosted-network-paths.svg" />

32 

33 <img src="https://mintcdn.com/claude-code/Y0sJ2uDoOVbOVZrQ/images/self-hosted-network-paths-dark.svg?fit=max&auto=format&n=Y0sJ2uDoOVbOVZrQ&q=85&s=fec6aef3b0740d80eaf6d6a7000a2233" className="hidden dark:block" alt="Diagramme d'architecture d'un environnement auto-hébergé : la limite de votre réseau contient un runner, deux processus de session Claude Code à l'intérieur, et votre hôte git, avec api.anthropic.com à l'extérieur contenant la file d'attente, le flux de session, et l'inférence. Le runner interroge la file d'attente et atteint l'hôte git, chaque processus de session ouvre ses propres connexions de flux, d'inférence et de git, et chaque connexion est sortante de votre réseau, sans aucune entrante." width="680" height="320" data-path="images/self-hosted-network-paths-dark.svg" />

34 </Frame>

35</div>

36 

37Les deux boîtes Claude Code dans le diagramme sont des processus de session : un runner exécutant deux sessions à la fois, jusqu'à sa capacité configurée. Un runner sert un [propriétaire](#key-concepts) à la fois et se verrouille à ce propriétaire quand il réclame sa première session, donc le code extrait ne se mélange jamais entre les propriétaires ; [Cycle de vie du runner](#runner-lifecycle) couvre la règle.

38 

39Vous pouvez démarrer les runners vous-même et les maintenir en fonctionnement, ou exécuter l'[orchestrateur de mise à l'échelle automatique](/docs/fr/self-hosted-environments-configuration#on-demand-runners), un deuxième processus que vous hébergez, qui démarre les runners à mesure que les sessions s'accumulent ; chaque runner se termine de lui-même quand son travail est terminé. De toute façon, vous configurez l'environnement une fois, et il apparaît dans le sélecteur sur chaque surface prise en charge.

40 

41<h2 id="availability-and-limitations">

42 Disponibilité et limitations

43</h2>

44 

45Vérifiez ceci avant de planifier un déploiement :

46 

47* **Plans** : bêta publique pour les organisations Team et Enterprise. Les environnements auto-hébergés sont désactivés par défaut ; un [Propriétaire](/docs/fr/cloud-environments#organization-shared-environments) active **Autoriser les environnements auto-hébergés** sur la [page d'administration **Environnements cloud**](https://claude.ai/admin-settings/cloud-environments), ce qui nécessite que [Claude Code sur le web](/docs/fr/claude-code-on-the-web) soit activé pour l'organisation.

48* **Zéro rétention de données** : indisponible pour les organisations avec [Zéro rétention de données](/docs/fr/zero-data-retention) activée.

49* **Inférence du modèle** : les sessions utilisent l'API Anthropic, et l'inférence ne peut pas être routée via [Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry](/docs/fr/third-party-integrations), ou une [passerelle LLM](/docs/fr/llm-gateway).

50* **Surfaces** : les sessions démarrées à partir de [Claude Code sur le web](/docs/fr/claude-code-on-the-web), les applications mobiles et de bureau, les [routines planifiées](/docs/fr/routines), et le terminal, avec [`claude --cloud`](/docs/fr/claude-code-on-the-web#from-terminal-to-web) ou une [dispatch `--environment`](/docs/fr/self-hosted-environments-testing#run-the-test-loop), peuvent s'exécuter dans des environnements auto-hébergés. Les sessions [Claude Tag](https://claude.com/docs/claude-tag/overview) peuvent aussi s'y exécuter, mais Claude ne peut pas encore utiliser les [Bundles d'accès](https://claude.com/docs/claude-tag/concepts/glossary#access-bundle) dans ces sessions. Les sessions [Claude Security](/docs/fr/claude-security) et [Code Review](/docs/fr/code-review) ne les routent pas encore. Le support de ces deux surfaces suit séparément.

51* **Référentiels** : les sessions extraient les référentiels de GitHub ; consultez [Options d'authentification GitHub](/docs/fr/claude-code-on-the-web#github-authentication-options).

52* **Facturation** : les sessions dans un environnement auto-hébergé consomment l'utilisation Claude Code de votre organisation de la même manière que les sessions dans les environnements hébergés par Anthropic.

53 

54<h2 id="why-self-host">

55 Pourquoi auto-héberger

56</h2>

57 

58La plupart des équipes sont mieux servies par les environnements hébergés par Anthropic, qui ne nécessitent aucune infrastructure pour fonctionner ou maintenir. L'auto-hébergement est pour les équipes dont les exigences réseau, outillage ou conformité exigent de maintenir l'exécution des sessions sur l'infrastructure qu'elles contrôlent. Si c'est votre cas, planifiez la propriété opérationnelle qu'il entraîne : vous construisez et maintenez l'image du runner, exploitez la flotte, et contrôlez son réseau.

59 

60En échange, l'auto-hébergement vous donne l'accès réseau, l'outillage personnalisé, et le contrôle de conformité :

61 

62* **Accès réseau** : les sessions s'exécutent à l'intérieur de votre réseau et peuvent atteindre les services internes, les bases de données, et les registres sans les exposer à l'internet public

63* **Outillage personnalisé** : pré-installez les compilateurs, les SDK, et les CLI internes dans votre image de runner pour que chaque session démarre prête à construire

64* **Conformité** : les extractions de référentiels et les artefacts de construction restent sur l'infrastructure que vous contrôlez. Le contenu de la session va toujours à `api.anthropic.com` pour l'inférence du modèle.

65 

66<h2 id="environments-runners-and-sessions">

67 Environnements, runners, et sessions

68</h2>

69 

70Les environnements sont gérés sur la page **Environnements cloud** dans les paramètres d'administration de claude.ai ; les runners sont des processus que vous démarrez et gérez sur votre propre infrastructure.

71 

72<h3 id="key-concepts">

73 Concepts clés

74</h3>

75 

76Ces termes apparaissent tout au long des pages auto-hébergées :

77 

78| Terme | Ce que c'est |

79| :--------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

80| Environnement | Un groupe nommé de vos runners, créé dans les paramètres de claude.ai. Les sessions sont routées vers un environnement, pas vers un runner individuel. |

81| Secret d'environnement | L'identifiant partagé unique que les runners utilisent pour s'authentifier et s'enregistrer auprès de l'environnement. Affiché une seule fois à la création de l'environnement, étiqueté **clé d'environnement** dans l'interface d'administration. |

82| Runner | Le processus de longue durée que vous déployez. Un runner s'enregistre auprès de l'environnement, reçoit un jeton de runner, et interroge les sessions. |

83| Session | Une tâche Claude Code, démarrée à partir de claude.ai, l'application mobile, ou une autre surface Anthropic telle qu'une routine planifiée ou un agent. Chaque session s'exécute en tant que processus Claude Code enfant que le runner génère. |

84 

85Dans les champs API, les revendications de jeton, et les noms de métriques, l'environnement apparaît comme `pool`, et l'ID d'environnement est le `pool_id`. La [référence](/docs/fr/self-hosted-environments-reference) mappe les deux orthographes, y compris les noms d'indicateurs `pool` dépréciés.

86 

87Un runner sert un propriétaire à la fois. La première session qu'un runner récupère verrouille le runner à ce propriétaire de session, et le runner exécute ensuite les sessions uniquement pour ce propriétaire, jusqu'à une capacité configurée. Qui est le propriétaire dépend de la façon dont la session a démarré :

88 

89* **Sessions qu'un utilisateur démarre** : le propriétaire est le compte de cet utilisateur.

90* **Sessions de canal Claude Tag** : Claude les exécute sans compte utilisateur attaché, donc le propriétaire est l'[agent Claude Tag](https://claude.com/docs/claude-tag/concepts/glossary#agent-identity) qui a démarré la session. Chaque session de canal que cet agent démarre a le même propriétaire, peu importe qui a envoyé le message Slack, donc un runner verrouillé à celui-ci sert les sessions que différentes personnes ont démarrées quand vous l'exécutez à une `--capacity` supérieure à un ou avec un `--drain-grace-sec` positif. Un runner verrouillé à un utilisateur ne récupère jamais ceux-ci, et un runner verrouillé à un agent Claude Tag ne récupère jamais les sessions d'un utilisateur.

91 

92La taille minimale de la flotte est donc le nombre de propriétaires que vous vous attendez à être actifs à la fois, en comptant les utilisateurs et les agents Claude Tag.

93 

94<h3 id="session-lifecycle">

95 Cycle de vie de la session

96</h3>

97 

98Quand un développeur démarre une session et sélectionne votre environnement, le plan de contrôle d'Anthropic place la session dans la file d'attente de l'environnement. À partir de là :

99 

1001. Un runner avec une capacité libre réclame la session et maintient un bail sur celle-ci.

1012. Le runner clone le référentiel dans son répertoire de travail et génère un processus Claude Code enfant.

1023. L'enfant diffuse les événements en continu sur HTTPS tandis que le runner continue d'interroger ; chaque interrogation actualise le bail et sert également de battement cardiaque.

1034. Si le runner cesse d'interroger pendant environ 60 secondes, le serveur remet la session en file d'attente pour un autre runner.

104 

105Le runner donne à chaque demande d'interrogation 10 secondes. Quand une demande expire, est perdue, ou reçoit une réponse que le runner ne peut pas analyser, le runner continue de servir ses sessions actives et réessaie après une seconde ou deux au lieu d'attendre l'interrogation suivante programmée. Par exemple, un proxy d'interception qui répond à l'interrogation avec sa propre page produit une réponse que le runner ne peut pas analyser. Chaque fois qu'une autre demande échoue de l'une de ces manières, le runner double l'écart avant la prochaine tentative, jusqu'à 20 secondes, et raccourcit l'écart chaque fois que le bail est proche de l'expiration.

106 

107<h3 id="runner-lifecycle">

108 Cycle de vie du runner

109</h3>

110 

111La première session qu'un runner récupère verrouille le runner à ce propriétaire de session, et le runner exécute jusqu'à `--capacity` sessions concurrentes pour ce propriétaire. Tant que le runner a des sessions actives et n'a pas reçu de signal d'arrêt ou atteint son heure de retraite, le runner continue de réclamer le travail en file d'attente du propriétaire verrouillé. Ce qui se passe une fois qu'ils se terminent dépend de [`--drain-grace-sec`](/docs/fr/self-hosted-environments-reference#runner-cli-flags) :

112 

113* **À la valeur par défaut de `0`** : le runner se termine dès que ses sessions actives se terminent, sans interroger pour plus, donc l'orchestrateur sous lequel vous le déployez, tel que Kubernetes, peut le redémarrer avec un disque frais, prêt à servir n'importe quel propriétaire.

114* **À une valeur positive** : le runner continue d'interroger la file d'attente du propriétaire verrouillé pendant ce nombre de secondes avant de se terminer.

115 

116Ce cycle de vie isole le code extrait de chaque propriétaire sans exiger que le runner supprime l'état du disque entre les propriétaires.

117 

118La façon dont votre infrastructure arrête un runner décide si vous avez besoin de `--retire-at`. Un arrêt qui livre `SIGTERM` n'a besoin d'aucun indicateur : le runner se vide comme [Timing d'arrêt](/docs/fr/self-hosted-environments-deploy#shutdown-timing) le décrit, ou continue de servir les sessions qu'il détient déjà quand vous définissez [`--defer-shutdown-max-min`](/docs/fr/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal). Si votre infrastructure détruit plutôt les hôtes à une heure murale connue sans signal, ou avec une période de grâce trop courte pour se vider, comme une limite de durée de vie du bac à sable ou une réclamation d'instance spot, passez `--retire-at <epoch-seconds>` défini à quelques minutes avant cette heure. À l'heure de retraite :

119 

1201. Le runner cesse de prendre du nouveau travail.

1212. Le runner libère chaque session active via le même chemin de libération que l'indicateur [`--release-idle-session-min`](/docs/fr/self-hosted-environments-reference#runner-cli-flags) utilise, donc la session reprend sur un runner frais quand l'utilisateur envoie son prochain message. Quand le runner libère chaque session dépend de son état :

122 * Le runner libère une session qui est en plein tour dès que ce tour se termine.

123 * Quand un tour se termine et laisse des tâches de fond en cours d'exécution, le runner attend jusqu'à 60 secondes pour elles, puis libère la session même si elles s'exécutent toujours. Si les tâches se sont terminées mais le tour de suivi qui lit leurs résultats ne s'est pas encore exécuté, le runner garde la session jusqu'à ce que ce tour se termine, et attend pas plus longtemps que [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](/docs/fr/self-hosted-environments-reference#environment-variable-only-settings) pour que ce tour démarre.

1243. Le runner se termine 0 une fois que toutes ses sessions sont libérées.

125 

126Un tour qui survit à l'arrêt est toujours perdu ; [Timing d'arrêt](/docs/fr/self-hosted-environments-deploy#shutdown-timing) couvre le dimensionnement de la marge. Sans `--retire-at`, un arrêt d'hôte sans signal est indistinguible d'un crash : le plan de contrôle enregistre un worker perdu plutôt qu'une libération propre, et la session se remet en file d'attente pour un autre runner.

127 

128<h3 id="network-paths">

129 Chemins réseau

130</h3>

131 

132Le runner et ses sessions établissent plusieurs types de connexion sortante, et aucune connectivité entrante d'Anthropic n'est requise :

133 

134* **Plan de contrôle** : le runner interroge `api.anthropic.com` pour le travail et publie les événements de progression de configuration et d'échec, tous HTTPS sortants. L'interrogation sert également de battement cardiaque du runner.

135* **Connecteur SCM** : l'orchestrateur optionnel [connecteur SCM](/docs/fr/self-hosted-environments-reference#scm-connector-flags) tunnel est la seule connexion WebSocket.

136* **Git** : le runner clone à partir de et pousse vers votre hôte git sur HTTPS ou SSH, authentifié avec les identifiants que votre déploiement fournit ; [Configurer git](/docs/fr/self-hosted-environments-deploy#configure-git) couvre les options, y compris les identifiants frappés par session et la [passerelle git Anthropic](/docs/fr/self-hosted-environments-deploy#use-the-anthropic-git-proxy), qui route git via `api.anthropic.com` à la place.

137* **Enfant de session** : le processus Claude Code enfant maintient le flux d'événements de la session à `api.anthropic.com`, et fait ses propres appels sortants pour l'inférence du modèle et pour les commandes git exécutées pendant la session. Consultez [Exigences réseau](/docs/fr/self-hosted-environments-deploy#network-requirements) pour la liste complète des sorties. Le [diagramme ci-dessus](#how-self-hosted-environments-work) montre ces chemins, à part le connecteur SCM optionnel.

138 

139L'inférence du modèle utilise l'API Anthropic. Le plan de contrôle livre le point de terminaison API à chaque session, et la session s'authentifie avec un jeton OAuth émis par Anthropic, limité à la session, donc l'inférence ne peut pas être routée via [Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry](/docs/fr/third-party-integrations), ou une [passerelle LLM](/docs/fr/llm-gateway) dans les environnements auto-hébergés.

140 

141Les proxies de sortie d'entreprise sont pris en charge. Le runner et l'[orchestrateur de mise à l'échelle automatique](/docs/fr/self-hosted-environments-configuration#on-demand-runners) optionnel honorent le proxy et les variables d'environnement mTLS décrites dans [Configuration réseau](/docs/fr/network-config), telles que `HTTPS_PROXY` et `NO_PROXY` ; définissez-les dans l'environnement de chaque processus. Les variables couvrent les appels du plan de contrôle, le WebSocket du [connecteur SCM](/docs/fr/self-hosted-environments-reference#scm-connector-flags) de l'orchestrateur, et le clone intégré pour les télécommandes HTTPS, et les sessions les héritent du runner. Le streaming de session utilise les événements envoyés par le serveur sur HTTPS, donc un proxy dans le chemin ne doit pas mettre en mémoire tampon les réponses.

142 

143Si votre proxy nécessite également un en-tête `Proxy-Authorization`, le runner peut l'ajouter à chaque connexion qu'il ouvre au proxy ; consultez [S'authentifier auprès d'un proxy de sortie](/docs/fr/self-hosted-environments-deploy#authenticate-to-an-egress-proxy).

144 

145<h2 id="what-stays-on-your-infrastructure">

146 Ce qui reste sur votre infrastructure

147</h2>

148 

149Les extractions de référentiels, les artefacts de construction, les secrets, et tous les fichiers qu'une session crée ou modifie restent sur les machines que vous approvisionnez. La conversation elle-même, y compris les invites, les réponses, et les résultats des outils, va à `api.anthropic.com` pour l'inférence du modèle, et Anthropic stocke la transcription de la session pour que vous puissiez reprendre la session à partir d'une autre [surface prise en charge](#availability-and-limitations).

150 

151Un environnement auto-hébergé déplace l'exécution de la session dans votre réseau. Le plan de contrôle reste hébergé par Anthropic : l'orchestration de session, la mise en file d'attente, et l'interface claude.ai continuent de s'exécuter sur l'infrastructure d'Anthropic.

152 

153<h2 id="get-started">

154 Commencer

155</h2>

156 

157Les pages des environnements auto-hébergés sont organisées par ce que vous faites :

158 

159* [Démarrage rapide](/docs/fr/self-hosted-environments-quickstart) : installez Claude Code, créez un environnement, démarrez un runner, et routez votre première session

160* [Déployer en production](/docs/fr/self-hosted-environments-deploy) : durcissement de la sécurité, sortie réseau, identifiants git, recettes Kubernetes et Compose, problèmes connus, et dépannage

161* [Personnaliser les sessions](/docs/fr/self-hosted-environments-configuration) : scripts wrapper pour les identifiants par session, hooks de cycle de vie, runners à la demande, serveurs MCP, et permissions

162* [Tester de bout en bout](/docs/fr/self-hosted-environments-testing) : un test de fumée CI qui vérifie une image de runner avant de la promouvoir

163* [Référence](/docs/fr/self-hosted-environments-reference) : chaque indicateur CLI, variable d'environnement, métrique, et le point de terminaison de santé

164* [Vérifier l'identité de la session](/docs/fr/self-hosted-environments-identity) : validez le jeton de session à partir de vos propres services avant d'accorder l'accès

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 sessions dans les environnements auto-hébergés

6 

7> Personnalisez les sessions d'environnement auto-hébergé avec des scripts wrapper pour les identifiants par session, les hooks de cycle de vie et le spawning de runners à la demande.

8 

9<Note>

10 Les environnements auto-hébergés sont en bêta publique sur les plans Team et Enterprise ; un [Owner](/docs/fr/cloud-environments#organization-shared-environments) les active en activant **Allow self-hosted environments** sur la [page d'administration **Cloud environments**](https://claude.ai/admin-settings/cloud-environments). Cette page suppose un runner fonctionnel ; consultez le [guide de démarrage rapide](/docs/fr/self-hosted-environments-quickstart) pour la configuration et [Déployer en production](/docs/fr/self-hosted-environments-deploy) pour les recettes de flotte.

11</Note>

12 

13Un [environnement auto-hébergé](/docs/fr/self-hosted-environments) exécute les [sessions cloud](/docs/fr/claude-code-on-the-web) de Claude Code sur votre propre infrastructure, exécutées par un processus runner que vous déployez. Sans configuration, ce runner clone le référentiel de la session, lance Claude Code et nettoie. Cette page s'adresse à l'ingénieur plateforme qui exploite les runners : elle couvre les points d'extension pour quand ces valeurs par défaut ne conviennent pas, de la fourniture d'identifiants par session au remplacement complet du checkout. Les wrappers et les hooks s'exécutent en tant que fichiers exécutables sur l'hôte runner, qui est Linux ou macOS, et les exemples de cette page supposent un shell POSIX.

14 

15Quelques variables d'environnement de hook sur cette page utilisent toujours `pool`, comme `CLAUDE_RUNNER_POOL_ID` ; les noms de flag CLI et de variable d'environnement utilisent `environment`, comme `--environment-secret-file`.

16 

17<h2 id="wrapper-scripts">

18 Scripts wrapper

19</h2>

20 

21Utilisez un script wrapper quand chaque session a besoin d'une configuration que le runner ne peut pas faire seul : provisionner des identifiants de courte durée limités au créateur de la session, exporter des secrets spécifiques à l'environnement, préparer des chaînes d'outils de langage ou appliquer des limites de ressources autour du processus enfant. Le runner démarre votre wrapper à la place du binaire Claude Code, une fois par session. Terminez le wrapper en `exec`-ant dans `$CLAUDE_RUNNER_CLAUDE_BIN`, le binaire du runner lui-même, afin que les signaux et les codes de sortie se propagent correctement.

22 

23Pointez `--exec-path`, ou `SELF_HOSTED_RUNNER_EXEC_PATH`, vers le wrapper quand vous démarrez le runner :

24 

25```bash theme={null}

26claude self-hosted-runner --environment-secret-file /etc/claude/environment-secret --exec-path /etc/claude/session-wrapper.sh

27```

28 

29Le runner définit les éléments suivants dans l'environnement du wrapper :

30 

31| Variable | Description |

32| :---------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

33| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Le JWT de session, préfixé `sk-ant-cc-`. Sa revendication `act` identifie le créateur de la session, avec l'email du créateur et le sujet du fournisseur d'identité en amont quand la surface de création les a enregistrés. La valeur est le token au moment du spawn ; les actualisations arrivent sur stdin de l'enfant, donc un wrapper ne voit que la valeur initiale. Voir [Vérifier l'identité de la session](/docs/fr/self-hosted-environments-identity). |

34| `CCR_SESSION_ACCOUNT_EMAIL` | L'email du créateur de la session, pré-extrait par le runner de la revendication `act.email` du token sans vérification de signature. Approprié pour l'étiquetage, comme les trailers de commit. Quand l'email contrôle l'émission d'identifiants, vérifiez le token et lisez la revendication à partir de celui-ci à la place ; voir [Provisionner les identifiants limités au créateur de la session](#provision-credentials-scoped-to-the-session-creator). Non défini quand le token ne porte pas d'email de créateur. Traiter comme des informations d'identification personnelle. |

35| `CLAUDE_RUNNER_CLIENT_PLATFORM` | La surface client qui a créé la session, comme `web_claude_ai`, `desktop_app`, `ios`, `claude_code_cli` ou `scheduled_trigger`. Anthropic enregistre la valeur une fois à la création de la session, donc le wrapper et chaque hook de cycle de vie voient la même valeur. Utilisez-la pour l'analyse d'adoption et l'étiquetage uniquement, pas comme signal d'autorisation. Non défini quand la session n'a pas de surface enregistrée ou reconnue, donc référencez-la comme `${CLAUDE_RUNNER_CLIENT_PLATFORM:-}` sous `set -u`. Nécessite Claude Code v2.1.229 ou ultérieur. |

36| `CLAUDE_RUNNER_CLAUDE_BIN` | Chemin absolu vers le binaire Claude Code du runner lui-même. Terminez votre wrapper avec `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"` pour passer au binaire épinglé sans coder en dur un chemin d'installation. |

37| `CLAUDE_CODE_REMOTE_SESSION_ID` | ID de session sous la forme balisée `cse_...`. C'est la même session que les [hooks de cycle de vie](#lifecycle-hooks) voient comme `CLAUDE_RUNNER_SESSION_ID` sous la forme `session_...` ; les variables UUID correspondent entre les deux, et remplacer le préfixe `cse_` par `session_` donne l'ID affiché dans l'URL de la session. |

38| `CLAUDE_CODE_REMOTE_SESSION_UUID` | Le même ID de session sous la forme UUID canonique, pour les systèmes qui utilisent des UUIDs comme clé. |

39| `CLAUDE_SESSION_INGRESS_TOKEN_FILE` | Chemin absolu vers un fichier par session contenant le JWT de session actuel, maintenu à jour lors des actualisations de token. Les sous-processus shell le lisent pour leur en-tête `Authorization` lors du téléchargement des pièces jointes que l'utilisateur a ajoutées à la session. `exec` préserve la variable automatiquement ; un wrapper qui reconstruit l'environnement de l'enfant doit transporter la variable, ou les téléchargements de pièces jointes s'arrêtent silencieusement. |

40| `CLAUDE_CONFIG_DIR` | Répertoire de configuration Claude par session, écrit au démarrage de la session à partir de l'instantané de la configuration de l'hôte runner que le runner capture au démarrage ; voir [Permissions et approbation d'outils](#permissions-and-tool-approval). Les écritures ici sont isolées à cette session. |

41| `ANTHROPIC_BASE_URL` | L'URL de base de l'API que l'enfant utilisera, livrée par le plan de contrôle par session et normalement `https://api.anthropic.com`. Ne la remplacez pas : l'identifiant d'inférence de la session est un token OAuth émis par Anthropic que les autres fournisseurs n'acceptent pas, donc l'inférence dans les environnements auto-hébergés n'est pas routable ailleurs. |

42| `CLAUDE_CODE_OAUTH_TOKEN` | Le token d'accès OAuth de courte durée que l'enfant utilise pour l'inférence du modèle, limité à l'inférence du modèle et au téléchargement de fichiers uniquement, avec une durée de vie d'environ 30 minutes. Le runner le rémet avant l'expiration et livre la rotation sur stdin de l'enfant, donc un wrapper qui ne [garde pas stdin attaché](#keep-stdin-and-file-descriptor-3-attached) ne voit que la valeur initiale. Ne vous fiez pas à la liste d'adresses IP autorisées de votre organisation pour limiter l'utilisation de ce token : traitez-le comme un identifiant bearer qui reste utilisable pendant environ 30 minutes s'il fuit, et ne le consignez pas, ne l'écrivez pas sur le disque et ne le transmettez pas en dehors du conteneur de session. |

43 

44Le wrapper hérite également du reste de l'environnement géré de l'enfant, y compris toutes les variables d'environnement fournies par le serveur. `exec` propage tout automatiquement ; si votre wrapper lance l'enfant d'une autre manière, transmettez l'environnement complet.

45 

46<h3 id="keep-stdin-and-file-descriptor-3-attached">

47 Garder stdin et le descripteur de fichier 3 attachés

48</h3>

49 

50stdin de l'enfant est le canal de contrôle du runner. Les rotations de token et les signaux de fin de session arrivent dessus. Le runner ouvre également un tuyau sur le descripteur de fichier 3 et lit les signaux d'activité de l'enfant à partir de celui-ci pour piloter les délais d'inactivité et de démarrage. Un simple `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"` préserve les deux automatiquement.

51 

52Si votre wrapper met l'enfant en arrière-plan avec un simple `&`, il coupe stdin de l'enfant : la session semble saine jusqu'à ce que la durée de vie du token OAuth initial d'environ 30 minutes expire, puis chaque appel API échoue avec `401 authentication_error`. Si votre wrapper doit mettre l'enfant en arrière-plan, par exemple pour garder un trap de démontage actif, enregistrez stdin sur le descripteur de fichier 4 ou supérieur et réattachez-le explicitement :

53 

54```bash theme={null}

55exec 4<&0

56"$CLAUDE_RUNNER_CLAUDE_BIN" "$@" <&4 4<&- &

57CHILD=$!

58trap 'teardown' EXIT

59wait "$CHILD"

60```

61 

62Ne fermez pas ou ne réutilisez pas le descripteur de fichier 3 dans le wrapper. Rediriger stdout et stderr de l'enfant est correct.

63 

64<h3 id="provision-credentials-scoped-to-the-session-creator">

65 Provisionner les identifiants limités au créateur de la session

66</h3>

67 

68Utilisez la sous-commande `decode-token` pour lire les revendications du JWT de session. Elle lit le token à partir d'un argument, de `CLAUDE_CODE_SESSION_ACCESS_TOKEN` ou de stdin, dans cet ordre ; voir [Vérifier le token à l'intérieur de la session](/docs/fr/self-hosted-environments-identity#verify-the-token-inside-the-session) pour ce qu'elle vérifie. L'exemple ci-dessous décode l'identité du créateur, l'échange contre des identifiants AWS de courte durée et exec dans Claude Code :

69 

70```bash theme={null}

71#!/bin/bash

72# Clé sur l'ID utilisateur Anthropic stable et exiger un créateur humain.

73CREATOR_SUB=$("$CLAUDE_RUNNER_CLAUDE_BIN" self-hosted-runner decode-token \

74 | jq -re '.act.sub // "" | select(startswith("user:"))') \

75 || { echo "decode-token: verification failed or no human creator" >&2; exit 1; }

76 

77creds=$(your-sts-helper assume-role --subject "$CREATOR_SUB") \

78 || { echo "credential exchange failed" >&2; exit 1; }

79eval "$creds"

80 

81exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"

82```

83 

84Utilisez `jq -re` plutôt que `jq -r` quand la revendication extraite contrôle une décision d'authentification, afin qu'une revendication absente se termine avec un code non-zéro au lieu de transmettre la chaîne littérale `null` en aval. Les sessions créées par une identité de service d'organisation, comme les sessions de bot et d'agent, portent un sujet `agent:` plutôt que `user:`, donc cet exemple les refuse ; si votre environnement sert ces sessions, décidez explicitement si le wrapper revient à un identifiant par défaut pour elles au lieu de se terminer. Quand votre échange d'identifiants a besoin du sujet SSO ou de l'email à la place, lisez `.act.attested_by.sub` ou `.act.email` et gérez leur absence : le token ne les porte que quand la surface de création les a enregistrés, et une [session envoyée par CLI](/docs/fr/self-hosted-environments-testing#run-the-test-loop) peut manquer les deux. Pour la référence complète des revendications et la vérification à partir de services en dehors du runner, voir [Vérifier l'identité de la session](/docs/fr/self-hosted-environments-identity).

85 

86<h2 id="lifecycle-hooks">

87 Hooks de cycle de vie

88</h2>

89 

90Les hooks de cycle de vie remplacent les étapes du pipeline par session du runner par vos propres scripts. Pointez le runner vers un répertoire de hooks avec `--hooks-dir <path>`, ou `SELF_HOSTED_RUNNER_HOOKS_DIR`. Le runner cherche des fichiers exécutables avec des noms bien connus ; tout hook qui n'est pas présent revient au comportement intégré, donc vous n'écrivez que ceux dont vous avez besoin. Les hooks s'exécutent avec les privilèges du runner lui-même, et les enfants de session partagent cet UID, donc montez le répertoire de hooks en lecture seule, ou intégrez-le à l'image, afin que le code de session ne puisse pas le modifier ; voir la [section de durcissement](/docs/fr/self-hosted-environments-deploy#harden-your-deployment).

91 

92Ces hooks sont distincts des [hooks Claude Code](/docs/fr/hooks), qui s'exécutent à l'intérieur de la session ; les hooks de cycle de vie s'exécutent sur le runner, autour de la session.

93 

94<h3 id="checkout">

95 checkout

96</h3>

97 

98S'exécute une fois par référentiel, à la place du clone et de la récupération intégrés du runner. Utilisez le hook pour cloner à partir d'un miroir de lecture directe, amorcer un arbre de travail à partir d'une archive ou appliquer une authentification git par session. Le runner définit :

99 

100| Variable | Description |

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

102| `CLAUDE_RUNNER_REPO_URL` | URL du référentiel à cloner, après que tout `--git-host-rewrite` et `--git-ssh-rewrite` aient été appliqués |

103| `CLAUDE_RUNNER_REPO_REF` | Révision à vérifier : branche, tag ou SHA de commit comme la session l'a demandé. Vide signifie la branche par défaut du référentiel. |

104| `CLAUDE_RUNNER_CHECKOUT_PATH` | Chemin absolu où l'arbre de travail doit être laissé |

105| `CLAUDE_RUNNER_SESSION_ID` | ID de session sous la forme balisée `session_...`, pour la journalisation et la corrélation |

106| `CLAUDE_RUNNER_SESSION_UUID` | Le même ID de session sous la forme UUID canonique |

107| `CLAUDE_RUNNER_API_BASE_URL` | URL de base de l'API Anthropic pour les appels limités à la session |

108| `CLAUDE_RUNNER_CLIENT_PLATFORM` | La surface client qui a créé la session, comme `web_claude_ai`, `desktop_app` ou `ios`. Non défini quand la session n'a pas de surface enregistrée ou reconnue. |

109| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Le token d'accès de session, pour les appels API limités à la session |

110 

111Le script doit laisser un arbre de travail à `CLAUDE_RUNNER_CHECKOUT_PATH` vérifié à la révision demandée. HEAD détaché est correct ; le runner crée la branche de travail de la session par-dessus. Le runner vérifie que le chemin contient un `.git` après ; si votre hook matérialise une source non-git comme Perforce ou une archive dépaquetée, définissez `CLAUDE_RUNNER_SKIP_GIT_VERIFY=1` dans l'environnement du runner pour ignorer cette vérification. Les flux basés sur git comme la création de branche de travail et l'envoi de résultats nécessitent un checkout git, donc exportez les résultats à partir d'arbres non-git avec un hook [`post-session`](#post-session).

112 

113Le runner ne transmet pas un identifiant git au hook. À la place, frappez un identifiant de clone par session à partir de l'identité de la session : vérifiez `CLAUDE_CODE_SESSION_ACCESS_TOKEN` avec une bibliothèque JWT standard par rapport au point de terminaison JWKS sous `CLAUDE_RUNNER_API_BASE_URL`, comme décrit dans [Vérifier le token à partir de votre service](/docs/fr/self-hosted-environments-identity#verify-the-token-from-your-service), puis faites en sorte que votre service d'identifiants émette un identifiant de clone de courte durée pour l'identité dans la revendication `act` du token. `CLAUDE_RUNNER_CLAUDE_BIN` n'est pas défini dans l'environnement du hook de checkout, donc la sous-commande `decode-token` n'est pas disponible ici. Revenir à tout ce que l'authentification git de l'hôte a déjà, comme un agent SSH, un helper d'identifiants ou `.netrc`, est aussi une option.

114 

115Quand le hook se termine avec un code non-zéro, ou se termine avec 0 sans laisser un checkout utilisable derrière, ce que le runner fait dépend du référentiel :

116 

117* **Un référentiel vers lequel la session envoie les résultats** : le runner échoue la session, et sur une sortie non-zéro affiche la queue du stderr du script à l'utilisateur.

118* **Un référentiel que la session lit uniquement**, comme un référentiel ajouté à une session en cours d'exécution : le runner enregistre une ligne `[runner:warn]` avec le détail de l'échec, affiche une étape `Skipped` à la session, supprime ce que le hook a laissé au chemin de checkout et continue avec les référentiels restants. Quand le runner ne peut pas supprimer le chemin immédiatement, il réessaie la suppression à la fin de la session. Si ignorer laisse la session sans aucun référentiel du tout, le runner échoue la session de toute façon.

119 

120Avant v2.1.228, le runner échouait la session sur un échec de hook pour tout référentiel, donc un référentiel en lecture seule que le hook ne pouvait pas servir échouait la session à nouveau sur chaque nouveau runner sur lequel la session reprenait.

121 

122Le runner supprime le chemin de checkout après la fin de la session.

123 

124<h3 id="post-session">

125 post-session

126</h3>

127 

128S'exécute une fois par session, après la sortie de l'enfant Claude Code et avant que le runner ne démonte l'espace de travail. Ce hook est votre seule chance de sauvegarder le travail non commis : à `--capacity` au-dessus d'un, le runner supprime les worktrees par session juste après le retour du hook, et à `--capacity 1` le [clone canonique](/docs/fr/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout) réutilisé est réinitialisé en dur quand la session suivante démarre, donc les changements suivis non commis ne survivent sur aucun chemin. Les utilisations typiques sont l'envoi d'une branche d'instantané de changements non commis, l'archivage de journaux ou l'émission d'un événement de fin de session à vos propres systèmes.

129 

130Le hook se déclenche à chaque fin de session où un processus enfant a été généré, quelle qu'en soit la cause ; les valeurs `CLAUDE_RUNNER_EXIT_REASON` ci-dessous énumèrent les cas. Il ne peut pas se déclencher quand le runner se termine brutalement, comme une préemption de VM ou une perte de courant ; si vous avez besoin de garanties contre une terminaison brutale, prenez des instantanés périodiquement à partir de l'intérieur de la session avec un hook Claude Code `PostToolUse` à la place. Le runner définit :

131 

132| Variable | Description |

133| :--------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

134| `CLAUDE_RUNNER_SESSION_ID` | ID de session sous la forme balisée `session_...` |

135| `CLAUDE_RUNNER_SESSION_UUID` | Le même ID de session sous la forme UUID canonique |

136| `CLAUDE_RUNNER_EXIT_REASON` | Comment la session s'est terminée ; voir les valeurs ci-dessous du tableau |

137| `CLAUDE_RUNNER_WORKSPACE_PATHS` | Chemins absolus séparés par des deux-points des arbres de travail de la session. Vide pour les sessions sans référentiel. |

138| `CLAUDE_RUNNER_DEBUG_LOG_PATH` | Chemin vers le journal de débogage de la session, toujours sur le disque pendant que le hook s'exécute |

139| `CLAUDE_RUNNER_API_BASE_URL` | URL de base de l'API Anthropic pour les appels limités à la session |

140| `CLAUDE_RUNNER_CLIENT_PLATFORM` | La surface client qui a créé la session, comme `web_claude_ai`, `desktop_app` ou `ios`. Non défini quand la session n'a pas de surface enregistrée ou reconnue. Nécessite Claude Code v2.1.229 ou ultérieur. |

141| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Le token d'accès de session, pour les appels API limités à la session |

142 

143`CLAUDE_RUNNER_EXIT_REASON` prend l'une des quatre valeurs :

144 

145* `completed` : la session s'est terminée proprement. Le processus Claude Code s'est terminé normalement, ou la session a été archivée ou supprimée pendant qu'elle était toujours en cours d'exécution.

146* `failed` : le processus Claude Code s'est écrasé, ou la configuration a échoué après son démarrage.

147* `interrupted` : le runner a arrêté la session. Il a libéré la session pour libérer l'emplacement, la session a expiré au démarrage, le serveur a déplacé la session hors de ce runner, le runner était en drainage, ou la session a dépassé sa limite [`--kill-session-after-min`](/docs/fr/self-hosted-environments-reference#runner-cli-flags).

148* `abandoned` : réservé à une session qu'un autre runner a revendiquée. Le hook ne se déclenche actuellement pas dans ce cas.

149 

150Les [compteurs de cycle de vie de la session](/docs/fr/self-hosted-environments-reference#session-lifecycle-counter-semantics) comptent une libération, un délai d'expiration au démarrage et un déplacement du serveur comme `completed` plutôt que `interrupted`, car le runner a remis l'emplacement proprement. Attendez-vous à cette différence si vous comparez les reçus de hook avec les compteurs.

151 

152Le statut de sortie du hook n'affecte jamais le résultat de la session ; un échec est enregistré et ignoré. Le runner attend jusqu'à `--post-session-hook-timeout-sec`, 60 secondes par défaut, à chaque fin de session y compris l'arrêt du runner. Cet exemple sauvegarde le travail non commis dans une branche de secours :

153 

154```bash theme={null}

155#!/usr/bin/env bash

156set -u

157IFS=':'

158# Épinglez la configuration que la session aurait pu planter dans le .git/config du checkout :

159# -c les remplacements battent les paramètres au niveau du référentiel, bloquant la session écrite fsmonitor,

160# hook-path et gpg-program config de l'exécution de code avec les privilèges du hook.

161# Repo-local credential.helper, core.sshCommand et pushurl

162# s'appliquent toujours ; si le hook détient des identifiants que la session n'avait pas, épinglez le

163# push URL et helper aussi (voir la note ci-dessous le script).

164g() { git -c core.fsmonitor=false -c core.hooksPath=/dev/null \

165 -c commit.gpgsign=false "$@"; }

166for ws in $CLAUDE_RUNNER_WORKSPACE_PATHS; do

167 cd "$ws" 2>/dev/null || continue

168 [ -z "$(g status --porcelain 2>/dev/null)" ] && continue

169 g add -A

170 g commit -q -m "runner snapshot: $CLAUDE_RUNNER_SESSION_ID ($CLAUDE_RUNNER_EXIT_REASON)" || continue

171 g push -q origin "HEAD:refs/heads/rescue/$CLAUDE_RUNNER_SESSION_ID" || true

172done

173```

174 

175Le hook envoie avec tout ce que les identifiants git disponibles dans son propre environnement sur l'hôte runner. Sous la [posture sans identifiants dans l'image](/docs/fr/self-hosted-environments-deploy#configure-git), y compris quand le clone intégré passe par le proxy git Anthropic, il n'y en a pas, donc frappez un identifiant de push de courte durée à l'intérieur du hook avant d'envoyer : échangez le token de session que le hook reçoit dans `CLAUDE_CODE_SESSION_ACCESS_TOKEN` avec votre propre service de token, en le vérifiant comme [Vérifier l'identité de la session](/docs/fr/self-hosted-environments-identity) le décrit. Quand le hook détient un identifiant que la session n'avait pas, épinglez aussi où il envoie : remplacez `origin` par une URL fournie par l'opérateur et passez `-c credential.helper=` plus votre propre helper, afin que la configuration au niveau du référentiel que la session a écrite ne puisse pas rediriger l'envoi accrédité.

176 

177<h4 id="hook-timing-when-the-runner-releases-a-session">

178 Timing du hook quand le runner libère une session

179</h4>

180 

181Une session libérée peut reprendre sur un autre runner. Sur un runner en v2.1.236 ou ultérieur, ce que la session faisait à la libération décide si elle peut reprendre avant que ce hook se termine :

182 

183* **Inactif après un tour, ou expiré au démarrage** : le runner arrête l'enfant et exécute ce hook jusqu'à la fin. Ce n'est qu'alors qu'il libère la session. Un message utilisateur envoyé pendant que le hook s'exécute ne peut pas reprendre la session sur un autre runner avant que le hook se termine.

184* **En attente que l'utilisateur réponde à une invite, comme une invite de permission** : le runner libère d'abord la session, puis exécute ce hook. Un message utilisateur envoyé pendant que le hook s'exécute peut reprendre la session sur un autre runner avant que le hook se termine.

185 

186Ceci s'applique chaque fois que le runner libère une session : au délai d'inactivité, à l'heure [`--retire-at`](/docs/fr/self-hosted-environments-reference#runner-cli-flags), et, sur un runner en v2.1.260 ou ultérieur, à la limite [`--kill-session-after-min`](/docs/fr/self-hosted-environments-reference#runner-cli-flags) d'une session. Une session dont le tour s'est terminé et qui ne contient que des tâches en arrière-plan compte comme inactif ici. Avant v2.1.236, le runner libérait d'abord la session puis exécutait ce hook dans les deux cas.

187 

188Pendant un drainage `SIGTERM`, le runner maintient le bail de session jusqu'à ce que le hook se termine ; voir [Timing d'arrêt](/docs/fr/self-hosted-environments-deploy#shutdown-timing).

189 

190<h3 id="command">

191 command

192</h3>

193 

194S'exécute une fois par session après le checkout, à la place du spawn enfant intégré. Le hook reçoit le même environnement qu'un [script wrapper](#wrapper-scripts) et doit `exec` dans `"$CLAUDE_RUNNER_CLAUDE_BIN"` de la même manière. Utilisez le hook `command` pour garder toute la personnalisation dans un répertoire de hooks ; utilisez `--exec-path` quand le wrapper vit ailleurs. Si `--exec-path` est aussi défini, le flag prend la priorité et le hook `command` est ignoré.

195 

196Toujours `exec` le binaire du runner plutôt qu'un `claude` résolu par PATH ; sinon vous annulez l'[épinglage de version](/docs/fr/self-hosted-environments-deploy#pin-the-version).

197 

198<h2 id="on-demand-runners">

199 Runners à la demande

200</h2>

201 

202Au lieu d'exécuter une flotte fixe, vous pouvez démarrer un runner par session. L'orchestrateur est une sous-commande séparée et sans état qui interroge Anthropic pour les demandes de spawn, une par session qui est en attente sans runner disponible, et exécute votre hook `spawn-runner` pour chacune. Votre hook soumet une charge de travail à votre plateforme : un Kubernetes Job, une instance EC2, un Nomad dispatch.

203 

204Les runners à la demande améliorent l'hygiène des identifiants. Sur une flotte fixe, le secret d'environnement vit sur chaque hôte runner, qui est le même hôte qui exécute les sessions utilisateur. Avec l'orchestrateur, le secret d'environnement reste uniquement sur l'hôte orchestrateur, qui n'exécute jamais le code utilisateur ; chaque runner généré reçoit un bon de travail à usage unique qui enregistre exactement un runner puis expire.

205 

206Pour démarrer l'orchestrateur, passez le secret d'environnement et un répertoire de hooks contenant un script `spawn-runner` exécutable :

207 

208```bash theme={null}

209claude self-hosted-runner orchestrator \

210 --environment-secret-file /etc/claude/environment-secret \

211 --hooks-dir /etc/claude/hooks

212```

213 

214L'orchestrateur ne conserve aucun état entre les sondages, donc vous pouvez exécuter deux ou plusieurs répliques contre le même environnement pour la disponibilité. Chaque demande de spawn est revendiquée côté serveur par exactement une réplique. Toutes les répliques doivent utiliser la même valeur `--expected-spawn-seconds` ; voir le [contrat du hook](#the-spawn-runner-hook).

215 

216<h3 id="the-spawn-runner-hook">

217 Le hook spawn-runner

218</h3>

219 

220L'orchestrateur exécute `${hooks-dir}/spawn-runner` une fois par demande de spawn. Le hook doit soumettre le travail de manière asynchrone, sans attendre le démarrage du runner, et revenir dans `--hook-timeout`, 60 secondes par défaut. Le hook reçoit :

221 

222| Variable | Description |

223| :------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

224| `CLAUDE_RUNNER_WORK_ORDER_FILE` | Chemin vers un fichier temporaire contenant le JWT du bon de travail signé avec lequel le nouveau runner s'enregistre. Supprimé après la sortie du hook. Ne consignez pas le contenu du fichier. |

225| `CLAUDE_RUNNER_ORDER_ID` | Clé d'idempotence opaque, unique par demande de spawn et sûre pour les noms de ressources Kubernetes. Utilisez-la comme clé de déduplication de votre approvisionneur. |

226| `CLAUDE_RUNNER_SESSION_ID` | La session pour laquelle cette demande est. Vide pour les demandes de pré-réchauffage, qui démarrent un runner de secours avant toute session spécifique quand [`--min-idle`](/docs/fr/self-hosted-environments-reference#orchestrator-cli-flags) est défini, donc ne supposez pas que la variable est définie. |

227| `CLAUDE_RUNNER_SESSION_UUID` | Le même ID de session sous la forme UUID canonique. Vide pour les demandes de pré-réchauffage. |

228| `CLAUDE_RUNNER_ATTEMPT` | Combien de demandes de spawn cette session a eues. `0` pour les demandes de pré-réchauffage. |

229| `CLAUDE_RUNNER_ORDER_SERVER_TIME` | Heure du serveur à partir de l'en-tête HTTP `Date` de la réponse du sondage. Quand le hook vérifie le `exp` du JWT du bon de travail, comparez par rapport à cette valeur au lieu de l'horloge locale pour tolérer l'asymétrie. Vide quand la passerelle a omis l'en-tête. |

230| `CLAUDE_RUNNER_POOL_ID` | L'ID de l'environnement auquel le nouveau runner doit se joindre, sous la forme `ccpool_...` |

231| `CLAUDE_RUNNER_ACCOUNT_ID` | ID balisé du compte qui a mis en attente la session, pour l'acheminement par compte, le quota ou la rétrofacturation. Vide quand indisponible, et toujours vide pour les sessions du canal Claude Tag, qu'aucun compte ne met en attente. |

232| `CLAUDE_RUNNER_ACCOUNT_EMAIL` | Email du compte qui a mis en attente la session. Vide quand indisponible. Traitez l'email comme des informations d'identification personnelle et ne le consignez pas. |

233| `CLAUDE_RUNNER_PRIMARY_REPO_URL` | URL de la première source git de la session, pour l'acheminement vers un runner avec ce référentiel pré-réchauffé. Vide quand la session n'a pas de sources git. |

234| `CLAUDE_RUNNER_PRIMARY_REPO_REVISION` | Révision de la première source git de la session : branche, SHA ou tag. Vide quand non spécifié. |

235| `CLAUDE_RUNNER_REPO_SOURCES` | Tableau JSON de `{url, revision}` pour toutes les sources git de la session, pour les hooks qui acheminent sur un référentiel secondaire. Vide quand il n'y a pas de sources. |

236| `CLAUDE_RUNNER_CORRELATION_ID` | L'ID de corrélation fourni à la création de la session, renvoyé afin que le hook puisse mapper ce bon de travail à la demande qui a créé la session. Vide quand la session n'en a pas. |

237| `CLAUDE_RUNNER_CLIENT_PLATFORM` | La surface client qui a créé la session, comme `web_claude_ai`, `desktop_app`, `ios` ou `scheduled_trigger`, pour l'analyse d'adoption. Non défini quand la session n'a pas de surface enregistrée ou reconnue, et pour les demandes de pré-réchauffage ; vérifiez-le avec `[ -n "${CLAUDE_RUNNER_CLIENT_PLATFORM:-}" ]`, qui reste sûr sous `set -u`. |

238 

239Le runner généré s'enregistre avec le bon de travail à la place du secret d'environnement :

240 

241* **Démarrez-le avec le bon de travail** : pointez [`--environment-secret-file`](/docs/fr/self-hosted-environments-reference#runner-cli-flags) vers un fichier contenant le JWT du bon de travail, ou définissez `SELF_HOSTED_RUNNER_ENVIRONMENT_SECRET` à la valeur JWT.

242* **Copiez le JWT avant la sortie du hook** : l'orchestrateur supprime le fichier du bon de travail après la sortie du hook, donc copiez le JWT dans la charge de travail que vous soumettez, comme un Secret Kubernetes sur le Job généré, plutôt que de transmettre le chemin du fichier.

243* **Utilisez `--capacity 1` sur les runners générés** : un bon de travail lié à une session enregistre exactement un runner lié à cette session, donc une capacité plus élevée ajoute des emplacements qui ne reçoivent jamais de travail, et le runner enregistre un avertissement au démarrage.

244* **Les bons de travail de pré-réchauffage s'enregistrent sans liaison** : le runner de secours n'est pas lié à une session et revendique le travail en attente comme un runner de flotte fixe.

245 

246Le contrat a quatre règles agnostiques de l'approvisionneur :

247 

2481. **Soyez idempotent sur `CLAUDE_RUNNER_ORDER_ID`.** La redélivraison de la même demande doit générer au maximum un runner. Dérivez un nom de ressource déterministe à partir de l'ID et laissez votre plateforme rejeter le doublon.

2492. **Ne réessayez pas la charge de travail.** Un ID de commande signifie au maximum une charge de travail créée. Si le runner ne s'enregistre jamais, Anthropic re-demande avec un ID de commande frais après `--expected-spawn-seconds`.

2503. **Utilisez le contrat du code de sortie.** Sortie 0 signifie soumis. Sortie 1 signifie échec réessayable ; la session recule et est re-proposée. Sortie 2 ou supérieure signifie non-réessayable ; la session est bloquée du spawning à nouveau jusqu'à ce qu'un [Owner](/docs/fr/cloud-environments#organization-shared-environments) sélectionne **Retry** sur elle dans l'onglet **Activity** de l'environnement. Sur une sortie non-zéro, la queue du stderr du hook apparaît là comme la raison de l'échec, donc écrivez l'erreur exploitable sur stderr et jamais les secrets. Pour une demande de pré-réchauffage il n'y a pas de session à échouer : l'orchestrateur enregistre une sortie non-zéro localement uniquement, et le serveur re-demande le spawn après le bail.

2514. **Définissez `--expected-spawn-seconds` à au moins votre temps de démarrage p99.** C'est le bail côté serveur. Toutes les répliques d'orchestrateur doivent utiliser la même valeur.

252 

253Tout ce que le hook écrit sur stdout ou stderr apparaît dans le journal de l'orchestrateur avec les identifiants automatiquement supprimés. Si les sessions restent en attente, vérifiez le corps `/healthz` de l'orchestrateur pour les compteurs de file d'attente, puis ouvrez l'onglet **Activity** de votre environnement sur la [page d'administration **Cloud environments**](https://claude.ai/admin-settings/cloud-environments) : développez une session échouée là pour son erreur de spawn, et sélectionnez **Retry** pour la re-demander.

254 

255<h2 id="mcp-servers">

256 Serveurs MCP

257</h2>

258 

259Pour rendre les [serveurs MCP](/docs/fr/mcp) disponibles dans chaque session, ajoutez-les au moment de la construction de l'image avec la même commande `claude mcp add` utilisée sur une installation de bureau. Si votre runner est un processus nu plutôt qu'un conteneur, exécutez la même commande en tant qu'utilisateur du runner sur l'hôte, puis redémarrez le runner : il lit la configuration de l'hôte une fois au démarrage. Le flag `--scope user` est requis ; le scope local par défaut écrit sous une clé par répertoire que le runner ne sème pas dans les sessions. Par exemple, dans votre Dockerfile :

260 

261```dockerfile theme={null}

262RUN claude mcp add --scope user sidecar -- /usr/local/bin/mcp-sidecar

263RUN claude mcp add --scope user --transport http internal http://mcp-gateway.svc.cluster.local:8080

264```

265 

266Le runner prend un instantané de la configuration de l'hôte une fois au démarrage. L'instantané capture la clé `mcpServers` du `.claude.json` de l'hôte, qui vit à côté plutôt qu'à l'intérieur de `~/.claude/`, et le runner sème uniquement cette clé dans la configuration isolée de chaque session ; l'état du compte et l'historique du projet sont supprimés. Pour confirmer que les serveurs ont atteint les sessions, démarrez une session sur l'environnement et demandez à Claude de lister ses outils MCP ; le runner enregistre également un avertissement de démarrage pour toute entrée capturée dont le `type` n'est pas reconnu et supprime l'entrée, afin que vous puissiez voir pourquoi ce serveur manque des sessions. Quand `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` est défini, le runner lit `.claude.json` à partir de ce répertoire à la place, donc pointer la variable vers un répertoire vide désactive aussi le semis MCP.

267 

268Claude Code charge également les serveurs MCP à partir d'autres sources :

269 

270* Le fichier MCP géré au scope d'entreprise [managed MCP file](/docs/fr/managed-mcp) à son chemin système standard : `/etc/claude-code/managed-mcp.json` sur les hôtes runners Linux, `/Library/Application Support/ClaudeCode/managed-mcp.json` sur les hôtes macOS. Utilisez-le pour les flottes verrouillées où seuls les serveurs listés par l'administrateur peuvent charger. Voir [contrôle exclusif avec managed-mcp.json](/docs/fr/managed-mcp#exclusive-control-with-managed-mcp-json) pour les règles de précédence. Quand ce fichier est sur l'hôte runner, Claude Code ignore les serveurs MCP que le plan de contrôle d'Anthropic livre à une session, y compris les connecteurs claude.ai, et les nomme dans un avertissement sur stderr de l'enfant de la session, que le runner enregistre au niveau de journal `debug`. Avant v2.1.229, ces sessions se terminaient au démarrage avec `You cannot dynamically configure MCP servers when an enterprise MCP config is present`.

271* La clé [`managedMcpServers`](/docs/fr/settings-reference#managedmcpservers) dans les [paramètres gérés](/docs/fr/managed-settings) sur l'hôte runner : fournit les serveurs HTTP et SSE sans prendre le contrôle exclusif, donc les serveurs des autres sources se chargent toujours. Nécessite Claude Code v2.1.259 ou ultérieur.

272* `<repo>/.mcp.json` : scope du projet. Validez le fichier dans le référentiel ; ses serveurs sont pré-approuvés dans les sessions cloud.

273 

274Quand la livraison de connecteur est activée pour votre organisation, le plan de contrôle d'Anthropic livre les connecteurs que vous avez configurés sur claude.ai aux sessions créées de manière interactive via la configuration MCP fournie par le serveur, acheminée via `api.anthropic.com`. Les sessions créées par programmation, comme les [envois CLI](/docs/fr/self-hosted-environments-testing#run-the-test-loop), ne reçoivent pas la livraison de connecteur ; donnez-leur des serveurs MCP via l'une des autres sources que cette section énumère à la place. Le token OAuth de l'enfant ne porte pas un scope pour récupérer les connecteurs directement, donc l'enfant ne tente pas cette récupération lui-même ; la livraison est pilotée par le serveur.

275 

276`settings.json` ne porte pas de définitions de serveur MCP, et il n'y a pas de champ `mcpServers` de haut niveau dans le schéma des paramètres. Dans les paramètres gérés, fournissez les serveurs avec la clé [`managedMcpServers`](/docs/fr/settings-reference#managedmcpservers) à la place.

277 

278Les sessions héritent de l'environnement du runner, donc définissez [`ENABLE_TOOL_SEARCH`](/docs/fr/mcp#scale-with-mcp-tool-search) là pour contrôler la recherche d'outils MCP pour chaque session qu'un runner génère ; la page MCP couvre les valeurs.

279 

280<h2 id="prompt-sessions-to-push-their-work">

281 Inviter les sessions à envoyer leur travail

282</h2>

283 

284Les sessions hébergées par Anthropic exécutent un hook [`Stop`](/docs/fr/hooks#stop), le hook Claude Code qui s'exécute quand Claude finit de répondre, qui invite Claude à valider et envoyer son travail. Le runner n'en installe pas. Sans lui, une session qui se termine avec des changements non commis laisse ce travail uniquement sur le disque du runner, et le bouton **Create PR** dans claude.ai/code reste inactif jusqu'à ce que la branche existe sur le distant.

285 

286L'implémentation de référence ci-dessous a deux parties. Fusionnez le bloc de paramètres dans `~/.claude/settings.json` sur l'hôte runner, que le runner sème dans chaque session, et enregistrez le script comme `~/.claude/hooks/stop-hook-nudge.sh` sur l'hôte runner et rendez-le exécutable :

287 

288```json theme={null}

289{

290 "hooks": {

291 "Stop": [

292 {

293 "hooks": [

294 {

295 "type": "command",

296 "timeout": 10,

297 "command": "\"$CLAUDE_CONFIG_DIR/hooks/stop-hook-nudge.sh\""

298 }

299 ]

300 }

301 ]

302 }

303}

304```

305 

306```sh theme={null}

307#!/bin/sh

308# Implémentation de référence du hook Stop pour les runners auto-hébergés.

309#

310# Pousse Claude une fois par tour si le répertoire du projet a des changements

311# non commis OU des commits non envoyés, afin que le travail ne soit pas perdu

312# quand une session inactive est libérée et afin que le bouton "Create PR" sur

313# claude.ai/code s'allume.

314#

315# Niveau runner (pas de changements de référentiel) : déposez ce fichier à

316# ~/.claude/hooks/ sur l'hôte runner et fusionnez le bloc de paramètres du

317# hook Stop accompagnant dans ~/.claude/settings.json — le runner sème les deux

318# dans chaque session.

319# Alternative au niveau du référentiel : validez dans <repo>/.claude/hooks/ et

320# changez le chemin de la commande settings.json en $CLAUDE_PROJECT_DIR/.claude/hooks/.

321#

322# stdin : charge utile JSON du hook (voir https://code.claude.com/docs/en/hooks)

323# stdout : {"decision":"block","reason":"..."} pour pousser, ou rien pour permettre l'arrêt.

324 

325# Garde de re-entrée : le harnais définit stop_hook_active=true lors de la

326# re-invocation du hook Stop après un bloc. Sortez afin que nous ne poussions

327# qu'une fois par tour. Le harnais émet du JSON compact (pas d'espace après les

328# deux-points), sur lequel ce motif s'appuie ; utilisez jq si vous avez besoin

329# d'une vérification tolérante aux espaces.

330in=$(cat)

331case "$in" in *'"stop_hook_active":true'*) exit 0 ;; esac

332 

333d="$CLAUDE_PROJECT_DIR"

334 

335# Pas un référentiel git → rien à pousser.

336git -C "$d" rev-parse --git-dir >/dev/null 2>&1 || exit 0

337 

338# Pas de distant → « envoyer au distant » est insatisfaisable ; sortez.

339[ -z "$(git -C "$d" remote 2>/dev/null)" ] && exit 0

340 

341# Changements non commis (en attente, non en attente ou non suivis). Excluez

342# .claude/ entièrement — les paramètres semés par l'opérateur et l'état

343# d'exécution écrit par CLI (verrou du planificateur, worktrees, état de

344# routine) vivent là et ni l'un ni l'autre n'est du « travail non commis »

345# que le modèle doit envoyer.

346s=$(git -C "$d" status --porcelain -- . ':(exclude).claude/' 2>/dev/null)

347if [ -n "$s" ]; then

348 printf '{"decision":"block","reason":"There are uncommitted changes in the repository. Please commit and push these changes to the remote branch."}'

349 exit 0

350fi

351 

352# Commits non envoyés. Comptez les commits sur HEAD non accessibles à partir

353# d'aucune ref de suivi distant ou FETCH_HEAD. Cela fonctionne uniformément

354# pour :

355# - checkouts init+fetch (runner par défaut : seul FETCH_HEAD existe)

356# - checkouts basés sur clone (origin/* existent)

357# - le runner par défaut : l'enfant démarre sur la branche de résultat de

358# la session, que le runner crée après le checkout

359# - HEAD détaché, quand une configuration personnalisée ignore cette création

360# de branche

361# Sans point de référence du tout (jamais récupéré), restez silencieux plutôt

362# que de faux positif sur un tour en lecture seule.

363base=""

364git -C "$d" rev-parse --verify -q FETCH_HEAD >/dev/null && base="FETCH_HEAD"

365if [ -z "$base" ] && [ -z "$(git -C "$d" for-each-ref --count=1 refs/remotes/origin 2>/dev/null)" ]; then

366 exit 0

367fi

368# shellcheck disable=SC2086 # $base est soit "" soit "FETCH_HEAD", division de mot intentionnelle

369unpushed=$(git -C "$d" rev-list HEAD --not $base --remotes=origin --count 2>/dev/null) || unpushed=0

370if [ "$unpushed" -gt 0 ]; then

371 branch=$(git -C "$d" symbolic-ref --short -q HEAD)

372 if [ -n "$branch" ]; then

373 # $branch est influencée par l'attaquant — git-check-ref-format(1) permet

374 # les `` dans les noms de ref. `\` est interdit (règle 10) mais échappé

375 # de toute façon comme défense en profondeur bon marché.

376 # Échappez les métacaractères JSON avant d'interpoler dans la charge utile

377 # construite à la main afin qu'une branche comme x","continue":false ne

378 # puisse pas injecter de clés dans le JSON de sortie du hook que le harnais

379 # analyse. $unpushed est sûr — la garde -gt ci-dessus rejette tout ce qui

380 # n'est pas un entier simple.

381 branch_esc=$(printf '%s' "$branch" | sed 's/\\/\\\\/g; s/"/\\"/g')

382 printf '{"decision":"block","reason":"There are %s unpushed commit(s) on branch '\''%s'\''. Please push these changes to the remote repository."}' "$unpushed" "$branch_esc"

383 else

384 printf '{"decision":"block","reason":"There are %s unpushed commit(s) on a detached HEAD. Please create a branch and push it to the remote repository."}' "$unpushed"

385 fi

386 exit 0

387fi

388 

389exit 0

390```

391 

392Le hook pousse Claude à valider et envoyer avant la fin de la session, et reste silencieux quand le répertoire n'est pas un référentiel git ou n'a pas de distant.

393 

394<h2 id="permissions-and-tool-approval">

395 Permissions et approbation d'outils

396</h2>

397 

398Une session auto-hébergée n'a pas de terminal attaché, donc une invite de permission sans réponse bloque le tour jusqu'à ce que l'utilisateur réponde dans l'interface utilisateur. Le plan de contrôle d'Anthropic envoie la liste des outils de chaque session et les règles de permission avec la charge utile de travail ; la configuration par défaut pré-approuve les appels d'outils de routine, y compris `Bash`, et les sessions cloud [pré-approuvent les éditions de fichiers quel que soit le mode](/docs/fr/permission-modes#switch-permission-modes). Un appel que rien ne pré-approuve invite via l'interface utilisateur de la session.

399 

400<Note>

401 Épinglez uniquement le mode auto sur un environnement dont les conteneurs de session s'exécutent avec [sortie réseau par défaut-refuser](/docs/fr/self-hosted-environments-deploy#default-deny-egress) et le reste de la [section de durcissement](/docs/fr/self-hosted-environments-deploy#harden-your-deployment) en place. Les appels d'outils de routine, y compris les demandes réseau `Bash`, s'exécutent sans un humain dans la boucle sur l'ensemble d'outils pré-approuvés par défaut et en mode auto, donc la limite réseau est ce qui limite où ces appels peuvent atteindre.

402</Note>

403 

404Pour garder les invites au minimum quel que soit ce que le plan de contrôle envoie, épinglez le [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) à partir de votre script wrapper ou du hook [`command`](#command). Le mode auto permet aux sessions de s'exécuter sans invites de permission de routine : un modèle de classificateur séparé examine les actions avant qu'elles ne s'exécutent et bloque celles qu'il rejette, et les règles d'ask explicites forcent toujours une invite ; la page des modes de permission couvre ce que le classificateur vérifie. Le runner ajoute les flags calculés par le serveur avant d'invoquer le wrapper, et pour les flags à valeur unique comme `--permission-mode` l'analyseur honore la dernière occurrence, donc un flag que vous ajoutez après `"$@"` remplace la valeur envoyée par le serveur :

405 

406```bash theme={null}

407#!/bin/bash

408exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@" --permission-mode auto

409```

410 

411Pour pré-approuver des outils spécifiques à la place, ajoutez `--allowed-tools` avec vos règles, par exemple `--allowed-tools "Bash(bazel *) Bash(yarn *) mcp__internal__*"`. Les flags de liste comme `--allowed-tools` et `--disallowed-tools` s'accumulent entre les occurrences plutôt que de se remplacer, donc vos règles s'appliquent en plus de toutes les règles que le plan de contrôle envoie. Pour réduire, ajoutez `--disallowed-tools`, qui refuse les outils même si une autre règle les permet.

412 

413<h3 id="how-each-session’s-config-is-assembled">

414 Comment la configuration de chaque session est assemblée

415</h3>

416 

417Le runner donne à chaque session son propre répertoire de configuration, semé à partir d'un instantané en mémoire du `~/.claude/` de l'hôte que le runner capture une fois au démarrage : `settings.json`, `CLAUDE.md`, hooks, agents, commandes et skills dans votre image runner s'appliquent à chaque session comme la ligne de base au niveau utilisateur. Parce que l'instantané est pris au démarrage, les changements de configuration sur un hôte en cours d'exécution ne prennent effet qu'après un redémarrage du runner. Définissez `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` pour semer à partir d'un chemin différent, ou pointez-le vers un répertoire vide pour désactiver le semis.

418 

419Le `.claude/settings.json` validé dans le référentiel se superpose comme paramètres du projet. Les sessions lisent également [`managed-settings.json`](/docs/fr/settings#where-settings-live) à partir du chemin système standard dans votre image runner. Que ses clés s'appliquent aux côtés des [paramètres gérés par le serveur](/docs/fr/server-managed-settings) suit [comment Claude Code combine les sources gérées](/docs/fr/managed-settings#how-claude-code-combines-managed-sources) : par défaut, quand votre organisation livre des clés gérées par le serveur, les sessions ignorent le fichier de l'image runner à part les [clés que Claude Code lit à partir de chaque source d'administration](/docs/fr/managed-settings#keys-read-from-every-admin-source), comme le bloc `env`, les verrous de sandbox, les chemins binaires de sandbox et `forceRemoteSettingsRefresh`. Voir [précédence des paramètres](/docs/fr/settings#settings-precedence).

420 

421Quand le plan de contrôle d'Anthropic fournit une session avec des [hooks Claude Code](/docs/fr/hooks), le runner les installe aux côtés, pas par-dessus, votre propre configuration. Nécessite Claude Code v2.1.229 ou ultérieur.

422 

423* **Où ils atterrissent** : le runner écrit chaque script de hook fourni dans un sous-répertoire réservé `hooks/.ccr-launcher/` du répertoire de configuration de la session et enregistre les scripts dans un fichier de paramètres séparé qu'il transmet à la session avec `--settings`, laissant le `settings.json` semé et vos propres scripts à `hooks/<name>` intacts. Le runner recrée le sous-répertoire réservé pour chaque session et ne sème pas le contenu de l'hôte à `~/.claude/hooks/.ccr-launcher/` dans les sessions.

424* **Qui les crée** : le plan de contrôle remplit les scripts à partir de constantes fixes dans son propre déploiement, jamais à partir d'entrées par session ou tierces.

425* **Ce qui les gouverne toujours** : les hooks livrés via `--settings` entrent dans la configuration de hook fusionnée ordinaire, pas le niveau géré, donc vos paramètres gérés s'appliquent toujours. `disableAllHooks` les désactive, et ils ne font pas partie des catégories que [`allowManagedHooksOnly`](/docs/fr/settings-reference#allowmanagedhooksonly) garde chargées.

426 

427<h3 id="repository-committed-permission-rules">

428 Règles de permission validées dans le référentiel

429</h3>

430 

431Ne mettez pas une entrée `"Edit"`, `"Write"` ou `"NotebookEdit"` nue dans un `permissions.allow` validé dans le référentiel. Une règle d'outil de fichier nue correspond à l'outil quel que soit le chemin, accordant des écritures n'importe où sur l'hôte plutôt que uniquement l'espace de travail, donc la garde de confinement de portée d'écriture du runner signale la session ; avec [`--confine-repo-settings enforce`](/docs/fr/self-hosted-environments-reference#runner-cli-flags) elle refuse de générer la session au lieu de consigner et continuer. Voir la [section de durcissement](/docs/fr/self-hosted-environments-deploy#harden-your-deployment).

432 

433Un référentiel n'a besoin d'aucune règle d'outil de fichier du tout : les sessions cloud [pré-approuvent les éditions de fichiers quel que soit le mode](/docs/fr/permission-modes#switch-permission-modes). Si vous validez une règle, limitez-la à l'espace de travail, comme `"Edit(/**)"`; une seule barre oblique de début est relative à la racine du projet, qui est l'espace de travail de la session. Les règles d'outil de fichier nues sont correctes dans le `settings.json` au niveau de l'hôte de l'opérateur, puisque ce fichier n'est pas validé dans le référentiel.

434 

435Un `defaultMode` de `auto` n'est honoré que à partir du fichier de paramètres au niveau de l'image ou au niveau utilisateur, donc un référentiel extrait ne peut pas se donner le mode auto. Pour les modes que les sessions cloud acceptent et la syntaxe complète des règles, voir [modes de permission](/docs/fr/permission-modes).

436 

437<h2 id="what’s-next">

438 Prochaines étapes

439</h2>

440 

441* [Référence](/docs/fr/self-hosted-environments-reference) : chaque flag CLI, variable d'environnement et métrique

442* [Vérifier l'identité de la session](/docs/fr/self-hosted-environments-identity) : valider le token de session à partir de services en dehors du runner

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éployer des environnements auto-hébergés en production

6 

7> Exécuter des runners auto-hébergés en production : durcissement de la sécurité, contrôle de la sortie réseau, identifiants git, recettes Kubernetes et Compose, et dépannage.

8 

9<Note>

10 Les environnements auto-hébergés sont en bêta publique sur les plans Team et Enterprise ; [Disponibilité et limitations](/docs/fr/self-hosted-environments#availability-and-limitations) couvre le chemin d'activation. Cette page couvre l'exécution de la flotte en production ; consultez le [guide de démarrage rapide](/docs/fr/self-hosted-environments-quickstart) pour votre premier runner et session.

11</Note>

12 

13Un [environnement auto-hébergé](/docs/fr/self-hosted-environments) exécute les [sessions cloud](/docs/fr/claude-code-on-the-web) de Claude Code sur des runners que vous déployez dans votre réseau, et en production ces sessions exécutent du code dirigé par le modèle au nom de tous ceux qui peuvent dispatcher une session vers l'environnement. Cette page s'adresse à l'opérateur qui amène un environnement fonctionnel en production. Elle parcourt le déploiement dans l'ordre : ce qu'il faut verrouiller avant de connecter des systèmes réels, la sortie réseau dont la flotte a besoin, comment les sessions s'authentifient auprès de votre hôte git, les recettes de déploiement elles-mêmes, et ce qu'il faut vérifier quand les sessions se comportent mal.

14 

15<h2 id="harden-your-deployment">

16 Sécurisez votre déploiement

17</h2>

18 

19Un runner auto-hébergé exécute du code arbitraire, dirigé par le modèle, sur votre infrastructure au nom de tous ceux qui peuvent dispatcher une session vers son environnement. Il s'agit de tout membre de votre organisation Anthropic, et de toute personne qui peut démarrer une session de canal [Claude Tag](https://claude.com/docs/claude-tag/overview) dans une portée qu'un propriétaire a routée vers l'environnement. Travaillez sur chaque élément avant de connecter un environnement à des systèmes de production :

20 

21* **Conteneurs éphémères, par session** : exécutez chaque processus runner dans un conteneur ou une VM fraîche qui est détruite lorsque le processus se termine, avec `--capacity 1` et la valeur par défaut `--drain-grace-sec 0` afin que chaque conteneur serve exactement une session. À une capacité plus élevée, ou avec une période de drainage positive, un conteneur sert plusieurs sessions du même [propriétaire verrouillé](/docs/fr/self-hosted-environments#key-concepts) ; voir [Cycle de vie du runner](/docs/fr/self-hosted-environments#runner-lifecycle). Ne réutilisez pas un système de fichiers entre les redémarrages du runner, sauf dans la configuration délibérée [checkout pré-chauffé](#reuse-a-pre-warmed-checkout), et jamais entre les propriétaires.

22* **Pas de larges identifiants dans l'image** : n'incluez pas de clés SSH de longue durée, d'identifiants de fournisseur cloud, ou de jetons d'accès personnel qui accordent plus que ce qu'une session a besoin. Générez les identifiants utilisés pendant une session, tels que les jetons push ou API, par session à partir de votre [script wrapper](/docs/fr/self-hosted-environments-configuration#wrapper-scripts). Pour le clone initial, qui se produit avant l'exécution du wrapper, utilisez un [hook de cycle de vie `checkout`](/docs/fr/self-hosted-environments-configuration#checkout) ou [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) ; voir [Configurer git](#configure-git).

23* **Gardez le secret de l'environnement loin des hôtes exécutant les sessions** : le secret de l'environnement peut enregistrer des runners et récupérer toute session mise en file d'attente sur l'environnement. Sur une flotte fixe, il réside sur chaque hôte runner, où le code de toute session peut lire le fichier secret. Préférez les [runners à la demande](/docs/fr/self-hosted-environments-configuration#on-demand-runners), où le secret reste sur l'hôte orchestrateur, qui n'exécute jamais de code utilisateur, et chaque runner reçoit un bon de travail à usage unique qui enregistre exactement un runner. Sur une flotte fixe, traitez le fichier secret-environnement comme lisible par toute session et faites tourner le secret après tout compromis de session suspecté.

24* **Sortie réseau par défaut-refuser** : limitez le trafic sortant du conteneur runner et session à votre propre limite réseau sur chaque environnement ; [Sortie par défaut-refuser](#default-deny-egress) couvre ce qu'il faut autoriser et pourquoi.

25* **IAM hôte avec privilèges minimaux** : l'identité de calcul attachée à l'hôte runner, telle qu'un profil d'instance ou un compte de service de nœud, ne devrait accorder que ce dont le runner lui-même a besoin. Les sessions devraient obtenir leurs propres identifiants via votre script wrapper plutôt que d'hériter de ceux de l'hôte.

26* **Bloquez le point de terminaison des métadonnées cloud des sessions** : garder les sessions hors de l'identité hôte nécessite de bloquer leur accès au point de terminaison des métadonnées, et les politiques de sortie au niveau du sous-réseau n'interceptent pas le trafic de métadonnées link-local, donc bloquez-le dans le conteneur lui-même :

27 

28 * IMDSv2 avec une limite de saut d'un

29 * GKE Workload Identity avec dissimulation des métadonnées

30 * Un refus explicite pour `169.254.169.254` dans l'espace de noms réseau du conteneur de session

31 

32 Le bloc s'applique également à votre script wrapper et aux hooks de cycle de vie, puisqu'ils partagent le conteneur. Authentifiez tout échange de jeton avec le [JWT de session](/docs/fr/self-hosted-environments-identity) contre votre propre service de jeton sur une sortie autorisée, ou utilisez une identité web basée sur fichier telle que les rôles IAM pour les comptes de service (IRSA) sur Amazon EKS.

33* **Isolation du système de fichiers par runner** : chaque processus runner obtient son propre répertoire de travail qu'aucun autre processus sur l'hôte ne peut lire ou écrire. Rendez `--hooks-dir`, le script wrapper, et le `~/.claude/` de l'hôte en lecture seule pour la session, soit intégrés dans l'image, soit montés en lecture seule.

34* **Dispatch n'a pas de contrôle d'accès par environnement** : tout membre de votre organisation Anthropic peut dispatcher une session vers n'importe lequel de ses environnements. Si un propriétaire [route les canaux Claude Tag vers l'environnement](/docs/fr/cloud-environments#set-the-environment-a-claude-tag-channel-uses), toute personne que le [paramètre d'accès Claude Tag](https://claude.com/docs/claude-tag/admins/restrict-access#restrict-who-can-use-claude) admet peut démarrer des sessions de canal qui s'y exécutent. Par défaut, il s'agit de toute personne dans l'espace de travail Slack connecté, avec ou sans compte Claude. Traitez chaque hôte runner comme accessible pour l'exécution de code par tous ceux qui peuvent dispatcher vers lui, et placez sur un hôte runner uniquement les données et identifiants que toutes ces personnes sont autorisées à lire. [`--lock-to-account`](/docs/fr/self-hosted-environments-reference#runner-cli-flags) limite les sessions de quel compte un hôte donné exécute, mais cela ne réduit pas qui peut dispatcher dans l'environnement. Pour faire des environnements auto-hébergés la seule option de sélection, un [propriétaire](/docs/fr/cloud-environments#organization-shared-environments) peut masquer les environnements hébergés par Anthropic pour toute l'organisation à partir de la page [**Environnements cloud**](https://claude.ai/admin-settings/cloud-environments).

35* **Appliquez la garde des paramètres de dépôt** : choisissez le mode de garde avec [`--confine-repo-settings`](/docs/fr/self-hosted-environments-reference#runner-cli-flags). La valeur par défaut `warn` enregistre une violation et lance quand même la session, `enforce` refuse la session, et `off` désactive l'analyse. Le runner analyse les paramètres validés de chaque dépôt pour :

36 

37 * Une autorisation qui se résout en dehors de l'espace de travail propre de cette session : une entrée `additionalDirectories`, une règle `Edit`, `Write`, ou `NotebookEdit` dans `permissions.allow`, ou une entrée `sandbox.filesystem.allowWrite` ou `allowRead`

38 * Un bloc `env` non vide

39 * Un remplacement de posture d'opérateur tel que `sandbox.enabled: false`

40 

41 La garde s'exécute indépendamment de [`--trust-workspace`](/docs/fr/self-hosted-environments-reference#runner-cli-flags), et ne couvre pas les hooks de dépôt, `.mcp.json`, ou les règles Bash ; voir [Permissions et approbation des outils](/docs/fr/self-hosted-environments-configuration#permissions-and-tool-approval) pour savoir où ces autorisations doivent se trouver.

42 

43<Note>

44 La liste d'autorisation IP de votre organisation ne couvre pas le trafic du runner auto-hébergé par défaut. Ne vous fiez pas à elle comme contrôle réseau pour le trafic du runner ou de la session ; appliquez plutôt une sortie par défaut-refuser à votre propre limite réseau, et contactez votre équipe de compte Anthropic si vous souhaitez l'application de la liste d'autorisation IP pour votre organisation.

45</Note>

46 

47<h2 id="network-requirements">

48 Exigences réseau

49</h2>

50 

51Le runner et les enfants de session qu'il génère établissent des connexions sortantes vers les hôtes ci-dessous. Limitez la sortie du conteneur de session à ces hôtes et aux services internes spécifiques que les sessions doivent atteindre ; [Sortie par défaut-refuser](#default-deny-egress) couvre comment et pourquoi.

52 

53Ces hôtes sont toujours requis :

54 

55| Hôte | Port | Utilisé pour |

56| :------------------------------------------------------------------- | :------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

57| `api.anthropic.com` | 443, HTTPS ; WSS pour le connecteur SCM uniquement | Plan de contrôle du runner et streaming de session, inférence de modèle, drapeaux de fonctionnalités, analytique de produit, récupérations de clés [JWKS](/docs/fr/self-hosted-environments-identity), signature de commit, le proxy git quand `--use-anthropic-git-proxy` est défini, et le tunnel [connecteur SCM](/docs/fr/self-hosted-environments-reference#scm-connector-flags) de l'orchestrateur quand `--scm-connector-host` est défini |

58| Votre hôte git, tel que `github.com` ou votre hôte GitHub Enterprise | 443 ou 22 | Clonage et push de référentiels. Non nécessaire si le runner utilise `--use-anthropic-git-proxy`, qui route le trafic git via `api.anthropic.com`. |

59 

60Que ces hôtes soient nécessaires dépend de votre configuration :

61 

62| Hôte | Port | Quand requis |

63| :----------------------------------- | :--- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

64| `downloads.claude.ai` | 443 | Au moment de l'installation, quand vous installez ou mettez à jour Claude Code sur l'hôte avec l'installateur natif ; le script `install.sh` lui-même est servi depuis `claude.ai`. Au moment de l'exécution de la session, uniquement quand les sessions installent des plugins depuis la place de marché officielle Anthropic. |

65| `storage.googleapis.com` | 443 | Au moment de l'exécution de la session, pour les comptages d'installation de plugins et les métadonnées affichées dans `/plugin`. |

66| `code.claude.com` et `claude.com` | 443 | Recherches de documentation par l'agent claude-code-guide intégré et demandes WebFetch pré-approuvées pendant les sessions. Bloquer ces hôtes affecte uniquement les recherches de documentation. |

67| `*.frame.claudeusercontent.com` | 443 | Uniquement quand l'[outil Artifact](/docs/fr/artifacts#availability) est disponible pour les sessions dans votre organisation ; les valeurs par défaut varient selon le plan, selon le tableau de disponibilité là-bas. Définissez `CLAUDE_CODE_DISABLE_ARTIFACT=1` sur le runner pour garder l'outil désactivé indépendamment du paramètre d'organisation. |

68| `registry.npmjs.org` | 443 | Quand une session installe un plugin, à la fois pour récupérer les packages de plugin source npm et pour installer les dépendances Node.js d'un plugin, ou quand un serveur MCP lancé par `npx` s'exécute |

69| `http-intake.logs.us5.datadoghq.com` | 443 | Métriques opérationnelles Anthropic. Uniquement quand `CLAUDE_CODE_BYOC_ENABLE_DATADOG=1` est défini ; désactivé par défaut dans les environnements auto-hébergés. |

70| `browser-intake-us5-datadoghq.com` | 443 | Téléchargements de rapports d'erreurs Anthropic, envoyés uniquement quand [le rapport d'erreurs](/docs/fr/data-usage#telemetry-services) est activé pour le compte de la session. Supprimé par `DISABLE_ERROR_REPORTING=1` ou `DISABLE_TELEMETRY=1`. |

71 

72Le runner n'atteint pas `statsig.anthropic.com`, `*.sentry.io`, `claude.ai`, ou `platform.claude.com`. Ces hôtes apparaissent dans certaines listes de contrôle réseau d'entreprise plus anciennes, mais vous n'avez pas besoin de les autoriser pour le trafic du runner ou de la session : les récupérations de drapeaux de fonctionnalités vont à `api.anthropic.com`, et le runner s'authentifie avec le secret de l'environnement plutôt qu'avec OAuth interactif. Deux flux côté hôte atteignent `claude.ai`, donc exécutez-les à partir d'un hôte dont la sortie le permet plutôt que d'élargir la sortie du conteneur de session : l'installateur d'une ligne récupère `install.sh` depuis `claude.ai` au moment de l'installation, et `claude auth login` interactif, que le [guide de configuration](/docs/fr/self-hosted-environments-quickstart#set-up-an-environment-and-runner), le mode signé du `doctor`, et [la dispatch CI](/docs/fr/self-hosted-environments-testing#authenticate-from-ci) utilisent, se connecte via `claude.ai`, `claude.com`, et `platform.claude.com`. `mcp-proxy.anthropic.com` n'est pas requis non plus : les sessions auto-hébergées ne l'utilisent pas, et la livraison de vos connecteurs claude.ai d'organisation aux sessions, quand activée pour votre organisation, route via `api.anthropic.com`. Consultez [Serveurs MCP](/docs/fr/self-hosted-environments-configuration#mcp-servers).

73 

74<h3 id="default-deny-egress">

75 Sortie par défaut-refuser

76</h3>

77 

78Déployez les conteneurs runner et session dans un segment réseau ou un espace de noms dont le trafic sortant est limité aux hôtes du [tableau des exigences réseau](#network-requirements), votre hôte git, et les services internes spécifiques que les sessions doivent atteindre. Le produit ne peut pas vérifier ou appliquer cela, donc appliquez-le à votre propre limite réseau sur chaque environnement. Le code de session est dirigé par le modèle et peut tenter des connexions vers des hôtes arbitraires ; la sortie par défaut-refuser au niveau réseau limite où ces tentatives peuvent atterrir. Cela s'applique indépendamment du mode de permission : l'ensemble d'outils pré-approuvé par défaut inclut déjà `Bash`, donc la sortie shell s'exécute sans invite même sans [mode auto](/docs/fr/self-hosted-environments-configuration#permissions-and-tool-approval).

79 

80Pour plus de détails sur la télémétrie que chaque session émet et comment la désactiver, consultez [Télémétrie](/docs/fr/self-hosted-environments-reference#telemetry).

81 

82<h3 id="authenticate-to-an-egress-proxy">

83 S'authentifier auprès d'un proxy de sortie

84</h3>

85 

86Certains proxies de sortie d'entreprise nécessitent un en-tête `Proxy-Authorization` sur chaque connexion. Le jeton dans cet en-tête tourne souvent trop vite pour être écrit dans l'URL du proxy que vous définissez dans `HTTPS_PROXY`. Définissez `HTTPS_PROXY` ou `HTTP_PROXY` sur l'URL de votre proxy comme d'habitude, puis définissez `--proxy-authorization-command` ou `--proxy-authorization-file` pour dire au runner où lire la valeur de l'en-tête. Les deux drapeaux nécessitent Claude Code v2.1.238 ou plus récent.

87 

88<h4 id="choose-where-the-proxy-authorization-value-comes-from">

89 Choisir d'où provient la valeur `Proxy-Authorization`

90</h4>

91 

92Choisissez le drapeau qui correspond à la façon dont vous produisez le jeton `Proxy-Authorization` :

93 

94* **[`--proxy-authorization-command <command>`](/docs/fr/self-hosted-environments-reference#runner-cli-flags)** : choisissez ceci pour un jeton que vous générez à la demande. Le runner exécute la commande shell et utilise sa stdout rognée comme valeur d'en-tête, par exemple `Bearer <token>`.

95* **[`--proxy-authorization-file <path>`](/docs/fr/self-hosted-environments-reference#runner-cli-flags)** : choisissez ceci pour un jeton qu'un autre processus fait tourner en place. Le runner lit le fichier et utilise son contenu rogné comme valeur d'en-tête.

96 

97<h4 id="configurations-the-runner-refuses-to-start-with">

98 Configurations que le runner refuse de démarrer avec

99</h4>

100 

101Chaque drapeau a également une forme de variable d'environnement, listée à côté dans la [référence des drapeaux CLI du runner](/docs/fr/self-hosted-environments-reference#runner-cli-flags). Avant que le runner ne contacte votre proxy ou le plan de contrôle, il vérifie les drapeaux et leurs variables, et refuse de démarrer dans trois cas :

102 

103* **Les deux drapeaux définis** : un drapeau plus la variable d'environnement de l'autre drapeau compte comme la définition des deux.

104* **Pas d'URL de proxy** : ni `HTTPS_PROXY` ni `HTTP_PROXY` ne contient une URL `http://` ou `https://`. Le runner lit les deux variables en majuscules ou minuscules, et ne consulte pas `ALL_PROXY`.

105* **L'un ou l'autre drapeau passé à la sous-commande orchestrateur** : `self-hosted-runner orchestrator` n'accepte pas les drapeaux ou leurs variables d'environnement. Passez le drapeau à chaque runner que l'orchestrateur démarre à la place.

106 

107<h4 id="what-the-runner-changes-while-a-proxy-authorization-flag-is-set">

108 Ce que le runner change quand un drapeau d'autorisation de proxy est défini

109</h4>

110 

111Avec l'un ou l'autre drapeau défini, le runner démarre son propre écouteur et envoie le trafic proxy de lui-même, ses hooks de cycle de vie, et ses sessions via cet écouteur. L'écouteur ajoute l'en-tête `Proxy-Authorization` en route vers votre proxy.

112 

113* **Écouteur** : l'écouteur est un proxy avant sur `127.0.0.1`. Le runner démarre l'écouteur avant de s'enregistrer auprès du plan de contrôle, et quitte au démarrage si l'écouteur ne peut pas démarrer.

114* **Variables de proxy** : le runner réécrit lequel de `HTTPS_PROXY` et `HTTP_PROXY` vous avez défini pour qu'il pointe vers l'écouteur. Cette valeur réécrite atteint le runner lui-même, ses hooks de cycle de vie, et chaque session qu'il exécute.

115* **Rotation de jeton** : un jeton pivoté prend effet sans redémarrage. Pour chaque connexion que l'écouteur ouvre vers votre proxy, le runner exécute votre commande ou relit votre fichier et ajoute le résultat comme en-tête.

116* **Environnement de session** : une session atteint votre proxy uniquement via l'écouteur. Dans l'environnement de chaque session, le runner supprime `ALL_PROXY`, supprime toute orthographe de `HTTPS_PROXY` ou `HTTP_PROXY` que vous n'avez pas définie, et épingle `NO_PROXY` à la valeur du runner.

117* **Journaux** : le runner ne journalise jamais la valeur de l'en-tête.

118 

119<h2 id="configure-git">

120 Configurer git

121</h2>

122 

123Le runner gère les checkouts de référentiel mais ne configure pas l'identité git ou les identifiants par défaut. Vous contrôlez l'image et l'environnement de processus du runner, donc vous contrôlez la configuration git. Choisissez l'une de deux approches :

124 

125* **Laisser le runner configurer git** : démarrez le runner avec `--configure-git` pour qu'il écrive la même identité et configuration de signature de commit que les sessions hébergées par Anthropic utilisent

126* **Livrer la configuration git dans votre image** : définissez l'identité et les identifiants push vous-même, par exemple pour committer sous votre propre identité de bot

127 

128Planchers de version Git sur l'hôte runner : [`--configure-git`](#let-the-runner-configure-git) la signature de commit SSH nécessite Git 2.34 ou plus récent, [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) nécessite 2.32 ou plus récent, et reprendre les sessions à partir de branches poussées par [`--push-outcome-on-release`](/docs/fr/self-hosted-environments-reference#runner-cli-flags) nécessite 2.29 ou plus récent. Git 2.24 est suffisant si vous omettez les trois et gérez l'identité git vous-même.

129 

130<h3 id="let-the-runner-configure-git">

131 Laisser le runner configurer git

132</h3>

133 

134Démarrez le runner avec `--configure-git`, ou définissez `SELF_HOSTED_RUNNER_CONFIGURE_GIT=1`, pour qu'il écrive la configuration git globale au démarrage :

135 

136* `user.name = Claude` et `user.email = noreply@anthropic.com`, correspondant aux sessions hébergées par Anthropic

137* Signature de commit et de tag au format SSH, routée via un shim géré par le runner qui signe chaque commit via le service de signature d'Anthropic en utilisant les identifiants de la session. Les signatures sont vérifiables sur GitHub par rapport à la clé de signature SSH publiée d'Anthropic.

138* `push.negotiate = true`, donc git demande à votre hôte git quels commits il possède déjà avant de préparer un push. Nécessite Claude Code v2.1.257 ou plus récent.

139* `core.hooksPath` pointant vers un répertoire de hooks géré par le runner. Ses hooks `commit-msg` et `prepare-commit-msg` ajoutent une remorque `Co-authored-by:` pour le créateur de la session à chaque commit, construite à partir de l'email dans [`CCR_SESSION_ACCOUNT_EMAIL`](/docs/fr/self-hosted-environments-configuration#wrapper-scripts) et omise quand cette variable n'est pas définie. Si votre image définit déjà `core.hooksPath`, le runner laisse votre paramètre en place, ignore l'installation de ces hooks, et affiche un avertissement `[runner:git]`.

140 

141La signature de commit nécessite git 2.34 ou plus récent ; le runner vérifie au démarrage et quitte avec une erreur si votre git est plus ancien. Ce drapeau ne configure pas les identifiants push, que vous fournissez toujours dans l'image.

142 

143<h3 id="ship-git-config-in-your-image">

144 Livrer la configuration git dans votre image

145</h3>

146 

147L'identité Git est requise pour tout commit. Définissez-la au niveau du système dans votre Dockerfile pour que la configuration s'applique indépendamment de l'utilisateur sous lequel le processus runner s'exécute :

148 

149```dockerfile theme={null}

150RUN git config --system user.name "Claude" && \

151 git config --system user.email "noreply@anthropic.com"

152```

153 

154Sans une identité, `git commit` échoue avec `Please tell me who you are` et les sessions ne peuvent pas progresser. Vous pouvez utiliser votre propre identité de bot à la place ; le runner ne remplace pas ces valeurs.

155 

156Ne cuisez pas les identifiants push longue durée ou largement scoped dans une image runner partagée : un identifiant dans l'image est disponible pour chaque session que l'image exécute, peu importe qui l'a démarrée. À la place, créez un jeton court-durée, least-scoped par session à partir de votre [script wrapper](/docs/fr/self-hosted-environments-configuration#wrapper-scripts), en utilisant l'identité du créateur de session décodée du JWT de session. Associez-le à un conteneur éphémère par session, qui nécessite `--capacity 1`, pour qu'aucun identifiant ne survive à la session qui l'a créé ; consultez la [section de durcissement](#harden-your-deployment).

157 

158Si vous devez configurer les identifiants push au niveau de l'image, par exemple pour une clé de déploiement en lecture seule, limitez-les aussi étroitement que votre hôte git le permet :

159 

160* Une clé de déploiement SSH limitée à un référentiel avec une réécriture `url.<base>.insteadOf`

161* Un `credential.helper` qui retourne un jeton minimalement scoped

162* `GIT_SSH_COMMAND` pointant vers une clé étroitement scoped

163 

164Quel que soit le mécanisme que vous configurez, il doit fonctionner sans invite, car le clone intégré du runner et la récupération désactivent les invites que git, SSH, et Git Credential Manager afficheraient autrement :

165 

166* Le runner définit `GIT_TERMINAL_PROMPT=0`, donc git ne demande pas de nom d'utilisateur ou de mot de passe.

167* Le runner exécute SSH avec `BatchMode=yes`, ajouté à votre `GIT_SSH_COMMAND` si vous en définissez un, donc SSH ne demande pas de phrase de passe ou de confirmation d'hôte.

168* Le runner définit `GCM_INTERACTIVE=never`, donc Git Credential Manager n'ouvre pas de dialogue de connexion.

169* Le runner efface `core.askPass`, donc si vous utilisez un helper askpass, définissez-le via la variable d'environnement `GIT_ASKPASS` à la place.

170 

171Si votre hôte git rejette l'identifiant, ou que vous n'en avez pas configuré un, le runner réessaie quelques fois puis échoue la préparation du référentiel. Le runner ne transmet pas ces paramètres dans l'environnement de la session.

172 

173Si les répertoires de checkout sont possédés par un uid différent du processus runner, git refuse d'opérer sur eux ; ajoutez `safe.directory` :

174 

175```dockerfile theme={null}

176RUN git config --system --add safe.directory '*'

177```

178 

179<h3 id="use-the-anthropic-git-proxy">

180 Utiliser le proxy git Anthropic

181</h3>

182 

183Démarrez le runner avec `--use-anthropic-git-proxy`, ou définissez `CLAUDE_RUNNER_USE_GIT_PROXY=1`, pour qu'il clone via le proxy git d'Anthropic, authentifié avec le jeton court-durée de la session. Pour les sessions utilisateur ordinaires, le proxy utilise le jeton OAuth GitHub ou GitHub Enterprise stocké pour le créateur de session ; pour les sessions de bot et d'agent, il utilise le jeton d'installation GitHub App de votre organisation. De toute façon, l'image runner n'a besoin d'aucun identifiant git : pas de clés SSH, pas de credential helper, pas de `.netrc`. C'est le même chemin d'authentification que les environnements hébergés par Anthropic utilisent.

184 

185Le proxy nécessite `--capacity 1` car l'URL du proxy est par session, et git 2.32 ou plus récent car les anciennes versions de git ignorent le mécanisme de configuration que le proxy utilise pour isoler les sessions les unes des autres. Le runner refuse de démarrer si l'une ou l'autre exigence n'est pas satisfaite. Parce que le proxy récupère du côté d'Anthropic, votre hôte git doit être accessible depuis l'infrastructure Anthropic, la même exigence que les sessions hébergées par Anthropic ont ; pour un hôte git qui n'est routable que dans votre réseau, utilisez un [hook de cycle de vie `checkout`](/docs/fr/self-hosted-environments-configuration#checkout) à la place. Chaque processus runner gère une session à la fois, donc exécutez plus de répliques pour le parallélisme. Quand le proxy est activé, `--git-host-rewrite` et `--git-ssh-rewrite` n'ont aucun effet : l'URL du proxy pointe vers `api.anthropic.com`, pas votre hôte git.

186 

187Le runner signale également l'adhésion à Anthropic quand il s'enregistre, affichant `Registering as opted in to Anthropic-managed git (--use-anthropic-git-proxy)` au démarrage. Chaque session sur un runner ayant adhéré utilise ensuite soit git géré par Anthropic, soit l'URL du proxy par session. Quand une session utilise l'URL du proxy par session, le runner enregistre une ligne `[runner:warn]` indiquant cela.

188 

189<h3 id="rewrite-git-urls-for-private-networks">

190 Réécrire les URL git pour les réseaux privés

191</h3>

192 

193Les URL de référentiel arrivent du plan de contrôle en HTTPS, avec le nom d'hôte de votre hôte git ; pour GitHub Enterprise, c'est le nom d'hôte que vous avez configuré pour l'[intégration GitHub Enterprise](/docs/fr/github-enterprise-server) dans les paramètres d'administration de Claude Code sur claude.ai. Deux drapeaux répétables réécrivent ces URL avant le clone :

194 

195* `--git-host-rewrite <from>=<to>` : pour le DNS à horizon divisé, où Anthropic atteint votre hôte git via un nom d'hôte externe mais les runners doivent utiliser un interne

196* `--git-ssh-rewrite <host>` : pour les hôtes git qui n'acceptent que SSH, réécrivant `https://<host>/owner/repo` en `git@<host>:owner/repo`

197 

198La réécriture d'hôte s'exécute en premier, donc listez le nom d'hôte interne dans `--git-ssh-rewrite` si vous avez besoin des deux. Pour un contrôle complet du checkout, utilisez un [hook de cycle de vie `checkout`](/docs/fr/self-hosted-environments-configuration#checkout).

199 

200<h2 id="build-the-runner-image">

201 Construire l'image du runner

202</h2>

203 

204Anthropic ne publie pas d'image runner pré-construite. Construisez la vôtre autour du binaire `claude`, en superposant la chaîne d'outils que vos référentiels ont besoin : runtimes de langage, compilateurs, gestionnaires de paquets, et sidecars [MCP](/docs/fr/mcp).

205 

206Les recettes ci-dessous utilisent `--capacity 4`, donc un conteneur sert jusqu'à quatre sessions concurrentes du même propriétaire verrouillé. Cela ne fournit pas l'isolation du conteneur par session dans la [section de durcissement](#harden-your-deployment) : avant de connecter un environnement aux systèmes de production, soit exécutez les recettes à `--capacity 1` avec un conteneur par session, soit utilisez les [runners à la demande](/docs/fr/self-hosted-environments-configuration#on-demand-runners), qui gardent également le secret de l'environnement hors des hôtes exécutant les sessions.

207 

208Ce Dockerfile est un point de départ minimal :

209 

210```dockerfile theme={null}

211FROM debian:bookworm-slim

212ARG CLAUDE_CODE_VERSION

213RUN apt-get update && apt-get install -y --no-install-recommends git curl ca-certificates openssh-client \

214 && rm -rf /var/lib/apt/lists/*

215RUN curl -fsSL "https://downloads.claude.ai/claude-code-releases/${CLAUDE_CODE_VERSION:?set with --build-arg CLAUDE_CODE_VERSION}/linux-x64/claude" \

216 -o /usr/local/bin/claude && chmod +x /usr/local/bin/claude

217RUN git config --system user.name "Claude" \

218 && git config --system user.email "noreply@anthropic.com" \

219 && git config --system --add safe.directory '*'

220ENTRYPOINT ["claude"]

221```

222 

223Échangez `linux-x64` pour `linux-arm64` si vos nœuds sont ARM, ou pour `linux-x64-musl` ou `linux-arm64-musl` sur une image basée sur musl comme Alpine ; consultez [Configuration Alpine Linux](/docs/fr/setup#alpine-linux-and-musl-based-distributions) pour les paquets supplémentaires dont les images musl ont besoin. L'URL est l'emplacement de version standard de Claude Code, donc vous pouvez vérifier le binaire téléchargé par rapport au manifeste signé de la version comme décrit dans [Intégrité binaire et signature de code](/docs/fr/setup#binary-integrity-and-code-signing). Construisez l'image avec Claude Code version 2.1.224 ou plus récent, puis poussez-la vers votre registre et référencez-la dans les recettes ci-dessous :

224 

225```bash theme={null}

226docker build --build-arg CLAUDE_CODE_VERSION=2.1.224 -t <your-registry>/claude-runner:latest .

227```

228 

229<h2 id="size-cpu-and-memory-for-sessions">

230 Dimensionner le CPU et la mémoire pour les sessions

231</h2>

232 

233Dimensionnez le conteneur ou l'hôte d'un runner pour les sessions qu'il exécute plutôt que pour le processus runner lui-même. Le runner lui-même interroge le système pour trouver du travail, prépare le checkout de chaque session, exécute vos [hooks de cycle de vie](/docs/fr/self-hosted-environments-configuration#lifecycle-hooks), et démarre et supervise les processus de session. La charge provient des sessions : chacune est un processus Claude Code plus tout ce qu'il démarre, comme les builds, les suites de tests, les installations de paquets, et les [serveurs MCP](/docs/fr/mcp).

234 

235Pour une session, commencez par les valeurs suivantes, exprimées comme des demandes et des limites Kubernetes ou l'équivalent de votre plateforme, et traitez-les comme un point de départ plutôt que comme une exigence :

236 

237* **Mémoire** : une demande et une limite de 4 Gio chacune, ce qui satisfait le minimum de 4 Go dans les [exigences système](/docs/fr/setup#system-requirements) de Claude Code. Gardez les deux égales afin que le planificateur tienne compte de la mémoire complète du conteneur. Lorsque le conteneur atteint sa limite de mémoire, le noyau tue les processus à l'intérieur, ce qui peut terminer une session en cours de tâche.

238* **CPU** : une demande de 2 CPUs et une limite de 4 CPUs, afin qu'une session puisse dépasser la demande lors des builds. Le noyau limite un conteneur à sa limite de CPU plutôt que de tuer les processus à l'intérieur, donc les sessions à la limite s'exécutent plus lentement mais continuent de s'exécuter.

239 

240Dans une spécification de conteneur Kubernetes, définissez ces valeurs de départ avec le bloc `resources` suivant :

241 

242```yaml theme={null}

243resources:

244 requests:

245 cpu: "2"

246 memory: 4Gi

247 limits:

248 cpu: "4"

249 memory: 4Gi

250```

251 

252Les builds et les tests constituent généralement la plus grande et la plus variable partie de la charge d'une session, donc exécutez un build représentatif de votre référentiel, mesurez son pic de CPU et de mémoire, et augmentez toute valeur de départ qui ne laisse pas de place au processus Claude Code en plus de ce pic.

253 

254Le runner utilise `--capacity` pour limiter le nombre de sessions qu'il exécute à la fois. Il ne divise pas le CPU ou la mémoire entre elles, donc les sessions sur un runner partagent le CPU et la mémoire du conteneur. Pour limiter la part d'une session, appliquez les limites de votre [script wrapper](/docs/fr/self-hosted-environments-configuration#wrapper-scripts). Ce qu'il faut donner à un conteneur dépend donc du nombre de sessions qu'il dessert à la fois :

255 

256* **Une session par runner** : donnez à chaque conteneur les valeurs d'une session. Utilisez ce dimensionnement à `--capacity 1`, que la [section de durcissement](#harden-your-deployment) recommande, et pour les [runners à la demande](/docs/fr/self-hosted-environments-configuration#on-demand-runners), où vous définissez les valeurs sur la charge de travail que votre [hook `spawn-runner`](/docs/fr/self-hosted-environments-configuration#the-spawn-runner-hook) soumet, comme un modèle de pod de Job Kubernetes.

257* **Plusieurs sessions par runner** : à un `--capacity` supérieur à un, multipliez les valeurs d'une session par la capacité, car jusqu'à ce nombre de sessions peuvent s'exécuter dans le conteneur en même temps. Les recettes [Kubernetes](#kubernetes) et [Docker Compose](#docker-compose) exécutent `--capacity 4` sans limites de CPU ou de mémoire, donc ajoutez des limites dimensionnées pour la capacité que vous exécutez.

258 

259<h2 id="kubernetes">

260 Kubernetes

261</h2>

262 

263Le runner sert `GET /healthz` sur le port 8080 par défaut, configurable avec `--health-port`, donc les sondes Kubernetes fonctionnent sans configuration supplémentaire. Le point de terminaison retourne `200` chaque fois que le processus est vivant, donc les sondes ci-dessous détectent un processus mort, pas un bloqué ; pour attraper un runner qui a arrêté d'interroger, alertez sur la série `last_poll_age_seconds` de [`/metrics`](/docs/fr/self-hosted-environments-reference#prometheus-metrics). Le Deployment ci-dessous monte le secret de l'environnement à partir d'un Secret Kubernetes, pointe les sondes de vivacité et de disponibilité vers `/healthz`, et définit une période de grâce de terminaison de 90 secondes. Consultez [Timing d'arrêt](#shutdown-timing) pour savoir pourquoi la période de grâce est importante.

264 

265Le manifeste ne définit pas de `resources` CPU ou mémoire sur le conteneur runner. Ajoutez un bloc dimensionné pour la capacité que vous exécutez, comme [Dimensionner le CPU et la mémoire pour les sessions](#size-cpu-and-memory-for-sessions) le décrit.

266 

267```yaml theme={null}

268apiVersion: apps/v1

269kind: Deployment

270metadata:

271 name: claude-runner

272 namespace: claude-runners

273spec:

274 replicas: 3

275 selector:

276 matchLabels:

277 app: claude-runner

278 template:

279 metadata:

280 labels:

281 app: claude-runner

282 app.kubernetes.io/part-of: claude-code-self-hosted-runner

283 spec:

284 terminationGracePeriodSeconds: 90

285 containers:

286 - name: runner

287 image: <your-registry>/claude-runner:latest

288 args:

289 - self-hosted-runner

290 - --environment-secret-file

291 - /etc/claude/environment-secret

292 - --capacity

293 - "4"

294 volumeMounts:

295 - name: environment-secret

296 mountPath: /etc/claude

297 readOnly: true

298 ports:

299 - name: health

300 containerPort: 8080

301 readinessProbe:

302 httpGet:

303 path: /healthz

304 port: 8080

305 initialDelaySeconds: 5

306 periodSeconds: 10

307 livenessProbe:

308 httpGet:

309 path: /healthz

310 port: 8080

311 initialDelaySeconds: 30

312 periodSeconds: 30

313 volumes:

314 - name: environment-secret

315 secret:

316 secretName: claude-runner-environment-secret

317```

318 

319Le Deployment ci-dessus vit dans un espace de noms `claude-runners`. Créez d'abord l'espace de noms :

320 

321```bash theme={null}

322kubectl create namespace claude-runners

323```

324 

325Créez le Secret de sauvegarde à partir d'un fichier local contenant la valeur que vous avez copiée à l'étape [**Copier la clé d'environnement**](/docs/fr/self-hosted-environments-quickstart#set-up-an-environment-and-runner) de l'interface utilisateur d'administration, pour que le secret n'apparaisse jamais dans votre historique de shell. Exécutez `(umask 077 && cat > ./environment-secret)`, collez le secret, appuyez sur Entrée, puis Ctrl-D. Ensuite, créez le Secret et supprimez le fichier :

326 

327```bash theme={null}

328kubectl create secret generic claude-runner-environment-secret -n claude-runners --from-file=environment-secret=./environment-secret

329```

330 

331<h2 id="docker-compose">

332 Docker Compose

333</h2>

334 

335Le service Compose ci-dessous redémarre le runner chaque fois qu'il se termine, ce qui couvre à la fois les crashes et la sortie normale après le drainage. Une politique de redémarrage Docker redémarre le même conteneur avec sa couche inscriptible intacte, donc le runner revient sur un système de fichiers réutilisé plutôt que le frais que la [posture de durcissement](#harden-your-deployment) recommande ; utilisez cette recette pour l'évaluation, et pour la production soit recréez le conteneur par exécution, soit utilisez un orchestrateur qui le fait.

336 

337```yaml theme={null}

338services:

339 claude-runner:

340 image: <your-registry>/claude-runner:latest

341 command:

342 - self-hosted-runner

343 - --environment-secret-file

344 - /run/secrets/environment-secret

345 - --capacity

346 - "4"

347 secrets:

348 - environment-secret

349 restart: always

350 stop_grace_period: 90s

351 

352secrets:

353 environment-secret:

354 file: ./environment-secret

355```

356 

357<h2 id="shutdown-timing">

358 Délai d'arrêt

359</h2>

360 

361À la réception de `SIGTERM`, le runner cesse de prendre de nouveaux travaux et, sauf si vous définissez [`--defer-shutdown-max-min`](#defer-the-drain-past-the-first-signal), attend jusqu'à `--drain-wait-sec`, zéro par défaut, que les tours en cours se terminent, termine l'arborescence des processus de chaque session, et exécute le hook de cycle de vie [`post-session`](/docs/fr/self-hosted-environments-configuration#post-session). Cette arborescence de processus inclut les commandes que Claude exécutait encore dans la session.

362 

363Le chemin de drainage complet nécessite jusqu'à `--session-stop-grace-sec` + `--drain-wait-sec` + `--post-session-hook-timeout-sec`, plus 15 secondes de surcharge fixe pour le nettoyage des processus, plus 30 secondes supplémentaires lorsque [`--push-outcome-on-release`](/docs/fr/self-hosted-environments-reference#runner-cli-flags) est défini. Cela représente 80 secondes par défaut, et le runner enregistre le total au démarrage. Les sessions se drainent en parallèle sous ce budget unique, donc le total ne croît pas avec `--capacity`.

364 

365À la valeur par défaut `--drain-wait-sec 0`, un redémarrage continu interrompt les tours en cours ; chaque session reprend sur un autre runner, perdant le travail non poussé comme décrit sous [Problèmes connus](#additional-limitations). Définissez `--drain-wait-sec` et augmentez la période de grâce pour correspondre, pour laisser les tours se terminer en premier.

366 

367Tout au long de ce chemin, le runner continue de faire un heartbeat vers le plan de contrôle à capacité zéro, de sorte que le bail de session n'expire pas et ne soit pas remis en file d'attente vers un autre runner tandis que le hook `post-session` écrit toujours le travail non validé. Le heartbeat s'arrête juste avant que le runner ne se désenregistre.

368 

369Donnez au runner au moins le total qu'il enregistre au démarrage avant que l'hôte ne l'arrête. L'endroit où vous définissez cela dépend de la façon dont vos hôtes s'arrêtent :

370 

371* **Avec une période de grâce `SIGTERM`** : définissez `terminationGracePeriodSeconds` sur Kubernetes, `stop_grace_period` sur Docker Compose, ou l'équivalent de votre orchestrateur à au moins ce total. La valeur par défaut de Kubernetes de 30 secondes est plus courte que le chemin de drainage du runner, donc Kubernetes arrête le pod avant que le runner ne termine le drainage.

372* **Avec [`--retire-at`](/docs/fr/self-hosted-environments-reference#runner-cli-flags)** : dimensionnez la marge entre l'heure de retraite et l'heure d'arrêt de l'hôte pour couvrir les tours typiques, plus la rétention des tâches de fond que [Cycle de vie du runner](/docs/fr/self-hosted-environments#runner-lifecycle) décrit, plus ce même total. Calculez l'heure de retraite à chaque lancement, par exemple `date +%s` plus la durée de vie prévue du runner.

373* **Avec [`--defer-shutdown-max-min`](#defer-the-drain-past-the-first-signal)** : ajoutez deux parties supplémentaires au total du chemin de drainage. La première est les minutes que vous configurez. La seconde est la grâce post-libération que [Différer le drainage au-delà du premier signal](#defer-the-drain-past-the-first-signal) décrit, 75 secondes par défaut. Avec le flag défini, le runner imprime également la figure combinée au démarrage, après le total du chemin de drainage.

374 

375<h3 id="defer-the-drain-past-the-first-signal">

376 Différer le drainage au-delà du premier signal

377</h3>

378 

379Définissez [`--defer-shutdown-max-min <n>`](/docs/fr/self-hosted-environments-reference#runner-cli-flags) si vous souhaitez qu'un runner que vous redémarrez continue de servir les sessions qu'il détient pendant jusqu'à `n` minutes, au lieu de les drainer au premier signal. À la première `SIGTERM` ou `SIGINT`, le runner cesse de prendre de nouveaux travaux et continue de servir les sessions qu'il détient. Il continue de sonder pour que le plan de contrôle ne remette pas ces sessions en file d'attente. Nécessite Claude Code v2.1.238 ou ultérieur.

380 

381<h4 id="what-happens-to-the-sessions-the-runner-holds-after-the-first-signal">

382 Ce qui arrive aux sessions que le runner détient après le premier signal

383</h4>

384 

385Dans les deux premiers stades qui suivent le signal, le runner libère les sessions, et une session libérée reprend sur un runner frais lorsque son utilisateur envoie son prochain message. En comptant à partir du premier signal, le runner passe par trois stades :

386 

387* **Pendant les premiers `n` minutes** : le runner sert ses sessions normalement et continue d'appliquer `--startup-timeout-min` et `--kill-session-after-min`. Si vous définissez également [`--release-idle-session-min`](/docs/fr/self-hosted-environments-reference#runner-cli-flags), le runner libère toute session dont l'utilisateur a été inactif aussi longtemps ; sans cela, les sessions inactives restent sur le runner.

388* **Lorsque les `n` minutes s'écoulent** : le runner libère chaque session qu'il détient toujours, inactive ou non. Le runner attend la fin du tour d'une session en cours de tour, et jusqu'à 60 secondes supplémentaires pour les tâches de fond d'un tour, avant de libérer cette session.

389* **Lorsque la grâce post-libération s'écoule** : le runner draine les sessions qu'il détient toujours, et le plan de contrôle remet chaque session drainée en file d'attente vers un autre runner immédiatement. La grâce post-libération commence lorsque les `n` minutes s'écoulent et est de 75 secondes par défaut. Si vous définissez `--drain-wait-sec` au-dessus de 60 secondes, la grâce post-libération est `--drain-wait-sec` plus 15 secondes à la place.

390 

391À tout stade, le runner quitte 0 dès qu'il ne détient aucune session. Un deuxième signal raccourcit les stades : le runner draine immédiatement, comme il le fait au premier signal sans `--defer-shutdown-max-min`. Une fois qu'un drainage est en cours, le signal suivant force la sortie du runner. Cela s'applique qu'un deuxième signal ou l'expiration de la grâce post-libération ait commencé le drainage.

392 

393<h4 id="size-the-stop-timeout">

394 Dimensionner le délai d'arrêt

395</h4>

396 

397Donnez à votre délai d'arrêt de l'hôte au moins la somme de trois parties : les `n` minutes que vous configurez, la grâce post-libération, et le chemin de drainage complet que [Délai d'arrêt](#shutdown-timing) décrit. Avec les paramètres par défaut, la grâce post-libération est de 75 secondes et le chemin de drainage est de 80 secondes, donc autorisez `n` minutes plus 155 secondes. Le runner imprime cette somme au démarrage chaque fois que `--defer-shutdown-max-min` est défini.

398 

399Si le délai d'arrêt s'écoule avant que le runner ne termine, l'hôte tue le runner. Les sessions qu'il détient toujours ne reçoivent aucun hook `post-session`. Le runner ne se désenregistre pas, et le plan de contrôle remet les sessions en file d'attente environ une minute plus tard. Si vous ne pouvez pas donner au délai d'arrêt cette somme, laissez `--defer-shutdown-max-min` non défini pour que le runner draine au premier signal à la place.

400 

401<h3 id="what-reaches-a-running-post-session-hook">

402 Ce qui atteint un hook post-session en cours d'exécution

403</h3>

404 

405Le hook `post-session` et l'enfant de session Claude s'exécutent chacun dans leur propre groupe de processus POSIX, séparé de celui du runner, donc les mécanismes d'arrêt les atteignent différemment :

406 

407* **Un `SIGTERM` tandis que le runner draine déjà** : force la sortie du runner immédiatement, en sautant tout ce qui reste du chemin de drainage. Sans [`--defer-shutdown-max-min`](#defer-the-drain-past-the-first-signal), c'est le deuxième `SIGTERM` que le runner reçoit. Rien ne signale un hook `post-session` en cours d'exécution, donc sur un hôte nu où un processus init adopte les orphelins, il se termine de lui-même, mais sans supervision : son budget de délai d'expiration ne s'applique plus, et une écriture au tuyau de journal fermé peut le tuer avec `SIGPIPE`, donc un hook qui doit survivre à une sortie forcée là devrait rediriger sa propre sortie vers un fichier. Dans les recettes de conteneur sur cette page, le runner est le PID 1 du conteneur et sa sortie termine le conteneur, et sous le `KillMode=control-group` par défaut de systemd, la suppression au niveau du cgroup atteint également le hook, comme l'entrée **Suppressions au niveau du cgroup** le décrit ; dans les deux cas, traitez une sortie forcée comme fatale au hook et fiez-vous à la période de grâce à la place.

408* **Signaux au niveau du groupe de processus**, tels que `kill -- -<pid>` dans un script wrapper, le contrôle des tâches du shell, ou un watchdog au niveau du groupe : atteignent le runner et un sous-processus de hook `checkout` en cours, qui reste intentionnellement attaché au groupe, mais pas un hook `post-session` en cours d'exécution ou l'enfant de session.

409* **Suppressions au niveau du cgroup**, telles que le `KillMode=control-group` par défaut de systemd ou le `SIGKILL` que Kubernetes livre à tout le conteneur lorsque `terminationGracePeriodSeconds` expire : atteignent tout, y compris le hook. L'isolation du groupe de processus ne protège pas contre celles-ci, c'est pourquoi la période de grâce doit couvrir le chemin de drainage complet.

410* **Le délai d'expiration du hook lui-même** : lorsqu'un hook dépasse `--post-session-hook-timeout-sec`, le runner envoie `SIGTERM` à tout le groupe de processus du hook, puis `SIGKILL` deux secondes plus tard, donc un worker que le hook a forké, tel que tar, rsync, ou git, se termine avec le shell wrapper au lieu de survivre en tant qu'orphelin. La supervision du runner se termine une fois que le stdio du hook se ferme : un worker qui a redirigé sa propre sortie vers un fichier et survit à l'étape `SIGTERM` est au-delà de la portée du runner.

411 

412Lorsque le drainage commence, et à nouveau lors d'une sortie forcée, le runner enregistre combien de hooks `post-session` s'exécutent toujours, afin que vous puissiez distinguer un drainage silencieux d'un qui est en cours de snapshot.

413 

414<h2 id="keep-the-base-directory-and-capacity-identical-across-runners">

415 Garder le répertoire de base et la capacité identiques sur tous les runners

416</h2>

417 

418Si un runner meurt en milieu de session, le serveur remet la session en file d'attente et un autre runner dans l'environnement la récupère. Ce runner dérive le chemin de checkout de ses propres `--base-dir` et `--capacity` : `--capacity 1` se vérifie directement sous `--base-dir`, et un `--capacity` au-dessus de `1` utilise des worktrees par session à la place. Quand les runners dans le même environnement utilisent des valeurs différentes pour l'un ou l'autre drapeau, le répertoire de travail de la session reprise change, et les chemins absolus que l'agent a enregistrés plus tôt, dans les éditions, les appels d'outils, ou ses propres notes, pointent vers un emplacement qui n'existe plus.

419 

420Utilisez le même `--base-dir` et `--capacity` sur chaque runner dans un environnement, et n'utilisez pas une valeur par hôte comme un ID d'instance ou un nom d'hôte.

421 

422Le répertoire de base par défaut est `/workspace`, avec l'exception que la ligne de référence [`--base-dir`](/docs/fr/self-hosted-environments-reference#runner-cli-flags) enregistre. Le runner a besoin d'accès en écriture à celui-ci. Au démarrage, avant de s'enregistrer, le runner crée le répertoire et confirme qu'il peut y écrire, et quitte avec `cannot create or write to base directory` quand il ne peut pas. Un runner démarré en tant que root crée le `/workspace` par défaut lui-même. Pour un runner non-root, créez le répertoire et donnez la propriété à l'utilisateur du runner avant de démarrer le runner, ou pointez `--base-dir` vers un répertoire que cet utilisateur possède déjà.

423 

424<h2 id="reuse-a-pre-warmed-checkout">

425 Réutiliser un checkout pré-chauffé

426</h2>

427 

428Pour les grands référentiels, le clone peut dominer le démarrage de la session. À `--capacity 1` sans [hook `checkout`](/docs/fr/self-hosted-environments-configuration#checkout), le runner garde un clone canonique par référentiel à `<base-dir>/<repo-owner>/<repo>` et le réutilise entre les sessions : il récupère la ref demandée, détache `HEAD`, et réinitialise dur à celle-ci, ce qui est quasi-instantané quand peu a changé. Pour sauter le clone froid, fournissez le clone de l'une de deux façons :

429 

430* **Clone dans l'image** : construisez le clone dans votre image runner à ce chemin. Chaque conteneur frais démarre alors avec le clone chaud sans réutiliser un disque.

431* **Clone sur un volume persistant** : sur les runners que vous pré-verrouillez au compte d'un utilisateur avec [`--lock-to-account`](/docs/fr/self-hosted-environments-reference#runner-cli-flags), pointez `--base-dir` vers un volume persistant, pour que le disque ne serve que ce compte. Un runner pré-verrouillé ne récupère jamais les sessions de canal Claude Tag, donc cette option ne s'applique pas aux runners qui les servent.

432 

433Ce que le chemin de réutilisation fait et ne garantit pas :

434 

435* **N'importe quelle forme de clone fonctionne** : un clone complet, peu profond, ou à branche unique au chemin est utilisé tel quel. Le runner ne passe jamais `--depth` lors de la récupération dans un clone existant, donc un pré-chauffage complet garde son historique complet et un peu profond reste peu profond. `CLAUDE_RUNNER_FETCH_DEPTH` (`full`, `0`, ou un nombre ; par défaut 50) contrôle uniquement le clone froid que le runner fait quand aucun clone n'existe encore.

436* **Les changements suivis se réinitialisent, les fichiers non suivis persistent** : chaque session commence à partir d'une réinitialisation dur qui efface les modifications suivies de la session précédente, mais le runner ne lance jamais `git clean`, donc les fichiers non suivis des sessions antérieures du propriétaire verrouillé restent dans l'arbre.

437* **Avec le proxy git, la réinitialisation devient un checkout** : avec [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), le runner assainit le `.git/` du clone avant chaque session, gardant le magasin d'objets, les refs, et l'état peu profond mais supprimant l'index, donc chaque session paie un checkout complet de l'arbre de travail au lieu d'une réinitialisation quasi-instantanée ; il ne re-clone toujours pas. Les pré-chauffages de sous-module ne sont pas supportés sous le proxy.

438* **Les longs clones n'ont besoin d'aucune solution de contournement** : le runner limite chaque opération git avec un watchdog sans progrès de 120 secondes et un plafond dur de 30 minutes, pas un délai d'expiration plat, donc un clone froid lent qui continue de signaler le progrès se termine.

439 

440<h2 id="pin-the-version">

441 Épingler la version

442</h2>

443 

444Le processus enfant Claude Code de chaque session exécute le binaire du runner lui-même, et le runner désactive la mise à jour automatique à l'intérieur des sessions qu'il génère, donc chaque session exécute la version que vous avez installée sur l'hôte ou construite dans l'image. Une mise à jour au niveau de l'hôte prend effet la prochaine fois que le runner démarre.

445 

446* **Pour garder une flotte sur une version** : construisez l'image avec une version épinglée, ou sur un hôte nu installez une version spécifique et [désactivez les mises à jour automatiques](/docs/fr/setup#disable-auto-updates)

447* **Pour mettre à niveau** : installez la version plus récente ou reconstruisez l'image, puis redémarrez les runners

448* **Plugins** : les places de marché de plugins ne se mettent pas à jour automatiquement non plus ; définissez `FORCE_AUTOUPDATE_PLUGINS=1` dans l'environnement du runner pour laisser les plugins se mettre à jour automatiquement pendant que le binaire reste épinglé

449 

450<h2 id="scale-the-fleet">

451 Mettre à l'échelle la flotte

452</h2>

453 

454Votre orchestrateur décide quand ajouter ou supprimer des runners. En raison du [verrou d'un propriétaire par runner](/docs/fr/self-hosted-environments#runner-lifecycle), le nombre minimum de répliques est le nombre d'utilisateurs et d'agents Claude Tag que vous vous attendez à être actifs simultanément ; `--capacity` contrôle le parallélisme au sein des sessions d'un propriétaire, pas entre les propriétaires.

455 

456Deux approches de mise à l'échelle sont disponibles :

457 

458* **Flotte fixe** : exécutez un ensemble statique de répliques runner et mettez à l'échelle sur les [métriques Prometheus](/docs/fr/self-hosted-environments-reference#prometheus-metrics) que chaque runner sert

459* **Runners à la demande** : exécutez la sous-commande `claude self-hosted-runner orchestrator`, qui interroge Anthropic pour les sessions en attente sans runner disponible et invoque votre hook `spawn-runner` pour en démarrer un par session. Consultez [Runners à la demande](/docs/fr/self-hosted-environments-configuration#on-demand-runners).

460 

461<h2 id="known-issues-and-limitations">

462 Problèmes connus et limitations

463</h2>

464 

465Voici les limitations de cette version, avec des solutions de contournement où l'une existe.

466 

467<h3 id="connector-traffic-leaves-your-network">

468 Le trafic du connecteur quitte votre réseau

469</h3>

470 

471Anthropic appelle les outils connecteur à partir de sa propre infrastructure plutôt que de votre runner. Les outils connecteur sont les connecteurs claude.ai, tels que GitHub, Slack et Linear. Quand Claude utilise un connecteur dans une session auto-hébergée, ce trafic passe par `api.anthropic.com` plutôt que d'originer à l'intérieur de votre limite réseau.

472 

473Pour garder un connecteur hors des sessions auto-hébergées, filtrez-le avec les [paramètres de politique `allowedMcpServers` et `deniedMcpServers`](/docs/fr/managed-mcp#policy-based-control-with-allowlists-and-denylists). Claude Code applique ces paramètres aux connecteurs qu'Anthropic livre ainsi qu'aux serveurs que vous configurez à partir de l'hôte runner et aux serveurs que les utilisateurs ajoutent, donc si vous déployez une liste d'autorisation pour d'autres serveurs, Claude Code bloque également les connecteurs livrés. Pour garder les connecteurs disponibles aux côtés d'une liste d'autorisation basée sur URL, ajoutez des entrées qui correspondent aux chemins de proxy Anthropic pour les connecteurs livrés :

474 

475* `https://api.anthropic.com/v2/ccr-sessions/*`

476* `https://api.anthropic.com/v1/code/sessions/*`

477* `https://api.anthropic.com/v1/code/mcp/*`

478 

479Si le trafic d'outils doit rester à l'intérieur de votre réseau, exécutez les outils équivalents en tant que serveurs MCP locaux sur l'image runner à la place. Consultez [Serveurs MCP](/docs/fr/self-hosted-environments-configuration#mcp-servers).

480 

481<h3 id="some-sessions-don’t-count-as-idle">

482 Certaines sessions ne comptent pas comme inactives

483</h3>

484 

485Une session tenant une tâche de fond qui ne se termine jamais ne compte pas comme inactive, donc `--release-idle-session-min` ne libérera pas l'emplacement de cette session. Une session qui attend une approbation demandée de l'intérieur d'un appel d'outil en cours d'exécution ne compte pas non plus comme inactive. Définissez toujours `--kill-session-after-min` à côté comme un arrêt dur pour qu'aucune session ne puisse tenir un emplacement indéfiniment.

486 

487`--kill-session-after-min` est un arrêt dur pour les sessions qui s'échappent. Sur un runner en v2.1.260 ou ultérieur, une session qui atteint la limite n'est pas terminée immédiatement. Le runner lui donne une fenêtre de grâce, 15 minutes par défaut, que vous pouvez modifier avec [`SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS`](/docs/fr/self-hosted-environments-reference#environment-variable-only-settings) :

488 

489* Si la session attend son utilisateur, ou son tour s'est terminé et elle ne contient que des tâches de fond, le runner la libère immédiatement. La session reprend quand son utilisateur envoie son prochain message.

490* Si un tour est toujours en cours d'exécution, le runner attend que le tour se termine, ou que la session attende ensuite son utilisateur, puis la libère.

491* Si la session est toujours sur le runner quand la fenêtre de grâce se termine, le runner la termine, et tout travail du tour en cours d'exécution est perdu. Un tour attendant une approbation demandée de l'intérieur d'un appel d'outil en cours d'exécution est une façon pour une session de dépasser la fenêtre.

492 

493Une session libérée reprend à partir d'un clone frais, donc le travail qu'elle n'avait pas poussé est parti de toute façon ; consultez [Les sessions reprises perdent le travail non poussé](#additional-limitations). Avant v2.1.260, le runner terminait chaque session à la limite, après avoir attendu au maximum la fenêtre de grâce pour qu'un tour en cours d'exécution se termine.

494 

495Définissez le drapeau au-dessus de votre session la plus longue attendue, comme `--kill-session-after-min 480` pour 8 heures. Pour libérer les emplacements des conversations qui deviennent inactives, utilisez `--release-idle-session-min` à la place.

496 

497<h3 id="additional-limitations">

498 Limitations supplémentaires

499</h3>

500 

501* **Les sessions reprises perdent le travail non poussé** : quand une session est libérée ou son runner est redémarré, et que l'utilisateur envoie un autre message, la session reprend sur un runner frais qui clone le référentiel à nouveau à partir de sa branche de démarrage, donc le travail que la session n'avait pas poussé est parti. Définissez [`--push-outcome-on-release`](/docs/fr/self-hosted-environments-reference#runner-cli-flags) pour que le runner fasse un meilleur effort de push des branches de résultat de la session avant de la libérer, pour que la session reprise commence à partir de ces commits à la place ; cela préserve le travail engagé, pas un arbre de travail sale. Avant de l'activer, limitez qui peut pousser vers les refs `claude/*` sur la télécommande source, par exemple avec une règle de branche : à la reprise, le runner récupère la branche précédemment poussée sans vérifier qui l'a poussée, donc n'importe qui avec accès push à ces refs peut placer du contenu dans l'espace de travail repris. Le runner rejette également la configuration par session à la reprise, ce qui signifie le répertoire de configuration Claude de la session et tout état de shell que la session a écrit ; `--push-outcome-on-release` ne couvre pas ceux-ci.

502* **Les référentiels privés ne peuvent pas être ajoutés en milieu de session** : un référentiel ajouté à une session après son démarrage n'est pas cloné avec des identifiants sur un runner auto-hébergé, donc l'ajout échoue. Sélectionnez chaque référentiel dont la session a besoin quand vous la créez.

503* **Certains connecteurs n'apparaissent pas dans les sessions auto-hébergées** : un connecteur que vous n'avez pas encore connecté dans les paramètres claude.ai n'est pas listé dans une session auto-hébergée, et la session ne vous invitera pas à le connecter. Connectez-le d'abord dans les paramètres, puis démarrez une session fraîche. Ajouter un connecteur à une session déjà en cours d'exécution ne rend pas non plus ses outils disponibles à Claude ; démarrez une session fraîche pour récupérer un connecteur nouvellement ajouté.

504 

505<h3 id="report-an-issue">

506 Signaler un problème

507</h3>

508 

509Pour les problèmes avec les environnements auto-hébergés, contactez votre équipe de compte Anthropic.

510 

511<h2 id="troubleshooting">

512 Dépannage

513</h2>

514 

515Pour un diagnostic guidé, exécutez la sous-commande doctor sur l'hôte runner. La sous-commande doctor démarre une session Claude Code interactive avec les journaux et l'état du runner attachés. Connectez-vous d'abord avec `claude auth login` sur cet hôte pour que la session puisse interroger votre environnement, ses runners, et ses sessions en attente. Sans cette connexion, par exemple quand l'hôte s'authentifie avec une clé API, il est limité au point de terminaison de santé local, aux métriques, et au journal du runner, et il lit le journal uniquement si vous avez démarré le runner avec `--log-file`.

516 

517```bash theme={null}

518claude self-hosted-runner doctor

519```

520 

521Problèmes courants :

522 

523* **Le runner n'apparaît pas dans l'environnement** : confirmez que l'hôte peut atteindre `api.anthropic.com` sur HTTPS, que le secret de l'environnement est actuel, et que l'horloge de l'hôte est à moins de cinq minutes de l'heure réelle ; un décalage plus grand cause l'échec de l'authentification. Le runner enregistre `[runner:fatal]` avec la raison du rejet en cas d'échec d'authentification.

524* **Le runner quitte au démarrage avec `cannot create or write to base directory`** : le runner ne peut pas créer ou écrire à `--base-dir`, qui par défaut est `/workspace`. Corrigez la propriété du répertoire ou pointez `--base-dir` vers un chemin inscriptible, comme décrit dans [Garder le répertoire de base et la capacité identiques sur tous les runners](#keep-the-base-directory-and-capacity-identical-across-runners). Si le runner enregistre à la place `[runner:fatal]` disant que la vérification du répertoire de base a expiré, le répertoire est sur un montage NFS ou CSI suspendu. Vérifiez la santé du montage plutôt que les permissions. Le runner imprime ces deux échecs de démarrage à stderr avant d'ouvrir `--log-file`, donc cherchez-les dans le terminal ou les journaux de conteneur de votre plateforme plutôt que dans le fichier journal. Avant v2.1.225, le runner ne vérifiait pas le répertoire de base au démarrage, et cette mauvaise configuration échouait les sessions après la récupération à la place.

525* **Les sessions restent en attente** : chaque runner en ligne peut être verrouillé à un propriétaire différent. Vérifiez la métrique `claude_code_self_hosted_runner_locked_account` de chaque runner [métrique](/docs/fr/self-hosted-environments-reference#prometheus-metrics) ou le champ `locked_account` de sa ligne de journal `[runner:health]` pour voir qui la détient. Les deux affichent l'email du propriétaire uniquement après que le runner ait reçu un jeton de session portant une réclamation `act.email`, ce qu'une session d'agent Claude Tag ne fait jamais. Sans la réclamation, le runner n'émet aucune série `locked_account` et enregistre `locked_account=yes`, ce qui vous dit que le runner est verrouillé mais pas à quel propriétaire. Ajoutez des répliques, ou attendez qu'un runner existant se draine et redémarre. Si l'environnement utilise des runners à la demande, vérifiez l'orchestrateur à la place ; consultez [Runners à la demande](/docs/fr/self-hosted-environments-configuration#on-demand-runners).

526* **Les sessions échouent immédiatement après la récupération** : ouvrez la session dans claude.ai/code pour voir l'erreur. Les causes les plus courantes sont les identifiants git manquants [identifiants git](#configure-git) dans l'image runner et les outils de build qui ne sont pas installés. Un répertoire de base non inscriptible arrête le runner au démarrage au lieu d'échouer les sessions. Consultez l'entrée **Le runner quitte au démarrage avec `cannot create or write to base directory`** dans cette liste.

527* **Les sessions ne peuvent pas atteindre le réseau via un proxy de sortie authentifiant** : quand la source que vous avez définie avec [`--proxy-authorization-command` ou `--proxy-authorization-file`](#authenticate-to-an-egress-proxy) échoue, expire après 30 secondes, ou produit une valeur vide, le runner répond à cette connexion `502 Bad Gateway` et enregistre pourquoi. Le runner rédige la stderr de la commande dans ce journal et ne journalise jamais la valeur de l'en-tête. Avec `--proxy-authorization-command`, exécutez la commande vous-même sur l'hôte pour confirmer qu'elle imprime la valeur d'en-tête entière sur stdout. Si le runner quitte à la place au démarrage avec `could not start the proxy-authorization listener`, il ne pouvait pas ouvrir son écouteur de boucle locale.

528* **Le runner enregistre des lignes `Poll failed` contenant `rejecting the malformed poll response`** : le runner a reçu une réponse de sondage dont le corps n'est pas le JSON attendu de la file d'attente, le plus souvent parce que quelque chose entre le runner et `api.anthropic.com`, comme un proxy d'interception ou un portail captif, a répondu avec sa propre page. Le runner rejette la réponse, la compte sous le type `transport` de la [métrique](/docs/fr/self-hosted-environments-reference#prometheus-metrics) `claude_code_self_hosted_runner_poll_errors_total`, et réessaie selon le calendrier de sondage échoué décrit dans [Cycle de vie de la session](/docs/fr/self-hosted-environments#session-lifecycle). Le runner continue de servir ses sessions en direct. Configurez le proxy pour passer les réponses de `api.anthropic.com` inchangées. Avant v2.1.246, le runner lisait une telle réponse comme une file d'attente de travail vide, ce qui pouvait terminer ses sessions en direct ou le faire quitter.

529* **La branche d'une session n'existe plus sur la télécommande** : pour une source git que la session ne lit que, le runner saute cette source et continue sur les autres. Pour la source vers laquelle la session pousse les résultats, une branche supprimée, généralement parce qu'elle a été fusionnée et supprimée automatiquement, échoue la session avec une erreur nommant le référentiel et la branche et vous demandant de restaurer la branche et de réessayer. Le runner échoue la session avec la même erreur quand sauter laisserait sans référentiel du tout. Avant v2.1.228, une telle session démarrait dans un répertoire vide.

530* **Les sessions prennent des minutes pour démarrer** : le clone initial domine généralement. Regardez la [métrique](/docs/fr/self-hosted-environments-reference#prometheus-metrics) `claude_code_self_hosted_runner_session_init_duration_seconds` pour confirmer, et coupez le clone avec un [checkout pré-chauffé](#reuse-a-pre-warmed-checkout) ou un `CLAUDE_RUNNER_FETCH_DEPTH` plus petit.

531* **Le pod est tué en milieu de drainage** : augmentez `terminationGracePeriodSeconds` à au moins la valeur que le runner enregistre au démarrage. Consultez [Timing d'arrêt](#shutdown-timing).

532 

533Une fois que la journalisation est initialisée, le runner écrit son journal de cycle de vie, y compris les lignes `[runner:fatal]`, à stdout, et la sortie de débogage à stderr, tout comme des lignes en texte brut plutôt que JSON. Les échecs de démarrage décrits dans les entrées de dépannage ci-dessus s'impriment à stderr avant ce point. Capturez les deux flux avec `--log-file`, ce qui permet également à `self-hosted-runner doctor` de les suivre, ou avec la collecte de journaux de votre plateforme. Le processus enfant de chaque session écrit un journal de débogage séparé. En cas d'échec, le runner préserve le journal, imprime le chemin du journal dans le journal du runner, et affiche la queue du journal aux côtés de la session dans claude.ai/code.

534 

535<h2 id="what’s-next">

536 Prochaines étapes

537</h2>

538 

539* [Personnaliser les sessions](/docs/fr/self-hosted-environments-configuration) : scripts wrapper, hooks de cycle de vie, runners à la demande, serveurs MCP, et permissions

540* [Tester de bout en bout](/docs/fr/self-hosted-environments-testing) : vérifier une nouvelle image runner à partir de CI avant de la promouvoir

541* [Référence](/docs/fr/self-hosted-environments-reference) : chaque drapeau CLI, variable d'environnement, et métrique

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# Vérifier l'identité de session dans les environnements auto-hébergés

6 

7> Vérifiez le JWT CLAUDE_CODE_SESSION_ACCESS_TOKEN afin que les services de votre réseau puissent faire confiance aux demandes provenant de sessions dans votre environnement auto-hébergé.

8 

9<Note>

10 Les environnements auto-hébergés sont en bêta publique sur les plans Team et Enterprise ; un [propriétaire](/docs/fr/cloud-environments#organization-shared-environments) les active en activant **Allow self-hosted environments** sur la [page d'administration **Cloud environments**](https://claude.ai/admin-settings/cloud-environments). Cette page couvre la vérification de l'identité de session ; consultez le [guide de démarrage rapide](/docs/fr/self-hosted-environments-quickstart) pour la configuration et [Déployer en production](/docs/fr/self-hosted-environments-deploy) pour les recettes de flotte.

11</Note>

12 

13Un [environnement auto-hébergé](/docs/fr/self-hosted-environments) permet aux sessions [Claude Code sur le web](/docs/fr/claude-code-on-the-web) de s'exécuter sur l'infrastructure que vous exploitez au lieu de celle d'Anthropic. Parce que la session s'exécute à l'intérieur de votre réseau, Claude peut appeler directement vos services internes. Ces services ont besoin d'un moyen de confirmer qu'une demande provient d'une session Claude Code dans votre environnement, et d'identifier l'identité de l'utilisateur ou du service qui a créé cette session.

14 

15Chaque session dans un environnement auto-hébergé reçoit un JSON Web Token (JWT) signé dans la variable d'environnement `CLAUDE_CODE_SESSION_ACCESS_TOKEN`. Une session présente le token comme n'importe quelle credential de porteur ; par exemple, un script que Claude exécute peut appeler votre service avec `curl -H "Authorization: Bearer $CLAUDE_CODE_SESSION_ACCESS_TOKEN"`. Anthropic signe le token et publie les clés de vérification à un endpoint JWKS public. Vos services récupèrent ces clés, vérifient la signature et lisent les claims pour décider quel accès accorder.

16 

17<h2 id="the-session-token">

18 Le token de session

19</h2>

20 

21Avant d'écrire le code de vérification, comprenez ce que le token établit et la forme que votre bibliothèque JWT verra.

22 

23<h3 id="what-the-token-proves">

24 Ce que le token prouve

25</h3>

26 

27Un token valide établit certains faits et délibérément pas d'autres :

28 

29* **Prouve** : Anthropic a émis le token pour une session spécifique dans un environnement spécifique, et comment la session a été créée : par un utilisateur de votre organisation, ou par l'identité de service de votre organisation, ce qui est la façon dont les [sessions de canal Claude Tag](https://claude.com/docs/claude-tag/concepts/agent-identity) commencent

30* **Ne prouve pas** : quel processus sur l'hôte du runner le présente. Le token se trouve dans une variable d'environnement à l'intérieur de la session, donc tout code que Claude exécute, et tout outil ou serveur MCP que la session démarre, peut le lire et le présenter.

31 

32Deux conséquences pour vos services :

33 

34* Vérifiez le claim `aud` par rapport à votre ID d'environnement, la valeur `ccpool_...` affichée avec votre environnement sur la [page d'administration **Cloud environments**](https://claude.ai/admin-settings/cloud-environments), pour rejeter les tokens émis pour l'environnement de toute autre organisation.

35* Limitez les credentials que vous dérivez du token à ce qu'une seule session de codage devrait pouvoir faire, pas à tout ce que le créateur de la session peut faire. Voir [Limiter les credentials dérivés](#scope-derived-credentials).

36 

37<h3 id="token-format">

38 Format du token

39</h3>

40 

41La valeur de `CLAUDE_CODE_SESSION_ACCESS_TOKEN` a un préfixe `sk-ant-cc-` suivi d'un JWT standard en trois parties :

42 

43```text theme={null}

44sk-ant-cc-<base64url header>.<base64url payload>.<base64url signature>

45```

46 

47Supprimez le préfixe avant de passer la valeur à une bibliothèque JWT. Les tokens émis pour les sessions cloud hébergées par Anthropic portent un préfixe `sk-ant-si-` à la place et sont signés par un ensemble de clés différent, donc rejetez toute valeur qui ne commence pas par `sk-ant-cc-`.

48 

49L'algorithme de signature est `ES256`, qui est ECDSA sur la courbe P-256 avec SHA-256. L'en-tête du token porte un `kid` qui identifie quelle clé dans le JWKS l'a signé.

50 

51<h2 id="verify-the-token">

52 Vérifier le token

53</h2>

54 

55La vérification s'exécute dans l'un de deux endroits. Les services de votre réseau vérifient le token de manière cryptographique par rapport aux clés publiées d'Anthropic, et les scripts wrapper à l'intérieur de la session peuvent utiliser le décodeur intégré du binaire du runner à la place.

56 

57<h3 id="verify-the-token-from-your-service">

58 Vérifier le token depuis votre service

59</h3>

60 

61Anthropic publie les clés de vérification à un endpoint public et non authentifié :

62 

63```text theme={null}

64https://api.anthropic.com/v1/code/.well-known/jwks.json

65```

66 

67La réponse est un [JSON Web Key Set](https://www.rfc-editor.org/rfc/rfc7517) standard. Anthropic fait tourner les clés de signature périodiquement, et les clés d'avant une rotation restent dans l'ensemble assez longtemps pour que les tokens qu'elles ont signés continuent à se vérifier, donc ne fixez pas une seule clé. L'endpoint définit `Cache-Control: public, max-age=300`, donc mettre en cache l'ensemble de clés et refetcher toutes les cinq minutes est sûr.

68 

69Vérifiez chaque token entrant par rapport à ces vérifications :

70 

71<Steps>

72 <Step title="Vérifier le préfixe">

73 Rejetez la valeur si elle ne commence pas par `sk-ant-cc-`, puis supprimez ce préfixe. Le reste est un JWT compact standard.

74 </Step>

75 

76 <Step title="Vérifier la signature">

77 Récupérez le JWKS, sélectionnez la clé dont le `kid` correspond à l'en-tête du token, et vérifiez la signature `ES256`. Rejetez les tokens dont l'en-tête `alg` n'est pas `ES256`. Si un token arrive avec un `kid` qui n'est pas dans votre ensemble de clés en cache, refetchez le JWKS une fois avant de le rejeter : après une rotation, les nouveaux tokens sont signés avec une clé que votre ensemble en cache n'a pas encore.

78 </Step>

79 

80 <Step title="Vérifier l'émetteur">

81 Rejetez le token si `iss` n'est pas exactement `ccr`.

82 </Step>

83 

84 <Step title="Vérifier l'audience par rapport à votre environnement">

85 Le claim `aud` est un tableau. Rejetez le token à moins qu'il ne contienne votre ID d'environnement, qui a la forme `ccpool_...`. L'ID d'environnement est affiché dans la boîte de dialogue de détail de votre environnement sur la [page d'administration **Cloud environments**](https://claude.ai/admin-settings/cloud-environments), et apparaît comme le claim `ccr:pool_id` dans l'un des tokens de session de l'environnement. Cette vérification est ce qui limite le token à votre environnement et rejette les tokens émis pour d'autres organisations.

86 </Step>

87 

88 <Step title="Vérifier le rôle">

89 Rejetez le token si `ccr:role` n'est pas exactement `session_worker`. D'autres tokens émis pour les environnements auto-hébergés, tels que les secrets d'environnement, les tokens de runner et les ordres de travail, sont signés par le même ensemble de clés mais portent des rôles différents.

90 </Step>

91 

92 <Step title="Vérifier l'expiration">

93 Rejetez le token si `exp` est dans le passé. Anthropic émet les tokens de session avec une durée de vie de quatre heures par défaut et un maximum de huit heures. Le runner rafraîchit le token avant l'expiration et pousse la nouvelle valeur à la session, donc les sous-processus que Claude démarre après un rafraîchissement l'héritent. Une session peut donc présenter plusieurs tokens valides distincts à votre service au cours de sa durée de vie.

94 </Step>

95 

96 <Step title="Lire l'identité">

97 L'identité de l'utilisateur créateur est dans le claim `act` : `act.sub` est son ID utilisateur Anthropic sous la forme préfixée `user:<id>`, et `act.email`, quand la surface créatrice en a enregistré un, est son adresse e-mail. Les sessions que l'identité de service de votre organisation crée, y compris les sessions de canal Claude Tag, portent un sujet `agent:` à la place, donc traitez une session comme créée par l'utilisateur uniquement quand `act.sub` porte le préfixe `user:`, plutôt que de tester si les claims d'identité sont absents. Voir la [référence des claims](#claims-reference) pour la structure complète et les claims en double plats.

98 </Step>

99</Steps>

100 

101Les vérifications correspondent directement aux bibliothèques JWT standard. Les exemples ci-dessous implémentent la séquence complète en Node.js avec [`jose`](https://www.npmjs.com/package/jose), qui gère la récupération du JWKS, la mise en cache et la sélection du `kid`, et en Python avec [`PyJWT`](https://pyjwt.readthedocs.io/) et son client JWKS intégré.

102 

103<Tabs>

104 <Tab title="Node.js (jose)">

105 ```typescript theme={null}

106 import { createRemoteJWKSet, jwtVerify } from "jose";

107 

108 const JWKS = createRemoteJWKSet(

109 new URL("https://api.anthropic.com/v1/code/.well-known/jwks.json")

110 );

111 

112 const PREFIX = "sk-ant-cc-";

113 const EXPECTED_POOL_ID = "ccpool_...";

114 

115 export async function verifySessionToken(raw: string) {

116 if (!raw.startsWith(PREFIX)) {

117 throw new Error("not a self-hosted runner session token");

118 }

119 const jwt = raw.slice(PREFIX.length);

120 

121 const { payload } = await jwtVerify(jwt, JWKS, {

122 issuer: "ccr",

123 audience: EXPECTED_POOL_ID,

124 algorithms: ["ES256"],

125 });

126 

127 if (payload["ccr:role"] !== "session_worker") {

128 throw new Error("token is not a session_worker token");

129 }

130 

131 const act = payload.act as { email?: string; sub?: string };

132 return {

133 sessionId: payload["ccr:session_id"] as string,

134 poolId: payload["ccr:pool_id"] as string,

135 orgId: payload["ccr:org_id"] as string,

136 creatorEmail: act?.email,

137 creatorSub: act?.sub,

138 };

139 }

140 ```

141 </Tab>

142 

143 <Tab title="Python (PyJWT)">

144 ```python theme={null}

145 import jwt

146 from jwt import PyJWKClient

147 

148 JWKS_URL = "https://api.anthropic.com/v1/code/.well-known/jwks.json"

149 PREFIX = "sk-ant-cc-"

150 EXPECTED_POOL_ID = "ccpool_..."

151 

152 jwks = PyJWKClient(JWKS_URL)

153 

154 

155 def verify_session_token(raw: str) -> dict:

156 if not raw.startswith(PREFIX):

157 raise ValueError("not a self-hosted runner session token")

158 token = raw.removeprefix(PREFIX)

159 

160 signing_key = jwks.get_signing_key_from_jwt(token)

161 payload = jwt.decode(

162 token,

163 signing_key.key,

164 algorithms=["ES256"],

165 issuer="ccr",

166 audience=EXPECTED_POOL_ID,

167 )

168 

169 if payload.get("ccr:role") != "session_worker":

170 raise ValueError("token is not a session_worker token")

171 

172 act = payload.get("act") or {}

173 return {

174 "session_id": payload["ccr:session_id"],

175 "pool_id": payload["ccr:pool_id"],

176 "org_id": payload["ccr:org_id"],

177 "creator_email": act.get("email"),

178 "creator_sub": act.get("sub"),

179 }

180 ```

181 </Tab>

182</Tabs>

183 

184<h3 id="verify-the-token-inside-the-session">

185 Vérifier le token à l'intérieur de la session

186</h3>

187 

188Les [scripts wrapper](/docs/fr/self-hosted-environments-configuration#wrapper-scripts) s'exécutent à l'intérieur de la session, avant que Claude ne démarre. Au lieu d'appeler une bibliothèque JWT, ils peuvent exécuter la sous-commande `self-hosted-runner decode-token` du binaire du runner. La sous-commande lit le token à partir d'un argument positionnel, de `CLAUDE_CODE_SESSION_ACCESS_TOKEN`, ou de stdin canalisé, dans cet ordre, puis supprime le préfixe, vérifie la signature par rapport à l'endpoint JWKS, vérifie l'expiration et imprime les claims en JSON. La sous-commande effectue uniquement les vérifications de signature et d'expiration ; elle ne vérifie pas `iss`, `aud` ou `ccr:role`. Quand la décision d'authentification de votre wrapper dépend de ces claims, lisez-les à partir du JSON imprimé et comparez-les explicitement.

189 

190Cette commande extrait l'identité du créateur, en préférant le sujet du fournisseur SSO, puis l'adresse e-mail, puis le sujet `act.sub` du créateur, `user:<id>` ou `agent:<id>` :

191 

192```bash theme={null}

193"$CLAUDE_RUNNER_CLAUDE_BIN" self-hosted-runner decode-token | jq -re '.act.attested_by.sub // .act.email // .act.sub'

194```

195 

196Les wrappers reçoivent le chemin absolu du binaire du runner lui-même dans `CLAUDE_RUNNER_CLAUDE_BIN` ; utilisez ce chemin plutôt qu'un `claude` résolu par PATH afin que le décodage s'exécute sur le même binaire que le runner lui-même utilise.

197 

198Utilisez `jq -re` plutôt que `jq -r` afin qu'un claim manquant provoque une sortie non-zéro. Avec `-r` seul, un claim manquant imprime la chaîne littérale `null` et sort zéro, ce qui transmet silencieusement une mauvaise valeur en aval. Passez `--no-verify` à `decode-token` uniquement pour l'inspection hors ligne où l'endpoint JWKS est inaccessible.

199 

200<h2 id="claims-reference">

201 Référence des claims

202</h2>

203 

204Le tableau ci-dessous énumère les claims du token de session pertinents pour la vérification. Lisez l'identité à partir de l'espace de noms `ccr:*` et de la chaîne `act` ; les claims plats `account_email`, `organization_uuid` et `account_uuid` sont des doublons de compatibilité rétroactive qui peuvent être supprimés. Les sessions que l'identité de service de votre organisation crée, y compris les sessions de canal Claude Tag, portent un sujet `agent:` dans `act.sub` et omettent `act.email`, `ccr:account_id`, `account_email` et `account_uuid`. Les deux claims d'e-mail sont également facultatifs pour les sessions créées par l'utilisateur : Anthropic les enregistre à la création de la session uniquement quand les credentials de la demande créatrice portent un e-mail, et une session envoyée depuis la CLI peut manquer les deux, donc basez l'identité sur `act.sub` ou `ccr:account_id` plutôt que sur l'e-mail. Les tokens peuvent également porter des claims supplémentaires au-delà de ce tableau ; ignorez les claims que vous ne reconnaissez pas.

205 

206| Claim | Type | Description |

207| :------------------ | :--------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

208| `iss` | string | Toujours `ccr`. |

209| `sub` | string | `ccr:session:<session_id>`. |

210| `aud` | array of strings | Contient toujours `anthropic-api`. Pour les sessions dans les environnements auto-hébergés, le tableau contient également votre ID d'environnement, tel que `ccpool_...`. Vérifiez l'ID d'environnement, pas `anthropic-api`. |

211| `exp` | number | Expiration en tant que timestamp Unix. Durée de vie par défaut de quatre heures, maximum de huit heures. |

212| `iat` | number | Émis à titre de timestamp Unix. |

213| `jti` | string | Identifiant de token unique. |

214| `ccr:role` | string | Toujours `session_worker` pour les tokens de session. |

215| `ccr:session_id` | string | L'ID de session. Même valeur que le suffixe de `sub`. |

216| `ccr:pool_id` | string | Votre ID d'environnement. Même valeur qui apparaît dans `aud`. |

217| `ccr:org_id` | string | Votre ID d'organisation Anthropic. |

218| `ccr:account_id` | string | L'ID de compte Anthropic de l'utilisateur créateur : la valeur de `act.sub` sans le préfixe `user:`, un ID `user_...` étiqueté. La même valeur que le `CLAUDE_RUNNER_ACCOUNT_ID` du [hook spawn-runner](/docs/fr/self-hosted-environments-configuration#the-spawn-runner-hook) porte et que [`--lock-to-account`](/docs/fr/self-hosted-environments-reference#runner-cli-flags) accepte, donc les trois se comparent comme des chaînes égales. |

219| `account_email` | string | Doublon de `act.email` ; absent chaque fois que `act.email` l'est. |

220| `organization_uuid` | string | Votre UUID d'organisation Anthropic. |

221| `account_uuid` | string | L'UUID de compte Anthropic de l'utilisateur créateur. |

222| `act` | object | Chaîne de délégation [RFC 8693](https://www.rfc-editor.org/rfc/rfc8693). Voir [La chaîne `act`](#the-act-chain). |

223 

224<h3 id="the-act-chain">

225 La chaîne `act`

226</h3>

227 

228Le claim `act` enregistre le chemin de délégation complet de l'identité de l'utilisateur ou du service qui a créé la session jusqu'à l'[environnement](/docs/fr/self-hosted-environments#key-concepts) dont le secret a admis le runner, et l'identité qui a créé ce secret. Le créateur est l'acteur le plus externe, donc `act.sub` l'identifie directement.

229 

230| Path | Description |

231| :---------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

232| `act.sub` | L'ID utilisateur Anthropic de l'utilisateur créateur, sous la forme `user:<id>`, ou `agent:<id>` quand l'identité de service de votre organisation a créé la session, comme elle le fait pour les sessions de canal Claude Tag. |

233| `act.email` | L'adresse e-mail de l'utilisateur créateur, quand une a été enregistrée à la création de la session. Ne l'exigez pas ; basez-vous sur `act.sub`. |

234| `act.attested_by` | L'attestation du fournisseur d'identité en amont pour l'utilisateur créateur, quand disponible. `act.attested_by.sub` est le sujet que votre fournisseur SSO, tel que Google ou Okta, a émis. Préférez ceci à `act.email` lors du mappage aux identités dans vos propres systèmes. |

235| `act.act` | Le runner qui a généré la session. `act.act.sub` est `ccr:runner:<runner_id>`. |

236| `act.act.act` | L'environnement. `act.act.act.sub` est `ccr:pool:<pool_id>`. |

237| `act.act.act.act` | L'identité qui a créé le secret d'environnement avec lequel le runner s'est enregistré. La chaîne se termine ici. |

238 

239<h2 id="scope-derived-credentials">

240 Limiter les credentials dérivés

241</h2>

242 

243Le token de session identifie l'utilisateur ou l'identité de service qui a créé la session, mais ne le traitez pas comme équivalent à ce créateur se connectant directement. Le token se trouve dans une variable d'environnement à l'intérieur de la session, donc tout code que Claude exécute, et tout outil ou serveur MCP que la session démarre, peut le lire et le présenter.

244 

245La vérification est également hors ligne : un token qui se vérifie par rapport au JWKS reste valide jusqu'à son `exp`, quoi qu'il se soit passé pour la session depuis, et Anthropic ne publie pas un flux de révocation pour les tokens de session. Limitez tout ce que vous dérivez du token en conséquence.

246 

247Quand votre service échange le token pour des credentials internes, émettez des credentials limités à ce qu'une seule session de codage devrait atteindre :

248 

249* **Limiter les capacités** : accordez l'accès en lecture et en écriture aux ressources dont la session a besoin pour les tâches de codage, pas aux capacités administratives que le créateur détient ailleurs.

250* **Limiter la durée de vie** : limitez les credentials dérivés à l'`exp` du token, ou moins.

251* **Auditer en tant que session** : enregistrez le `ccr:session_id` et le `jti` aux côtés de l'identité du créateur afin de pouvoir retracer les actions jusqu'à une session spécifique.

252 

253<h2 id="related-environment-variables">

254 Variables d'environnement associées

255</h2>

256 

257L'identité du créateur apparaît également dans les variables d'environnement en clair sur deux surfaces qui ne vérifient jamais le token :

258 

259* **Le [hook `spawn-runner`](/docs/fr/self-hosted-environments-configuration#the-spawn-runner-hook), sur l'orchestrateur** : le hook s'exécute avant que tout runner n'existe pour une session en attente et reçoit l'identité du créateur dans des variables telles que `CLAUDE_RUNNER_ACCOUNT_EMAIL` et `CLAUDE_RUNNER_ACCOUNT_ID`. L'orchestrateur les lit à partir de l'ordre de travail, le token à usage unique signé qui autorise le spawning d'un runner, sans vérifier la signature de l'ordre de travail lui-même ; les claims sont de confiance car l'ordre de travail arrive sur la connexion de l'orchestrateur à Anthropic, que le secret d'environnement authentifie.

260* **[Scripts wrapper](/docs/fr/self-hosted-environments-configuration#wrapper-scripts), à l'intérieur de la session** : les wrappers reçoivent `CCR_SESSION_ACCOUNT_EMAIL`, l'e-mail du créateur pré-extrait du token sans vérification de signature. La variable convient pour l'étiquetage, tel que les remorques de commit, pas pour les décisions d'authentification.

261 

262Utilisez les variables en clair pour les décisions du côté de l'orchestrateur telles que la sélection d'une image de machine. Utilisez `CLAUDE_CODE_SESSION_ACCESS_TOKEN` quand un service en aval a besoin d'une preuve cryptographique indépendante plutôt que de faire confiance à l'environnement du runner.

263 

264<h2 id="what’s-next">

265 Prochaines étapes

266</h2>

267 

268* [Environnements auto-hébergés](/docs/fr/self-hosted-environments) : l'environnement, le runner et le modèle de session ; le [guide de démarrage rapide](/docs/fr/self-hosted-environments-quickstart) et [Déployer en production](/docs/fr/self-hosted-environments-deploy) contiennent la configuration et les opérations

269* [Personnaliser les sessions](/docs/fr/self-hosted-environments-configuration) : les scripts wrapper qui consomment le token, et le hook `spawn-runner`

270* [Référence](/docs/fr/self-hosted-environments-reference) : les drapeaux CLI, les variables d'environnement et les métriques

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 des environnements auto-hébergés

6 

7> Configurez votre premier environnement auto-hébergé : installez Claude Code, créez l'environnement, démarrez un runner et routez une session vers celui-ci.

8 

9<Note>

10 Les environnements auto-hébergés sont en bêta publique sur les plans Team et Enterprise ; [Disponibilité et limitations](/docs/fr/self-hosted-environments#availability-and-limitations) couvre le chemin d'activation. Cette page lance votre première session ; consultez [Environnements auto-hébergés](/docs/fr/self-hosted-environments) pour comprendre ce qu'ils sont et [Déployer en production](/docs/fr/self-hosted-environments-deploy) pour le durcissement et les recettes de flotte.

11</Note>

12 

13Un [environnement auto-hébergé](/docs/fr/self-hosted-environments) exécute les [sessions cloud](/docs/fr/claude-code-on-the-web) de Claude Code sur l'infrastructure que votre organisation exploite, exécutées par des processus runner que vous déployez. Ce démarrage rapide en configure votre premier, le plus petit qui fonctionne : un runner sur un seul hôte, exécutant une session de test. Il y a deux étapes : [créer l'environnement, démarrer un runner et router une session vers celui-ci](#set-up-an-environment-and-runner), puis [envoyer un message à cette session depuis votre terminal](#send-a-follow-up-message-to-a-running-session). Vous vous déplacerez entre deux surfaces : claude.ai pour créer l'environnement, vérifier son statut et router une session, et un terminal sur l'hôte pour tout ce que le runner fait.

14 

15À la fin, vous aurez un environnement sur la [page d'administration **Environnements cloud**](https://claude.ai/admin-settings/cloud-environments), un runner interrogeant le travail, et une session s'exécutant sur votre hôte. Avant de connecter des référentiels réels ou des systèmes internes, travaillez sur [Déployer en production](/docs/fr/self-hosted-environments-deploy), qui couvre la posture de sécurité, le contrôle de sortie, les identifiants git et l'orchestration.

16 

17<h2 id="prerequisites">

18 Prérequis

19</h2>

20 

21<h3 id="organization-and-roles">

22 Organisation et rôles

23</h3>

24 

25Le côté claude.ai a besoin de :

26 

27* **Autoriser les environnements auto-hébergés** activé par un [Propriétaire](/docs/fr/cloud-environments#organization-shared-environments) sur la [page d'administration **Environnements cloud**](https://claude.ai/admin-settings/cloud-environments) ; le bouton **Nouveau** n'apparaît pas tant qu'il ne l'est pas. Si vous ne tenez pas le rôle, quelqu'un qui le tient peut créer l'environnement et vous remettre son secret ; les étapes du runner et du terminal sur cette page ne nécessitent aucun rôle claude.ai, et où une étape vérifie le statut dans l'interface d'administration, les propres lignes de journal du runner vous donnent le même signal.

28* Une [connexion GitHub](/docs/fr/claude-code-on-the-web#github-authentication-options) pour votre organisation, afin que les développeurs puissent sélectionner des référentiels lorsqu'ils démarrent des sessions.

29 

30<h3 id="host-and-network">

31 Hôte et réseau

32</h3>

33 

34L'hôte du runner a besoin de :

35 

36* Un hôte ou conteneur Linux ou macOS avec HTTPS sortant vers `api.anthropic.com`, vers `claude.ai` et les hôtes de téléchargement vers lesquels il redirige pour l'étape d'installation ci-dessous, et vers votre hôte git pour le clone ; le [tableau des exigences réseau](/docs/fr/self-hosted-environments-deploy#network-requirements) a la liste complète. Windows n'est pas pris en charge en tant qu'hôte runner ; exécutez le runner dans un conteneur Linux à la place. Les postes de travail des développeurs ne sont pas affectés, car les sessions démarrent à partir de claude.ai dans un navigateur.

37* Une horloge synchronisée à l'heure réelle, par exemple avec NTP. L'authentification échoue lorsque l'horloge est décalée de plus de cinq minutes ; consultez [Dépannage](/docs/fr/self-hosted-environments-deploy#troubleshooting).

38 

39<h3 id="software-on-the-runner-host">

40 Logiciel sur l'hôte du runner

41</h3>

42 

43Installez sur l'hôte avant de commencer :

44 

45* **Claude Code v2.1.224 ou ultérieur**, avec l'une des [méthodes d'installation standard](/docs/fr/setup). Le runner fait partie du binaire `claude` standard, et les versions antérieures ne reconnaissent pas la sous-commande `self-hosted-runner`. Le canal `latest` par défaut du programme d'installation natif porte chaque version dès sa publication ; le canal `stable`, le cask Homebrew `claude-code`, et les référentiels apt, dnf et apk stables traînent d'environ une semaine. Pour épingler la version exacte que votre flotte exécute, consultez [Installer une version spécifique](/docs/fr/setup#install-a-specific-version). Pour les images de conteneur, consultez le Dockerfile dans [Déployer en production](/docs/fr/self-hosted-environments-deploy#build-the-runner-image).

46* **Git 2.24 ou plus récent**. Certaines options git sur la page de déploiement nécessitent des versions plus récentes ; [Configurer git](/docs/fr/self-hosted-environments-deploy#configure-git) indique chaque plancher.

47 

48Confirmez que l'hôte est prêt :

49 

50```bash theme={null}

51claude self-hosted-runner --help

52```

53 

54Un hôte prêt imprime le texte d'utilisation du runner, listant les drapeaux tels que `--environment-secret-file`. Sur les versions antérieures à 2.1.224, la commande imprime la sortie générale `claude --help` à la place ; mettez à jour avec `claude update` ou réinstallez à partir du canal `latest`.

55 

56<h2 id="set-up-an-environment-and-runner">

57 Configurer un environnement et un runner

58</h2>

59 

60Claude Code inclut une configuration guidée : une session Claude Code interactive qui vous guide à travers la création de l'environnement dans l'interface d'administration, démarre un runner local avec le fichier secret que vous enregistrez, confirme que le runner s'enregistre, et écrit une feuille de triche dans `./runner-setup/CHEAT-SHEET.md`. Exécutez-le sur une machine où vous vous êtes connecté avec `claude auth login` en utilisant un compte qui détient un rôle Propriétaire ; il n'est pas disponible avec les clés API ou les fournisseurs de modèles tiers. Sur les hôtes où une session interactive n'est pas possible, utilisez plutôt les étapes manuelles ci-dessous. Confirmez d'abord que la [vérification de version](#software-on-the-runner-host) a réussi : sur les versions antérieures à 2.1.224, cette commande démarre une session Claude ordinaire avec les mots comme invite au lieu de la configuration guidée. Pour démarrer la configuration guidée, exécutez la sous-commande setup et suivez les invites :

61 

62```bash theme={null}

63claude self-hosted-runner setup

64```

65 

66Pour configurer manuellement à la place :

67 

68<Steps>

69 <Step title="Créer un environnement">

70 Allez à la [page **Environnements cloud**](https://claude.ai/admin-settings/cloud-environments) dans les paramètres d'administration. Sous **Environnements auto-hébergés**, sélectionnez **Nouveau**, nommez l'environnement, et sélectionnez **Créer**. À la deuxième étape de l'assistant, sélectionnez **Copier la clé d'environnement** pour copier le secret d'environnement, que l'interface d'administration étiquette comme clé d'environnement. claude.ai affiche le secret une fois, et vous ne pouvez pas le récupérer plus tard ; il expire 365 jours après sa création. L'ID `ccpool_...` de l'environnement reste visible dans sa boîte de dialogue de détail ; vous en aurez besoin pour la vérification `aud` dans [vérification de token](/docs/fr/self-hosted-environments-identity) et pour dispatcher [les sessions de test à partir de CI](/docs/fr/self-hosted-environments-testing#run-the-test-loop).

71 

72 Si vous perdez le secret ou avez besoin de le faire tourner, créez un nouveau secret à partir de l'onglet **Configuration** de l'environnement, déployez le nouveau secret sur vos runners, puis révoquez l'ancien. Les runners détenant un secret révoqué échouent leur prochain sondage authentifié et se terminent, en enregistrant `poll auth failed`, et votre orchestrateur les redémarre avec le nouveau secret.

73 </Step>

74 

75 <Step title="Démarrer un runner">

76 Créez le répertoire secret. Cette étape et la suivante nécessitent root pour le chemin `/etc/claude` ; n'importe quel chemin que le processus runner peut lire fonctionne, donc ajustez les deux commandes et la valeur `--environment-secret-file` ensemble si vous en utilisez un différent.

77 

78 ```bash theme={null}

79 mkdir -p /etc/claude

80 ```

81 

82 Écrivez le secret d'environnement dans un fichier. La commande ci-dessous lit depuis votre terminal afin que le secret reste hors de l'historique du shell : collez la valeur que vous avez copiée, appuyez sur Entrée, puis Ctrl-D, et le `umask` du sous-shell rend le fichier lisible uniquement par son propriétaire.

83 

84 ```bash theme={null}

85 (umask 077 && cat > /etc/claude/environment-secret)

86 ```

87 

88 Choisissez un répertoire de base, en remplaçant `<writable-dir>` dans la commande du runner ci-dessous par un chemin absolu que le runner peut écrire ou créer. Le runner crée le répertoire au démarrage, puis extrait les référentiels et crée des répertoires par session sous celui-ci. Sans `--base-dir`, il utilise `/workspace`, qui ne fonctionne que si ce répertoire existe déjà et est accessible en écriture ou si vous démarrez le runner en tant que root.

89 

90 Si le runner ne peut pas créer ou écrire dans le chemin, il se termine au démarrage avec une erreur nommant le répertoire au lieu de s'enregistrer. Consultez [Dépannage](/docs/fr/self-hosted-environments-deploy#troubleshooting).

91 

92 Ensuite, démarrez le runner avec `--environment-secret-file` et `--base-dir`. Le runner s'enregistre auprès de votre environnement et commence à interroger le travail. Si le runner se termine, redémarrez-le manuellement. Les déploiements en production exécutent le runner sous un orchestrateur qui redémarre les runners terminés, normalement avec un système de fichiers frais par redémarrage ; [Réutiliser un checkout pré-chauffé](/docs/fr/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout) couvre la configuration de disque persistant prise en charge.

93 

94 ```bash theme={null}

95 claude self-hosted-runner --environment-secret-file '/etc/claude/environment-secret' --base-dir '<writable-dir>'

96 ```

97 </Step>

98 

99 <Step title="Vérifier que le runner apparaît">

100 Retournez à la [page **Environnements cloud**](https://claude.ai/admin-settings/cloud-environments). Le statut de votre environnement passe de **Aucun runner déployé** à **Sain** en quelques secondes après le démarrage du runner ; ouvrez l'environnement et sélectionnez **Activité** pour voir le runner lui-même.

101 </Step>

102 

103 <Step title="Router une session vers l'environnement">

104 Démarrez une session à claude.ai/code et sélectionnez votre environnement dans le sélecteur d'environnement, où les environnements auto-hébergés apparaissent aux côtés des environnements hébergés par Anthropic. Le runner clone avec les identifiants git que l'hôte a déjà, donc choisissez un référentiel que cet hôte peut déjà cloner, ou un public ; les options d'identifiants pour les référentiels privés en production sont sur [Configurer git](/docs/fr/self-hosted-environments-deploy#configure-git). Le prochain runner disponible récupère la session en attente et enregistre `Picked up session <session-id>` ainsi que son nombre actif et sa capacité, afin que vous puissiez confirmer à partir de la propre sortie du runner quel hôte a pris la session. Regardez la session fonctionner et lisez les réponses de Claude à [claude.ai/code](https://claude.ai/code). Si la session reste en attente à la place, consultez [Dépannage](/docs/fr/self-hosted-environments-deploy#troubleshooting).

105 </Step>

106</Steps>

107 

108Le runner se termine par conception une fois que ses sessions actives se terminent ; consultez [Cycle de vie du runner](/docs/fr/self-hosted-environments#runner-lifecycle). Pour la production, déployez-le sous un orchestrateur qui le redémarre à la sortie. Consultez [Déployer en production](/docs/fr/self-hosted-environments-deploy).

109 

110<h2 id="send-a-follow-up-message-to-a-running-session">

111 Envoyer un message de suivi à une session en cours d'exécution

112</h2>

113 

114Une fois qu'une session s'exécute sur votre environnement, envoyez-lui un suivi à partir de la CLI `claude` sur n'importe quelle machine où vous êtes connecté avec `claude auth login` ; la commande n'a pas besoin de s'exécuter à partir de la machine qui a démarré la session. La commande publie un message :

115 

116```bash theme={null}

117claude -p "your message" --cloud <session-id>

118```

119 

120Pour `<session-id>`, passez l'ID nu `session_...` ou `cse_...` ou l'URL claude.ai/code de la session. Un envoi réussi imprime `Sent to cloud session.` avec l'ID de session et un lien de visualisation. Les formes d'ID acceptées, la sortie JSON, les exigences de compte et de politique, et la référence d'erreur sont sur [Envoyer des suivis à partir de la CLI](/docs/fr/claude-code-on-the-web#send-follow-ups-from-the-cli), car la commande fonctionne de la même manière contre les sessions hébergées par Anthropic.

121 

122<h2 id="what’s-next">

123 Étapes suivantes

124</h2>

125 

126* [Déployer en production](/docs/fr/self-hosted-environments-deploy) : durcir le déploiement, contrôler la sortie, configurer les identifiants git et exécuter la flotte sous Kubernetes ou Compose

127* [Personnaliser les sessions](/docs/fr/self-hosted-environments-configuration) : scripts wrapper, hooks de cycle de vie, runners à la demande, serveurs MCP et permissions

128* [Tester de bout en bout](/docs/fr/self-hosted-environments-testing) : un test de fumée CI qui dispatche une session et lit les réponses de Claude

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 environnements auto-hébergés

6 

7> Référence complète pour le runner et l'orchestrateur auto-hébergés : drapeaux CLI, variables d'environnement et métriques Prometheus.

8 

9<Note>

10 Les environnements auto-hébergés sont en bêta publique sur les plans Team et Enterprise ; un [Propriétaire](/docs/fr/cloud-environments#organization-shared-environments) les active en activant **Autoriser les environnements auto-hébergés** sur la [page d'administration **Environnements cloud**](https://claude.ai/admin-settings/cloud-environments). Cette page est la référence des drapeaux et des métriques ; consultez le [guide de démarrage rapide](/docs/fr/self-hosted-environments-quickstart) pour la configuration et [Déployer en production](/docs/fr/self-hosted-environments-deploy) pour les recettes de flotte.

11</Note>

12 

13Cette page est la référence pour les deux processus que vous exécutez dans un [environnement auto-hébergé](/docs/fr/self-hosted-environments) : le runner, qui exécute les [sessions cloud](/docs/fr/claude-code-on-the-web) Claude Code sur vos hôtes, et l'orchestrateur d'autoscaling optionnel, qui démarre les runners à mesure que les sessions s'accumulent. Chacun a sa propre table de drapeaux. Les deux s'exécutent sur des hôtes Linux ou macOS, pour lesquels les valeurs par défaut telles que `/workspace` et `~/.claude` s'appliquent. Exécutez `claude self-hosted-runner --help` pour la liste faisant autorité sur votre version installée.

14 

15Les séries de métriques et quelques champs API utilisent toujours `pool` pour ce que ces pages appellent un environnement ; les deux termes désignent la même chose. L'ID d'environnement est le champ `pool_id`, avec la forme `ccpool_...` : partout où ces pages affichent un identifiant `pool`, il désigne l'environnement. Les drapeaux CLI et les variables d'environnement l'écrivent `environment`, comme `--environment-secret-file` ; les orthographes `pool` dépréciées fonctionnent toujours, comme la ligne [`--environment-secret-file`](#runner-cli-flags) le décrit.

16 

17<h2 id="runner-cli-flags">

18 Drapeaux CLI du runner

19</h2>

20 

21La plupart des drapeaux ont une variable d'environnement correspondante. Quand les deux sont définis, le drapeau a la priorité. Les drapeaux de durée prennent des minutes ou des secondes sur la CLI, mais la variable d'environnement appariée est toujours en millisecondes, indiquée par le suffixe `_MS`, et la colonne Par défaut affiche l'unité du drapeau : `--exit-if-unused-min 10` équivaut à `SELF_HOSTED_RUNNER_IDLE_SHUTDOWN_MS=600000`, et une valeur Helm comme `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS: "15"` signifie 15 millisecondes, pas la valeur par défaut de 15 minutes.

22 

23| Drapeau | Variable d'env | Par défaut | Description |

24| :---------------------------------------- | :------------------------------------------------ | :-------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

25| `--api-url <url>` | aucune | `https://api.anthropic.com` | URL de base de l'API. À remplacer uniquement pour les tests. |

26| `--base-dir <path>` | `SELF_HOSTED_RUNNER_BASE_DIR` | `/workspace` ; aucune sur Windows | Répertoire pour les clones de dépôts et les répertoires de travail par session. Le runner a besoin d'un accès en écriture à ce chemin ou à son parent. Le runner crée le répertoire au démarrage et se termine avec `cannot create or write to base directory` quand il ne peut pas le créer ou y écrire. Avant v2.1.225, le runner créait le répertoire au démarrage de la première session, donc un chemin inutilisable échouait les sessions plutôt que le démarrage. Sur Windows, qui n'est pas un hôte runner supporté, il n'y a pas de valeur par défaut : le runner se termine au démarrage sauf si vous passez le drapeau ou définissez la variable. Utilisez la même valeur sur chaque runner dans un environnement. Voir [Garder le répertoire de base et la capacité identiques sur tous les runners](/docs/fr/self-hosted-environments-deploy#keep-the-base-directory-and-capacity-identical-across-runners). |

27| `--capacity <n>` | aucune | `1` | Nombre maximum de sessions simultanées que ce runner gère. Toutes les sessions appartiennent au même [propriétaire](/docs/fr/self-hosted-environments#key-concepts) verrouillé. Utilisez la même valeur sur chaque runner dans un environnement ; voir [Garder le répertoire de base et la capacité identiques sur tous les runners](/docs/fr/self-hosted-environments-deploy#keep-the-base-directory-and-capacity-identical-across-runners). |

28| `--client-label <label>` | `SELF_HOSTED_RUNNER_CLIENT_LABEL` | le nom d'hôte de l'hôte | Étiquette que le runner envoie lors de son enregistrement. Le runner la signale également comme l'étiquette `client_label` de [`claude_code_self_hosted_runner_info`](#prometheus-metrics). Nécessite Claude Code v2.1.248 ou ultérieur. |

29| `--configure-git` | `SELF_HOSTED_RUNNER_CONFIGURE_GIT=1` | désactivé | Écrire l'identité git globale et activer la signature de commit Anthropic au démarrage. Voir [Configurer git](/docs/fr/self-hosted-environments-deploy#configure-git). |

30| `--confine-repo-settings <mode>` | `SELF_HOSTED_RUNNER_CONFINE_REPO_SETTINGS` | `warn` | Définit le mode de la garde qui signale une session quand les paramètres validés d'un dépôt tentent d'accorder un accès en écriture ou en lecture en dehors de l'espace de travail de cette session, de définir des variables d'environnement ou de remplacer la posture sandbox ou hooks de l'opérateur, comme `sandbox.enabled: false` ou `disableAllHooks`. Le `warn` par défaut enregistre la violation et démarre quand même la session, `enforce` refuse la session, et `off` désactive l'analyse. Voir [Renforcer votre déploiement](/docs/fr/self-hosted-environments-deploy#harden-your-deployment). |

31| `--debug-token-dir <path>` | `SELF_HOSTED_RUNNER_DEBUG_TOKEN_DIR` | non défini | Écrire les tokens en direct sur le disque pour inspection. Débogage uniquement ; ne pas utiliser en production. |

32| `--defer-shutdown-max-min <n>` | `SELF_HOSTED_RUNNER_DEFER_SHUTDOWN_MAX_MS` | `0` | Au premier `SIGTERM` ou `SIGINT`, continuer à servir les sessions déjà attachées au lieu de les drainer, puis libérer tout ce qui est encore attaché N minutes plus tard et quitter. Augmentez le délai d'arrêt de votre hôte avant de définir ceci. Voir [Différer le drainage après le premier signal](/docs/fr/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal). `0` désactive. Nécessite Claude Code v2.1.238 ou ultérieur. |

33| `--drain-grace-sec <n>` | `SELF_HOSTED_RUNNER_DRAIN_GRACE_MS` | `0` | Jusqu'à ce que le runner reçoive un signal d'arrêt ou atteigne son heure de retraite, contrôle quand le runner se termine après la fin de ses sessions actives : `0` se termine immédiatement sans interrogation supplémentaire, et une valeur positive garde le runner actif et réinterroge la file d'attente du propriétaire verrouillé pendant ce nombre de secondes d'abord, au prix de l'isolation de conteneur par session décrite dans la [section de renforcement](/docs/fr/self-hosted-environments-deploy#harden-your-deployment). Après un premier signal que vous avez différé avec [`--defer-shutdown-max-min`](/docs/fr/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal), le runner se termine dès qu'il ne détient aucune session, quelle que soit la valeur que vous définissez ici. |

34| `--drain-wait-sec <n>` | `SELF_HOSTED_RUNNER_DRAIN_WAIT_MS` | `0` | Une fois le drainage commencé, qui se fait sur `SIGTERM` sauf si vous définissez [`--defer-shutdown-max-min`](/docs/fr/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal), attendez jusqu'à N secondes pour que le tour en vol de chaque session et les tâches de fond se terminent avant de terminer l'enfant. Pendant cette attente, le runner compte une tâche de fond qui vient de se terminer comme toujours en cours d'exécution jusqu'au tour de suivi qui lit son résultat commence, pendant au maximum la fenêtre [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings). |

35| `--environment-secret-file <path>` | `SELF_HOSTED_RUNNER_ENVIRONMENT_SECRET` | requis | Chemin vers un fichier contenant le secret d'environnement, ou, pour les runners générés par l'[orchestrateur](/docs/fr/self-hosted-environments-configuration#on-demand-runners), le JWT de bon de travail à usage unique. `SELF_HOSTED_RUNNER_ENVIRONMENT_SECRET` porte la valeur secrète directement, pas un chemin de fichier. L'ancien drapeau `--pool-secret-file` et la variable `SELF_HOSTED_RUNNER_POOL_SECRET` fonctionnent toujours et impriment un avis de dépréciation sur stderr ; les builds de runner du programme d'aperçu plus anciens que 2.1.216 ne reconnaissent que ces anciens noms. |

36| `--exec-path <path>` | `SELF_HOSTED_RUNNER_EXEC_PATH` | binaire propre | Binaire ou script wrapper à générer pour chaque session. Voir [Scripts wrapper](/docs/fr/self-hosted-environments-configuration#wrapper-scripts). |

37| `--exit-if-unused-min <n>` | `SELF_HOSTED_RUNNER_IDLE_SHUTDOWN_MS` | `0` | Quitter après N minutes d'interrogation sans travail jamais assigné, pour la réduction d'échelle de l'autoscaler. `0` désactive. |

38| `--git-host-rewrite <from>=<to>` | aucune | non défini | Réécrire les URL sources `https://<from>/...` en `https://<to>/...` avant le clonage, pour DNS à horizon divisé. Répétable ; drapeau uniquement. |

39| `--git-ssh-rewrite <host>` | aucune | non défini | Réécrire les URL sources `https://<host>/...` en `git@<host>:...` avant le clonage, pour les hôtes git SSH uniquement. Répétable ; drapeau uniquement. |

40| `--health-port <port>` | `SELF_HOSTED_RUNNER_HEALTH_PORT` | `8080` | Port pour l'écouteur `/healthz` et `/metrics`. Définir `0` pour désactiver. |

41| `--hooks-dir <path>` | `SELF_HOSTED_RUNNER_HOOKS_DIR` | non défini | Répertoire des scripts de hook de cycle de vie. Voir [Hooks de cycle de vie](/docs/fr/self-hosted-environments-configuration#lifecycle-hooks). |

42| `--kill-session-after-min <n>` | `SELF_HOSTED_RUNNER_MAX_LIFETIME_MS` | `0` | Terminer un enfant de session une fois qu'il a vécu N minutes en temps réel, comme limite de sécurité pour les sessions bloquées. Le runner termine l'arborescence des processus de la session, y compris toutes les commandes que la session a laissées en cours d'exécution. Le runner diffère une suppression qui tombe au milieu d'un tour jusqu'à la fin du tour, pendant au maximum la fenêtre [`SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS`](#environment-variable-only-settings). Pour choisir une valeur, voir [Certaines sessions ne comptent pas comme inactives](/docs/fr/self-hosted-environments-deploy#some-sessions-don't-count-as-idle). `0` désactive. |

43| `--lock-to-account <id>` | `SELF_HOSTED_RUNNER_LOCK_TO_ACCOUNT` | non défini | Pré-verrouiller le runner à un compte spécifique au démarrage au lieu de verrouiller à la première session. Accepte une adresse e-mail ou un ID `user_...` dans l'organisation de l'environnement. Un runner pré-verrouillé ne récupère jamais les sessions du canal Claude Tag, qui n'ont pas de compte. |

44| `--log-file <path>` | `SELF_HOSTED_RUNNER_LOG_FILE` | non défini | Refléter les logs du runner vers un fichier en plus de stdout et stderr, créé avec les permissions `0600`. Requis pour que `self-hosted-runner doctor` suive les logs localement. |

45| `--log-level <level>` | aucune | `info` | `info` ou `debug` |

46| `--post-session-hook-timeout-sec <n>` | `SELF_HOSTED_RUNNER_POST_SESSION_HOOK_TIMEOUT_MS` | `60` | Budget pour le hook [`post-session`](/docs/fr/self-hosted-environments-configuration#post-session) à la fin de chaque session, y compris l'arrêt du runner |

47| `--proxy-authorization-command <command>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_COMMAND` | non défini | Commande shell que le runner exécute pour chaque connexion à votre proxy de sortie, en utilisant sa stdout coupée comme valeur d'en-tête `Proxy-Authorization`. Nécessite `HTTPS_PROXY` ou `HTTP_PROXY`, et ne peut pas être combiné avec `--proxy-authorization-file`. Voir [S'authentifier auprès d'un proxy de sortie](/docs/fr/self-hosted-environments-deploy#authenticate-to-an-egress-proxy). Nécessite Claude Code v2.1.238 ou ultérieur. |

48| `--proxy-authorization-file <path>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_FILE` | non défini | Fichier que le runner lit pour chaque connexion à votre proxy de sortie, en utilisant son contenu coupé comme valeur d'en-tête `Proxy-Authorization`. Utilisez ce drapeau pour un token qu'un autre processus fait tourner en place. Porte les mêmes exigences que `--proxy-authorization-command`, et ne peut pas être combiné avec lui. Voir [S'authentifier auprès d'un proxy de sortie](/docs/fr/self-hosted-environments-deploy#authenticate-to-an-egress-proxy). Nécessite Claude Code v2.1.238 ou ultérieur. |

49| `--push-outcome-on-release` | `SELF_HOSTED_RUNNER_PUSH_OUTCOME_ON_RELEASE` | désactivé | À la fin d'une session initiée par le runner comme un drainage ou une libération inactive, pousser les branches de résultat suivies vers `origin` avant de supprimer l'espace de travail, afin que les commits en vol survivent à un redémarrage. Meilleur effort ; ajoute 30 secondes au budget d'arrêt, et nécessite git 2.29 ou plus récent pour reprendre à partir de la branche poussée. Restreindre l'accès en push aux refs `claude/*` avant d'activer ; voir [Les sessions reprises perdent le travail non poussé](/docs/fr/self-hosted-environments-deploy#additional-limitations). Les dépôts extraits via un hook de cycle de vie `checkout` ne sont pas poussés ; prenez des snapshots de ceux-ci à partir du hook [`post-session`](/docs/fr/self-hosted-environments-configuration#post-session) à la place. |

50| `--release-idle-session-min <n>` | `SELF_HOSTED_RUNNER_SESSION_IDLE_MS` | `0` | Libérer un créneau de session après N minutes d'inactivité une fois qu'un tour se termine ou que la session attend l'action de l'utilisateur. Une session qui est toujours au milieu d'un tour, y compris une qui détient une tâche de fond qui ne finit jamais ou une approbation demandée de l'intérieur d'un appel d'outil en cours d'exécution, ne compte pas comme inactive ; associer avec `--kill-session-after-min` comme butée dure. Après la fin de la tâche de fond d'une session, le runner considère la session comme occupée jusqu'au tour de suivi qui lit le résultat commence, pendant au maximum la fenêtre [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings). Jusqu'à ce que le runner reçoive un signal d'arrêt ou atteigne son heure de retraite, une libération qui laisse le runner sans sessions actives démarre le même chemin de sortie qu'un drainage normal, gouverné par `--drain-grace-sec`. Après un premier signal que vous avez différé avec [`--defer-shutdown-max-min`](/docs/fr/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal), le runner se termine dès qu'une libération le laisse sans sessions. `0` désactive. |

51| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | non défini | Retirer le runner à un timestamp Unix absolu en secondes, pour l'infrastructure qui tue le runner à un moment connu ; [Cycle de vie du runner](/docs/fr/self-hosted-environments#runner-lifecycle) décrit la séquence de libération et comment dimensionner la marge. Les valeurs avant 2001 ou après l'année 5138 sont rejetées par le drapeau et ignorées par la variable d'environnement. |

52| `--session-stop-grace-sec <n>` | `SELF_HOSTED_RUNNER_SESSION_STOP_GRACE_MS` | `5` | Combien de temps attendre que le processus Claude se termine proprement après la fin d'une session, avant de le tuer de force. Augmentez la valeur si les hooks `SessionEnd` propres de l'enfant ont besoin de plus de temps. |

53| `--startup-timeout-min <n>` | `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS` | `15` | Libérer un créneau de session si l'enfant n'a pas signalé qu'il s'était initialisé dans N minutes après le lancement. Effacé par le signal d'init de l'enfant sur le [canal d'activité](/docs/fr/self-hosted-environments-configuration#keep-stdin-and-file-descriptor-3-attached), pas par la sortie ordinaire, après quoi `--release-idle-session-min` prend le relais. `0` désactive. |

54| `--trust-workspace [bool]` | `SELF_HOSTED_RUNNER_TRUST_WORKSPACE` | activé | Amorcer la confiance persistante pour les chemins de dépôt de chaque session afin que les `permissions.allow` et `additionalDirectories` validés par le dépôt soient honorés. Définir `false` pour supprimer les subventions de permission validées par le dépôt et configurer les règles d'autorisation dans le `settings.json` de la configuration d'hôte à la place ; les paramètres `sandbox.*` validés par le dépôt s'appliquent toujours de toute façon, c'est pourquoi la [garde de paramètres de dépôt](/docs/fr/self-hosted-environments-deploy#harden-your-deployment) les analyse indépendamment de ce drapeau. |

55| `--use-anthropic-git-proxy` | `CLAUDE_RUNNER_USE_GIT_PROXY=1` | désactivé | Cloner via le proxy git d'Anthropic au lieu de l'authentification git gérée par le client. Nécessite `--capacity 1` et git 2.32 ou plus récent ; le runner refuse de démarrer sinon. Remplace les drapeaux de réécriture. |

56 

57La plupart des drapeaux de durée ont un maximum, choisi pour garder chaque délai d'attente en dessous du plafond de minuteur 32 bits du runtime d'environ 24,85 jours. Les drapeaux `--*-min` sont plafonnés à 10080 minutes, 7 jours ; `--drain-grace-sec` à 604800 secondes, également 7 jours ; et `--drain-wait-sec` à 86400 secondes, 24 heures. `--session-stop-grace-sec` et `--post-session-hook-timeout-sec` ne sont pas plafonnés. Dépasser un plafond se comporte différemment par surface :

58 

59* **Drapeau** : le démarrage échoue avec une erreur.

60* **Variable d'environnement** : le runner serre la valeur au plafond de minuteur plutôt que de la rejeter.

61 

62<h2 id="orchestrator-cli-flags">

63 Drapeaux CLI de l'orchestrateur

64</h2>

65 

66La sous-commande `self-hosted-runner orchestrator`, qui génère les [runners à la demande](/docs/fr/self-hosted-environments-configuration#on-demand-runners), accepte `--api-url`, `--environment-secret-file`, `--hooks-dir`, `--health-port` et `--log-level` avec les mêmes valeurs par défaut que le runner et, où le drapeau du runner en a une, la même variable d'environnement, sauf que `--hooks-dir` est requis et doit contenir un hook `spawn-runner`. Il prend également ses propres drapeaux :

67 

68| Drapeau | Par défaut | Description |

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

70| `--hook-concurrency <n>` | `4` | Nombre maximum de hooks `spawn-runner` s'exécutant en parallèle. Limite également le nombre de demandes de génération réclamées par interrogation. |

71| `--hook-timeout <sec>` | `60` | Terminer l'arborescence des processus du hook après ce nombre de secondes. Le délai d'attente plus sa grâce de suppression de 5 secondes doit rester en dessous de `--expected-spawn-seconds` ; l'orchestrateur applique ceci au démarrage. |

72| `--expected-spawn-seconds <sec>` | `120` | Temps de démarrage p99 attendu pour les runners générés, dans la plage appliquée par le serveur 10 à 3600. Envoyé à chaque interrogation comme le bail côté serveur ; si aucun runner ne s'enregistre avant son expiration, la session est re-proposée avec un nouvel ID de commande. Tous les réplicas doivent partager cette valeur. |

73| `--min-idle <n>` | `0` | Garder au moins N créneaux de session inactifs libres en générant proactivement des runners de secours. `0` désactive le préchauffage. Associer avec le `--exit-if-unused-min` du runner afin que les runners de secours excédentaires se réclament eux-mêmes. |

74| `--debug-dir <path>` | non défini | Écrire le bon de travail de chaque demande de génération et la stderr du hook sur le disque. Débogage uniquement ; ne jamais définir en production. |

75 

76<h3 id="scm-connector-flags">

77 Drapeaux du connecteur SCM

78</h3>

79 

80L'orchestrateur peut maintenir une connexion WebSocket permanente au plan de contrôle d'Anthropic afin que les flux pré-session hébergés, comme le sélecteur de dépôt et le résolveur de branche ou de ref, puissent atteindre un hôte GitHub Enterprise Server qui n'est routable que de l'intérieur de votre réseau. Le connecteur reste désactivé sauf si vous définissez `--scm-connector-host`.

81 

82| Drapeau | Par défaut | Description |

83| :------------------------------------------------------ | :--------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

84| `--scm-connector-host <host[:port]>` | non défini | Nom d'hôte GitHub Enterprise Server vers lequel transférer les demandes. Le port par défaut est `443`. Définir ce drapeau active le connecteur. |

85| `--scm-connector-id <n>` | requis avec `--scm-connector-host` | L'ID numérique de la connexion GitHub Enterprise Server de votre organisation. Contactez votre équipe de compte Anthropic pour la valeur quand vous activez le connecteur. |

86| `--scm-connector-provider <slug>` | `ghe` | Segment de chemin identifiant le fournisseur, correspondant à `^[a-z0-9-]{1,32}$`. |

87| `--scm-connector-ca-file <path>` | non défini | Bundle CA supplémentaire, au format PEM, pour les connexions TLS à l'hôte GitHub Enterprise Server. |

88| `--scm-connector-host-rewrite <from>=<to_host:to_port>` | non défini | Pour les tests de bout en bout uniquement : redirige la connexion TCP tout en gardant l'en-tête Host et TLS SNI comme `--scm-connector-host`. |

89 

90Le connecteur s'authentifie avec le secret d'environnement existant de l'orchestrateur et se reconnecte automatiquement : avec backoff exponentiel sur une connexion abandonnée, ou un délai fixe de 30 secondes quand le plan de contrôle ferme la connexion parce qu'un autre réplica d'orchestrateur la détient déjà.

91 

92<h2 id="environment-variable-only-settings">

93 Paramètres réservés aux variables d'environnement

94</h2>

95 

96Ces paramètres du runner sont lus uniquement à partir de l'environnement et couvrent le comportement que la plupart des déploiements laissent à la valeur par défaut :

97 

98| Variable d'env | Par défaut | Description |

99| :----------------------------------------- | :---------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

100| `SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS` | `30000` | Combien de temps le runner considère une session comme occupée après la fin d'une tâche de fond tandis que le tour de suivi qui lit le résultat n'a pas commencé. Les lignes [`--drain-wait-sec` et `--release-idle-session-min`](#runner-cli-flags) décrivent où la retenue s'applique au drainage et à la libération inactive, et [Cycle de vie du runner](/docs/fr/self-hosted-environments#runner-lifecycle) décrit où elle s'applique à la retraite `--retire-at`. `0` ou une valeur inutilisable revient à la valeur par défaut, donc la retenue ne peut pas être désactivée. Nécessite Claude Code v2.1.228 ou ultérieur. |

101| `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` | `~/.claude` | Répertoire capturé dans le snapshot de démarrage du runner et amorcé dans le `CLAUDE_CONFIG_DIR` de chaque session ; les modifications sur le disque s'appliquent après un redémarrage du runner. Définir la variable déplace également l'endroit où le runner lit `.claude.json` pour l'[amorçage MCP](/docs/fr/self-hosted-environments-configuration#mcp-servers), donc le définir, y compris à sa propre valeur par défaut, relocalise cette recherche ; pointez vers un répertoire vide pour désactiver complètement l'amorçage. |

102| `SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS` | `900000` | Limite combien de temps une suppression `--kill-session-after-min` est différée en attendant la fin d'un tour en vol |

103| `SELF_HOSTED_RUNNER_SIGKILL_GRACE_MS` | `30000` | Combien de temps le runner attend que le système d'exploitation livre `SIGKILL` à un enfant bloqué dans les E/S non interruptibles avant de se terminer lui-même. Plancher à `--post-session-hook-timeout-sec` plus 15 secondes, et 30 de plus quand `--push-outcome-on-release` est défini, donc le minimum effectif est 75 secondes aux valeurs par défaut. |

104| `CLAUDE_RUNNER_FETCH_DEPTH` | `50` | Profondeur de récupération git pour les clones frais. Définir un entier positif, ou `full` ou `0` pour une récupération complète. Les dépôts déjà présents dans l'espace de travail conservent leur profondeur existante. |

105| `CLAUDE_RUNNER_SKIP_GIT_VERIFY` | non défini | Quand `1`, ignorer la vérification de présence `.git` après l'exécution d'un hook `checkout`. Définir ceci quand votre hook matérialise une source non-git. |

106| `FORCE_AUTOUPDATE_PLUGINS` | non défini | Quand `1`, laisser les marchés de plugins se mettre à jour automatiquement même si le binaire est épinglé |

107| `CLAUDE_CODE_DISABLE_ARTIFACT` | non défini | Quand `1`, désactiver l'outil Artifact dans les sessions indépendamment du paramètre d'administration de l'organisation, et supprimer l'exigence de sortie `*.frame.claudeusercontent.com` |

108 

109<h2 id="telemetry">

110 Télémétrie

111</h2>

112 

113Les enfants de session envoient la télémétrie opérationnelle à Anthropic sauf si vous la désactivez. Aucun code ou contenu de dépôt n'est envoyé. Définir les variables de télémétrie sur le processus du runner ; le runner les réaffirme après l'application des variables d'environnement fournies par le serveur, donc le paramètre de l'opérateur a toujours la priorité.

114 

115Un contrôle est spécifique aux environnements auto-hébergés : `CLAUDE_CODE_BYOC_ENABLE_DATADOG=1` opte pour les métriques opérationnelles Datadog, qui sont désactivées par défaut dans les environnements auto-hébergés. Les contrôles de télémétrie Claude Code généraux, `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, `DISABLE_ERROR_REPORTING` et `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, s'appliquent aux enfants de session comme documenté dans la [référence des variables d'environnement](/docs/fr/env-vars). `DISABLE_GROWTHBOOK` est connexe mais différent : définir `DISABLE_GROWTHBOOK=1` désactive la récupération des drapeaux de fonctionnalité, et la télémétrie reste activée sauf si `DISABLE_TELEMETRY` est également défini.

116 

117`CLAUDE_CODE_ENABLE_TELEMETRY` n'est pas connexe : il active l'export OpenTelemetry vers votre propre collecteur, comme décrit dans [Surveillance](/docs/fr/monitoring-usage), et ne contrôle pas l'analytique d'Anthropic.

118 

119<h2 id="health-endpoint">

120 Point de terminaison de santé

121</h2>

122 

123Le runner sert `GET /healthz` sur le port de santé configuré. La réponse est `200 OK` chaque fois que le processus est actif, quel que soit l'état de la boucle d'interrogation, donc une sonde HTTP sur ce point de terminaison détecte uniquement un processus mort. Le corps JSON décrit l'état actuel :

124 

125```json theme={null}

126{

127 "status": "ok",

128 "runner_id": "ccrunner_...",

129 "active_sessions": 2,

130 "last_poll_at": "2026-03-31T18:04:11.220Z",

131 "last_poll_age_ms": 842

132}

133```

134 

135Utilisez `last_poll_age_ms` comme signal de vivacité dans les sondes personnalisées ; une valeur qui croît sans limite indique que la boucle d'interrogation est bloquée. À la fois `last_poll_at` et `last_poll_age_ms` sont `null` jusqu'à la fin de la première interrogation.

136 

137L'orchestrateur sert son propre `/healthz` sur son port de santé. Son point de terminaison retourne toujours `200`, et le corps porte un champ `connected` signalant si l'interrogation la plus récente a réussi, plus les comptes de file d'attente de génération par état dans `queue_counts`. Gater la disponibilité et les alertes sur `connected` plutôt que sur le code de statut.

138 

139Quand le [connecteur SCM](#scm-connector-flags) est configuré, le corps `/healthz` de l'orchestrateur porte également `scm_connector_connected` et un objet `scm_connector` avec `connected`, `last_connected_at`, `last_error`, `reconnects` et `requests_forwarded`. Les deux champs sont `null` quand `--scm-connector-host` n'est pas défini.

140 

141<h2 id="prometheus-metrics">

142 Métriques Prometheus

143</h2>

144 

145Chaque runner sert les métriques Prometheus à `GET /metrics` sur le même port que `/healthz`. Séries clés :

146 

147| Série | Notes |

148| :-------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

149| `claude_code_self_hosted_runner_info{runner_id,version,client_label}` | Toujours `1` ; utile pour l'inventaire de flotte et la détection de dérive de version |

150| `claude_code_self_hosted_runner_capacity` | `--capacity` configuré |

151| `claude_code_self_hosted_runner_active_sessions` | Sessions actuellement en cours d'exécution |

152| `claude_code_self_hosted_runner_locked_account{email}` | Présent une fois que le runner s'est verrouillé à un utilisateur et qu'un token de session portant une revendication `act.email` a été émis. La série est absente sur un runner verrouillé à un agent Claude Tag, dont les tokens de session ne portent pas `act.email`. La valeur d'étiquette est l'e-mail du compte ; si votre magasin de métriques est largement lisible, supprimez ou hachez l'étiquette au moment de la récupération, par exemple avec les `metric_relabel_configs` Prometheus. |

153| `claude_code_self_hosted_runner_last_poll_age_seconds` | Secondes depuis la dernière interrogation réussie. Alerter si plus de 60. |

154| `claude_code_self_hosted_runner_poll_errors_total{error_kind}` | Cumul des défaillances PollWork par type : `transport`, `timeout`, `5xx`, `429` ou `4xx`. Les cinq séries sont présentes depuis le démarrage du processus ; alerter sur `rate(...[5m]) > 0`. |

155| `claude_code_self_hosted_runner_sessions_started_total{client_platform}` | Processus enfants de session générés au cours de la durée de vie du runner, une série par origine de session comme `web_claude_ai`, `ios`, `android`, `desktop_app` ou `claude_code_cli`, ou `unknown` quand le serveur n'en a pas envoyé. Les sessions Slack portent soit `claude_in_slack` soit `claude-in-slack` selon l'intégration Slack qui les a créées, donc correspondre aux deux avec un sélecteur regex comme `{client_platform=~"claude[-_]in[-_]slack"}`. Utiliser `sum()` pour le total de la flotte. |

156| `claude_code_self_hosted_runner_sessions_completed_total{client_platform}` | Sessions qui se sont terminées proprement, étiquetées de la même manière. Plus large qu'une simple sortie propre : voir [sémantique du compteur de cycle de vie de session](#session-lifecycle-counter-semantics) pour ce qui compte. |

157| `claude_code_self_hosted_runner_sessions_failed_total{client_platform}` | Sessions qui se sont terminées en échec, étiquetées de la même manière. Même mise en garde : voir [sémantique du compteur de cycle de vie de session](#session-lifecycle-counter-semantics). |

158| `claude_code_self_hosted_runner_sessions_interrupted_total{client_platform}` | Sessions que le runner a terminées pour une raison opérationnelle plutôt qu'un résultat de session, étiquetées de la même manière. Voir [sémantique du compteur de cycle de vie de session](#session-lifecycle-counter-semantics). |

159| `claude_code_self_hosted_runner_initializing_sessions` | Sessions actuellement en phase d'init, de l'assignation jusqu'à l'événement d'init de l'enfant |

160| `claude_code_self_hosted_runner_session_init_duration_seconds` | Histogramme des durées d'init de session |

161| `claude_code_self_hosted_runner_session_init_errors_total` | Sessions qui ont échoué avant d'atteindre l'init : une défaillance du hook checkout, la préparation git, un problème de token ou un crash d'enfant pré-init |

162| `claude_code_self_hosted_runner_session_start_hook_errors_total` | Hooks `SessionStart` qui ont signalé un résultat d'erreur, un par exécution de hook échouée |

163| `claude_code_self_hosted_runner_session_idle_seconds{session_id,client_platform}` | Jauge par session de secondes depuis que la session est devenue inactive. Utile pour terminer les sessions bloquées sur une invite de permission sans réponse. |

164 

165L'orchestrateur sert ses propres séries à `GET /metrics` sur le même port que son `/healthz` :

166 

167| Série | Notes |

168| :-------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

169| `claude_code_self_hosted_orchestrator_info{version,pool_id,orchestrator_uuid,hostname}` | Toujours `1` |

170| `claude_code_self_hosted_orchestrator_connected` | `1` quand l'interrogation la plus récente a réussi ; tombe à `0` après toute interrogation échouée, quel que soit le type d'échec |

171| `claude_code_self_hosted_orchestrator_last_poll_age_seconds` | Secondes depuis la dernière tentative d'interrogation, succès ou échec, contrairement à la métrique identiquement nommée du runner, qui mesure depuis le dernier succès ; associer avec `connected` pour attraper les interrogations échouées. La boucle d'interrogation de l'orchestrateur attend l'exécution du hook, donc alerter au-dessus de `--hook-timeout` plus une marge, autour de 90 secondes aux valeurs par défaut, plutôt qu'un plat 60. |

172| `claude_code_self_hosted_orchestrator_poll_errors_total{error_kind}` | Cumul des défaillances PollSpawnHints par type : `transport`, `timeout`, `5xx`, `429` ou `4xx`. Les cinq séries sont présentes depuis le démarrage du processus ; alerter sur `rate(...[5m]) > 0`. |

173| `claude_code_self_hosted_orchestrator_queue_pending_sessions` | Demandes de génération réclamables en ce moment |

174| `claude_code_self_hosted_orchestrator_queue_backing_off_sessions` | Demandes de génération en backoff de nouvelle tentative après une défaillance de hook réessayable |

175| `claude_code_self_hosted_orchestrator_queue_circuit_broken_sessions` | Demandes de génération bloquées jusqu'à ce qu'un Propriétaire les réessaye à partir de l'onglet **Activity** de l'environnement ; alerter si au-dessus de zéro |

176| `claude_code_self_hosted_orchestrator_pool_pending_sessions` | Total des sessions attendant un runner pour cet environnement. Agrégat à l'échelle de l'environnement, identique sur chaque instance d'orchestrateur : utiliser `MAX` plutôt que `SUM` entre les instances. |

177| `claude_code_self_hosted_orchestrator_pool_active_sessions` | Sessions actuellement assignées à un runner actif dans cet environnement. Agrégat à l'échelle de l'environnement, identique sur chaque instance d'orchestrateur : utiliser `MAX` plutôt que `SUM` entre les instances. |

178| `claude_code_self_hosted_orchestrator_spawn_hooks_total{result}` | Cumul des résultats du hook `spawn-runner` : `ok`, `retryable`, `non_retryable`. Compte les invocations de hook d'orchestrateur, pas les enfants de session que les runners génèrent : non comparable à `sessions_started_total`, puisque la capacité au-dessus d'un, les pools chauds et les runners générés à nouveau pour la même session divergent les deux. |

179| `claude_code_self_hosted_orchestrator_spawn_hook_duration_seconds` | Histogramme des durées de hook |

180| `claude_code_self_hosted_orchestrator_warm_hints_dispatched_total` | Demandes de génération de secours expédiées depuis le démarrage du processus |

181| `claude_code_self_hosted_orchestrator_session_queue_wait_seconds` | Histogramme de secondes que chaque session a attendu dans la file d'attente avant que l'orchestrateur la réclame pour la génération, enregistré à partir de l'horodatage d'attente de file d'attente que le plan de contrôle envoie avec la demande de génération de chaque session. Utiliser pour les alertes de temps d'attente p50/p99. Les générations de préchauffage ne sont pas échantillonnées. |

182| `claude_code_self_hosted_orchestrator_clock_skew_seconds` | Décalage d'horloge local moins serveur ; diagnostic, présent une fois mesuré |

183| `claude_code_self_hosted_orchestrator_scm_connector_connected` | `1` quand le WebSocket du [connecteur SCM](#scm-connector-flags) est ouvert ; `0` lors de la composition ou du backoff. Absent quand `--scm-connector-host` n'est pas défini. |

184| `claude_code_self_hosted_orchestrator_scm_connector_requests_forwarded_total` | Cumul des requêtes HTTP proxifiées vers l'hôte SCM configuré depuis le démarrage du processus. Absent quand `--scm-connector-host` n'est pas défini. |

185 

186Pour la mise à l'échelle automatique, choisissez la série qui correspond à votre style de mise à l'échelle et gâtez-la avant qu'elle n'alimente le scaler :

187 

188* **Mise à l'échelle basée sur la profondeur de file d'attente** : alimenter `claude_code_self_hosted_orchestrator_pool_pending_sessions` dans votre HPA ou scaler KEDA, pas `queue_pending_sessions`.

189* **Mise à l'échelle basée sur la capacité** : mettre à l'échelle sur le ratio des `active_sessions` du runner à `capacity`.

190* **Gâter sur `connected`** : filtrer la requête avec `claude_code_self_hosted_orchestrator_connected == 1` par instance, afin que la valeur obsolète d'un réplica déconnecté n'alimente pas le scaler.

191 

192Pendant une panne d'interrogation complète, chaque réplica déconnecté, la requête gâtée ne retourne aucune donnée. HPA maintient le nombre de réplicas actuel sur une métrique manquante, mais le scaler Prometheus de KEDA à son `ignoreNullValues: "true"` par défaut lit le résultat vide comme zéro et réduit ; définir `ignoreNullValues: "false"` sur le ScaledObject, éventuellement avec un plancher de réplicas `fallback`.

193 

194Le PodMonitor `Prometheus Operator` suivant couvre les deux processus. Il sélectionne les pods par l'étiquette `app.kubernetes.io/part-of: claude-code-self-hosted-runner` et le port nommé `health` que la [recette Kubernetes](/docs/fr/self-hosted-environments-deploy#kubernetes) définit ; ajustez les espaces de noms pour correspondre à votre déploiement :

195 

196```yaml theme={null}

197# Exemple PodMonitor Prometheus Operator pour le runner + orchestrateur

198# Claude Code auto-hébergé. Ajustez les sélecteurs d'espace de noms et

199# d'étiquettes pour correspondre à votre déploiement. À la fois le runner

200# et l'orchestrateur servent /metrics sur leur --health-port (par défaut 8080).

201apiVersion: monitoring.coreos.com/v1

202kind: PodMonitor

203metadata:

204 name: claude-code-self-hosted-runner

205 namespace: monitoring

206spec:

207 namespaceSelector:

208 matchNames:

209 - claude-runners

210 selector:

211 matchExpressions:

212 # Correspond au Deployment du runner à partir de la recette Kubernetes,

213 # plus tous les Jobs de runner à la demande et pods d'orchestrateur que

214 # vous étiquetez de la même manière et donnez un containerPort nommé 'health'.

215 - key: app.kubernetes.io/part-of

216 operator: In

217 values: [claude-code-self-hosted-runner]

218 podMetricsEndpoints:

219 - port: health

220 path: /metrics

221 interval: 30s

222```

223 

224Ces exemples de règles d'alerte sont un point de départ ; affinez les seuils pour la taille de votre flotte :

225 

226```yaml theme={null}

227# Exemple de règles d'alerte Prometheus pour le runner + orchestrateur

228# Claude Code auto-hébergé. Affinez les seuils pour la taille de votre flotte et vos SLO.

229groups:

230 - name: claude-code-self-hosted-runner

231 rules:

232 - alert: ClaudeRunnerPollStale

233 expr: claude_code_self_hosted_runner_last_poll_age_seconds > 60

234 for: 2m

235 labels: {severity: warning}

236 annotations:

237 summary: "Runner {{ $labels.pod }} n'a pas interrogé depuis >60s"

238 - alert: ClaudeRunnerVersionDrift

239 expr: count(count by (version) (claude_code_self_hosted_runner_info)) > 1

240 for: 30m

241 labels: {severity: info}

242 annotations:

243 summary: "Les runners exécutent des versions mixtes"

244 - alert: ClaudeRunnerInitErrorsHigh

245 expr: increase(claude_code_self_hosted_runner_session_init_errors_total[10m]) > 3

246 for: 5m

247 labels: {severity: warning}

248 annotations:

249 summary: "Runner {{ $labels.pod }} : >3 défaillances d'init de session en 10m (hook checkout / git / token / crash pré-init)"

250 - alert: ClaudeRunnerPollErrors

251 expr: sum by (pod) (rate(claude_code_self_hosted_runner_poll_errors_total[5m])) > 0

252 for: 2m

253 labels: {severity: warning}

254 annotations:

255 summary: "Runner {{ $labels.pod }} : PollWork échouant ({{ $value | humanize }}/s sur 5m)"

256 - alert: ClaudeRunnerSessionStartHookErrors

257 expr: increase(claude_code_self_hosted_runner_session_start_hook_errors_total[10m]) > 3

258 for: 5m

259 labels: {severity: warning}

260 annotations:

261 summary: "Runner {{ $labels.pod }} : >3 défaillances du hook SessionStart en 10m"

262 

263 - name: claude-code-self-hosted-orchestrator

264 rules:

265 - alert: ClaudeOrchestratorDisconnected

266 expr: claude_code_self_hosted_orchestrator_connected == 0

267 for: 2m

268 labels: {severity: critical}

269 annotations:

270 summary: "L'orchestrateur {{ $labels.pod }} ne peut pas atteindre le plan de contrôle Anthropic"

271 - alert: ClaudeOrchestratorPollStale

272 expr: claude_code_self_hosted_orchestrator_last_poll_age_seconds > 90

273 for: 2m

274 labels: {severity: warning}

275 annotations:

276 summary: "L'orchestrateur {{ $labels.pod }} n'a pas interrogé depuis >90s (la boucle d'interrogation attend l'exécution du hook)"

277 - alert: ClaudeOrchestratorCircuitBroken

278 expr: claude_code_self_hosted_orchestrator_queue_circuit_broken_sessions > 0

279 for: 1m

280 labels: {severity: critical}

281 annotations:

282 summary: "{{ $value }} sessions circuit-broken — le hook spawn-runner est répétitivement non-réessayable ; corriger l'infra puis réessayer à partir de l'onglet Activity"

283 - alert: ClaudeOrchestratorPollErrors

284 expr: sum by (pod) (rate(claude_code_self_hosted_orchestrator_poll_errors_total[5m])) > 0

285 for: 2m

286 labels: {severity: warning}

287 annotations:

288 summary: "L'orchestrateur {{ $labels.pod }} : PollSpawnHints échouant ({{ $value | humanize }}/s sur 5m)"

289 - alert: ClaudeOrchestratorSpawnHookFailing

290 expr: sum by (pod) (increase(claude_code_self_hosted_orchestrator_spawn_hooks_total{result!="ok"}[5m])) > 3

291 for: 5m

292 labels: {severity: warning}

293 annotations:

294 summary: "L'orchestrateur {{ $labels.pod }} : >3 défaillances du hook spawn-runner en 5m"

295```

296 

297<h3 id="pass-through-session-child-metrics">

298 Transmettre les métriques de l'enfant de session

299</h3>

300 

301Chaque session s'exécute dans son propre processus enfant avec ses propres métriques OpenTelemetry ; à `--capacity` au-dessus d'un, le runner réécrit comment ces métriques enfants sont exposées. Définir `OTEL_METRICS_EXPORTER=prometheus` sur l'hôte du runner et `CLAUDE_CODE_ENABLE_TELEMETRY=1` dans l'environnement de la session, par exemple à partir de votre [script wrapper](/docs/fr/self-hosted-environments-configuration#wrapper-scripts) ou de l'environnement propre du runner, que les sessions héritent, réexpose les instruments de compteur et de jauge de chaque enfant sur le point de terminaison `/metrics` propre du runner, aux côtés de la série du runner. Le runner réécrit l'exporteur de l'enfant pour pousser sur OTLP vers un récepteur loopback uniquement sur le port de santé, étiquette chaque série avec les étiquettes `session_id` et `client_platform`, et expulse la série d'une session quand cette session se termine. Les histogrammes ne passent pas, et une métrique enfant dont le nom entrerait en collision avec le préfixe propre du runner est supprimée.

302 

303À la `--capacity 1` par défaut, la réécriture ne s'applique pas : l'enfant de la session lie son propre point de terminaison Prometheus sur le port 9464 comme d'habitude.

304 

305<h3 id="session-lifecycle-counter-semantics">

306 Sémantique du compteur de cycle de vie de session

307</h3>

308 

309Les compteurs `sessions_started_total`, `sessions_completed_total`, `sessions_failed_total` et `sessions_interrupted_total` classent chaque session par la façon dont elle s'est terminée. Chaque enfant de session généré incrémente `sessions_started_total` au moment du lancement, et exactement l'un des trois autres incrémente à la sortie, donc `sessions_started_total` moins la somme des trois autres égale le nombre d'enfants de session actuellement en cours d'exécution.

310 

311* `completed` : la session s'est terminée proprement. Cela couvre l'enfant se terminant de lui-même avec le code `0`, la session étant archivée ou supprimée tandis que l'enfant était toujours connecté, et le runner libérant le créneau comme une remise propre : une libération inactive, un délai d'attente de démarrage ou une désassignation côté serveur que la boucle d'interrogation a remarquée avant la sortie de l'enfant. Incrémente `sessions_completed_total`.

312* `failed` : l'enfant s'est terminé de lui-même avec un code non-zéro, soit un crash soit une défaillance de configuration après le lancement. Incrémente `sessions_failed_total`.

313* `interrupted` : le runner a terminé l'enfant pour une raison opérationnelle qui n'est ni un succès de session ni une faute du runner, comme un drainage ou le watchdog de durée de vie maximale `--kill-session-after-min`. Un redémarrage roulant Kubernetes envoyant `SIGTERM` est un exemple de drainage. Incrémente `sessions_interrupted_total`.

314 

315Le `CLAUDE_RUNNER_EXIT_REASON` du hook [`post-session`](/docs/fr/self-hosted-environments-configuration#post-session) n'utilise pas cette classification pour les remises propres. Le hook signale une libération inactive, un délai d'attente de démarrage et une désassignation serveur comme `interrupted`, puisque du point de vue du hook le runner a tué l'enfant, tandis que les compteurs ci-dessus enregistrent ces mêmes événements comme `completed`, puisque rien n'a mal tourné et le créneau a été remis proprement. Si vous réconciliez les reçus du hook directement contre `sessions_completed_total`, vous sous-comptez les complétions. Utilisez le hook pour les garanties par session et les compteurs pour les taux agrégés.

316 

317Sur un environnement unique, `--capacity 1` avec le `--drain-grace-sec 0` par défaut, chaque processus runner se termine peu de temps après la fin de sa session unique. `sessions_completed_total`, `sessions_failed_total` et `sessions_interrupted_total` n'incrémentent qu'à la fin de la session, juste avant cette sortie, donc une récupération Prometheus toutes les 15 à 60 secondes attrape rarement l'incrément avant que la série du runner ne disparaisse ; ces trois compteurs de fin de session sont les compteurs terminaux auxquels le reste de cette section se réfère. `sessions_started_total` incrémente au lancement et reste visible pendant la durée de vie de la session, donc il s'affiche de manière fiable, mais sur un environnement unique il se lit plus proche de « sessions actuellement en cours d'exécution » qu'un compte cumulatif.

318 

319Utilisez la série dans ce tableau pour l'objectif correspondant au lieu des compteurs terminaux :

320 

321| Objectif | Utiliser |

322| :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

323| Débit | `claude_code_self_hosted_orchestrator_spawn_hooks_total{result="ok"}`, un compteur sur l'orchestrateur de longue durée qui incrémente une fois par hook `spawn-runner` réussi et reste significatif sous `rate()`. Il compte les invocations de hook plutôt que les sessions, donc le préchauffage et les générations répétées pour la même session divergent de la session compte. |

324| Utilisation | `sum(claude_code_self_hosted_runner_active_sessions)` contre `sum(claude_code_self_hosted_runner_capacity)`, les deux jauges valides à chaque récupération indépendamment de la durée de vie du runner |

325| Arriéré | `claude_code_self_hosted_orchestrator_pool_pending_sessions` pour la profondeur de file d'attente, et `claude_code_self_hosted_orchestrator_queue_circuit_broken_sessions`, alerter si au-dessus de zéro |

326| Défaillances | `claude_code_self_hosted_runner_sessions_failed_total`, meilleur effort : les vrais crashes après le lancement l'incrémentent, et `rate()` est significatif sur les runners qui survivent à leurs sessions avec `--drain-grace-sec` au-dessus de `0`. Un environnement unique a le même problème de fenêtre de récupération que les autres compteurs terminaux, donc traitez toute valeur non-zéro que vous voyez comme valant la peine d'être enquêtée. Les défaillances avant le lancement, comme une défaillance du hook checkout, la préparation git ou un problème de token, n'apparaissent que dans `session_init_errors_total`. |

327 

328Les lignes `orchestrator_*` n'existent que sur les environnements exécutant l'[orchestrateur à la demande](/docs/fr/self-hosted-environments-configuration#on-demand-runners). Sur une flotte fixe dont les runners survivent à leurs sessions, avec `--drain-grace-sec` au-dessus de `0`, utilisez `sum(rate(claude_code_self_hosted_runner_sessions_started_total[5m]))` pour le débit ; sur une flotte unique cette série a le même problème de fenêtre de récupération que les compteurs terminaux, donc fiez-vous au compte de sessions en file d'attente à la place. Vérifiez l'arriéré sur l'onglet **Activity** de l'environnement, sur la [page d'administration **Cloud environments**](https://claude.ai/admin-settings/cloud-environments) : les runners n'exportent pas une série de profondeur de file d'attente.

329 

330Pour le rapport de résultat par session, utilisez le hook [`post-session`](/docs/fr/self-hosted-environments-configuration#post-session) à la place : il se déclenche à chaque fin de session où un processus enfant a été généré, à part la terminaison abrupte du runner comme une préemption de VM, selon le [contrat propre du hook](/docs/fr/self-hosted-environments-configuration#post-session).

331 

332<h2 id="what’s-next">

333 Étapes suivantes

334</h2>

335 

336* [Environnements auto-hébergés](/docs/fr/self-hosted-environments) : le modèle d'environnement, de runner et de session ; le [guide de démarrage rapide](/docs/fr/self-hosted-environments-quickstart) et [Déployer en production](/docs/fr/self-hosted-environments-deploy) contiennent la configuration et les opérations

337* [Personnaliser les sessions](/docs/fr/self-hosted-environments-configuration) : scripts wrapper, hooks de cycle de vie et runners à la demande

338* [Vérifier l'identité de la session](/docs/fr/self-hosted-environments-identity) : le token de session, ses revendications et comment le vérifier

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# Tester les environnements auto-hébergés de bout en bout

6 

7> Vérifiez une image de runner auto-hébergée à partir de CI : envoyez une session avec la CLI, lisez les réponses de Claude via un hook Stop, et scriptez la boucle complète.

8 

9<Note>

10 Les environnements auto-hébergés sont en bêta publique sur les plans Team et Enterprise ; [Disponibilité et limitations](/docs/fr/self-hosted-environments#availability-and-limitations) couvre le chemin d'activation. Cette page est la recette de test CI ; consultez le [guide de démarrage rapide](/docs/fr/self-hosted-environments-quickstart) pour la configuration et [Déployer en production](/docs/fr/self-hosted-environments-deploy) pour les recettes de flotte.

11</Note>

12 

13Dans un [environnement auto-hébergé](/docs/fr/self-hosted-environments), les [sessions cloud](/docs/fr/claude-code-on-the-web) de Claude Code s'exécutent sur une image de runner que vous construisez et maintenez. Avant de déployer une nouvelle image dans votre environnement de production, exécutez une session complète contre un environnement de test à partir d'un script : créez une session, lisez la réponse de Claude, envoyez un suivi, et lisez cette réponse aussi. C'est la forme d'un test de fumée CI qui vérifie votre image de runner, l'accès git, et tous les outils personnalisés avant de promouvoir une modification.

14 

15Cette recette suppose que vous avez déjà [configuré un environnement et un runner](/docs/fr/self-hosted-environments-quickstart#set-up-an-environment-and-runner), et que votre travail CI démarre le processus du runner sur le même hôte que le script de test, la configuration naturelle pour tester une nouvelle image de runner. Un hook Stop que vous installez sur le runner écrit la réponse finale de chaque tour dans un fichier local, et le script la lit de là, donc les seuls appels à l'API Anthropic sont les deux envois eux-mêmes. Si vos runners de test sont sur une infrastructure séparée, consultez [Runners de test distants](#remote-test-runners).

16 

17<h2 id="install-the-capture-hook-on-your-test-runner">

18 Installer le hook de capture sur votre runner de test

19</h2>

20 

21La relecture fonctionne via un [hook Stop](/docs/fr/hooks#stop) de Claude Code : quand Claude termine un tour, le hook reçoit le message assistant final en tant que `last_assistant_message` dans son JSON stdin et l'ajoute à `$E2E_REPLY_DIR/<session_id>.txt`. Installez-le de la même manière que le [hook Stop commit-nudge](/docs/fr/self-hosted-environments-configuration#prompt-sessions-to-push-their-work), sur le `~/.claude/` de l'hôte du runner, que le runner amorce dans chaque session.

22 

23<h3 id="save-the-hook-files">

24 Enregistrer les fichiers du hook

25</h3>

26 

27Enregistrez les deux fichiers ci-dessous sur l'hôte du runner :

28 

29* Le bloc de paramètres : fusionnez dans `~/.claude/settings.json` sur l'hôte du runner

30* Le script : enregistrez comme `~/.claude/hooks/e2e-stop-hook-capture.sh` sur l'hôte du runner et rendez-le exécutable

31 

32```json theme={null}

33{

34 "hooks": {

35 "Stop": [

36 {

37 "hooks": [

38 {

39 "type": "command",

40 "timeout": 10,

41 "command": "\"$CLAUDE_CONFIG_DIR/hooks/e2e-stop-hook-capture.sh\""

42 }

43 ]

44 }

45 ]

46 }

47}

48```

49 

50```sh theme={null}

51#!/bin/sh

52# Stop hook for testing a self-hosted environment end to end: writes each

53# turn's final assistant reply to $E2E_REPLY_DIR/<session_id>.txt so a

54# co-located test driver can read it without calling the Anthropic API.

55# Install on the TEST runner only. Requires jq.

56 

57# No-op unless the driver is listening. Never fail the turn.

58[ -n "${E2E_REPLY_DIR:-}" ] && [ -d "$E2E_REPLY_DIR" ] || exit 0

59 

60# CLAUDE_CODE_REMOTE_SESSION_ID is exported in cse_... form; the session

61# id the dispatch CLI prints is in session_... form. Same id, different

62# prefix.

63sid=$(printf '%s' "${CLAUDE_CODE_REMOTE_SESSION_ID:-}" | sed 's/^cse_/session_/')

64[ -n "$sid" ] || exit 0

65 

66# last_assistant_message is absent when the final assistant turn had no

67# text, such as a tool-use-only turn. The `// empty` filter makes that a

68# zero-byte write rather than the literal string "null".

69jq -r '.last_assistant_message // empty' >> "$E2E_REPLY_DIR/$sid.txt" 2>/dev/null

70exit 0

71```

72 

73<h3 id="before-you-start-the-runner">

74 Avant de démarrer le runner

75</h3>

76 

77Deux choses sur lesquelles le hook dépend :

78 

79* Installez-le avant de démarrer le runner. Le runner prend un instantané de `~/.claude/` une fois au démarrage, donc un hook ajouté à un runner en cours d'exécution ne prend effet qu'après un redémarrage.

80* Exportez `E2E_REPLY_DIR` au processus du runner. Le hook est un no-op quand la variable n'est pas définie ou que le répertoire n'existe pas, donc définissez-la partout où vous démarrez le runner, comme l'unité systemd, la spécification du pod, ou l'étape CI. Le script de test ci-dessous le nécessite aussi.

81 

82Installez ce hook uniquement sur les runners servant votre environnement de test. Il écrit la réponse finale de chaque session sur le disque chaque fois que `E2E_REPLY_DIR` existe, ce qui est inoffensif sur un runner CI jetable mais pas quelque chose à porter dans une image de runner d'environnement de production où la variable pourrait être définie accidentellement.

83 

84<h2 id="run-the-test-loop">

85 Exécuter la boucle de test

86</h2>

87 

88Les drapeaux de dispatch `--environment` et `--ref` nécessitent Claude Code v2.1.224 ou ultérieur sur la machine qui exécute le script, le même plancher que le runner lui-même. Avec le hook en place et un runner démarré sur cet hôte, le script de test :

89 

901. Crée une session sur l'environnement de test avec `claude -p "<prompt>" --environment <environment-id> --output-format json`, exécuté à partir d'une extraction git pour que la CLI puisse détecter automatiquement le référentiel à partir de la télécommande `origin`. Le `--ref <branch>` optionnel base l'extraction de la session sur une ref nommée au lieu du HEAD local. La commande crée la session, imprime une ligne de JSON contenant `session_id`, et se termine sans attendre la réponse de Claude.

912. Attend que la réponse apparaisse dans `$E2E_REPLY_DIR/<session_id>.txt`, écrite par le hook Stop sur le runner une fois le tour terminé.

923. Envoie un suivi avec `claude -p "<message>" --cloud <session_id> --output-format json` (voir [Envoyer un message de suivi à une session en cours d'exécution](/docs/fr/claude-code-on-the-web#send-follow-ups-from-the-cli)), qui publie un événement utilisateur à la session existante et se termine.

934. Attend la réponse du suivi de la même manière qu'à l'étape 2.

94 

95<h3 id="environment-dispatch-behavior">

96 Comportement du dispatch `--environment`

97</h3>

98 

99Claude Code crée la session, imprime l'ID de session et un lien vers celle-ci, et se termine.

100 

101Le drapeau prend la priorité sur le paramètre [`remote.defaultEnvironmentId`](/docs/fr/settings-reference#remote-defaultenvironmentid). Il ne supporte pas `--output-format stream-json`, et ne peut pas être combiné avec des drapeaux qui reprennent, s'attachent à, ou préconfigent une session, comme `--resume`, `--continue`, `--teleport`, `--session-id`, ou `--init-only`. `--cloud` est rejeté avec un ID de session ou une URL, et dans les exécutions non-interactives quand il porte une description. Un `--cloud` nu est traité comme absent. À partir d'un terminal, vous pouvez passer la tâche comme description `--cloud` au lieu d'une invite positionnelle.

102 

103<h2 id="example-script">

104 Exemple de script

105</h2>

106 

107Le script ci-dessous exécute la boucle complète contre `$CLAUDE_TEST_ENVIRONMENT_ID`, l'ID `ccpool_...` de votre environnement de test, affiché dans la boîte de dialogue de détail de l'environnement sur la page d'administration ou retourné par l'[appel create-environment](#create-a-dedicated-test-environment), et affirme sur une phrase sentinelle dans chaque réponse. Exécutez-le à partir d'une extraction git du référentiel dans lequel vous voulez que la session fonctionne, après avoir démarré un runner sur cet hôte avec le hook de capture installé et `E2E_REPLY_DIR` exporté.

108 

109```bash theme={null}

110#!/usr/bin/env bash

111# End-to-end test against a self-hosted environment, using Stop-hook read-back.

112# Prereqs: `claude auth login` has been run on this machine (see "Authenticate

113# from CI" below); jq is installed; CLAUDE_TEST_ENVIRONMENT_ID names an

114# environment whose runner is the one on this host, with the capture hook

115# installed and E2E_REPLY_DIR in its environment.

116 

117set -euo pipefail

118 

119: "${CLAUDE_TEST_ENVIRONMENT_ID:=${CLAUDE_TEST_POOL_ID:-}}" # CLAUDE_TEST_POOL_ID is the legacy spelling

120: "${CLAUDE_TEST_ENVIRONMENT_ID:?set CLAUDE_TEST_ENVIRONMENT_ID to a ccpool_... id served by a runner on this host}"

121: "${E2E_REPLY_DIR:?set E2E_REPLY_DIR to the directory the Stop hook on your test runner writes to, and export it to the runner process}"

122: "${TEST_REPO_REF:=main}"

123 

124[ -d "$E2E_REPLY_DIR" ] || {

125 echo "FAIL: E2E_REPLY_DIR ($E2E_REPLY_DIR) does not exist. The Stop hook on the runner needs it." >&2

126 exit 1

127}

128 

129# Waits until $E2E_REPLY_DIR/<session_id>.txt contains $2, or fails after

130# 90 seconds. Tune the timeout to your environment's cold-start time. The

131# file is written by the Stop hook on the runner.

132await_reply() {

133 local expect="$2" f="$E2E_REPLY_DIR/$1.txt"

134 local deadline=$(($(date +%s) + 90))

135 while :; do

136 if [ -f "$f" ] && grep -qF -- "$expect" "$f"; then

137 return

138 fi

139 [ "$(date +%s)" -lt "$deadline" ] || {

140 echo "FAIL: '$expect' not in $f within 90s. The Stop hook on the runner did not write it." >&2

141 echo "-- $E2E_REPLY_DIR contents --" >&2; ls -la "$E2E_REPLY_DIR" >&2

142 [ -f "$f" ] && { echo "-- $f --" >&2; cat "$f" >&2; }

143 exit 1

144 }

145 sleep 1

146 done

147}

148 

149# 1. Create the session on the test environment. Run from a git checkout

150# so the CLI can auto-detect the repo. --ref pins the checkout to a named

151# ref regardless of local HEAD.

152TURN1="e2e-probe-$(date +%s)-$$: say exactly 'ok: custom tools are reachable' and nothing else"

153EXPECT1="ok: custom tools are reachable"

154create_json=$(claude -p "$TURN1" --environment "$CLAUDE_TEST_ENVIRONMENT_ID" \

155 --ref "$TEST_REPO_REF" --output-format json)

156echo "create: $create_json"

157SESSION_ID=$(jq -er '.session_id' <<<"$create_json")

158 

159# 2. Wait for the turn-1 reply.

160await_reply "$SESSION_ID" "$EXPECT1"

161echo "turn-1 reply ok"

162 

163# 3. Post a follow-up via the CLI.

164TURN2="e2e-probe-followup-$(date +%s): say exactly 'ok: follow-up delivered' and nothing else"

165EXPECT2="ok: follow-up delivered"

166followup_json=$(claude -p "$TURN2" --cloud "$SESSION_ID" --output-format json)

167echo "followup: $followup_json"

168jq -e '.ok == true' <<<"$followup_json" >/dev/null

169 

170# 4. Wait for the turn-2 reply.

171await_reply "$SESSION_ID" "$EXPECT2"

172echo "turn-2 reply ok"

173 

174echo "PASS: test-environment round-trip (session $SESSION_ID)"

175```

176 

177Remplacez les invites `TURN1`/`TURN2` et les sentinelles `EXPECT1`/`EXPECT2` par tout ce qui exerce votre configuration, comme demander à Claude d'exécuter l'un de vos outils MCP personnalisés et affirmer sur sa sortie.

178 

179<h2 id="remote-test-runners">

180 Runners de test distants

181</h2>

182 

183Si vos runners de test sont sur une infrastructure séparée, comme une flotte Kubernetes persistante avec laquelle votre travail CI ne peut pas partager un système de fichiers, remplacez l'écriture de fichier dans le hook Stop par un POST à un point de terminaison que votre driver écoute :

184 

185```sh theme={null}

186#!/bin/sh

187# Variant of the capture hook for runners on separate infrastructure.

188# Set E2E_REPLY_URL on the runner to an endpoint the driver controls.

189[ -n "${E2E_REPLY_URL:-}" ] || exit 0

190sid=$(printf '%s' "${CLAUDE_CODE_REMOTE_SESSION_ID:-}" | sed 's/^cse_/session_/')

191[ -n "$sid" ] || exit 0

192jq -r '.last_assistant_message // empty' | \

193 curl -fsS -X POST --data-binary @- "$E2E_REPLY_URL/$sid" >/dev/null 2>&1

194exit 0

195```

196 

197Du côté du driver, exécutez n'importe quoi qui accepte le POST et maintient la réponse jusqu'à ce que le test la demande, comme un petit écouteur HTTP à l'intérieur du travail CI ou un récepteur webhook que vous exécutez déjà. Le hook s'exécute sur votre infrastructure, donc le point de terminaison n'a besoin d'être accessible que depuis vos runners.

198 

199<h2 id="authenticate-from-ci">

200 S'authentifier à partir de CI

201</h2>

202 

203À la fois `claude -p ... --environment` et `claude -p ... --cloud` s'authentifient avec un jeton OAuth claude.ai ; les clés API, comme `sk-ant-xxxxx`, ne sont pas acceptées pour l'un ou l'autre appel. Deux approches rendent un jeton disponible dans CI.

204 

205<h3 id="long-lived-ci-host">

206 Hôte CI de longue durée

207</h3>

208 

209Exécutez `claude auth login` une fois de manière interactive sur la machine qui exécute le script, en utilisant un compte utilisateur dédié pour l'automatisation. Claude Code stocke le jeton dans le trousseau du système d'exploitation sur macOS, ou dans `~/.claude/.credentials.json` sur Linux et Windows. Sur un hôte macOS dont le Keychain ne peut pas être écrit, comme c'est typique dans une session SSH où le Keychain de connexion reste verrouillé, Claude Code stocke le jeton dans `~/.claude/.credentials.json` là aussi. Voir [Gestion des identifiants](/docs/fr/authentication#credential-management).

210 

211La CLI actualise automatiquement le jeton d'accès de courte durée à chaque invocation, mais la subvention de jeton d'actualisation sous-jacente est plafonnée à 30 jours à partir de la connexion initiale, donc réexécutez `claude auth login` de manière interactive sur cet hôte tous les 30 jours.

212 

213<h3 id="ephemeral-ci-runners">

214 Runners CI éphémères

215</h3>

216 

217Il n'y a pas de jeton CI de longue durée pour cela aujourd'hui. La portée qui accorde le contrôle de session distante, `user:sessions:claude_code`, est plafonnée côté serveur à 30 jours, donc `claude setup-token`, qui frappe un jeton d'inférence uniquement d'un an, ne le couvre pas. Le [secret d'environnement](/docs/fr/self-hosted-environments-quickstart#set-up-an-environment-and-runner) n'est pas accepté non plus, car il n'autorise qu'un runner à s'enregistrer auprès de l'environnement, pas à créer des sessions.

218 

219Pour provisionner une connexion stockée sur un runner éphémère, définissez [`CLAUDE_CODE_OAUTH_REFRESH_TOKEN` et `CLAUDE_CODE_OAUTH_SCOPES`](/docs/fr/env-vars#variables) pour que `claude auth login` échange le jeton sans navigateur ; le même plafond de 30 jours s'applique à la subvention d'actualisation. Contactez votre équipe de compte Anthropic si vous avez besoin d'un chemin d'identité machine qui n'est pas lié à un compte humain.

220 

221<h2 id="create-a-dedicated-test-environment">

222 Créer un environnement de test dédié

223</h2>

224 

225Créez et supprimez les environnements par programmation pour que chaque exécution CI en obtienne un propre ; le runner que votre travail CI démarre s'enregistre dans l'environnement frais. Les appels de création et de suppression ci-dessous sont les mêmes points de terminaison que la page d'administration **Cloud environments** sur claude.ai utilise, et ils nécessitent l'en-tête `anthropic-beta: ccr-byoc-2025-07-29`.

226 

227<h3 id="mint-the-admin-token">

228 Frapper le jeton d'administrateur

229</h3>

230 

231`$ADMIN_TOKEN` est un jeton d'accès OAuth claude.ai pour un compte qui détient un rôle Propriétaire, frappé de la même manière que [S'authentifier à partir de CI](#authenticate-from-ci) :

232 

233* **Le frapper** : exécutez `claude auth login` avec un compte qui détient un rôle Propriétaire, puis lisez le jeton d'accès actuel à partir de partout où [Hôte CI de longue durée](#long-lived-ci-host) dit que Claude Code l'a stocké.

234* **Le lire frais à chaque exécution** : la CLI fait tourner le jeton d'accès, et le même plafond de subvention d'actualisation de 30 jours s'applique, donc ne stockez pas une copie.

235* **Le passer via stdin** : comme l'exemple le fait, pour que le jeton ne se retrouve jamais dans la liste d'arguments de curl ou votre journal de construction.

236 

237<h3 id="create-the-environment">

238 Créer l'environnement

239</h3>

240 

241Capturez la réponse sans l'afficher : `pool_secret` est une identifiante de longue durée qui peut enregistrer des runners dans l'environnement, donc stockez-la comme un secret CI masqué et imprimez uniquement l'ID d'environnement. La forme `-H @-` qui garde le jeton hors de la liste de processus nécessite curl 7.55 ou ultérieur ; les anciennes versions de curl traitent `@-` comme un en-tête littéral et envoient la demande sans autorisation.

242 

243```bash theme={null}

244create=$(curl -fsS -X POST -H @- \

245 -H "anthropic-beta: ccr-byoc-2025-07-29" -H "anthropic-version: 2023-06-01" \

246 -H "content-type: application/json" \

247 -d '{"name":"ci-test-environment"}' \

248 https://api.anthropic.com/v1/code/runners/self-hosted/pools \

249 <<<"Authorization: Bearer $ADMIN_TOKEN")

250ENVIRONMENT_ID=$(jq -er .pool.pool_id <<<"$create")

251ENVIRONMENT_SECRET=$(jq -er .pool_secret <<<"$create")

252```

253 

254Jusqu'à ce qu'un [Propriétaire active **Allow self-hosted environments**](/docs/fr/self-hosted-environments#availability-and-limitations) pour l'organisation, l'appel échoue avec une `403` `permission_error` lisant `self-hosted runners are disabled by your organization's policy`.

255 

256Démarrez un runner sur cet hôte avec `SELF_HOSTED_RUNNER_ENVIRONMENT_SECRET=$ENVIRONMENT_SECRET`, plus le hook de capture et `E2E_REPLY_DIR` par [Installer le hook de capture](#install-the-capture-hook-on-your-test-runner), puis exécutez le script de test.

257 

258<h3 id="delete-the-environment">

259 Supprimer l'environnement

260</h3>

261 

262Supprimez l'environnement quand l'exécution se termine, pour que chaque exécution CI commence propre :

263 

264```bash theme={null}

265curl -fsS -X DELETE -H @- \

266 -H "anthropic-beta: ccr-byoc-2025-07-29" -H "anthropic-version: 2023-06-01" \

267 "https://api.anthropic.com/v1/code/runners/self-hosted/pools/$ENVIRONMENT_ID" \

268 <<<"Authorization: Bearer $ADMIN_TOKEN"

269```

Details

203 203 

204Claude Code lit les variables de Workload Identity Federation et les sélecteurs `ANTHROPIC_PROFILE` et `ANTHROPIC_CONFIG_DIR` uniquement au démarrage, de sorte qu'une valeur livrée par le serveur pour eux ne bascule pas la source d'identifiant de la session même après la réussite de la récupération. Pour livrer ces sélecteurs sur Claude Code v2.1.223 ou version ultérieure, utilisez les [paramètres gérés par le point de terminaison](/docs/fr/managed-settings#delivery-mechanisms) tels que MDM ou `managed-settings.json`. Pour `CLAUDE_CONFIG_DIR` et les variables de répertoire du système d'exploitation, la rétention elle-même est la protection : la valeur en cache reste hors de l'environnement jusqu'à ce que le serveur confirme la charge utile.204Claude Code lit les variables de Workload Identity Federation et les sélecteurs `ANTHROPIC_PROFILE` et `ANTHROPIC_CONFIG_DIR` uniquement au démarrage, de sorte qu'une valeur livrée par le serveur pour eux ne bascule pas la source d'identifiant de la session même après la réussite de la récupération. Pour livrer ces sélecteurs sur Claude Code v2.1.223 ou version ultérieure, utilisez les [paramètres gérés par le point de terminaison](/docs/fr/managed-settings#delivery-mechanisms) tels que MDM ou `managed-settings.json`. Pour `CLAUDE_CONFIG_DIR` et les variables de répertoire du système d'exploitation, la rétention elle-même est la protection : la valeur en cache reste hors de l'environnement jusqu'à ce que le serveur confirme la charge utile.

205 205 

206Toute autre clé du bloc `env` en cache s'applique au démarrage. Une fois que le serveur confirme la charge utile, et que vous l'approuvez si elle nécessite une [approbation de sécurité](#security-approval-dialogs), les variables retenues s'appliquent pour le reste de la session ; les sélecteurs de démarrage uniquement couverts ci-dessus atteignent l'environnement mais ne basculent pas la source d'identifiant de la session en cours d'exécution.206Toute autre clé du bloc `env` en cache s'applique au démarrage. Une fois que le serveur confirme la charge utile, et que vous l'approuvez si elle nécessite une [approbation de sécurité](#security-approval-dialogs), les variables retenues s'appliquent pour le reste de la session.

207 207 

208Si votre organisation a besoin d'un proxy pour atteindre `api.anthropic.com`, la rétention affecte uniquement le bloc `env` livré par le serveur lui-même : un proxy défini dans un bloc `env` [géré par le point de terminaison](/docs/fr/managed-settings#delivery-mechanisms) via MDM ou `managed-settings.json`, dans l'environnement shell, ou dans les [paramètres utilisateur](/docs/fr/settings#where-settings-live) atteint la récupération des paramètres. La source gérée par le point de terminaison nécessite Claude Code v2.1.223 ou version ultérieure : la valeur de proxy gérée par le serveur en cache est retenue jusqu'à ce que la récupération la confirme, de sorte que la valeur gérée par le point de terminaison remplit par clé et atteint la récupération elle-même. Avant v2.1.223, utilisez l'environnement shell ou les paramètres utilisateur afin que le proxy s'applique aux côtés d'une charge utile de serveur en cache. Le premier lancement n'a pas de cache, donc une source gérée par le point de terminaison, l'environnement shell, ou les paramètres utilisateur est toujours requis pour la récupération initiale.208Si votre organisation a besoin d'un proxy pour atteindre `api.anthropic.com`, la rétention affecte uniquement le bloc `env` livré par le serveur lui-même : un proxy défini dans un bloc `env` [géré par le point de terminaison](/docs/fr/managed-settings#delivery-mechanisms) via MDM ou `managed-settings.json`, dans l'environnement shell, ou dans les [paramètres utilisateur](/docs/fr/settings#where-settings-live) atteint la récupération des paramètres. La source gérée par le point de terminaison nécessite Claude Code v2.1.223 ou version ultérieure : la valeur de proxy gérée par le serveur en cache est retenue jusqu'à ce que la récupération la confirme, de sorte que la valeur gérée par le point de terminaison remplit par clé et atteint la récupération elle-même. Avant v2.1.223, utilisez l'environnement shell ou les paramètres utilisateur afin que le proxy s'applique aux côtés d'une charge utile de serveur en cache. Le premier lancement n'a pas de cache, donc une source gérée par le point de terminaison, l'environnement shell, ou les paramètres utilisateur est toujours requis pour la récupération initiale.

209 209 


231 231 

232Pour empêcher les clients de démarrer sur des paramètres gérés par le serveur en cache ou absents, définissez `forceRemoteSettingsRefresh: true` dans vos paramètres gérés.232Pour empêcher les clients de démarrer sur des paramètres gérés par le serveur en cache ou absents, définissez `forceRemoteSettingsRefresh: true` dans vos paramètres gérés.

233 233 

234Les clients connectés via une [passerelle d'applications Claude](#platform-availability) attendent la récupération au démarrage que vous définissiez ce paramètre ou non. Si la passerelle répond à un lancement interactif assisté avec un `401` et que ce paramètre est désactivé, la passerelle a terminé cette connexion, de sorte que Claude Code imprime [`Cloud gateway session expired — run /login to reconnect.`](/docs/fr/errors#cloud-gateway-session-expired) et ouvre la session déconnectée de la passerelle jusqu'à ce que l'utilisateur exécute `/login`. Lorsque la récupération échoue de toute autre manière, ou dans tout autre type de lancement sauf une sous-commande `claude auth`, le client se ferme avec une erreur.234Les clients connectés via une [passerelle d'applications Claude](#platform-availability) attendent la récupération au démarrage que vous définissiez ce paramètre ou non, et gèrent un échec de récupération comme suit :

235 

236* Si la passerelle répond à un lancement interactif assisté avec un `401` et que ce paramètre est désactivé, la passerelle a terminé cette connexion. Claude Code imprime [`Cloud gateway session expired — run /login to reconnect.`](/docs/fr/errors#cloud-gateway-session-expired) et ouvre la session déconnectée de la passerelle jusqu'à ce que l'utilisateur exécute `/login`.

237* Lorsque la récupération échoue de toute autre manière, ou dans tout autre type de lancement sauf une sous-commande `claude auth`, le client se ferme avec une erreur.

235 238 

236Lorsque ce paramètre est actif dans une session qui récupère les paramètres gérés par le serveur, 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. Une session qui [ne récupère pas les paramètres gérés par le serveur](#platform-availability) démarre sans attendre.239Lorsque ce paramètre est actif dans une session qui récupère les paramètres gérés par le serveur, 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. Une session qui [ne récupère pas les paramètres gérés par le serveur](#platform-availability) démarre sans attendre.

237 240 


283 Claude Code n'enregistre aucune approbation pour une passerelle de développement de boucle locale atteinte via HTTP simple, de sorte que la boîte de dialogue apparaît à nouveau après chaque connexion.286 Claude Code n'enregistre aucune approbation pour une passerelle de développement de boucle locale atteinte via HTTP simple, de sorte que la boîte de dialogue apparaît à nouveau après chaque connexion.

284* **Tout autre identifiant**, tel qu'une clé API ou `CLAUDE_CODE_OAUTH_TOKEN` : une approbation pour les paramètres livrés, conservée avec la copie en cache des paramètres dans ce répertoire de configuration. Claude Code affiche la boîte de dialogue à nouveau lorsque les paramètres qui nécessitent une approbation changent, et après avoir exécuté `/logout` ou `claude auth logout`, l'un ou l'autre supprimant la copie en cache.287* **Tout autre identifiant**, tel qu'une clé API ou `CLAUDE_CODE_OAUTH_TOKEN` : une approbation pour les paramètres livrés, conservée avec la copie en cache des paramètres dans ce répertoire de configuration. Claude Code affiche la boîte de dialogue à nouveau lorsque les paramètres qui nécessitent une approbation changent, et après avoir exécuté `/logout` ou `claude auth logout`, l'un ou l'autre supprimant la copie en cache.

285 288 

289Une approbation pour `sandbox.credentials` ou `sandbox.network.tlsTerminate` couvre également les entrées [`sandbox.network.allowedDomains`](/docs/fr/settings-reference#sandbox-network-alloweddomains) dans ces mêmes paramètres livrés, car les deux paramètres agissent sur cette liste d'autorisation. La boîte de dialogue apparaît à nouveau lorsque votre administrateur ajoute ou supprime l'une de ces entrées, même si `sandbox.network.allowedDomains` ne nécessite pas d'approbation en soi.

290 

286Avec une connexion claude.ai enregistrée :291Avec une connexion claude.ai enregistrée :

287 292 

288* Si vous vous déconnectez et vous reconnectez, ou basculez vers une autre organisation et y revenez plus tard, Claude Code n'affiche pas la boîte de dialogue à nouveau tandis que ces paramètres sont inchangés, sauf si un autre compte les a approuvés pour cette organisation dans le même répertoire de configuration entre-temps.293* Si vous vous déconnectez et vous reconnectez, ou basculez vers une autre organisation et y revenez plus tard, Claude Code n'affiche pas la boîte de dialogue à nouveau tandis que ces paramètres sont inchangés, sauf si un autre compte les a approuvés pour cette organisation dans le même répertoire de configuration entre-temps.


326* Une connexion OAuth d'équipe ou d'entreprise331* Une connexion OAuth d'équipe ou d'entreprise

327* Un jeton OAuth fourni via `CLAUDE_CODE_OAUTH_TOKEN`332* Un jeton OAuth fourni via `CLAUDE_CODE_OAUTH_TOKEN`

328* Une clé API directement configurée333* Une clé API directement configurée

329* Un profil `user_oauth` [Anthropic](/docs/fr/authentication#anthropic-profiles-and-federation-credentials), que la [connexion à la Console sans clé](/docs/fr/authentication#sign-in-without-an-api-key) ou la commande `ant auth login` de l'interface de ligne de commande Claude Platform écrit, sauf si le profil définit une `base_url` autre que l'API Anthropic. Nécessite Claude Code v2.1.257 ou version ultérieure.334* Un profil `user_oauth` [Anthropic](/docs/fr/authentication#anthropic-profiles-and-federation-credentials), sauf si le profil définit une `base_url` autre que l'API Anthropic. Nécessite Claude Code v2.1.257 ou version ultérieure.

330 335 

331Ni les clés renvoyées par un script [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper) ni les informations d'identification de [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation) ne déclenchent la récupération des paramètres.336Ni les clés renvoyées par un script [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper) ni les informations d'identification de [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation) ne déclenchent la récupération des paramètres.

332 337 

sessions.md +9 −6

Details

17Les sessions sont enregistrées en continu dans les [fichiers de transcription locaux](#export-and-locate-session-data) au fur et à mesure que vous travaillez, ce qui vous permet de revenir à l'une d'elles après avoir quitté ou exécuté `/clear`. Utilisez ces points d'entrée :17Les sessions sont enregistrées en continu dans les [fichiers de transcription locaux](#export-and-locate-session-data) au fur et à mesure que vous travaillez, ce qui vous permet de revenir à l'une d'elles après avoir quitté ou exécuté `/clear`. Utilisez ces points d'entrée :

18 18 

19| Commande | Ce qu'elle fait |19| Commande | Ce qu'elle fait |

20| :-------------------------- | :--------------------------------------------------------------------------------- |20| :---------------------------------- | :---------------------------------------------------------------------------------------------------------------------------- |

21| `claude --continue` | Reprend la session interactive la plus récente dans le répertoire courant |21| `claude --continue` | Reprend la conversation la plus récente dans le répertoire courant |

22| `claude --resume` | Ouvre le [sélecteur de sessions](#use-the-session-picker) |22| `claude --resume` | Ouvre le [sélecteur de sessions](#use-the-session-picker) |

23| `claude --resume <name>` | Reprend directement la session nommée |23| `claude --resume <name>` | Reprend directement la session nommée |

24| `claude --resume <transcript-path>` | Reprend la conversation stockée dans le fichier de [transcription](#where-transcripts-are-stored) `.jsonl` à ce chemin absolu |

24| `claude --from-pr <number>` | Ouvre le sélecteur de sessions filtré aux sessions liées à cette demande de tirage |25| `claude --from-pr <number>` | Ouvre le sélecteur de sessions filtré aux sessions liées à cette demande de tirage |

25| `/resume` | Bascule vers une conversation différente depuis une session active |26| `/resume` | Bascule vers une conversation différente depuis une session active |

26 27 

27Claude Code laisse les sessions créées avec [`claude -p`](/docs/fr/headless) ou le [SDK Agent](/docs/fr/agent-sdk/overview) en dehors du sélecteur de sessions et en dehors de `claude --continue`. Vous pouvez toujours en reprendre une en passant son ID de session à `claude --resume <session-id>`. Avec `claude --continue`, Claude Code ignore également les [sessions en arrière-plan](/docs/fr/agent-view) et les [sessions dont la première invite était `/loop`](#where-the-session-picker-looks). Lorsque vous exécutez [`claude -p --continue`](/docs/fr/headless#continue-conversations), Claude Code inclut les sessions `-p`, SDK et `/loop` et ignore toujours les sessions en arrière-plan.28Claude Code laisse les sessions créées avec [`claude -p`](/docs/fr/headless) ou le [SDK Agent](/docs/fr/agent-sdk/overview) en dehors du sélecteur de sessions et en dehors de `claude --continue`. Vous pouvez toujours en reprendre une en passant son ID de session à `claude --resume <session-id>`. Avec `claude --continue`, Claude Code ignore également les [sessions dont la première invite était `/loop`](#where-the-session-picker-looks). Lorsque vous exécutez [`claude -p --continue`](/docs/fr/headless#continue-conversations), Claude Code inclut les sessions `-p`, SDK et `/loop`.

29 

30`claude --continue` ouvre une [session en arrière-plan](/docs/fr/agent-view) qui s'est terminée, mais pas une qui est toujours en cours d'exécution ; l'ouverture de sessions en arrière-plan terminées nécessite Claude Code v2.1.257 ou ultérieur. Si votre conversation la plus récente est une que vous [avez envoyée en arrière-plan](/docs/fr/agent-view#send-the-session-to-the-background) et qu'elle s'exécute toujours là-bas, Claude Code se termine avec `Your most recent conversation is running in the background` et l'ID de cette session. Attachez-vous à la session depuis [`claude agents`](/docs/fr/agent-view#attach-to-a-session), ou exécutez `claude --resume` pour en choisir une autre.

28 31 

29Vous pouvez exécuter `claude --resume <session-id>` depuis n'importe quel répertoire : Claude Code cherche l'ID dans le répertoire de projet courant et ses git worktrees d'abord, puis dans tous les autres projets sur cette machine, ce qui lui permet de trouver une session qui a démarré ailleurs ou qui s'est déplacée avec [`/cd`](/docs/fr/commands). La recherche inter-projets résout l'ID uniquement lorsqu'exactement un autre projet contient une transcription avec des messages pour celui-ci, donc un doublon copié à la main fait que Claude Code signale non-trouvé plutôt que de reprendre une copie arbitraire. Si aucune session stockée ne correspond à l'ID, Claude Code signale `No conversation found with session ID: <session-id>`. Avant la v2.1.223, la recherche s'arrêtait au répertoire de projet courant et à ses git worktrees, donc vous deviez reprendre depuis le répertoire dans lequel la session avait travaillé en dernier.32Vous pouvez exécuter `claude --resume <session-id>` depuis n'importe quel répertoire : Claude Code cherche l'ID dans le répertoire de projet courant et ses git worktrees d'abord, puis dans tous les autres projets sur cette machine, ce qui lui permet de trouver une session qui a démarré ailleurs ou qui s'est déplacée avec [`/cd`](/docs/fr/commands). La recherche inter-projets résout l'ID uniquement lorsqu'exactement un autre projet contient une transcription avec des messages pour celui-ci, donc un doublon copié à la main fait que Claude Code signale non-trouvé plutôt que de reprendre une copie arbitraire. Si aucune session stockée ne correspond à l'ID, Claude Code signale `No conversation found with session ID: <session-id>`. Avant la v2.1.223, la recherche s'arrêtait au répertoire de projet courant et à ses git worktrees, donc vous deviez reprendre depuis le répertoire dans lequel la session avait travaillé en dernier.

30 33 


34 37 

35Une session reprise restaure la conversation ainsi que l'état enregistré en elle :38Une session reprise restaure la conversation ainsi que l'état enregistré en elle :

36 39 

37* Historique de conversation : l'historique complet, y compris les appels d'outils et les résultats.40* Historique de conversation : l'historique complet, y compris les appels d'outils et les résultats. Un outil qui était toujours en cours d'exécution lorsque le processus précédent s'est terminé, par exemple lors d'un plantage, ne se termine pas ou ne s'exécute pas à nouveau lorsque vous reprenez ; Claude continue sans sa sortie.

38* Modèle : la session continue sur le modèle qu'elle utilisait. Le modèle n'est pas restauré lorsqu'il a été retiré ou n'est pas autorisé par `availableModels`, lorsqu'un drapeau `--model` ou une variable d'environnement de la famille `ANTHROPIC_MODEL` en choisit un au lancement, ou sur les fournisseurs qui utilisent des ID de déploiement spécifiques au fournisseur, tels que [Amazon Bedrock, Google Cloud's Agent Platform et Microsoft Foundry](/docs/fr/third-party-integrations) ; voir [configuration du modèle](/docs/fr/model-config#setting-your-model) pour l'ordre de résolution.41* Modèle : la session continue sur le modèle qu'elle utilisait. Le modèle n'est pas restauré lorsqu'il a été retiré ou n'est pas autorisé par `availableModels`, lorsqu'un drapeau `--model` ou une variable d'environnement de la famille `ANTHROPIC_MODEL` en choisit un au lancement, ou sur les fournisseurs qui utilisent des ID de déploiement spécifiques au fournisseur, tels que [Amazon Bedrock, Google Cloud's Agent Platform et Microsoft Foundry](/docs/fr/third-party-integrations) ; voir [configuration du modèle](/docs/fr/model-config#setting-your-model) pour l'ordre de résolution.

39* Agent : une session démarrée avec [`--agent`](/docs/fr/sub-agents#invoke-subagents-explicitly) ou le paramètre `agent` continue en tant que cet agent, en conservant son invite système, ses restrictions d'outils et son modèle. Passez `--agent` lors de la reprise pour en choisir un différent. Claude Code cherche l'agent dans deux endroits : le répertoire d'origine de la session, à condition que vous ayez [approuvé cet espace de travail](/docs/fr/permissions#project-allow-rules-and-workspace-trust), puis le répertoire depuis lequel vous reprenez, donc un agent limité au projet se charge toujours lorsque vous reprenez depuis un autre répertoire. Si Claude Code ne trouve pas l'agent dans l'un ou l'autre endroit, la session reprend avec les outils par défaut et l'invite système et affiche un [avertissement nommant l'agent](/docs/fr/errors#session-agent-no-longer-available).42* Agent : une session démarrée avec [`--agent`](/docs/fr/sub-agents#invoke-subagents-explicitly) ou le paramètre `agent` continue en tant que cet agent, en conservant ses restrictions d'outils et son modèle. Passez `--agent` lors de la reprise pour en choisir un différent ; pour l'invite système dans l'un ou l'autre cas, voir [Drapeaux d'invite système dans les conversations reprises](/docs/fr/cli-reference#system-prompt-flags-in-resumed-conversations). Claude Code cherche l'agent dans deux endroits : le répertoire d'origine de la session, à condition que vous ayez [approuvé cet espace de travail](/docs/fr/permissions#project-allow-rules-and-workspace-trust), puis le répertoire depuis lequel vous reprenez, donc un agent limité au projet se charge toujours lorsque vous reprenez depuis un autre répertoire. Si Claude Code ne trouve pas l'agent dans l'un ou l'autre endroit, la session reprend avec les outils par défaut et affiche un [avertissement nommant l'agent](/docs/fr/errors#session-agent-no-longer-available).

40* Mode de permission : si vous reprenez depuis un terminal avec `claude --continue`, `claude --resume <session-id>` ou `claude --resume <name>` lorsque le nom correspond à une session, sans `-p`, Claude Code restaure le mode de permission dans lequel se trouvait la session, sauf dans les cas de [mode de permission à la reprise](#permission-mode-on-resume), qui couvre également le sélecteur de sessions, `/resume` et la reprise avec `claude -p`. Passez `--permission-mode` ou `--dangerously-skip-permissions` pour remplacer le mode restauré.43* Mode de permission : si vous reprenez depuis un terminal avec `claude --continue`, `claude --resume <session-id>` ou `claude --resume <name>` lorsque le nom correspond à une session, sans `-p`, Claude Code restaure le mode de permission dans lequel se trouvait la session, sauf dans les cas de [mode de permission à la reprise](#permission-mode-on-resume), qui couvre également le sélecteur de sessions, `/resume` et la reprise avec `claude -p`. Passez `--permission-mode` ou `--dangerously-skip-permissions` pour remplacer le mode restauré.

41* Objectif actif : un [objectif](/docs/fr/goal#resume-with-an-active-goal) qui était toujours actif lorsque la session s'est terminée se poursuit ; son nombre de tours, son minuteur et sa ligne de base de dépense de jetons se réinitialisent.44* Objectif actif : un [objectif](/docs/fr/goal#resume-with-an-active-goal) qui était toujours actif lorsque la session s'est terminée se poursuit ; son nombre de tours, son minuteur et sa ligne de base de dépense de jetons se réinitialisent.

42* Tâches planifiées : les [tâches qui n'ont pas expiré](/docs/fr/scheduled-tasks#limitations) sont restaurées. Les tâches Bash en arrière-plan et les tâches de surveillance ne le sont pas.45* Tâches planifiées : les [tâches qui n'ont pas expiré](/docs/fr/scheduled-tasks#limitations) sont restaurées. Les tâches Bash en arrière-plan et les tâches de surveillance ne le sont pas.

43 46 

44Tous les drapeaux de configuration du lancement d'origine ne sont pas restaurés. Si la session dépendait de `--mcp-config`, `--settings`, `--plugin-dir`, `--fallback-model` ou de répertoires ajoutés avec `--add-dir`, passez-les à nouveau lorsque vous reprenez ; les répertoires ajoutés en milieu de session avec `/add-dir` ne sont pas restaurés non plus, bien que le sélecteur de sessions les utilise toujours pour localiser la session. Les fichiers de paramètres standard, tels que `settings.json` et `settings.local.json`, sont relus au lancement, donc la configuration qui s'y trouve n'a pas besoin d'être passée à nouveau.47Tous les drapeaux de configuration du lancement d'origine ne sont pas restaurés. Si la session dépendait de `--mcp-config`, `--settings`, `--plugin-dir`, `--fallback-model` ou de répertoires ajoutés avec `--add-dir`, passez-les à nouveau lorsque vous reprenez ; les répertoires ajoutés en milieu de session avec `/add-dir` ne sont pas restaurés non plus, bien que le sélecteur de sessions les utilise toujours pour localiser la session. Les fichiers de paramètres standard, tels que `settings.json` et `settings.local.json`, sont relus au lancement, donc la configuration qui s'y trouve n'a pas besoin d'être passée à nouveau. Pour `--system-prompt` et `--append-system-prompt`, voir [Drapeaux d'invite système dans les conversations reprises](/docs/fr/cli-reference#system-prompt-flags-in-resumed-conversations).

45 48 

46<h4 id="permission-mode-on-resume">49<h4 id="permission-mode-on-resume">

47 Mode de permission à la reprise50 Mode de permission à la reprise

settings.md +1 −1

Details

794| [`syncClaudeAiSkills`](/docs/fr/settings-reference#syncclaudeaiskills) | `false` à partir de n'importe quelle source gérée, `--settings`, `~/.claude/settings.json`, ou `.claude/settings.local.json` | Honorée même quand la source gérée gagnante définit `true` ; un `false` dans `.claude/settings.json` est ignoré |794| [`syncClaudeAiSkills`](/docs/fr/settings-reference#syncclaudeaiskills) | `false` à partir de n'importe quelle source gérée, `--settings`, `~/.claude/settings.json`, ou `.claude/settings.local.json` | Honorée même quand la source gérée gagnante définit `true` ; un `false` dans `.claude/settings.json` est ignoré |

795| [`maxEffortLevel`](/docs/fr/settings-reference#maxeffortlevel) | Un plafond inférieur à partir de n'importe quelle portée, y compris `--settings` | Honorée même quand les paramètres gérés que Claude Code applique définissent un plafond plus élevé ; le plafond le plus bas s'applique. Nécessite Claude Code v2.1.267 ou ultérieur |795| [`maxEffortLevel`](/docs/fr/settings-reference#maxeffortlevel) | Un plafond inférieur à partir de n'importe quelle portée, y compris `--settings` | Honorée même quand les paramètres gérés que Claude Code applique définissent un plafond plus élevé ; le plafond le plus bas s'applique. Nécessite Claude Code v2.1.267 ou ultérieur |

796 796 

797Une application qui exécute Claude Code à l'intérieur d'elle-même et définit [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/fr/env-vars) est aussi une exception. Claude Code prend la configuration de modèle de cette application sur les clés `model`, `fallbackModel`, et `modelOverrides` à partir de chaque source gérée, et sur les variables de sélection de modèle dans un bloc `env` géré, comme `ANTHROPIC_MODEL` et la famille `ANTHROPIC_DEFAULT_*_MODEL`. Claude Code garde une liste blanche [`availableModels`](/docs/fr/settings-reference#availablemodels) gérée en vigueur sauf si l'application fournit la sienne.797Une application qui exécute Claude Code à l'intérieur d'elle-même et définit [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/fr/env-vars) est aussi une exception. Claude Code prend la configuration de modèle de cette application sur les clés `model`, `fallbackModel`, `modelPicker`, et `modelOverrides` à partir de chaque source gérée, et sur les variables de sélection de modèle dans un bloc `env` géré, comme `ANTHROPIC_MODEL` et la famille `ANTHROPIC_DEFAULT_*_MODEL`. Claude Code garde une liste blanche [`availableModels`](/docs/fr/settings-reference#availablemodels) gérée en vigueur sauf si l'application fournit la sienne.

798 798 

799<h2 id="settings-in-cloud-sessions">799<h2 id="settings-in-cloud-sessions">

800 Paramètres dans les sessions cloud800 Paramètres dans les sessions cloud

settings-example.md +396 −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# Fichiers de paramètres d'exemple

6 

7> Fichiers settings.json réalistes pour un développeur, une équipe et une organisation : copiez-en un, conservez les clés que vous voulez et modifiez les valeurs.

8 

9Cette page contient trois fichiers `settings.json` d'exemple, un pour chaque endroit où vous enregistrez un paramètre :

10 

11* Un `~/.claude/settings.json` de développeur

12* Un `.claude/settings.json` d'équipe, validé dans le référentiel

13* Un `managed-settings.json` d'organisation

14 

15Chacun est un fichier plausible pour ce lecteur, vous pouvez donc voir la forme et copier les parties que vous voulez. Aucun d'eux n'est une ligne de base recommandée. Chaque valeur provient de l'entrée de la clé sur la [référence des paramètres](/docs/fr/settings-reference), qui contient son type, sa valeur par défaut et l'endroit où elle peut être définie.

16 

17Chaque exemple a deux onglets. **Fichier de paramètres copiable** est le fichier tel que vous l'enregistreriez. **Ce que chaque clé fait** est le même fichier avec un commentaire au-dessus de chaque clé ; Claude Code n'accepte pas les commentaires dans un fichier de paramètres, donc copiez à partir du premier onglet.

18 

19<h2 id="your-own-settings">

20 Vos propres paramètres

21</h2>

22 

23Les paramètres personnels d'un développeur. Il choisit un modèle et un effort, ajuste le terminal et pré-approuve une commande en lecture seule et une lecture de fichier. Tout ce qui n'est pas listé conserve sa valeur par défaut. Un fichier comme celui-ci va dans `~/.claude/settings.json`, où il s'applique à chaque projet que vous ouvrez.

24 

25<Tabs>

26 <Tab title="Fichier de paramètres copiable">

27 Enregistrez ceci sous `~/.claude/settings.json`. C'est du JSON valide sans commentaires, vous pouvez donc le coller tel quel et supprimer les clés que vous ne voulez pas.

28 

29 ```json ~/.claude/settings.json theme={null}

30 {

31 "model": "claude-sonnet-5",

32 "effortLevel": "xhigh",

33 "editorMode": "vim",

34 "theme": "light-daltonized",

35 "statusLine": {

36 "type": "command",

37 "command": "jq -r '\"[\\(.model.display_name)] \\(.context_window.used_percentage // 0)% context\"'",

38 "padding": 2

39 },

40 "spinnerTipsEnabled": false,

41 "preferredNotifChannel": "terminal_bell",

42 "permissions": {

43 "allow": [

44 "Bash(git diff *)",

45 "Read(~/.zshrc)"

46 ]

47 },

48 "autoUpdatesChannel": "stable",

49 "cleanupPeriodDays": 20

50 }

51 ```

52 </Tab>

53 

54 <Tab title="Ce que chaque clé fait">

55 Le même fichier avec un commentaire au-dessus de chaque clé. Lisez-le ici ; copiez à partir de l'autre onglet, car Claude Code n'accepte pas les commentaires dans un fichier de paramètres.

56 

57 ```jsonc ~/.claude/settings.json theme={null}

58 {

59 // Commencez chaque session sur Sonnet 5

60 "model": "claude-sonnet-5",

61 // Raisonnez plus profondément que le niveau élevé par défaut sur les modèles sans niveau enregistré ; /effort enregistre un niveau par modèle, et --effort en définit un pour une seule session

62 "effortLevel": "xhigh",

63 // Liaisons de touches Vim dans l'invite

64 "editorMode": "vim",

65 // Le thème clair adapté aux daltoniens

66 "theme": "light-daltonized",

67 // Une ligne d'état sous l'invite : nom du modèle et contexte utilisé

68 "statusLine": {

69 "type": "command",

70 "command": "jq -r '\"[\\(.model.display_name)] \\(.context_window.used_percentage // 0)% context\"'",

71 "padding": 2

72 },

73 // Masquez les conseils qui tournent sous le spinner

74 "spinnerTipsEnabled": false,

75 // Sonnez la cloche du terminal pour les notifications, comme une tâche terminée ou une invite de permission en attente

76 "preferredNotifChannel": "terminal_bell",

77 // Laissez Claude Code exécuter git diff et lire votre .zshrc sans demander

78 "permissions": {

79 "allow": [

80 "Bash(git diff *)",

81 "Read(~/.zshrc)"

82 ]

83 },

84 // Prenez les mises à jour du canal stable

85 "autoUpdatesChannel": "stable",

86 // Supprimez les transcriptions de session et autres données de session locale plus anciennes que 20 jours

87 "cleanupPeriodDays": 20

88 }

89 ```

90 </Tab>

91</Tabs>

92 

93<h2 id="a-teams-shared-settings">

94 Paramètres partagés d'une équipe

95</h2>

96 

97Les paramètres partagés d'une équipe, validés dans le référentiel afin que tous ceux qui le clonent obtiennent les mêmes permissions, hooks, télémétrie et marketplace de plugins. Enregistrez un fichier comme celui-ci à `.claude/settings.json` en haut du référentiel. Ce qu'il faut savoir avant de valider un :

98 

99* **Les sessions cloud le lisent aussi.** Une [session cloud](/docs/fr/settings#settings-in-cloud-sessions) sur Claude Code sur le web démarre à partir d'un clone du référentiel, donc le fichier validé s'applique également là.

100* **Les règles d'autorisation attendent la confiance.** Les règles d'autorisation et les entrées `extraKnownMarketplaces` prennent effet après que chaque personne [fasse confiance à ce dossier lui-même](/docs/fr/permissions#project-allow-rules-and-workspace-trust), pas seulement à un dossier parent ; les règles de refus et de demande s'appliquent dans chaque session, de confiance ou non.

101* **Le hook est un script dans le référentiel.** Le hook de ce fichier exécute `.claude/hooks/block-rm.sh` ; [Comment un hook se résout](/docs/fr/hooks#how-a-hook-resolves) explique comment l'écrire.

102* **Les règles correspondent à la commande et au chemin tels qu'écrits.** `Bash(git push *)` ne correspond pas à [`git -C . push`](/docs/fr/permissions#bash-rule-limits). `Read(./.env)` seul arrête les outils de fichier et les commandes qui nomment le fichier, comme `cat .env`, mais pas [`grep -r` exécuté sur le répertoire](/docs/fr/permissions#read-and-edit) ; le bloc `sandbox` dans ce fichier comble cette lacune, car le sandbox [ajoute vos chemins de refus `Read`](/docs/fr/settings-reference#sandbox-filesystem-denyread) à ce que chaque commande en sandbox ne peut pas lire.

103 

104<Tabs>

105 <Tab title="Fichier de paramètres copiable">

106 Enregistrez ceci sous `.claude/settings.json` en haut du référentiel et validez-le. C'est du JSON valide sans commentaires, vous pouvez donc le coller tel quel et supprimer les clés que vous ne voulez pas.

107 

108 ```json .claude/settings.json theme={null}

109 {

110 "permissions": {

111 "allow": [

112 "Bash(npm run *)"

113 ],

114 "ask": [

115 "Bash(git push *)"

116 ],

117 "deny": [

118 "Read(./.env)",

119 "Read(./.env.*)",

120 "Read(./secrets/**)"

121 ]

122 },

123 "env": {

124 "CLAUDE_CODE_ENABLE_TELEMETRY": "1",

125 "OTEL_METRICS_EXPORTER": "otlp",

126 "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",

127 "OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317"

128 },

129 "hooks": {

130 "PreToolUse": [

131 {

132 "matcher": "Bash",

133 "hooks": [

134 {

135 "type": "command",

136 "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/block-rm.sh"

137 }

138 ]

139 }

140 ]

141 },

142 "extraKnownMarketplaces": {

143 "acme-tools": {

144 "source": {

145 "source": "github",

146 "repo": "acme-corp/claude-plugins"

147 }

148 }

149 },

150 "enabledPlugins": {

151 "code-formatter@acme-tools": true

152 },

153 "sandbox": {

154 "enabled": true,

155 "filesystem": {

156 "allowWrite": [

157 "/tmp/build"

158 ]

159 },

160 "network": {

161 "allowedDomains": [

162 "registry.npmjs.org",

163 "*.example.com"

164 ]

165 }

166 },

167 "plansDirectory": "./plans"

168 }

169 ```

170 </Tab>

171 

172 <Tab title="Ce que chaque clé fait">

173 Le même fichier avec un commentaire au-dessus de chaque clé. Lisez-le ici ; copiez à partir de l'autre onglet, car Claude Code n'accepte pas les commentaires dans un fichier de paramètres.

174 

175 ```jsonc .claude/settings.json theme={null}

176 {

177 "permissions": {

178 // Exécutez les scripts npm sans demander

179 "allow": [

180 "Bash(npm run *)"

181 ],

182 // Confirmez avant les commandes git push

183 "ask": [

184 "Bash(git push *)"

185 ],

186 // Refusez les lectures des fichiers env et du dossier secrets par les outils de fichier et les commandes de lecture de fichier

187 "deny": [

188 "Read(./.env)",

189 "Read(./.env.*)",

190 "Read(./secrets/**)"

191 ]

192 },

193 // Envoyez les métriques OpenTelemetry au collecteur de l'équipe via gRPC ; remplacez le point de terminaison par l'URL de votre collecteur

194 "env": {

195 "CLAUDE_CODE_ENABLE_TELEMETRY": "1",

196 "OTEL_METRICS_EXPORTER": "otlp",

197 "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",

198 "OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317"

199 },

200 // Avant chaque commande Bash, exécutez un script dans le référentiel qui peut la bloquer

201 "hooks": {

202 "PreToolUse": [

203 {

204 "matcher": "Bash",

205 "hooks": [

206 {

207 "type": "command",

208 "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/block-rm.sh"

209 }

210 ]

211 }

212 ]

213 },

214 // Enregistrez le marketplace de plugins de l'équipe à chaque clone

215 "extraKnownMarketplaces": {

216 "acme-tools": {

217 "source": {

218 "source": "github",

219 "repo": "acme-corp/claude-plugins"

220 }

221 }

222 },

223 // Activez un plugin de ce marketplace ; un plugin d'une source externe comme un référentiel GitHub doit toujours être installé une fois par chaque personne

224 "enabledPlugins": {

225 "code-formatter@acme-tools": true

226 },

227 // Commandes sandbox : répertoire de construction inscriptible ; npm et example.com pré-autorisés, les autres hôtes demandent toujours

228 "sandbox": {

229 "enabled": true,

230 "filesystem": {

231 "allowWrite": [

232 "/tmp/build"

233 ]

234 },

235 "network": {

236 "allowedDomains": [

237 "registry.npmjs.org",

238 "*.example.com"

239 ]

240 }

241 },

242 // Gardez les fichiers de plan à l'intérieur du référentiel

243 "plansDirectory": "./plans"

244 }

245 ```

246 </Tab>

247</Tabs>

248 

249<h2 id="an-organizations-managed-settings">

250 Paramètres gérés d'une organisation

251</h2>

252 

253Un fichier `managed-settings.json` qui montre la forme des clés gérées, avec une valeur plausible pour chacune. Ce n'est pas une politique recommandée : choisissez les clés qui correspondent à vos propres exigences et définissez vos propres valeurs. L'exemple définit ces clés :

254 

255* `forceLoginMethod` et `forceLoginOrgUUID` épinglent la méthode de connexion et l'organisation

256* `availableModels` et `enforceAvailableModels` limitent les modèles que les sessions peuvent utiliser

257* `permissions.deny` refuse deux lectures de fichiers et les commandes `curl` [comme Claude les écrit](/docs/fr/permissions#bash-rule-limits), et `disableBypassPermissionsMode` supprime le mode de permission de contournement

258* [`allowManagedPermissionRulesOnly`](/docs/fr/settings-reference#allowmanagedpermissionrulesonly) et [`allowManagedMcpServersOnly`](/docs/fr/settings-reference#allowmanagedmcpserversonly) font des listes blanches de permission et MCP gérées les seules qui s'appliquent

259* `allowedMcpServers` épingle le serveur MCP par URL

260* `strictKnownMarketplaces` autorise un marketplace de plugins

261* `sandbox` bac à sable les commandes avec une liste d'autorisation réseau fixe et pas de nouvelle tentative non bac à sable

262* `requiredMinimumVersion` définit une version minimale de Claude Code

263* `cleanupPeriodDays` raccourcit la rétention des transcriptions de session et autres données locales à sept jours

264* `companyAnnouncements` affiche un message au démarrage

265 

266Les administrateurs déploient un fichier comme celui-ci en tant que `managed-settings.json`, ou le même JSON via MDM ou [paramètres gérés par serveur](/docs/fr/server-managed-settings). Un fichier déployé s'applique à chaque machine ou compte qu'il atteint. Pour donner à un groupe des valeurs différentes, déployez un fichier ou un profil différent à ce groupe, car [les paramètres gérés par serveur ne supportent pas encore la politique par groupe](/docs/fr/server-managed-settings#current-limitations).

267 

268<Tabs>

269 <Tab title="Fichier de paramètres copiable">

270 Déployez ceci en tant que `managed-settings.json`, ou le même JSON via MDM ou la console claude.ai. C'est du JSON valide sans commentaires ; remplacez l'UUID d'organisation d'exemple, l'URL du serveur et le marketplace par les vôtres et supprimez les clés que vous ne voulez pas.

271 

272 ```json managed-settings.json theme={null}

273 {

274 "forceLoginMethod": "claudeai",

275 "forceLoginOrgUUID": [

276 "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

277 ],

278 "availableModels": [

279 "opus",

280 "sonnet"

281 ],

282 "enforceAvailableModels": true,

283 "permissions": {

284 "deny": [

285 "Bash(curl *)",

286 "Read(./.env)",

287 "Read(./secrets/**)"

288 ],

289 "disableBypassPermissionsMode": "disable"

290 },

291 "allowManagedPermissionRulesOnly": true,

292 "allowedMcpServers": [

293 {

294 "serverUrl": "https://api.githubcopilot.com/*"

295 }

296 ],

297 "allowManagedMcpServersOnly": true,

298 "strictKnownMarketplaces": [

299 {

300 "source": "github",

301 "repo": "acme-corp/approved-plugins"

302 }

303 ],

304 "sandbox": {

305 "enabled": true,

306 "failIfUnavailable": true,

307 "allowUnsandboxedCommands": false,

308 "network": {

309 "allowedDomains": [

310 "registry.npmjs.org",

311 "github.com"

312 ],

313 "allowManagedDomainsOnly": true

314 }

315 },

316 "requiredMinimumVersion": "2.1.150",

317 "cleanupPeriodDays": 7,

318 "companyAnnouncements": [

319 "Welcome to Acme Corp! Review our code guidelines at docs.example.com"

320 ]

321 }

322 ```

323 </Tab>

324 

325 <Tab title="Ce que chaque clé fait">

326 Le même fichier avec un commentaire au-dessus de chaque clé. Lisez-le ici ; copiez à partir de l'autre onglet, car Claude Code n'accepte pas les commentaires dans un fichier de paramètres.

327 

328 ```jsonc managed-settings.json theme={null}

329 {

330 // Uniquement les connexions claude.ai, et uniquement dans cette organisation

331 "forceLoginMethod": "claudeai",

332 "forceLoginOrgUUID": [

333 "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

334 ],

335 // Uniquement les modèles Opus et Sonnet ; avec enforceAvailableModels, l'option Par défaut obéit également à la liste

336 "availableModels": [

337 "opus",

338 "sonnet"

339 ],

340 "enforceAvailableModels": true,

341 "permissions": {

342 // Refusez les commandes curl et les lectures du fichier .env du projet et du dossier secrets sur chaque machine

343 "deny": [

344 "Bash(curl *)",

345 "Read(./.env)",

346 "Read(./secrets/**)"

347 ],

348 // Supprimez le mode de permission de contournement de chaque session

349 "disableBypassPermissionsMode": "disable"

350 },

351 // Ignorez les règles de permission des paramètres utilisateur, projet et locaux

352 "allowManagedPermissionRulesOnly": true,

353 // Uniquement le serveur MCP GitHub, mis en correspondance par URL plutôt que par nom, car un utilisateur peut

354 // nommer n'importe quel serveur « github ». Les serveurs ajoutés par l'utilisateur qui ne correspondent pas ne se chargent pas, y compris

355 // chaque serveur stdio quand la liste n'a que des entrées URL. La clé allowManagedMcpServersOnly

356 // ci-dessous rend cette liste gérée la seule liste blanche qui s'applique

357 "allowedMcpServers": [

358 {

359 "serverUrl": "https://api.githubcopilot.com/*"

360 }

361 ],

362 "allowManagedMcpServersOnly": true,

363 // Les plugins ne peuvent provenir que de ce marketplace

364 "strictKnownMarketplaces": [

365 {

366 "source": "github",

367 "repo": "acme-corp/approved-plugins"

368 }

369 ],

370 // Bac à sable chaque commande que Claude exécute, refusez de démarrer si le bac à sable ne peut pas être

371 // configuré, et ne laissez jamais une commande bloquée réessayer en dehors du bac à sable ; réseau

372 // limité à npm et GitHub, et les utilisateurs ne peuvent pas ajouter de domaines

373 "sandbox": {

374 "enabled": true,

375 "failIfUnavailable": true,

376 "allowUnsandboxedCommands": false,

377 "network": {

378 "allowedDomains": [

379 "registry.npmjs.org",

380 "github.com"

381 ],

382 "allowManagedDomainsOnly": true

383 }

384 },

385 // Refusez de démarrer sur les versions antérieures à 2.1.150

386 "requiredMinimumVersion": "2.1.150",

387 // Supprimez les transcriptions de session et autres données de session locale après 7 jours

388 "cleanupPeriodDays": 7,

389 // Un message que chaque utilisateur voit au démarrage

390 "companyAnnouncements": [

391 "Welcome to Acme Corp! Review our code guidelines at docs.example.com"

392 ]

393 }

394 ```

395 </Tab>

396</Tabs>

setup.md +15 −13

Details

41 Nouveau sur le terminal ? Consultez le [guide du terminal](/docs/fr/terminal-guide) pour des instructions étape par étape.41 Nouveau sur le terminal ? Consultez le [guide du terminal](/docs/fr/terminal-guide) pour des instructions étape par étape.

42</Tip>42</Tip>

43 43 

44To install Claude Code, use one of the following methods:44Pour installer Claude Code, utilisez l'une des méthodes suivantes :

45 45 

46<Tabs>46<Tabs>

47 <Tab title="Native Install (Recommended)">47 <Tab title="Installation native (recommandée)">

48 **macOS, Linux, WSL:**48 **macOS, Linux, WSL :**

49 49 

50 ```bash theme={null}50 ```bash theme={null}

51 curl -fsSL https://claude.ai/install.sh | bash51 curl -fsSL https://claude.ai/install.sh | bash

52 ```52 ```

53 53 

54 **Windows PowerShell:**54 **Windows PowerShell :**

55 55 

56 ```powershell theme={null}56 ```powershell theme={null}

57 irm https://claude.ai/install.ps1 | iex57 irm https://claude.ai/install.ps1 | iex

58 ```58 ```

59 59 

60 **Windows CMD:**60 **Windows CMD :**

61 61 

62 ```batch theme={null}62 ```batch theme={null}

63 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd63 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

64 ```64 ```

65 65 

66 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.66 Si vous voyez `The token '&&' is not a valid statement separator`, vous êtes dans PowerShell, pas dans CMD. Si vous voyez `'irm' is not recognized as an internal or external command`, vous êtes dans CMD, pas dans PowerShell. Votre invite affiche `PS C:\` quand vous êtes dans PowerShell et `C:\` sans le `PS` quand vous êtes dans CMD.

67 67 

68 If the install command fails with `syntax error near unexpected token '<'`, a `403`, or another curl error, see [Troubleshoot installation](/docs/en/troubleshoot-install#find-your-error) to match the error to a fix and for alternative install methods.68 Si la commande d'installation échoue avec `syntax error near unexpected token '<'`, un `403`, ou une autre erreur curl, consultez [Dépannage de l'installation](/docs/fr/troubleshoot-install#find-your-error) pour faire correspondre l'erreur à une solution et pour connaître les méthodes d'installation alternatives.

69 69 

70 [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.70 [Git for Windows](https://git-scm.com/downloads/win) est recommandé sur Windows natif afin que Claude Code puisse utiliser l'outil Bash. Si Git for Windows n'est pas installé, Claude Code utilise PowerShell comme outil shell à la place. Les configurations WSL n'ont pas besoin de Git for Windows.

71 71 

72 <Info>72 <Info>

73 Native installations automatically update in the background to keep you on the latest version.73 Les installations natives se mettent à jour automatiquement en arrière-plan pour vous maintenir à jour avec la dernière version.

74 </Info>74 </Info>

75 </Tab>75 </Tab>

76 76 


79 brew install --cask claude-code79 brew install --cask claude-code

80 ```80 ```

81 81 

82 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.82 Homebrew propose deux casks. `claude-code` suit le canal de version stable, qui est généralement environ une semaine en retard et ignore les versions avec des régressions majeures. `claude-code@latest` suit le canal le plus récent et reçoit les nouvelles versions dès qu'elles sont publiées.

83 83 

84 <Info>84 <Info>

85 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.85 Les installations Homebrew ne se mettent pas à jour automatiquement. Exécutez `brew upgrade claude-code` ou `brew upgrade claude-code@latest`, selon le cask que vous avez installé, pour obtenir les dernières fonctionnalités et correctifs de sécurité.

86 </Info>86 </Info>

87 </Tab>87 </Tab>

88 88 


92 ```92 ```

93 93 

94 <Info>94 <Info>

95 WinGet installations do not auto-update. Run `winget upgrade Anthropic.ClaudeCode` periodically to get the latest features and security fixes.95 Les installations WinGet ne se mettent pas à jour automatiquement. Exécutez `winget upgrade Anthropic.ClaudeCode` périodiquement pour obtenir les dernières fonctionnalités et correctifs de sécurité.

96 </Info>96 </Info>

97 </Tab>97 </Tab>

98</Tabs>98</Tabs>

99 99 

100You can also install with [apt, dnf, or apk](/docs/en/setup#install-with-linux-package-managers) on Debian, Fedora, RHEL, and Alpine.100Vous pouvez également installer avec [apt, dnf, ou apk](/docs/fr/setup#install-with-linux-package-managers) sur Debian, Fedora, RHEL et Alpine.

101 101 

102Une fois l'installation terminée, ouvrez un terminal dans le projet sur lequel vous souhaitez travailler et démarrez Claude Code :102Une fois l'installation terminée, ouvrez un terminal dans le projet sur lequel vous souhaitez travailler et démarrez Claude Code :

103 103 


296}296}

297```297```

298 298 

299Sur une installation native ou npm, confirmez que la modification a pris effet en exécutant `claude doctor` et en vérifiant que la ligne `Auto-updates` affiche `disabled (set by env: DISABLE_AUTOUPDATER)` au lieu de `enabled`.

300 

299`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`](/docs/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.301`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`](/docs/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.

300 302 

301<h3 id="update-manually">303<h3 id="update-manually">

skills.md +37 −20

Details

28 28 

29La plupart des compétences groupées sont disponibles dans chaque session. Quelques-unes dépendent d'une fonctionnalité spécifique : `/workflow-authoring`, par exemple, n'est disponible que lorsque les [flux de travail dynamiques](/docs/fr/workflows) sont activés.29La plupart des compétences groupées sont disponibles dans chaque session. Quelques-unes dépendent d'une fonctionnalité spécifique : `/workflow-authoring`, par exemple, n'est disponible que lorsque les [flux de travail dynamiques](/docs/fr/workflows) sont activés.

30 30 

31Pour désactiver les compétences groupées, utilisez le paramètre [`disableBundledSkills`](/docs/fr/settings-reference#disablebundledskills), qui désactive chaque compétence groupée sauf `/doctor`.31Pour désactiver les compétences groupées, utilisez le paramètre [`disableBundledSkills`](/docs/fr/settings-reference#disablebundledskills).

32 32 

33<Note>33<Note>

34 La vérification de configuration [`/doctor`](/docs/fr/commands#all-commands) reste saisissable lorsque `disableBundledSkills` est activé, dans Claude Code v2.1.205 et versions ultérieures. Pour la masquer, définissez la variable d'environnement `DISABLE_DOCTOR_COMMAND` ou une entrée [`skillOverrides`](#override-skill-visibility-from-settings) de `"doctor": "off"`. Avant v2.1.205, `/doctor` était une commande intégrée plutôt qu'une compétence groupée.34 La vérification de configuration [`/doctor`](/docs/fr/commands#all-commands) reste saisissable lorsque `disableBundledSkills` est activé, dans Claude Code v2.1.205 et versions ultérieures. Pour la masquer, définissez la variable d'environnement `DISABLE_DOCTOR_COMMAND` ou une entrée [`skillOverrides`](#override-skill-visibility-from-settings) de `"doctor": "off"`. Avant v2.1.205, `/doctor` était une commande intégrée plutôt qu'une compétence groupée.


136 136 

137* **Dossiers liés symboliquement** : une entrée `<skill-name>` dans l'emplacement entreprise, personnel ou projet peut être un lien symbolique vers un répertoire ailleurs sur le disque. Claude Code lit `SKILL.md` à partir de la cible et charge la skill une seule fois même si plusieurs emplacements pointent vers la même cible. Les skills de plugin [gèrent les liens symboliques différemment](/docs/fr/plugins-reference#share-files-within-a-marketplace-with-symlinks).137* **Dossiers liés symboliquement** : une entrée `<skill-name>` dans l'emplacement entreprise, personnel ou projet peut être un lien symbolique vers un répertoire ailleurs sur le disque. Claude Code lit `SKILL.md` à partir de la cible et charge la skill une seule fois même si plusieurs emplacements pointent vers la même cible. Les skills de plugin [gèrent les liens symboliques différemment](/docs/fr/plugins-reference#share-files-within-a-marketplace-with-symlinks).

138* **Nom réservé** : ne nommez pas un dossier de skill `synced`, dans n'importe quelle capitalisation. Claude Code utilise `~/.claude/skills/synced/` pour les [skills téléchargées depuis claude.ai](#where-synced-skills-load) et ignore une skill que vous créez à ce nom dans les emplacements entreprise, personnel et projet.138* **Nom réservé** : ne nommez pas un dossier de skill `synced`, dans n'importe quelle capitalisation. Claude Code utilise `~/.claude/skills/synced/` pour les [skills téléchargées depuis claude.ai](#where-synced-skills-load) et ignore une skill que vous créez à ce nom dans les emplacements entreprise, personnel et projet.

139* **Fichiers de commande** : un fichier Markdown dans `.claude/commands/` est le format plus ancien et fonctionne toujours. Il supporte le même [frontmatter](#frontmatter-reference) sauf `name` et `paths`, et vous l'invoquez par son nom de fichier. Préférez une skill pour les nouveaux travaux, car les skills supportent aussi les [fichiers de support](#add-supporting-files).139* **Fichiers de commande** : un fichier Markdown dans `.claude/commands/` est le format plus ancien et fonctionne toujours. Il supporte le même [frontmatter](#frontmatter-reference) sauf `name` et `paths`. Pour trouver le nom que vous tapez pour l'invoquer, voir [Comment une skill obtient son nom de commande](#how-a-skill-gets-its-command-name). Préférez une skill pour les nouveaux travaux, car les skills supportent aussi les [fichiers de support](#add-supporting-files).

140* **Dossier de skill en tant que plugin** : ajoutez un `.claude-plugin/plugin.json` à un dossier de skill et il se charge en tant que [plugin](/docs/fr/plugins-reference#skills-directory-plugins) nommé `<name>@skills-dir`, afin qu'il puisse regrouper des agents, des hooks et des serveurs MCP. Dans un `.claude/skills/` de projet, cela nécessite d'accepter d'abord la boîte de dialogue de confiance de l'espace de travail.140* **Dossier de skill en tant que plugin** : ajoutez un `.claude-plugin/plugin.json` à un dossier de skill et il se charge en tant que [plugin](/docs/fr/plugins-reference#skills-directory-plugins) nommé `<name>@skills-dir`, afin qu'il puisse regrouper des agents, des hooks et des serveurs MCP. Dans un `.claude/skills/` de projet, cela nécessite d'accepter d'abord la boîte de dialogue de confiance de l'espace de travail.

141 141 

142<h3 id="discovery-from-parent-and-nested-directories">142<h3 id="discovery-from-parent-and-nested-directories">


234 234 

235Claude Code étiquette les skills synchronisées pour que vous puissiez dire d'où elles proviennent. Le menu `/skills` et `/context` regroupent les skills synchronisées sous `claude.ai sync`, et le menu de commande `/` les marque comme provenant de claude.ai.235Claude Code étiquette les skills synchronisées pour que vous puissiez dire d'où elles proviennent. Le menu `/skills` et `/context` regroupent les skills synchronisées sous `claude.ai sync`, et le menu de commande `/` les marque comme provenant de claude.ai.

236 236 

237Quand il compare les noms, Claude Code ignore la casse, l'espacement et les caractères invisibles, et traite les formes de compatibilité telles que les lettres pleine largeur et les variantes de tiret comme leurs équivalents simples, donc une `Commit` synchronisée ne peut pas se charger à côté d'une `commit` locale. Un nom qui diffère uniquement par une lettre ressemblante d'un autre alphabet compte comme un nom différent, et l'étiquette `claude.ai sync` est comment vous distinguez les deux.237Quand il compare les noms, Claude Code ignore la casse, l'espacement et les caractères invisibles, et traite les formes de compatibilité telles que les lettres pleine largeur et les variantes de tiret comme leurs équivalents simples, donc une `Commit` synchronisée ne peut pas se charger à côté d'une `commit` locale. Un nom qui diffère uniquement par une lettre ressemblante d'un autre alphabet compte comme un nom différent, et l'étiquette `claude.ai sync` est comment vous distinguez les deux. Ces vérifications et étiquettes nécessitent Claude Code v2.1.228 ou ultérieur.

238 238 

239<h4 id="how-claude-code-handles-the-frontmatter-of-a-synced-skill">239<h4 id="how-claude-code-handles-the-frontmatter-of-a-synced-skill">

240 Comment Claude Code gère le frontmatter d'une skill synchronisée240 Comment Claude Code gère le frontmatter d'une skill synchronisée


243Claude Code applique deux règles au frontmatter d'une skill synchronisée :243Claude Code applique deux règles au frontmatter d'une skill synchronisée :

244 244 

245* Claude Code honore le frontmatter dans chaque type de session, donc une concession `allowed-tools` passe par le [flux de permission](/docs/fr/permissions) normal.245* Claude Code honore le frontmatter dans chaque type de session, donc une concession `allowed-tools` passe par le [flux de permission](/docs/fr/permissions) normal.

246* Claude Code assainit le texte d'affichage que la skill fournit, comme sa description. Il supprime les caractères de contrôle, et dans le texte qui atteint Claude, comme la description, il échappe aussi les crochets d'angle pour que le texte ne puisse pas imiter le formatage interne de Claude Code.246* Claude Code assainit le texte d'affichage que la skill fournit, comme sa description. Il supprime les caractères de contrôle, et dans le texte qui atteint Claude, comme la description, il échappe aussi les crochets d'angle pour que le texte ne puisse pas imiter le formatage interne de Claude Code. Cet assainissement nécessite Claude Code v2.1.228 ou ultérieur.

247 247 

248<h4 id="how-claude-code-handles-the-body-of-a-synced-skill">248<h4 id="how-claude-code-handles-the-body-of-a-synced-skill">

249 Comment Claude Code gère le corps d'une skill synchronisée249 Comment Claude Code gère le corps d'une skill synchronisée


253 253 

254* Dans une session cloud, le corps conserve le comportement qu'une skill locale a, car la session s'exécute dans un conteneur isolé.254* Dans une session cloud, le corps conserve le comportement qu'une skill locale a, car la session s'exécute dans un conteneur isolé.

255* Dans une session Cowork sur votre bureau, le corps conserve le comportement qu'une skill locale a, sauf que Claude Code remplace chaque ligne de commande `!` par l'espace réservé [`disableSkillShellExecution`](#inject-dynamic-context), comme il le fait pour chaque skill que vous fournissez là-bas.255* Dans une session Cowork sur votre bureau, le corps conserve le comportement qu'une skill locale a, sauf que Claude Code remplace chaque ligne de commande `!` par l'espace réservé [`disableSkillShellExecution`](#inject-dynamic-context), comme il le fait pour chaque skill que vous fournissez là-bas.

256* Dans n'importe quelle autre session sur votre machine, Claude Code n'exécute pas les [commandes `!`](#inject-dynamic-context), n'attache pas les fichiers que les références `@` nomment de la manière qu'il le fait pour une skill locale, et ne substitue pas les espaces réservés `${CLAUDE_PROJECT_DIR}` et `${CLAUDE_SESSION_ID}`, donc les références `@` et les deux espaces réservés atteignent Claude en tant que texte littéral. Une ligne de commande `!` atteint aussi Claude en tant que texte littéral, ou en tant que cet espace réservé quand `disableSkillShellExecution` est activé.256* Dans n'importe quelle autre session sur votre machine, Claude Code n'exécute pas les [commandes `!`](#inject-dynamic-context), n'attache pas les fichiers que les références `@` nomment de la manière qu'il le fait pour une skill locale, et ne substitue pas les espaces réservés `${CLAUDE_PROJECT_DIR}` et `${CLAUDE_SESSION_ID}`, donc les références `@` et les deux espaces réservés atteignent Claude en tant que texte littéral. Une ligne de commande `!` atteint aussi Claude en tant que texte littéral, ou en tant que cet espace réservé quand `disableSkillShellExecution` est activé. Cette gestion nécessite Claude Code v2.1.228 ou ultérieur.

257 257 

258<h3 id="live-change-detection">258<h3 id="live-change-detection">

259 Modifier une skill pendant une session259 Modifier une skill pendant une session


271 271 

272* **Skill personnelle ou de projet** : supprimez le répertoire de la skill, `~/.claude/skills/<skill-name>/` ou `.claude/skills/<skill-name>/`. Claude Code la [supprime de `/skills` dans la session actuelle](#live-change-detection) ; le contenu que Claude Code a déjà chargé depuis elle suit le [cycle de vie du contenu de skill](#skill-content-lifecycle).272* **Skill personnelle ou de projet** : supprimez le répertoire de la skill, `~/.claude/skills/<skill-name>/` ou `.claude/skills/<skill-name>/`. Claude Code la [supprime de `/skills` dans la session actuelle](#live-change-detection) ; le contenu que Claude Code a déjà chargé depuis elle suit le [cycle de vie du contenu de skill](#skill-content-lifecycle).

273* **Skill d'entreprise** : un administrateur supprime le répertoire de la skill depuis `.claude/skills/` à l'intérieur du [répertoire des paramètres gérés](/docs/fr/managed-settings#delivery-mechanisms), par exemple `/etc/claude-code/.claude/skills/<skill-name>/` sur Linux.273* **Skill d'entreprise** : un administrateur supprime le répertoire de la skill depuis `.claude/skills/` à l'intérieur du [répertoire des paramètres gérés](/docs/fr/managed-settings#delivery-mechanisms), par exemple `/etc/claude-code/.claude/skills/<skill-name>/` sur Linux.

274* **Skill de plugin** : désactivez ou désinstallez le plugin qui la fournit, depuis le menu `/plugin` ou avec `/plugin uninstall <plugin-name>@<marketplace-name>`. Claude Code décharge les skills du plugin après que vous exécutiez `/reload-plugins` ou redémarriez ; voir [Appliquer les changements de plugin sans redémarrer](/docs/fr/discover-plugins#apply-plugin-changes-without-restarting).274* **Skill de plugin** : désactivez ou désinstallez le plugin qui la fournit, depuis le menu `/plugin` ou avec `/plugin uninstall <plugin-name>@<marketplace-name>`. Claude Code décharge les skills du plugin quand [le changement s'applique](/docs/fr/discover-plugins#apply-plugin-changes-without-restarting) ou quand vous redémarrez.

275* **Skill synchronisée depuis claude.ai** : désactivez la skill pour votre compte claude.ai, au même endroit où vous l'[avez activée](#skills-in-cowork-and-cloud-sessions). Claude Code la supprime de `~/.claude/skills/synced/` la prochaine fois qu'elle [synchronise vos skills](#where-synced-skills-load). Si vous supprimez le répertoire à la main à la place, la prochaine synchronisation le télécharge à nouveau tandis que la skill reste activée sur claude.ai.275* **Skill synchronisée depuis claude.ai** : désactivez la skill pour votre compte claude.ai, au même endroit où vous l'[avez activée](#skills-in-cowork-and-cloud-sessions). Claude Code la supprime de `~/.claude/skills/synced/` la prochaine fois qu'elle [synchronise vos skills](#where-synced-skills-load). Si vous supprimez le répertoire à la main à la place, la prochaine synchronisation le télécharge à nouveau tandis que la skill reste activée sur claude.ai.

276* **Skill regroupée** : définissez [`disableBundledSkills`](#bundled-skills) à `true` pour désactiver chaque skill regroupée sauf `/doctor`, ou définissez une skill à `"off"` dans [`skillOverrides`](#override-skill-visibility-from-settings) pour la masquer.276* **Skill regroupée** : définissez [`disableBundledSkills`](#bundled-skills) à `true` pour désactiver les skills regroupées, ou définissez une skill à `"off"` dans [`skillOverrides`](#override-skill-visibility-from-settings) pour la masquer.

277 277 

278Pour garder une skill personnelle ou de projet mais empêcher Claude de l'invoquer de lui-même, définissez [`disable-model-invocation: true`](#control-who-invokes-a-skill) dans son frontmatter, ou `"user-invocable-only"` dans [`skillOverrides`](#override-skill-visibility-from-settings) quand vous ne voulez pas modifier le fichier.278Pour garder une skill personnelle ou de projet mais empêcher Claude de l'invoquer de lui-même, définissez [`disable-model-invocation: true`](#control-who-invokes-a-skill) dans son frontmatter, ou `"user-invocable-only"` dans [`skillOverrides`](#override-skill-visibility-from-settings) quand vous ne voulez pas modifier le fichier.

279 279 


345Les champs booléens acceptent `yes`, `no`, `on`, `off`, `1` et `0` dans n'importe quelle casse de lettre, en plus de `true` et `false`. Avant v2.1.218, Claude Code ne reconnaissait que `true` et `false`.345Les champs booléens acceptent `yes`, `no`, `on`, `off`, `1` et `0` dans n'importe quelle casse de lettre, en plus de `true` et `false`. Avant v2.1.218, Claude Code ne reconnaissait que `true` et `false`.

346 346 

347| Champ | Requis | Description |347| Champ | Requis | Description |

348| :------------------------- | :--------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |348| :------------------------- | :--------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

349| `name` | Non | Nom d'affichage montré dans les listes de compétences. Par défaut, le nom du répertoire. Voir [Comment une compétence obtient son nom de commande](#how-a-skill-gets-its-command-name) pour savoir comment le champ interagit avec le nom que vous tapez pour invoquer la compétence. |349| `name` | Non | Nom d'affichage montré dans les listes de compétences. Par défaut, le nom du répertoire. Voir [Comment une compétence obtient son nom de commande](#how-a-skill-gets-its-command-name) pour savoir comment le champ interagit avec le nom que vous tapez pour invoquer la compétence. |

350| `description` | Recommandé | Ce que fait la compétence et quand l'utiliser. Claude utilise ceci pour décider quand appliquer la compétence. S'il est omis, utilise le premier paragraphe du contenu markdown. Mettez le cas d'usage clé en premier : le texte combiné `description` et `when_to_use` est tronqué à 1 536 caractères dans la liste des compétences pour réduire l'utilisation du contexte. |350| `description` | Recommandé | Ce que fait la compétence et quand l'utiliser. Claude utilise ceci pour décider quand appliquer la compétence. S'il est omis, utilise la première ligne non vide du contenu markdown. Mettez le cas d'usage clé en premier : le texte combiné `description` et `when_to_use` est tronqué à 1 536 caractères dans la liste des compétences pour réduire l'utilisation du contexte. |

351| `when_to_use` | Non | Contexte supplémentaire pour savoir quand Claude devrait invoquer la compétence, comme les phrases déclencheurs ou les demandes d'exemple. Ajouté à `description` dans la liste des compétences et compte vers le plafond de 1 536 caractères. |351| `when_to_use` | Non | Contexte supplémentaire pour savoir quand Claude devrait invoquer la compétence, comme les phrases déclencheurs ou les demandes d'exemple. Ajouté à `description` dans la liste des compétences et compte vers le plafond de 1 536 caractères. |

352| `argument-hint` | Non | Indice affiché lors de l'autocomplétion pour indiquer les arguments attendus. Exemple : `[issue-number]` ou `[filename] [format]`. |352| `argument-hint` | Non | Indice affiché lors de l'autocomplétion pour indiquer les arguments attendus. Exemple : `[issue-number]` ou `[filename] [format]`. |

353| `arguments` | Non | Arguments positionnels nommés pour la [substitution `$name`](#available-string-substitutions) dans le contenu de la compétence. Accepte une chaîne séparée par des espaces ou une liste YAML. Les noms correspondent aux positions d'argument dans l'ordre. |353| `arguments` | Non | Arguments positionnels nommés pour la [substitution `$name`](#available-string-substitutions) dans le contenu de la compétence. Accepte une chaîne séparée par des espaces ou une liste YAML. Les noms correspondent aux positions d'argument dans l'ordre. |


355| `user-invocable` | Non | Définissez sur `false` lorsque seul Claude devrait invoquer la compétence : Claude Code la masque du menu `/` et ne l'exécute pas lorsque vous tapez `/name`. Utilisez pour les connaissances de base que les utilisateurs ne devraient pas invoquer directement. Par défaut : `true`. |355| `user-invocable` | Non | Définissez sur `false` lorsque seul Claude devrait invoquer la compétence : Claude Code la masque du menu `/` et ne l'exécute pas lorsque vous tapez `/name`. Utilisez pour les connaissances de base que les utilisateurs ne devraient pas invoquer directement. Par défaut : `true`. |

356| `allowed-tools` | Non | Outils que Claude peut utiliser sans demander la permission lors du tour qui invoque cette compétence. La subvention s'efface lorsque vous envoyez votre message suivant. Accepte une chaîne séparée par des espaces ou des virgules, ou une liste YAML. Voir [Pré-approuver les outils pour une compétence](#pre-approve-tools-for-a-skill). |356| `allowed-tools` | Non | Outils que Claude peut utiliser sans demander la permission lors du tour qui invoque cette compétence. La subvention s'efface lorsque vous envoyez votre message suivant. Accepte une chaîne séparée par des espaces ou des virgules, ou une liste YAML. Voir [Pré-approuver les outils pour une compétence](#pre-approve-tools-for-a-skill). |

357| `disallowed-tools` | Non | Outils supprimés du pool disponible de Claude tandis que cette compétence est active. Utilisez pour les compétences autonomes qui ne devraient jamais appeler certains outils, comme `AskUserQuestion` pour une boucle de fond. Accepte une chaîne séparée par des espaces ou des virgules, ou une liste YAML. La restriction s'efface lorsque vous envoyez votre message suivant. Comme les règles de refus, le champ ne peut pas supprimer [`EndConversation`](/docs/fr/tools-reference#endconversation-tool-behavior) tant que tout autre outil reste. |357| `disallowed-tools` | Non | Outils supprimés du pool disponible de Claude tandis que cette compétence est active. Utilisez pour les compétences autonomes qui ne devraient jamais appeler certains outils, comme `AskUserQuestion` pour une boucle de fond. Accepte une chaîne séparée par des espaces ou des virgules, ou une liste YAML. La restriction s'efface lorsque vous envoyez votre message suivant. Comme les règles de refus, le champ ne peut pas supprimer [`EndConversation`](/docs/fr/tools-reference#endconversation-tool-behavior) tant que tout autre outil reste. |

358| `model` | Non | Modèle à utiliser lorsque cette compétence est active. Le remplacement s'applique pour le reste du tour actuel et n'est pas enregistré dans les paramètres ; le modèle de session reprend à votre prochaine invite. Accepte les mêmes valeurs que [`/model`](/docs/fr/model-config), ou `inherit` pour conserver le modèle actif. Une valeur exclue par la liste d'autorisation [`availableModels`](/docs/fr/model-config#restrict-model-selection) de votre organisation n'est pas utilisée et la session conserve son modèle actuel. Avec `context: fork`, la valeur définit le [modèle du sous-agent forké](#run-skills-in-a-subagent) à la place, et une valeur exclue suit les [mêmes règles qu'un remplacement de modèle de sous-agent](/docs/fr/model-config#restrict-model-selection). |358| `model` | Non | Modèle à utiliser lorsque cette compétence est active. Le remplacement s'applique pour le reste du tour actuel et n'est pas enregistré dans les paramètres. Le modèle de session reprend à votre prochaine invite. Accepte les mêmes valeurs que [`/model`](/docs/fr/model-config), ou `inherit` pour conserver le modèle actif. Une valeur exclue par la liste d'autorisation [`availableModels`](/docs/fr/model-config#restrict-model-selection) de votre organisation n'est pas utilisée et la session conserve son modèle actuel. En [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) et en [mode plan tandis que le classificateur examine les commandes](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode), un modèle que le mode auto ne supporte pas n'est pas utilisé non plus, et la session conserve son modèle actuel. Avec `context: fork`, la valeur définit le [modèle du sous-agent forké](#run-skills-in-a-subagent) à la place, et une valeur exclue suit les [mêmes règles qu'un remplacement de modèle de sous-agent](/docs/fr/model-config#restrict-model-selection). |

359| `effort` | Non | [Niveau d'effort](/docs/fr/model-config#adjust-effort-level) lorsque cette compétence 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. |359| `effort` | Non | [Niveau d'effort](/docs/fr/model-config#adjust-effort-level) lorsque cette compétence 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. |

360| `context` | Non | Définissez sur `fork` pour exécuter dans un contexte de sous-agent forké. Voir [Exécuter les compétences dans un sous-agent](#run-skills-in-a-subagent). |360| `context` | Non | Définissez sur `fork` pour exécuter dans un contexte de sous-agent forké. Voir [Exécuter les compétences dans un sous-agent](#run-skills-in-a-subagent). |

361| `agent` | Non | Quel type de sous-agent utiliser lorsque `context: fork` est défini. |361| `agent` | Non | Quel type de sous-agent utiliser lorsque `context: fork` est défini. |


397Le tableau ci-dessous montre d'où provient le nom de la commande pour chaque disposition :397Le tableau ci-dessous montre d'où provient le nom de la commande pour chaque disposition :

398 398 

399| Emplacement de la compétence | Source du nom de la commande | Exemple |399| Emplacement de la compétence | Source du nom de la commande | Exemple |

400| :--------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------- |400| :--------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------- |

401| Répertoire de compétence sous `~/.claude/skills/` ou `.claude/skills/` | Nom du répertoire | `.claude/skills/deploy-staging/SKILL.md` → `/deploy-staging` |401| Répertoire de compétence sous `~/.claude/skills/` ou `.claude/skills/` | Nom du répertoire | `.claude/skills/deploy-staging/SKILL.md` → `/deploy-staging` |

402| Répertoire `.claude/skills/` [imbriqué](#where-skills-live), lorsque le nom entre en conflit avec une autre compétence | Chemin du sous-répertoire relatif au répertoire de travail, puis le nom du répertoire de compétence | `apps/web/.claude/skills/deploy/SKILL.md` → `/apps/web:deploy` |402| Répertoire `.claude/skills/` [imbriqué](#where-skills-live), lorsque le nom entre en conflit avec une autre compétence | Chemin du sous-répertoire relatif au répertoire de travail, puis le nom du répertoire de compétence | `apps/web/.claude/skills/deploy/SKILL.md` → `/apps/web:deploy` |

403| Fichier sous `.claude/commands/` | Nom du fichier sans extension | `.claude/commands/deploy.md` → `/deploy` |403| Fichier sous `.claude/commands/` | Nom du fichier sans extension | `.claude/commands/deploy.md` → `/deploy` |

404| Fichier dans un sous-répertoire de `.claude/commands/` | Chemin du sous-répertoire relatif à `commands/` avec chaque `/` remplacé par `:`, puis le nom du fichier sans extension | `.claude/commands/frontend/component.md` → `/frontend:component` |

404| Sous-répertoire `skills/` du plugin | Frontmatter `name` ou le nom du répertoire, préfixé par le plugin | `my-plugin/skills/review/SKILL.md` → `/my-plugin:review`, ou `/my-plugin:fancy` avec `name: fancy` |405| Sous-répertoire `skills/` du plugin | Frontmatter `name` ou le nom du répertoire, préfixé par le plugin | `my-plugin/skills/review/SKILL.md` → `/my-plugin:review`, ou `/my-plugin:fancy` avec `name: fancy` |

405| `SKILL.md` racine du plugin | Frontmatter `name`, avec le nom du répertoire du plugin comme secours | `my-plugin/SKILL.md` avec `name: review` → `/my-plugin:review`. Voir [Règles de comportement du chemin](/docs/fr/plugins-reference#path-behavior-rules) |406| `SKILL.md` racine du plugin | Frontmatter `name`, avec le nom du répertoire du plugin comme secours | `my-plugin/SKILL.md` avec `name: review` → `/my-plugin:review`. Voir [Règles de comportement du chemin](/docs/fr/plugins-reference#path-behavior-rules) |

406 407 


630 Injecter du contexte dynamique631 Injecter du contexte dynamique

631</h3>632</h3>

632 633 

633La syntaxe `` !`<command>` `` exécute des commandes shell avant que le contenu de la compétence soit envoyé à Claude. La sortie de la commande remplace l'espace réservé, de sorte que Claude reçoit des données réelles, pas la commande elle-même. Claude Code n'exécute pas ces commandes sur votre machine lorsque la compétence est [synchronisée depuis votre compte claude.ai](#how-claude-code-handles-the-body-of-a-synced-skill).634La syntaxe `` !`<command>` `` exécute des commandes shell avant que le contenu de la compétence soit envoyé à Claude. La sortie de la commande remplace l'espace réservé, de sorte que Claude reçoit des données réelles, pas la commande elle-même. Claude Code n'exécute pas ces commandes sur votre machine lorsque la compétence est [synchronisée depuis votre compte claude.ai](#how-claude-code-handles-the-body-of-a-synced-skill). Cette restriction nécessite Claude Code v2.1.228 ou version ultérieure.

634 635 

635Cette compétence résume une demande de tirage en récupérant les données de PR en direct avec GitHub CLI. Les commandes `` !`gh pr diff` `` et autres s'exécutent en premier, et leur sortie est insérée dans l'invite :636Cette compétence résume une demande de tirage en récupérant les données de PR en direct avec GitHub CLI. Les commandes `` !`gh pr diff` `` et autres s'exécutent en premier, et leur sortie est insérée dans l'invite :

636 637 


668 669 

669Pour désactiver ce comportement pour les compétences et les commandes personnalisées provenant de sources utilisateur, projet, plugin ou [répertoire supplémentaire](#skills-from-additional-directories), définissez `"disableSkillShellExecution": true` dans [settings](/docs/fr/settings). Chaque commande est remplacée par `[shell command execution disabled by policy]` au lieu d'être exécutée. Les compétences groupées et gérées ne sont pas affectées. Ce paramètre est très utile dans [managed settings](/docs/fr/managed-settings), où les utilisateurs ne peuvent pas le remplacer.670Pour désactiver ce comportement pour les compétences et les commandes personnalisées provenant de sources utilisateur, projet, plugin ou [répertoire supplémentaire](#skills-from-additional-directories), définissez `"disableSkillShellExecution": true` dans [settings](/docs/fr/settings). Chaque commande est remplacée par `[shell command execution disabled by policy]` au lieu d'être exécutée. Les compétences groupées et gérées ne sont pas affectées. Ce paramètre est très utile dans [managed settings](/docs/fr/managed-settings), où les utilisateurs ne peuvent pas le remplacer.

670 671 

671Claude Code n'exécute jamais ces commandes sur votre machine lorsqu'elles apparaissent dans les compétences [synchronisées depuis votre compte claude.ai](#how-synced-skills-behave), quel que soit ce paramètre. [How Claude Code handles the body of a synced skill](#how-claude-code-handles-the-body-of-a-synced-skill) indique ce que Claude reçoit à la place de la commande dans chaque type de session.672Claude Code n'exécute jamais ces commandes sur votre machine lorsqu'elles apparaissent dans les compétences [synchronisées depuis votre compte claude.ai](#how-synced-skills-behave), quel que soit ce paramètre. Cette restriction nécessite Claude Code v2.1.228 ou version ultérieure. [How Claude Code handles the body of a synced skill](#how-claude-code-handles-the-body-of-a-synced-skill) indique ce que Claude reçoit à la place de la commande dans chaque type de session.

672 673 

673<Tip>674<Tip>

674 Pour demander un raisonnement plus approfondi lorsqu'une compétence s'exécute, incluez `ultrathink` n'importe où dans le contenu de la compétence. Voir [Use ultrathink for one-off deep reasoning](/docs/fr/model-config#use-ultrathink-for-one-off-deep-reasoning).675 Pour demander un raisonnement plus approfondi lorsqu'une compétence s'exécute, incluez `ultrathink` n'importe où dans le contenu de la compétence. Voir [Use ultrathink for one-off deep reasoning](/docs/fr/model-config#use-ultrathink-for-one-off-deep-reasoning).


716 Exécuter les compétences dans un sous-agent717 Exécuter les compétences dans un sous-agent

717</h3>718</h3>

718 719 

719Ajoutez `context: fork` à votre frontmatter lorsque vous souhaitez qu'une compétence s'exécute en isolation. Le contenu de la compétence devient l'invite qui pilote le sous-agent. Il n'aura pas accès à votre historique de conversation.720Ajoutez `context: fork` à votre frontmatter lorsque vous souhaitez qu'une compétence s'exécute en isolation. Claude Code démarre un nouveau sous-agent du type défini dans le champ `agent` et lui donne le contenu de la compétence comme invite. Le sous-agent ne voit pas votre historique de conversation, de sorte que les instructions de la compétence doivent être autonomes.

721 

722<Note>

723 Malgré le nom, une compétence avec `context: fork` ne s'exécute pas dans un [fork de la conversation actuelle](/docs/fr/sub-agents#fork-the-current-conversation), ce qui remettrait au sous-agent tout ce que vous avez discuté jusqu'à présent. Lorsque la tâche dépend de cet historique, forkez la conversation au lieu d'utiliser `context: fork`.

724</Note>

720 725 

721Le sous-agent forké s'exécute en [arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) : vous continuez à travailler pendant qu'il s'exécute, et son résultat arrive dans votre conversation lorsqu'il se termine. Définissez `background: false` dans le frontmatter pour attendre le résultat dans le tour qui a invoqué la compétence. Avant v2.1.218, les compétences forkées bloquaient toujours le tour jusqu'à ce qu'elles se terminent.726Le sous-agent forké s'exécute en [arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) : vous continuez à travailler pendant qu'il s'exécute, et son résultat arrive dans votre conversation lorsqu'il se termine. Définissez `background: false` dans le frontmatter pour attendre le résultat dans le tour qui a invoqué la compétence. Avant v2.1.218, les compétences forkées bloquaient toujours le tour jusqu'à ce qu'elles se terminent.

722 727 


802 807 

803Syntaxe de permission : `Skill(name)` pour correspondance exacte, `Skill(name *)` pour correspondance de préfixe avec n'importe quels arguments.808Syntaxe de permission : `Skill(name)` pour correspondance exacte, `Skill(name *)` pour correspondance de préfixe avec n'importe quels arguments.

804 809 

810Si votre règle `deny` nomme un alias ou un nom non qualifié plutôt que le nom propre de la compétence, Claude Code bloque toujours la compétence : avec `Skill(review)` il bloque la compétence groupée `/code-review` via son alias `/review`, et avec `Skill(deploy)` il bloque une [compétence imbriquée](#where-skills-live) listée comme `apps/web:deploy` via son nom non qualifié. Avant v2.1.260, Claude Code ne bloquait pas une compétence imbriquée listée sous son nom qualifié lorsque la règle deny nommait uniquement le nom non qualifié.

811 

812Claude Code correspond à une règle `allow` uniquement contre le nom propre de la compétence et le nom dans l'invocation de Claude.

813 

805**Masquer les compétences individuelles** en ajoutant `disable-model-invocation: true` à leur frontmatter. Cela supprime la compétence du contexte de Claude entièrement.814**Masquer les compétences individuelles** en ajoutant `disable-model-invocation: true` à leur frontmatter. Cela supprime la compétence du contexte de Claude entièrement.

806 815 

807<Note>816<Note>


838}847}

839```848```

840 849 

850Certaines compétences groupées ont des alias, comme `checkup` pour `/doctor`. Si vous définissez une entrée `skillOverrides` sous un alias dans [managed settings](/docs/fr/managed-settings) ou dans un fichier que vous transmettez avec le drapeau `--settings`, Claude Code l'applique à la compétence derrière l'alias. Vous ne pouvez restreindre une compétence que davantage via un alias, jamais la rendre plus visible, et si vous définissez également une entrée sous le nom propre de la compétence dans managed settings, cette entrée prend la priorité. Avant v2.1.260, Claude Code n'appliquait pas une entrée sous un alias à la compétence dans aucune source de paramètres.

851 

852Dans les paramètres utilisateur, projet et local, Claude Code correspond aux entrées uniquement contre les noms de compétences. Si vous définissez une entrée pour `review` là, elle s'applique à une compétence nommée `review`, pas à la compétence groupée `/code-review` via son alias `/review`.

853 

841Les compétences de plugin ne sont pas affectées par `skillOverrides`. Gérez-les via `/plugin` à la place.854Les compétences de plugin ne sont pas affectées par `skillOverrides`. Gérez-les via `/plugin` à la place.

842 855 

843<h3 id="find-unused-skills">856<h3 id="find-unused-skills">


858 871 

859La vérification des deux est une comparaison de base. Collectez quelques invites réalistes, exécutez chacune dans une session nouvelle avec la compétence disponible et à nouveau avec elle [désactivée](#override-skill-visibility-from-settings), et comparez les résultats. Une session nouvelle est importante car le contexte restant de la création de la compétence masquera les lacunes dans les instructions écrites.872La vérification des deux est une comparaison de base. Collectez quelques invites réalistes, exécutez chacune dans une session nouvelle avec la compétence disponible et à nouveau avec elle [désactivée](#override-skill-visibility-from-settings), et comparez les résultats. Une session nouvelle est importante car le contexte restant de la création de la compétence masquera les lacunes dans les instructions écrites.

860 873 

874Deux outils automatisent cette comparaison. Pour une compétence qui est livrée dans un [plugin](/docs/fr/plugins), [`claude plugin eval`](/docs/fr/plugin-evals) exécute chaque invite dans une session isolée avec et sans le plugin, la note avec des évaluateurs que vous définissez ou qu'il écrit pour vous, et quitte avec un code non-zéro en dessous d'un seuil afin que vous puissiez gater CI sur celui-ci. Pour itérer sur une seule compétence à l'intérieur d'une conversation Claude Code, le plugin skill-creator ci-dessous exécute une boucle similaire avec son propre format `evals/evals.json`. Les deux formats ne sont pas interchangeables.

875 

861<h3 id="run-evals-with-skill-creator">876<h3 id="run-evals-with-skill-creator">

862 Exécuter des évaluations avec skill-creator877 Exécuter des évaluations avec skill-creator

863</h3>878</h3>


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

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

875 890 

876Si le résumé d'installation signale `Run /reload-plugins to activate.`, exécutez cette commande pour rendre les compétences du plugin disponibles dans la session actuelle. Ensuite, demandez à Claude d'évaluer une compétence existante, par exemple `evaluate my summarize-changes skill with skill-creator`. Le plugin vous guide à travers l'écriture de cas de test et exécute la boucle :891Si le résumé d'installation signale `Run /reload-plugins to activate.`, Claude Code exécute ensuite ce rechargement pour vous. Si le rechargement vous avertit que votre prochain message relierait la conversation, exécutez `/reload-plugins --force` pour rendre les compétences du plugin disponibles dans la session actuelle. Ensuite, demandez à Claude d'évaluer une compétence existante, par exemple `evaluate my summarize-changes skill with skill-creator`. Le plugin vous guide à travers l'écriture de cas de test et exécute la boucle :

877 892 

878* **Cas de test** : stocke les invites, les fichiers d'entrée et le comportement attendu dans `evals/evals.json` à l'intérieur du répertoire de compétence893* **Cas de test** : stocke les invites, les fichiers d'entrée et le comportement attendu dans `evals/evals.json` à l'intérieur du répertoire de compétence

879* **Exécutions isolées** : génère un [sous-agent](/docs/fr/sub-agents) par cas de test afin que chaque exécution commence avec un contexte propre, et enregistre le nombre de tokens et la durée894* **Exécutions isolées** : génère un [sous-agent](/docs/fr/sub-agents) par cas de test afin que chaque exécution commence avec un contexte propre, et enregistre le nombre de tokens et la durée


1100 1115 

11011. Vérifiez que la description inclut les mots-clés que les utilisateurs diraient naturellement11161. Vérifiez que la description inclut les mots-clés que les utilisateurs diraient naturellement

11022. Vérifiez que la compétence apparaît dans `What skills are available?`11172. Vérifiez que la compétence apparaît dans `What skills are available?`

11033. Essayez de reformuler votre demande pour qu'elle corresponde plus étroitement à la description11183. Essayez de reformuler votre demande pour correspondre plus étroitement à la description

11044. Invoquez-la directement avec `/skill-name` si la compétence peut être invoquée par l'utilisateur11194. Invoquez-la directement avec `/skill-name` si la compétence est invocable par l'utilisateur

1120 

1121Si le YAML du frontmatter est malformé, Claude Code charge le corps de la compétence avec des métadonnées vides, donc `/skill-name` fonctionne toujours mais Claude ne peut pas faire correspondre votre `description`. Exécutez avec `--debug` pour voir l'erreur d'analyse.

1105 1122 

1106Si le YAML du frontmatter est malformé, Claude Code charge le corps de la compétence avec des métadonnées vides, donc `/skill-name` fonctionne toujours mais Claude n'a pas de `description` pour faire correspondre. Exécutez avec `--debug` pour voir l'erreur d'analyse.1123Si la compétence est fournie dans un plugin, vous pouvez mesurer la fréquence à laquelle elle se déclenche sur des invites réalistes plutôt que de vérifier une par une : écrivez un cas d'évaluation avec un [évaluateur `tool_used: Skill`](/docs/fr/plugin-evals#create-your-first-eval-suite) et exécutez-le avec `claude plugin eval` après chaque modification de description.

1107 1124 

1108Pour trouver les fichiers `SKILL.md` dont le frontmatter ne s'analyse pas, exécutez [`claude plugin validate`](/docs/fr/plugin-marketplaces#validate-a-plugin-or-a-directory-without-a-manifest) sur le répertoire des compétences, par exemple `claude plugin validate .claude/skills` pour les compétences du projet ou `claude plugin validate ~/.claude/skills` pour les compétences personnelles. Nécessite Claude Code v2.1.233 ou ultérieur.1125Pour trouver les fichiers `SKILL.md` dont le frontmatter ne s'analyse pas, exécutez [`claude plugin validate`](/docs/fr/plugin-marketplaces#validate-a-plugin-or-a-directory-without-a-manifest) sur le répertoire des compétences, par exemple `claude plugin validate .claude/skills` pour les compétences du projet ou `claude plugin validate ~/.claude/skills` pour les compétences personnelles. Nécessite Claude Code v2.1.233 ou ultérieur.

1109 1126 


1120 Les descriptions de compétences sont tronquées1137 Les descriptions de compétences sont tronquées

1121</h3>1138</h3>

1122 1139 

1123Claude Code charge une liste de noms et descriptions de compétences dans le contexte pour que Claude sache ce qui est disponible. La liste contient toujours tous les noms de compétences, mais si vous avez de nombreuses compétences, Claude Code raccourcit les descriptions pour s'adapter au budget de caractères de la liste, ce qui peut supprimer les mots-clés dont Claude a besoin pour faire correspondre votre demande. Le budget s'adapte à 1 % de la fenêtre de contexte du modèle. Quand la liste dépasse sa limite, Claude Code supprime les descriptions en commençant par les compétences que vous invoquez le moins, de sorte que les compétences que vous utilisez le plus conservent leur texte complet.1140Claude Code charge une liste de noms et descriptions de compétences dans le contexte pour que Claude sache ce qui est disponible. La liste contient toujours tous les noms de compétences, mais si vous avez de nombreuses compétences, Claude Code raccourcit les descriptions pour s'adapter au budget de caractères de la liste, ce qui peut supprimer les mots-clés dont Claude a besoin pour faire correspondre votre demande. Le budget s'adapte à 1 % de la fenêtre de contexte du modèle. Quand la liste dépasse le budget, Claude Code supprime les descriptions en commençant par les compétences que vous invoquez le moins, de sorte que les compétences que vous utilisez le plus conservent leur texte complet.

1124 1141 

1125Exécutez `/doctor` pour une estimation du coût contextuel de la liste et de ses plus grands contributeurs. Pour trouver les compétences qui valent la peine d'être désactivées, exécutez [`/skill-doctor`](#find-unused-skills). Quand la liste dépasse son budget, Claude Code écrit également un avertissement dans le journal de débogage, visible avec [`--debug`](/docs/fr/cli-reference#cli-flags).1142Exécutez `/doctor` pour une estimation du coût contextuel de la liste et de ses plus grands contributeurs. Pour trouver les compétences qui valent la peine d'être désactivées, exécutez [`/skill-doctor`](#find-unused-skills). Quand la liste dépasse son budget, Claude Code écrit également un avertissement dans le journal de débogage, visible avec [`--debug`](/docs/fr/cli-reference#cli-flags).

1126 1143 

1127La ligne Skills dans `/context` rapporte la taille de la liste après l'application du budget, de sorte qu'elle correspond à ce que le modèle reçoit. Avant v2.1.196, la ligne comptait le texte complet de chaque description et pouvait afficher une valeur plusieurs fois plus grande que le budget configuré.1144La ligne Skills dans `/context` rapporte la taille de la liste après l'application du budget, de sorte qu'elle correspond à ce que le modèle reçoit. Avant v2.1.196, la ligne comptait le texte complet de chaque description et pouvait afficher une valeur plusieurs fois plus grande que le budget configuré.

1128 1145 

1129Pour augmenter le budget, définissez le paramètre [`skillListingBudgetFraction`](/docs/fr/settings-reference#skilllistingbudgetfraction) (par exemple `0.02` = 2 %) ou la variable d'environnement `SLASH_COMMAND_TOOL_CHAR_BUDGET` sur un nombre de caractères fixe. Pour libérer du budget pour d'autres compétences, définissez les entrées de faible priorité sur `"name-only"` dans [`skillOverrides`](#override-skill-visibility-from-settings) afin qu'elles s'affichent sans description. Vous pouvez également réduire le texte `description` et `when_to_use` à la source : mettez le cas d'utilisation clé en premier, car le texte combiné de chaque entrée est limité à 1 536 caractères quel que soit le budget. La limite est configurable avec [`skillListingMaxDescChars`](/docs/fr/settings-reference#skilllistingmaxdescchars).1146Pour augmenter le budget, définissez le paramètre [`skillListingBudgetFraction`](/docs/fr/settings-reference#skilllistingbudgetfraction) (par exemple `0.02` = 2 %) ou la variable d'environnement `SLASH_COMMAND_TOOL_CHAR_BUDGET` sur un nombre de caractères fixe. Pour libérer du budget pour d'autres compétences, définissez les entrées de faible priorité sur `"name-only"` dans [`skillOverrides`](#override-skill-visibility-from-settings) afin qu'elles s'affichent sans description. Vous pouvez également réduire le texte `description` et `when_to_use` à la source : mettez le cas d'utilisation clé en premier, car le texte combiné de chaque entrée est limité à 1 536 caractères quel que soit le budget. Le plafond est configurable avec [`skillListingMaxDescChars`](/docs/fr/settings-reference#skilllistingmaxdescchars).

1130 1147 

1131<h2 id="related-resources">1148<h2 id="related-resources">

1132 Ressources connexes1149 Ressources connexes

statusline.md +1 −1

Details

190| `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 |190| `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 |

191| `workspace.added_dirs` | Répertoires supplémentaires ajoutés via `/add-dir` ou `--add-dir`. Tableau vide si aucun n'a été ajouté |191| `workspace.added_dirs` | Répertoires supplémentaires ajoutés via `/add-dir` ou `--add-dir`. Tableau vide si aucun n'a été ajouté |

192| `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 est présent uniquement pendant une [session worktree](/docs/fr/worktrees) |192| `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 est présent uniquement pendant une [session worktree](/docs/fr/worktrees) |

193| `workspace.repo.host`, `workspace.repo.owner`, `workspace.repo.name` | Identité du référentiel analysée à partir de la télécommande `origin`, par exemple `"github.com"`, `"anthropics"`, `"claude-code"`. Absent en dehors d'un référentiel git ou quand aucune télécommande `origin` n'est configurée |193| `workspace.repo.host`, `workspace.repo.owner`, `workspace.repo.name` | Identité du référentiel analysée à partir de la télécommande `origin`, par exemple `"github.com"`, `"anthropics"`, `"claude-code"`. Absent en dehors d'un référentiel git ou quand aucune télécommande `origin` n'est configurée. Pour un projet gitlab.com imbriqué dans des sous-groupes, `owner` est le chemin d'espace de noms complet avec des barres obliques, tel que `"group/subgroup"`. Avant v2.1.260, `workspace.repo` était absent pour ces projets |

194| `cost.total_cost_usd` | Coût total estimé de la session en USD, calculé côté client au prix catalogue sauf si une table [`modelPricing`](/docs/fr/settings-reference#modelpricing) est en vigueur. Peut différer de votre facture réelle. Se réinitialise à 0 \$ quand `/clear` démarre une nouvelle session. Avant v2.1.211, le total s'accumulait après `/clear` |194| `cost.total_cost_usd` | Coût total estimé de la session en USD, calculé côté client au prix catalogue sauf si une table [`modelPricing`](/docs/fr/settings-reference#modelpricing) est en vigueur. Peut différer de votre facture réelle. Se réinitialise à 0 \$ quand `/clear` démarre une nouvelle session. Avant v2.1.211, le total s'accumulait après `/clear` |

195| `cost.total_duration_ms` | Temps écoulé total depuis le début de la session, en millisecondes |195| `cost.total_duration_ms` | Temps écoulé total depuis le début de la session, en millisecondes |

196| `cost.total_api_duration_ms` | Temps total passé à attendre les réponses API en millisecondes |196| `cost.total_api_duration_ms` | Temps total passé à attendre les réponses API en millisecondes |

sub-agents.md +25 −20

Details

304| `name` | Oui | Identifiant unique utilisant des lettres minuscules et des tirets. Les [Hooks](/docs/fr/hooks#subagentstart) reçoivent cette valeur comme `agent_type`. Le nom du fichier n'a pas besoin de correspondre. Les noms ne peuvent pas contenir `:`, qui est réservé aux [identifiants limités au plugin](/docs/fr/plugins) tels que `my-plugin:reviewer`. Claude Code ne charge pas un fichier dont le nom en contient un et enregistre une erreur dans le journal de débogage. Avant la v2.1.218, de tels noms étaient acceptés |304| `name` | Oui | Identifiant unique utilisant des lettres minuscules et des tirets. Les [Hooks](/docs/fr/hooks#subagentstart) reçoivent cette valeur comme `agent_type`. Le nom du fichier n'a pas besoin de correspondre. Les noms ne peuvent pas contenir `:`, qui est réservé aux [identifiants limités au plugin](/docs/fr/plugins) tels que `my-plugin:reviewer`. Claude Code ne charge pas un fichier dont le nom en contient un et enregistre une erreur dans le journal de débogage. Avant la v2.1.218, de tels noms étaient acceptés |

305| `description` | Oui | Quand Claude doit déléguer à ce sous-agent |305| `description` | Oui | Quand Claude doit déléguer à ce sous-agent |

306| `tools` | Non | [Outils](#available-tools) que le sous-agent peut utiliser. Hérite de tous les outils disponibles pour les sous-agents s'il est omis. Si aucune entrée de la liste ne se résout en un outil, le sous-agent échoue généralement au [lancement](/docs/fr/errors#agent-would-be-spawned-with-zero-tools) avec une erreur nommant les entrées. Pour précharger les Skills dans le contexte, utilisez le champ `skills` plutôt que de lister `Skill` ici |306| `tools` | Non | [Outils](#available-tools) que le sous-agent peut utiliser. Hérite de tous les outils disponibles pour les sous-agents s'il est omis. Si aucune entrée de la liste ne se résout en un outil, le sous-agent échoue généralement au [lancement](/docs/fr/errors#agent-would-be-spawned-with-zero-tools) avec une erreur nommant les entrées. Pour précharger les Skills dans le contexte, utilisez le champ `skills` plutôt que de lister `Skill` ici |

307| `disallowedTools` | Non | Outils à refuser, supprimés de la liste héritée ou spécifiée |307| `disallowedTools` | Non | Outils à refuser, supprimés de la liste héritée ou spécifiée. Une entrée avec un spécificateur, tel que `Bash(git push *)`, supprime toujours l'[outil entier](#available-tools) |

308| `model` | Non | [Modèle](#choose-a-model) à utiliser : `sonnet`, `opus`, `haiku`, `fable`, un ID de modèle complet tel que `claude-opus-5`, ou `inherit`. Lorsque vous l'omettez, Claude Code choisit le modèle dans l'[ordre du modèle de sous-agent](#choose-a-model) |308| `model` | Non | [Modèle](#choose-a-model) à utiliser : `sonnet`, `opus`, `haiku`, `fable`, un ID de modèle complet tel que `claude-opus-5`, ou `inherit`. Lorsque vous l'omettez, Claude Code choisit le modèle dans l'[ordre du modèle de sous-agent](#choose-a-model) |

309| `permissionMode` | Non | [Mode de permission](#permission-modes) : `default`, `acceptEdits`, `auto`, `dontAsk`, `bypassPermissions`, `plan`, ou `manual` comme alias pour `default`. L'alias `manual` nécessite Claude Code v2.1.200 ou ultérieur. Ignoré pour les [sous-agents de plugin](#choose-the-subagent-scope) |309| `permissionMode` | Non | [Mode de permission](#permission-modes) : `default`, `acceptEdits`, `auto`, `dontAsk`, `bypassPermissions`, `plan`, ou `manual` comme alias pour `default`. L'alias `manual` nécessite Claude Code v2.1.200 ou ultérieur. Ignoré pour les [sous-agents de plugin](#choose-the-subagent-scope) |

310| `maxTurns` | Non | Nombre maximum de tours d'agent avant que le sous-agent s'arrête. Lorsque le sous-agent atteint la limite, Claude Code retourne sa sortie marquée comme partielle, et Claude peut la [reprendre](#resume-subagents) pour continuer. Le marquage partiel nécessite Claude Code v2.1.246 ou ultérieur |310| `maxTurns` | Non | Nombre maximum de tours d'agent avant que le sous-agent s'arrête. Lorsque le sous-agent atteint la limite, Claude Code retourne sa sortie marquée comme partielle, et Claude peut la [reprendre](#resume-subagents) pour continuer. Le marquage partiel nécessite Claude Code v2.1.246 ou ultérieur |


427 Outils disponibles427 Outils disponibles

428</h4>428</h4>

429 429 

430Les sous-agents héritent des [outils intégrés](/docs/fr/tools-reference) et des outils MCP disponibles dans la conversation principale, réduits par deux filtres : le premier supprime une courte liste d'outils de chaque sous-agent, et le second réduit l'ensemble des outils intégrés pour les sous-agents qui s'exécutent en [arrière-plan](#run-subagents-in-foreground-or-background), ce qui est la valeur par défaut. Les [Forks](#fork-the-current-conversation) ignorent les deux filtres et reçoivent le pool d'outils exact de la conversation principale. Le premier filtre supprime ces outils, même lorsqu'ils sont listés dans le champ `tools` :430Les sous-agents héritent des [outils intégrés](/docs/fr/tools-reference) et des outils MCP disponibles dans la conversation principale, réduits par deux filtres : le premier supprime une courte liste d'outils de chaque sous-agent, et le second réduit l'ensemble des outils intégrés pour les sous-agents qui s'exécutent en [arrière-plan](#run-subagents-in-foreground-or-background), ce qui est la valeur par défaut. Sur macOS, Linux et WSL, un sous-agent peut également recevoir les outils Glob et Grep lorsque la conversation principale ne les a pas, comme décrit sous [Comportement de l'outil Glob](/docs/fr/tools-reference#glob-tool-behavior). Les [Forks](#fork-the-current-conversation) ignorent les deux filtres et reçoivent le pool d'outils exact de la conversation principale. Le premier filtre supprime ces outils, même lorsqu'ils sont listés dans le champ `tools` :

431 431 

432* `Agent`, lorsque le sous-agent est à la [limite de profondeur](#let-subagents-spawn-their-own-subagents) ; dans un [fork](#fork-the-current-conversation) l'outil reste listé mais retourne une erreur à la place de générer432* `Agent`, lorsque le sous-agent est à la [limite de profondeur](#let-subagents-spawn-their-own-subagents) ; dans un [fork](#fork-the-current-conversation) l'outil reste listé mais retourne une erreur à la place de générer

433* `AskUserQuestion`433* `AskUserQuestion`


439* `WaitForMcpServers`439* `WaitForMcpServers`

440* `Workflow`440* `Workflow`

441 441 

442Le second filtre s'applique aux sous-agents s'exécutant en arrière-plan. À part `Agent` et `ExitPlanMode`, qui suivent les conditions du premier filtre partout où le sous-agent s'exécute, un sous-agent en arrière-plan conserve tous les outils MCP mais uniquement ces outils intégrés : `Read`, `Grep`, `Glob`, `Bash`, `PowerShell`, `Edit`, `Write`, `NotebookEdit`, `WebFetch`, `WebSearch`, `TodoWrite`, `Skill`, `ToolSearch`, `EnterWorktree`, `ExitWorktree`, `Monitor`, `TaskStop`, `SendMessage` et `Artifact`. Claude Code supprime tous les autres outils intégrés d'un sous-agent en arrière-plan, qu'ils soient hérités ou listés dans le champ `tools`, donc la même définition peut se résoudre en outils différents au premier plan et en arrière-plan. La suppression ne signale aucune erreur sauf si elle laisse la liste `tools` [se résoudre à rien](/docs/fr/errors#agent-would-be-spawned-with-zero-tools). [`ListAgents`](/docs/fr/cross-session-messaging) suit ces filtres comme n'importe quel outil intégré : un sous-agent au premier plan l'hérite dans les sessions où la messagerie entre sessions est activée, et un sous-agent en arrière-plan ne le conserve pas.442Le second filtre s'applique aux sous-agents s'exécutant en arrière-plan. À part `Agent` et `ExitPlanMode`, qui suivent les conditions du premier filtre partout où le sous-agent s'exécute, un sous-agent en arrière-plan conserve tous les outils MCP mais uniquement ces outils intégrés : `Read`, `Grep`, `Glob`, `Bash`, `PowerShell`, `Edit`, `Write`, `NotebookEdit`, `WebFetch`, `WebSearch`, `TodoWrite`, `Skill`, `ToolSearch`, `EnterWorktree`, `ExitWorktree`, `Monitor`, `TaskStop`, `SendMessage` et `Artifact`. Claude Code supprime tous les autres outils intégrés d'un sous-agent en arrière-plan, qu'ils soient hérités ou listés dans le champ `tools`, donc la même définition peut se résoudre en outils différents au premier plan et en arrière-plan. La suppression ne signale aucune erreur sauf si elle laisse la liste `tools` [se résoudre à rien](/docs/fr/errors#agent-would-be-spawned-with-zero-tools).

443 

444[`ListAgents`](/docs/fr/cross-session-messaging) suit ces filtres comme n'importe quel outil intégré : un sous-agent au premier plan l'hérite dans les sessions où la messagerie entre sessions est activée, et un sous-agent en arrière-plan ne le conserve pas.

443 445 

444Les coéquipiers dans les [équipes d'agents](/docs/fr/agent-teams) conservent en outre les outils de tâche et les outils cron : `TaskCreate`, `TaskGet`, `TaskList`, `TaskUpdate`, `CronCreate`, `CronDelete` et `CronList`.446Les coéquipiers dans les [équipes d'agents](/docs/fr/agent-teams) conservent en outre les outils de tâche et les outils cron : `TaskCreate`, `TaskGet`, `TaskList`, `TaskUpdate`, `CronCreate`, `CronDelete` et `CronList`.

445 447 


479---481---

480```482```

481 483 

484Une entrée `disallowedTools` avec un spécificateur, tel que `Bash(git push *)`, supprime toujours l'outil entier du sous-agent, pas seulement les commandes correspondantes. Pour conserver Bash et bloquer des commandes spécifiques, ajoutez une [règle de refus Bash](/docs/fr/permissions#bash) telle que `Bash(git push *)` à `permissions.deny` dans vos paramètres. La règle s'applique à la conversation principale et aux sous-agents.

485 

482<h4 id="restrict-which-subagents-can-be-spawned">486<h4 id="restrict-which-subagents-can-be-spawned">

483 Restreindre les sous-agents qui peuvent être générés487 Restreindre les sous-agents qui peuvent être générés

484</h4>488</h4>


570 Modes de permission574 Modes de permission

571</h4>575</h4>

572 576 

573Définissez `permissionMode` pour choisir le mode de permission dans lequel un sous-agent s'exécute. Utilisez les valeurs de configuration des modes, donc le mode Manuel est `default`. Si vous le laissez non défini, le sous-agent hérite du mode de la conversation principale, qui commence en [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) sur les plans Pro, Max et Team sauf si vos paramètres ou votre organisation le changent. Le définir remplace ce mode, sauf dans les cas décrits ci-dessous.577Définissez `permissionMode` pour choisir le mode de permission dans lequel un sous-agent s'exécute. Utilisez les valeurs de configuration des modes, donc le mode Manuel est `default`. Si vous le laissez non défini, le sous-agent hérite du mode de la conversation principale, qui commence en [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) sur les plans Pro, Max et Team sauf si vos paramètres ou votre organisation le changent.

578 

579Le mode de permission de la conversation principale décide si Claude Code utilise la valeur que vous définissez :

580 

581* Lorsque la conversation principale est en `bypassPermissions`, `acceptEdits` ou [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode), le sous-agent s'exécute dans ce même mode et Claude Code ignore le `permissionMode` que vous définissez. En mode auto, le classificateur évalue les appels d'outils du sous-agent avec les règles de blocage et d'autorisation de la conversation principale.

582* Lorsque la conversation principale est en mode `default`, `dontAsk` ou `plan`, le sous-agent s'exécute dans le mode de permission que vous définissez, sauf `bypassPermissions`. Un sous-agent qui déclare `bypassPermissions` conserve le mode de la conversation principale à la place. L'exception `bypassPermissions` nécessite Claude Code v2.1.267 ou ultérieur.

583 

584`permissionMode` accepte ces valeurs, et `manual` comme alias pour `default` :

574 585 

575| Mode | Comportement |586| Mode | Comportement |

576| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |587| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |


578| `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` |589| `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` |

579| `auto` | [Mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) : un classificateur examine les commandes et les écritures de répertoire protégé |590| `auto` | [Mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) : un classificateur examine les commandes et les écritures de répertoire protégé |

580| `dontAsk` | Auto-refuser les invites de permission. Les outils explicitement autorisés fonctionnent toujours ; `AskUserQuestion`, les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) et les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) dans les sessions où ce paramètre atteint Claude Code sont refusés même si vous les avez autorisés |591| `dontAsk` | Auto-refuser les invites de permission. Les outils explicitement autorisés fonctionnent toujours ; `AskUserQuestion`, les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) et les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) dans les sessions où ce paramètre atteint Claude Code sont refusés même si vous les avez autorisés |

581| `bypassPermissions` | Ignorer les invites de permission |592| `bypassPermissions` | [Ignorer les invites de permission](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode). Un sous-agent s'exécute dans ce mode uniquement lorsque la conversation principale le fait |

582| `plan` | Mode plan (exploration en lecture seule) |593| `plan` | Mode plan (exploration en lecture seule) |

583 594 

584<Warning>

585 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`, `.config/git`, `.claude`, `.vscode`, `.idea`, `.husky`, `.cargo`, `.devcontainer`, `.yarn` et `.mvn`.

586 

587 Même dans ce mode, les [actions qu'aucun mode n'auto-approuve](/docs/fr/permission-modes#actions-no-mode-auto-approves) s'appliquent toujours. Consultez [modes de permission](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) pour plus de détails.

588</Warning>

589 

590Si le parent utilise `bypassPermissions` ou `acceptEdits`, cela prend précédence et ne peut pas être remplacé. Si le parent utilise le [mode auto](/docs/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.

591 

592Si le mode bypass est désactivé par [`permissions.disableBypassPermissionsMode`](/docs/fr/permissions#managed-settings), Claude Code ignore `permissionMode: bypassPermissions` dans le frontmatter et le sous-agent s'exécute avec le mode de la session parent. Avant la v2.1.223, Claude Code appliquait le mode du frontmatter même avec le bypass désactivé.

593 

594<h4 id="preload-skills-into-subagents">595<h4 id="preload-skills-into-subagents">

595 Précharger les skills dans les sous-agents596 Précharger les skills dans les sous-agents

596</h4>597</h4>


616Si une skill listée est manquante ou désactivée, par exemple par la politique de votre organisation, Claude Code la saute et enregistre un avertissement dans le journal de débogage.617Si une skill listée est manquante ou désactivée, par exemple par la politique de votre organisation, Claude Code la saute et enregistre un avertissement dans le journal de débogage.

617 618 

618<Note>619<Note>

619 C'est l'inverse de [l'exécution d'une skill dans un sous-agent](/docs/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.620 C'est l'inverse de [l'exécution d'une skill dans un sous-agent](/docs/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. Dans les deux cas, le sous-agent démarre sans votre historique de conversation.

620</Note>621</Note>

621 622 

622<h4 id="enable-persistent-memory">623<h4 id="enable-persistent-memory">


883 884 

884L'invite système du sous-agent remplace complètement l'invite système par défaut de Claude Code, de la même manière que [`--system-prompt`](/docs/fr/cli-reference) le fait. Les fichiers `CLAUDE.md` et la mémoire du projet se chargent toujours via le flux de messages normal. 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.885L'invite système du sous-agent remplace complètement l'invite système par défaut de Claude Code, de la même manière que [`--system-prompt`](/docs/fr/cli-reference) le fait. Les fichiers `CLAUDE.md` et la mémoire du projet se chargent toujours via le flux de messages normal. 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.

885 886 

886Cela fonctionne avec les sous-agents intégrés et personnalisés, et le choix persiste lorsque vous reprenez la session : Claude Code restaure l'invite système, les restrictions d'outils et le modèle de l'agent ainsi que la conversation. Si l'agent n'existe plus lorsque vous reprenez, la session continue avec les outils par défaut et l'invite système et affiche un [avertissement nommant l'agent](/docs/fr/errors#session-agent-no-longer-available).887Cela fonctionne avec les sous-agents intégrés et personnalisés, et le choix persiste lorsque vous reprenez la session : Claude Code restaure l'invite système, les restrictions d'outils et le modèle de l'agent ainsi que la conversation. Si l'agent n'existe plus lorsque vous reprenez, la session continue avec les outils par défaut et affiche un [avertissement nommant l'agent](/docs/fr/errors#session-agent-no-longer-available). Pour l'invite système dans l'un ou l'autre cas, voir [Drapeaux d'invite système dans les conversations reprises](/docs/fr/cli-reference#system-prompt-flags-in-resumed-conversations).

887 888 

888Pour un sous-agent fourni par un plugin, vous pouvez passer simplement le nom de l'agent et Claude Code le trouvera :889Pour un sous-agent fourni par un plugin, vous pouvez passer simplement le nom de l'agent et Claude Code le trouvera :

889 890 


927 928 

928Pour une skill avec `context: fork`, Claude Code suit les règles dans [Exécuter les skills dans un sous-agent](/docs/fr/skills#run-skills-in-a-subagent) à la place, que le mode fork soit activé ou non.929Pour une skill avec `context: fork`, Claude Code suit les règles dans [Exécuter les skills dans un sous-agent](/docs/fr/skills#run-skills-in-a-subagent) à la place, que le mode fork soit activé ou non.

929 930 

930Les sous-agents en arrière-plan s'exécutent avec un [ensemble d'outils intégrés plus petit](#available-tools) que les sous-agents au premier plan, sauf pour les forks de conversation, et ils affichent chaque invite de permission dans votre session principale. Lorsque vous répondez à l'une de ces invites avec un choix qui dure au-delà de cet appel d'outil, comme une autorisation qui dure pour le reste de la session, Claude Code applique votre réponse à la session entière, y compris votre conversation principale.931Les sous-agents en arrière-plan s'exécutent avec un [ensemble d'outils intégrés plus petit](#available-tools) que les sous-agents au premier plan, sauf pour les forks de conversation et les [sous-agents au premier plan repris](#resume-subagents).

932 

933Les sous-agents en arrière-plan affichent chaque invite de permission dans votre session principale. Lorsque vous répondez à l'une de ces invites avec un choix qui dure au-delà de cet appel d'outil, comme une autorisation qui dure pour le reste de la session, Claude Code applique votre réponse à la session entière, y compris votre conversation principale.

931 934 

932Un sous-agent en arrière-plan peut laisser une [commande Bash ou PowerShell](/docs/fr/tools-reference#background-commands) en arrière-plan [s'exécuter au-delà de la fin de son tour](/docs/fr/interactive-mode#how-backgrounding-works). Lorsque cette commande se termine, Claude Code envoie au sous-agent une notification.935Un sous-agent en arrière-plan peut laisser une [commande Bash ou PowerShell](/docs/fr/tools-reference#background-commands) en arrière-plan [s'exécuter au-delà de la fin de son tour](/docs/fr/interactive-mode#how-backgrounding-works). Lorsque cette commande se termine, Claude Code envoie au sous-agent une notification.

933 936 


1127 1130 

1128Chaque invocation de sous-agent crée une nouvelle instance plutôt que de continuer une instance antérieure. Pour continuer le travail d'un sous-agent existant au lieu de recommencer, demandez à Claude de le reprendre.1131Chaque invocation de sous-agent crée une nouvelle instance plutôt que de continuer une instance antérieure. Pour continuer le travail d'un sous-agent existant au lieu de recommencer, demandez à Claude de le reprendre.

1129 1132 

1130Les 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.1133Les 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. Si le sous-agent a généré [des sous-agents en arrière-plan de son propre](#let-subagents-spawn-their-own-subagents), cet historique inclut les résultats qu'ils ont livrés pendant qu'il s'exécutait. Le sous-agent reprend exactement où il s'était arrêté plutôt que de recommencer à zéro.

1131 1134 

1132* Lorsqu'un sous-agent se termine, Claude reçoit son ID d'agent.1135* Lorsqu'un sous-agent se termine, Claude reçoit son ID d'agent.

1133* Les agents Explore et Plan intégrés sont ponctuels et ne retournent pas d'ID d'agent, donc Claude ne peut pas les reprendre. Utilisez `general-purpose` ou un sous-agent personnalisé lorsque vous avez besoin de continuer le travail.1136* Les agents Explore et Plan intégrés sont ponctuels et ne retournent pas d'ID d'agent, donc Claude ne peut pas les reprendre. Utilisez `general-purpose` ou un sous-agent personnalisé lorsque vous avez besoin de continuer le travail.


1145[Claude resumes the subagent with full context from previous conversation]1148[Claude resumes the subagent with full context from previous conversation]

1146```1149```

1147 1150 

1148Un sous-agent terminé qui reçoit un `SendMessage` se reprend automatiquement en arrière-plan sans une nouvelle invocation `Agent`. Le même principe s'applique à un sous-agent que Claude a arrêté avec l'outil `TaskStop`.1151Lorsqu'un sous-agent terminé reçoit un message avec l'outil `SendMessage`, le sous-agent se reprend automatiquement en arrière-plan sans une nouvelle invocation `Agent`. Le même principe s'applique à un sous-agent que Claude a arrêté avec l'outil `TaskStop`, une fois que sa exécution arrêtée a quitté. L'exécution reprise conserve l'[ensemble d'outils d'où le sous-agent s'est d'abord exécuté](#run-subagents-in-foreground-or-background) et peut continuer à lire le [cache d'invite que l'exécution originale a préchauffé](/docs/fr/prompt-caching#subagents-and-the-cache).

1152 

1153Un sous-agent qui a l'outil `SendMessage` peut aussi envoyer ce message. Dans une session interactive, l'agent repris signale alors au sous-agent qui l'a repris, pas à votre conversation principale. Ce sous-agent attend le résultat avant de terminer son propre travail. Lorsqu'un sous-agent envoie un message à un agent auquel il signale, comme son propre lanceur, Claude Code reprend cet agent sans rediriger ses résultats.

1149 1154 

1150Un sous-agent que vous avez arrêté vous-même, avec `x` dans `/tasks` ou une demande SDK `stop_task`, ne se reprend pas automatiquement. Si Claude lui envoie un message, le message est refusé et Claude est informé que l'agent a été annulé.1155Un sous-agent que vous avez arrêté vous-même, avec `x` dans `/tasks` ou une demande SDK `stop_task`, ne se reprend pas automatiquement. Si Claude lui envoie un message, le message est refusé et Claude est informé que l'agent a été annulé.

1151 1156 

Details

226 Signalez les états de succès, d'échec et d'avertissement dans les messages et les indicateurs.226 Signalez les états de succès, d'échec et d'avertissement dans les messages et les indicateurs.

227 227 

228 | Jeton | Contrôle |228 | Jeton | Contrôle |

229 | :-------- | :-------------------------------------------------------------- |229 | :-------- | :---------------------------------------------------------------- |

230 | `success` | Messages de succès et vérifications réussies |230 | `success` | Messages de succès et vérifications réussies |

231 | `error` | Messages d'erreur et échecs |231 | `error` | Messages d'erreur et échecs |

232 | `warning` | Avertissements, messages de prudence et la bordure du mode auto |232 | `warning` | Avertissements, messages de prudence et l'indicateur du mode auto |

233 | `merged` | Statut de demande de tirage fusionnée |233 | `merged` | Statut de demande de tirage fusionnée |

234 234 

235 <h4 id="input-box-and-mode-indicators">235 <h4 id="input-box-and-mode-indicators">


240 240 

241 | Jeton | Contrôle |241 | Jeton | Contrôle |

242 | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |242 | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

243 | `promptBorder` | Bordure de la boîte d'entrée en mode Manuel |243 | `promptBorder` | Bordure de la boîte d'entrée |

244 | `planMode` | Accent et bordure du mode plan |244 | `planMode` | Accent du mode plan, messages du mode plan et dialogues du mode plan |

245 | `autoAccept` | Accent et bordure du mode accepter les modifications |245 | `autoAccept` | Accent du mode accepter les modifications |

246 | `bashBorder` | Bordure de la boîte d'entrée lors de la saisie d'une commande shell `!` |246 | `bashBorder` | Bordure de la boîte d'entrée lors de la saisie d'une commande shell `!` |

247 | `ide` | Indicateur de connexion IDE |247 | `ide` | Indicateur de connexion IDE |

248 | `fastMode` | Indicateur du mode rapide |248 | `fastMode` | Indicateur du mode rapide |

Details

227 Investir dans la documentation et la mémoire227 Investir dans la documentation et la mémoire

228</h3>228</h3>

229 229 

230Nous 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 :230Nous 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. Voir [où les fichiers CLAUDE.md peuvent se trouver](/docs/fr/memory#choose-where-to-put-claude-md-files) et [comment déployer un CLAUDE.md à l'échelle de l'organisation](/docs/fr/memory#deploy-organization-wide-claude-md).

231 

232* **À l'échelle de l'organisation** : Déployez dans des répertoires système comme `/Library/Application Support/ClaudeCode/CLAUDE.md` (macOS), `/etc/claude-code/CLAUDE.md` (Linux et WSL), ou `C:\Program Files\ClaudeCode\CLAUDE.md` (Windows) pour les normes à l'échelle de l'entreprise

233* **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

234 

235En savoir plus dans [Mémoire et fichiers CLAUDE.md](/docs/fr/memory).

236 231 

237<h3 id="simplify-deployment">232<h3 id="simplify-deployment">

238 Simplifier le déploiement233 Simplifier le déploiement

tools-reference.md +24 −18

Details

31| `EnterWorktree` | Crée un [git worktree](/docs/fr/worktrees) isolé et y bascule. Passez un `path` pour basculer dans un worktree existant au lieu d'en créer un nouveau. À la première entrée, la cible peut être un worktree du référentiel actuel ou, dans un espace de travail multi-référentiel, d'un référentiel imbriqué à l'intérieur. Avant v2.1.203, un worktree d'un référentiel imbriqué était rejeté. Un `path` en dehors de `.claude/worktrees/` demande votre approbation avant d'entrer, car il déplace le répertoire de travail de la session et l'accès en écriture à cet emplacement. La création de nouveaux worktrees et les chemins sous `.claude/worktrees/` ne demandent pas. Avant v2.1.206, Claude entrait dans les chemins en dehors de `.claude/worktrees/` sans demander. À partir d'une session worktree, ou d'un sous-agent avec un répertoire de travail épinglé tel que [`isolation: worktree`](/docs/fr/sub-agents#supported-frontmatter-fields), seule la forme `path` est disponible et la cible doit être sous `.claude/worktrees/` du référentiel de la session | Oui |31| `EnterWorktree` | Crée un [git worktree](/docs/fr/worktrees) isolé et y bascule. Passez un `path` pour basculer dans un worktree existant au lieu d'en créer un nouveau. À la première entrée, la cible peut être un worktree du référentiel actuel ou, dans un espace de travail multi-référentiel, d'un référentiel imbriqué à l'intérieur. Avant v2.1.203, un worktree d'un référentiel imbriqué était rejeté. Un `path` en dehors de `.claude/worktrees/` demande votre approbation avant d'entrer, car il déplace le répertoire de travail de la session et l'accès en écriture à cet emplacement. La création de nouveaux worktrees et les chemins sous `.claude/worktrees/` ne demandent pas. Avant v2.1.206, Claude entrait dans les chemins en dehors de `.claude/worktrees/` sans demander. À partir d'une session worktree, ou d'un sous-agent avec un répertoire de travail épinglé tel que [`isolation: worktree`](/docs/fr/sub-agents#supported-frontmatter-fields), seule la forme `path` est disponible et la cible doit être sous `.claude/worktrees/` du référentiel de la session | Oui |

32| `ExitPlanMode` | Présente un plan pour approbation et quitte le mode plan | Oui |32| `ExitPlanMode` | Présente un plan pour approbation et quitte le mode plan | Oui |

33| `ExitWorktree` | Quitte une session worktree et revient au répertoire d'origine. Non disponible pour les sous-agents qui s'exécutent déjà dans leur propre répertoire de travail, comme avec [`isolation: worktree`](/docs/fr/sub-agents#supported-frontmatter-fields) | Non |33| `ExitWorktree` | Quitte une session worktree et revient au répertoire d'origine. Non disponible pour les sous-agents qui s'exécutent déjà dans leur propre répertoire de travail, comme avec [`isolation: worktree`](/docs/fr/sub-agents#supported-frontmatter-fields) | Non |

34| `Glob` | Trouve des fichiers basés sur la correspondance de motifs. Consultez [Comportement de l'outil Glob](#glob-tool-behavior) | Non |34| `Glob` | Trouve des fichiers basés sur la correspondance de motifs. Absent par défaut sur macOS, Linux et WSL. Consultez [Comportement de l'outil Glob](#glob-tool-behavior) | Non |

35| `Grep` | Recherche des motifs dans le contenu des fichiers. Consultez [Comportement de l'outil Grep](#grep-tool-behavior) | Non |35| `Grep` | Recherche des motifs dans le contenu des fichiers. Absent par défaut sur macOS, Linux et WSL. Consultez [Comportement de l'outil Grep](#grep-tool-behavior) | Non |

36| `ListAgents` | Liste les agents que Claude peut contacter avec `SendMessage` : les sous-agents de la session, les [coéquipiers d'équipe d'agents](/docs/fr/agent-teams), vos autres sessions Claude Code locales, et, tandis que cette session est connectée à [Remote Control](/docs/fr/remote-control), vos sessions [Claude Code sur le web](/docs/fr/claude-code-on-the-web) et vos sessions Remote Control sur d'autres machines. Soutient la commande `/list-agents`. Consultez [messagerie inter-sessions](/docs/fr/cross-session-messaging). Nécessite Claude Code v2.1.224 ou ultérieur, et n'apparaît que dans les sessions où la [messagerie inter-sessions est activée](/docs/fr/cross-session-messaging#availability). Les lignes de coéquipiers et la première ligne affichant le nom de cette session nécessitent v2.1.239 ou ultérieur | Non |36| `ListAgents` | Liste les agents que Claude peut contacter avec `SendMessage` : les sous-agents de la session, les [coéquipiers d'équipe d'agents](/docs/fr/agent-teams), vos autres sessions Claude Code locales, et, tandis que cette session est connectée à [Remote Control](/docs/fr/remote-control), vos sessions [Claude Code sur le web](/docs/fr/claude-code-on-the-web) et vos sessions Remote Control sur d'autres machines. Soutient la commande `/list-agents`. Consultez [messagerie inter-sessions](/docs/fr/cross-session-messaging). Nécessite Claude Code v2.1.224 ou ultérieur, et n'apparaît que dans les sessions où la [messagerie inter-sessions est activée](/docs/fr/cross-session-messaging#availability). Les lignes de coéquipiers et la première ligne affichant le nom de cette session nécessitent v2.1.239 ou ultérieur | Non |

37| `ListMcpResourcesTool` | Liste les ressources exposées par les [serveurs MCP](/docs/fr/mcp) connectés | Non |37| `ListMcpResourcesTool` | Liste les ressources exposées par les [serveurs MCP](/docs/fr/mcp) connectés | Non |

38| `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. Consultez [Comportement de l'outil LSP](#lsp-tool-behavior) | Non |38| `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. Consultez [Comportement de l'outil LSP](#lsp-tool-behavior) | Non |


50| `SendUserFile` | Envoie les fichiers de la session vers vous avec une légende optionnelle, afin qu'un rapport généré, un diagramme, une capture d'écran ou un artefact construit atteigne votre appareil au lieu d'être seulement mentionné dans la transcription. À partir de v2.1.196, l'entrée `display` optionnelle contrôle la présentation : `render` ouvre le fichier en ligne dans le client, `attach` affiche une carte de téléchargement uniquement, et quand elle n'est pas définie, le client décide par type de fichier. Disponible quand un client [Remote Control](/docs/fr/remote-control) est connecté ou la session s'exécute dans un environnement cloud géré tel que [Claude Code sur le web](/docs/fr/claude-code-on-the-web). La livraison s'effectue via l'infrastructure hébergée par Anthropic, donc l'outil n'est pas disponible sur Amazon Bedrock, Google Cloud's Agent Platform, ou Microsoft Foundry | Non |50| `SendUserFile` | Envoie les fichiers de la session vers vous avec une légende optionnelle, afin qu'un rapport généré, un diagramme, une capture d'écran ou un artefact construit atteigne votre appareil au lieu d'être seulement mentionné dans la transcription. À partir de v2.1.196, l'entrée `display` optionnelle contrôle la présentation : `render` ouvre le fichier en ligne dans le client, `attach` affiche une carte de téléchargement uniquement, et quand elle n'est pas définie, le client décide par type de fichier. Disponible quand un client [Remote Control](/docs/fr/remote-control) est connecté ou la session s'exécute dans un environnement cloud géré tel que [Claude Code sur le web](/docs/fr/claude-code-on-the-web). La livraison s'effectue via l'infrastructure hébergée par Anthropic, donc l'outil n'est pas disponible sur Amazon Bedrock, Google Cloud's Agent Platform, ou Microsoft Foundry | Non |

51| `ShareOnboardingGuide` | Télécharge `ONBOARDING.md` et retourne un lien de partage que les coéquipiers peuvent ouvrir dans Claude Code. Appelé depuis `/team-onboarding` après que le guide soit écrit. Disponible pour les abonnés claude.ai sur les plans Pro, Max, Team et Enterprise | Oui |51| `ShareOnboardingGuide` | Télécharge `ONBOARDING.md` et retourne un lien de partage que les coéquipiers peuvent ouvrir dans Claude Code. Appelé depuis `/team-onboarding` après que le guide soit écrit. Disponible pour les abonnés claude.ai sur les plans Pro, Max, Team et Enterprise | Oui |

52| `Skill` | Exécute une [skill](/docs/fr/skills#control-who-invokes-a-skill) dans la conversation principale | Oui |52| `Skill` | Exécute une [skill](/docs/fr/skills#control-who-invokes-a-skill) dans la conversation principale | Oui |

53| `TaskCreate` | Crée une nouvelle tâche dans la liste des tâches. Claude Code la laisse de côté sur les modèles listés sous [Disponibilité de l'outil Task](#task-tool-availability) sauf si vous acceptez | Non |53| `TaskCreate` | Crée une nouvelle tâche dans la liste des tâches. Fourni par défaut uniquement sur les modèles listés sous [Disponibilité de l'outil Task](#task-tool-availability), et sur d'autres modèles quand vous acceptez | Non |

54| `TaskGet` | Récupère les détails complets d'une tâche spécifique. Claude Code la laisse de côté sur les modèles listés sous [Disponibilité de l'outil Task](#task-tool-availability) sauf si vous acceptez | Non |54| `TaskGet` | Récupère les détails complets d'une tâche spécifique. Fourni par défaut uniquement sur les modèles listés sous [Disponibilité de l'outil Task](#task-tool-availability), et sur d'autres modèles quand vous acceptez | Non |

55| `TaskList` | Liste toutes les tâches avec leur statut actuel. Claude Code la laisse de côté sur les modèles listés sous [Disponibilité de l'outil Task](#task-tool-availability) sauf si vous acceptez | Non |55| `TaskList` | Liste toutes les tâches avec leur statut actuel. Fourni par défaut uniquement sur les modèles listés sous [Disponibilité de l'outil Task](#task-tool-availability), et sur d'autres modèles quand vous acceptez | Non |

56| `TaskOutput` | Récupère la sortie d'une tâche en arrière-plan. Déprécié en faveur de `Read` sur le chemin du fichier de sortie de la tâche. Quand aucune tâche ne correspond à l'ID, l'erreur liste les agents d'arrière-plan en cours d'exécution par ID et description. Avant v2.1.203, l'erreur nommait seulement l'ID manquant | Non |56| `TaskOutput` | Récupère la sortie d'une tâche en arrière-plan. Déprécié en faveur de `Read` sur le chemin du fichier de sortie de la tâche. Quand aucune tâche ne correspond à l'ID, l'erreur liste les agents d'arrière-plan en cours d'exécution par ID et description. Avant v2.1.203, l'erreur nommait seulement l'ID manquant | Non |

57| `TaskStop` | Arrête une tâche d'arrière-plan en cours d'exécution par ID. Il accepte également un [coéquipier d'équipe d'agents](/docs/fr/agent-teams) ou un agent d'arrière-plan nommé par ID ou nom d'agent. Avant v2.1.198, il acceptait seulement un ID de tâche d'arrière-plan. Quand aucune tâche ne correspond à l'ID, l'erreur liste les agents d'arrière-plan en cours d'exécution par ID et description, y compris les agents qu'un autre agent a créés. Avant v2.1.203, l'erreur listait les coéquipiers et agents nommés en cours d'exécution mais pas les agents d'arrière-plan qu'un autre agent a créés, donc ceux-ci ne pouvaient pas être identifiés ou arrêtés à partir de la conversation principale | Non |57| `TaskStop` | Arrête une tâche d'arrière-plan en cours d'exécution par ID. Il accepte également un [coéquipier d'équipe d'agents](/docs/fr/agent-teams) ou un agent d'arrière-plan nommé par ID ou nom d'agent. Avant v2.1.198, il acceptait seulement un ID de tâche d'arrière-plan. Quand aucune tâche ne correspond à l'ID, l'erreur liste les agents d'arrière-plan en cours d'exécution par ID et description, y compris les agents qu'un autre agent a créés. Avant v2.1.203, l'erreur listait les coéquipiers et agents nommés en cours d'exécution mais pas les agents d'arrière-plan qu'un autre agent a créés, donc ceux-ci ne pouvaient pas être identifiés ou arrêtés à partir de la conversation principale | Non |

58| `TaskUpdate` | Met à jour le statut de la tâche, les dépendances, les détails, ou supprime les tâches. Claude Code la laisse de côté sur les modèles listés sous [Disponibilité de l'outil Task](#task-tool-availability) sauf si vous acceptez | Non |58| `TaskUpdate` | Met à jour le statut de la tâche, les dépendances, les détails, ou supprime les tâches. Fourni par défaut uniquement sur les modèles listés sous [Disponibilité de l'outil Task](#task-tool-availability), et sur d'autres modèles quand vous acceptez | Non |

59| `TodoWrite` | Gère la liste de contrôle des tâches de la session. Désactivé par défaut en faveur de `TaskCreate`, `TaskGet`, `TaskList` et `TaskUpdate`. Définissez `CLAUDE_CODE_ENABLE_TASKS=0` pour le réactiver dans les [sessions qui ont les outils de suivi des tâches](#task-tool-availability) | Non |59| `TodoWrite` | Gère la liste de contrôle des tâches de la session. Désactivé par défaut en faveur de `TaskCreate`, `TaskGet`, `TaskList` et `TaskUpdate`. Définissez `CLAUDE_CODE_ENABLE_TASKS=0` pour le réactiver dans les [sessions qui ont les outils de suivi des tâches](#task-tool-availability) | Non |

60| `ToolSearch` | Recherche et charge les outils différés quand la [recherche d'outils](/docs/fr/mcp#scale-with-mcp-tool-search) est activée | Non |60| `ToolSearch` | Recherche et charge les outils différés quand la [recherche d'outils](/docs/fr/mcp#scale-with-mcp-tool-search) est activée | Non |

61| `WaitForMcpServers` | Attend un ou plusieurs [serveurs MCP](/docs/fr/mcp) qui se connectent toujours en arrière-plan, afin qu'une demande puisse utiliser leurs outils sans redémarrer la session. Claude l'appelle quand un serveur nécessaire n'est pas encore connecté. N'apparaît que quand la [recherche d'outils](/docs/fr/mcp#scale-with-mcp-tool-search) est désactivée, car `ToolSearch` gère l'attente quand elle est activée | Non |61| `WaitForMcpServers` | Attend un ou plusieurs [serveurs MCP](/docs/fr/mcp) qui se connectent toujours en arrière-plan, afin qu'une demande puisse utiliser leurs outils sans redémarrer la session. Claude l'appelle quand un serveur nécessaire n'est pas encore connecté. N'apparaît que quand la [recherche d'outils](/docs/fr/mcp#scale-with-mcp-tool-search) est désactivée, car `ToolSearch` gère l'attente quand elle est activée | Non |


73* dans [`permissions.allow`](/docs/fr/settings-reference#permissions-allow) et [`permissions.deny`](/docs/fr/settings-reference#permissions-deny) dans les paramètres, et l'interface `/permissions`73* dans [`permissions.allow`](/docs/fr/settings-reference#permissions-allow) et [`permissions.deny`](/docs/fr/settings-reference#permissions-deny) dans les paramètres, et l'interface `/permissions`

74* dans les drapeaux CLI [`--allowedTools` et `--disallowedTools`](/docs/fr/cli-reference)74* dans les drapeaux CLI [`--allowedTools` et `--disallowedTools`](/docs/fr/cli-reference)

75* dans les options [`allowedTools` et `disallowedTools`](/docs/fr/agent-sdk/permissions#allow-and-deny-rules) du SDK Agent75* dans les options [`allowedTools` et `disallowedTools`](/docs/fr/agent-sdk/permissions#allow-and-deny-rules) du SDK Agent

76* dans le frontmatter [`tools` ou `disallowedTools`](/docs/fr/sub-agents#supported-frontmatter-fields) d'un subagent

77* dans le frontmatter [`allowed-tools`](/docs/fr/skills#frontmatter-reference) d'une skill76* dans le frontmatter [`allowed-tools`](/docs/fr/skills#frontmatter-reference) d'une skill

78* dans la condition [`if`](/docs/fr/hooks-guide#filter-by-tool-name-and-arguments-with-the-if-field) d'un hook77* dans la condition [`if`](/docs/fr/hooks-guide#filter-by-tool-name-and-arguments-with-the-if-field) d'un hook

79 78 


197 196 

198Une commande qu'un [sous-agent au premier plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) a démarrée s'arrête quand ce sous-agent donne sa réponse finale. Une commande que la conversation principale ou un sous-agent en arrière-plan a démarrée continue à s'exécuter après une réponse finale. En mode non interactif avec l'indicateur `-p`, [les commandes en arrière-plan se terminent peu après le résultat final de l'exécution](/docs/fr/headless#background-tasks-at-exit).197Une commande qu'un [sous-agent au premier plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) a démarrée s'arrête quand ce sous-agent donne sa réponse finale. Une commande que la conversation principale ou un sous-agent en arrière-plan a démarrée continue à s'exécuter après une réponse finale. En mode non interactif avec l'indicateur `-p`, [les commandes en arrière-plan se terminent peu après le résultat final de l'exécution](/docs/fr/headless#background-tasks-at-exit).

199 198 

200Quand une commande atteint son délai d'attente sans se terminer, Claude Code la déplace en arrière-plan au lieu de l'arrêter. Claude continue à travailler pendant que la commande continue. Claude Code applique les mêmes règles de durée de vie à une commande déplacée qu'à toute autre commande en arrière-plan, donc elle arrête toujours la commande d'un sous-agent au premier plan à la réponse finale de ce sous-agent. La définition de [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1`](/docs/fr/env-vars#variables) désactive la mise en arrière-plan automatique ainsi que le reste de la fonctionnalité de tâche en arrière-plan.199Quand une commande atteint son délai d'attente sans se terminer, Claude Code la déplace en arrière-plan au lieu de l'arrêter, sauf si la commande commence par `sleep`. Claude continue à travailler pendant que la commande continue. Claude Code applique les mêmes règles de durée de vie à une commande déplacée qu'à toute autre commande en arrière-plan, donc elle arrête toujours la commande d'un sous-agent au premier plan à la réponse finale de ce sous-agent. La définition de [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1`](/docs/fr/env-vars#variables) désactive la mise en arrière-plan automatique ainsi que le reste de la fonctionnalité de tâche en arrière-plan.

201 

202Claude Code ne met jamais en arrière-plan automatiquement trois types de commande. Il les arrête au délai d'attente à la place :

203 

204* Une commande qui commence par `sleep`.

205* Une commande qui exécute `git` n'importe où dedans.

206* Une commande composée que Claude Code ne peut pas analyser complètement en commandes simples. Claude Code traite une expansion de paramètre telle que `${VAR}` comme non analysable, donc il arrête une commande qui se termine par `; exit "${PIPESTATUS[0]}"` au délai d'attente même quand le reste de cette commande s'analyse.

207 200 

208Le résultat d'une commande déplacée en arrière-plan indique ce qui s'est passé :201Le résultat d'une commande déplacée en arrière-plan indique ce qui s'est passé :

209 202 


292 Comportement de l'outil Glob285 Comportement de l'outil Glob

293</h2>286</h2>

294 287 

295L'outil Glob trouve des fichiers par motif de nom. Il supporte la syntaxe glob standard incluant `**` pour la correspondance de répertoire récursive :288L'outil Glob trouve des fichiers par motif de nom. Sur Windows, il fait partie de l'ensemble d'outils par défaut. Sur macOS, Linux et WSL, Claude Code laisse Glob et [Grep](#grep-tool-behavior) en dehors de l'ensemble d'outils par défaut, et Claude effectue des recherches avec `find` et `grep` via l'outil Bash à la place. Dans le shell de Claude, ces deux commandes exécutent des versions intégrées de `bfs` et `ugrep`, et les recherches atteignent vos hooks et règles de permission en tant qu'appels `Bash`.

289 

290Sur macOS, Linux et WSL, vous récupérez les outils Glob et Grep dans ces cas :

291 

292* Vous nommez `Glob` ou `Grep` dans [`--tools` ou `--allowedTools`](/docs/fr/cli-reference#cli-flags) lorsque vous démarrez la session, ou dans les options équivalentes du [SDK Agent](/docs/fr/agent-sdk/overview). Avec `--tools`, vous obtenez ceux que vous listez, et nommer l'un ou l'autre outil dans `--allowedTools` restaure les deux. Une règle d'autorisation dans un fichier de paramètres n'a pas cet effet.

293* Une [règle de refus](/docs/fr/permissions#match-all-uses-of-a-tool) de permissions, l'indicateur `--disallowedTools`, ou [`--restricted`](/docs/fr/cli-reference#cli-flags) supprime `Bash` de la session.

294* Un [sous-agent](/docs/fr/sub-agents#available-tools) liste `Glob` ou `Grep` dans son champ `tools` et laisse de côté `Bash`. Les outils listés reviennent pour ce sous-agent uniquement, ou pour la session entière lorsqu'il s'exécute en tant qu'agent de session principal via [`--agent`](/docs/fr/sub-agents#invoke-subagents-explicitly) ou le paramètre `agent`.

295 

296Glob supporte la syntaxe glob standard incluant `**` pour la correspondance de répertoire récursive :

296 297 

297* `**/*.js` correspond à tous les fichiers `.js` à n'importe quelle profondeur298* `**/*.js` correspond à tous les fichiers `.js` à n'importe quelle profondeur

298* `src/**/*.ts` correspond à tous les fichiers `.ts` sous `src/`299* `src/**/*.ts` correspond à tous les fichiers `.ts` sous `src/`


310 Comportement de l'outil Grep311 Comportement de l'outil Grep

311</h2>312</h2>

312 313 

313L'outil Grep recherche des motifs dans le contenu des fichiers. Où [Glob](#glob-tool-behavior) trouve des fichiers par nom, Grep trouve des lignes à l'intérieur d'eux.314L'outil Grep recherche des motifs dans le contenu des fichiers. Où [Glob](#glob-tool-behavior) trouve des fichiers par nom, Grep trouve des lignes à l'intérieur d'eux. Sur macOS, Linux et WSL, Grep est absent par défaut dans les mêmes conditions que Glob. Voir [Comportement de l'outil Glob](#glob-tool-behavior) pour savoir quand les deux outils sont disponibles.

314 315 

315Grep est construit sur [ripgrep](https://github.com/BurntSushi/ripgrep) et utilise la syntaxe regex de ripgrep, pas grep POSIX. Les motifs qui incluent des métacaractères regex ont besoin d'échappement. Par exemple, trouver `interface{}` dans le code Go prend le motif `interface\{\}`.316Grep est construit sur [ripgrep](https://github.com/BurntSushi/ripgrep) et utilise la syntaxe regex de ripgrep, pas grep POSIX. Les motifs qui incluent des métacaractères regex ont besoin d'échappement. Par exemple, trouver `interface{}` dans le code Go prend le motif `interface\{\}`.

316 317 


581 Disponibilité de l'outil Task582 Disponibilité de l'outil Task

582</h2>583</h2>

583 584 

584Dans Claude Code v2.1.233 et versions ultérieures, les outils suivants ne sont pas disponibles sur Opus 4.8, Sonnet 5, Fable 5, Mythos 5 ou versions ultérieures de ces familles sauf si vous les activez explicitement : `TodoWrite`, `TaskCreate`, `TaskGet`, `TaskUpdate` et `TaskList`. Ces modèles gardent une trace du travail multi-étapes sans liste de contrôle écrite, et les définitions et rappels des outils consomment du contexte, donc Claude Code les exclut. Sans eux, Claude n'ajoute rien à la [liste des tâches](/docs/fr/interactive-mode#task-list) pendant qu'il travaille. Sur tout autre modèle, comme Opus 4.7, Claude Code fournit les quatre outils Task par défaut et `TodoWrite` uniquement lorsque vous définissez [`CLAUDE_CODE_ENABLE_TASKS=0`](/docs/fr/env-vars).585Les outils de suivi des tâches, `TaskCreate`, `TaskGet`, `TaskUpdate`, `TaskList` et `TodoWrite`, sont disponibles par défaut uniquement sur les modèles Claude 3.x, Opus 4 à 4.7, Sonnet 4 à 4.6 et Haiku 4.5. Partout où les outils sont disponibles, vous obtenez les quatre outils Task, ou `TodoWrite` uniquement lorsque vous définissez [`CLAUDE_CODE_ENABLE_TASKS=0`](/docs/fr/env-vars).

586 

587Sur tous les autres modèles, Claude Code exclut les outils sauf si vous les activez explicitement. Il en va de même pour un ID de modèle que Claude Code ne reconnaît pas, comme un nom de modèle personnalisé servi via une [passerelle LLM](/docs/fr/llm-gateway). Sur les modèles plus récents, Claude garde une trace du travail multi-étapes sans liste de contrôle écrite, et les définitions et rappels des outils consomment du contexte. Sans les outils, Claude n'ajoute rien à la [liste des tâches](/docs/fr/interactive-mode#task-list) pendant qu'il travaille.

585 588 

586Si vous souhaitez utiliser ces outils sur l'un des modèles listés de toute façon, faites l'une des choses suivantes :589Si vous souhaitez utiliser ces outils sur un modèle qui ne les possède pas par défaut, faites l'une des choses suivantes :

587 590 

588* Exportez [`CLAUDE_CODE_ENABLE_TODO_TOOLS=1`](/docs/fr/env-vars) avant de démarrer Claude Code, par exemple `CLAUDE_CODE_ENABLE_TODO_TOOLS=1 claude`. Claude Code fournit alors les mêmes outils sur chaque modèle et chaque fournisseur591* Exportez [`CLAUDE_CODE_ENABLE_TODO_TOOLS=1`](/docs/fr/env-vars) avant de démarrer Claude Code, par exemple `CLAUDE_CODE_ENABLE_TODO_TOOLS=1 claude`. Claude Code fournit alors les mêmes outils sur chaque modèle et chaque fournisseur

589* Nommez l'un des outils dans [`--allowedTools`](/docs/fr/cli-reference#cli-flags), par exemple `claude --allowedTools TaskCreate`592* Nommez l'un des outils dans [`--allowedTools`](/docs/fr/cli-reference#cli-flags), par exemple `claude --allowedTools TaskCreate`


594 597 

595Claude Code donne à un sous-agent les outils uniquement lorsque votre session les possède, même lorsque le sous-agent exécute un modèle différent. Un coéquipier [équipe d'agents](/docs/fr/agent-teams) en processus suit votre session de la même manière, tandis qu'un coéquipier dans son propre [volet divisé](/docs/fr/agent-teams#choose-a-display-mode) s'exécute en tant que processus Claude Code séparé, donc son propre modèle décide. Sans les outils Task, un agent coordonne avec son équipe par le biais de messages au lieu de la [liste des tâches partagée](/docs/fr/agent-teams#assign-and-claim-tasks).598Claude Code donne à un sous-agent les outils uniquement lorsque votre session les possède, même lorsque le sous-agent exécute un modèle différent. Un coéquipier [équipe d'agents](/docs/fr/agent-teams) en processus suit votre session de la même manière, tandis qu'un coéquipier dans son propre [volet divisé](/docs/fr/agent-teams#choose-a-display-mode) s'exécute en tant que processus Claude Code séparé, donc son propre modèle décide. Sans les outils Task, un agent coordonne avec son équipe par le biais de messages au lieu de la [liste des tâches partagée](/docs/fr/agent-teams#assign-and-claim-tasks).

596 599 

600L'ensemble par défaut décrit ici s'applique dans Claude Code v2.1.268 et versions ultérieures.

601 

597<h2 id="webfetch-tool-behavior">602<h2 id="webfetch-tool-behavior">

598 Comportement de l'outil WebFetch603 Comportement de l'outil WebFetch

599</h2>604</h2>


607* Les URL HTTP sont automatiquement mises à niveau vers HTTPS.612* Les URL HTTP sont automatiquement mises à niveau vers HTTPS.

608* Les grandes pages sont tronquées à une limite de caractères fixe avant le traitement.613* Les grandes pages sont tronquées à une limite de caractères fixe avant le traitement.

609* WebFetch met en cache chaque réponse pendant 15 minutes par défaut, donc les récupérations répétées de la même URL reviennent rapidement. Sur Claude Code v2.1.233 ou ultérieur, définissez [`CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS`](/docs/fr/env-vars#variables) pour modifier la durée pendant laquelle WebFetch conserve chaque réponse.614* WebFetch met en cache chaque réponse pendant 15 minutes par défaut, donc les récupérations répétées de la même URL reviennent rapidement. Sur Claude Code v2.1.233 ou ultérieur, définissez [`CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS`](/docs/fr/env-vars#variables) pour modifier la durée pendant laquelle WebFetch conserve chaque réponse.

615* Une page qui n'a pas terminé le téléchargement dans les cinq minutes, y compris les redirections que WebFetch suit, échoue avec une erreur de délai. Sur Claude Code v2.1.268 ou ultérieur, définissez [`CLAUDE_CODE_WEBFETCH_DEADLINE_MS`](/docs/fr/env-vars#variables) pour modifier la limite, ou à `0` pour la supprimer.

610* Lorsqu'une URL redirige vers un hôte différent, WebFetch retourne un résultat texte qui nomme l'URL d'origine et la cible de redirection au lieu de la suivre. Claude récupère ensuite la nouvelle URL avec un deuxième appel WebFetch.616* Lorsqu'une URL redirige vers un hôte différent, WebFetch retourne un résultat texte qui nomme l'URL d'origine et la cible de redirection au lieu de la suivre. Claude récupère ensuite la nouvelle URL avec un deuxième appel WebFetch.

611* Lorsque l'étape d'extraction atteint une API surchargée, Claude Code la réessaie avec backoff ; une récupération qui échoue toujours retourne un résultat d'erreur. Avant v2.1.212, le texte d'erreur API pouvait atteindre Claude comme s'il s'agissait du contenu de la page extraite.617* Lorsque l'étape d'extraction atteint une API surchargée, Claude Code la réessaie avec backoff ; une récupération qui échoue toujours retourne un résultat d'erreur. Avant v2.1.212, le texte d'erreur API pouvait atteindre Claude comme s'il s'agissait du contenu de la page extraite.

612 618 

Details

110 110 

111Pour laisser une commande canalisée atteindre le presse-papiers directement à la place, ajoutez `pbcopy *`, `wl-copy *` ou `xclip *` à [`excludedCommands`](/docs/fr/settings-reference#sandbox-excludedcommands) pour que la commande s'exécute en dehors du sandbox.111Pour laisser une commande canalisée atteindre le presse-papiers directement à la place, ajoutez `pbcopy *`, `wl-copy *` ou `xclip *` à [`excludedCommands`](/docs/fr/settings-reference#sandbox-excludedcommands) pour que la commande s'exécute en dehors du sandbox.

112 112 

113<h3 id="copied-text-doesn’t-reach-your-local-clipboard-over-ssh">

114 Texte copié n'atteint pas votre presse-papiers local sur SSH

115</h3>

116 

117Quand Claude Code s'exécute sur une machine distante via SSH, il ne peut pas exécuter un outil de presse-papiers sur votre machine locale. En dehors de tmux, quand vous sélectionnez du texte dans le [rendu en plein écran](/docs/fr/fullscreen) ou exécutez `/copy`, Claude Code envoie le texte à votre terminal en tant que séquence d'échappement OSC 52 à la place. Votre terminal décide s'il faut le mettre sur votre presse-papiers. `/copy` signale `Copied to clipboard` que le texte soit arrivé ou non, et en dehors de tmux l'avis de sélection lit `sent N chars via OSC 52`.

118 

119Certains terminaux n'agissent pas sur OSC 52. iTerm2 l'ignore jusqu'à ce que vous activiez **Settings > General > Selection > Applications in terminal may access clipboard**, et macOS Terminal.app ne le supporte pas.

120 

121Pour obtenir le texte sans OSC 52 :

122 

123* Maintenez la touche de sélection native de votre terminal pendant que vous faites glisser, puis copiez avec le raccourci habituel de votre terminal, tel que `Cmd+C`. La touche est `Fn` dans Terminal.app et `Option` dans iTerm2. [Garder la sélection de texte native](/docs/fr/fullscreen#keep-native-text-selection) la liste pour les autres terminaux.

124* Définissez [`CLAUDE_CODE_DISABLE_MOUSE=1`](/docs/fr/env-vars) sur la machine distante pour que votre terminal gère la sélection pour la session entière.

125 

113<h3 id="search-and-discovery-issues">126<h3 id="search-and-discovery-issues">

114 Problèmes de recherche et de découverte127 Problèmes de recherche et de découverte

115</h3>128</h3>

ultrareview.md +1 −1

Details

171| Drapeau | Description |171| Drapeau | Description |

172| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |172| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

173| `--json` | Imprimez la charge utile `bugs.json` brute au lieu des constatations formatées |173| `--json` | Imprimez la charge utile `bugs.json` brute au lieu des constatations formatées |

174| `--timeout <minutes>` | Nombre maximum de minutes à attendre pour que la révision se termine. Par défaut 30 |174| `--timeout <minutes>` | Nombre maximum de minutes à attendre pour que la révision se termine. Par défaut 45 |

175| `--post` | [Publiez les constatations terminées](#post-findings-to-the-pull-request) sur la demande de fusion sous forme d'un commentaire simple depuis votre compte GitHub. Fonctionne sur les cibles de demande de fusion `github.com` ; sur d'autres cibles, Claude Code ignore le drapeau et le signale. Nécessite Claude Code v2.1.227 ou ultérieur |175| `--post` | [Publiez les constatations terminées](#post-findings-to-the-pull-request) sur la demande de fusion sous forme d'un commentaire simple depuis votre compte GitHub. Fonctionne sur les cibles de demande de fusion `github.com` ; sur d'autres cibles, Claude Code ignore le drapeau et le signale. Nécessite Claude Code v2.1.227 ou ultérieur |

176| `--no-post` | Ne publiez pas les constatations. C'est le comportement par défaut, et si vous transmettez les deux drapeaux, Claude Code ne publie pas. Nécessite Claude Code v2.1.227 ou ultérieur |176| `--no-post` | Ne publiez pas les constatations. C'est le comportement par défaut, et si vous transmettez les deux drapeaux, Claude Code ne publie pas. Nécessite Claude Code v2.1.227 ou ultérieur |

177 177 

vs-code.md +54 −15

Details

56 56 

57 Autres façons d'ouvrir Claude Code :57 Autres façons d'ouvrir Claude Code :

58 58 

59 * **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é.59 * **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 à votre [emplacement préféré](#extension-settings), ou démarrez-en une nouvelle. Cette icône est toujours visible dans la barre d'activité.

60 * **Palette de commandes** : `Cmd+Shift+P` (Mac) ou `Ctrl+Shift+P` (Windows/Linux), tapez « Claude Code », et sélectionnez une option comme « Open in New Tab »60 * **Palette de commandes** : `Cmd+Shift+P` (Mac) ou `Ctrl+Shift+P` (Windows/Linux), tapez « Claude Code », et sélectionnez une option comme « Open in New Tab »

61 * **Barre d'état** : si vous avez défini [`preferredLocation`](#extension-settings) sur `sidebar`, ou ouvert Claude avec **Claude Code: Open in Side Bar**, cliquez sur **✱ Claude Code** dans le coin inférieur droit de la fenêtre. Cela fonctionne même quand aucun fichier n'est ouvert.61 * **Barre d'état** : si vous avez défini [`preferredLocation`](#extension-settings) sur `sidebar`, ou ouvert Claude avec **Claude Code: Open in Side Bar**, cliquez sur **✱ Claude Code** dans le coin inférieur droit de la fenêtre. Cela fonctionne même quand aucun fichier n'est ouvert.

62 62 


110 * **Manual** : Claude demande la permission avant les modifications de fichiers et la plupart des commandes shell.110 * **Manual** : Claude demande la permission avant les modifications de fichiers et la plupart des commandes shell.

111 * **Plan** : 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 votre avis avant que Claude ne commence.111 * **Plan** : 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 votre avis avant que Claude ne commence.

112 * **Edit automatically** : Claude apporte des modifications sans demander.112 * **Edit automatically** : Claude apporte des modifications sans demander.

113* **Model** : sélectionnez **Switch model…** dans le menu de commande pour changer de modèle en cours de session. Vous pouvez également cliquer sur le nom du modèle en bas de la boîte de saisie pour ouvrir le même sélecteur. Le sélecteur inclut une page **More models** avec les modèles qui ne figurent pas sur la liste principale. Lorsque le modèle actuel prend en charge les [niveaux d'effort](/docs/fr/model-config#adjust-effort-level), le sélecteur affiche également une ligne **Effort**. Le bouton du nom du modèle, la page **More models** et la ligne **Effort** nécessitent Claude Code v2.1.257 ou version ultérieure.113* **Model** : sélectionnez **Switch model…** dans le menu de commande pour changer de modèle en cours de session. Vous pouvez également cliquer sur le nom du modèle en bas de la boîte de saisie pour ouvrir le même sélecteur. Lorsque le modèle actuel prend en charge les [niveaux d'effort](/docs/fr/model-config#adjust-effort-level), le sélecteur affiche également une ligne **Effort** et le bouton du nom du modèle affiche le niveau sélectionné. Le bouton du nom du modèle et la ligne **Effort** nécessitent Claude Code v2.1.257 ou version ultérieure.

114* **Command menu** : cliquez sur `/` ou tapez `/` pour ouvrir le menu de commande. Les options incluent l'attachement de fichiers, le changement de modèle et l'activation de la réflexion étendue. La section Customize fournit l'accès aux serveurs MCP, aux slash commands, aux styles de sortie, aux hooks, à la mémoire, aux permissions et aux plugins. Les éléments avec une icône de terminal s'ouvrent dans le terminal intégré.114* **Command menu** : cliquez sur `/` ou tapez `/` pour ouvrir le menu de commande. Les options incluent l'attachement de fichiers, le changement de modèle et l'activation de la réflexion étendue. La section Customize fournit l'accès aux serveurs MCP, aux slash commands, aux styles de sortie, aux hooks, à la mémoire, aux permissions et aux plugins. Les éléments avec une icône de terminal s'ouvrent dans le terminal intégré.

115 * Pour parcourir les commandes telles que `/usage` ou [`/remote-control`](/docs/fr/remote-control), sélectionnez **Slash commands** dans la section Customize. Une boîte de dialogue les répertorie avec une zone de filtre. Choisissez-en une pour l'exécuter. Taper `/` dans la boîte de saisie suggère toujours les commandes en ligne. Nécessite Claude Code v2.1.257 ou version ultérieure.115 * Pour parcourir les commandes telles que `/usage` ou [`/remote-control`](/docs/fr/remote-control), sélectionnez **Slash commands** dans la section Customize. Une boîte de dialogue les répertorie avec une zone de filtre. Choisissez-en une pour l'exécuter. Taper `/` dans la boîte de saisie suggère toujours les commandes en ligne. Nécessite Claude Code v2.1.257 ou version ultérieure.

116 * Sélectionnez **Output styles** dans la section Customize pour choisir un [style de sortie](/docs/fr/output-styles), y compris vos styles personnalisés. Nécessite Claude Code v2.1.257 ou version ultérieure.116 * Sélectionnez **Output styles** dans la section Customize pour choisir un [style de sortie](/docs/fr/output-styles), y compris vos styles personnalisés. Nécessite Claude Code v2.1.257 ou version ultérieure.

117 

118 Pour créer un style personnalisé à la place, sélectionnez **Build a custom style** dans le menu **Output styles**. Claude Code écrit le [fichier de style](/docs/fr/output-styles#create-a-custom-output-style) pour vous au niveau du projet ou de l'utilisateur. Nécessite Claude Code v2.1.261 ou version ultérieure.

117 * La section Settings inclut **Enable Remote Control for all sessions**, qui définit [`remoteControlAtStartup`](/docs/fr/settings-reference#remotecontrolatstartup) pour contrôler si les [nouvelles sessions interactives se connectent à Remote Control automatiquement](/docs/fr/remote-control#enable-remote-control-for-all-sessions). Nécessite Claude Code v2.1.203 ou version ultérieure.119 * La section Settings inclut **Enable Remote Control for all sessions**, qui définit [`remoteControlAtStartup`](/docs/fr/settings-reference#remotecontrolatstartup) pour contrôler si les [nouvelles sessions interactives se connectent à Remote Control automatiquement](/docs/fr/remote-control#enable-remote-control-for-all-sessions). Nécessite Claude Code v2.1.203 ou version ultérieure.

118 120 

119 Lorsque vous basculez le commutateur, la modification s'applique aux sessions déjà ouvertes dans VS Code, pas seulement aux sessions que vous démarrez par la suite. Si vous le désactivez, les sessions ouvertes se déconnectent. Avant la v2.1.257, le commutateur s'appliquait uniquement aux sessions démarrées après la modification.121 Lorsque vous basculez le commutateur activé ou désactivé dans une fenêtre VS Code, la modification s'applique aux sessions déjà ouvertes dans cette fenêtre VS Code, pas seulement aux sessions que vous démarrez par la suite. Si vous le désactivez, les sessions ouvertes se déconnectent. Avec Claude Code v2.1.261 ou version ultérieure, la modification atteint également les sessions ouvertes dans vos autres fenêtres VS Code.

120 * La section Settings inclut également **Focus view**, qui masque les appels d'outils, les résultats d'outils et la réflexion derrière des lignes extensibles, laissant vos invites et les réponses de Claude. La dernière liste de tâches de Claude reste visible, tout comme le texte d'une question en attente que Claude pose ; cela nécessite Claude Code v2.1.225 ou version ultérieure. Basculez-le là, avec `Ctrl+Option+F` (Mac) / `Ctrl+Alt+F` (Windows/Linux), ou depuis la Palette de commandes avec **Claude Code: Toggle Focus view**. La modification s'applique à chaque session ouverte et persiste entre les sessions. Nécessite Claude Code v2.1.221 ou version ultérieure.122 * La section Settings inclut également **Focus view**, qui masque les appels d'outils, les résultats d'outils et la réflexion derrière des lignes extensibles, laissant vos invites et les réponses de Claude. La dernière liste de tâches de Claude reste visible, tout comme le texte d'une question en attente que Claude pose ; cela nécessite Claude Code v2.1.225 ou version ultérieure. Basculez-le là, avec `Ctrl+Option+F` (Mac) / `Ctrl+Alt+F` (Windows/Linux), ou depuis la Palette de commandes avec **Claude Code: Toggle Focus view**. La modification s'applique à chaque session ouverte et persiste entre les sessions. Nécessite Claude Code v2.1.221 ou version ultérieure.

121 * Pour signaler un bogue, cliquez sur **Report a problem** en bas du menu, ou tapez `/bug` ou `/feedback` avec une description facultative qui préremplira le rapport. Lorsque vous soumettez le rapport et que vous êtes connecté à Anthropic sur une connexion propriétaire, Claude Code l'envoie à Anthropic. Sur un fournisseur tiers, ou sans identifiants Anthropic, la boîte de dialogue s'ouvre toujours, mais la soumission affiche une erreur et n'envoie rien : contrairement au `/bug` de la CLI, l'extension n'écrit pas d'archive locale. Nécessite Claude Code v2.1.229 ou version ultérieure.123 * Pour signaler un bogue, cliquez sur **Report a problem** en bas du menu, ou tapez `/bug` ou `/feedback` avec une description facultative qui préremplira le rapport. Lorsque vous soumettez le rapport et que vous êtes connecté à Anthropic sur une connexion propriétaire, Claude Code l'envoie à Anthropic. Sur un fournisseur tiers, ou sans identifiants Anthropic, la boîte de dialogue s'ouvre toujours, mais la soumission affiche une erreur et n'envoie rien : contrairement au `/bug` de la CLI, l'extension n'écrit pas d'archive locale. Nécessite Claude Code v2.1.229 ou version ultérieure.

122* **Side questions** : tapez `/btw` suivi d'une question pour poser une question sur votre session [sans l'ajouter à la conversation](/docs/fr/interactive-mode#side-questions-with-%2Fbtw). La réponse s'ouvre dans un panneau à côté du chat, où vous pouvez poser des questions de suivi. Le fil persiste lors des rechargements de fenêtre. Claude Code conserve les 20 derniers échanges et expire les fils stockés selon le calendrier [`cleanupPeriodDays`](/docs/fr/settings-reference#cleanupperioddays), tant que Claude Code peut [déterminer en toute sécurité la période de rétention](/docs/fr/claude-directory#cleaned-up-automatically). Pour effacer un fil, cliquez sur l'icône de corbeille dans le panneau. Nécessite Claude Code v2.1.227 ou version ultérieure.124* **Side questions** : tapez `/btw` suivi d'une question pour poser une question sur votre session [sans l'ajouter à la conversation](/docs/fr/interactive-mode#side-questions-with-%2Fbtw). La réponse s'ouvre dans un panneau à côté du chat, où vous pouvez poser des questions de suivi. Le fil persiste lors des rechargements de fenêtre. Claude Code conserve les 20 derniers échanges et expire les fils stockés selon le calendrier [`cleanupPeriodDays`](/docs/fr/settings-reference#cleanupperioddays), tant que Claude Code peut [déterminer en toute sécurité la période de rétention](/docs/fr/claude-directory#cleaned-up-automatically). Pour effacer un fil, cliquez sur l'icône de corbeille dans le panneau. Nécessite Claude Code v2.1.227 ou version ultérieure.


139 141 

140Lorsque vous sélectionnez du texte dans l'éditeur, Claude peut voir votre code en surbrillance automatiquement. Le pied de page de la boîte de saisie affiche le nombre de lignes sélectionnées. Appuyez sur `Option+K` (Mac) / `Alt+K` (Windows/Linux) pour insérer une mention @-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 barre oblique signifie que la sélection est masquée à Claude.142Lorsque vous sélectionnez du texte dans l'éditeur, Claude peut voir votre code en surbrillance automatiquement. Le pied de page de la boîte de saisie affiche le nombre de lignes sélectionnées. Appuyez sur `Option+K` (Mac) / `Alt+K` (Windows/Linux) pour insérer une mention @-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 barre oblique signifie que la sélection est masquée à Claude.

141 143 

142Vous pouvez également maintenir `Shift` enfoncé tout en faisant glisser des fichiers dans la boîte 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.144Pour attacher une image, collez-la depuis votre presse-papiers dans la boîte de saisie. Vous pouvez également maintenir `Shift` enfoncé tout en faisant glisser des fichiers dans la boîte 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.

143 145 

144<h3 id="resume-past-conversations">146<h3 id="resume-past-conversations">

145 Reprendre les conversations passées147 Reprendre les conversations passées

146</h3>148</h3>

147 149 

148Cliquez sur le bouton **Session history** en haut du panneau Claude Code pour accéder à votre historique de conversation. Vous pouvez rechercher par mot-clé ou parcourir par heure. Cliquez sur n'importe quelle conversation pour la reprendre avec l'historique complet des messages. Pour plus d'informations sur la reprise des sessions, consultez [Manage sessions](/docs/fr/sessions).150Cliquez sur le bouton **Session history** en haut du panneau Claude Code pour accéder à votre historique de conversation. Vous pouvez rechercher par mot-clé ou parcourir par heure.

151 

152Cliquez sur n'importe quelle conversation pour la reprendre avec l'historique complet des messages. Si la conversation est déjà ouverte dans un autre onglet de la fenêtre actuelle, cliquer dessus bascule vers cet onglet. Pour plus d'informations sur la reprise des sessions, consultez [Manage sessions](/docs/fr/sessions).

153 

154* **Session titles** : les nouvelles sessions reçoivent des titres générés par l'IA en fonction de votre premier message.

155* **Rename and archive** : survolez une session pour révéler ces actions. Renommez-la pour lui donner un titre descriptif, ou archivez-la pour la déplacer vers le groupe **Archived sessions** en bas de la liste.

149 156 

150Les 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 d'archivage : renommez-la pour lui donner un titre descriptif, ou archivez-la pour la déplacer vers le groupe **Archived sessions** en bas de la liste.157Par défaut, une session sans activité pendant 14 jours se déplace vers **Archived sessions** automatiquement, sauf si elle est ouverte, non lue, ou dans un [groupe](#organize-sessions-into-groups). L'archivage automatique nécessite Claude Code v2.1.265 ou version ultérieure. Pour modifier la période ou la désactiver, ouvrez le [paramètre Archive Inactive Sessions](vscode://settings/claudeCode.archiveInactiveSessions) et sélectionnez un nombre de jours ou **Never**.

151 158 

152Pour restaurer une session archivée, développez **Archived sessions** et cliquez sur **Unarchive session**. Avant la v2.1.257, l'action était **Delete session**, qui masquait une session sans aucun moyen de la restaurer. Les sessions que vous avez supprimées apparaissent alors sous **Archived sessions** après la mise à niveau.159Pour restaurer une session archivée, développez **Archived sessions** et cliquez sur **Unarchive session**. Avant la v2.1.257, l'action était **Delete session**, qui masquait une session sans aucun moyen de la restaurer. Les sessions que vous avez supprimées apparaissent alors sous **Archived sessions** après la mise à niveau.

153 160 


184 Vérifier le compte et l'utilisation191 Vérifier le compte et l'utilisation

185</h3>192</h3>

186 193 

187Exécutez `/usage` pour ouvrir la boîte de dialogue Account & usage. La boîte de dialogue nécessite une connexion claude.ai, elle n'est donc pas proposée sur un [fournisseur tiers](#use-third-party-providers). Elle affiche votre compte connecté, votre plan et les barres d'utilisation pour la session actuelle et la semaine. Chaque barre affiche le temps restant avant la réinitialisation de sa limite.194Exécutez `/usage` pour ouvrir la boîte de dialogue Account & usage. La boîte de dialogue nécessite une connexion claude.ai, elle n'est donc pas proposée sur un [fournisseur tiers](#use-third-party-providers). Elle affiche votre compte connecté, votre plan et les barres d'utilisation pour les limites de votre plan, telles que la session actuelle et la semaine. Chaque barre affiche le temps restant avant la réinitialisation de sa limite.

188 195 

189La boîte de dialogue détaille également ce qui contribue à vos limites de plan. Elle signale les comportements qui représentent 10 % ou plus de l'utilisation récente, tels que les défauts de cache, le contexte long et les sessions lourdes en sous-agents ou hautement parallèles, chacun avec un conseil pour le réduire. Les tableaux d'attribution montrent la quantité d'utilisation provenant de chaque skill, sous-agent, plugin et serveur MCP. Nécessite Claude Code v2.1.174 ou version ultérieure.196La boîte de dialogue détaille également ce qui contribue à vos limites de plan. Elle signale les comportements qui représentent 10 % ou plus de l'utilisation récente, tels que les défauts de cache, le contexte long et les sessions lourdes en sous-agents ou hautement parallèles, chacun avec un conseil pour le réduire. Les tableaux d'attribution montrent la quantité d'utilisation provenant de chaque skill, sous-agent, plugin et serveur MCP. Nécessite Claude Code v2.1.174 ou version ultérieure.

190 197 


210 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 dans 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.217 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 dans 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.

211</Tip>218</Tip>

212 219 

220Après avoir exécuté **Developer: Reload Window** ou redémarré VS Code, le retour d'une conversation avec son historique dépend de l'endroit où elle était ouverte :

221 

222* **Onglet d'éditeur** : la conversation revient avec son onglet.

223* **Barre latérale** : la conversation revient si vous avez envoyé un message ou si Claude a répondu dans celle-ci au cours des 10 dernières minutes. Si elle ne revient pas, reprenez la conversation à partir de [Historique des sessions](#resume-past-conversations).

224 

213<h3 id="run-multiple-conversations">225<h3 id="run-multiple-conversations">

214 Exécutez plusieurs conversations226 Exécutez plusieurs conversations

215</h3>227</h3>


264* **Installer pour ce projet** : partagé avec les collaborateurs du projet (étendue du projet)276* **Installer pour ce projet** : partagé avec les collaborateurs du projet (étendue du projet)

265* **Installer localement** : uniquement pour vous, uniquement dans ce référentiel (étendue locale)277* **Installer localement** : uniquement pour vous, uniquement dans ce référentiel (étendue locale)

266 278 

279<h3 id="share-a-plugin-install-link">

280 Partager un lien d'installation de plugin

281</h3>

282 

283Pour envoyer quelqu'un directement à l'installation d'un plugin spécifique, donnez-lui l'URL `install-plugin` de l'extension. L'ouvrir lance ou met au premier plan VS Code, ouvre le panneau Claude Code, et ouvre la boîte de dialogue **Gérer les plugins** sur le choix d'étendue de ce plugin. Rien ne s'installe jusqu'à ce que la personne choisisse une étendue. Si la marketplace du plugin n'est pas encore configurée dans leur Claude Code, la boîte de dialogue leur demande d'abord de l'ajouter.

284 

285```text theme={null}

286vscode://anthropic.claude-code/install-plugin?plugin=code-review&marketplace=anthropics/claude-plugins-official

287```

288 

289L'URL prend deux paramètres de requête :

290 

291| Paramètre | Description |

292| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

293| `plugin` | Le nom du plugin tel que sa marketplace le répertorie. Obligatoire. |

294| `marketplace` | D'où provient le plugin, sous n'importe quelle forme que l'[onglet Marketplaces](#manage-marketplaces) accepte, comme un `owner/repo` GitHub ou une URL git. Encodez-le en URL s'il contient des caractères tels que `&`. Par défaut `anthropics/claude-plugins-official` lorsqu'il est omis. |

295 

296Deux cas se terminent par un message dans la boîte de dialogue au lieu du choix d'étendue :

297 

298* **La marketplace ne répertorie pas de plugin avec ce nom** : la boîte de dialogue signale que le plugin n'a pas été trouvé. Vérifiez la valeur `plugin` par rapport au répertoire de la marketplace.

299* **Le plugin est déjà installé** : la boîte de dialogue l'indique, et rien ne change.

300 

301Les README GitHub, les problèmes et certains autres hôtes Markdown suppriment les liens dont le schéma n'est pas `http` ou `https`, donc un lien `vscode://` y est rendu en texte brut. Mettez l'URL dans un bloc de code sur ces hôtes, comme [Le lien s'affiche en texte brut au lieu d'être cliquable](/docs/fr/deep-links#the-link-renders-as-plain-text-instead-of-being-clickable) le décrit pour les liens `claude-cli://`.

302 

267<h3 id="manage-marketplaces">303<h3 id="manage-marketplaces">

268 Gérer les marketplaces304 Gérer les marketplaces

269</h3>305</h3>


274* Cliquez sur l'icône d'actualisation pour mettre à jour la liste des plugins d'une marketplace310* Cliquez sur l'icône d'actualisation pour mettre à jour la liste des plugins d'une marketplace

275* Cliquez sur l'icône de corbeille pour supprimer une marketplace311* Cliquez sur l'icône de corbeille pour supprimer une marketplace

276 312 

277Après avoir apporté des modifications, une bannière vous invite à redémarrer Claude Code pour les appliquer.313Les modifications apportées aux plugins dans la boîte de dialogue s'appliquent immédiatement aux sessions Claude Code ouvertes dans cette fenêtre VS Code. Si la session à partir de laquelle vous avez ouvert la boîte de dialogue ne peut pas recharger ses plugins, la boîte de dialogue vous propose de réessayer ou de redémarrer Claude dans cette session.

278 314 

279<Note>315<Note>

280 La gestion des plugins dans VS Code utilise les mêmes commandes CLI en arrière-plan. Les plugins et les marketplaces que vous configurez dans l'extension sont également disponibles dans la CLI, et vice versa.316 La gestion des plugins dans VS Code utilise les mêmes commandes CLI en arrière-plan. Les plugins et les marketplaces que vous configurez dans l'extension sont également disponibles dans la CLI, et vice versa.


380vscode://anthropic.claude-code/open?prompt=review%20my%20changes416vscode://anthropic.claude-code/open?prompt=review%20my%20changes

381```417```

382 418 

383Pour lancer une session terminal au lieu d'un onglet VS Code, utilisez le gestionnaire `claude-cli://` de la CLI. Consultez [Launch sessions from links](/docs/fr/deep-links).419L'extension gère également `vscode://anthropic.claude-code/install-plugin`, qui [ouvre la boîte de dialogue du plugin sur un plugin](#share-a-plugin-install-link). Pour lancer une session terminal au lieu d'un onglet VS Code, utilisez le gestionnaire `claude-cli://` de la CLI. Consultez [Launch sessions from links](/docs/fr/deep-links).

384 420 

385<h2 id="configure-settings">421<h2 id="configure-settings">

386 Configurer les paramètres422 Configurer les paramètres


410| `useCtrlEnterToSend` | `false` | Utilisez Ctrl/Cmd+Entrée au lieu d'Entrée pour envoyer les invites |446| `useCtrlEnterToSend` | `false` | Utilisez Ctrl/Cmd+Entrée au lieu d'Entrée pour envoyer les invites |

411| `enableNewConversationShortcut` | `false` | Activez Cmd/Ctrl+N pour démarrer une nouvelle conversation |447| `enableNewConversationShortcut` | `false` | Activez Cmd/Ctrl+N pour démarrer une nouvelle conversation |

412| `enableReopenClosedSessionShortcut` | `true` | Utilisez Cmd/Ctrl+Maj+T pour rouvrir l'onglet de session Claude le plus récemment fermé. Lorsque le dernier onglet fermé n'était pas une session Claude, le raccourci exécute la commande de réouverture d'éditeur fermé normale de VS Code à la place. |448| `enableReopenClosedSessionShortcut` | `true` | Utilisez Cmd/Ctrl+Maj+T pour rouvrir l'onglet de session Claude le plus récemment fermé. Lorsque le dernier onglet fermé n'était pas une session Claude, le raccourci exécute la commande de réouverture d'éditeur fermé normale de VS Code à la place. |

449| `archiveInactiveSessions` | `14` | [Archivez une session automatiquement](#resume-past-conversations) après ce nombre de jours sans activité : `1`, `2`, `7` ou `14`. Définissez `0` pour le désactiver. Nécessite Claude Code v2.1.265 ou ultérieur |

413| `hideOnboarding` | `false` | Masquez la liste de contrôle d'intégration (icône de chapeau de graduation) |450| `hideOnboarding` | `false` | Masquez la liste de contrôle d'intégration (icône de chapeau de graduation) |

414| `focusView` | `false` | Masquez les appels d'outils, les résultats d'outils et la réflexion derrière des lignes extensibles, en laissant vos invites et les réponses de Claude. La liste de tâches la plus récente de Claude reste visible ; cela nécessite Claude Code v2.1.225 ou ultérieur. Vous pouvez également basculer la vue Focus à partir du menu de commande. Nécessite Claude Code v2.1.221 ou ultérieur |451| `focusView` | `false` | Masquez les appels d'outils, les résultats d'outils et la réflexion derrière des lignes extensibles, en laissant vos invites et les réponses de Claude. La liste de tâches la plus récente de Claude reste visible ; cela nécessite Claude Code v2.1.225 ou ultérieur. Vous pouvez également basculer la vue Focus à partir du menu de commande. Nécessite Claude Code v2.1.221 ou ultérieur |

415| `respectGitIgnore` | `true` | Excluez les modèles .gitignore des recherches de fichiers |452| `respectGitIgnore` | `true` | Excluez les modèles .gitignore des recherches de fichiers |


445Claude Code est disponible à la fois en tant qu'extension VS Code (panneau graphique) et CLI (interface de ligne de commande dans le terminal). Certaines fonctionnalités ne sont disponibles que dans la CLI. Si vous avez besoin d'une fonctionnalité réservée à la CLI, exécutez `claude` dans le terminal intégré de VS Code. Cela nécessite l'[installation CLI autonome](/docs/fr/setup) : l'extension n'ajoute pas `claude` à votre PATH. Voir [Exécuter la CLI dans VS Code](#run-cli-in-vs-code).482Claude Code est disponible à la fois en tant qu'extension VS Code (panneau graphique) et CLI (interface de ligne de commande dans le terminal). Certaines fonctionnalités ne sont disponibles que dans la CLI. Si vous avez besoin d'une fonctionnalité réservée à la CLI, exécutez `claude` dans le terminal intégré de VS Code. Cela nécessite l'[installation CLI autonome](/docs/fr/setup) : l'extension n'ajoute pas `claude` à votre PATH. Voir [Exécuter la CLI dans VS Code](#run-cli-in-vs-code).

446 483 

447| Fonctionnalité | CLI | Extension VS Code |484| Fonctionnalité | CLI | Extension VS Code |

448| ---------------------------- | ---------------------- | ----------------------------------------------------------------------------------------------------------- |485| ---------------------------- | ---------------------- | -------------------------------------------------------------------------------------------------------------- |

449| Commandes et skills | [Toutes](/docs/fr/commands) | Sous-ensemble (tapez `/` pour voir les disponibles) |486| Commandes et skills | [Toutes](/docs/fr/commands) | Sous-ensemble (tapez `/` pour voir les disponibles) |

450| Configuration du serveur MCP | Oui | Partielle (ajouter des serveurs via CLI ; gérer les serveurs existants avec `/mcp` dans le panneau de chat) |487| Configuration du serveur MCP | Oui | Oui ([ajouter et gérer les serveurs](#connect-to-external-tools-with-mcp) avec `/mcp` dans le panneau de chat) |

451| Checkpoints | Oui | Oui |488| Checkpoints | Oui | Oui |

452| Raccourci bash `!` | Oui | Non |489| Raccourci bash `!` | Oui | Non |

453| Complément de tabulation | Oui | Non |490| Complément de tabulation | Oui | Non |


498 535 

499MCP (Model Context Protocol) les serveurs donnent à Claude accès à des outils externes, des bases de données et des API.536MCP (Model Context Protocol) les serveurs donnent à Claude accès à des outils externes, des bases de données et des API.

500 537 

501Pour 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 :538Pour gérer les serveurs MCP sans quitter VS Code, tapez `/mcp` dans le panneau de chat. À partir de la boîte de dialogue qui s'ouvre, vous pouvez ajouter des serveurs, supprimer les serveurs enregistrés au niveau local, utilisateur ou projet [scope](/docs/fr/mcp#mcp-installation-scopes), activer ou désactiver les serveurs, vous reconnecter à un serveur et gérer l'authentification OAuth. L'ajout et la suppression de serveurs dans la boîte de dialogue nécessitent Claude Code v2.1.261 ou version ultérieure.

539 

540Vous pouvez également exécuter `claude mcp add` dans le terminal intégré de VS Code (`` Ctrl+` `` ou `` Cmd+` ``). La boîte de dialogue et la commande du terminal enregistrent dans la même configuration MCP, et les modifications de l'une ou l'autre prennent effet dans les conversations que vous démarrez par la suite. 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 :

502 541 

503```bash theme={null}542```bash theme={null}

504claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \543claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \

505 --header "Authorization: Bearer YOUR_GITHUB_PAT"544 --header "Authorization: Bearer YOUR_GITHUB_PAT"

506```545```

507 546 

508Remplacez `YOUR_GITHUB_PAT` par votre jeton d'accès personnel. La commande `claude mcp add` enregistre la configuration sans valider les identifiants, donc une valeur d'espace réservé est acceptée ici mais le serveur ne se connecte pas plus tard. Pour vérifier la connexion, tapez `/mcp` dans le panneau de chat et vérifiez que le serveur affiche `connected`. Un serveur avec de mauvais identifiants affiche `failed`.547Remplacez `YOUR_GITHUB_PAT` par votre jeton d'accès personnel. La commande `claude mcp add` enregistre la configuration sans valider les identifiants, donc une valeur d'espace réservé est acceptée ici mais le serveur ne se connecte pas plus tard. Pour vérifier la connexion, démarrez une nouvelle conversation, tapez `/mcp` et vérifiez que le serveur affiche **Connected**. Un serveur avec de mauvais identifiants affiche **Failed**.

509 548 

510Une fois configuré, demandez à Claude d'utiliser les outils (par exemple, « Review PR #456 »).549Une fois configuré, demandez à Claude d'utiliser les outils (par exemple, « Review PR #456 »).

511 550 

512Pour gérer les serveurs MCP sans quitter VS Code, tapez `/mcp` dans le panneau de chat. La boîte de 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. Voir la [documentation MCP](/docs/fr/mcp) pour les serveurs disponibles.551Pour trouver les serveurs à connecter, voir [Trouver et créer des serveurs MCP](/docs/fr/mcp#find-and-build-mcp-servers).

513 552 

514<h2 id="work-with-git">553<h2 id="work-with-git">

515 Travailler avec git554 Travailler avec git


687Maintenant que vous avez Claude Code configuré dans VS Code :726Maintenant que vous avez Claude Code configuré dans VS Code :

688 727 

689* [Explorez les flux de travail courants](/docs/fr/common-workflows) pour tirer le meilleur parti de Claude Code728* [Explorez les flux de travail courants](/docs/fr/common-workflows) pour tirer le meilleur parti de Claude Code

690* [Configurez les serveurs MCP](/docs/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.729* [Configurez les serveurs MCP](/docs/fr/mcp) pour étendre les capacités de Claude avec des outils externes. Ajoutez et gérez-les avec `/mcp` dans le panneau de chat.

691* [Configurez les paramètres Claude Code](/docs/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.730* [Configurez les paramètres Claude Code](/docs/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.

Details

70 </Step>70 </Step>

71 71 

72 <Step title="Se connecter avec GitHub">72 <Step title="Se connecter avec GitHub">

73 Après vous être connecté, claude.ai/code vous invite à connecter GitHub. Suivez l'invite, et claude.ai/code vous envoie à la page d'autorisation de GitHub. Approuvez la demande d'autorisation, et GitHub vous renvoie à claude.ai/code. Les sessions cloud fonctionnent avec les référentiels GitHub existants et peuvent accéder à n'importe quel référentiel que votre compte GitHub peut voir. Pour démarrer un nouveau projet, [créez d'abord un référentiel vide sur GitHub](https://github.com/new).73 Après vous être connecté, claude.ai/code vous invite à connecter GitHub. Suivez l'invite, et claude.ai/code vous envoie à la page d'autorisation de GitHub. Approuvez la demande d'autorisation, et GitHub vous renvoie à claude.ai/code. Les sessions cloud fonctionnent avec les référentiels GitHub existants. Pour démarrer un nouveau projet, [créez d'abord un référentiel vide sur GitHub](https://github.com/new).

74 74 

75 Lorsque la configuration web rapide est désactivée, ce qui est le cas par défaut sur les plans Team et Enterprise, claude.ai/code vous demande ensuite d'installer l'application Claude GitHub sur vos référentiels sauf si elle est déjà installée. Installez-la si vous voulez [Correction automatique](/docs/fr/claude-code-on-the-web#auto-fix-pull-requests), qui permet à Claude de répondre aux défaillances CI et aux commentaires d'examen sur les demandes de tirage dans ces référentiels ; sinon cliquez sur **Ignorer**. De toute façon, les sessions peuvent accéder aux mêmes référentiels.75 Avec cette connexion, une session peut cloner n'importe quel référentiel public, mais ne peut travailler dans un référentiel privé que lorsque l'application Claude GitHub est installée dessus. [Installez l'application](https://github.com/apps/claude/installations/new) sur chaque compte GitHub ou organisation dont vous souhaitez utiliser les référentiels privés. Sur une organisation GitHub, un propriétaire d'organisation peut avoir besoin d'approuver l'installation. L'installation de l'application active également [Correction automatique](/docs/fr/claude-code-on-the-web#auto-fix-pull-requests), qui permet à Claude de répondre aux défaillances CI et aux commentaires d'examen sur les demandes de tirage dans ces référentiels.

76 

77 Si l'intégration vous invite à installer l'application à ce stade et que vous préférez le faire plus tard, cliquez sur **Ignorer**.

76 </Step>78 </Step>

77 79 

78 <Step title="Configurez votre environnement par défaut">80 <Step title="Configurez votre environnement par défaut">


91 Connecter depuis votre terminal93 Connecter depuis votre terminal

92</h3>94</h3>

93 95 

94Si 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](/docs/fr/quickstart). Lorsque vous exécutez `/web-setup`, Claude Code lit votre jeton `gh` local, le lie à votre compte claude.ai, et crée l'environnement cloud **Par défaut** si vous n'en avez pas. Sur les plans Team et Enterprise, `/web-setup` n'est disponible qu'après qu'un Propriétaire active [Configuration web rapide](/docs/fr/claude-code-on-the-web#github-authentication-options).96Si 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](/docs/fr/quickstart). Sur les plans Team et Enterprise, `/web-setup` n'est disponible qu'après qu'un Propriétaire active [Configuration web rapide](/docs/fr/claude-code-on-the-web#github-authentication-options).

97 

98Lorsque vous exécutez `/web-setup`, Claude Code lit le jeton que `gh auth token` affiche, vous demande de confirmer, et envoie le jeton à Anthropic. Anthropic le stocke chiffré avec votre compte claude.ai, et vos sessions cloud l'utilisent pour l'accès GitHub jusqu'à ce que vous [le supprimiez](#remove-the-web-setup-token). Une session cloud peut alors accéder à n'importe quel référentiel que ce jeton peut accéder, sans installation de l'application Claude GitHub.

99 

100Si vous avez déjà connecté GitHub dans le navigateur, `/web-setup` vous avertit que continuer remplace cette connexion pour vos sessions cloud.

95 101 

96<Note>102<Note>

97 Les organisations avec [Zéro conservation des données](/docs/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 n'est pas authentifiée, Claude Code ouvre le flux d'intégration du navigateur à la place.103 Les organisations avec [Zéro conservation des données](/docs/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 n'est pas authentifiée, Claude Code ouvre le flux d'intégration du navigateur à la place.


117 /web-setup123 /web-setup

118 ```124 ```

119 125 

120 Cela synchronise votre jeton `gh` avec votre compte Claude. En cas de succès, Claude Code affiche `Connected as <your-github-username>` et ouvre [claude.ai/code](https://claude.ai/code) dans votre navigateur. 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](/docs/fr/cloud-environments#configure-your-environment) après. Une fois que `/web-setup` est terminé, vous pouvez démarrer des sessions cloud depuis votre terminal avec [`--cloud`](/docs/fr/claude-code-on-the-web#from-terminal-to-web) ou configurer des tâches récurrentes avec [`/schedule`](/docs/fr/routines).126 Confirmez l'invite pour envoyer votre jeton `gh` à votre compte Claude. En cas de succès, Claude Code affiche `Connected as <your-github-username>` et ouvre [claude.ai/code](https://claude.ai/code) dans votre navigateur. 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](/docs/fr/cloud-environments#configure-your-environment) après. Une fois que `/web-setup` est terminé, vous pouvez démarrer des sessions cloud depuis votre terminal avec [`--cloud`](/docs/fr/claude-code-on-the-web#from-terminal-to-web) ou configurer des tâches récurrentes avec [`/schedule`](/docs/fr/routines).

121 </Step>127 </Step>

122</Steps>128</Steps>

123 129 

130<h4 id="remove-the-web-setup-token">

131 Supprimer le jeton `/web-setup`

132</h4>

133 

134Pour supprimer le jeton de votre compte Claude, déconnectez GitHub dans [claude.ai/customize/connectors](https://claude.ai/customize/connectors). La déconnexion supprime les identifiants GitHub que vos sessions cloud utilisent, qu'ils proviennent du navigateur ou de `/web-setup`, donc les sessions cloud perdent l'accès GitHub jusqu'à ce que vous vous reconnectiez. Votre `gh` local reste connecté, et le jeton reste valide sur GitHub.

135 

136Pour invalider le jeton lui-même, révoquez-le sur GitHub. Si vous vous êtes connecté à `gh` via le navigateur, le jeton appartient à l'entrée **GitHub CLI** sous [**Paramètres > Applications > Applications OAuth autorisées**](https://github.com/settings/applications) sur GitHub, et révoquer cette entrée déconnecte également la CLI GitHub sur vos machines. Les sessions cloud perdent alors l'accès GitHub jusqu'à ce que vous exécutiez `gh auth login` et `/web-setup` à nouveau.

137 

124<h2 id="start-a-task">138<h2 id="start-a-task">

125 Démarrer une tâche139 Démarrer une tâche

126</h2>140</h2>


204 Aucun référentiel n'apparaît après la connexion à GitHub218 Aucun référentiel n'apparaît après la connexion à GitHub

205</h3>219</h3>

206 220 

207Une session cloud peut utiliser n'importe quel référentiel que le compte GitHub connecté peut voir, indépendamment des référentiels sur lesquels l'application Claude GitHub est installée. Si un référentiel est manquant, vérifiez que le compte GitHub connecté y a accès sur GitHub. Si vous voulez également [Auto-fix](/docs/fr/claude-code-on-the-web#auto-fix-pull-requests) pour un référentiel, installez l'application dessus : sur github.com, ouvrez **Paramètres → Applications → Claude → Configurer** et vérifiez que le 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.221Si vous avez connecté GitHub dans le navigateur, les sessions peuvent cloner n'importe quel référentiel public, mais un référentiel privé n'apparaît que lorsque l'application Claude GitHub est installée sur le compte ou l'organisation qui le possède et que l'accès aux référentiels de l'installation l'inclut. [Installez l'application Claude GitHub](https://github.com/apps/claude/installations/new) là, ou demandez à un propriétaire d'organisation de l'installer ou de l'approuver.

222 

223Si vous avez connecté avec `/web-setup`, les sessions accèdent à chaque référentiel que votre jeton `gh` peut accéder. Exécutez `gh repo view OWNER/REPO` dans votre shell pour vérifier que votre connexion CLI GitHub peut voir le référentiel, et exécutez `/web-setup` à nouveau si vous avez changé de compte `gh` depuis la connexion.

208 224 

209<h3 id="the-page-only-shows-a-github-login-button">225<h3 id="the-page-only-shows-a-github-login-button">

210 La page affiche uniquement un bouton de connexion GitHub226 La page affiche uniquement un bouton de connexion GitHub

whats-new/2026-w29.md +70 −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 29 · 13–17 juillet 2026

6 

7> Tirez les données en direct dans les artifacts publiés via les connecteurs MCP, et utilisez Claude Code avec un lecteur d'écran dans le nouveau mode lecteur d'écran.

8 

9<div className="digest-meta">

10 <span>Versions <a href="/docs/en/changelog#2-1-207">v2.1.207 → v2.1.212</a></span>

11 <span>2 fonctionnalités · 13–17 juillet</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Les artifacts appellent vos connecteurs MCP</span>

17 <span className="digest-feature-pill">web</span>

18 </div>

19 

20 <p className="digest-feature-lede">Un artifact publié peut désormais appeler les connecteurs MCP chaque fois que quelqu'un le consulte, de sorte qu'un tableau de bord affiche les données en direct et peut effectuer des actions à la demande plutôt qu'un instantané de la session qui l'a créé. Chaque appel s'exécute via les propres connexions du compte qui consulte, et les utilisateurs approuvent l'accès avant le premier appel de connecteur de la page. Cette semaine ajoute également des liens de partage public, des rôles d'éditeur pour l'édition partagée sur les plans Team et Enterprise, et les artifacts créés à partir de sessions Claude Tag.</p>

21 

22 <Frame>

23 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/ItzF3QVI6L0QypjJ/images/whats-new/artifacts-mcp.mp4?fit=max&auto=format&n=ItzF3QVI6L0QypjJ&q=85&s=ff8b81ed52b26c773899dc28cec959e6" data-path="images/whats-new/artifacts-mcp.mp4" />

24 </Frame>

25 

26 <p className="digest-feature-try">Nommez le connecteur et les données que vous souhaitez dans votre invite :</p>

27 

28 ```text title="Claude Code" wrap theme={null}

29 Build a dashboard artifact of open pull requests that pulls the live list through my GitHub connector when the page loads.

30 ```

31 

32 <a className="digest-feature-link" href="/docs/fr/artifacts#pull-live-data-with-mcp-connectors">Tirez les données en direct avec les connecteurs MCP</a>

33</div>

34 

35<div className="digest-feature">

36 <div className="digest-feature-header">

37 <span className="digest-feature-title">Mode lecteur d'écran</span>

38 <span className="digest-feature-pill">CLI</span>

39 </div>

40 

41 <p className="digest-feature-lede">Le mode lecteur d'écran remplace l'interface visuelle du terminal par du texte simple et linéaire : au lieu de boîtes, de barres de progression et de redessin sur place, Claude Code imprime des lignes étiquetées qu'un lecteur d'écran tel que VoiceOver ou NVDA lit dans l'ordre, de sorte que vous pouvez approuver les autorisations et examiner la sortie de bout en bout. Activez-le par session avec un drapeau, par shell avec la variable d'environnement <code>CLAUDE\_AX\_SCREEN\_READER</code>, ou partout avec le paramètre <code>axScreenReader</code>.</p>

42 

43 <p className="digest-feature-try">Démarrez une session en mode lecteur d'écran :</p>

44 

45 ```bash terminal theme={null}

46 claude --ax-screen-reader

47 ```

48 

49 <a className="digest-feature-link" href="/docs/fr/accessibility#turn-on-screen-reader-mode">Activez le mode lecteur d'écran</a>

50</div>

51 

52<div className="digest-wins">

53 <p className="digest-wins-title">Autres améliorations</p>

54 

55 <div className="digest-wins-grid">

56 <div><code>/fork</code> copie désormais votre conversation dans une nouvelle session en arrière-plan avec sa propre ligne dans <code>claude agents</code> tandis que vous continuez à travailler ; le sous-agent forké en session qu'il avait l'habitude de lancer est maintenant <code>/subtask</code></div>

57 <div><a href="/docs/fr/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry">Le mode Auto</a> n'a plus besoin de l'opt-in <code>CLAUDE\_CODE\_ENABLE\_AUTO\_MODE</code> sur Amazon Bedrock, la plateforme Agent de Google Cloud et Microsoft Foundry ; les administrateurs peuvent le désactiver avec <code>disableAutoMode</code></div>

58 <div>Les appels d'outils MCP qui s'exécutent plus longtemps que deux minutes passent désormais automatiquement en arrière-plan afin que la session reste utilisable ; ajustez ou désactivez le seuil avec <code>CLAUDE\_CODE\_MCP\_AUTO\_BACKGROUND\_MS</code></div>

59 <div>Nouveau <code>claude auto-mode reset</code> restaure la configuration du mode auto par défaut, et `--yes` ignore l'invite de confirmation</div>

60 <div>Nouveau support du <a href="/docs/fr/corporate-launcher">lanceur d'entreprise</a> : <code>CLAUDE\_CODE\_PROCESS\_WRAPPER</code> ou le paramètre <code>processWrapper</code> exécute les processus que Claude Code démarre à partir de son propre binaire, tels que le service en arrière-plan et les sessions de vue d'agent, via un exécutable wrapper requis</div>

61 <div>Le paramètre <code>vimInsertModeRemaps</code> mappe les séquences en mode insertion à deux touches telles que <code>jj</code> à Échap en mode vim</div>

62 <div>`--forward-subagent-text` et <code>CLAUDE\_CODE\_FORWARD\_SUBAGENT\_TEXT</code> incluent le texte du sous-agent et les blocs de réflexion dans la <a href="/docs/fr/headless">sortie stream-json</a></div>

63 <div>Les limites au niveau de la session arrêtent les boucles incontrôlées : les appels WebSearch et les générations de sous-agents ont chacun une valeur par défaut de 200, ajustables avec <code>CLAUDE\_CODE\_MAX\_WEB\_SEARCHES\_PER\_SESSION</code> et <code>CLAUDE\_CODE\_MAX\_SUBAGENTS\_PER\_SESSION</code></div>

64 <div>Les règles d'autorisation « Toujours autoriser » sont enregistrées à la racine du référentiel, de sorte que les approbations accordées dans un git worktree persistent entre les sessions et les worktrees</div>

65 <div>Amazon Bedrock, la plateforme Agent de Google Cloud et Claude Platform sur AWS utilisent désormais par défaut Claude Opus 4.8</div>

66 <div>La ligne de résumé d'outil réduite affiche un compteur de temps écoulé en direct, de sorte que les appels d'outils de longue durée s'incrémentent visiblement au lieu de sembler bloqués</div>

67 </div>

68</div>

69 

70[Journal des modifications complet pour v2.1.207–v2.1.212 →](/docs/en/changelog#2-1-207)

whats-new/2026-w30.md +91 −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 30 · 20–24 juillet 2026

6 

7> Opus 5 devient le modèle Opus par défaut, Claude Code Desktop ajoute un volet iOS Simulator, et le plugin Claude Security analyse votre code pour détecter les vulnérabilités.

8 

9<div className="digest-meta">

10 <span>Versions <a href="/docs/en/changelog#2-1-214">v2.1.214 → v2.1.219</a></span>

11 <span>3 fonctionnalités · 20–24 juillet</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Claude Opus 5</span>

17 <span className="digest-feature-pill">nouveau modèle</span>

18 </div>

19 

20 <p className="digest-feature-lede">Claude Opus 5 est le nouveau modèle Opus par défaut dans Claude Code. C'est le modèle par défaut sur Max, Team Premium, Enterprise avec paiement à l'usage, et l'API Anthropic, ainsi que sur Claude Platform sur AWS, Amazon Bedrock et Agent Platform de Google Cloud. Sur l'API Anthropic et sur les plans Max, Team et Enterprise, Opus 5 s'exécute avec une <a href="/docs/fr/model-config#extended-context">fenêtre de contexte de 1M de tokens</a> ; sur Amazon Bedrock et Agent Platform de Google Cloud, sélectionnez la variante de modèle 1M. Le mode rapide passe à Opus 5 à 10 $/50 $ par MTok. Nécessite v2.1.219 ou ultérieure.</p>

21 

22 <Frame>

23 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/N3yEaTYPXMXFrF6k/images/whats-new/opus-5.mp4?fit=max&auto=format&n=N3yEaTYPXMXFrF6k&q=85&s=8536b1cb3180e539008f39930403e47b" data-path="images/whats-new/opus-5.mp4" />

24 </Frame>

25 

26 <p className="digest-feature-try">Basculez vers Opus 5 par nom, ou sélectionnez-le dans le sélecteur de modèle :</p>

27 

28 ```text Claude Code theme={null}

29 > /model claude-opus-5

30 ```

31 

32 <a className="digest-feature-link" href="/docs/fr/model-config#available-models">Configuration du modèle</a>

33</div>

34 

35<div className="digest-feature">

36 <div className="digest-feature-header">

37 <span className="digest-feature-title">iOS Simulator dans Claude Code Desktop</span>

38 <span className="digest-feature-pill">Desktop</span>

39 </div>

40 

41 <p className="digest-feature-lede">Claude Code Desktop sur macOS obtient un volet iOS Simulator, en bêta publique sur les plans Pro, Max et Team. Quand Claude construit, lance ou vérifie votre application dans un simulateur, le volet s'ouvre à côté de la conversation et diffuse l'écran de l'appareil en direct, afin que vous puissiez regarder Claude parcourir l'application pour vérifier ses modifications ou piloter l'appareil vous-même. Nécessite Xcode avec la plateforme iOS installée, et Claude Desktop v1.24012.0 ou ultérieure.</p>

42 

43 <Frame>

44 <img className="w-full" src="https://mintcdn.com/claude-code/N3yEaTYPXMXFrF6k/images/whats-new/ios-simulator.jpg?fit=max&auto=format&n=N3yEaTYPXMXFrF6k&q=85&s=6c88418ed14ed0fb12cc1af75b17f2ee" alt="Claude Code Desktop avec le volet iOS Simulator affichant une application iPhone à côté de la conversation" width="2048" height="1152" data-path="images/whats-new/ios-simulator.jpg" />

45 </Frame>

46 

47 <p className="digest-feature-try">Demandez à Claude d'exécuter ou de tester votre application, et le volet s'ouvre quand l'application se lance :</p>

48 

49 ```text Claude Code theme={null}

50 > Build the app and run it in the simulator to check the onboarding flow.

51 ```

52 

53 <a className="digest-feature-link" href="/docs/fr/desktop-ios-simulator#run-your-app-in-the-simulator">Tester les applications iOS dans le simulateur</a>

54</div>

55 

56<div className="digest-feature">

57 <div className="digest-feature-header">

58 <span className="digest-feature-title">Plugin Claude Security</span>

59 <span className="digest-feature-pill">plugin</span>

60 </div>

61 

62 <p className="digest-feature-lede">Le plugin Claude Security exécute une analyse multi-agents des vulnérabilités de votre base de code dans une session Claude Code : les agents cartographient votre architecture, construisent un modèle de menace, recherchent les vulnérabilités et examinent indépendamment chaque découverte avant d'écrire le rapport dans un répertoire <code>CLAUDE-SECURITY-\<timestamp>/</code>. Analysez un référentiel entier ou seulement le diff d'une branche, une demande de tirage ou un commit unique, puis transformez les découvertes que vous choisissez en correctifs examinés que vous appliquez vous-même.</p>

63 

64 <p className="digest-feature-try">Installez le plugin depuis la marketplace officielle Anthropic, exécutez <code>/reload-plugins</code>, puis démarrez une analyse avec <code>/claude-security</code> :</p>

65 

66 ```text Claude Code theme={null}

67 > /plugin install claude-security@claude-plugins-official

68 ```

69 

70 <a className="digest-feature-link" href="/docs/fr/claude-security#scan-and-fix-your-codebase">Analyser et corriger votre base de code</a>

71</div>

72 

73<div className="digest-wins">

74 <p className="digest-wins-title">Autres améliorations</p>

75 

76 <div className="digest-wins-grid">

77 <div><a href="/docs/fr/code-review#review-a-diff-locally"><code>/code-review</code></a> s'exécute maintenant en tant que sous-agent d'arrière-plan avec sa propre fenêtre de contexte, afin que le travail d'examen reste en dehors de votre conversation et les découvertes arrivent quand il se termine</div>

78 <div><code>/verify</code>, <code>/code-review</code> et <code>/deep-research</code> s'exécutent uniquement quand vous les invoquez ; Claude ne les lance plus de lui-même</div>

79 <div><a href="/docs/fr/interactive-mode#emoji-shortcodes">Les raccourcis emoji</a> se complètent automatiquement dans l'entrée d'invite : tapez <code>:heart:</code> pour insérer un emoji, ou deux caractères ou plus après <code>:</code> pour des suggestions ; désactivez-le avec <code>emojiCompletionEnabled</code></div>

80 <div>Les compétences avec <code>context: fork</code> <a href="/docs/fr/skills#run-skills-in-a-subagent">s'exécutent en arrière-plan</a> par défaut, et <code>background: false</code> dans le frontmatter de la compétence attend le résultat dans le même tour</div>

81 <div>Une session exécute jusqu'à 20 sous-agents simultanément par défaut ; modifiez la <a href="/docs/fr/sub-agents#concurrent-subagent-limit">limite</a> avec <code>CLAUDE\_CODE\_MAX\_CONCURRENT\_SUBAGENTS</code></div>

82 <div><code>--max-budget-usd</code> applique maintenant le plafond sur les sous-agents : une fois que les dépenses l'atteignent, Claude ne peut pas en démarrer d'autres et les sous-agents d'arrière-plan en cours s'arrêtent</div>

83 <div>Nouveau paramètre <a href="/docs/fr/sandboxing#disable-filesystem-isolation"><code>sandbox.filesystem.disabled</code></a> qui ignore l'isolation du système de fichiers tout en maintenant le contrôle de la sortie réseau</div>

84 <div>En mode auto, les vérifications des commandes <code>rm</code> dangereuses, des tâches d'arrière-plan et des chemins Windows suspects n'ouvrent plus de dialogues de permission ; le classificateur du mode auto les arbitre à la place</div>

85 <div>Les vérifications de permission Bash échouent fermées sur plus de formes de shell, y compris les redirections de descripteurs de fichiers, les souscriptions de variables Zsh dans les comparaisons <code>\[\[ ]]</code>, les invocations <code>help</code> et <code>man</code> qui pourraient exécuter des options non sûres, et les commandes de plus de 10 000 caractères</div>

86 <div><a href="/docs/fr/fast-mode">Le mode rapide</a> ne supporte plus Opus 4.7 : <code>/fast</code> s'applique maintenant à Opus 5 et Opus 4.8</div>

87 <div>Les appels d'outils de longue durée émettent une pulsation de progression périodique au lieu de rester silencieux</div>

88 </div>

89</div>

90 

91[Journal des modifications complet pour v2.1.214–v2.1.219 →](/docs/en/changelog#2-1-214)

whats-new/2026-w32.md +103 −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 32 · 3–7 août 2026

6 

7> Les sessions Claude Code s'envoient des messages entre elles, les environnements auto-hébergés exécutent les sessions cloud sur votre infrastructure, et le mode auto devient le mode de permission par défaut.

8 

9<div className="digest-meta">

10 <span>Versions <a href="/docs/en/changelog#2-1-220">v2.1.220 → v2.1.224</a></span>

11 <span>3 fonctionnalités · 3–7 août</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Messagerie entre sessions</span>

17 <span className="digest-feature-pill">v2.1.224</span>

18 </div>

19 

20 <p className="digest-feature-lede">Vos sessions Claude Code peuvent maintenant s'envoyer des messages entre elles. Claude découvre vos autres sessions avec l'outil <code>ListAgents</code> et envoie avec <code>SendMessage</code>, soit quand vous le lui demandez, soit de sa propre initiative, par exemple après qu'une modification dans une session affecte ce sur quoi une autre travaille. Un message est du texte que Claude écrit pour l'autre session, jamais votre historique de conversation ou vos fichiers. Disponible sur macOS et Linux. Nécessite v2.1.224 ou ultérieur.</p>

21 

22 <Frame>

23 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/N3yEaTYPXMXFrF6k/images/whats-new/cross-session-messaging.mp4?fit=max&auto=format&n=N3yEaTYPXMXFrF6k&q=85&s=8f33c3390f78660a4a26dc980f46159f" data-path="images/whats-new/cross-session-messaging.mp4" />

24 </Frame>

25 

26 <p className="digest-feature-try">Avec deux sessions ouvertes sur la même machine, demandez à l'une d'elles de transmettre quelque chose :</p>

27 

28 ```text title="Claude Code" wrap theme={null}

29 Tell the session working on the payments API that users.name is now users.display_name

30 ```

31 

32 <p className="digest-feature-try">L'autre session affiche une ligne <code>Message from</code> une fois que Claude a lu le message ; appuyez sur <code>Ctrl+O</code> pour l'agrandir. Pour voir quelles sessions Claude peut atteindre, exécutez <code>/list-agents</code>.</p>

33 

34 <a className="digest-feature-link" href="/docs/fr/cross-session-messaging#message-another-session">Envoyer un message à une autre session</a>

35</div>

36 

37<div className="digest-feature">

38 <div className="digest-feature-header">

39 <span className="digest-feature-title">Environnements auto-hébergés</span>

40 <span className="digest-feature-pill">v2.1.224</span>

41 </div>

42 

43 <p className="digest-feature-lede">Les environnements auto-hébergés exécutent les sessions cloud Claude Code sur l'infrastructure propre de votre organisation, en bêta publique sur les plans Team et Enterprise. Exécutez <code>claude self-hosted-runner</code> sur vos machines ou conteneurs pour les transformer en exécuteurs. Quand quelqu'un choisit votre environnement au démarrage d'une session depuis claude.ai, les applications mobiles ou de bureau, ou `claude --cloud`, cette session s'exécute à l'intérieur de votre réseau, avec accès à vos services internes. Un propriétaire active <strong>Allow self-hosted environments</strong> dans les <a href="https://claude.ai/admin-settings/cloud-environments">paramètres d'administration</a> en premier.</p>

44 

45 <Frame>

46 <img className="w-full" src="https://mintcdn.com/claude-code/N3yEaTYPXMXFrF6k/images/whats-new/self-hosted-environments.jpg?fit=max&auto=format&n=N3yEaTYPXMXFrF6k&q=85&s=ae9152cb1670c8af517d1aee57689b14" alt="La page d'administration des environnements auto-hébergés listant les environnements tels que linux-dev et macos-prod avec leur statut et les nombres de sessions actives" width="2048" height="1152" data-path="images/whats-new/self-hosted-environments.jpg" />

47 </Frame>

48 

49 <p className="digest-feature-try">Connecté en tant que propriétaire, exécutez la configuration guidée, qui vous guide à travers la création de l'environnement et démarre un exécuteur :</p>

50 

51 ```bash terminal theme={null}

52 claude self-hosted-runner setup

53 ```

54 

55 <p className="digest-feature-try">L'environnement affiche <strong>Healthy</strong> dans les paramètres d'administration une fois que l'exécuteur s'enregistre.</p>

56 

57 <a className="digest-feature-link" href="/docs/fr/self-hosted-environments-quickstart#set-up-an-environment-and-runner">Guide de démarrage rapide des environnements auto-hébergés</a>

58</div>

59 

60<div className="digest-feature">

61 <div className="digest-feature-header">

62 <span className="digest-feature-title">Le mode auto devient le mode par défaut</span>

63 <span className="digest-feature-pill">CLI</span>

64 </div>

65 

66 <p className="digest-feature-lede">À partir du 14 août, le mode auto est le mode de permission par défaut pour les nouvelles sessions sur les plans Pro, Max et Team. Si vous avez défini un mode par défaut vous-même, il reste en place sauf si vous acceptez l'invite de basculement unique, et un mode par défaut que votre organisation gère ne change pas. Vous pouvez toujours basculer les modes à tout moment. Déjà en vigueur sur ces plans : les appels du classificateur que le mode auto effectue ne comptent plus vers vos limites d'utilisation.</p>

67 

68 <p className="digest-feature-try">Pour démarrer chaque session en mode auto avant le basculement, définissez-le comme votre mode par défaut dans vos paramètres utilisateur :</p>

69 

70 ```json ~/.claude/settings.json {3} theme={null}

71 {

72 "permissions": {

73 "defaultMode": "auto"

74 }

75 }

76 ```

77 

78 <p className="digest-feature-try">Les nouvelles sessions affichent alors <code>auto mode on</code> dans la barre d'état.</p>

79 

80 <a className="digest-feature-link" href="/docs/fr/permission-modes#eliminate-prompts-with-auto-mode">Exigences et contrôles du mode auto</a>

81</div>

82 

83<div className="digest-wins">

84 <p className="digest-wins-title">Autres améliorations</p>

85 

86 <div className="digest-wins-grid">

87 <div>L'extension VS Code obtient la <a href="/docs/fr/vs-code#extension-settings">vue Focus</a>, qui masque l'activité des outils derrière une ligne extensible par tour ; basculez-la depuis le menu de commande ou avec <code>Ctrl+Alt+F</code> (<code>Ctrl+Option+F</code> sur Mac)</div>

88 <div>Les fichiers de credentials du sandbox acceptent <a href="/docs/fr/sandboxing#mask-credential-files"><code>mode: "mask"</code></a> sur Linux et WSL2, de sorte que les commandes en sandbox lisent une copie sentinelle tandis que le proxy sandbox substitue la valeur réelle à la sortie ; le masquage des credentials gagne également les options <code>extract</code>, <code>decode</code> conscient de JWT, et la re-signature AWS SigV4</div>

89 <div>Les marketplaces peuvent distribuer un plugin en tant qu'<a href="/docs/fr/plugin-marketplaces#zip-archives">archive zip</a> avec la nouvelle source <code>archive</code>, téléchargée via HTTPS avec une épingle SHA-256 optionnelle, de sorte que les installations fonctionnent sans git ou npm</div>

90 <div><code>/review</code> est maintenant un alias de <a href="/docs/fr/code-review#review-a-diff-locally"><code>/code-review</code></a>, et <code>/code-review</code> sans niveau d'effort réutilise le niveau que vous avez tapé en dernier</div>

91 <div>Une session que vous copiez avec <a href="/docs/fr/agent-view#copy-the-session-with-%2Ffork"><code>/fork</code></a> effectue maintenant ses modifications de code dans un worktree qui lui est propre au lieu du checkout de la session d'origine</div>

92 <div>Les plugins que vous installez depuis <a href="/docs/fr/discover-plugins#install-plugins"><code>/plugin</code></a> s'activent dans la session actuelle quand c'est sûr de le faire ; le résumé d'installation rapporte <code>Plugin is now active.</code> ou vous dit d'exécuter <code>/reload-plugins</code></div>

93 <div>Les <a href="/docs/fr/agent-view#how-file-edits-are-isolated">sessions en arrière-plan</a> qui ont modifié le code dans un worktree effectuent maintenant un commit et un push avant de terminer, ouvrent une demande de tirage en brouillon uniquement quand la tâche l'exige, et suivent les instructions git dans votre <code>CLAUDE.md</code></div>

94 <div>La limite de 200 sous-agents par session est supprimée, de sorte que les sessions longues n'refusent plus les nouveaux sous-agents ; les limites de <a href="/docs/fr/sub-agents#concurrent-subagent-limit">concurrence</a> et de profondeur s'appliquent toujours</div>

95 <div>Les paramètres enregistrés d'un référentiel ne peuvent plus activer la <a href="/docs/fr/remote-control#enable-remote-control-for-all-sessions">connexion automatique du contrôle à distance</a> ; définissez <code>remoteControlAtStartup</code> dans vos paramètres utilisateur ou gérés à la place, et les paramètres de projet et locaux ne peuvent que la désactiver</div>

96 <div>L'<a href="/docs/fr/worktrees#how-claude-code-enforces-isolation">isolation des worktrees</a> bloque maintenant non seulement les modifications de fichiers mais aussi les commandes Bash et les redirections git qui atteignent le checkout principal, dans tous les types de sessions et dans les sous-agents de la session</div>

97 <div>Une commande Bash ne peut plus masquer une partie d'elle-même aux vérifications de permission, et le remplissage par tabulation ou Unicode invisible ne masque plus une partie d'une commande à la boîte de dialogue d'approbation</div>

98 <div>Les hooks d'auto-autorisation PreToolUse ne contournent plus les restrictions d'outils dans les tâches internes côté Claude Code telles que les résumés et la compaction</div>

99 <div>L'aperçu de recherche <a href="/docs/fr/ultraplan">Ultraplan</a> est supprimé, y compris la commande <code>/ultraplan</code> et le mot-clé <code>ultraplan</code> ; utilisez le mode plan ou Claude Code sur le web à la place</div>

100 </div>

101</div>

102 

103[Journal des modifications complet pour v2.1.220–v2.1.224 →](/docs/en/changelog#2-1-220)

whats-new/2026-w33.md +87 −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 33 · 10–14 août 2026

6 

7> Claude Code Desktop continue automatiquement après une réinitialisation de limite d'utilisation, le mode fork s'active par défaut, et les demandes de fusion GitLab et les marketplaces rejoignent GitHub.

8 

9<div className="digest-meta">

10 <span>Versions <a href="/docs/en/changelog#2-1-225">v2.1.225 → v2.1.233</a></span>

11 <span>3 fonctionnalités · 10–14 août</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Continuation automatique après une limite d'utilisation sur Desktop</span>

17 <span className="digest-feature-pill">Desktop</span>

18 </div>

19 

20 <p className="digest-feature-lede">Lorsque vous atteignez votre limite de session dans l'onglet Code de Claude Code Desktop, la carte de limite offre désormais une case à cocher <strong>Continuer automatiquement quand les limites se réinitialisent</strong>. Cochez-la, et l'application Desktop réessaie le tour interrompu après la réinitialisation. La carte affiche l'heure de nouvelle tentative. La carte de limite hebdomadaire ne l'offre pas.</p>

21 

22 <Frame>

23 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/2SnAdpL4dJ18nKb3/images/whats-new/desktop-auto-continue.mp4?fit=max&auto=format&n=2SnAdpL4dJ18nKb3&q=85&s=1937f489695feaea715e48ecfd7e62cd" data-path="images/whats-new/desktop-auto-continue.mp4" />

24 </Frame>

25 

26 <p className="digest-feature-try">La prochaine fois qu'une carte de limite de session apparaît, cochez <strong>Continuer automatiquement quand les limites se réinitialisent</strong> et laissez la session ouverte. La carte affiche <code>Reprise automatique à</code> suivi de l'heure de réinitialisation, et le tour reprend de lui-même une fois la limite réinitialisée.</p>

27 

28 <a className="digest-feature-link" href="/docs/fr/errors#youve-hit-your-session-limit">Que faire quand vous atteignez une limite d'utilisation</a>

29</div>

30 

31<div className="digest-feature">

32 <div className="digest-feature-header">

33 <span className="digest-feature-title">Mode fork activé par défaut</span>

34 <span className="digest-feature-pill">v2.1.232</span>

35 </div>

36 

37 <p className="digest-feature-lede">Le mode fork est désormais activé par défaut dans les sessions interactives. Claude peut demander le type de sous-agent <code>fork</code>, qui hérite de la conversation complète et du cache de prompt au lieu de recommencer à zéro, vous n'avez donc pas besoin de réexpliquer le contexte pour une tâche secondaire. Les sous-agents que Claude crée dans les sessions interactives, à l'exception de ceux qu'un coéquipier d'une équipe d'agents crée, s'exécutent également en arrière-plan par défaut.</p>

38 

39 <p className="digest-feature-try">Démarrez un fork vous-même avec une tâche qui nécessite tout ce que vous avez discuté jusqu'à présent :</p>

40 

41 ```text Claude Code theme={null}

42 > /subtask draft unit tests for the parser changes so far

43 ```

44 

45 <p className="digest-feature-try">Le fork apparaît dans le panneau sous votre prompt et son résultat arrive dans votre conversation quand il se termine. Pour désactiver le mode fork, définissez <code>CLAUDE\_CODE\_FORK\_SUBAGENT=0</code>.</p>

46 

47 <a className="digest-feature-link" href="/docs/fr/sub-agents#turn-fork-mode-on-or-off">Activer ou désactiver le mode fork</a>

48</div>

49 

50<div className="digest-feature">

51 <div className="digest-feature-header">

52 <span className="digest-feature-title">Demandes de fusion GitLab et marketplaces</span>

53 <span className="digest-feature-pill">v2.1.232</span>

54 </div>

55 

56 <p className="digest-feature-lede">Les marketplaces de plugins clonent les URL <code>gitlab.com</code> nues, y compris les sous-groupes imbriqués. Sur v2.1.233 ou ultérieur, transmettez une URL de demande de fusion GitLab à <code>--worktree</code> pour créer une branche à partir de celle-ci, et la vue <code>claude agents</code> étiquette les sessions liées à une demande de fusion comme <code>!N</code>. Claude Code rédige également les familles de jetons GitLab telles que <code>glpat-</code> et <code>glrt-</code>, et protège le magasin de configuration de la CLI <code>glab</code> de la même manière qu'il protège <code>gh</code>.</p>

57 

58 <p className="digest-feature-try">Démarrez une session dans un worktree créé à partir d'une demande de fusion :</p>

59 

60 ```bash terminal theme={null}

61 claude --worktree https://gitlab.com/group/project/-/merge_requests/42

62 ```

63 

64 <p className="digest-feature-try">Quand <code>origin</code> est sur gitlab.com, Claude Code récupère <code>merge-requests/42/head</code> et ouvre la session sur cette branche dans son propre worktree.</p>

65 

66 <a className="digest-feature-link" href="/docs/fr/worktrees#branch-from-a-pull-request">Créer une branche worktree à partir d'une demande de fusion ou de tirage</a>

67</div>

68 

69<div className="digest-wins">

70 <p className="digest-wins-title">Autres améliorations</p>

71 

72 <div className="digest-wins-grid">

73 <div>Tapez <code>@</code> dans le prompt pour <a href="/docs/fr/cross-session-messaging#message-another-session">mentionner une autre session Claude</a> par nom, et Claude la message directement avec <code>SendMessage</code> ; un nom simple qui correspond exactement à une session active se livre maintenant sans étape de confirmation</div>

74 <div>Les sessions interactives sur une machine conservent des <a href="/docs/fr/cross-session-messaging#see-which-sessions-claude-can-reach">noms uniques</a> : si vous démarrez ou renommez une session avec un nom qu'une autre session active utilise déjà, Claude Code vous en donne une variante <code>name-word-word</code> et vous le dit</div>

75 <div>Les marketplaces de plugins acceptent les <a href="/docs/fr/plugin-marketplaces#command-sources">sources <code>command</code></a> : une commande locale imprime le répertoire du plugin, que Claude Code ré-résout chaque session et applique sans redémarrage</div>

76 <div>Sur Linux et WSL, définissez <a href="/docs/fr/tools-reference#memory-limit-on-linux-and-wsl"><code>CLAUDE\_CODE\_TOOL\_MEMORY\_LIMIT</code></a> sur une taille telle que <code>4G</code> pour limiter la mémoire que les commandes des outils Bash et PowerShell peuvent utiliser</div>

77 <div>Les outils de suivi des tâches, tels que <code>TaskCreate</code>, <code>TaskUpdate</code> et <code>TodoWrite</code>, ne sont <a href="/docs/fr/tools-reference#task-tool-availability">plus disponibles sur Opus 4.8, Sonnet 5, Fable 5, Mythos 5 et les modèles ultérieurs de ces familles</a> ; définissez <code>CLAUDE\_CODE\_ENABLE\_TODO\_TOOLS=1</code> pour les réactiver</div>

78 <div><a href="/docs/fr/code-review#review-a-diff-locally"><code>/code-review</code></a> aux niveaux d'effort élevé, très élevé et maximum s'exécute désormais dans un agent en arrière-plan comme les autres niveaux</div>

79 <div><a href="/docs/fr/discover-plugins#install-plugins"><code>/plugin install plugin\@marketplace</code></a> actualise d'abord la marketplace, de sorte que les plugins nouvellement publiés s'installent sans mise à jour manuelle de la marketplace</div>

80 <div>Les paramètres acceptent <a href="/docs/fr/settings-reference#marketplace-key-aliases"><code>additionalMarketplaces</code> et <code>allowedMarketplaces</code></a> comme alias pour <code>extraKnownMarketplaces</code> et <code>strictKnownMarketplaces</code></div>

81 <div>Sur les modèles plus récents, Claude peut <a href="/docs/fr/tools-reference#write-tool-behavior">remplacer un fichier existant avec l'outil Write</a> sans le lire d'abord cette session, ce qui correspond aux règles de l'outil Edit ; les modèles plus anciens nécessitent la lecture</div>

82 <div>L'extension VS Code peut <a href="/docs/fr/vs-code#organize-sessions-into-groups">organiser la liste des sessions en groupes</a> : cliquez avec le bouton droit pour créer, renommer ou supprimer un groupe, et Cmd/Ctrl- ou Maj-cliquez pour déplacer plusieurs sessions à la fois</div>

83 <div>Si votre organisation achemine Claude Code via une <a href="/docs/fr/claude-apps-gateway-spend-limits">passerelle d'applications Claude avec des limites de dépenses</a>, Claude Code affiche la période limite, son heure de réinitialisation et le message de l'opérateur quand vous atteignez la limite</div>

84 </div>

85</div>

86 

87[Journal des modifications complet pour v2.1.225–v2.1.233 →](/docs/en/changelog#2-1-225)

whats-new/2026-w34.md +105 −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 34 · 17–21 août 2026

6 

7> Créez des tableaux de bord d'interface utilisateur modifiables avec la compétence /design, définissez le style de sortie Concis, et démarrez une session Claude Code sur votre machine depuis votre téléphone.

8 

9<div className="digest-meta">

10 <span>Versions <a href="/docs/en/changelog#2-1-234">v2.1.234 → v2.1.239</a></span>

11 <span>3 fonctionnalités · 17–21 août</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">/design</span>

17 <span className="digest-feature-pill">aperçu de recherche</span>

18 </div>

19 

20 <p className="digest-feature-lede">La compétence <code>/design</code> apporte le flux de travail des tableaux de bord de Claude Design dans le CLI et Claude Code Desktop, construit sur les artifacts. Exécutez-la avec un brief et Claude publie un canevas de tableaux de bord modifiables pour votre interface utilisateur. Choisissez-en un, ajustez-le, puis demandez à Claude de l'implémenter. Disponible sur Pro, Max, Team et Enterprise. Nécessite v2.1.234 ou ultérieure.</p>

21 

22 <Frame>

23 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/2SnAdpL4dJ18nKb3/images/whats-new/design-skill.mp4?fit=max&auto=format&n=2SnAdpL4dJ18nKb3&q=85&s=0b376a94227c14a4204af89c4c9fd7ac" data-path="images/whats-new/design-skill.mp4" />

24 </Frame>

25 

26 <p className="digest-feature-try">Décrivez ce que vous souhaitez concevoir et laissez Claude proposer les options :</p>

27 

28 ```text Claude Code theme={null}

29 > /design redesign the composer based on what people actually use it for

30 ```

31 

32 <p className="digest-feature-try">Claude affiche un lien vers le canevas publié. Ouvrez-le, choisissez un tableau de bord, et dites à Claude quelle option implémenter.</p>

33 

34 <a className="digest-feature-link" href="/docs/fr/artifacts#availability">Où les artifacts sont disponibles</a>

35</div>

36 

37<div className="digest-feature">

38 <div className="digest-feature-header">

39 <span className="digest-feature-title">Style de sortie Concis</span>

40 <span className="digest-feature-pill">v2.1.237</span>

41 </div>

42 

43 <p className="digest-feature-lede">Concis est un nouveau style de sortie intégré. Claude commence par le résultat et ignore le préambule et la narration, tout en effectuant le travail aussi minutieusement que dans le style Par défaut. Lorsque vous demandez une explication ou plus de détails, Claude répond complètement. Les rapports d'erreur, les avertissements de sécurité et les confirmations pour les actions destructrices conservent leur contenu complet.</p>

44 

45 <Frame>

46 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/2SnAdpL4dJ18nKb3/images/whats-new/concise-output-style.mp4?fit=max&auto=format&n=2SnAdpL4dJ18nKb3&q=85&s=dfb40ec8921ed1bc82eb629042a8ec17" data-path="images/whats-new/concise-output-style.mp4" />

47 </Frame>

48 

49 <p className="digest-feature-try">Activez-le sous <strong>Style de sortie</strong> dans <code>/config</code>, ou définissez-le dans votre fichier de paramètres :</p>

50 

51 ```json ~/.claude/settings.json {2} theme={null}

52 {

53 "outputStyle": "Concise"

54 }

55 ```

56 

57 <p className="digest-feature-try">Exécutez <code>/clear</code> ou démarrez une nouvelle session, et les réponses de Claude commencent par le résultat.</p>

58 

59 <a className="digest-feature-link" href="/docs/fr/output-styles#built-in-output-styles">Styles de sortie intégrés</a>

60</div>

61 

62<div className="digest-feature">

63 <div className="digest-feature-header">

64 <span className="digest-feature-title">Démarrer une session sur votre machine depuis votre téléphone</span>

65 <span className="digest-feature-pill">mobile</span>

66 </div>

67 

68 <p className="digest-feature-lede">Toute machine exécutant <code>claude remote-control</code> apparaît maintenant comme une carte d'appareil en haut de l'onglet Code dans l'application Claude. Remote Control est également sortie de l'aperçu de recherche.</p>

69 

70 <Frame>

71 <img className="w-full" src="https://mintcdn.com/claude-code/2SnAdpL4dJ18nKb3/images/whats-new/remote-control-phone-start.jpg?fit=max&auto=format&n=2SnAdpL4dJ18nKb3&q=85&s=9f0ebedab23aa0e1732cc37782573907" alt="L'onglet Code dans l'application mobile Claude avec une section Appareils affichant un MacBook connecté comme une carte d'appareil au-dessus de la liste des sessions" width="1206" height="895" data-path="images/whats-new/remote-control-phone-start.jpg" />

72 </Frame>

73 

74 <p className="digest-feature-try">Démarrez Remote Control sur la machine que vous souhaitez atteindre, puis ouvrez l'onglet Code sur votre téléphone :</p>

75 

76 ```bash terminal theme={null}

77 claude remote-control

78 ```

79 

80 <p className="digest-feature-try">Votre machine apparaît comme une carte d'appareil en haut de l'onglet Code. Appuyez dessus pour choisir un répertoire et démarrer une session là-bas.</p>

81 

82 <a className="digest-feature-link" href="/docs/fr/remote-control#start-a-remote-control-session">Démarrer une session Remote Control</a>

83</div>

84 

85<div className="digest-wins">

86 <p className="digest-wins-title">Autres améliorations</p>

87 

88 <div className="digest-wins-grid">

89 <div>Claude Code continue maintenant votre session automatiquement lorsqu'une limite d'utilisation claude.ai est réinitialisée ; désactivez-la à partir de la ligne <strong>Continuer automatiquement à la limite d'utilisation</strong> dans <code>/config</code></div>

90 <div>Le paramètre optionnel <a href="/docs/fr/interactive-mode#check-spelling-as-you-type"><code>spellcheck</code></a> souligne les mots mal orthographiés dans l'entrée du prompt au fur et à mesure que vous tapez, en utilisant votre <code>aspell</code>, <code>hunspell</code> ou <code>ispell</code> installé</div>

91 <div>Sur une branche avec une demande de fusion GitLab ouverte, avec le CLI <code>glab</code> authentifié via <code>glab auth login</code>, le pied de page affiche un <a href="/docs/fr/interactive-mode#gitlab-merge-requests">badge <code>MR !N</code></a> coloré selon que la demande de fusion est un brouillon, ouverte ou fusionnable</div>

92 <div>Modifiez le niveau d'effort depuis votre téléphone ou claude.ai/code et il <a href="/docs/fr/remote-control#what-connected-devices-see">s'applique à la session sur votre machine</a> ; les sessions Remote Control hébergées par Desktop ou VS Code affichent également aux appareils connectés le mode de permission actuel de la session</div>

93 <div>Vous pouvez ouvrir <a href="/docs/fr/permissions#manage-permissions"><code>/permissions</code></a> ou exécuter <code>/add-dir \<path></code> pendant que Claude travaille ; les modifications des règles de permission s'appliquent au reste du tour actuel</div>

94 <div>Lorsque les tâches de fond gardent un <a href="/docs/fr/goal#background-work-defers-evaluation"><code>/goal</code></a> en attente, Claude les vérifie après 30 minutes au lieu d'attendre indéfiniment et continue à vérifier, à des intervalles plus longs pendant que la session est inactive ; définissez <code>CLAUDE\_CODE\_GOAL\_CHECKIN\_MINUTES=0</code> pour refuser</div>

95 <div>Vos propres prompts affichent maintenant le markdown dans la transcription, avec des blocs de code en surbrillance, du code en ligne et des listes, de la même manière que les réponses</div>

96 <div>La nouvelle variable d'environnement <a href="/docs/fr/model-config#set-a-default-model-for-new-sessions"><code>ANTHROPIC\_DEFAULT\_MODEL</code></a> définit le modèle sur lequel les nouvelles sessions commencent ; un choix <code>/model</code> le remplace toujours et persiste après les redémarrages</div>

97 <div>Avec l'entrée <code>notify\_when\_idle</code> sur <code>SendMessage</code>, Claude peut demander à une autre session Claude Code sur la même machine de <a href="/docs/fr/cross-session-messaging#get-a-notice-when-another-session-goes-idle">envoyer un avis lorsqu'elle devient inactive</a></div>

98 <div>Définissez <a href="/docs/fr/interactive-mode#make-ctrl-w-delete-back-to-whitespace"><code>keybindingFlavor</code></a> sur <code>"readline"</code> pour faire en sorte que <code>Ctrl+W</code> dans le prompt supprime jusqu'à l'espace blanc précédent, comme Bash le fait, au lieu de s'arrêter à la ponctuation telle que <code>/</code></div>

99 <div>Sur Windows natif, vos sessions Claude Code peuvent maintenant <a href="/docs/fr/cross-session-messaging#availability">se envoyer des messages</a> avec <code>SendMessage</code> et se trouver avec <code>ListAgents</code>, comme sur macOS et Linux</div>

100 <div>Les exécuteurs auto-hébergés acceptent `--defer-shutdown-max-min`, qui <a href="/docs/fr/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal">continue à servir les sessions attachées</a> pendant un nombre défini de minutes après SIGTERM</div>

101 <div>Les exécuteurs auto-hébergés acceptent `--proxy-authorization-command` ou `--proxy-authorization-file` pour fournir un en-tête <code>Proxy-Authorization</code> frais pour <a href="/docs/fr/self-hosted-environments-deploy#authenticate-to-an-egress-proxy">les proxies de sortie qui en nécessitent un</a></div>

102 </div>

103</div>

104 

105[Journal des modifications complet pour v2.1.234–v2.1.239 →](/docs/en/changelog#2-1-234)

workflows.md +42 −26

Details

41 41 

42<Steps>42<Steps>

43 <Step title="Exécuter le workflow">43 <Step title="Exécuter le workflow">

44 Exécutez `/deep-research` avec une question que vous souhaitez enquêter. Il distribue les recherches web sur plusieurs angles, récupère et vérifie les sources qu'il trouve, et synthétise un rapport cité.44 Exécutez `/deep-research` avec une question que vous souhaitez enquêter. Il déploie des recherches web selon plusieurs angles, récupère et vérifie les sources qu'il trouve, et synthétise un rapport cité.

45 45 

46 ```text wrap theme={null}46 ```text wrap theme={null}

47 /deep-research What changed in the Node.js permission model between v20 and v22?47 /deep-research What changed in the Node.js permission model between v20 and v22?


49 </Step>49 </Step>

50 50 

51 <Step title="Autoriser les workflows">51 <Step title="Autoriser les workflows">

52 Claude Code demande s'il faut autoriser le workflow. Sélectionnez **Oui** pour continuer. L'invite exacte dépend de votre mode de permission. Voir [Approuver le plan avant qu'il s'exécute](#approve-the-plan-before-it-runs) pour les options par mode.52 Claude Code demande s'il faut autoriser le workflow. Sélectionnez **Oui** pour continuer. L'invite exacte dépend de votre mode de permission. Voir [Approuver le plan avant son exécution](#approve-the-plan-before-it-runs) pour les options par mode.

53 </Step>53 </Step>

54 54 

55 <Step title="Regarder la progression">55 <Step title="Surveiller la progression">

56 L'exécution commence en arrière-plan. Exécutez `/workflows`, utilisez les touches fléchées pour sélectionner l'exécution, et appuyez sur Entrée pour ouvrir sa vue de progression :56 L'exécution démarre en arrière-plan. Exécutez `/workflows`, utilisez les touches fléchées pour sélectionner l'exécution, et appuyez sur Entrée pour ouvrir sa vue de progression :

57 57 

58 ```text wrap theme={null}58 ```text wrap theme={null}

59 /workflows59 /workflows

60 ```60 ```

61 61 

62 La vue affiche chaque phase avec son nombre d'agents, le total des tokens et le temps écoulé. Explorez n'importe quelle phase pour voir ses agents et ce que chacun a trouvé. Voir [Regarder l'exécution](#watch-the-run) pour l'ensemble complet des contrôles.62 La vue affiche chaque phase avec son nombre d'agents, le total des tokens et le temps écoulé. Explorez n'importe quelle phase pour voir ses agents et ce que chacun a trouvé. Voir [Surveiller l'exécution](#watch-the-run) pour l'ensemble complet des contrôles.

63 63 

64 Vous pouvez également regarder à partir du panneau des tâches sous la zone de saisie : un résumé de progression d'une ligne apparaît là pendant que l'exécution se déroule. Appuyez sur la flèche vers le bas pour le mettre au point, puis Entrée pour l'agrandir.64 Vous pouvez également surveiller à partir du panneau des tâches sous la zone de saisie : un résumé de progression d'une ligne apparaît là pendant que l'exécution est en cours. Appuyez sur la flèche vers le bas pour le mettre au point, puis sur Entrée pour le développer.

65 </Step>65 </Step>

66 66 

67 <Step title="Lire le rapport">67 <Step title="Lire le rapport">

68 Quand l'exécution se termine, le rapport atterrit dans votre session. Il cite les sources dont provient chaque affirmation, les affirmations qui n'ont pas survécu à la vérification croisée étant déjà filtrées.68 Lorsque l'exécution se termine, le rapport arrive dans votre session. Il cite les sources dont provient chaque affirmation, les affirmations qui n'ont pas survécu à la vérification croisée étant déjà filtrées.

69 69 

70 Quand les agents vérificateurs ne peuvent pas vérifier une affirmation, par exemple après une limite de débit ou une erreur API, le rapport liste cette affirmation comme non vérifiée au lieu de la compter comme réfutée.70 Lorsque les agents vérificateurs ne peuvent pas vérifier une affirmation, par exemple après une limite de débit ou une erreur API, le rapport liste cette affirmation comme non vérifiée au lieu de la compter comme réfutée.

71 </Step>71 </Step>

72</Steps>72</Steps>

73 73 

74Pour exécuter un workflow pour votre propre tâche, [faites écrire un par Claude](#have-claude-write-a-workflow), et une fois qu'une exécution fait ce que vous vouliez, vous pouvez [l'enregistrer](#save-the-workflow-for-reuse) comme commande de votre propre.74Pour exécuter un workflow pour votre propre tâche, [demandez à Claude d'en écrire un](#have-claude-write-a-workflow), et une fois qu'une exécution fait ce que vous vouliez, vous pouvez [l'enregistrer](#save-the-workflow-for-reuse) comme commande de votre choix.

75 75 

76<h3 id="bundled-workflows">76<h3 id="bundled-workflows">

77 Workflows groupés77 Workflows groupés


80Claude Code inclut `/deep-research` comme workflow intégré :80Claude Code inclut `/deep-research` comme workflow intégré :

81 81 

82| Commande | Ce qu'elle fait |82| Commande | Ce qu'elle fait |

83| :-------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |83| :-------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

84| `/deep-research <question>` | Distribue les recherches web sur une question sur plusieurs angles, récupère et vérifie les sources qu'elle trouve, vote sur chaque affirmation, et retourne un rapport cité avec les affirmations qui n'ont pas survécu à la vérification croisée filtrées. Nécessite que l'outil [WebSearch](/docs/fr/tools-reference#websearch-tool-behavior) soit disponible |84| `/deep-research <question>` | Déploie des recherches web sur une question selon plusieurs angles, récupère et vérifie les sources qu'il trouve, vote sur chaque affirmation, et retourne un rapport cité avec les affirmations qui n'ont pas survécu à la vérification croisée filtrées. Nécessite que l'outil [WebSearch](/docs/fr/tools-reference#websearch-tool-behavior) soit disponible |

85 85 

86`/deep-research` s'exécute uniquement quand vous l'invoquez.86`/deep-research` s'exécute uniquement lorsque vous l'invoquez.

87 87 

88[Les workflows que vous enregistrez](#save-the-workflow-for-reuse) vous-même deviennent des commandes de la même manière et apparaissent dans l'autocomplétion `/` aux côtés des workflows intégrés.88[Les workflows que vous enregistrez](#save-the-workflow-for-reuse) vous-même deviennent des commandes de la même manière et apparaissent dans l'autocomplétion `/` aux côtés des workflows groupés.

89 89 

90<h3 id="watch-the-run">90<h3 id="watch-the-run">

91 Regarder l'exécution91 Surveiller l'exécution

92</h3>92</h3>

93 93 

94Les workflows s'exécutent en arrière-plan, donc la session reste réactive pendant que les agents travaillent. Exécutez `/workflows` à tout moment pour lister les workflows en cours d'exécution et terminés, puis sélectionnez-en un pour ouvrir sa vue de progression.94Les workflows s'exécutent en arrière-plan, de sorte que la session reste réactive pendant que les agents travaillent. Exécutez `/workflows` à tout moment pour lister les workflows en cours d'exécution et terminés, puis sélectionnez-en un pour ouvrir sa vue de progression.

95 95 

96La vue de progression affiche chaque phase avec ses nombres d'agents, ses totaux de tokens et son temps écoulé. Le pied de page liste la clé pour chaque action :96La vue de progression affiche chaque phase avec ses nombres d'agents, ses totaux de tokens et son temps écoulé. Le pied de page liste la clé pour chaque action :

97 97 

98| Clé | Action |98| Clé | Action |

99| :-------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------- |99| :-------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------ |

100| `↑` / `↓` | Sélectionner une phase ou un agent |100| `↑` / `↓` | Sélectionner une phase ou un agent |

101| `Entrée` ou `→` | Explorez la phase sélectionnée, puis un agent pour lire son prompt, ses appels d'outils récents et son résultat |101| `Entrée` ou `→` | Explorez la phase sélectionnée, puis le détail d'un agent. Dans le détail, `Entrée` le développe ou le réduit |

102| `Échap` ou `←` | Revenir un niveau en arrière. Dans les v2.1.203 à v2.1.205, `←` n'a pas permis de revenir en arrière d'une phase ou d'un agent ; utilisez `Échap` sur ces versions |102| `Échap` ou `←` | Reculer d'un niveau. Dans les versions v2.1.203 à v2.1.205, `←` n'a pas permis de reculer d'une phase ou d'un agent ; utilisez `Échap` sur ces versions |

103| `j` / `k` | Faire défiler dans le détail de l'agent quand il déborde |103| `j` / `k` | Faire défiler dans le détail de l'agent lorsqu'il déborde |

104| `f` | Filtrer la liste des agents dans la phase sélectionnée par statut. Appuyez à nouveau pour parcourir |104| `f` | Filtrer la liste des agents dans la phase sélectionnée par statut. Appuyez à nouveau pour parcourir |

105| `p` | Mettre en pause ou reprendre l'exécution |105| `p` | Mettre en pause ou reprendre l'exécution |

106| `x` | Arrêter l'agent sélectionné, ou arrêter le workflow entier quand le focus est sur l'exécution |106| `x` | Arrêter l'agent sélectionné, ou arrêter l'ensemble du workflow lorsque le focus est sur l'exécution |

107| `r` | Redémarrer l'agent en cours d'exécution sélectionné |107| `r` | Redémarrer l'agent en cours d'exécution sélectionné |

108| `s` | [Enregistrer](#save-the-workflow-for-reuse) le script de l'exécution comme commande |108| `s` | [Enregistrer](#save-the-workflow-for-reuse) le script de l'exécution comme commande |

109 109 

110Le détail de l'agent liste l'invite de l'agent, ses appels d'outils récents et son résultat. Chaque appel affiche son état, par exemple toujours en cours d'exécution ou échoué. Lorsque l'agent maintient sa propre liste de tâches, le détail l'affiche également, avec le statut de chaque tâche.

111 

112Appuyez sur `Entrée` pour développer le détail. L'invite et le résultat s'affichent alors en intégralité, et chaque appel listé affiche son entrée et le début de son résultat.

113 

110<h2 id="have-claude-write-a-workflow">114<h2 id="have-claude-write-a-workflow">

111 Faire écrire un workflow par Claude115 Faire écrire un workflow par Claude

112</h2>116</h2>


169 173 

170Avec ultracode activé, Claude décide quand une tâche justifie un workflow. Une seule demande peut se transformer en plusieurs workflows d'affilée : un pour comprendre le code, un pour faire le changement, et un pour le vérifier. Cela s'applique à chaque tâche de la session, donc chaque demande utilise plus de tokens et prend plus de temps qu'aux niveaux d'effort inférieurs.174Avec ultracode activé, Claude décide quand une tâche justifie un workflow. Une seule demande peut se transformer en plusieurs workflows d'affilée : un pour comprendre le code, un pour faire le changement, et un pour le vérifier. Cela s'applique à chaque tâche de la session, donc chaque demande utilise plus de tokens et prend plus de temps qu'aux niveaux d'effort inférieurs.

171 175 

172`/effort ultracode` dure pour la session actuelle ; pour que chaque session commence avec lui, définissez le paramètre [`ultracode`](/docs/fr/settings-reference#ultracode). Revenez avec `/effort high` quand vous retournez au travail de routine. Il est disponible sur les modèles qui supportent l'[effort](/docs/fr/model-config#adjust-effort-level) `xhigh` ; sur les autres modèles, le menu `/effort` ne l'offre pas.176`/effort ultracode` dure pour la session actuelle ; pour que chaque session commence avec lui, définissez le paramètre [`ultracode`](/docs/fr/settings-reference#ultracode). Revenez avec `/effort high` quand vous retournez au travail de routine. Le menu `/effort` l'offre uniquement [quand ultracode est disponible](/docs/fr/model-config#when-ultracode-is-available).

173 177 

174<h3 id="approve-the-plan-before-it-runs">178<h3 id="approve-the-plan-before-it-runs">

175 Approuver le plan avant qu'il s'exécute179 Approuver le plan avant qu'il s'exécute


218 222 

219La boîte de dialogue d'enregistrement affiche le chemin résolu pour l'emplacement personnel.223La boîte de dialogue d'enregistrement affiche le chemin résolu pour l'emplacement personnel.

220 224 

225Appuyez sur Entrée pour enregistrer. Le workflow s'exécute comme `/<name>` dans les futures sessions à partir de l'un ou l'autre emplacement.

226 

221Claude Code vérifie l'emplacement d'enregistrement pour les liens symboliques avant d'écrire, et affiche une erreur au lieu d'écrire à travers un. Ce qu'il vérifie dépend de l'endroit où vous enregistrez :227Claude Code vérifie l'emplacement d'enregistrement pour les liens symboliques avant d'écrire, et affiche une erreur au lieu d'écrire à travers un. Ce qu'il vérifie dépend de l'endroit où vous enregistrez :

222 228 

223* Emplacement du projet : Claude Code refuse si `.claude`, `.claude/workflows`, ou le fichier cible est un lien symbolique.229* Emplacement du projet : Claude Code refuse si `.claude`, `.claude/workflows`, ou le fichier cible est un lien symbolique.


229 235 

230Si un workflow de projet et un workflow personnel partagent un nom, celui du projet s'exécute.236Si un workflow de projet et un workflow personnel partagent un nom, celui du projet s'exécute.

231 237 

232Appuyez sur Entrée pour enregistrer. Le workflow s'exécute comme `/<name>` dans les futures sessions à partir de l'un ou l'autre emplacement.

233 

234<h3 id="distribute-a-workflow-in-a-plugin">238<h3 id="distribute-a-workflow-in-a-plugin">

235 Distribuer un workflow dans un plugin239 Distribuer un workflow dans un plugin

236</h3>240</h3>


344 348 

345Le corps est du JavaScript simple avec `await` au niveau supérieur. `agent()` génère un sous-agent, `pipeline()` en exécute un par élément dans une liste, et `parallel()` exécute un ensemble de tâches d'agent en même temps et attend que toutes se terminent.349Le corps est du JavaScript simple avec `await` au niveau supérieur. `agent()` génère un sous-agent, `pipeline()` en exécute un par élément dans une liste, et `parallel()` exécute un ensemble de tâches d'agent en même temps et attend que toutes se terminent.

346 350 

347Un appel `agent()` se résout en `null` si vous l'arrêtez en cours d'exécution ou s'il rencontre une erreur API irrécupérable. `pipeline()` conserve ce `null` dans le tableau des résultats, c'est pourquoi l'exemple se termine par `.filter(Boolean)` pour supprimer ces entrées.351Un appel `agent()` se résout en `null` si vous l'arrêtez en cours d'exécution ou s'il rencontre une erreur API irrécupérable. En [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode), le classificateur peut bloquer un appel `agent()` avant que le sous-agent ne commence. Un appel bloqué se résout en `null` et s'affiche dans la vue de progression de l'exécution avec la raison. `pipeline()` conserve chaque `null` dans le tableau des résultats, c'est pourquoi l'exemple se termine par `.filter(Boolean)` pour supprimer ces entrées.

352 

353Si vous passez un `schema` sur un appel `agent()`, ce sous-agent retourne du JSON correspondant à la forme au lieu de prose. Claude Code vérifie le schéma avant de démarrer le sous-agent : quand il peut prouver que le schéma se contredit lui-même, l'appel échoue avec une erreur nommant la contradiction, et le sous-agent ne démarre jamais. Une contradiction qu'il peut prouver est une clé `required` que `additionalProperties: false` exclut.

354 

355Si la sortie du sous-agent échoue toujours la validation après cinq tentatives, l'appel échoue avec une erreur qui inclut l'échec de validation le plus récent. Pour modifier le nombre de tentatives, définissez [`MAX_STRUCTURED_OUTPUT_RETRIES`](/docs/fr/env-vars).

348 356 

349<h3 id="edit-a-saved-script">357<h3 id="edit-a-saved-script">

350 Éditer un script enregistré358 Éditer un script enregistré


407 415 

408Une fois qu'une exécution commence, vous la gérez à partir de la vue `/workflows`, ou en agrandissant sa ligne de progression dans le panneau des tâches sous la zone de saisie.416Une fois qu'une exécution commence, vous la gérez à partir de la vue `/workflows`, ou en agrandissant sa ligne de progression dans le panneau des tâches sous la zone de saisie.

409 417 

418Quand vous arrêtez une exécution, elle reste dans le panneau des tâches tant que l'un des processus de ses agents est toujours en cours d'exécution. Si vous l'arrêtez à nouveau, Claude Code renvoie à nouveau un signal à ces processus.

419 

410<h3 id="resume-after-a-pause">420<h3 id="resume-after-a-pause">

411 Reprendre après une pause421 Reprendre après une pause

412</h3>422</h3>

413 423 

414Reprenez une exécution en pause à partir de `/workflows` en la sélectionnant et en appuyant sur `p`. Pour une exécution que vous avez arrêtée, demandez à Claude de relancer le workflow avec le même script. Claude Code rejoue l'exécution dans l'ordre où les agents ont commencé, et chaque agent retourne soit son résultat sauvegardé, soit s'exécute à nouveau :424Reprenez une exécution en pause à partir de `/workflows` en la sélectionnant et en appuyant sur `p`. Pour une exécution que vous avez arrêtée, demandez à Claude de relancer le workflow avec le même script. Si les agents de l'exécution arrêtée n'ont pas encore quitté, Claude Code refuse le relancement jusqu'à ce qu'ils le fassent, afin qu'une deuxième copie de ces agents ne puisse pas s'exécuter à côté d'eux.

425 

426Claude Code rejoue l'exécution dans l'ordre où les agents ont commencé, et chaque agent retourne soit son résultat sauvegardé, soit s'exécute à nouveau :

415 427 

416* **Terminé** : retourne son résultat sauvegardé. Le premier agent dont l'invite diffère de l'exécution précédente, parce que vous avez modifié le script ou qu'un agent antérieur a retourné quelque chose de différent, s'exécute à nouveau, tout comme tous les agents après lui, même ceux qui ont terminé.428* **Terminé** : retourne son résultat sauvegardé. Le premier agent dont l'invite diffère de l'exécution précédente, parce que vous avez modifié le script ou qu'un agent antérieur a retourné quelque chose de différent, s'exécute à nouveau, tout comme tous les agents après lui, même ceux qui ont terminé.

417* **Toujours en cours d'exécution quand vous avez arrêté** : recommence. L'arrêt de l'ensemble de l'exécution ne compte aucun agent comme ayant échoué.429* **Toujours en cours d'exécution quand vous avez arrêté** : recommence. L'arrêt de l'ensemble de l'exécution ne compte aucun agent comme ayant échoué.


422Vous pouvez reprendre une exécution dans la même session Claude Code. Ce qui arrive à un workflow en cours d'exécution quand vous quittez la session dépend de la façon dont vous quittez :434Vous pouvez reprendre une exécution dans la même session Claude Code. Ce qui arrive à un workflow en cours d'exécution quand vous quittez la session dépend de la façon dont vous quittez :

423 435 

424* Si vous [mettez la session en arrière-plan](/docs/fr/agent-view#what-carries-over-when-you-background), Claude Code rejoue l'exécution de la même manière dans la session en arrière-plan et la continue.436* Si vous [mettez la session en arrière-plan](/docs/fr/agent-view#what-carries-over-when-you-background), Claude Code rejoue l'exécution de la même manière dans la session en arrière-plan et la continue.

425* Si vous quittez Claude Code pendant qu'un workflow s'exécute et que la [vue agent est activée](/docs/fr/agent-view#from-inside-a-session), la boîte de dialogue de sortie propose `Move to background and exit`, qui transfère l'exécution de la même manière. Si vous choisissez `Exit and stop tasks` à la place, ou si l'option n'est pas proposée, l'exécution s'arrête avec la session. Claude Code conserve les résultats sauvegardés de l'exécution dans le répertoire de cette session dans `~/.claude/projects/`, donc une session que vous reprenez avec `claude --resume` peut les rejouer quand vous demandez à Claude de relancer le workflow, tandis qu'une session que vous démarrez à nouveau n'a rien à rejouer et démarre le workflow à nouveau.437* Si vous quittez Claude Code pendant qu'un workflow s'exécute et que la [vue agent est activée](/docs/fr/agent-view#from-inside-a-session), la boîte de dialogue de sortie propose `Move to background and exit`, qui transfère l'exécution de la même manière. Si vous choisissez `Exit and stop tasks` à la place, ou si l'option n'est pas proposée, l'exécution s'arrête avec la session. Claude Code conserve les résultats sauvegardés de l'exécution dans le répertoire de cette session dans `~/.claude/projects/`, donc une session que vous reprenez avec `claude --resume` peut les rejouer quand vous demandez à Claude de relancer le workflow. Dans une session que vous démarrez à nouveau, Claude n'a aucune exécution antérieure à rejouer et démarre le workflow à nouveau en tant que nouvelle exécution.

438 

439Dans une [session cloud](/docs/fr/claude-code-on-the-web), Claude Code sauvegarde également les résultats de l'exécution avec l'historique de conversation de la session, qui persiste quand la VM de la session est récupérée. Quand vous [rouvrez une telle session](/docs/fr/claude-code-on-the-web#environment-expired) et demandez à Claude de relancer le workflow, les agents terminés retournent toujours leurs résultats sauvegardés.

440 

441Dans les sessions locales et cloud, quand Claude relance une exécution antérieure et que Claude Code ne peut pas trouver du tout les résultats sauvegardés de cette exécution, le relancement échoue avec une erreur `nothing to resume` au lieu de démarrer l'exécution à nouveau de son propre chef. Demandez à Claude de démarrer le workflow à nouveau en tant que nouvelle exécution.

426 442 

427<h3 id="cost">443<h3 id="cost">

428 Coût444 Coût

worktrees.md +11 −3

Details

367 367 

368Dans la plupart des cas, le reste du message dit que les métadonnées git du répertoire se résolvent dans l'extraction principale : par exemple, son fichier `.git` pointe vers le répertoire `.git` du dépôt principal lui-même, ou git résout son arbre de travail à l'extraction principale via une redirection `core.worktree`. À partir d'un tel répertoire, une commande git ordinaire telle que `git reset --hard` agirait sur l'extraction principale au lieu du worktree. Claude Code refuse également quand le répertoire a une entrée `.git` qu'il ne peut pas lire, plutôt que d'assumer que le worktree est sûr.368Dans la plupart des cas, le reste du message dit que les métadonnées git du répertoire se résolvent dans l'extraction principale : par exemple, son fichier `.git` pointe vers le répertoire `.git` du dépôt principal lui-même, ou git résout son arbre de travail à l'extraction principale via une redirection `core.worktree`. À partir d'un tel répertoire, une commande git ordinaire telle que `git reset --hard` agirait sur l'extraction principale au lieu du worktree. Claude Code refuse également quand le répertoire a une entrée `.git` qu'il ne peut pas lire, plutôt que d'assumer que le worktree est sûr.

369 369 

370Un répertoire sans métadonnées git du tout, comme celui que votre hook [`WorktreeCreate`](#non-git-version-control) crée, passe la vérification seulement quand aucun dépôt git ne le contient. Si le hook crée le répertoire à l'intérieur d'un dépôt, git le résout au checkout de ce dépôt et Claude Code le refuse avec le message `git resolves its working tree to`, donc faites en sorte que le hook crée ses répertoires en dehors de tout dépôt.

371 

370Claude Code laisse le répertoire refusé en place, puisqu'il peut contenir du travail. Faites correspondre le message à sa récupération, que ce soit après `Refusing to use <path>` ou dans un [message de reprise](#the-session-resumes-outside-its-worktree) ; certaines fins ne se produisent que dans les messages de reprise :372Claude Code laisse le répertoire refusé en place, puisqu'il peut contenir du travail. Faites correspondre le message à sa récupération, que ce soit après `Refusing to use <path>` ou dans un [message de reprise](#the-session-resumes-outside-its-worktree) ; certaines fins ne se produisent que dans les messages de reprise :

371 373 

372* **Dit `launch from the parent checkout` ou `Run the resume from the project checkout`** : vous avez lancé Claude Code depuis l'intérieur du worktree. Lancez à partir de l'extraction principale à la place ; le worktree n'a pas besoin de recréation.374* **Dit `launch from the parent checkout` ou `Run the resume from the project checkout`** : vous avez lancé Claude Code depuis l'intérieur du worktree. Lancez à partir de l'extraction principale à la place ; le worktree n'a pas besoin de recréation.


380 La session reprend en dehors de son worktree382 La session reprend en dehors de son worktree

381</h3>383</h3>

382 384 

383Quand une reprise interactive ne peut pas retourner la session à son worktree, Claude Code le dit avec l'un des messages ci-dessous.385Quand vous reprenez une session de manière interactive et que Claude Code ne peut pas la retourner à son worktree, Claude Code le dit avec l'un des messages ci-dessous. Quand Claude Code efface la liaison du worktree, il enregistre l'effacement dans la transcription de la session. Si vous [supprimez les écritures de transcription](/docs/fr/sessions#where-transcripts-are-stored), le message dit à la place que la liaison n'a pas pu être effacée et que Claude Code revérifier le worktree lors d'une reprise ultérieure.

384 386 

385| Le message commence par | Ce qui s'est passé et quoi faire |387| Le message commence par | Ce qui s'est passé et quoi faire |

386| :------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |388| :------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |


389| `Did not re-enter your worktree <path>` | Claude Code a refusé la liaison du worktree comme non sûre ; il efface la liaison et la session continue sans isolation. Le message inclut le refus spécifique : faites-le correspondre sous [Claude Code refuse d'utiliser un worktree](#claude-code-refuses-to-use-a-worktree), puisque la correction est la recréation pour certains refus et un changement de chemin pour d'autres. |391| `Did not re-enter your worktree <path>` | Claude Code a refusé la liaison du worktree comme non sûre ; il efface la liaison et la session continue sans isolation. Le message inclut le refus spécifique : faites-le correspondre sous [Claude Code refuse d'utiliser un worktree](#claude-code-refuses-to-use-a-worktree), puisque la correction est la recréation pour certains refus et un changement de chemin pour d'autres. |

390| `Could not re-enter your worktree <path>` | Claude Code ne pouvait pas justifier le worktree à partir d'où vous avez lancé, le plus souvent parce que vous avez lancé depuis l'intérieur ; la liaison est conservée. Le reste du message nomme la correction ; faites-le correspondre sous [Claude Code refuse d'utiliser un worktree](#claude-code-refuses-to-use-a-worktree). |392| `Could not re-enter your worktree <path>` | Claude Code ne pouvait pas justifier le worktree à partir d'où vous avez lancé, le plus souvent parce que vous avez lancé depuis l'intérieur ; la liaison est conservée. Le reste du message nomme la correction ; faites-le correspondre sous [Claude Code refuse d'utiliser un worktree](#claude-code-refuses-to-use-a-worktree). |

391 393 

392En [mode non interactif](/docs/fr/headless) avec `-p`, et sur les reprises que le [SDK Agent](/docs/fr/agent-sdk/sessions) exécute, Claude Code arrête la reprise avec une erreur stderr pour chaque refus sauf un worktree disparu, au lieu de continuer sans isolation, et les messages prennent des formes différentes de celles du tableau ci-dessus :394En [mode non interactif](/docs/fr/headless) avec `-p`, et sur les reprises que le [SDK Agent](/docs/fr/agent-sdk/sessions) exécute, Claude Code arrête la reprise avec une erreur stderr pour chaque refus sauf un worktree disparu, au lieu de continuer sans isolation.

395 

396Avec `--output-format stream-json`, le refus arrive également sur stdout en tant que message `result` avec le sous-type `error_during_execution` dont le tableau `errors` porte le même texte, donc une application SDK Agent reçoit la raison plutôt que seulement une sortie non zéro. Avant la v2.1.260, un refus de reprise de worktree ne produisait aucun message `result`.

397 

398Les messages prennent des formes différentes des messages interactifs du tableau :

399 

400* `Error: cannot resume into worktree <path>: ...This session was not started.` pour un refus que le tableau montre comme `Did not re-enter`. Claude Code efface la liaison du worktree avant de quitter, et l'erreur le dit ; la prochaine fois que vous reprenez la conversation, la session continue dans le répertoire actuel sans isolation de worktree. Avant la v2.1.260, Claude Code n'écrivait pas la liaison effacée, donc chaque nouvelle tentative de la même reprise échouait avec la même erreur.

393 401 

394* `Error: cannot resume into worktree <path>: ...This session was not started.` pour un refus que le tableau montre comme `Did not re-enter`402 Si vous [supprimez les écritures de transcription](/docs/fr/sessions#where-transcripts-are-stored), l'effacement ne peut pas être sauvegardé. L'erreur dit alors que la même commande sera refusée à nouveau, et nomme `--fork-session` et le démarrage d'une nouvelle conversation comme des façons de continuer sans le worktree.

395* `Error: could not verify worktree <path> for this resume, so the resume was aborted...` pour `Could not verify`403* `Error: could not verify worktree <path> for this resume, so the resume was aborted...` pour `Could not verify`

396* `Error: ...The worktree binding is kept.` pour `Could not re-enter`404* `Error: ...The worktree binding is kept.` pour `Could not re-enter`

397* `Notice: the worktree <path> for this session no longer exists...` pour un worktree disparu ; Claude Code l'imprime et continue la session, comme une reprise interactive le fait405* `Notice: the worktree <path> for this session no longer exists...` pour un worktree disparu ; Claude Code l'imprime et continue la session, comme une reprise interactive le fait