SpyBara
Go Premium

Documentation 2026-10-01 23:59 UTC to 2026-10-02 09:02 UTC

89 files changed +4,552 −2,546. View all changes and history on the product overview
2026
Fri 2 10:01 Thu 1 23:59

accessibility.md +11 −5

Details

44| [`CLAUDE_AX_SCREEN_READER`](/docs/fr/env-vars#variables) | Variable d'environnement | Mode lecteur d'écran pour les sessions démarrées à partir du shell où vous l'avez définie. |44| [`CLAUDE_AX_SCREEN_READER`](/docs/fr/env-vars#variables) | Variable d'environnement | Mode lecteur d'écran pour les sessions démarrées à partir du shell où vous l'avez définie. |

45| [`axScreenReader`](/docs/fr/settings-reference#axscreenreader) | Paramètre | Mode lecteur d'écran pour chaque session lorsque `true`. |45| [`axScreenReader`](/docs/fr/settings-reference#axscreenreader) | Paramètre | Mode lecteur d'écran pour chaque session lorsque `true`. |

46| [`CLAUDE_AX_STARTUP_QUIET_MS`](/docs/fr/env-vars#variables) | Variable d'environnement | Durée pendant laquelle Claude Code attend après la ligne de confirmation avant de dessiner la première invite en mode lecteur d'écran. Nécessite Claude Code v2.1.217 ou version ultérieure. |46| [`CLAUDE_AX_STARTUP_QUIET_MS`](/docs/fr/env-vars#variables) | Variable d'environnement | Durée pendant laquelle Claude Code attend après la ligne de confirmation avant de dessiner la première invite en mode lecteur d'écran. Nécessite Claude Code v2.1.217 ou version ultérieure. |

47| [`CLAUDE_AX_PREPARK_MS`](/docs/fr/env-vars#variables) | Variable d'environnement | Durée pendant laquelle Claude Code attend, avec le curseur au début de la ligne, avant d'écrire une ligne nouvelle ou modifiée en mode lecteur d'écran. Nécessite Claude Code v2.1.233 ou version ultérieure. |47| [`CLAUDE_AX_PREPARK_MS`](/docs/fr/env-vars#variables) | Variable d'environnement | Lorsque vous la définissez, nombre de millisecondes pendant lesquelles Claude Code maintient le curseur du terminal au début de la ligne actuelle avant d'écrire une ligne nouvelle ou modifiée en mode lecteur d'écran. Nécessite Claude Code v2.1.233 ou version ultérieure. |

48| [`CLAUDE_CODE_ACCESSIBILITY`](/docs/fr/env-vars#variables) | Variable d'environnement | Un curseur de terminal qui reste visible pour les loupes d'écran telles que macOS Zoom lorsque vous le définissez sur `1`. Le curseur suit le curseur d'entrée et, sur Claude Code v2.1.218 ou version ultérieure, la ligne en surbrillance dans les menus et les panneaux tels que `/config` et `/plugin`. |48| [`CLAUDE_CODE_ACCESSIBILITY`](/docs/fr/env-vars#variables) | Variable d'environnement | Un curseur de terminal qui reste visible pour les loupes d'écran telles que macOS Zoom lorsque vous le définissez sur `1`. Le curseur suit le curseur d'entrée et, sur Claude Code v2.1.218 ou version ultérieure, la ligne en surbrillance dans les menus et les panneaux tels que `/config` et `/plugin`. |

49| [`prefersReducedMotion`](/docs/fr/settings-reference#prefersreducedmotion) | Paramètre | Réduction ou absence de barres de chargement, scintillement et autres animations lorsque `true`. |49| [`prefersReducedMotion`](/docs/fr/settings-reference#prefersreducedmotion) | Paramètre | Réduction ou absence de barres de chargement, scintillement et autres animations lorsque `true`. |

50| [`theme`](/docs/fr/settings-reference#theme) | Paramètre | Les couleurs de l'interface, y compris les thèmes `dark-daltonized` et `light-daltonized` adaptés aux daltoniens. Vous pouvez également en choisir un avec [`/theme`](/docs/fr/commands#all-commands). |50| [`theme`](/docs/fr/settings-reference#theme) | Paramètre | Les couleurs de l'interface, y compris les thèmes `dark-daltonized` et `light-daltonized` adaptés aux daltoniens. Vous pouvez également en choisir un avec [`/theme`](/docs/fr/commands#all-commands). |


60* Pas d'indices basés sur la couleur uniquement60* Pas d'indices basés sur la couleur uniquement

61* Pas de redessins du contenu qui n'a pas changé. Les barres de progression s'affichent sous forme de texte statique61* Pas de redessins du contenu qui n'a pas changé. Les barres de progression s'affichent sous forme de texte statique

62* Les tableaux dans les réponses de Claude se lisent comme des phrases `En-tête : valeur` au lieu d'une grille de caractères de boîte62* Les tableaux dans les réponses de Claude se lisent comme des phrases `En-tête : valeur` au lieu d'une grille de caractères de boîte

63* Les diffs se lisent comme du texte brut, ligne par ligne, avec `+` et `-` marquant les lignes ajoutées et supprimées, afin que vous puissiez entendre la modification proposée dans une demande d'approbation de modification de fichier avant d'y répondre

63 64 

64Claude Code laisse tout ce qu'il imprime dans l'historique de votre terminal, afin que vous puissiez relire les tours précédents avec les commandes de révision de votre lecteur d'écran ou la recherche de votre terminal. Claude Code ignore le paramètre [`tui`](/docs/fr/settings-reference#tui) en mode lecteur d'écran. À part les sessions d'arrière-plan attachées listées sous [Limitations connues](#known-limitations), il imprime du texte défilant au lieu du [rendu en plein écran](/docs/fr/fullscreen).65Claude Code laisse tout ce qu'il imprime dans l'historique de votre terminal, afin que vous puissiez relire les tours précédents avec les commandes de révision de votre lecteur d'écran ou la recherche de votre terminal. Claude Code ignore le paramètre [`tui`](/docs/fr/settings-reference#tui) en mode lecteur d'écran. À part les sessions d'arrière-plan attachées listées sous [Limitations connues](#known-limitations), il imprime du texte défilant au lieu du [rendu en plein écran](/docs/fr/fullscreen).

65 66 

66Claude Code attend également à deux points pour que votre lecteur d'écran puisse suivre :67Après que Claude Code imprime la [ligne de confirmation](#turn-on-screen-reader-mode) au démarrage, il attend 3 secondes avant de dessiner l'invite, afin que votre lecteur d'écran puisse terminer la ligne. Appuyez sur n'importe quelle touche pour terminer l'attente. Pour modifier la durée de l'attente, définissez [`CLAUDE_AX_STARTUP_QUIET_MS`](/docs/fr/env-vars#variables).

67 

68* Après que Claude Code imprime la ligne de confirmation, il attend 3 secondes avant de dessiner l'invite, afin que votre lecteur d'écran puisse terminer la ligne. Appuyez sur n'importe quelle touche pour terminer l'attente. Pour modifier la durée de l'attente, définissez [`CLAUDE_AX_STARTUP_QUIET_MS`](/docs/fr/env-vars#variables).

69* Avant que Claude Code écrive une ligne nouvelle ou modifiée, comme un indice ou plus de la réponse de Claude, il déplace le curseur au début de la ligne et attend 50 millisecondes. Votre lecteur d'écran lit alors la ligne à partir de son premier caractère. Les caractères que vous tapez ou supprimez à la fin de la ligne d'entrée apparaissent immédiatement. Pour modifier la durée de l'attente, définissez [`CLAUDE_AX_PREPARK_MS`](/docs/fr/env-vars#variables).

70 68 

71Chaque message dans la transcription commence par une étiquette que votre lecteur d'écran annonce, nommant ce qu'il est : vos messages, les réponses et la réflexion de Claude, l'activité des outils, les erreurs et les avertissements, et les invites. Les étiquettes sont également consultables, afin que vous puissiez sauter entre les sections de la transcription en recherchant l'historique de votre terminal :69Chaque message dans la transcription commence par une étiquette que votre lecteur d'écran annonce, nommant ce qu'il est : vos messages, les réponses et la réflexion de Claude, l'activité des outils, les erreurs et les avertissements, et les invites. Les étiquettes sont également consultables, afin que vous puissiez sauter entre les sections de la transcription en recherchant l'historique de votre terminal :

72 70 


94 92 

95Lorsque vous parcourez les [modes d'autorisation](/docs/fr/permission-modes) avec `Shift+Tab`, Claude Code annonce le mode d'autorisation sur lequel vous atterrissez, comme `[plan mode on]` ou `[accept edits on]`. Claude Code imprime l'annonce une fois et ne la répète pas lors des redessins ultérieurs.93Lorsque vous parcourez les [modes d'autorisation](/docs/fr/permission-modes) avec `Shift+Tab`, Claude Code annonce le mode d'autorisation sur lequel vous atterrissez, comme `[plan mode on]` ou `[accept edits on]`. Claude Code imprime l'annonce une fois et ne la répète pas lors des redessins ultérieurs.

96 94 

95<h3 id="read-earlier-output-without-losing-your-place">

96 Lire la sortie précédente sans perdre votre position

97</h3>

98 

99Si votre lecteur d'écran revient à l'invite pendant que vous lisez une sortie précédente, c'est qu'il suit le curseur du terminal. Claude Code ramène le curseur du terminal à l'invite chaque fois qu'il écrit du nouveau texte.

100 

101Pour conserver votre position pendant la lecture, empêchez votre lecteur d'écran de suivre le curseur du terminal. Dans NVDA, appuyez sur `NVDA+6` pour empêcher le curseur de revue de suivre le curseur du terminal. Appuyez à nouveau sur `NVDA+6` pour réactiver le suivi.

102 

97<h3 id="jump-between-turns">103<h3 id="jump-between-turns">

98 Sauter entre les tours104 Sauter entre les tours

99</h3>105</h3>

admin-setup.md +23 −2

Details

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 :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 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.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.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 membres peuvent toujours changer de modèle. Pour les ramener à votre modèle par défaut au lancement, activez le remplacement décrit dans cette section. Pour limiter les modèles qu'ils peuvent choisir, utilisez les [restrictions de modèle d'organisation](/docs/fr/model-config#organization-model-restrictions).

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

125 125 

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).126[Les sessions cloud](/docs/fr/claude-code-on-the-web) disposent de leurs propres surfaces d'administration sur claude.ai :

127 

128* **Page des environnements Cloud** : 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.

129* **Environnement par défaut** : 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).

130* **Page GitHub** : consultez [Comptes GitHub connectés](#connected-github-accounts) pour les comptes GitHub liés à votre organisation.

127 131 

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

129 133 

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

131 135 

136<h3 id="connected-github-accounts">

137 Comptes GitHub connectés

138</h3>

139 

140Sur les plans Team et Enterprise, [**Paramètres d'administration > GitHub**](https://claude.ai/admin-settings/github) répertorie les organisations GitHub et les comptes personnels liés à votre organisation Claude via la [Claude GitHub App](https://github.com/apps/claude). Claude Code, [Claude Tag](https://claude.com/docs/claude-tag/admins/configure-github) et Claude Security partagent cette liste. L'ouvrir nécessite un rôle d'administrateur dans votre organisation Claude.

141 

142Un administrateur ou un membre peut lier un compte :

143 

144* **Connexion par un administrateur** : un administrateur clique sur **Connect** sur cette page et installe la Claude GitHub App sur une organisation GitHub. Lier une organisation de cette manière nécessite une personne qui est à la fois propriétaire de l'organisation GitHub et administrateur de votre organisation Claude.

145* **Connexion par un membre** : lorsqu'un membre connecte son compte GitHub à Claude, par exemple lors de la [configuration des sessions cloud](/docs/fr/web-quickstart#connect-github), Claude lie les comptes GitHub dont ce membre est propriétaire et sur lesquels la Claude GitHub App est déjà installée. Cela peut inclure son compte personnel et les organisations GitHub dont il est propriétaire.

146 

147Une ligne marquée **Not linked** provient de votre propre connexion GitHub. Il s'agit d'un compte que vous pouvez voir sur GitHub et sur lequel la Claude GitHub App est installée.

148 

149Pour dissocier un compte de votre organisation Claude, ouvrez le menu de sa ligne et sélectionnez **Unlink from this workspace**. La dissociation laisse la Claude GitHub App installée sur GitHub, et le compte est de nouveau lié la prochaine fois que l'un de ses propriétaires connecte GitHub à Claude. Pour éviter qu'il ne soit de nouveau lié, désinstallez la Claude GitHub App de ce compte sur GitHub.

150 

151Sur les plans Enterprise, les types d'activité de l'[API Compliance](https://platform.claude.com/docs/en/api/compliance/activities/list) pour la liaison et la dissociation sont `github_app_installation_linked` et `github_app_installation_unlinked`.

152 

132<h2 id="set-up-usage-visibility">153<h2 id="set-up-usage-visibility">

133 Configurer la visibilité de l'utilisation154 Configurer la visibilité de l'utilisation

134</h2>155</h2>

Details

325 325 

326Quelques stratégies pour les agents de longue durée :326Quelques stratégies pour les agents de longue durée :

327 327 

328* **Utilisez des sous-agents pour les sous-tâches.** Chaque sous-agent commence avec une conversation fraîche (pas d'historique de messages antérieurs, bien qu'il charge son propre prompt système et le contexte au niveau du projet comme CLAUDE.md). Il ne voit pas les tours du parent, et seule sa réponse finale retourne au parent comme résultat d'outil. Le contexte de l'agent principal croît par ce résumé, pas par la transcription complète de la sous-tâche. Voir [Ce que les sous-agents héritent](/docs/fr/agent-sdk/subagents#what-subagents-inherit) pour les détails.328* **Utilisez des sous-agents pour les sous-tâches.** Chaque sous-agent commence avec une conversation fraîche (pas d'historique de messages antérieurs, bien qu'il charge son propre prompt système et le contexte au niveau du projet comme CLAUDE.md). Il ne voit pas les tours du parent, et seule sa réponse finale retourne au parent. Le contexte de l'agent principal croît par ce résumé, pas par la transcription complète de la sous-tâche. Voir [Ce que les sous-agents héritent](/docs/fr/agent-sdk/subagents#what-subagents-inherit) pour les détails.

329* **Soyez sélectif avec les outils.** Chaque définition d'outil prend de l'espace de contexte. Utilisez le champ `tools` sur [`AgentDefinition`](/docs/fr/agent-sdk/subagents#agentdefinition-configuration) pour délimiter les sous-agents à l'ensemble minimum dont ils ont besoin.329* **Soyez sélectif avec les outils.** Chaque définition d'outil prend de l'espace de contexte. Utilisez le champ `tools` sur [`AgentDefinition`](/docs/fr/agent-sdk/subagents#agentdefinition-configuration) pour délimiter les sous-agents à l'ensemble minimum dont ils ont besoin.

330* **Surveillez les coûts des serveurs MCP.** La [recherche d'outils MCP](/docs/fr/agent-sdk/mcp#mcp-tool-search) diffère les schémas d'outils MCP par défaut et les charge à la demande. Lorsque la recherche d'outils est désactivée ou a basculé vers le chargement initial, chaque serveur MCP ajoute tous ses schémas d'outils à chaque requête, donc quelques serveurs avec de nombreux outils peuvent consommer un contexte significatif avant que l'agent ne fasse aucun travail. Voir [Configurer la recherche d'outils](/docs/fr/agent-sdk/tool-search#configure-tool-search) pour les configurations où le basculement s'applique.330* **Surveillez les coûts des serveurs MCP.** La [recherche d'outils MCP](/docs/fr/agent-sdk/mcp#mcp-tool-search) diffère les schémas d'outils MCP par défaut et les charge à la demande. Lorsque la recherche d'outils est désactivée ou a basculé vers le chargement initial, chaque serveur MCP ajoute tous ses schémas d'outils à chaque requête, donc quelques serveurs avec de nombreux outils peuvent consommer un contexte significatif avant que l'agent ne fasse aucun travail. Voir [Configurer la recherche d'outils](/docs/fr/agent-sdk/tool-search#configure-tool-search) pour les configurations où le basculement s'applique.

331* **Utilisez un effort inférieur pour les tâches de routine.** Définissez [effort](#effort-level) à `"low"` pour les agents qui n'ont besoin que de lire des fichiers ou de lister des répertoires. Cela réduit l'utilisation des tokens et le coût.331* **Utilisez un effort inférieur pour les tâches de routine.** Définissez [effort](#effort-level) à `"low"` pour les agents qui n'ont besoin que de lire des fichiers ou de lister des répertoires. Cela réduit l'utilisation des tokens et le coût.

Details

261 261 

262* **Champs de niveau supérieur** sont acceptés sur chaque événement : `systemMessage` affiche un message à l'utilisateur, et `continue` (`continue_` en Python) détermine si l'agent continue à s'exécuter après ce hook. Certains événements les rejettent ou les livrent ailleurs. La section de chaque [événement](/docs/fr/hooks#hook-events) sur la page des hooks indique où ils aboutissent.262* **Champs de niveau supérieur** sont acceptés sur chaque événement : `systemMessage` affiche un message à l'utilisateur, et `continue` (`continue_` en Python) détermine si l'agent continue à s'exécuter après ce hook. Certains événements les rejettent ou les livrent ailleurs. La section de chaque [événement](/docs/fr/hooks#hook-events) sur la page des hooks indique où ils aboutissent.

263* **`hookSpecificOutput`** contrôle l'opération actuelle. Les champs que vous définissez à l'intérieur dépendent du type d'événement hook :263* **`hookSpecificOutput`** contrôle l'opération actuelle. Les champs que vous définissez à l'intérieur dépendent du type d'événement hook :

264 * Pour les hooks `PreToolUse`, c'est là que vous définissez `permissionDecision` (`"allow"`, `"deny"`, `"ask"` ou `"defer"`), `permissionDecisionReason` et `updatedInput`. Si vous retournez `"defer"`, la requête se termine pour que vous puissiez [la reprendre plus tard](/docs/fr/hooks#defer-a-tool-call-for-later).264 * Pour les hooks `PreToolUse`, c'est là que vous définissez `permissionDecision` (`"allow"`, `"deny"`, `"ask"` ou `"defer"`), `permissionDecisionReason` et `updatedInput`. Si vous retournez `"defer"`, le tour se termine par un message de résultat dont le `stop_reason` est `"tool_deferred"`, afin que vous puissiez [reprendre l'appel plus tard](/docs/fr/hooks#defer-a-tool-call-for-later).

265 * Pour les hooks `PostToolUse`, vous pouvez définir `additionalContext` pour ajouter des informations au résultat de l'outil. Pour remplacer la sortie de l'outil avant que Claude ne la voie, définissez `updatedToolOutput`, qui fonctionne pour n'importe quel outil dans les deux SDK. Le champ plus ancien `updatedMCPToolOutput` remplace uniquement la sortie de l'outil MCP et est déprécié.265 * Pour les hooks `PostToolUse`, vous pouvez définir `additionalContext` pour ajouter des informations au résultat de l'outil. Pour remplacer la sortie de l'outil avant que Claude ne la voie, définissez `updatedToolOutput`, qui fonctionne pour n'importe quel outil dans les deux SDK. Le champ plus ancien `updatedMCPToolOutput` remplace uniquement la sortie de l'outil MCP et est déprécié.

266 * Dans le SDK TypeScript, un rappel `PostToolUse` peut également retourner `classifierContext`, une courte note sur le résultat de l'appel d'outil pour le classificateur de permission du [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode). Parce que votre rappel s'exécute dans le propre processus de votre application, le classificateur peut peser une déclaration d'utilisateur que vous relayez dans la note comme intention de l'utilisateur. Le champ nécessite le SDK Agent TypeScript v0.3.236 ou ultérieur. [Annoter un résultat pour le classificateur du mode auto](/docs/fr/hooks#annotate-a-result-for-the-auto-mode-classifier) couvre le plafond de longueur, la règle synchrone uniquement, et ce qu'il ne faut pas mettre dans la note.266 * Dans le SDK TypeScript, un rappel `PostToolUse` peut également retourner `classifierContext`, une courte note sur le résultat de l'appel d'outil pour le classificateur de permission du [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode). Parce que votre rappel s'exécute dans le propre processus de votre application, le classificateur peut peser une déclaration d'utilisateur que vous relayez dans la note comme intention de l'utilisateur. Le champ nécessite le SDK Agent TypeScript v0.3.236 ou ultérieur. [Annoter un résultat pour le classificateur du mode auto](/docs/fr/hooks#annotate-a-result-for-the-auto-mode-classifier) couvre le plafond de longueur, la règle synchrone uniquement, et ce qu'il ne faut pas mettre dans la note.

267 267 

Details

1488Utilisez avec le champ `betas` dans `ClaudeAgentOptions` pour activer les fonctionnalités bêta.1488Utilisez avec le champ `betas` dans `ClaudeAgentOptions` pour activer les fonctionnalités bêta.

1489 1489 

1490<Warning>1490<Warning>

1491 La bêta `context-1m-2025-08-07` est retirée à partir du 30 avril 2026. Passer cet en-tête avec Claude Sonnet 4.5 ou Sonnet 4 n'a aucun effet, et les requêtes qui dépassent la fenêtre de contexte standard de 200k tokens retournent une erreur. Pour utiliser une fenêtre de contexte de 1M tokens, migrez vers [Claude Opus 5.5, Claude Opus 5, Claude Sonnet 5, Claude Sonnet 4.6, Claude Opus 4.6, Claude Opus 4.7, ou Claude Opus 4.8](https://platform.claude.com/docs/en/about-claude/models/overview), qui incluent 1M de contexte à tarification standard sans en-tête bêta requis.1491 Sur l'API Claude, la bêta `context-1m-2025-08-07` est retirée pour Claude Sonnet 4.5 et Claude Sonnet 4. Si vous la passez encore avec l'un de ces modèles, les requêtes qui dépassent la fenêtre de contexte standard de 200K tokens retournent une erreur ; supprimez-la donc de `betas`. Pour exécuter une session avec une fenêtre de contexte de 1M tokens, définissez `model` sur un modèle qui [utilise la fenêtre de 1M par défaut](/docs/fr/model-config#extended-context), tel que `claude-sonnet-5-5` ou `claude-opus-5-5`. Pour un modèle qui n'atteint 1M que via sa variante `[1m]`, ajoutez le suffixe à l'ID du modèle, comme dans `claude-opus-4-6[1m]`.

1492</Warning>1492</Warning>

1493 1493 

1494<h3 id="mcpsdkserverconfig">1494<h3 id="mcpsdkserverconfig">

Details

92 Runtime sandbox92 Runtime sandbox

93</h3>93</h3>

94 94 

95Pour une isolation légère sans conteneurs, [sandbox-runtime](https://github.com/anthropic-experimental/sandbox-runtime) applique les restrictions du système de fichiers et du réseau au niveau du système d'exploitation.95Pour une isolation légère sans conteneurs, [sandbox-runtime](https://github.com/anthropics/sandbox-runtime) applique les restrictions du système de fichiers et du réseau au niveau du système d'exploitation.

96 96 

97Le principal avantage est la simplicité : aucune configuration Docker, image de conteneur ou configuration réseau requise. Le proxy et les restrictions du système de fichiers sont intégrés.97Le principal avantage est la simplicité : aucune configuration Docker, image de conteneur ou configuration réseau requise. Le proxy et les restrictions du système de fichiers sont intégrés.

98 98 


164 164 

165Avec `--network none`, le conteneur n'a aucune interface réseau. La seule façon pour l'agent d'atteindre le monde extérieur est via la prise Unix montée, qui se connecte à un proxy s'exécutant sur l'hôte. Ce proxy peut appliquer les listes blanches de domaines, injecter les identifiants et enregistrer tout le trafic.165Avec `--network none`, le conteneur n'a aucune interface réseau. La seule façon pour l'agent d'atteindre le monde extérieur est via la prise Unix montée, qui se connecte à un proxy s'exécutant sur l'hôte. Ce proxy peut appliquer les listes blanches de domaines, injecter les identifiants et enregistrer tout le trafic.

166 166 

167C'est la même architecture utilisée par [sandbox-runtime](https://github.com/anthropic-experimental/sandbox-runtime). Même si l'agent est compromis via une injection de prompt, il ne peut pas exfiltrer les données vers des serveurs arbitraires. Il ne peut communiquer que via le proxy, qui contrôle les domaines accessibles. Pour plus de détails, consultez le [billet de blog sur le sandboxing de Claude Code](https://www.anthropic.com/engineering/claude-code-sandboxing).167C'est la même architecture utilisée par [sandbox-runtime](https://github.com/anthropics/sandbox-runtime). Même si l'agent est compromis via une injection de prompt, il ne peut pas exfiltrer les données vers des serveurs arbitraires. Il ne peut communiquer que via le proxy, qui contrôle les domaines accessibles. Pour plus de détails, consultez le [billet de blog sur le sandboxing de Claude Code](https://www.anthropic.com/engineering/claude-code-sandboxing).

168 168 

169**Options de renforcement supplémentaires :**169**Options de renforcement supplémentaires :**

170 170 


385* [Documentation de sécurité de Claude Code](/docs/fr/security)385* [Documentation de sécurité de Claude Code](/docs/fr/security)

386* [Hébergement du SDK Agent](/docs/fr/agent-sdk/hosting)386* [Hébergement du SDK Agent](/docs/fr/agent-sdk/hosting)

387* [Gestion des permissions](/docs/fr/agent-sdk/permissions)387* [Gestion des permissions](/docs/fr/agent-sdk/permissions)

388* [Sandbox runtime](https://github.com/anthropic-experimental/sandbox-runtime)388* [Sandbox runtime](https://github.com/anthropics/sandbox-runtime)

389* [The Lethal Trifecta for AI Agents](https://simonwillison.net/2025/Jun/16/the-lethal-trifecta/)389* [The Lethal Trifecta for AI Agents](https://simonwillison.net/2025/Jun/16/the-lethal-trifecta/)

390* [OWASP Top 10 for LLM Applications](https://owasp.org/www-project-top-10-for-large-language-model-applications/)390* [OWASP Top 10 for LLM Applications](https://owasp.org/www-project-top-10-for-large-language-model-applications/)

391* [Docker Security Best Practices](https://docs.docker.com/engine/security/)391* [Docker Security Best Practices](https://docs.docker.com/engine/security/)

Details

378</h2>378</h2>

379 379 

380<Note>380<Note>

381 Pour les skills du projet et personnels, Claude Code applique le champ frontmatter [`allowed-tools`](/docs/fr/skills#pre-approve-tools-for-a-skill) dans les sessions du SDK. Vous pouvez également pré-approuver les outils pour ces skills via l'option `allowedTools` (`allowed_tools` en Python) dans votre configuration de requête. Les skills [synchronisés depuis claude.ai](/docs/fr/skills#how-claude-code-handles-the-frontmatter-of-a-synced-skill) suivent leurs propres règles de frontmatter.381 Dans les sessions du SDK, vous pouvez pré-approuver les outils pour un skill de projet ou personnel via le champ frontmatter [`allowed-tools`](/docs/fr/skills#pre-approve-tools-for-a-skill) du skill ou via l'option `allowedTools` (`allowed_tools` en Python) dans votre configuration de requête. Si votre organisation définit [`allowManagedPermissionRulesOnly`](/docs/fr/settings-reference#allowmanagedpermissionrulesonly) dans les paramètres gérés, Claude Code ignore les deux. Les skills [synchronisés depuis claude.ai](/docs/fr/skills#how-claude-code-handles-the-frontmatter-of-a-synced-skill) suivent leurs propres règles de frontmatter.

382</Note>382</Note>

383 383 

384Les skills s'exécutent avec les outils de la session. L'exemple ci-dessous pré-approuve `Read`, `Grep` et `Glob` avec `allowedTools` (`allowed_tools` en Python), afin que Claude puisse inspecter les fichiers lors de l'exécution du [skill security-check](#create-and-dispatch-your-first-skill) sans s'arrêter pour approbation :384Les skills s'exécutent avec les outils de la session. L'exemple ci-dessous pré-approuve `Read`, `Grep` et `Glob` avec `allowedTools` (`allowed_tools` en Python), afin que Claude puisse inspecter les fichiers lors de l'exécution du [skill security-check](#create-and-dispatch-your-first-skill) sans s'arrêter pour approbation :

Details

166 166 

167Lorsque vous exécutez l'exemple, la version TypeScript imprime chaque réponse au fur et à mesure qu'elle se termine. La boucle `receive_response()` de la version Python se termine au premier message de résultat, elle imprime donc l'analyse de sécurité ; pour lire les deux réponses, utilisez une paire `query()` et `receive_response()` par message comme indiqué dans l'[exemple de la référence Python pour continuer une conversation](/docs/fr/agent-sdk/python#example-continuing-a-conversation).167Lorsque vous exécutez l'exemple, la version TypeScript imprime chaque réponse au fur et à mesure qu'elle se termine. La boucle `receive_response()` de la version Python se termine au premier message de résultat, elle imprime donc l'analyse de sécurité ; pour lire les deux réponses, utilisez une paire `query()` et `receive_response()` par message comme indiqué dans l'[exemple de la référence Python pour continuer une conversation](/docs/fr/agent-sdk/python#example-continuing-a-conversation).

168 168 

169Si la `source` d'un bloc d'image est manquante ou n'est pas un objet, le SDK ne signale pas d'erreur. Claude Code envoie à Claude une note textuelle à la place de l'image, telle que `[Image could not be processed: image block has no source object]`, et la session se poursuit.

170 

169<Note>171<Note>

170 Dans le SDK TypeScript, si votre générateur de messages lève une exception, par exemple lorsqu'un fichier qu'il lit est manquant, le flux se termine par une erreur qui lit « Claude Code process aborted by user » au lieu de l'erreur d'origine, donc vérifiez d'abord le code à l'intérieur de votre générateur lorsque vous voyez ce message. L'erreur peut également être précédée par une longue ligne minifiée du code source du SDK groupé, donc lisez jusqu'à la fin de la sortie pour le texte d'erreur.172 Dans le SDK TypeScript, si votre générateur de messages lève une exception, par exemple lorsqu'un fichier qu'il lit est manquant, le flux se termine par une erreur qui lit « Claude Code process aborted by user » au lieu de l'erreur d'origine, donc vérifiez d'abord le code à l'intérieur de votre générateur lorsque vous voyez ce message. L'erreur peut également être précédée par une longue ligne minifiée du code source du SDK groupé, donc lisez jusqu'à la fin de la sortie pour le texte d'erreur.

171 173 

Details

204| Définitions d'outils (héritées du parent ou du sous-ensemble dans `tools`, [filtrées pour les exécutions en arrière-plan](/docs/fr/sub-agents#available-tools)) | Le prompt système du parent |204| Définitions d'outils (héritées du parent ou du sous-ensemble dans `tools`, [filtrées pour les exécutions en arrière-plan](/docs/fr/sub-agents#available-tools)) | Le prompt système du parent |

205 205 

206<Note>206<Note>

207 Le parent reçoit le message final du sous-agent comme résultat de l'outil Agent, mais peut le résumer dans sa propre réponse. Pour préserver la sortie du sous-agent textuellement dans la réponse visible par l'utilisateur, incluez une instruction pour le faire dans le prompt ou l'option `systemPrompt` que vous transmettez à l'appel `query()` principal.207 Le parent reçoit le rapport final du sous-agent, mais peut le résumer dans sa propre réponse. Pour préserver la sortie du sous-agent textuellement dans la réponse visible par l'utilisateur, incluez une instruction pour le faire dans le prompt ou l'option `systemPrompt` que vous transmettez à l'appel `query()` principal.

208 208 

209 Dans la v2.1.210 et versions ultérieures, Claude Code [analyse le message final pour détecter des motifs ressemblant à des instructions](/docs/fr/sub-agents#subagent-output-scanning) avant que le parent ne le lise. L'analyse traite trois types de motifs différemment :209 Dans la v2.1.210 et versions ultérieures, Claude Code [analyse le message final pour détecter des motifs ressemblant à des instructions](/docs/fr/sub-agents#subagent-output-scanning) avant que le parent ne le lise. L'analyse traite trois types de motifs différemment :

210 210 

Details

1562 1562 

1563`timestamp` est l'heure ISO 8601 à laquelle le contenu du message a fini de générer sur le processus qui l'a produit. La valeur provient de l'horloge de cette machine, donc utilisez-la uniquement pour l'affichage et ne triez pas les messages par elle. Un tour API peut produire plusieurs messages d'assistant qui partagent un `message.id`, chacun avec son propre `timestamp`. Quand le champ est absent, revenez à l'heure à laquelle vous avez reçu le message.1563`timestamp` est l'heure ISO 8601 à laquelle le contenu du message a fini de générer sur le processus qui l'a produit. La valeur provient de l'horloge de cette machine, donc utilisez-la uniquement pour l'affichage et ne triez pas les messages par elle. Un tour API peut produire plusieurs messages d'assistant qui partagent un `message.id`, chacun avec son propre `timestamp`. Quand le champ est absent, revenez à l'heure à laquelle vous avez reçu le message.

1564 1564 

1565`context_usage` est une copie structurée du rapport `/context`, typée comme [`SDKContextUsage`](#sdkcontextusage), et nécessite Agent SDK v0.3.232 ou ultérieur. Quand vous envoyez `/context` comme invite, Claude Code livre le rapport comme un message d'assistant dont `message.content` contient le tableau markdown, et attache `context_usage` à ce même message. Claude Code ne définit pas le champ sur aucun autre message d'assistant, et les versions antérieures livrent le tableau `/context` sans lui, donc lisez la ventilation du champ quand il est présent et revenez au texte markdown quand il ne l'est pas.1565`context_usage` est une copie structurée du rapport `/context`, typée comme [`SDKContextUsage`](#sdkcontextusage), et nécessite Agent SDK v0.3.232 ou ultérieur. Quand vous envoyez `/context` comme prompt, Claude Code livre le rapport comme un message d'assistant dont `message.content` contient le tableau markdown, et attache `context_usage` à ce même message. Claude Code ne définit le champ sur aucun autre message d'assistant, et les versions antérieures livrent le tableau `/context` sans lui, donc lisez la ventilation du champ quand il est présent et revenez au texte markdown quand il ne l'est pas.

1566 1566 

1567<h3 id="sdkusermessage">1567<h3 id="sdkusermessage">

1568 `SDKUserMessage`1568 `SDKUserMessage`


1587};1587};

1588```1588```

1589 1589 

1590Définissez `pasted_content` pour envoyer du contenu que l'utilisateur a collé dans votre interface d'invite plutôt que tapé, une entrée par collage, chacune étant une chaîne ou un tableau de blocs de contenu. Claude Code ajoute le texte de chaque entrée après le texte tapé, dans l'ordre, et peut envelopper chaque collage dans des balises `<pasted_content>`. Les blocs autres que le texte sont ignorés, donc envoyez les images et les documents dans `message.content`. Nécessite Agent SDK v0.3.277 ou ultérieur.1590Définissez `pasted_content` pour envoyer du contenu que l'utilisateur a collé dans votre interface de prompt plutôt que tapé, une entrée par collage, chacune étant une chaîne ou un tableau de blocs de contenu. Claude Code ajoute le texte de chaque entrée après le texte tapé, dans l'ordre, et peut envelopper chaque collage dans des balises `<pasted_content>`. Les blocs autres que le texte sont ignorés, donc envoyez les images et les documents dans `message.content`. Nécessite Agent SDK v0.3.277 ou ultérieur.

1591 1591 

1592Définissez `shouldQuery` ou `client_composed` pour modifier la façon dont Claude Code gère un message que vous envoyez :1592Définissez `shouldQuery` ou `client_composed` pour modifier la façon dont Claude Code gère un message que vous envoyez :

1593 1593 


1596 1596 

1597Sur un message qui porte un bloc `tool_result`, `tool_use_result` est l'objet de sortie structuré de l'outil plutôt que le texte envoyé au modèle. Sa forme dépend de l'outil nommé par le bloc `tool_use` correspondant, donc le champ est typé `unknown` ; les formes intégrées sont listées sous [Types de sortie d'outil](#tool-output-types).1597Sur un message qui porte un bloc `tool_result`, `tool_use_result` est l'objet de sortie structuré de l'outil plutôt que le texte envoyé au modèle. Sa forme dépend de l'outil nommé par le bloc `tool_use` correspondant, donc le champ est typé `unknown` ; les formes intégrées sont listées sous [Types de sortie d'outil](#tool-output-types).

1598 1598 

1599Pour l'outil `Agent`, `tool_use_result` est [`AgentOutput`](#agent-2). Sur un résultat `completed`, `content` contient le rapport du sous-agent sans l'ID d'agent et la remorque d'utilisation que Claude Code ajoute au texte `tool_result`, donc rendez à partir de `tool_use_result` au lieu d'analyser ce texte.1599Pour l'outil `Agent`, `tool_use_result` est [`AgentOutput`](#agent-2). Effectuez le rendu à partir de celui-ci plutôt que d'analyser le texte `tool_result`. Le `content` d'un résultat `completed` contient le rapport du sous-agent ou, pour un sous-agent dont le rapport passe par un appel d'outil `SubagentHandback`, une courte note sur cette remise à la place du rapport. En [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) sur Claude Code v2.1.271 ou ultérieur, chaque sous-agent qui produit un résultat `completed` remet son rapport de cette façon, sauf s'il s'agit d'un [fork](/docs/fr/sub-agents#fork-the-current-conversation), et Claude reçoit le rapport comme un message distinct de la part du sous-agent.

1600 1600 

1601Pour un outil MCP dont le résultat contient des blocs `resource_link`, `tool_use_result` est un objet avec un tableau `resourceLinks` d'entrées [`SDKMcpResourceLink`](#sdkmcpresourcelink). Claude reçoit chaque lien comme une ligne de texte dans le bloc `tool_result`, donc lisez `resourceLinks` pour rendre les fichiers que le serveur a retournés au lieu d'analyser ce texte. Claude Code omet `resourceLinks` quand le résultat n'a pas de liens et sur les résultats des sous-agents, conserve au maximum 50 liens par résultat, et arrête d'ajouter des liens une fois que le tableau atteint 64 KiB de JSON sérialisé. `resourceLinks` nécessite Agent SDK v0.3.257 ou ultérieur.1601Pour un outil MCP dont le résultat contient des blocs `resource_link`, `tool_use_result` est un objet avec un tableau `resourceLinks` d'entrées [`SDKMcpResourceLink`](#sdkmcpresourcelink). Claude reçoit chaque lien comme une ligne de texte dans le bloc `tool_result`, donc lisez `resourceLinks` pour rendre les fichiers que le serveur a retournés au lieu d'analyser ce texte. Claude Code omet `resourceLinks` quand le résultat n'a pas de liens et sur les résultats des sous-agents, conserve au maximum 50 liens par résultat, et arrête d'ajouter des liens une fois que le tableau atteint 64 KiB de JSON sérialisé. `resourceLinks` nécessite Agent SDK v0.3.257 ou ultérieur.

1602 1602 

1603Définissez `inline_pastes` pour dire à Claude Code quelles parties de `message.content` l'utilisateur a collées plutôt que tapées, une chaîne par collage. Le texte d'invite reste où l'utilisateur l'a mis. Claude Code peut envelopper chaque collage listé dans des balises `<pasted_content>` où il se tient, donc Claude peut distinguer le matériel collé des propres paroles de l'utilisateur. Seuls les collages du dernier bloc de texte de l'invite sont enveloppés. Nécessite TypeScript Agent SDK v0.3.280 ou ultérieur.1603Définissez `inline_pastes` pour dire à Claude Code quelles parties de `message.content` l'utilisateur a collées plutôt que tapées, une chaîne par collage. Le texte du prompt reste où l'utilisateur l'a mis. Claude Code peut envelopper chaque collage listé dans des balises `<pasted_content>` là où il se trouve, afin que Claude puisse distinguer le contenu collé des propres paroles de l'utilisateur. Seuls les collages du dernier bloc de texte du prompt sont enveloppés. Nécessite TypeScript Agent SDK v0.3.280 ou ultérieur.

1604 1604 

1605<h3 id="sdkusermessagereplay">1605<h3 id="sdkusermessagereplay">

1606 `SDKUserMessageReplay`1606 `SDKUserMessageReplay`


1704Plusieurs champs sur le résultat portent des détails de diagnostic au-delà de `subtype` :1704Plusieurs champs sur le résultat portent des détails de diagnostic au-delà de `subtype` :

1705 1705 

1706* `api_error_status` : le code de statut HTTP de l'erreur API qui a terminé la conversation. Absent ou `null` quand le tour s'est terminé sans erreur API.1706* `api_error_status` : le code de statut HTTP de l'erreur API qui a terminé la conversation. Absent ou `null` quand le tour s'est terminé sans erreur API.

1707* `ttft_ms` : temps jusqu'au premier jeton en millisecondes, mesuré quand le premier message d'assistant complet arrive. Présent sur le bras de succès uniquement.1707* `ttft_ms` : temps jusqu'au premier token en millisecondes, mesuré quand le premier message d'assistant complet arrive. Présent sur le bras de succès uniquement.

1708* `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 sur le bras de succès uniquement.1708* `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 en streaming le premier message. Présent sur le bras de succès uniquement.

1709* `user_message_uuid` : l'`uuid` du message que vous avez envoyé que ce tour a répondu. Voir [`user_message_uuid`](#user_message_uuid) pour savoir quels résultats le portent.1709* `user_message_uuid` : l'`uuid` du message que vous avez envoyé auquel ce tour a répondu. Voir [`user_message_uuid`](#user_message_uuid) pour savoir quels résultats le portent.

1710* `user_message_uuids` : les `uuid`s de chaque message que vous avez envoyé que Claude Code a répondu dans ce tour. Voir [`user_message_uuids`](#user_message_uuids).1710* `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).

1711* `resume_reason` : pourquoi Claude Code a réexécuté ce tour après un redémarrage qui l'a interrompu. Présent sur les deux bras, et uniquement sur une telle réexécution. Voir [`resume_reason`](#resume_reason).1711* `resume_reason` : pourquoi Claude Code a réexécuté ce tour après un redémarrage qui l'a interrompu. Présent sur les deux bras, et uniquement sur une telle réexécution. Voir [`resume_reason`](#resume_reason).

1712*1712* `local_command` : le nom de la commande que le tour a envoyée, sur le résultat de succès d'un tour qu'une commande a complété sans entrer dans la boucle d'agent, comme `/compact`. Le nom est converti en lettres minuscules et traits de soulignement, donc `/reload-plugins` rapporte `reload_plugins`. Une commande qu'un serveur MCP fournit, et le `/mcp` intégré, rapportent `mcp`. Une commande que vous avez définie vous-même rapporte `custom`. Les arguments ne sont jamais inclus. Absent sur chaque tour qui est entré dans la boucle d'agent et sur les envois qui n'ont exécuté aucune commande. Nécessite Agent SDK v0.3.268 ou ultérieur.

1713 1713* `request_sent_wall_ms` : millisecondes d'époque auxquelles Claude Code a envoyé la requête API, pour les jointures avec les 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 requête API.

1714`local_command` : le nom de la commande que le tour a envoyée, sur le résultat de succès d'un tour qu'une commande a complété sans entrer dans la boucle d'agent, comme `/compact`. Le nom est plié en lettres minuscules et traits de soulignement, donc `/reload-plugins` rapporte `reload_plugins`. Une commande qu'un serveur MCP fournit, et le `/mcp` intégré, rapportent `mcp`. Une commande que vous avez définie vous-même rapporte `custom`. Les arguments ne sont jamais inclus. Absent sur chaque tour qui a entré la boucle d'agent et sur les envois qui n'ont exécuté aucune commande. Nécessite Agent SDK v0.3.268 ou ultérieur.1714* `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.

1715 1715* `first_stream_post_ms`, `first_stream_post_ack_ms`, `first_stream_post_wall_ms` : chronométrages pour le téléversement du premier événement de flux du tour. Claude Code les enregistre uniquement dans les sessions qu'il diffuse en streaming 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.

1716* `request_sent_wall_ms` : millisecondes d'époque auxquelles Claude Code a envoyé la requête API, pour les jointures contre les 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 requête API.1716* `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 streaming. Préférez `modelUsage` pour la comptabilité des tokens/coûts.

1717*1717* `modelUsage` : totaux par modèle pour chaque appel de modèle effectué via le pipeline de requête pendant cet appel `query()`, y compris la boucle principale, les sous-agents et les appels internes tels que la compaction et les agents Workflow. Les appels d'assistance en dehors de ce pipeline, comme le classifieur de permissions et les requêtes de comptage de tokens, sont exclus. Un appel qui reprend une session compte également les [totaux par modèle restaurés à partir des appels antérieurs de la session](/docs/fr/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls). Dans les sessions d'entrée en streaming, les totaux sont cumulatifs entre les tours, donc lisez le dernier résultat plutôt que de faire la somme entre les résultats. Voir [Suivre les coûts en mode d'entrée en streaming](/docs/fr/agent-sdk/cost-tracking#track-costs-in-streaming-input-mode) pour les réinitialisations et [Récupérer les totaux après un crash de session](/docs/fr/agent-sdk/cost-tracking#recover-totals-after-a-session-crash) pour les résultats mis à zéro.

1718 

1719`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.

1720 

1721*

1722 

1723`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 à 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.

1724 

1725* `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 flux. Préférez `modelUsage` pour la comptabilité des jetons/coûts.

1726* `modelUsage` : totaux par modèle pour chaque appel de modèle effectué via le pipeline de requête pendant cet appel `query()`, y compris la boucle principale, les sous-agents et les appels internes tels que la compaction et les agents Workflow. Les appels d'assistance en dehors de ce pipeline, comme le classificateur de permissions et les demandes de comptage de jetons, sont exclus. Un appel qui reprend une session compte également les [totaux par modèle restaurés à partir des appels antérieurs de la session](/docs/fr/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls). Dans les sessions d'entrée en flux, les totaux sont cumulatifs entre les tours, donc lisez le dernier résultat plutôt que de faire la somme entre les résultats. Voir [Suivre les coûts en mode d'entrée en flux](/docs/fr/agent-sdk/cost-tracking#track-costs-in-streaming-input-mode) pour les réinitialisations et [Récupérer les totaux après un crash de session](/docs/fr/agent-sdk/cost-tracking#recover-totals-after-a-session-crash) pour les résultats mis à zéro.

1727* `total_cost_usd` : coût estimé cumulatif en USD, couvrant les mêmes appels que `modelUsage` et réinitialisé aux mêmes points. Un appel qui reprend une session compte également les [totaux restaurés à partir des appels antérieurs de la session](/docs/fr/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls). C'est une estimation, pas un relevé de facturation. Voir [Suivre le coût et l'utilisation](/docs/fr/agent-sdk/cost-tracking) pour les avertissements de précision.1718* `total_cost_usd` : coût estimé cumulatif en USD, couvrant les mêmes appels que `modelUsage` et réinitialisé aux mêmes points. Un appel qui reprend une session compte également les [totaux restaurés à partir des appels antérieurs de la session](/docs/fr/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls). C'est une estimation, pas un relevé de facturation. Voir [Suivre le coût et l'utilisation](/docs/fr/agent-sdk/cost-tracking) pour les avertissements de précision.

1728* `queued_turn_count` : le nombre de messages que vous avez envoyés avec `origin: { kind: "human" }` qui attendent toujours quand Claude Code a produit le résultat. Voir [`queued_turn_count`](#queued_turn_count) pour ce que `0` et un champ absent vous disent.1719* `queued_turn_count` : le nombre de messages que vous avez envoyés avec `origin: { kind: "human" }` qui attendent toujours quand Claude Code a produit le résultat. Voir [`queued_turn_count`](#queued_turn_count) pour ce que `0` et un champ absent vous indiquent.

1729*1720* `result_index` : où ce résultat se situe dans l'ordre de livraison de l'exécution, en comptant à partir de 0 sur chaque résultat que le processus écrit. Présent sur les deux bras. Un résultat dont l'écriture échoue consomme toujours son numéro, donc un écart dans la séquence signifie qu'un résultat a été perdu. Nécessite Agent SDK v0.3.268 ou ultérieur.

1730 1721* `startup_failure_reason` : pourquoi Claude Code a refusé de démarrer, sur le résultat `error_during_execution` qu'il écrit avant de quitter sur une défaillance de démarrage connue. Voir [`startup_failure_reason`](#startup_failure_reason) pour les valeurs et quelles défaillances le portent. Nécessite Agent SDK v0.3.274 ou ultérieur.

1731`result_index` : où ce résultat se situe dans l'ordre de livraison de l'exécution, en comptant à partir de 0 sur chaque résultat que le processus écrit. Présent sur les deux bras. Un résultat dont l'écriture échoue consomme toujours son numéro, donc un écart dans la séquence signifie qu'un résultat a été perdu. Nécessite Agent SDK v0.3.268 ou ultérieur.

1732 

1733*

1734 

1735`startup_failure_reason` : pourquoi Claude Code a refusé de démarrer, sur le résultat `error_during_execution` qu'il écrit avant de quitter sur une défaillance de démarrage connue. Voir [`startup_failure_reason`](#startup_failure_reason) pour les valeurs et quelles défaillances la portent. Nécessite Agent SDK v0.3.274 ou ultérieur.

1736 

1737* `terminal_reason` : pourquoi la boucle s'est terminée. L'un de `"completed"`, `"max_turns"`, `"tool_deferred"`, `"aborted_streaming"`, `"aborted_tools"`, `"hook_stopped"`, `"stop_hook_prevented"`, `"background_requested"`, `"blocking_limit"`, `"rapid_refill_breaker"`, `"prompt_too_long"`, `"image_error"`, `"model_error"`, `"api_error"`, `"malformed_tool_use_exhausted"`, `"budget_exhausted"`, `"structured_output_retry_exhausted"`, `"tool_deferred_unavailable"`, ou `"turn_setup_failed"`.1722* `terminal_reason` : pourquoi la boucle s'est terminée. L'un de `"completed"`, `"max_turns"`, `"tool_deferred"`, `"aborted_streaming"`, `"aborted_tools"`, `"hook_stopped"`, `"stop_hook_prevented"`, `"background_requested"`, `"blocking_limit"`, `"rapid_refill_breaker"`, `"prompt_too_long"`, `"image_error"`, `"model_error"`, `"api_error"`, `"malformed_tool_use_exhausted"`, `"budget_exhausted"`, `"structured_output_retry_exhausted"`, `"tool_deferred_unavailable"`, ou `"turn_setup_failed"`.

1738* `fast_mode_state` : l'un de `"on"`, `"off"`, ou `"cooldown"`.1723* `fast_mode_state` : l'un de `"on"`, `"off"`, ou `"cooldown"`.

1739* `fast_mode_disabled_reason` : pourquoi le [mode rapide](/docs/fr/fast-mode) n'est pas disponible en ce moment. Absent quand rien ne bloque le mode rapide, bien qu'une requête puisse toujours s'exécuter à vitesse standard. Pendant le refroidissement après une limite de débit du mode rapide, Claude Code rapporte `fast_mode_state: "cooldown"` sans code de raison et réactive le mode rapide quand le refroidissement expire. Nécessite Claude Code v2.1.219 ou ultérieur.1724* `fast_mode_disabled_reason` : pourquoi le [mode rapide](/docs/fr/fast-mode) n'est pas disponible en ce moment. Absent quand rien ne bloque le mode rapide, bien qu'une requête puisse toujours s'exécuter à vitesse standard. Pendant le refroidissement après une limite de débit du mode rapide, Claude Code rapporte `fast_mode_state: "cooldown"` sans code de raison et réactive le mode rapide quand le refroidissement expire. Nécessite Claude Code v2.1.219 ou ultérieur.


1755 1740 

1756La même paire de champs apparaît sur [`SDKSystemMessage`](#sdksystemmessage) et sur [`SDKControlInitializeResponse`](#sdkcontrolinitializeresponse), donc vous pouvez lire l'état du mode rapide avant le premier tour.1741La même paire de champs apparaît sur [`SDKSystemMessage`](#sdksystemmessage) et sur [`SDKControlInitializeResponse`](#sdkcontrolinitializeresponse), donc vous pouvez lire l'état du mode rapide avant le premier tour.

1757 1742 

1758Le champ `origin` transmet le [`SDKMessageOrigin`](#sdkmessageorigin) du message utilisateur qui a déclenché ce résultat. Quand le SDK injecte un tour de suivi synthétique, comme pour une tâche de fond terminée, le `SDKResultMessage` résultant porte `origin: { kind: "task-notification" }`. Les routines dont le déclencheur s'est déclenché et les messages vérifiés par le serveur de vos autres sessions arrivent avec ce type aussi, chacun avec le `subkind` décrit dans [Sous-types de notification de tâche](#task-notification-subkinds). Vérifiez `kind` pour distinguer les résultats qui répondent à votre invite des suivis injectés avant de les router ou de les supprimer. Si votre application [déclare des exécutions planifiées](#declare-a-scheduled-run), leurs résultats portent `kind: "task-notification"` aussi, donc ne supprimez pas sur `kind` seul.1743Le champ `origin` transmet le [`SDKMessageOrigin`](#sdkmessageorigin) du message utilisateur qui a déclenché ce résultat. Quand le SDK injecte un tour de suivi synthétique, comme pour une tâche en arrière-plan terminée, le `SDKResultMessage` résultant porte `origin: { kind: "task-notification" }`. Les routines dont le déclencheur s'est déclenché et les messages vérifiés par le serveur provenant de vos autres sessions arrivent aussi avec ce type, chacun avec le `subkind` décrit dans [Sous-types de notification de tâche](#task-notification-subkinds). Vérifiez `kind` pour distinguer les résultats qui répondent à votre prompt des suivis injectés avant de les router ou de les supprimer. Si votre application [déclare des exécutions planifiées](#declare-a-scheduled-run), leurs résultats portent aussi `kind: "task-notification"`, donc ne supprimez pas sur la base de `kind` seul.

1759 1744 

1760Quand plusieurs complétions de tâche de fond sont mises en file d'attente ensemble, Claude Code peut les répondre en un seul tour plutôt qu'un tour chacun. Chaque complétion produit toujours son propre résultat avec cette origine. Tous sauf le dernier des complétions que Claude Code répond ensemble produisent des résultats vides avec `num_turns: 0`, dans l'ordre, et le résultat du dernier porte le tour qui les répond tous.1745Quand plusieurs complétions de tâches en arrière-plan sont mises en file d'attente ensemble, Claude Code peut y répondre en un seul tour plutôt qu'en un tour chacune. Chaque complétion produit toujours son propre résultat avec cette origine. Toutes les complétions auxquelles Claude Code répond ensemble, sauf la dernière, produisent des résultats vides avec `num_turns: 0`, dans l'ordre, et le résultat de la dernière porte le tour qui répond à toutes.

1761 1746 

1762Le champ est absent pour les résultats émis avant tout tour utilisateur, comme les erreurs de démarrage.1747Le champ est absent pour les résultats émis avant tout tour utilisateur, comme les erreurs de démarrage.

1763 1748 

1764Quand un hook `PreToolUse` retourne `permissionDecision: "defer"`, le résultat a `stop_reason: "tool_deferred"` et `deferred_tool_use` porte l'`id`, le `name` et l'`input` de l'outil en attente. Lisez ce champ pour afficher la requête dans votre propre interface utilisateur, puis reprenez avec le même `session_id` pour continuer. Voir [Différer un appel d'outil pour plus tard](/docs/fr/hooks#defer-a-tool-call-for-later) pour le trajet complet.1749Quand un hook `PreToolUse` retourne `permissionDecision: "defer"`, le résultat a `stop_reason: "tool_deferred"` et `deferred_tool_use` porte l'`id`, le `name` et l'`input` de l'outil en attente. Lisez ce champ pour afficher la demande dans votre propre interface utilisateur, puis reprenez avec le même `session_id` pour continuer. Voir [Différer un appel d'outil pour plus tard](/docs/fr/hooks#defer-a-tool-call-for-later) pour le trajet complet.

1765 1750 

1766<h4 id="user_message_uuid">1751<h4 id="user_message_uuid">

1767 `user_message_uuid`1752 `user_message_uuid`

1768</h4>1753</h4>

1769 1754 

1770L'`uuid` du [`SDKUserMessage`](#sdkusermessage) auquel le tour répond, répété pour que vous puissiez faire correspondre la réponse de Claude Code au message que vous avez envoyé. Claude Code répète un `uuid` uniquement si vous en définissez un sur le message. Le champ est optionnel sur `SDKUserMessage`, et une invite de chaîne passée à `query()` n'en porte aucune.1755L'`uuid` du [`SDKUserMessage`](#sdkusermessage) auquel le tour répond, renvoyé en écho pour que vous puissiez faire correspondre la réponse de Claude Code au message que vous avez envoyé. Claude Code renvoie un `uuid` uniquement si vous en définissez un sur le message. Le champ est optionnel sur `SDKUserMessage`, et un prompt sous forme de chaîne passé à `query()` n'en porte aucun.

1771 1756 

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

1773 1758 

1774* **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 seul 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).1759* **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 seul 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).

1775*1760* **Un message que vous avez envoyé avec `isSynthetic: true`** : le tour répond d'abord à ce message. Si Claude Code prend en compte un message régulier de votre part entre les appels d'outils, le tour répond à ce message à partir de là. Renvoyer l'`uuid` d'un message synthétique nécessite Agent SDK v0.3.265 ou ultérieur ; les versions antérieures ne renvoient rien sur les tours synthétiques.

1776 1761* **Le prompt que Claude Code génère pour réexécuter un tour interrompu sous [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/fr/env-vars)** : quand le dernier prompt du tour interrompu est un message régulier que vous avez envoyé, qu'il ait ouvert le tour ou que Claude Code l'ait pris en compte pendant le tour, la réexécution répond d'abord à ce message. [`resume_reason`](#resume_reason) permet de distinguer les cadres de la réexécution de ceux de la tentative interrompue. Quand le dernier prompt n'est pas un message régulier de votre part, la réexécution ne répond d'abord à aucun message de votre part. Si Claude Code prend en compte un message régulier de votre part entre les appels d'outils, le tour répond à ce message à partir de là. Renvoyer le prompt du tour interrompu nécessite Agent SDK v0.3.268 ou ultérieur.

1777**Un message que vous avez envoyé avec `isSynthetic: true`** : le tour répond d'abord à ce message. Si Claude Code reprend un message régulier de votre part entre les appels d'outil, le tour répond au message repris à 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.1762* **Tout autre prompt que Claude Code a généré lui-même** : le tour ne répond d'abord à aucun message de votre part et ses cadres ne portent aucun écho. Si Claude Code prend en compte un message régulier de votre part entre les appels d'outils, le tour répond à ce message à partir de là. L'écho de prise en compte nécessite Agent SDK v0.3.265 ou ultérieur ; les versions antérieures ne renvoient rien sur ces tours.

1778 

1779*

1780 

1781**L'invite que Claude Code génère pour réexécuter un tour interrompu sous [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/fr/env-vars)** : quand la dernière invite du tour interrompu est un message régulier que vous avez envoyé, qu'il ait ouvert le tour ou que Claude Code l'ait repris pendant le tour, la réexécution répond d'abord à ce message. [`resume_reason`](#resume_reason) indique les cadres de la réexécution à partir de la tentative interrompue. Quand la dernière invite n'est pas un message régulier de votre part, la réexécution ne répond d'abord à aucun message de votre part. Si Claude Code reprend un message régulier de votre part entre les appels d'outil, le tour répond au message repris à partir de là. Répéter l'invite du tour interrompu nécessite Agent SDK v0.3.268 ou ultérieur.

1782 

1783*

1784 

1785**Toute autre invite que Claude Code a générée lui-même** : le tour ne répond d'abord à aucun message de votre part et ses cadres ne portent aucun écho. Si Claude Code reprend un message régulier de votre part entre les appels d'outil, le tour répond à ce message à partir de là. L'écho de reprise nécessite Agent SDK v0.3.265 ou ultérieur ; les versions antérieures ne répètent rien sur ces tours.

1786 

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

1788 

1789* **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 démarré lui manquait quand le tour n'a envoyé aucune requête API ou s'est terminé avec un appel d'outil différé. Avant v0.3.246, les résultats d'erreur lui manquaient aussi, et avant v0.3.216 chaque résultat le faisait.

1790*

1791 1763 

1792**La première réponse du tour** : le premier [message d'assistant](#sdkassistantmessage), ou avec `includePartialMessages` le premier [événement de flux](#sdkpartialassistantmessage) dont `event.type` n'est pas `ping`, pour 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 d'assistant à la place. L'écho de première réponse nécessite Agent SDK v0.3.246 ou ultérieur. Quand le message auquel le tour répond change en cours de tour, la première 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.1764Claude Code renvoie l'`uuid` du message auquel il répond sur trois types de cadre :

1793 1765 

1794*1766* **Le résultat** : chaque résultat d'un tour qui a répondu à un message que vous avez envoyé. Chacun de ces résultats le porte sur Agent SDK v0.3.265 ou ultérieur. Avant v0.3.265, le résultat de succès d'un tour démarré par un message régulier ne le portait pas quand le tour n'envoyait aucune requête API ou se terminait par un appel d'outil différé. Avant v0.3.246, les résultats d'erreur ne le portaient pas non plus, et avant v0.3.216 aucun résultat ne le portait.

1795 1767* **La première réponse du tour** : le premier [message d'assistant](#sdkassistantmessage) et, avec `includePartialMessages`, également le premier [événement de flux](#sdkpartialassistantmessage) dont `event.type` n'est pas `ping`, pour que vous puissiez lier la réponse avant l'arrivée du résultat. L'écho de première réponse nécessite Agent SDK v0.3.246 ou ultérieur. Avant v0.3.269, avec `includePartialMessages`, Claude Code le définissait uniquement sur ce premier événement de flux, ou sur le premier message d'assistant quand le tour ne diffusait rien en streaming. Quand le message auquel le tour répond change en cours de tour, la première réponse après le changement porte aussi le champ, sur Agent SDK v0.3.265 ou ultérieur ; les versions antérieures le définissent sur un seul cadre de réponse par tour.

1796**Chaque cadre [`thinking_tokens`](#sdkthinkingtokensmessage) du tour** : pour 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.1768* **Chaque cadre [`thinking_tokens`](#sdkthinkingtokensmessage) du tour** : pour 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.

1797 1769 

1798Claude Code omet le champ dans ces cas :1770Claude Code omet le champ dans ces cas :

1799 1771 

1800* Cadres de réponse autres que ces premières réponses1772* Cadres de réponse autres que ces premières réponses

1801* Cadres de sous-agent1773* Cadres de sous-agent

1802* Tours qui ne répondent à aucun message de votre part, ou répondent à un message que vous avez envoyé sans `uuid`1774* Tours qui ne répondent à aucun message de votre part, ou répondent à un message que vous avez envoyé sans `uuid`

1803* 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 de travail1775* Résultats qui ne répondent à aucun message que vous avez envoyé, comme le résultat mis à zéro après un crash du processus worker

1804 1776 

1805<h4 id="user_message_uuids">1777<h4 id="user_message_uuids">

1806 `user_message_uuids`1778 `user_message_uuids`

1807</h4>1779</h4>

1808 1780 

1809Les `uuid`s de chaque message que vous avez envoyé que Claude Code a répondu dans ce tour. Quand vous envoyez plusieurs messages rapprochés, Claude Code peut les fusionner en un seul 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.1781Les `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 seul 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.

1810 1782 

1811Claude 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.1783Claude 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 du tour qui renvoient l'`uuid` du message auquel il est répondu, 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.

1812 1784 

1813Quand Claude Code reprend 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.1785Quand Claude Code prend en compte 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.

1814 1786 

1815Quand 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.1787Quand 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.

1816 1788 


1818 `resume_reason`1790 `resume_reason`

1819</h4>1791</h4>

1820 1792 

1821Pourquoi Claude Code a réexécuté ce tour après un redémarrage. Claude Code définit ce champ sur un tour qu'il a réexécuté sous [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/fr/env-vars), pour que vous puissiez distinguer la réexécution de la tentative interrompue. Nécessite Agent SDK v0.3.268 ou ultérieur.1793Pourquoi Claude Code a réexécuté ce tour après un redémarrage. Claude Code définit ce champ sur un tour qu'il a réexécuté sous [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/fr/env-vars), pour que vous puissiez distinguer la réponse et le résultat de la réexécution de ceux de la tentative interrompue. Nécessite Agent SDK v0.3.268 ou ultérieur.

1822 1794 

1823Claude Code définit le champ sur deux types de cadre :1795Claude Code définit le champ sur deux types de cadre :

1824 1796 

1825* **Le résultat de la réexécution** : sur les bras de succès et d'erreur, que le résultat porte ou non `user_message_uuid`.1797* **Le résultat de la réexécution** : sur les bras de succès et d'erreur, que le résultat porte ou non `user_message_uuid`.

1826* **Les cadres de réponse de la réexécution** : ceux qui portent [`user_message_uuid`](#user_message_uuid).1798* **Les cadres de réponse de la réexécution** : ceux qui portent [`user_message_uuid`](#user_message_uuid).

1827 1799 

1828La valeur est un jeton minuscule court nommant pourquoi le tour a été réexécuté, comme `interrupted_turn`. Le champ est absent sur chaque autre tour.1800La valeur est un court jeton en minuscules indiquant pourquoi le tour a été réexécuté, comme `interrupted_turn`. Le champ est absent sur tous les autres tours.

1829 1801 

1830<h4 id="queued_turn_count">1802<h4 id="queued_turn_count">

1831 `queued_turn_count`1803 `queued_turn_count`


1833 1805 

1834Le nombre de messages que vous avez envoyés avec [`origin: { kind: "human" }`](#sdkmessageorigin) qui attendent toujours dans la file de commandes quand Claude Code a produit le résultat. Nécessite Agent SDK v0.3.242 ou ultérieur.1806Le nombre de messages que vous avez envoyés avec [`origin: { kind: "human" }`](#sdkmessageorigin) qui attendent toujours dans la file de commandes quand Claude Code a produit le résultat. Nécessite Agent SDK v0.3.242 ou ultérieur.

1835 1807 

1836Ce que `0` et un champ absent vous disent :1808Ce que `0` et un champ absent vous indiquent :

1837 1809 

1838* **`0`** : Claude Code ne compte pas les messages que vous avez envoyés sans ce `origin`, et ne compte pas les notifications de tâche, donc un tour peut toujours suivre.1810* **`0`** : Claude Code ne compte pas les messages que vous avez envoyés sans cet `origin`, et ne compte pas les notifications de tâche, donc un tour peut toujours suivre.

1839* **Absent** : le résultat final que Claude Code émet après un crash ou une erreur de démarrage fatale omet le champ, et [peut porter des totaux mis à zéro](/docs/fr/agent-sdk/cost-tracking#recover-totals-after-a-session-crash).1811* **Absent** : le résultat final que Claude Code émet après un crash ou une erreur de démarrage fatale omet le champ, et [peut porter des totaux mis à zéro](/docs/fr/agent-sdk/cost-tracking#recover-totals-after-a-session-crash).

1840 1812 

1841<h4 id="startup_failure_reason">1813<h4 id="startup_failure_reason">

1842 `startup_failure_reason`1814 `startup_failure_reason`

1843</h4>1815</h4>

1844 1816 

1845Pourquoi Claude Code a refusé de démarrer, pour que votre application puisse offrir la correction au lieu d'une nouvelle tentative. Claude Code le définit sur le résultat `error_during_execution` qu'il écrit avant de quitter sur une défaillance de démarrage connue. Ce résultat porte des totaux mis à zéro, et son tableau `errors` porte le même texte que stderr. Le champ est absent sur tous les autres résultats. Nécessite Agent SDK v0.3.274 ou ultérieur.1817Pourquoi Claude Code a refusé de démarrer, pour que votre application puisse proposer la correction au lieu d'une nouvelle tentative. Claude Code le définit sur le résultat `error_during_execution` qu'il écrit avant de quitter sur une défaillance de démarrage connue. Ce résultat porte des totaux mis à zéro, et son tableau `errors` porte le même texte que stderr. Le champ est absent sur tous les autres résultats. Nécessite Agent SDK v0.3.274 ou ultérieur.

1846 1818 

1847Définissez `CLAUDE_CODE_STARTUP_FAILURE_RESULTS` à `1` dans [`env`](#options) pour recevoir ce résultat pour chaque valeur `SDKStartupFailureReason`. Sans cette variable, Claude Code écrit le résultat uniquement pour ces défaillances, et le reste se termine par une sortie stderr, un code de sortie non nul et aucun message de résultat :1819Définissez `CLAUDE_CODE_STARTUP_FAILURE_RESULTS` à `1` dans [`env`](#options) pour recevoir ce résultat pour chaque valeur `SDKStartupFailureReason`. Sans cette variable, Claude Code écrit le résultat uniquement pour ces défaillances, et les autres se terminent par une sortie stderr, un code de sortie non nul et aucun message de résultat :

1848 1820 

1849* Une reprise que Claude Code arrête parce qu'elle [ne peut pas retourner la session à son worktree](/docs/fr/worktrees#the-session-resumes-outside-its-worktree), avec `worktree_unverified` ou `worktree_resume_refused`. Cette section dit quelle erreur porte quelle valeur.1821* Une reprise que Claude Code arrête parce qu'il [ne peut pas ramener la session dans son worktree](/docs/fr/worktrees#the-session-resumes-outside-its-worktree), avec `worktree_unverified` ou `worktree_resume_refused`. Cette section indique quelle erreur porte quelle valeur.

1850* Une [`continue`](#options) refusée d'une conversation qu'une session de fond tient, avec `session_held_by_background`. Pour une [`resume`](#options) refusée d'une telle conversation, Claude Code écrit le résultat uniquement quand la variable est définie.1822* Un [`continue`](#options) refusé d'une conversation détenue par une session en arrière-plan, avec `session_held_by_background`. Pour un [`resume`](#options) refusé d'une telle conversation, Claude Code écrit le résultat uniquement quand la variable est définie.

1851 1823 

1852```typescript theme={null}1824```typescript theme={null}

1853type SDKStartupFailureReason =1825type SDKStartupFailureReason =


1874 1846 

1875| Valeur | Ce qui a arrêté la session |1847| Valeur | Ce qui a arrêté la session |

1876| :- | :- |1848| :- | :- |

1877| `org_pin_api_key_conflict` | Les paramètres gérés [nécessitent une connexion de première partie ou Cloud gateway](/docs/fr/authentication#restrict-login-to-your-organization), et une clé API Anthropic, un jeton d'authentification ou un `apiKeyHelper` est configuré à la place |1849| `org_pin_api_key_conflict` | Les paramètres gérés [exigent une connexion first-party ou via la Cloud gateway](/docs/fr/authentication#restrict-login-to-your-organization), et une clé API Anthropic, un jeton d'authentification ou un `apiKeyHelper` est configuré à la place |

1878| `provider_not_allowed` | Les paramètres gérés [listent les fournisseurs API que cette machine peut utiliser](/docs/fr/settings-reference#allowedproviders), et la session est configurée pour un fournisseur qui ne figure pas dans la liste, ou pour un point de terminaison que les paramètres ne fixent pas. Nécessite Claude Code v2.1.285 ou ultérieur |1850| `provider_not_allowed` | Les paramètres gérés [listent les fournisseurs API que cette machine peut utiliser](/docs/fr/settings-reference#allowedproviders), et la session est configurée pour un fournisseur qui ne figure pas dans la liste, ou pour un endpoint que les paramètres ne fixent pas. Nécessite Claude Code v2.1.285 ou ultérieur |

1879| `org_verify_failed` | L'organisation de la connexion n'a pas pu être vérifiée par rapport à la broche, par exemple en raison d'une défaillance réseau ou d'un jeton révoqué |1851| `org_verify_failed` | L'organisation de la connexion n'a pas pu être vérifiée par rapport à l'épinglage, par exemple en raison d'une défaillance réseau ou d'un jeton révoqué |

1880| `org_pin_mismatch` | La connexion appartient à une organisation que la broche ne permet pas |1852| `org_pin_mismatch` | La connexion appartient à une organisation que l'épinglage n'autorise pas |

1881| `managed_settings_invalid` | Les paramètres de politique gérés n'ont pas pu être lus, la broche ne nomme aucune organisation, ou [les restrictions de modèle gérées](/docs/fr/errors#managed-settings-block-the-default-model) ne laissent aucun modèle autorisé pour l'option Par défaut |1853| `managed_settings_invalid` | Les paramètres de politique gérés n'ont pas pu être lus, l'épinglage ne nomme aucune organisation, ou [les restrictions de modèle gérées](/docs/fr/errors#managed-settings-block-the-default-model) ne laissent aucun modèle autorisé pour l'option Par défaut |

1882| `remote_settings_required_unavailable` | Les paramètres gérés que l'organisation nécessite n'ont pas pu être chargés |1854| `remote_settings_required_unavailable` | Les paramètres gérés que l'organisation exige n'ont pas pu être chargés |

1883| `gateway_signin_required` | La [Cloud gateway](/docs/fr/claude-apps-gateway) a terminé cette connexion |1855| `gateway_signin_required` | La [Cloud gateway](/docs/fr/claude-apps-gateway) a mis fin à cette connexion |

1884| `gateway_access_denied` | La demande de paramètres gérés à la Cloud gateway est revenue avec un 403, que la [table de dépannage](/docs/fr/claude-apps-gateway-deploy#troubleshooting) de la gateway couvre |1856| `gateway_access_denied` | La requête de paramètres gérés vers la Cloud gateway a renvoyé un 403, que couvre le [tableau de dépannage](/docs/fr/claude-apps-gateway-deploy#troubleshooting) de la passerelle |

1885| `proxy_invalid` | Un paramètre de proxy n'est pas une URL complète |1857| `proxy_invalid` | Un paramètre de proxy n'est pas une URL complète |

1886| `temp_dir_unusable` | Le répertoire temporaire par utilisateur n'est pas sûr ou n'a pas pu être créé |1858| `temp_dir_unusable` | Le répertoire temporaire par utilisateur n'est pas sûr ou n'a pas pu être créé |

1887| `cwd_unavailable` | Le répertoire de travail a été supprimé, déplacé ou ne peut pas être lu |1859| `cwd_unavailable` | Le répertoire de travail a été supprimé, déplacé ou ne peut pas être lu |

1888| `shell_tool_missing` | Sur Windows, aucun outil shell n'est disponible : Git Bash manque, et PowerShell manque ou est désactivé avec `CLAUDE_CODE_USE_POWERSHELL_TOOL` |1860| `shell_tool_missing` | Sur Windows, aucun outil shell n'est disponible : Git Bash manque, et PowerShell manque ou est désactivé avec `CLAUDE_CODE_USE_POWERSHELL_TOOL` |

1889| `session_held_by_background` | La conversation à reprendre ou continuer s'exécute comme une [session de fond](/docs/fr/agent-view) |1861| `session_held_by_background` | La conversation à reprendre ou continuer s'exécute comme une [session en arrière-plan](/docs/fr/agent-view) |

1890| `worktree_resume_refused` | Le worktree de la session a échoué ses vérifications de sécurité, ou la reprise a été lancée de l'intérieur. `errors` dit si l'exécution de la même reprise continue sans le worktree |1862| `worktree_resume_refused` | Le worktree de la session a échoué à ses vérifications de sécurité, ou la reprise a été lancée depuis l'intérieur de celui-ci. `errors` indique si relancer la même reprise continue sans le worktree |

1891| `worktree_unverified` | Le worktree de la session n'a pas pu être vérifié en ce moment, et une nouvelle tentative peut réussir |1863| `worktree_unverified` | Le worktree de la session n'a pas pu être vérifié pour le moment, et une nouvelle tentative peut réussir |

1892| `cli_version_too_old` | Cette version de Claude Code est inférieure au minimum qu'Anthropic nécessite |1864| `cli_version_too_old` | Cette version de Claude Code est inférieure au minimum qu'Anthropic exige |

1893| `bypass_root` | Le mode de permissions de contournement a été demandé lors de l'exécution en tant que root |1865| `bypass_root` | Le mode de permission de contournement a été demandé lors de l'exécution en tant que root |

1894 1866 

1895<h3 id="sdksystemmessage">1867<h3 id="sdksystemmessage">

1896 `SDKSystemMessage`1868 `SDKSystemMessage`


1937 1909 

1938`fast_mode_state` rapporte l'état du [mode rapide](/docs/fr/fast-mode) de la session. Quand quelque chose bloque le mode rapide, `fast_mode_disabled_reason` nomme la vérification qui l'a bloqué ; le champ nécessite Claude Code v2.1.219 ou ultérieur. Pour les codes de raison et leurs significations, voir [`fast_mode_disabled_reason`](#sdkresultmessage) sur le message de résultat.1910`fast_mode_state` rapporte l'état du [mode rapide](/docs/fr/fast-mode) de la session. Quand quelque chose bloque le mode rapide, `fast_mode_disabled_reason` nomme la vérification qui l'a bloqué ; le champ nécessite Claude Code v2.1.219 ou ultérieur. Pour les codes de raison et leurs significations, voir [`fast_mode_disabled_reason`](#sdkresultmessage) sur le message de résultat.

1939 1911 

1940`terminal_slash_commands` nomme les entrées dans `slash_commands` dont l'interface est liée au terminal local, comme `exit`. Vous pouvez les envoyer comme n'importe quelle autre entrée dans `slash_commands` ; le champ existe pour qu'un client distant ou mobile puisse les masquer de ses menus de commandes. Le champ est présent uniquement quand non vide, et nécessite Agent SDK v0.3.229 ou ultérieur.1912`terminal_slash_commands` nomme les entrées dans `slash_commands` dont l'interface est liée au terminal local, comme `exit`. Vous pouvez les envoyer comme n'importe quelle autre entrée dans `slash_commands` ; le champ existe pour qu'un client distant ou mobile puisse les masquer de ses menus de commandes. Le champ est présent uniquement quand il n'est pas vide, et nécessite Agent SDK v0.3.229 ou ultérieur.

1941 

1942*

1943 

1944`source` sur chaque entrée `mcp_servers` : d'où provient la définition du serveur, avec les mêmes valeurs que `source` de [`McpServerStatus`](#mcpserverstatus). Nécessite Agent SDK v0.3.274 ou ultérieur.

1945 1913 

1946*1914* `source` sur chaque entrée `mcp_servers` : d'où provient la définition du serveur, avec les mêmes valeurs que `source` de [`McpServerStatus`](#mcpserverstatus). Nécessite Agent SDK v0.3.274 ou ultérieur.

1947 1915* `effort` : le [niveau d'effort](/docs/fr/model-config#adjust-effort-level) que Claude Code envoie sur la prochaine requête de la session, ou `null` quand il n'en envoie aucun. Claude Code définit le champ uniquement sur le message d'initialisation qu'il envoie aux clients [Remote Control](/docs/fr/remote-control), et l'omet du message d'initialisation que votre application lit. Nécessite Agent SDK v0.3.234 ou ultérieur.

1948`effort` : le [niveau d'effort](/docs/fr/model-config#adjust-effort-level) que Claude Code envoie sur la prochaine requête de la session, ou `null` quand il n'en envoie aucun. Claude Code définit le champ uniquement sur le message d'initialisation qu'il envoie aux clients [Remote Control](/docs/fr/remote-control), et l'omet du message d'initialisation que votre application lit. Nécessite Agent SDK v0.3.234 ou ultérieur.

1949 1916 

1950Le tableau `capabilities` nomme les comportements de protocole que cette CLI implémente, pour que vous puissiez faire de la détection de fonctionnalités au lieu de comparer les chaînes `claude_code_version`. C'est un ensemble ouvert : ignorez les valeurs que vous ne reconnaissez pas, et vérifiez la capacité spécifique dont vous dépendez du comportement. Le champ nécessite Claude Code v2.1.205 ou ultérieur et est absent sur les CLI antérieures.1917Le tableau `capabilities` nomme les comportements de protocole que cette CLI implémente, pour que vous puissiez faire de la détection de fonctionnalités au lieu de comparer les chaînes `claude_code_version`. C'est un ensemble ouvert : ignorez les valeurs que vous ne reconnaissez pas, et vérifiez la capacité spécifique dont vous dépendez du comportement. Le champ nécessite Claude Code v2.1.205 ou ultérieur et est absent sur les CLI antérieures.

1951 1918 

1952| Capacité | Signification |1919| Capacité | Signification |

1953| - | - |1920| - | - |

1954| `interrupt_receipt_v1` | [`interrupt()`](#query-object) se résout avec un reçu [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) listant les messages qui étaient en attente quand l'interruption est arrivée |1921| `interrupt_receipt_v1` | [`interrupt()`](#query-object) se résout avec un reçu [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) listant les messages qui étaient en attente quand l'interruption est arrivée |

1955| `interrupt_cancel_queued_v1` | La demande de contrôle `interrupt` honore `cancel_queued: true`, annulant les messages que le reçu listerait autrement sous `still_queued` et les listant sous `cancelled` à la place. Voir [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse). Nécessite Claude Code v2.1.219 ou ultérieur |1922| `interrupt_cancel_queued_v1` | La requête de contrôle `interrupt` honore `cancel_queued: true`, annulant les messages que le reçu listerait autrement sous `still_queued` et les listant sous `cancelled` à la place. Voir [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse). Nécessite Claude Code v2.1.219 ou ultérieur |

1956 1923 

1957Le tableau `plugin_errors` liste les défaillances de chargement de plugin. Une entrée décrit soit un plugin qui n'a pas chargé et est absent de `plugins`, soit un plugin qui a chargé sans l'une de ses parties, comme son fichier de hooks. La clé est omise quand rien n'a échoué. `SDKSystemMessage` déclare `plugin_errors` dans Agent SDK v0.3.283 ou ultérieur.1924Le tableau `plugin_errors` liste les défaillances de chargement de plugin. Une entrée décrit soit un plugin qui n'a pas été chargé et est absent de `plugins`, soit un plugin qui a été chargé sans l'une de ses parties, comme son fichier de hooks. La clé est omise quand rien n'a échoué. `SDKSystemMessage` déclare `plugin_errors` dans Agent SDK v0.3.283 ou ultérieur.

1958 1925 

1959Quand un répertoire ou une archive de votre option [`plugins`](#options) elle-même échoue à charger, le champ `plugin` de l'entrée contient une balise positionnelle comme `inline[0]` au lieu d'un nom de plugin. Cela se produit, par exemple, quand le chemin n'existe pas ou le manifeste est invalide. Faites correspondre une telle entrée à votre option par son champ `path`.1926Quand un répertoire ou une archive de votre [option `plugins`](#options) échoue lui-même à se charger, le champ `plugin` de l'entrée contient une balise positionnelle comme `inline[0]` au lieu d'un nom de plugin. Cela se produit, par exemple, quand le chemin n'existe pas ou que le manifeste est invalide. Faites correspondre une telle entrée à votre option par son champ `path`.

1960 1927 

1961Le tableau ci-dessous liste les champs de chaque entrée `plugin_errors`.1928Le tableau ci-dessous liste les champs de chaque entrée `plugin_errors`.

1962 1929 

1963| Champ | Type | Description |1930| Champ | Type | Description |

1964| - | - | - |1931| - | - | - |

1965| `plugin` | `string` | L'ID du plugin défaillant, ou une balise positionnelle comme `inline[0]` quand le répertoire ou l'archive du plugin lui-même a échoué à charger |1932| `plugin` | `string` | L'ID du plugin défaillant, ou une balise positionnelle comme `inline[0]` quand le répertoire ou l'archive du plugin lui-même a échoué à se charger |

1966| `type` | `string` | Catégorie d'erreur d'un ensemble ouvert, comme `path-not-found` ou `manifest-validation-error`. Traitez une valeur que vous ne reconnaissez pas comme une défaillance générique |1933| `type` | `string` | Catégorie d'erreur d'un ensemble ouvert, comme `path-not-found` ou `manifest-validation-error`. Traitez une valeur que vous ne reconnaissez pas comme une défaillance générique |

1967| `message` | `string` | Texte d'affichage décrivant la défaillance |1934| `message` | `string` | Texte d'affichage décrivant la défaillance |

1968| `path` | `string` | Présent uniquement quand le répertoire ou l'archive du plugin lui-même a échoué à charger. Son chemin absolu, avec un chemin relatif de votre option `plugins` résolu par rapport à l'option [`cwd`](#options) |1935| `path` | `string` | Présent uniquement quand le répertoire ou l'archive du plugin lui-même a échoué à se charger. Son chemin absolu, un chemin relatif de votre option `plugins` étant résolu par rapport à l'option [`cwd`](#options) |

1969 1936 

1970<h3 id="sdkpartialassistantmessage">1937<h3 id="sdkpartialassistantmessage">

1971 `SDKPartialAssistantMessage`1938 `SDKPartialAssistantMessage`

1972</h3>1939</h3>

1973 1940 

1974Message partiel en flux (uniquement quand `includePartialMessages` est true). Le champ `parent_tool_use_id` est toujours `null` : les événements de flux sont émis pour la session principale uniquement. Pour l'attribution de sous-agent, utilisez les messages complets, qui portent `parent_tool_use_id`, ou activez [`forwardSubagentText`](#options) pour recevoir le texte et la réflexion du sous-agent comme des messages complets.1941Message partiel en streaming (uniquement quand `includePartialMessages` est true). Le champ `parent_tool_use_id` est toujours `null` : les événements de flux sont émis pour la session principale uniquement. Pour l'attribution de sous-agent, utilisez les messages complets, qui portent `parent_tool_use_id`, ou activez [`forwardSubagentText`](#options) pour recevoir le texte et la réflexion du sous-agent comme des messages complets.

1975 1942 

1976```typescript theme={null}1943```typescript theme={null}

1977type SDKPartialAssistantMessage = {1944type SDKPartialAssistantMessage = {


2012 `SDKInformationalMessage`1979 `SDKInformationalMessage`

2013</h3>1980</h3>

2014 1981 

2015Bannière de texte générique émise par la boucle. Porte les avertissements, les avis et autres lignes d'état non-erreur que Claude Code lève, et les retours de hook comme la raison du blocage d'un hook `UserPromptSubmit`.1982Bannière de texte générique émise par la boucle. Porte les avertissements, les avis et autres lignes d'état non-erreur que Claude Code émet, ainsi que les retours de hook comme la raison du blocage d'un hook `UserPromptSubmit`.

2016 1983 

2017Sur Claude Code v2.1.227 ou ultérieur, le [`systemMessage`](/docs/fr/hooks#json-output) d'un hook peut arriver comme ce message, avec chaque ligne préfixée par le nom du hook, comme `PostToolUse:Bash says:`. Chaque [section d'événement](/docs/fr/hooks#hook-events) sur la page des hooks dit comment la sortie s'affiche.1984Sur Claude Code v2.1.227 ou ultérieur, le [`systemMessage`](/docs/fr/hooks#json-output) d'un hook peut arriver comme ce message, avec chaque ligne préfixée par le nom du hook, comme `PostToolUse:Bash says:`. Chaque [section d'événement](/docs/fr/hooks#hook-events) sur la page des hooks indique comment la sortie s'affiche.

2018 1985 

2019Rendez `content` comme texte brut au `level` donné.1986Rendez `content` comme texte brut au `level` donné.

2020 1987 


2035 `SDKWorkerShuttingDownMessage`2002 `SDKWorkerShuttingDownMessage`

2036</h3>2003</h3>

2037 2004 

2038Émis lors d'un arrêt gracieux du travailleur pour que les clients de contrôle à distance puissent montrer pourquoi le travailleur a quitté au lieu d'attendre l'expiration du délai d'attente du battement de cœur. La `reason` est une courte chaîne snake\_case définie par la CLI hôte, comme `"host_exit"` ou `"remote_control_disabled"`. Agissez sur ceci uniquement lors de la diffusion en direct. Une session reprise rejoue les instances passées de ce message, donc ignorez-les dans ce cas.2005Émis lors d'un arrêt propre du worker pour que les clients distants puissent montrer pourquoi le worker s'est arrêté au lieu d'attendre l'expiration du délai de heartbeat. La `reason` est une courte chaîne snake\_case définie par la CLI hôte, comme `"host_exit"` ou `"remote_control_disabled"`. Agissez sur ceci uniquement lors du streaming en direct. Une session reprise rejoue les instances passées de ce message, donc ignorez-les dans ce cas.

2039 2006 

2040```typescript theme={null}2007```typescript theme={null}

2041type SDKWorkerShuttingDownMessage = {2008type SDKWorkerShuttingDownMessage = {


2051 `SDKPluginInstallMessage`2018 `SDKPluginInstallMessage`

2052</h3>2019</h3>

2053 2020 

2054Événement de progression d'installation de plugin. Émis quand [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/docs/fr/env-vars) est défini, pour que votre application Agent SDK puisse suivre l'installation du plugin de marketplace avant le premier tour. Les statuts `started` et `completed` encadrent l'installation globale. Les statuts `installed` et `failed` rapportent les marketplaces individuels et incluent `name`.2021Événement de progression d'installation de plugin. Émis quand [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/docs/fr/env-vars) est défini, pour que votre application Agent SDK puisse suivre l'installation des plugins de marketplace avant le premier tour. Les statuts `started` et `completed` encadrent l'installation globale. Les statuts `installed` et `failed` rapportent les marketplaces individuelles et incluent `name`.

2055 2022 

2056```typescript theme={null}2023```typescript theme={null}

2057type SDKPluginInstallMessage = {2024type SDKPluginInstallMessage = {


2069 `SDKPermissionDeniedMessage`2036 `SDKPermissionDeniedMessage`

2070</h3>2037</h3>

2071 2038 

2072Événement de flux émis quand le système de permissions refuse un appel d'outil sans invite interactive. Utilisez-le pour rendre le refus dans votre interface utilisateur au fur et à mesure, plutôt que d'observer uniquement le résultat d'outil `is_error` qui suit. Quels refus il rapporte dépend de la façon dont l'exécution gère les invites de permissions :2039Événement de flux émis quand le système de permissions refuse un appel d'outil sans demande de permission interactive. Utilisez-le pour afficher le refus dans votre interface utilisateur au moment où il se produit, plutôt que d'observer uniquement le résultat d'outil `is_error` qui suit. Les refus qu'il rapporte dépendent de la façon dont l'exécution gère les demandes de permission :

2073 

2074* **Avec un rappel [`canUseTool`](#canusetool) et le [`permissionPrompts: 'host'`](#options) par défaut** : les invites de permissions vont à votre rappel, et cet événement rapporte les refus que Claude Code décide par lui-même sans l'appeler.

2075*

2076 2040 

2077**Avec aucun des deux** : une exécution `-p` nue, ou `query()` qui ne définit ni `canUseTool` ni `permissionPromptToolName`, refuse tout appel d'outil qui aurait invité, et cet événement rapporte ces refus ainsi que ceux que Claude Code décide par lui-même. Avant v2.1.223, Claude Code n'émettait pas cet événement dans les exécutions sans rappel.2041* **Avec un callback [`canUseTool`](#canusetool)** et le [`permissionPrompts: 'host'`](#options) par défaut : les demandes de permission vont à votre callback, et cet événement rapporte les refus que Claude Code décide par lui-même sans l'appeler.

2042* **Avec aucun des deux** : une exécution `-p` nue, ou `query()` qui ne définit ni `canUseTool` ni `permissionPromptToolName`, refuse tout appel d'outil qui aurait déclenché une demande de permission, et cet événement rapporte ces refus ainsi que ceux que Claude Code décide par lui-même. Avant v2.1.223, Claude Code n'émettait pas cet événement dans les exécutions sans callback.

2043* **Avec un outil de demande de permission MCP**, défini avec `permissionPromptToolName` ou le flag [`--permission-prompt-tool`](/docs/fr/cli-reference#cli-flags), et le `permissionPrompts: 'host'` par défaut : Claude Code n'émet pas du tout cet événement, pas même pour les refus de règle qu'il décide par lui-même.

2044* **Avec [`permissionPrompts: 'none'`](#options)** : Claude Code refuse les appels qui auraient déclenché une demande de permission, même quand `canUseTool` ou un outil de demande de permission MCP est aussi défini, et cet événement rapporte ces refus ainsi que ceux que Claude Code décide par lui-même. Nécessite Claude Code v2.1.259 ou ultérieur.

2078 2045 

2079* **Avec un outil d'invite MCP**, défini avec `permissionPromptToolName` ou le drapeau [`--permission-prompt-tool`](/docs/fr/cli-reference#cli-flags), et le `permissionPrompts: 'host'` par défaut : Claude Code n'émet pas du tout cet événement, pas même pour les refus de règle qu'il décide par lui-même.2046Dans chaque configuration, cet événement ignore tout refus décidé sur le chemin du hook `PreToolUse`, que le hook ait refusé l'appel lui-même ou qu'une règle de refus ait remplacé la décision d'autorisation ou de demande du hook. L'événement est aussi fourni au mieux : occasionnellement, Claude Code enregistre un refus sans émettre cet événement, donc `permission_denials` sur le [message de résultat](#sdkresultmessage) est le registre faisant autorité.

2080*

2081 

2082**Avec [`permissionPrompts: 'none'`](#options)** : Claude Code refuse les appels qui auraient invité, même quand `canUseTool` ou un outil d'invite MCP est aussi défini, et cet événement rapporte ces refus ainsi que ceux que Claude Code décide par lui-même. Nécessite Claude Code v2.1.259 ou ultérieur.

2083 

2084Dans chaque configuration, cet événement ignore tout refus décidé sur le chemin du hook `PreToolUse`, que le hook ait refusé l'appel lui-même ou qu'une règle de refus ait remplacé la décision d'autorisation ou de demande du hook. L'événement est aussi du meilleur effort : occasionnellement Claude Code enregistre un refus sans émettre cet événement, donc `permission_denials` sur le [message de résultat](#sdkresultmessage) est le registre faisant autorité.

2085 2047 

2086```typescript theme={null}2048```typescript theme={null}

2087type SDKPermissionDeniedMessage = {2049type SDKPermissionDeniedMessage = {


2104| `tool_use_id` | `string` | ID du bloc `tool_use` auquel ce refus répond |2066| `tool_use_id` | `string` | ID du bloc `tool_use` auquel ce refus répond |

2105| `agent_id` | `string` | ID du sous-agent quand l'appel refusé provient de l'intérieur d'un sous-agent. Reflète le champ sur `can_use_tool` pour le routage côté hôte |2067| `agent_id` | `string` | ID du sous-agent quand l'appel refusé provient de l'intérieur d'un sous-agent. Reflète le champ sur `can_use_tool` pour le routage côté hôte |

2106| `decision_reason_type` | `string` | Discriminateur pour le composant qui a décidé, comme `"rule"`, `"mode"`, `"classifier"`, ou `"asyncAgent"` |2068| `decision_reason_type` | `string` | Discriminateur pour le composant qui a décidé, comme `"rule"`, `"mode"`, `"classifier"`, ou `"asyncAgent"` |

2107| `decision_reason` | `string` | Raison lisible par l'homme du composant décideur, quand disponible |2069| `decision_reason` | `string` | Raison lisible par l'humain fournie par le composant décideur, quand disponible |

2108| `message` | `string` | Message de rejet retourné au modèle dans le `tool_result` |2070| `message` | `string` | Message de rejet retourné au modèle dans le `tool_result` |

2109 2071 

2110<h3 id="sdkpermissiondenial">2072<h3 id="sdkpermissiondenial">


2125 `SDKContextUsage`2087 `SDKContextUsage`

2126</h3>2088</h3>

2127 2089 

2128Forme structurée du rapport `/context`, portée comme `context_usage` sur le [`SDKAssistantMessage`](#sdkassistantmessage) qui livre un résultat `/context`. Agent SDK v0.3.232 et ultérieur exportent le type. Contrairement à [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse), il porte uniquement les données nécessaires pour rendre la ventilation d'utilisation, sans champs d'affichage comme `color` et `gridRows`. Claude Code calcule le rapport avec des demandes d'API de comptage de jetons qui n'apparaissent pas dans le flux de messages ; voir [comment ces demandes sont gérées](#sdkcontrolgetcontextusageresponse).2090Forme structurée du rapport `/context`, portée comme `context_usage` sur le [`SDKAssistantMessage`](#sdkassistantmessage) qui livre un résultat `/context`. Agent SDK v0.3.232 et ultérieur exportent le type. Contrairement à [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse), il porte uniquement les données nécessaires pour rendre la ventilation d'utilisation, sans champs d'affichage comme `color` et `gridRows`. Claude Code calcule le rapport avec des requêtes API de comptage de tokens qui n'apparaissent pas dans le flux de messages ; voir [comment ces requêtes sont gérées](#sdkcontrolgetcontextusageresponse).

2129 2091 

2130```typescript theme={null}2092```typescript theme={null}

2131type SDKContextUsage = {2093type SDKContextUsage = {


2162};2124};

2163```2125```

2164 2126 

2165Le tableau liste ce que Claude Code met dans chaque champ. Les champs de `model` à `over_limit` décrivent la session dans son ensemble, et les champs de collection attribuent les jetons aux éléments individuels.2127Le tableau liste ce que Claude Code met dans chaque champ. Les champs de `model` à `over_limit` décrivent la session dans son ensemble, et les champs de collection attribuent les tokens aux éléments individuels.

2166 2128 

2167| Champ | Type | Description |2129| Champ | Type | Description |

2168| - | - | - |2130| - | - | - |

2169| `model` | `string` | Le modèle de la boucle principale pour lequel Claude Code a calculé l'utilisation, pas celui d'un sous-agent |2131| `model` | `string` | Le modèle de la boucle principale pour lequel Claude Code a calculé l'utilisation, pas celui d'un sous-agent |

2170| `total_tokens` | `number` | L'estimation de Claude Code des jetons en utilisation. Non limité à la fenêtre, donc il peut dépasser `raw_max_tokens` quand la session dépasse la limite |2132| `total_tokens` | `number` | L'estimation par Claude Code des tokens utilisés. Non plafonné à la fenêtre, donc il peut dépasser `raw_max_tokens` quand la session dépasse la limite |

2171| `raw_max_tokens` | `number` | La fenêtre de contexte du modèle, ou la [fenêtre de compaction automatique](/docs/fr/model-config#context-window-and-auto-compaction) inférieure quand une s'applique, comme une que vous définissez ou la limite de 200K que Claude Code applique à certains modèles avec une fenêtre de 1M de jetons. Claude Code mesure `total_tokens` par rapport à cette fenêtre |2133| `raw_max_tokens` | `number` | La fenêtre de contexte du modèle, ou la [fenêtre de compaction automatique](/docs/fr/model-config#context-window-and-auto-compaction) inférieure quand il y en a une, comme celle que vous définissez ou la limite de 200K que Claude Code applique à certains modèles dotés d'une fenêtre de 1M de tokens. Claude Code mesure `total_tokens` par rapport à cette fenêtre |

2172| `percentage` | `number` | `total_tokens` en pourcentage arrondi de `raw_max_tokens`, donc il peut dépasser 100 quand la session dépasse la limite |2134| `percentage` | `number` | `total_tokens` en pourcentage arrondi de `raw_max_tokens`, donc il peut dépasser 100 quand la session dépasse la limite |

2173| `over_limit` | `object` | Présent uniquement quand `total_tokens` dépasse `raw_max_tokens`. `tokens_over` est le montant au-dessus, et `kind` dit comment Claude Code a résolu la fenêtre |2135| `over_limit` | `object` | Présent uniquement quand `total_tokens` dépasse `raw_max_tokens`. `tokens_over` est le dépassement, et `kind` indique comment Claude Code a résolu la fenêtre |

2174| `categories` | [`SDKContextUsageCategory`](#sdkcontextusagecategory)`[]` | Une entrée par ligne de la ventilation d'utilisation par catégorie |2136| `categories` | [`SDKContextUsageCategory`](#sdkcontextusagecategory)`[]` | Une entrée par ligne de la ventilation d'utilisation par catégorie |

2175| `mcp_tools` | `object[]` | Jetons attribués à chaque outil MCP, avec son nom de fil, comme `mcp__linear__create_issue`, et son `server_name` |2137| `mcp_tools` | `object[]` | Tokens attribués à chaque outil MCP, avec son nom de protocole, comme `mcp__linear__create_issue`, et son `server_name` |

2176| `memory_files` | `object[]` | Jetons attribués à chaque fichier de mémoire chargé, avec son `path` et une étiquette source comme `Project` ou `User` dans `type` |2138| `memory_files` | `object[]` | Tokens attribués à chaque fichier de mémoire chargé, avec son `path` et une étiquette source comme `Project` ou `User` dans `type` |

2177| `agents` | `object[]` | Jetons attribués à chaque définition de sous-agent personnalisé, avec un identifiant source comme `projectSettings`, `userSettings`, ou `plugin`. Les sous-agents intégrés ne sont pas listés |2139| `agents` | `object[]` | Tokens attribués à chaque définition de sous-agent personnalisé, avec un identifiant source comme `projectSettings`, `userSettings`, ou `plugin`. Les sous-agents intégrés ne sont pas listés |

2178| `skills` | `object[]` | Jetons attribués à chaque compétence dans la liste des compétences, avec un identifiant source et, pour les compétences de plugin, le nom du plugin dans `plugin_name`. Absent quand aucune compétence ne contribue de jetons |2140| `skills` | `object[]` | Tokens attribués à chaque skill dans la liste des skills, avec un identifiant source et, pour les skills de plugin, le nom du plugin dans `plugin_name`. Absent quand aucun skill ne contribue de tokens |

2179 2141 

2180`over_limit.kind` enregistre comment Claude Code a résolu la fenêtre, pas si l'API accepte la prochaine requête :2142`over_limit.kind` enregistre comment Claude Code a résolu la fenêtre, pas si l'API accepte la prochaine requête :

2181 2143 

2182* `hard_limit` : la fenêtre est ce que Claude Code croit être la limite propre du modèle, au-delà de laquelle l'API refuse les requêtes2144* `hard_limit` : la fenêtre est ce que Claude Code croit être la limite propre du modèle, au-delà de laquelle l'API refuse les requêtes

2183* `compaction_window` : la fenêtre est une fenêtre de politique de compaction, qui peut ou non coïncider avec la limite du modèle2145* `compaction_window` : la fenêtre est une fenêtre de politique de compaction, qui peut ou non coïncider avec la limite du modèle

2184 2146 

2185Claude Code évolue le type de manière additive, ajoutant de nouvelles données comme des champs optionnels plutôt que de remodeler les existants. Lisez les champs que vous connaissez et ignorez ceux que vous ne reconnaissez pas.2147Claude Code fait évoluer le type de manière additive, en ajoutant de nouvelles données comme des champs optionnels plutôt qu'en remodelant les existants. Lisez les champs que vous connaissez et ignorez ceux que vous ne reconnaissez pas.

2186 2148 

2187<h3 id="sdkcontextusagecategory">2149<h3 id="sdkcontextusagecategory">

2188 `SDKContextUsageCategory`2150 `SDKContextUsageCategory`

2189</h3>2151</h3>

2190 2152 

2191Une ligne de la ventilation d'utilisation par catégorie `/context`.2153Une ligne de la ventilation d'utilisation par catégorie de `/context`.

2192 2154 

2193```typescript theme={null}2155```typescript theme={null}

2194type SDKContextUsageCategory = {2156type SDKContextUsageCategory = {


2202 2164 

2203| Champ | Type | Description |2165| Champ | Type | Description |

2204| - | - | - |2166| - | - | - |

2205| `name` | `string` | Le nom d'affichage de la ligne comme `/context` l'imprime, comme `Messages`. Classifiez les lignes par `kind`, pas par nom |2167| `name` | `string` | Le nom d'affichage de la ligne tel que `/context` l'imprime, comme `Messages`. Classez les lignes par `kind`, pas par nom |

2206| `tokens` | `number` | Le nombre de jetons de la ligne. Les lignes peuvent porter zéro jeton |2168| `tokens` | `number` | Le nombre de tokens de la ligne. Les lignes peuvent porter zéro token |

2207| `kind` | `string` | Ce que la ligne représente : `used`, `free`, `buffer`, ou `deferred` |2169| `kind` | `string` | Ce que la ligne représente : `used`, `free`, `buffer`, ou `deferred` |

2208 2170 

2209Chaque valeur `kind` dit ce que les jetons de la ligne sont :2171Chaque valeur `kind` indique ce que sont les tokens de la ligne :

2210 2172 

2211* `used` : contenu qui occupe la fenêtre de contexte2173* `used` : contenu qui occupe la fenêtre de contexte

2212* `free` : la fenêtre restante2174* `free` : la fenêtre restante

2213* `buffer` : la réserve de compaction2175* `buffer` : la réserve de compaction

2214* `deferred` : schémas d'outil que Claude Code tient hors de la fenêtre et exclut du calcul d'utilisation, listés pour la sensibilisation2176* `deferred` : schémas d'outils que Claude Code tient hors de la fenêtre et exclut du calcul d'utilisation, listés à titre informatif

2215 2177 

2216<h3 id="sdkmessageorigin">2178<h3 id="sdkmessageorigin">

2217 `SDKMessageOrigin`2179 `SDKMessageOrigin`

2218</h3>2180</h3>

2219 2181 

2220Provenance d'un message de rôle utilisateur. Ceci apparaît comme `origin` sur [`SDKUserMessage`](#sdkusermessage) et est transféré sur le [`SDKResultMessage`](#sdkresultmessage) correspondant pour que vous puissiez dire ce qui a déclenché un tour donné.2182Provenance d'un message de rôle utilisateur. Ceci apparaît comme `origin` sur [`SDKUserMessage`](#sdkusermessage) et est transféré sur le [`SDKResultMessage`](#sdkresultmessage) correspondant pour que vous puissiez savoir ce qui a déclenché un tour donné.

2221 2183 

2222```typescript theme={null}2184```typescript theme={null}

2223type SDKMessageOrigin =2185type SDKMessageOrigin =


2245 2207 

2246| `kind` | Signification |2208| `kind` | Signification |

2247| - | - |2209| - | - |

2248| `human` | Entrée directe de l'utilisateur final. Si votre application transmet ce que l'utilisateur a tapé comme un message utilisateur, définissez son `origin` à `{ kind: "human" }` explicitement : Claude Code traite un message utilisateur sans `origin` comme non attribué, et vérifie que les vérifications qui nécessitent une invite tapée par l'humain, comme le [mot-clé de flux de travail `ultracode`](/docs/fr/workflows#ask-for-a-workflow-in-your-prompt), ne l'acceptent pas. Avant v2.1.210, Claude Code traitait un `origin` absent sur un message utilisateur comme une entrée humaine. |2210| `human` | Entrée directe de l'utilisateur final. Si votre application transmet ce que l'utilisateur a tapé comme un message utilisateur, définissez explicitement son `origin` à `{ kind: "human" }` : Claude Code traite un message utilisateur sans `origin` comme non attribué, et les vérifications qui exigent un prompt tapé par un humain, comme le [mot-clé de workflow `ultracode`](/docs/fr/workflows#ask-for-a-workflow-in-your-prompt), ne l'acceptent pas. Avant v2.1.210, Claude Code traitait un `origin` absent sur un message utilisateur comme une entrée humaine. |

2249| `channel` | Message arrivant sur un [canal](/docs/fr/channels). `server` est le nom du serveur MCP source. |2211| `channel` | Message arrivant sur un [canal](/docs/fr/channels). `server` est le nom du serveur MCP source. |

2250| `peer` | Message d'un autre agent : un [coéquipier](/docs/fr/agent-teams) en processus ou un [pair entre sessions](/docs/fr/cross-session-messaging), une autre de vos sessions Claude Code. Voir [Champs d'origine pair](#peer-origin-fields) pour la sémantique par champ et le modèle de confiance. |2212| `peer` | Message d'un autre agent : un [coéquipier](/docs/fr/agent-teams) en processus ou un [pair entre sessions](/docs/fr/cross-session-messaging), une autre de vos sessions Claude Code. Voir [Champs d'origine pair](#peer-origin-fields) pour la sémantique par champ et le modèle de confiance. |

2251| `task-notification` | Tour synthétique injecté pour une livraison qui arrive sans une invite utilisateur fraîche, comme une tâche de fond terminée ; voir [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) pour ce bras. Une invite que votre application [déclare comme une exécution planifiée](#declare-a-scheduled-run) porte ce type aussi. Le `subkind` optionnel marque ce qui a levé la notification. Voir [Sous-types de notification de tâche](#task-notification-subkinds). |2213| `task-notification` | Tour synthétique injecté pour une livraison qui arrive sans nouveau prompt utilisateur, comme une tâche en arrière-plan terminée ; voir [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) pour ce bras. Un prompt que votre application [déclare comme une exécution planifiée](#declare-a-scheduled-run) porte aussi ce type. Le `subkind` optionnel indique ce qui a généré la notification. Voir [Sous-types de notification de tâche](#task-notification-subkinds). |

2252| `coordinator` | Message d'un coordinateur d'équipe dans une [équipe d'agents](/docs/fr/agent-teams). |2214| `coordinator` | Message d'un coordinateur d'équipe dans une [équipe d'agents](/docs/fr/agent-teams). |

2253| `auto-continuation` | Tour synthétique injecté quand la session continue sans entrée utilisateur fraîche, comme un résultat de commande qui déclenche une invite de suivi. |2215| `auto-continuation` | Tour synthétique injecté quand la session continue sans nouvelle entrée utilisateur, comme un résultat de commande qui déclenche un prompt de suivi. |

2254| `unclassified` | Tour injecté dont l'origine n'a pas pu être déterminée. Nécessite Claude Code v2.1.223 ou ultérieur. Quand Claude Code reçoit un [`SDKUserMessage`](#sdkusermessage) avec `isSynthetic: true` et ne peut pas le classer comme un autre `kind`, il définit ce type à l'arrivée du message et encadre le tour au modèle comme une source non-utilisateur plutôt que de le traiter comme une entrée humaine. Votre application ne devrait pas définir cette valeur. |2216| `unclassified` | Tour injecté dont l'origine n'a pas pu être déterminée. Nécessite Claude Code v2.1.223 ou ultérieur. Quand Claude Code reçoit un [`SDKUserMessage`](#sdkusermessage) avec `isSynthetic: true` et ne peut pas le classer dans un autre `kind`, il définit ce type à l'arrivée du message et présente le tour au modèle comme provenant d'une source non-utilisateur plutôt que de le traiter comme une entrée humaine. Votre application ne devrait pas définir cette valeur. |

2255 2217 

2256<h3 id="task-notification-subkinds">2218<h3 id="task-notification-subkinds">

2257 Sous-types de notification de tâche2219 Sous-types de notification de tâche

2258</h3>2220</h3>

2259 2221 

2260Quand Claude Code livre une notification de tâche dans une session, il définit `subkind` sur le `origin` de la notification si les serveurs Anthropic ont vérifié d'où provenait cette notification. Il le définit aussi quand votre application [déclare le message comme une exécution planifiée](#declare-a-scheduled-run) elle-même, ce qui nécessite TypeScript Agent SDK v0.3.280 ou ultérieur. `subkind` nécessite Claude Code v2.1.213 ou ultérieur, et prend l'une de deux valeurs :2222Quand Claude Code livre une notification de tâche dans une session, il définit `subkind` sur l'`origin` de la notification si les serveurs Anthropic ont vérifié d'où provenait cette notification. Il définit aussi `subkind` quand votre application [déclare elle-même le message comme une exécution planifiée](#declare-a-scheduled-run), ce qui nécessite TypeScript Agent SDK v0.3.280 ou ultérieur. `subkind` nécessite Claude Code v2.1.213 ou ultérieur, et prend l'une de deux valeurs :

2261 2223 

2262* `scheduled-trigger` : la notification est une invite stockée d'une [routine](/docs/fr/routines), livrée parce que l'un des déclencheurs de la routine s'est déclenché : son horaire, son [déclencheur API](/docs/fr/routines#add-an-api-trigger), son [déclencheur GitHub](/docs/fr/routines#add-a-github-trigger), ou **Exécuter maintenant**. Une invite que votre application [déclare comme une exécution planifiée](#declare-a-scheduled-run) porte cette valeur aussi. Claude Code encadre celles-ci au modèle comme la tâche assignée de la session, avec un avis différent de l'[avis que les autres notifications de tâche portent](#sdktasknotificationmessage).2224* `scheduled-trigger` : la notification est le prompt stocké d'une [routine](/docs/fr/routines), livré parce que l'un des déclencheurs de la routine s'est déclenché : sa planification, son [déclencheur API](/docs/fr/routines#add-an-api-trigger), son [déclencheur GitHub](/docs/fr/routines#add-a-github-trigger), ou **Exécuter maintenant**. Un prompt que votre application [déclare comme une exécution planifiée](#declare-a-scheduled-run) porte aussi cette valeur. Claude Code présente ces notifications au modèle comme la tâche assignée de la session, avec un avis différent de l'[avis que portent les autres notifications de tâche](#sdktasknotificationmessage).

2263*2225* `peer-send-message` : la notification est un message qu'une autre de vos sessions a envoyé avec l'outil côté serveur `send_message` que les [sessions cloud](/docs/fr/claude-code-on-the-web) utilisent pour s'envoyer des messages, et non l'[outil `SendMessage` entre sessions](/docs/fr/cross-session-messaging), et les serveurs Anthropic ont vérifié que les deux sessions appartiennent au même groupe privé de sessions. Nécessite Claude Code v2.1.224 ou ultérieur. Une livraison `send_message` que les serveurs n'ont pas vérifiée de cette façon n'obtient pas de subkind.

2264 2226 

2265`peer-send-message` : la notification est un message qu'une autre de vos sessions a envoyé avec l'outil côté serveur `send_message` que les [sessions cloud](/docs/fr/claude-code-on-the-web) utilisent pour se messagerie mutuellement, pas l'[outil `SendMessage` entre sessions](/docs/fr/cross-session-messaging), et les serveurs Anthropic ont vérifié que les deux sessions appartiennent au même groupe privé de sessions. Nécessite Claude Code v2.1.224 ou ultérieur. Une livraison `send_message` que les serveurs n'ont pas vérifiée de cette façon n'obtient pas de subkind.2227Toutes les autres notifications de tâche n'ont pas de `subkind`. Cela inclut l'[activité PR](/docs/fr/claude-code-on-the-web#how-claude-responds-to-pr-activity) livrée dans une session et les événements en arrière-plan comme une tâche terminée. Les messages de l'[outil `SendMessage` entre sessions](/docs/fr/cross-session-messaging) ne sont pas du tout des notifications de tâche : qu'ils proviennent d'une session sur la même machine ou, via les serveurs Anthropic, d'une autre machine, Claude Code leur donne `kind: "peer"` et les [champs d'origine pair](#peer-origin-fields).

2266 2228 

2267Chaque autre notification de tâche n'a pas de `subkind`. Cela inclut l'[activité PR](/docs/fr/claude-code-on-the-web#how-claude-responds-to-pr-activity) livrée dans une session et les événements de fond comme une tâche terminée. Les messages de l'[outil `SendMessage` entre sessions](/docs/fr/cross-session-messaging) ne sont pas du tout des notifications de tâche : qu'ils proviennent d'une session sur la même machine ou via les serveurs Anthropic d'une autre machine, Claude Code leur donne `kind: "peer"` et les [champs d'origine pair](#peer-origin-fields).2229`fireReason` indique pourquoi une notification `scheduled-trigger` s'est déclenchée, sous la forme d'un court jeton en minuscules comme `scheduled`, `manual`, `retry`, `catch_up`, ou `api`. Les serveurs Anthropic le définissent sur les livraisons d'une [routine](/docs/fr/routines), et votre application le définit quand elle déclare une exécution planifiée. Il est absent quand ni l'un ni l'autre n'en a envoyé. Nécessite TypeScript Agent SDK v0.3.280 ou ultérieur.

2268 

2269`fireReason` dit pourquoi une notification `scheduled-trigger` s'est déclenchée, comme un jeton minuscule court comme `scheduled`, `manual`, `retry`, `catch_up`, ou `api`. Les serveurs Anthropic le définissent sur les livraisons d'une [routine](/docs/fr/routines), et votre application le définit quand elle déclare une exécution planifiée. Il est absent quand aucun des deux n'en a envoyé un. Nécessite TypeScript Agent SDK v0.3.280 ou ultérieur.

2270 2230 

2271<h4 id="declare-a-scheduled-run">2231<h4 id="declare-a-scheduled-run">

2272 Déclarer une exécution planifiée2232 Déclarer une exécution planifiée

2273</h4>2233</h4>

2274 2234 

2275Si votre application exécute des invites selon son propre horaire, déclarez chaque exécution pour que Claude Code encadre le tour au modèle comme une tâche planifiée plutôt que comme une entrée en direct de l'utilisateur. Démarrez la session avec `CLAUDE_CODE_HOST_SCHEDULED_RUN` défini à `1` dans [`env`](#options), puis envoyez le [`SDKUserMessage`](#sdkusermessage) de l'exécution avec `origin: { kind: "task-notification", subkind: "scheduled-trigger", fireReason: "scheduled" }` et sans `isSynthetic`. Claude Code ignore la déclaration dans un processus démarré sans cette variable. Il l'ignore aussi dans un processus dont l'environnement porte [`CLAUDECODE`](/docs/fr/env-vars) ou `CLAUDE_CODE_CHILD_SESSION`. Claude Code conserve `fireReason` uniquement quand la valeur est 1 à 32 lettres minuscules ou traits de soulignement. Nécessite TypeScript Agent SDK v0.3.280 ou ultérieur.2235Si votre application exécute des prompts selon sa propre planification, déclarez chaque exécution pour que Claude Code présente le tour au modèle comme une tâche planifiée plutôt que comme une entrée en direct de l'utilisateur. Démarrez la session avec `CLAUDE_CODE_HOST_SCHEDULED_RUN` défini à `1` dans [`env`](#options), puis envoyez le [`SDKUserMessage`](#sdkusermessage) de l'exécution avec `origin: { kind: "task-notification", subkind: "scheduled-trigger", fireReason: "scheduled" }` et sans `isSynthetic`. Claude Code ignore la déclaration dans un processus démarré sans cette variable. Il l'ignore aussi dans un processus dont l'environnement porte [`CLAUDECODE`](/docs/fr/env-vars) ou `CLAUDE_CODE_CHILD_SESSION`. Claude Code conserve `fireReason` uniquement quand la valeur est composée de 1 à 32 lettres minuscules ou traits de soulignement. Nécessite TypeScript Agent SDK v0.3.280 ou ultérieur.

2276 2236 

2277<h3 id="peer-origin-fields">2237<h3 id="peer-origin-fields">

2278 Champs d'origine pair2238 Champs d'origine pair


2280 2240 

2281Une origine `peer` identifie quel agent a envoyé le message : un [coéquipier](/docs/fr/agent-teams) en processus envoyant à `main` avec `SendMessage`, ou un [pair entre sessions](/docs/fr/cross-session-messaging), une autre de vos sessions Claude Code. Les pairs entre sessions nécessitent Claude Code v2.1.224 ou ultérieur sur macOS et Linux ; voir [disponibilité de la messagerie entre sessions](/docs/fr/cross-session-messaging#availability) pour l'exigence Windows native. Un pair entre sessions peut s'exécuter sur la même machine, ou sur [une autre de vos machines](/docs/fr/cross-session-messaging#message-sessions-on-other-machines) ou [dans le cloud](/docs/fr/claude-code-on-the-web) quand son message arrive via Remote Control. Les deux types d'expéditeur remplissent les champs différemment :2241Une origine `peer` identifie quel agent a envoyé le message : un [coéquipier](/docs/fr/agent-teams) en processus envoyant à `main` avec `SendMessage`, ou un [pair entre sessions](/docs/fr/cross-session-messaging), une autre de vos sessions Claude Code. Les pairs entre sessions nécessitent Claude Code v2.1.224 ou ultérieur sur macOS et Linux ; voir [disponibilité de la messagerie entre sessions](/docs/fr/cross-session-messaging#availability) pour l'exigence Windows native. Un pair entre sessions peut s'exécuter sur la même machine, ou sur [une autre de vos machines](/docs/fr/cross-session-messaging#message-sessions-on-other-machines) ou [dans le cloud](/docs/fr/claude-code-on-the-web) quand son message arrive via Remote Control. Les deux types d'expéditeur remplissent les champs différemment :

2282 2242 

2283* `from` : le nom du coéquipier, ou l'adresse de l'expéditeur pour un pair entre sessions. Pour un [message entre machines unidirectionnel](/docs/fr/cross-session-messaging#message-sessions-on-other-machines), l'expéditeur n'a pas d'adresse de réponse et `from` est `"unknown"`. La valeur est créée par l'expéditeur ; `verifiedPeerPid` est l'identité vérifiée.2243* `from` : le nom du coéquipier, ou l'adresse de l'expéditeur pour un pair entre sessions. Pour un [message entre machines unidirectionnel](/docs/fr/cross-session-messaging#message-sessions-on-other-machines), l'expéditeur n'a pas d'adresse de réponse et `from` est `"unknown"`. La valeur est rédigée par l'expéditeur ; `verifiedPeerPid` est l'identité vérifiée.

2284*2244* `fromMode` : la classe de permission de la session d'envoi, `bypass` ou `prompting`, déclarée par un hôte qui relaie un message pair entre vos sessions, comme l'[application de bureau](/docs/fr/desktop#work-across-sessions). Claude Code la lit dans la session de réception quand il applique les [contrôles entrants](/docs/fr/cross-session-messaging#control-inbound-messages). Nécessite Agent SDK v0.3.234 ou ultérieur.

2285 

2286`fromMode` : la classe de permissions de la session d'envoi, `bypass` ou `prompting`, déclarée par un hôte qui relaie un message pair entre vos sessions, comme l'[application de bureau](/docs/fr/desktop#work-across-sessions). Claude Code la lit dans la session de réception quand il applique les [contrôles entrants](/docs/fr/cross-session-messaging#control-inbound-messages). Nécessite Agent SDK v0.3.234 ou ultérieur.

2287 

2288* `senderTaskId` : l'ID de tâche du coéquipier. Absent pour un pair entre sessions.2245* `senderTaskId` : l'ID de tâche du coéquipier. Absent pour un pair entre sessions.

2289*2246* `name` : le nom d'affichage de l'expéditeur, normalisé par Claude Code : il supprime les points de code Unicode de contrôle, de format, de substitut et de séparateur de ligne ou de paragraphe, puis élague le résultat et le limite à 64 points de code avec une ellipse. Nécessite Claude Code v2.1.205 ou ultérieur.

2290 2247* `body` : le corps du message décodé sans l'enveloppe pair, identique octet pour octet à ce que le modèle voit. Toujours présent pour un message de coéquipier ; pour un pair entre sessions, présent uniquement quand le tour est exactement une enveloppe pair formée par Claude Code. Affichez `name` et `body` au lieu de réanalyser le texte du message. Nécessite Claude Code v2.1.205 ou ultérieur.

2291`name` : le nom d'affichage de l'expéditeur, normalisé par Claude Code : il supprime les points de code de contrôle, format, substitut et séparateur de ligne ou paragraphe Unicode, puis coupe le résultat et le limite à 64 points de code avec une ellipse. Nécessite Claude Code v2.1.205 ou ultérieur.2248* `fromSession` : l'ID de session de l'expéditeur ouvrable par l'hôte, défini par l'hôte de l'expéditeur pour que votre interface utilisateur puisse renvoyer vers la session d'envoi. Comme `from`, il est déclaré par l'expéditeur : utilisez-le uniquement comme cible de navigation, et ne le traitez pas comme une preuve de l'identité de l'expéditeur. Nécessite Claude Code v2.1.216 ou ultérieur.

2292 2249* `verifiedPeerPid` : l'ID du processus qui s'est connecté au socket de messagerie entre sessions de cette session, vérifié par le noyau et lu à partir de la connexion elle-même, jamais à partir du payload. Utilisez-le, et non `from`, pour identifier l'expéditeur : `from` peut être falsifié par n'importe quel processus du même utilisateur. Le champ est absent quand Claude Code ne peut pas le vérifier, comme sur Windows ou pour une entrée hors socket, donc une valeur absente signifie que l'expéditeur n'est pas vérifié. Pour le trafic relayé, il identifie le relais plutôt que l'auteur du message, et les ID de processus sont recyclables, donc traitez-le comme une indication de provenance plutôt que comme un jeton d'authentification. Nécessite Claude Code v2.1.216 ou ultérieur.

2293*

2294 

2295`body` : le corps du message décodé avec l'enveloppe pair supprimée, octet-exact avec ce que le modèle voit. Toujours présent pour un message de coéquipier ; pour un pair entre sessions, présent uniquement quand le tour est exactement une enveloppe pair formée par Claude Code. Rendez `name` et `body` au lieu de réanalyser le texte du message. Nécessite Claude Code v2.1.205 ou ultérieur.

2296 

2297*

2298 

2299`fromSession` : l'ID de session ouvrable par l'hôte de l'expéditeur, défini par l'hôte de l'expéditeur pour que votre interface utilisateur puisse se lier à la session d'envoi. Comme `from`, il est affirmé par l'expéditeur : utilisez-le uniquement comme cible de navigation, et ne le traitez pas comme une preuve de l'identité de l'expéditeur. Nécessite Claude Code v2.1.216 ou ultérieur.

2300 

2301*

2302 

2303`verifiedPeerPid` : l'ID de processus du processus qui s'est connecté à la prise de messagerie entre sessions de cette session, vérifié par le noyau et lu de la connexion elle-même, jamais de la charge utile. Utilisez-le, pas `from`, pour identifier l'expéditeur : `from` est forgeable par n'importe quel processus du même utilisateur. Le champ est absent quand Claude Code ne peut pas le vérifier, comme sur Windows ou l'entrée non-socket, donc une valeur absente signifie que l'expéditeur n'est pas vérifié. Pour le trafic relayé, il identifie le relais plutôt que l'auteur du message, et les ID de processus sont recyclables, donc traitez-le comme la provenance plutôt que comme un jeton d'authentification. Nécessite Claude Code v2.1.216 ou ultérieur.

2304 2250 

2305<h2 id="hook-types">2251<h2 id="hook-types">

2306 Types de hook2252 Types de hook


5146```5092```

5147 5093 

5148<Warning>5094<Warning>

5149 La bêta `context-1m-2025-08-07` est retirée à partir du 30 avril 2026. Passer cette valeur avec Claude Sonnet 4.5 ou Sonnet 4 n'a aucun effet, et les requêtes qui dépassent la fenêtre de contexte standard de 200 k jetons renvoient une erreur. Pour utiliser une fenêtre de contexte de 1 M de jetons, migrez vers [Claude Opus 5.5, Claude Opus 5, Claude Sonnet 5, Claude Sonnet 4.6, Claude Opus 4.6, Claude Opus 4.7 ou Claude Opus 4.8](https://platform.claude.com/docs/en/about-claude/models/overview), qui incluent 1 M de contexte au prix standard sans en-tête bêta requis.5095 Sur l'API Claude, la bêta `context-1m-2025-08-07` est retirée pour Claude Sonnet 4.5 et Claude Sonnet 4. Si vous la transmettez encore avec l'un de ces modèles, les requêtes qui dépassent la fenêtre de contexte standard de 200 000 tokens renvoient une erreur ; retirez-la donc de `betas`. Pour exécuter une session avec une fenêtre de contexte de 1 M de tokens, définissez `model` sur un modèle qui [s'exécute par défaut avec la fenêtre de 1 M](/docs/fr/model-config#extended-context), tel que `claude-sonnet-5-5` ou `claude-opus-5-5`. Pour un modèle qui n'atteint 1 M que via sa variante `[1m]`, ajoutez le suffixe à l'ID du modèle, comme dans `claude-opus-4-6[1m]`.

5150</Warning>5096</Warning>

5151 5097 

5152<h3 id="slashcommand">5098<h3 id="slashcommand">


5190| Champ | Type | Description |5136| Champ | Type | Description |

5191| :- | :- | :- |5137| :- | :- | :- |

5192| `value` | `string` | Identifiant du modèle à passer dans les appels API |5138| `value` | `string` | Identifiant du modèle à passer dans les appels API |

5193| `resolvedModel` | `string \| undefined` | ID du modèle canonique sur le fil auquel la `value` de cette entrée se résout. Une entrée d'alias telle que `sonnet` se résout en un ID de modèle explicite tel que `claude-sonnet-5`, afin qu'un hôte puisse faire correspondre un ID de modèle explicite stocké à l'entrée d'alias qui le couvre. Nécessite Claude Code v2.1.197 ou version ultérieure. |5139| `resolvedModel` | `string \| undefined` | L'ID de modèle auquel la `value` de cette entrée se résout, tel que `claude-sonnet-5-5` pour l'entrée d'alias `sonnet`. Nécessite Claude Code v2.1.197 ou version ultérieure. |

5194| `displayName` | `string` | Nom d'affichage lisible par l'homme |5140| `displayName` | `string` | Nom d'affichage lisible par l'homme |

5195| `description` | `string` | Description des capacités du modèle |5141| `description` | `string` | Description des capacités du modèle |

5196| `supportsEffort` | `boolean \| undefined` | Si ce modèle supporte les niveaux d'effort |5142| `supportsEffort` | `boolean \| undefined` | Si ce modèle supporte les niveaux d'effort |


5338};5284};

5339```5285```

5340 5286 

5341`thinkingTokens` compte les jetons de réflexion que ce modèle a générés. `outputTokens` les inclut déjà, donc n'additionnez pas les deux. Le champ est absent jusqu'à ce qu'un tour s'exécute sur une version de Claude Code qui l'enregistre, donc une session reprise qui a commencé sur une version antérieure signale un décompte partiel. `thinkingTokens` nécessite Agent SDK v0.3.257 ou version ultérieure.5287`thinkingTokens` compte les tokens de réflexion que ce modèle a générés. `outputTokens` les inclut déjà, donc n'additionnez pas les deux. Le champ est absent jusqu'à ce qu'un tour s'exécute sur une version de Claude Code qui l'enregistre, donc une session reprise qui a commencé sur une version antérieure signale un décompte partiel. `thinkingTokens` nécessite Agent SDK v0.3.257 ou version ultérieure.

5342 5288 

5343Les champs `canonicalModel` et `provider` nécessitent Claude Code v2.1.218 ou version ultérieure. `canonicalModel` est l'ID de modèle canonique que la recherche de prix utilise ; il peut différer de la chaîne de modèle brute qui clé l'entrée, par exemple lorsque cette chaîne est un ID spécifique au fournisseur ou un alias.5289Les champs `canonicalModel` et `provider` nécessitent Claude Code v2.1.218 ou version ultérieure. `canonicalModel` est l'ID de modèle canonique que la recherche de prix utilise ; il peut différer de la chaîne de modèle brute qui sert de clé à l'entrée, par exemple lorsque cette chaîne est un ID spécifique au fournisseur ou un alias.

5344 5290 

5345`provider` nomme le backend API qui a servi le modèle, tel que `firstParty`, `bedrock`, `vertex`, `foundry`, `anthropicAws`, `mantle` ou `gateway`.5291`provider` nomme le backend API qui a servi le modèle, tel que `firstParty`, `bedrock`, `vertex`, `foundry`, `anthropicAws`, `mantle` ou `gateway`.

5346 5292 


5370 `Usage`5316 `Usage`

5371</h3>5317</h3>

5372 5318 

5373Statistiques d'utilisation des jetons. C'est le type `BetaUsage` de `@anthropic-ai/sdk`.5319Statistiques d'utilisation des tokens. C'est le type `BetaUsage` de `@anthropic-ai/sdk`.

5374 5320 

5375```typescript theme={null}5321```typescript theme={null}

5376type Usage = {5322type Usage = {


5393 5339 

5394`BetaServerToolUsage`, `BetaIterationsUsage` et `BetaOutputTokensDetails` sont définis dans `@anthropic-ai/sdk`.5340`BetaServerToolUsage`, `BetaIterationsUsage` et `BetaOutputTokensDetails` sont définis dans `@anthropic-ai/sdk`.

5395 5341 

5396`output_tokens_details` décompose la sortie facturée par catégorie. Il porte actuellement un champ, `thinking_tokens: number`, comptant les jetons de sortie que le modèle a générés comme raisonnement interne, y compris les délimiteurs de bloc de réflexion. Le champ `output_tokens_details` nécessite TypeScript SDK v0.3.228 ou version ultérieure, qui regroupe Claude Code v2.1.228.5342`output_tokens_details` décompose la sortie facturée par catégorie. Il porte actuellement un champ, `thinking_tokens: number`, comptant les tokens de sortie que le modèle a générés comme raisonnement interne, y compris les délimiteurs de bloc de réflexion. Le champ `output_tokens_details` nécessite TypeScript SDK v0.3.228 ou version ultérieure, qui regroupe Claude Code v2.1.228.

5397 5343 

5398* **Facturation** : lisez la décomposition pour l'observabilité, pas pour la facturation. `output_tokens` reste le total faisant autorité, et `output_tokens - thinking_tokens` approxime la sortie sans raisonnement.5344* **Facturation** : lisez la décomposition pour l'observabilité, pas pour la facturation. `output_tokens` reste le total faisant autorité, et `output_tokens - thinking_tokens` approxime la sortie sans raisonnement.

5399* **Ce que le décompte couvre** : le raisonnement brut que le modèle a produit, qui peut être plus long que le texte de réflexion renvoyé dans le corps de la réponse. L'API le calcule en retokenisant ce texte brut, donc il peut différer du décompte de génération exact du modèle de quelques jetons.5345* **Ce que le décompte couvre** : le raisonnement brut que le modèle a produit, qui peut être plus long que le texte de réflexion renvoyé dans le corps de la réponse. L'API le calcule en retokenisant ce texte brut, donc il peut différer du décompte de génération exact du modèle de quelques tokens.

5400* **Streaming** : sur les messages d'assistant diffusés, cette décomposition, comme `output_tokens`, est un espace réservé `message_start` et ne porte aucun décompte réel, donc lisez-la à partir du message de résultat `usage` comme [Lire les jetons de sortie du message de résultat](/docs/fr/agent-sdk/cost-tracking#read-output-tokens-from-the-result-message) le décrit. Sur le message de résultat, `thinking_tokens` lit `0` lorsque le modèle ou le fournisseur ne signale aucune décomposition.5346* **Streaming** : sur les messages d'assistant diffusés en streaming, cette décomposition, comme `output_tokens`, est un espace réservé `message_start` et ne porte aucun décompte réel, donc lisez-la à partir du `usage` du message de résultat comme [Lire les tokens de sortie du message de résultat](/docs/fr/agent-sdk/cost-tracking#read-output-tokens-from-the-result-message) le décrit. Sur le message de résultat, `thinking_tokens` vaut `0` lorsque le modèle ou le fournisseur ne signale aucune décomposition.

5401* **Cas `null`** : `output_tokens_details` lui-même est `null` sur les messages d'assistant que Claude Code synthétise, tels que les messages d'erreur API.5347* **Cas `null`** : `output_tokens_details` lui-même est `null` sur les messages d'assistant que Claude Code synthétise, tels que les messages d'erreur API.

5402 5348 

5403<h3 id="calltoolresult">5349<h3 id="calltoolresult">


5451 `ThinkingConfig`5397 `ThinkingConfig`

5452</h3>5398</h3>

5453 5399 

5454Contrôle le comportement de réflexion/raisonnement de Claude. Prend la priorité sur le `maxThinkingTokens` déprécié.5400Contrôle le comportement de réflexion/raisonnement de Claude. A priorité sur le `maxThinkingTokens` déprécié.

5455 5401 

5456```typescript theme={null}5402```typescript theme={null}

5457type ThinkingDisplay = "summarized" | "omitted";5403type ThinkingDisplay = "summarized" | "omitted";


5558};5504};

5559```5505```

5560 5506 

5561`skippedLinks` compte les chemins suivis que la rembobinage a refusé de restaurer ou de supprimer pour la sécurité des liens : un lien symbolique, un lien physique ou un autre fichier non régulier au chemin suivi, un répertoire parent qui ne se résout plus à l'endroit où il pointait lorsque le point de contrôle a été pris, ou une sauvegarde qui n'a pas pu être lue en toute sécurité. Le champ nécessite Claude Code v2.1.216 ou version ultérieure. Un appel d'aperçu avec `rewindFiles(userMessageId, { dryRun: true })` ne le définit jamais.5507`skippedLinks` compte les chemins suivis que le rembobinage a refusé de restaurer ou de supprimer pour la sécurité des liens : un lien symbolique, un lien physique ou un autre fichier non régulier au chemin suivi, un répertoire parent qui ne se résout plus à l'endroit où il pointait lorsque le checkpoint a été pris, ou une sauvegarde qui n'a pas pu être lue en toute sécurité. Le champ nécessite Claude Code v2.1.216 ou version ultérieure. Un appel d'aperçu avec `rewindFiles(userMessageId, { dryRun: true })` ne le définit jamais.

5562 5508 

5563<h3 id="sdkstatusmessage">5509<h3 id="sdkstatusmessage">

5564 `SDKStatusMessage`5510 `SDKStatusMessage`


5581 `SDKTaskNotificationMessage`5527 `SDKTaskNotificationMessage`

5582</h3>5528</h3>

5583 5529 

5584Notification lorsqu'une tâche en arrière-plan se termine, échoue ou est arrêtée. Les tâches en arrière-plan incluent les commandes Bash `run_in_background`, les montres [Monitor](#monitor) et les sous-agents en arrière-plan. Pour le champ `ambient`, consultez [`SDKTaskStartedMessage`](#sdktaskstartedmessage), qui le définit et son exigence de version.5530Notification lorsqu'une tâche en arrière-plan se termine, échoue ou est arrêtée. Les tâches en arrière-plan incluent les commandes Bash `run_in_background`, les surveillances [Monitor](#monitor) et les sous-agents en arrière-plan. Pour le champ `ambient`, consultez [`SDKTaskStartedMessage`](#sdktaskstartedmessage), qui le définit et son exigence de version.

5585 5531 

5586```typescript theme={null}5532```typescript theme={null}

5587type SDKTaskNotificationMessage = {5533type SDKTaskNotificationMessage = {


5721 5667 

5722Pendant qu'un appel d'outil s'exécute dans la conversation principale, Claude Code émet un message `tool_progress` toutes les 30 secondes avec `heartbeat: true`. Chaque battement porte le nom de l'outil et les secondes écoulées, afin que vous puissiez distinguer un appel de longue durée d'une session bloquée. Claude Code n'émet pas de battements pour les appels d'outil à l'intérieur d'un sous-agent. Le champ `heartbeat` nécessite Agent SDK v0.3.214 ou version ultérieure. Avant v2.1.257, Claude Code n'émettait pas non plus de battements pour un appel d'outil Agent au premier plan.5668Pendant qu'un appel d'outil s'exécute dans la conversation principale, Claude Code émet un message `tool_progress` toutes les 30 secondes avec `heartbeat: true`. Chaque battement porte le nom de l'outil et les secondes écoulées, afin que vous puissiez distinguer un appel de longue durée d'une session bloquée. Claude Code n'émet pas de battements pour les appels d'outil à l'intérieur d'un sous-agent. Le champ `heartbeat` nécessite Agent SDK v0.3.214 ou version ultérieure. Avant v2.1.257, Claude Code n'émettait pas non plus de battements pour un appel d'outil Agent au premier plan.

5723 5669 

5724Sur les messages `tool_progress` pour l'outil Agent autres que les battements, `subagent_type` nomme le type de sous-agent en cours d'exécution, tel que `general-purpose`. `subagent_retry` est présent pendant que ce sous-agent attend un backoff d'erreur API, tel qu'une limite de débit ou une surcharge, avec un message par tentative de nouvelle tentative. Les deux champs nécessitent Agent SDK v0.3.214 ou version ultérieure.5670Sur les messages `tool_progress` pour l'outil Agent autres que les battements, `subagent_type` nomme le type de sous-agent en cours d'exécution, tel que `general-purpose`. `subagent_retry` est présent pendant que ce sous-agent attend un backoff d'erreur API, tel qu'une limite de débit ou une surcharge, avec un message par nouvelle tentative. Les deux champs nécessitent Agent SDK v0.3.214 ou version ultérieure.

5725 5671 

5726Pour rendre un indicateur de nouvelle tentative à partir de `subagent_retry` :5672Pour rendre un indicateur de nouvelle tentative à partir de `subagent_retry` :

5727 5673 


5750 `SDKTaskStartedMessage`5696 `SDKTaskStartedMessage`

5751</h3>5697</h3>

5752 5698 

5753Émis lorsqu'une tâche commence. Le champ `task_type` est `"local_bash"` pour les commandes Bash et les montres [Monitor](#monitor), `"local_agent"` pour les sous-agents, ou `"remote_agent"`.5699Émis lorsqu'une tâche commence. Le champ `task_type` est `"local_bash"` pour les commandes Bash et les surveillances [Monitor](#monitor), `"local_agent"` pour les sous-agents, ou `"remote_agent"`.

5754 5700 

5755```typescript theme={null}5701```typescript theme={null}

5756type SDKTaskStartedMessage = {5702type SDKTaskStartedMessage = {


5768};5714};

5769```5715```

5770 5716 

5771`ambient` est `true` pour les tâches qui ne font pas partie du travail de la session, telles que les tâches que Claude Code exécute pour son propre fonctionnement. Les montres de mise à jour en direct sont également ambiantes, y compris les montres que l'utilisateur a demandées. Excluez les tâches ambiantes des indicateurs d'activité. Le champ nécessite Agent SDK v0.3.247 ou version ultérieure.5717`ambient` est `true` pour les tâches qui ne font pas partie du travail de la session, telles que les tâches que Claude Code exécute pour son propre fonctionnement. Les surveillances de mise à jour en direct sont également ambiantes, y compris les surveillances que l'utilisateur a demandées. Excluez les tâches ambiantes des indicateurs d'activité. Le champ nécessite Agent SDK v0.3.247 ou version ultérieure.

5772 5718 

5773`ambient` apparaît également sur [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) et sur les entrées [`SDKBackgroundTasksChangedMessage`](#sdkbackgroundtaskschangedmessage).5719`ambient` apparaît également sur [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) et sur les entrées [`SDKBackgroundTasksChangedMessage`](#sdkbackgroundtaskschangedmessage).

5774 5720 


5837 5783 

5838Émis chaque fois que l'ensemble des tâches en arrière-plan en direct change : une tâche démarre, se termine, est tuée, un agent au premier plan est mis en arrière-plan, ou le champ `description` ou `ambient` d'une tâche change.5784Émis chaque fois que l'ensemble des tâches en arrière-plan en direct change : une tâche démarre, se termine, est tuée, un agent au premier plan est mis en arrière-plan, ou le champ `description` ou `ambient` d'une tâche change.

5839 5785 

5840Le tableau `tasks` est l'ensemble en direct complet. Remplacez tout ensemble mis en cache par chaque charge utile au lieu d'appairer les événements `task_started` et `task_notification`, afin que le prochain changement d'adhésion corrige tout événement que vous avez manqué.5786Le tableau `tasks` est l'ensemble en direct complet. Remplacez tout ensemble mis en cache par chaque payload au lieu d'appairer les événements `task_started` et `task_notification`, afin que le prochain changement d'appartenance corrige tout événement que vous avez manqué.

5841 5787 

5842L'ordre relatif à ces événements par tâche n'est pas spécifié, donc ne corrélez pas les deux flux.5788L'ordre relatif à ces événements par tâche n'est pas spécifié, donc ne corrélez pas les deux flux.

5843 5789 

5844Rien n'est émis au démarrage. Réinitialisez à un ensemble vide chaque fois que le processus CLI de la session démarre ou redémarre et laissez le prochain changement d'adhésion le repeupler.5790Rien n'est émis au démarrage. Réinitialisez à un ensemble vide chaque fois que le processus CLI de la session démarre ou redémarre et laissez le prochain changement d'appartenance le repeupler.

5845 5791 

5846Lorsque vous envoyez une demande de contrôle `initialize` répétée à une session en cours d'exécution, par exemple avec [`reinitialize()`](#query-object) après un écart de transport, Claude Code suit la réponse avec un instantané de l'ensemble en direct actuel, même lorsqu'il est vide. Un hôte qui se reconnecte apprend donc ce qui s'exécute sans attendre le prochain changement d'adhésion. Avant Agent SDK v0.3.239, Claude Code n'envoyait aucun instantané après un `initialize` répété.5792Lorsque vous envoyez une demande de contrôle `initialize` répétée à une session en cours d'exécution, par exemple avec [`reinitialize()`](#query-object) après une interruption du transport, Claude Code fait suivre la réponse d'un instantané de l'ensemble en direct actuel, même lorsqu'il est vide. Un hôte qui se reconnecte apprend donc ce qui s'exécute sans attendre le prochain changement d'appartenance. Avant Agent SDK v0.3.239, Claude Code n'envoyait aucun instantané après un `initialize` répété.

5847 5793 

5848Nécessite Claude Code v2.1.203 ou version ultérieure.5794Nécessite Claude Code v2.1.203 ou version ultérieure.

5849 5795 


5866 `SDKThinkingTokensMessage`5812 `SDKThinkingTokensMessage`

5867</h3>5813</h3>

5868 5814 

5869Émis pendant que Claude produit un bloc de réflexion, y compris un bloc édité. `estimated_tokens` est une estimation en cours des jetons de réflexion générés jusqu'à présent dans le bloc actuel, et `estimated_tokens_delta` est l'incrément porté par ce cadre. Utilisez ces estimations pour l'affichage de la progression.5815Émis pendant que Claude produit un bloc de réflexion, y compris un bloc expurgé. `estimated_tokens` est une estimation en cours des tokens de réflexion générés jusqu'à présent dans le bloc actuel, et `estimated_tokens_delta` est l'incrément porté par ce cadre. Utilisez ces estimations pour l'affichage de la progression.

5870 5816 

5871Lorsque le modèle ou le fournisseur signale une décomposition, le décompte final pour la boucle d'agent de haut niveau est le [`usage.output_tokens_details.thinking_tokens`](#usage) du message de résultat, qui [n'inclut pas les jetons de sous-agent](/docs/fr/agent-sdk/cost-tracking#get-the-total-cost-of-a-query).5817Lorsque le modèle ou le fournisseur signale une décomposition, le décompte final pour la boucle d'agent de haut niveau est le [`usage.output_tokens_details.thinking_tokens`](#usage) du message de résultat, qui [n'inclut pas les tokens de sous-agent](/docs/fr/agent-sdk/cost-tracking#get-the-total-cost-of-a-query).

5872 5818 

5873Nécessite Claude Code v2.1.153 ou version ultérieure.5819Nécessite Claude Code v2.1.153 ou version ultérieure.

5874 5820 


5888 `SDKFilesPersistedEvent`5834 `SDKFilesPersistedEvent`

5889</h3>5835</h3>

5890 5836 

5891Émis lorsque les points de contrôle de fichiers sont persistés sur le disque.5837Émis lorsque les checkpoints de fichiers sont persistés sur le disque.

5892 5838 

5893```typescript theme={null}5839```typescript theme={null}

5894type SDKFilesPersistedEvent = {5840type SDKFilesPersistedEvent = {


5930 `SDKLocalCommandOutputMessage`5876 `SDKLocalCommandOutputMessage`

5931</h3>5877</h3>

5932 5878 

5933Claude Code n'émet pas ce type de message. Lorsque vous envoyez une commande telle que `/context` ou `/usage` comme invite, sa sortie arrive comme [`SDKAssistantMessage`](#sdkassistantmessage).5879Claude Code n'émet pas ce type de message. Lorsque vous envoyez une commande telle que `/context` ou `/usage` comme prompt, sa sortie arrive comme [`SDKAssistantMessage`](#sdkassistantmessage).

5934 5880 

5935```typescript theme={null}5881```typescript theme={null}

5936type SDKLocalCommandOutputMessage = {5882type SDKLocalCommandOutputMessage = {


5946 `SDKCommandsChangedMessage`5892 `SDKCommandsChangedMessage`

5947</h3>5893</h3>

5948 5894 

5949Émis lorsque l'ensemble des commandes disponibles change en milieu de session, par exemple lorsque Claude Code découvre des compétences à mesure que l'agent entre dans un sous-répertoire. Le tableau `commands` est la liste complète mise à jour, donc remplacez tout cache de liste de commandes par cette charge utile. L'appel de [`supportedCommands()`](#query-object) après ce message renvoie la même liste mise à jour, car la méthode suit le dernier push ; cela nécessite Agent SDK v0.3.216 ou version ultérieure. Dans les versions antérieures du SDK, `supportedCommands()` renvoie l'instantané capturé à l'initialisation et ne reflète jamais les changements en milieu de session.5895Émis lorsque l'ensemble des commandes disponibles change en milieu de session, par exemple lorsque Claude Code découvre des skills à mesure que l'agent entre dans un sous-répertoire. Le tableau `commands` est la liste complète mise à jour, donc remplacez tout cache de liste de commandes par ce payload. L'appel de [`supportedCommands()`](#query-object) après ce message renvoie la même liste mise à jour, car la méthode suit le dernier push ; cela nécessite Agent SDK v0.3.216 ou version ultérieure. Dans les versions antérieures du SDK, `supportedCommands()` renvoie l'instantané capturé à l'initialisation et ne reflète jamais les changements en milieu de session.

5950 5896 

5951Claude Code émet également ce message lorsque les [invites](/docs/fr/mcp#use-mcp-prompts-as-commands) d'un serveur MCP rejoignent ou quittent la liste, par exemple lorsqu'un serveur termine la connexion après le démarrage de la session. Cela nécessite Claude Code v2.1.281 ou version ultérieure.5897Claude Code émet également ce message lorsque les [prompts](/docs/fr/mcp#use-mcp-prompts-as-commands) d'un serveur MCP rejoignent ou quittent la liste, par exemple lorsqu'un serveur termine la connexion après le démarrage de la session. Cela nécessite Claude Code v2.1.281 ou version ultérieure.

5952 5898 

5953```typescript theme={null}5899```typescript theme={null}

5954type SDKCommandsChangedMessage = {5900type SDKCommandsChangedMessage = {


5964 `SDKPromptSuggestionMessage`5910 `SDKPromptSuggestionMessage`

5965</h3>5911</h3>

5966 5912 

5967Émis après un tour lorsque [`promptSuggestions`](#options) est activé et que Claude Code a généré une suggestion pour ce tour. Contient l'invite utilisateur suivante prédite. Pour les tours qui n'en reçoivent pas, consultez [Quand Claude Code ignore les suggestions](/docs/fr/interactive-mode#when-claude-code-skips-suggestions).5913Émis après un tour lorsque [`promptSuggestions`](#options) est activé et que Claude Code a généré une suggestion pour ce tour. Contient le prochain prompt utilisateur prédit. Pour les tours qui n'en reçoivent pas, consultez [Quand Claude Code ignore les suggestions](/docs/fr/interactive-mode#when-claude-code-skips-suggestions).

5968 5914 

5969```typescript theme={null}5915```typescript theme={null}

5970type SDKPromptSuggestionMessage = {5916type SDKPromptSuggestionMessage = {


6001 5947 

6002Les champs `trigger`, `user_message_uuid` et `timestamp` nécessitent Claude Code v2.1.281 ou version ultérieure.5948Les champs `trigger`, `user_message_uuid` et `timestamp` nécessitent Claude Code v2.1.281 ou version ultérieure.

6003 5949 

6004Les typages publiés du SDK déclarent `SDKConversationResetMessage` dans Claude Code v2.1.203 et versions ultérieures. Avant v2.1.203, `SDKMessage` référençait le type sans le déclarer, donc le rétrécissement sur `type === "conversation_reset"` n'a pas pu être typé lorsque `skipLibCheck` était désactivé.5950Les typages publiés du SDK déclarent `SDKConversationResetMessage` dans Claude Code v2.1.203 et versions ultérieures. Avant v2.1.203, `SDKMessage` référençait le type sans le déclarer, donc le rétrécissement sur `type === "conversation_reset"` échouait à la vérification de type lorsque `skipLibCheck` était désactivé.

6005 5951 

6006<h3 id="aborterror">5952<h3 id="aborterror">

6007 `AbortError`5953 `AbortError`


6013class AbortError extends Error {}5959class AbortError extends Error {}

6014```5960```

6015 5961 

6016`AbortError` est la seule classe d'erreur dans l'API typée du SDK. Les autres défaillances, telles que la sortie ou l'échec du lancement du processus Claude Code, rejettent l'itération de message avec des erreurs qui ne portent aucune classe SDK pour correspondre. [Dépannage](/docs/fr/agent-sdk/troubleshooting) clé ces erreurs par message, avec la cause et la correction pour chacune.5962`AbortError` est la seule classe d'erreur dans l'API typée du SDK. Les autres défaillances, telles que la sortie ou l'échec du lancement du processus Claude Code, rejettent l'itération de message avec des erreurs qui ne portent aucune classe SDK à laquelle se référer. [Dépannage](/docs/fr/agent-sdk/troubleshooting) répertorie ces erreurs par message, avec la cause et la correction pour chacune.

6017 5963 

6018<h2 id="sandbox-configuration">5964<h2 id="sandbox-configuration">

6019 Configuration du sandbox5965 Configuration du sandbox

agent-teams.md +5 −2

Details

195* **Mode in-process** : utilisez les touches fléchées haut et bas dans le panneau d'agent pour sélectionner un coéquipier, puis appuyez sur Entrée pour afficher sa session et tapez pour lui envoyer un message. Appuyez sur `x` sur un coéquipier sélectionné pour l'arrêter. Appuyez sur Ctrl+T pour basculer la liste des tâches.195* **Mode in-process** : utilisez les touches fléchées haut et bas dans le panneau d'agent pour sélectionner un coéquipier, puis appuyez sur Entrée pour afficher sa session et tapez pour lui envoyer un message. Appuyez sur `x` sur un coéquipier sélectionné pour l'arrêter. Appuyez sur Ctrl+T pour basculer la liste des tâches.

196* **Mode volets divisés** : cliquez dans le volet d'un coéquipier pour interagir directement avec sa session. Chaque coéquipier a une vue complète de son propre terminal.196* **Mode volets divisés** : cliquez dans le volet d'un coéquipier pour interagir directement avec sa session. Chaque coéquipier a une vue complète de son propre terminal.

197 197 

198Pendant que vous visualisez un coéquipier in-process, le texte brut et les [skills](/docs/fr/skills) vont à ce coéquipier, mais les commandes intégrées s'exécutent toujours dans la session du chef.198Pendant que vous visualisez un coéquipier in-process, le texte brut et les [skills](/docs/fr/skills) vont à ce coéquipier, et les commandes intégrées vont à la session du chef, avec ces garde-fous :

199 199 

200Le modèle et le mode rapide d'un coéquipier sont fixés lorsqu'il est généré, donc `/model` et `/fast` ne changent que les paramètres du chef. À partir de la v2.1.199, taper l'une ou l'autre commande en visualisant un coéquipier affiche un avis indiquant que le changement s'applique au chef ; les versions antérieures l'appliquaient au chef sans indication. `/effort` s'applique toujours aux tours ultérieurs du coéquipier visualisé, car les coéquipiers suivent le [niveau d'effort](/docs/fr/model-config#adjust-effort-level) du chef.200* `/compact`, `/clear` et `/rewind` agissent sur la conversation du chef, donc Claude Code vous demande de confirmer avant d'exécuter l'une d'elles depuis cette vue.

201* `/model` et `/fast` définissent le modèle et le mode rapide du chef, et non ceux du coéquipier, donc elles ne s'exécutent pas depuis cette vue. Un avis vous en indique la raison.

202 

203Le modèle et le mode rapide d'un coéquipier sont fixés lorsqu'il est généré. `/effort` s'applique toujours aux tours ultérieurs du coéquipier visualisé, car les coéquipiers suivent le [niveau d'effort](/docs/fr/model-config#adjust-effort-level) du chef.

201 204 

202<h3 id="assign-and-claim-tasks">205<h3 id="assign-and-claim-tasks">

203 Assigner et revendiquer des tâches206 Assigner et revendiquer des tâches

agent-view.md +26 −6

Details

224 224 

225La plupart du temps, le panneau d'aperçu suffit et vous n'avez pas besoin d'ouvrir la transcription complète.225La plupart du temps, le panneau d'aperçu suffit et vous n'avez pas besoin d'ouvrir la transcription complète.

226 226 

227Tapez une réponse dans le panneau d'aperçu et appuyez sur `Enter` pour l'envoyer à cette session. Lorsque la session pose une question avec des choix prédéfinis, le panneau d'aperçu les affiche sous forme de liste numérotée et vous pouvez appuyer sur une touche numérique pour en choisir une. Une invite de permission s'affiche sous forme de texte décrivant ce que la session souhaite exécuter, sans options numérotées. Tapez une réponse pour y répondre, ou attachez-vous pour répondre avec l'invite standard. Pour les autres sessions bloquées, appuyez sur `Tab` pour remplir l'entrée avec une réponse suggérée que vous pouvez modifier avant d'envoyer. Préfixez une réponse avec `!` pour envoyer une commande Bash à la place.227Tapez une réponse dans le panneau d'aperçu et appuyez sur `Enter` pour l'envoyer à cette session. Préfixez une réponse avec `!` pour envoyer une commande Bash à la place. Ce qu'il advient de la réponse dépend de la session et de ce que vous envoyez :

228 

229* Une session en cours de travail : la réponse rejoint la [file d'attente de messages](/docs/fr/interactive-mode#queue-messages-while-claude-works) de la session au lieu d'interrompre la réponse, et prend effet [au même moment que les entrées en file d'attente](/docs/fr/interactive-mode#when-claude-code-sends-what-you-queued). Une [commande](/docs/fr/commands) attend la fin du tour, même une commande qui s'exécute dès que vous la tapez dans le prompt de la session elle-même

230* Une réponse qui est exactement `/stop` : arrête immédiatement la session au lieu de lui être transmise, que la session soit en cours de travail ou qu'elle vous attende

231* Une [tâche shell](#run-a-shell-command) : la réponse, `/stop` compris, est transmise au terminal de la commande comme saisie

232 

233Lorsque la session vous attend, la façon de répondre depuis le panneau d'aperçu dépend de ce qu'elle attend :

234 

235* Une question avec des choix prédéfinis : le panneau répertorie les choix par numéro. Avec l'entrée de réponse vide, appuyez sur le numéro d'un choix pour le remplir, puis sur `Enter` pour l'envoyer, ou tapez votre propre réponse à la place

236* Une question sans choix prédéfinis : tapez votre réponse. Lorsque l'entrée vide affiche une réponse suggérée, appuyez sur `Tab` pour la remplir et la modifier avant de l'envoyer

237* Une demande de permission ou un autre dialogue, comme une demande du [sandbox](/docs/fr/sandboxing) ou la [demande d'entrée](/docs/fr/mcp#respond-to-mcp-elicitation-requests) d'un serveur MCP : répondre n'y répond pas. Votre réponse attend dans la file d'attente. Pour répondre au dialogue, attachez-vous avec `→`

228 238 

229Lorsqu'un hook [`PermissionRequest`](/docs/fr/hooks#permissionrequest) ou [`PreToolUse`](/docs/fr/hooks#pretooluse) retourne une sortie que Claude Code ne peut pas valider pour l'appel que la session demande, la ligne affiche l'événement du hook et `hook output invalid:` avec l'erreur de validation avant le texte de la demande en attente. Pour un hook qui échoue d'une autre manière, la ligne dit que le hook a échoué. La session attend toujours la même demande.239Lorsqu'un hook [`PermissionRequest`](/docs/fr/hooks#permissionrequest) ou [`PreToolUse`](/docs/fr/hooks#pretooluse) retourne une sortie que Claude Code ne peut pas valider pour l'appel que la session demande, la ligne affiche l'événement du hook et `hook output invalid:` avec l'erreur de validation avant le texte de la demande en attente. Pour un hook qui échoue d'une autre manière, la ligne dit que le hook a échoué. La session attend toujours la même demande.

230 240 


301* Appuyez sur `Ctrl+T` pour épingler une session en haut et [garder son processus en cours d'exécution](#the-supervisor-process) pendant l'inactivité311* Appuyez sur `Ctrl+T` pour épingler une session en haut et [garder son processus en cours d'exécution](#the-supervisor-process) pendant l'inactivité

302* Appuyez sur `Shift+↑` ou `Shift+↓` pour réorganiser les sessions312* Appuyez sur `Shift+↑` ou `Shift+↓` pour réorganiser les sessions

303* Appuyez sur `Ctrl+R` pour renommer une session313* Appuyez sur `Ctrl+R` pour renommer une session

304* Appuyez sur `Enter` sur un en-tête de groupe pour le réduire314* Appuyez sur `Enter` sur un en-tête de groupe pour le réduire, sauf lorsqu'un [filtre](#filter-sessions) est actif, auquel cas chaque groupe reste développé

305 315 

306Pour supprimer une session de la liste, appuyez sur `Ctrl+X` pour l'arrêter et `Ctrl+X` à nouveau dans les deux secondes pour la supprimer. Appuyer sur `Ctrl+X` sur un en-tête de groupe supprime chaque session de ce groupe après confirmation.316Pour supprimer une session de la liste, appuyez sur `Ctrl+X` pour l'arrêter et `Ctrl+X` à nouveau dans les deux secondes pour la supprimer. Appuyer sur `Ctrl+X` sur un en-tête de groupe supprime chaque session de ce groupe après confirmation.

307 317 


324 Filtrer les sessions334 Filtrer les sessions

325</h3>335</h3>

326 336 

327Tapez dans l'entrée de dispatch pour filtrer au lieu de dispatcher :337Commencez l'entrée de dispatch par l'un de ces filtres pour réduire la liste au fur et à mesure de la saisie :

328 338 

329| Filtre | Affiche |339| Filtre | Affiche |

330| :- | :- |340| :- | :- |

331| `a:<name>` | Sessions exécutant l'agent nommé |341| `a:<name>` | Sessions exécutant l'agent nommé |

332| `s:<state>` | Sessions dans l'état donné, comme `s:working`. Accepte également `s:blocked` pour tout ce qui vous attend |342| `s:<state>` | Sessions dans l'état donné, comme `s:working`, ou sous l'en-tête de groupe donné, comme `s:ready` pour `Ready for review`. `s:blocked` répertorie tout ce qui vous attend |

333| `#<number>` ou une URL de demande de tirage ou de fusion | La session travaillant sur cette demande de tirage ou de fusion |343| `n:<text>` | Sessions dont le nom ou le premier prompt contient le texte, comme `n:login`. Nécessite Claude Code v2.1.287 ou ultérieur |

344| `o:<text>` | Sessions dont le résultat contient le texte, comme `o:merged`. Un `o:` seul répertorie chaque session qui a signalé un résultat |

345| Un numéro de pull request ou de merge request, comme `#1234`, ou son URL | La session travaillant sur cette pull request ou merge request |

334| N'importe quelle autre URL | La session dont la première invite contenait cette URL |346| N'importe quelle autre URL | La session dont la première invite contenait cette URL |

335 347 

348Pour combiner des filtres, commencez par `a:`, `s:`, `n:` ou `o:` et ajoutez-en d'autres, séparés par des espaces. La liste affiche les sessions qui correspondent à tous. Par exemple, `s:blocked a:reviewer` répertorie les sessions `reviewer` qui vous attendent.

349 

350Lorsqu'un filtre est actif, les groupes que vous avez réduits se développent pour afficher leurs correspondances et la première correspondance est sélectionnée, de sorte qu'appuyer sur `Enter` l'ouvre. Effacez l'entrée pour supprimer le filtre, et ces groupes se réduisent à nouveau.

351 

336<h3 id="keyboard-shortcuts">352<h3 id="keyboard-shortcuts">

337 Raccourcis clavier353 Raccourcis clavier

338</h3>354</h3>


342| Raccourci | Action |358| Raccourci | Action |

343| :- | :- |359| :- | :- |

344| `↑` / `↓` | Se déplacer entre les lignes |360| `↑` / `↓` | Se déplacer entre les lignes |

345| `Enter` | Attacher à la session sélectionnée, ou dispatcher s'il y a du texte dans l'entrée |361| `PgUp` / `PgDn` | Monter ou descendre d'un écran de lignes |

362| `Home` / `End` | Aller à la première ou à la dernière ligne |

363| `Enter` | Attacher à la session sélectionnée, ou soumettre le texte de l'entrée s'il ne s'agit pas d'un [filtre](#filter-sessions) |

346| `Space` | Ouvrir ou fermer le panneau d'aperçu pour la session sélectionnée |364| `Space` | Ouvrir ou fermer le panneau d'aperçu pour la session sélectionnée |

347| `Shift+Enter` | Insérer une nouvelle ligne dans l'entrée de dispatch, [comme dans l'invite principale](/docs/fr/terminal-config#enter-multiline-prompts) |365| `Shift+Enter` | Insérer une nouvelle ligne dans l'entrée de dispatch, [comme dans l'invite principale](/docs/fr/terminal-config#enter-multiline-prompts) |

348| `Ctrl+Enter` | Dispatcher et attacher immédiatement, dans les terminaux où la superposition `?` répertorie `ctrl+enter to start and open` |366| `Ctrl+Enter` | Dispatcher et attacher immédiatement, dans les terminaux où la superposition `?` répertorie `ctrl+enter to start and open` |


1060 1078 

1061| Version | Changement |1079| Version | Changement |

1062| - | - |1080| - | - |

1081| v2.1.287 | Le [filtre `n:<text>`](#filter-sessions) trouve les sessions par nom ou par premier prompt. Tant qu'un filtre est actif, les groupes que vous avez réduits se développent pour afficher leurs correspondances et la première correspondance est sélectionnée, de sorte que `Enter` l'ouvre. |

1082| v2.1.287 | Une commande envoyée comme [réponse depuis le panneau d'aperçu](#peek-and-reply) s'exécute à la fin du tour en cours de la session, y compris les commandes qui s'exécutent dès que vous les tapez dans le prompt propre à la session. Une réponse qui est exactement `/stop` arrête immédiatement la session. |

1063| v2.1.281 | Une restriction [`--setting-sources`](/docs/fr/cli-reference#cli-flags) [se reporte](#what-carries-over-when-you-background) à une session que vous mettez en arrière-plan avec `←` ou `/bg` et aux sessions que vous dispatchez à partir de la vue agent. Avant cette version, la session générée chargeait chaque source de paramètres. |1083| v2.1.281 | Une restriction [`--setting-sources`](/docs/fr/cli-reference#cli-flags) [se reporte](#what-carries-over-when-you-background) à une session que vous mettez en arrière-plan avec `←` ou `/bg` et aux sessions que vous dispatchez à partir de la vue agent. Avant cette version, la session générée chargeait chaque source de paramètres. |

1064| v2.1.281 | `claude --bg`, et les commandes qui redémarrent une session, vérifient d'abord la confiance de l'espace de travail pour le répertoire de la session. À partir d'un terminal dans ce répertoire, [le dialogue de confiance apparaît](#from-your-shell) si vous ne l'avez pas accepté ; où aucun dialogue ne peut apparaître, comme dans un script, la commande quitte avec une erreur [`Workspace not trusted`](/docs/fr/errors#workspace-not-trusted-when-dispatching-a-background-session). |1084| v2.1.281 | `claude --bg`, et les commandes qui redémarrent une session, vérifient d'abord la confiance de l'espace de travail pour le répertoire de la session. À partir d'un terminal dans ce répertoire, [le dialogue de confiance apparaît](#from-your-shell) si vous ne l'avez pas accepté ; où aucun dialogue ne peut apparaître, comme dans un script, la commande quitte avec une erreur [`Workspace not trusted`](/docs/fr/errors#workspace-not-trusted-when-dispatching-a-background-session). |

1065| v2.1.274 | Après une auto-mise à jour, une vue agent dont vous avez été absent pendant environ une heure peut se relancer sur la nouvelle version. Quand elle le fait, elle conserve les [paramètres par défaut de dispatch](#dispatch-defaults) avec lesquels vous l'avez ouverte : `--model`, `--effort`, `--permission-mode`, `--allow-dangerously-skip-permissions`, et `--agent`. Avant cette version, la vue relancée conservait seulement `--cwd` et les drapeaux de configuration comme `--settings` et `--mcp-config`, donc les sessions que vous avez dispatchées après n'avaient pas ces paramètres par défaut. |1085| v2.1.274 | Après une auto-mise à jour, une vue agent dont vous avez été absent pendant environ une heure peut se relancer sur la nouvelle version. Quand elle le fait, elle conserve les [paramètres par défaut de dispatch](#dispatch-defaults) avec lesquels vous l'avez ouverte : `--model`, `--effort`, `--permission-mode`, `--allow-dangerously-skip-permissions`, et `--agent`. Avant cette version, la vue relancée conservait seulement `--cwd` et les drapeaux de configuration comme `--settings` et `--mcp-config`, donc les sessions que vous avez dispatchées après n'avaient pas ces paramètres par défaut. |

Details

526 526 

527Si votre organisation fournit les en-têtes du garde-fou via une politique de [passerelle d'applications Claude](/docs/fr/claude-apps-gateway), ils comptent comme des [paramètres nécessitant une approbation](/docs/fr/server-managed-settings#environment-variables-and-the-approval-dialog).527Si votre organisation fournit les en-têtes du garde-fou via une politique de [passerelle d'applications Claude](/docs/fr/claude-apps-gateway), ils comptent comme des [paramètres nécessitant une approbation](/docs/fr/server-managed-settings#environment-variables-and-the-approval-dialog).

528 528 

529Lorsque le garde-fou bloque une réponse en cours de route, le texte déjà diffusé est conservé et la réponse se termine par le message configuré sur le garde-fou pour les réponses bloquées.

530 

529<h2 id="use-the-mantle-endpoint">531<h2 id="use-the-mantle-endpoint">

530 Utiliser le point de terminaison Mantle532 Utiliser le point de terminaison Mantle

531</h2>533</h2>

artifacts.md +9 −0

Details

118 118 

119Claude 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).119Claude 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).

120 120 

121Claude Code vous demande votre approbation avant que Claude ne lise l'artefact dans les cas suivants, en plus de toute demande prévue par votre mode de permission ou vos règles :

122 

123* **Session cloud sans accès réseau** : pour un [environnement cloud](/docs/fr/cloud-environments#access-levels), il s'agit du niveau **None**. En [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode), le classifieur peut approuver à votre place ; dans une session [Cowork](https://claude.com/product/cowork), l'approbation vous revient exclusivement.

124* **Artefact public d'une autre organisation** : Claude Code vous demande d'abord, même en mode auto. Lorsque Claude Code ne peut pas vous demander, par exemple en mode `bypassPermissions`, Claude ne peut pas lire l'artefact. Claude ne peut lire ces artefacts que lorsque la [récupération des feature flags](/docs/fr/env-vars#features-that-need-feature-flag-fetching) est activée.

125* **Propriétaire ou paramètre réseau non confirmé** : lorsque Claude Code ne peut pas confirmer qui a créé l'artefact, ou ne peut pas confirmer le paramètre réseau d'une session cloud, il vous demande, et votre approbation couvre uniquement cette requête.

126* **Mode plan, ou récupération des feature flags désactivée** : en [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode), ou si vous avez désactivé la [récupération des feature flags](/docs/fr/env-vars#features-that-need-feature-flag-fetching), Claude Code demande avant que l'outil Artifact ne lise un artefact créé par quelqu'un d'autre dans votre organisation.

127 

128Lorsque Claude lit l'artefact avec WebFetch, les propres [règles de demande de permission](/docs/fr/tools-reference#webfetch-tool-behavior) de WebFetch continuent de s'appliquer.

129 

121<h2 id="collect-comments-on-an-artifact">130<h2 id="collect-comments-on-an-artifact">

122 Collecter les commentaires sur un artifact131 Collecter les commentaires sur un artifact

123</h2>132</h2>

channels.md +10 −8

Details

36 </Step>36 </Step>

37 37 

38 <Step title="Installer le plugin">38 <Step title="Installer le plugin">

39 Dans Claude Code, exécutez :39 Démarrez Claude Code en exécutant `claude` dans votre terminal, puis saisissez ceci à son invite :

40 40 

41 ```41 ```

42 /plugin install telegram@claude-plugins-official42 /plugin install telegram@claude-plugins-official


61 </Step>61 </Step>

62 62 

63 <Step title="Redémarrer avec les canaux activés">63 <Step title="Redémarrer avec les canaux activés">

64 Quittez Claude Code et redémarrez avec l'indicateur de canal. Cela démarre le plugin Telegram, qui commence à interroger les messages de votre bot :64 Quittez Claude Code et redémarrez avec le flag de canal. Cela démarre le plugin Telegram, qui commence à interroger les messages de votre bot :

65 65 

66 ```bash theme={null}66 ```bash theme={null}

67 claude --channels plugin:telegram@claude-plugins-official67 claude --channels plugin:telegram@claude-plugins-official


114 </Step>114 </Step>

115 115 

116 <Step title="Installer le plugin">116 <Step title="Installer le plugin">

117 Dans Claude Code, exécutez :117 Démarrez Claude Code en exécutant `claude` dans votre terminal, puis saisissez ceci à son invite :

118 118 

119 ```119 ```

120 /plugin install discord@claude-plugins-official120 /plugin install discord@claude-plugins-official


139 </Step>139 </Step>

140 140 

141 <Step title="Redémarrer avec les canaux activés">141 <Step title="Redémarrer avec les canaux activés">

142 Quittez Claude Code et redémarrez avec l'indicateur de canal. Cela connecte le plugin Discord pour que votre bot puisse recevoir et répondre aux messages :142 Quittez Claude Code et redémarrez avec le flag de canal. Cela connecte le plugin Discord pour que votre bot puisse recevoir et répondre aux messages :

143 143 

144 ```bash theme={null}144 ```bash theme={null}

145 claude --channels plugin:discord@claude-plugins-official145 claude --channels plugin:discord@claude-plugins-official


179 </Step>179 </Step>

180 180 

181 <Step title="Installer le plugin">181 <Step title="Installer le plugin">

182 Dans Claude Code, exécutez :182 Démarrez Claude Code en exécutant `claude` dans votre terminal, puis saisissez ceci à son invite :

183 183 

184 ```184 ```

185 /plugin install imessage@claude-plugins-official185 /plugin install imessage@claude-plugins-official


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

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

192 192 

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

194 

195 Si le résumé d'installation signale `Run /reload-plugins to activate.`, vous pouvez ignorer cela ici, car le redémarrage à l'étape suivante récupère le plugin.

194 </Step>196 </Step>

195 197 

196 <Step title="Redémarrer avec les canaux activés">198 <Step title="Redémarrer avec les canaux activés">

197 Quittez Claude Code et redémarrez avec l'indicateur de canal :199 Quittez Claude Code et redémarrez avec le flag de canal :

198 200 

199 ```bash theme={null}201 ```bash theme={null}

200 claude --channels plugin:imessage@claude-plugins-official202 claude --channels plugin:imessage@claude-plugins-official


236 238 

237<Steps>239<Steps>

238 <Step title="Installer le plugin de canal fakechat">240 <Step title="Installer le plugin de canal fakechat">

239 Démarrez une session Claude Code et exécutez la commande d'installation :241 Démarrez Claude Code en exécutant `claude` dans votre terminal, puis saisissez la commande d'installation à son invite :

240 242 

241 ```text theme={null}243 ```text theme={null}

242 /plugin install fakechat@claude-plugins-official244 /plugin install fakechat@claude-plugins-official

Details

4 4 

5# Déployer la passerelle Claude apps sur Google Cloud5# Déployer la passerelle Claude apps sur Google Cloud

6 6 

7> Un exemple concret d'exécution de la passerelle Claude apps sur Google Cloud : Cloud Run ou GKE, Cloud SQL pour PostgreSQL, Secret Manager et authentification par compte de service vers Agent Platform.7> Un exemple concret d'exécution de la passerelle Claude apps sur Google Cloud : Cloud Run ou GKE, Cloud SQL pour PostgreSQL, Secret Manager et authentification par compte de service vers Agent Platform de Google Cloud.

8 8 

9<Note>9<Note>

10 Cette page vous guide à travers une façon d'exécuter la passerelle Claude apps sur Google Cloud. 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).10 Cette page vous guide à travers une façon d'exécuter la passerelle Claude apps sur Google Cloud. 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).


17</h2>17</h2>

18 18 

19<Frame>19<Frame>

20 <img src="https://mintcdn.com/claude-code/-uq-4JE0W_JO5Er5/images/claude-gateway-gcp-architecture.svg?fit=max&auto=format&n=-uq-4JE0W_JO5Er5&q=85&s=cb705151c69128ac0da235852d5600ab" alt="Diagramme de la passerelle Claude apps sur Google Cloud : les clients Claude Code se connectent via HTTPS à la passerelle (Cloud Run ou GKE), qui s'exécute à l'intérieur d'un VPC aux côtés d'une base de données Cloud SQL avec IP privée pour l'état de session. La passerelle connecte les utilisateurs via OIDC contre Google Workspace, lit la configuration et les secrets de Secret Manager, transfère les demandes de modèle à Agent Platform et récupère son image d'Artifact Registry au déploiement." width="760" height="400" data-path="images/claude-gateway-gcp-architecture.svg" />20 <img src="https://mintcdn.com/claude-code/-uq-4JE0W_JO5Er5/images/claude-gateway-gcp-architecture.svg?fit=max&auto=format&n=-uq-4JE0W_JO5Er5&q=85&s=cb705151c69128ac0da235852d5600ab" alt="Diagramme de la passerelle Claude apps sur Google Cloud : les clients Claude Code se connectent via HTTPS à la passerelle (Cloud Run ou GKE), qui s'exécute à l'intérieur d'un VPC aux côtés d'une base de données Cloud SQL avec IP privée pour l'état de session. La passerelle connecte les utilisateurs via OIDC contre Google Workspace, lit la configuration et les secrets de Secret Manager, transfère les requêtes de modèle à l'Agent Platform de Google Cloud et récupère son image d'Artifact Registry au déploiement." width="760" height="400" data-path="images/claude-gateway-gcp-architecture.svg" />

21</Frame>21</Frame>

22 22 

23La configuration de référence provisionne :23Le déploiement comprend :

24 24 

25* Un service **Cloud Run** ou un **déploiement GKE** exécutant le conteneur de la passerelle25* Un service **Cloud Run** ou un **déploiement GKE** exécutant le conteneur de la passerelle

26* Un référentiel **Artifact Registry** pour l'image de la passerelle26* Un dépôt **Artifact Registry** pour l'image de la passerelle

27* Une instance **Cloud SQL pour PostgreSQL**, IP privée uniquement, pour le [store](/docs/fr/claude-apps-gateway-config#store) de la passerelle27* Une instance **Cloud SQL pour PostgreSQL**, IP privée uniquement, pour le [store](/docs/fr/claude-apps-gateway-config#store) de la passerelle

28* Des secrets **Secret Manager** pour `gateway.yaml`, la clé de signature JWT, le secret client OIDC et l'URL Postgres28* Des secrets **Secret Manager** pour `gateway.yaml`, la clé de signature JWT, le secret client OIDC et l'URL Postgres

29* Un **compte de service** avec `roles/aiplatform.user`, attaché directement sur Cloud Run ou lié via Workload Identity sur GKE29* Un **compte de service** avec `roles/aiplatform.user`, attaché directement sur Cloud Run ou lié via Workload Identity sur GKE

30* Un **équilibreur de charge d'application interne** sur Cloud Run, ou un **GKE Ingress** interne de classe `gce-internal` sur GKE, pour HTTPS30* Un **front end HTTPS** que vous fournissez : un équilibreur de charge d'application interne devant Cloud Run, pour lequel ce guide configure la passerelle sans le créer, ou un **GKE Ingress** interne de classe `gce-internal` sur GKE

31 31 

32<h2 id="prerequisites">32<h2 id="prerequisites">

33 Prérequis33 Prérequis


80 </Step>80 </Step>

81 81 

82 <Step title="Créer le compte de service et accorder l'IAM">82 <Step title="Créer le compte de service et accorder l'IAM">

83 La passerelle s'exécute en tant que compte de service dédié avec permission d'appeler Agent Platform. Elle atteint Cloud SQL sur le VPC avec un utilisateur de mot de passe, donc aucun rôle IAM Cloud SQL n'est requis :83 La passerelle s'exécute en tant que compte de service dédié avec permission d'appeler l'Agent Platform de Google Cloud. Elle atteint Cloud SQL sur le VPC avec un utilisateur de mot de passe, donc aucun rôle IAM Cloud SQL n'est requis :

84 84 

85 ```bash theme={null}85 ```bash theme={null}

86 gcloud iam service-accounts create claude-gateway --display-name="Claude apps gateway"86 gcloud iam service-accounts create claude-gateway --display-name="Claude apps gateway"


141 </Step>141 </Step>

142 142 

143 <Step title="Écrire gateway.yaml">143 <Step title="Écrire gateway.yaml">

144 Le bloc `upstreams` pointe vers Agent Platform avec `auth: {}`, donc la passerelle s'authentifie via Application Default Credentials du compte de service du runtime. Consultez la [référence de configuration](/docs/fr/claude-apps-gateway-config) pour chaque champ.144 Le bloc `upstreams` pointe vers l'Agent Platform de Google Cloud avec `auth: {}`, donc la passerelle s'authentifie via Application Default Credentials du compte de service du runtime. Consultez la [référence de configuration](/docs/fr/claude-apps-gateway-config) pour chaque champ.

145 145 

146 Deux champs `listen` dépendent de ce qui se trouve devant la passerelle :146 Deux champs `listen` décrivent ce qui se trouve devant la passerelle :

147 147 

148 * `public_url` : requis derrière Cloud Run ou un GKE Ingress. La passerelle construit le `redirect_uri` IdP et son document de découverte uniquement à partir de cette valeur, jamais à partir des en-têtes `X-Forwarded-*`.148 * `public_url` : l'origine `https://` externe, requise pour toute liaison autre que loopback ; consultez la [référence `listen`](/docs/fr/claude-apps-gateway-config#listen). La passerelle construit le `redirect_uri` IdP et son document de découverte uniquement à partir de cette valeur, jamais à partir des en-têtes `X-Forwarded-*`.

149 * `trusted_proxies` : les plages source du front-end. La passerelle honore `X-Forwarded-For` uniquement lorsque le pair TCP se trouve 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 IP des développeurs au lieu de celle de l'équilibreur de charge.149 * `trusted_proxies` : les plages source du front-end. La passerelle honore `X-Forwarded-For` uniquement lorsque le pair TCP se trouve dans cette liste, puis parcourt la chaîne au-delà des sauts de confiance, donc les limites de débit de connexion par IP et les événements d'audit enregistrent les IP des développeurs au lieu de celle de l'équilibreur de charge.

150 150 

151 Définissez `trusted_proxies` pour correspondre à votre front-end. Un GKE Ingress externe de classe `gce` n'est pas listé : il provisionne une adresse de règle de transfert publique, que la vérification [réseau privé](/docs/fr/claude-apps-gateway#prerequisites) de `/login` rejette.151 Définissez `trusted_proxies` pour correspondre à votre front-end. Un GKE Ingress externe de classe `gce` n'est pas listé : il provisionne une adresse de règle de transfert publique, que la vérification [réseau privé](/docs/fr/claude-apps-gateway#prerequisites) de `/login` rejette.

152 152 


179 179 

180 store:180 store:

181 postgres_url: ${GATEWAY_POSTGRES_URL} # GKE: ${file:/secrets/postgres-url}181 postgres_url: ${GATEWAY_POSTGRES_URL} # GKE: ${file:/secrets/postgres-url}

182 # readiness_grace_seconds: 300 # keep passing the readiness probe

183 # through a Cloud SQL failover

182 184 

183 upstreams:185 upstreams:

184 - provider: vertex186 - provider: vertex


219 --region="$REGION" \221 --region="$REGION" \

220 --service-account="claude-gateway@${PROJECT_ID}.iam.gserviceaccount.com" \222 --service-account="claude-gateway@${PROJECT_ID}.iam.gserviceaccount.com" \

221 --min-instances=1 \223 --min-instances=1 \

224 --max-instances=8 \

222 --timeout=3600 \225 --timeout=3600 \

223 --ingress=internal-and-cloud-load-balancing \226 --ingress=internal \

224 --network="$VPC" --subnet=cc-gateway-subnet --vpc-egress=private-ranges-only \227 --network="$VPC" --subnet=cc-gateway-subnet --vpc-egress=private-ranges-only \

225 --set-secrets=/etc/claude/gateway.yaml=gateway-config:latest,GATEWAY_JWT_SECRET=gateway-jwt-secret:latest,OIDC_CLIENT_SECRET=gateway-oidc-client-secret:latest,GATEWAY_POSTGRES_URL=gateway-postgres-url:latest \228 --set-secrets=/etc/claude/gateway.yaml=gateway-config:latest,GATEWAY_JWT_SECRET=gateway-jwt-secret:latest,OIDC_CLIENT_SECRET=gateway-oidc-client-secret:latest,GATEWAY_POSTGRES_URL=gateway-postgres-url:latest \

226 --no-invoker-iam-check229 --no-invoker-iam-check

227 ```230 ```

228 231 

229 L'accès VPC direct, via `--network`, `--subnet` et `--vpc-egress=private-ranges-only`, permet au service d'atteindre l'IP privée Cloud SQL directement. L'accès public aux points de terminaison Agent Platform et `accounts.google.com` va directement sur Internet plutôt que via le VPC, donc aucun Cloud NAT n'est nécessaire.232 L'accès VPC direct, via `--network`, `--subnet` et `--vpc-egress=private-ranges-only`, permet au service d'atteindre l'IP privée Cloud SQL directement. Chaque instance détient jusqu'à [`store.max_connections`](/docs/fr/claude-apps-gateway-config#store) connexions Postgres, cinq par défaut, donc maintenez le nombre maximal d'instances × `store.max_connections` en dessous de la limite de connexions de votre niveau Cloud SQL ; les [actifs de référence](#terraform-reference) plafonnent les instances à 8 pour le niveau `db-g1-small` pour cette raison. L'accès public aux endpoints de l'Agent Platform de Google Cloud et à `accounts.google.com` va directement sur Internet plutôt que via le VPC, donc aucun Cloud NAT n'est nécessaire.

230 233 

231 La vérification IAM de l'invocateur doit être ouverte ou désactivée. La passerelle exécute son propre OIDC et ses clients ne portent aucun jeton GCP, donc la vérification de l'invocateur de Cloud Run doit admettre les demandes non authentifiées. L'authentification OIDC de la passerelle authentifie la demande une fois qu'elle atteint le conteneur, avec `allowed_email_domains` contrôlant les domaines autorisés à se connecter.234 La vérification IAM de l'invocateur doit être ouverte ou désactivée. La passerelle exécute son propre OIDC et ses clients ne portent aucun jeton GCP, donc la vérification de l'invocateur de Cloud Run doit admettre les requêtes non authentifiées. L'authentification OIDC de la passerelle authentifie la requête une fois qu'elle atteint le conteneur, avec `allowed_email_domains` contrôlant les domaines autorisés à se connecter.

232 235 

233 Deux drapeaux admettent les demandes non authentifiées :236 Deux flags admettent les requêtes non authentifiées :

234 237 

235 * `--no-invoker-iam-check` : désactive la vérification sans liaison `allUsers` à gérer, et fonctionne sous Domain Restricted Sharing238 * `--no-invoker-iam-check` : désactive la vérification sans liaison `allUsers` à gérer, et fonctionne sous Domain Restricted Sharing

236 * `--allow-unauthenticated` : accorde à `allUsers` le rôle `run.invoker` ; utilisez-le si votre organisation n'autorise pas `--no-invoker-iam-check`239 * `--allow-unauthenticated` : accorde à `allUsers` le rôle `run.invoker` ; utilisez-le si votre organisation n'autorise pas `--no-invoker-iam-check`


239 242 

240 Par défaut, l'URL Cloud Run `*.run.app` se résout en une adresse publique, que la vérification [réseau privé](/docs/fr/claude-apps-gateway#prerequisites) de `/login` rejette. Deux topologies donnent aux développeurs un nom d'hôte résoluble en privé, et Cloud Run ne provisionne ni l'une ni l'autre pour vous :243 Par défaut, l'URL Cloud Run `*.run.app` se résout en une adresse publique, que la vérification [réseau privé](/docs/fr/claude-apps-gateway#prerequisites) de `/login` rejette. Deux topologies donnent aux développeurs un nom d'hôte résoluble en privé, et Cloud Run ne provisionne ni l'une ni l'autre pour vous :

241 244 

242 * **Équilibreur de charge d'application interne**, la topologie que la commande de déploiement ci-dessus suppose : déployez avec `--ingress=internal-and-cloud-load-balancing`, provisionnez un équilibreur de charge d'application interne devant le service avec un nom DNS interne et un certificat, et définissez `listen.public_url` sur ce nom d'hôte.245 * **Équilibreur de charge d'application interne**, la topologie que le `gateway.yaml` de cette page suppose : provisionnez un équilibreur de charge d'application interne devant le service avec un nom DNS interne et un certificat, et définissez `listen.public_url` sur ce nom d'hôte. Le paramètre d'accès `internal` admet déjà le trafic provenant des équilibreurs de charge d'application internes ; `internal-and-cloud-load-balancing` admet en plus les équilibreurs de charge d'application externes, dont la vérification réseau privé de `/login` rejette les adresses publiques, donc aucune topologie de cette page n'en a besoin.

243 * **Accès interne uniquement sans équilibreur de charge** : déployez avec `--ingress=internal` et laissez `listen.public_url` comme l'URL `*.run.app`, la valeur par défaut dans les [actifs de référence](#terraform-reference) ci-dessous. Pour que `*.run.app` se résolve en privé, votre équipe réseau doit déjà exploiter un point de terminaison Private Service Connect pour les API Google, une zone privée Cloud DNS résolvant `*.run.app` vers celui-ci, et un routage sur site vers ce point de terminaison.246 * **Accès interne uniquement sans équilibreur de charge** : conservez la commande de déploiement telle quelle et laissez `listen.public_url` comme l'URL `*.run.app`, la valeur par défaut dans les [actifs de référence](#terraform-reference) ci-dessous. Pour que `*.run.app` se résolve en privé, votre équipe réseau doit déjà exploiter un endpoint Private Service Connect pour les API Google, une zone privée Cloud DNS résolvant `*.run.app` vers celui-ci, et un routage sur site vers cet endpoint.

244 247 

245 Le [guide de mise en réseau privée de Google pour Cloud Run](https://cloud.google.com/run/docs/securing/private-networking) couvre l'infrastructure que les deux options nécessitent. Vérifiez la connexion une fois que la passerelle est servie sur un nom d'hôte privé ; jusqu'à ce moment, confirmez que le conteneur a démarré à partir de ses journaux dans Cloud Run.248 Le [guide de mise en réseau privée de Google pour Cloud Run](https://cloud.google.com/run/docs/securing/private-networking) couvre l'infrastructure que les deux options nécessitent. Vérifiez la connexion une fois que la passerelle est servie sur un nom d'hôte privé ; jusqu'à ce moment, confirmez que le conteneur a démarré à partir de ses journaux dans Cloud Run.

246 249 


278 * le pilote CSI Secret Manager montant les secrets à `/secrets`281 * le pilote CSI Secret Manager montant les secrets à `/secrets`

279 * la sonde de disponibilité pointée vers `GET /readyz`282 * la sonde de disponibilité pointée vers `GET /readyz`

280 283 

281 Attachez un BackendConfig avec un `timeoutSec` augmenté au Service de la passerelle : le service backend de l'équilibreur de charge derrière GKE Ingress par défaut à un délai d'expiration de 30 secondes, ce qui coupe les réponses de streaming longues.284 Attachez un BackendConfig avec un `timeoutSec` augmenté au Service de la passerelle : le service backend de l'équilibreur de charge derrière GKE Ingress utilise par défaut un délai d'expiration de 30 secondes, ce qui coupe les réponses de streaming longues.

282 285 

283 N'appliquez pas une NetworkPolicy d'accès sortant qui bloque `169.254.169.254` sur un cluster Workload Identity ; le pod doit atteindre le serveur de métadonnées pour les identifiants. La [garde SSRF](/docs/fr/claude-apps-gateway-deploy#threat-model-summary) intégrée de la passerelle est la défense là.286 N'appliquez pas une NetworkPolicy d'accès sortant qui bloque `169.254.169.254` sur un cluster Workload Identity ; le pod doit atteindre le serveur de métadonnées pour les identifiants. La [garde SSRF](/docs/fr/claude-apps-gateway-deploy#threat-model-summary) intégrée de la passerelle est la défense là.

284 287 

285 La passerelle enregistre un avertissement de démarrage que le point de terminaison des métadonnées est accessible et suggère d'appliquer une NetworkPolicy d'accès sortant. Sous Workload Identity, cet avertissement est attendu, car le pod a besoin du point de terminaison.288 La passerelle journalise un avertissement de démarrage indiquant que l'endpoint des métadonnées est accessible et suggère d'appliquer une NetworkPolicy d'accès sortant. Sous Workload Identity, cet avertissement est attendu, car le pod a besoin de l'endpoint.

286 </Tab>289 </Tab>

287 </Tabs>290 </Tabs>

288 </Step>291 </Step>

289 292 

290 <Step title="Pousser l'URL de la passerelle vers les machines des développeurs">293 <Step title="Pousser l'URL de la passerelle vers les machines des développeurs">

291 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.294 La passerelle s'exécute maintenant, mais les développeurs ne peuvent pas l'atteindre à partir de `/login` jusqu'à ce que l'URL de la passerelle soit sur leurs machines. Déployez l'[extrait de paramètres gérés](/docs/fr/claude-apps-gateway#set-the-gateway-url) complet, avec `forceLoginMethod`, `forceLoginGatewayUrl` et l'activation `parentSettingsBehavior: "merge"`, 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.

292 </Step>295 </Step>

293</Steps>296</Steps>

294 297 


302* `terraform/` : le même déploiement en tant qu'infrastructure en tant que code, pour un déploiement sur terrain vierge : une application ciblée pour créer le référentiel Artifact Registry, puis construire et pousser l'image, puis une application complète305* `terraform/` : le même déploiement en tant qu'infrastructure en tant que code, pour un déploiement sur terrain vierge : une application ciblée pour créer le référentiel Artifact Registry, puis construire et pousser l'image, puis une application complète

303* `gateway.yaml.example` et un `Dockerfile` pour l'image de runtime distroless306* `gateway.yaml.example` et un `Dockerfile` pour l'image de runtime distroless

304 307 

305Les artefacts par défaut Cloud Run ingress à `internal`, donc aucun équilibreur de charge n'est requis. Pour correspondre au déploiement de production derrière un ALB de cette page, exécutez `setup.sh` avec `INGRESS=internal-and-cloud-load-balancing`, ou définissez la variable Terraform `ingress` à `INGRESS_TRAFFIC_INTERNAL_LOAD_BALANCER`. Les artefacts définissent également par défaut la couche d'invocateur à une concession `allUsers` `run.invoker` plutôt qu'à `--no-invoker-iam-check`, l'inverse de la procédure pas à pas de cette page ; l'un ou l'autre fonctionne, et le choix dépend des contraintes de politique de votre organisation.308Les artefacts définissent par défaut l'ingress Cloud Run à `internal`, ce qui correspond à la commande de déploiement de cette page ; ce paramètre fonctionne avec ou sans un Application Load Balancer interne devant le service, et les artefacts ne créent pas non plus l'équilibreur de charge. Les artefacts définissent également par défaut la couche d'invocateur à une concession `allUsers` `run.invoker` plutôt qu'à `--no-invoker-iam-check`, l'inverse de la procédure pas à pas de cette page ; l'un ou l'autre fonctionne, et le choix dépend des contraintes de politique de votre organisation.

306 309 

307Les actifs sont fournis en tant qu'exemples fonctionnels, non en tant qu'artefact de production pris en charge ; examinez-les et adaptez-les à votre environnement.310Les actifs sont fournis en tant qu'exemples fonctionnels, non en tant qu'artefact de production pris en charge ; examinez-les et adaptez-les à votre environnement.

308 311 


317| Cloud Run retourne `403 Forbidden` avant d'atteindre le conteneur | La vérification IAM de l'invocateur est toujours activée | Déployez avec `--no-invoker-iam-check`, ou accordez à `allUsers` le rôle `run.invoker` avec `--allow-unauthenticated` |320| Cloud Run retourne `403 Forbidden` avant d'atteindre le conteneur | La vérification IAM de l'invocateur est toujours activée | Déployez avec `--no-invoker-iam-check`, ou accordez à `allUsers` le rôle `run.invoker` avec `--allow-unauthenticated` |

318| `--no-invoker-iam-check` rejeté avec `invoker_iam_disabled is not currently available` | Bloqué par `constraints/run.managed.requireInvokerIam` | Utilisez `--allow-unauthenticated`. Si Domain Restricted Sharing via `constraints/iam.allowedPolicyMemberDomains` bloque également cela, utilisez la piste GKE, qui expose la passerelle au niveau du réseau sans liaison `allUsers`. |321| `--no-invoker-iam-check` rejeté avec `invoker_iam_disabled is not currently available` | Bloqué par `constraints/run.managed.requireInvokerIam` | Utilisez `--allow-unauthenticated`. Si Domain Restricted Sharing via `constraints/iam.allowedPolicyMemberDomains` bloque également cela, utilisez la piste GKE, qui expose la passerelle au niveau du réseau sans liaison `allUsers`. |

319| `Container manifest type … must support amd64/linux` au déploiement | L'image a été construite sur un hôte non-amd64, ou buildx a émis un index d'image OCI | Construisez avec `--platform=linux/amd64 --provenance=false` |322| `Container manifest type … must support amd64/linux` au déploiement | L'image a été construite sur un hôte non-amd64, ou buildx a émis un index d'image OCI | Construisez avec `--platform=linux/amd64 --provenance=false` |

320| Le démarrage de la passerelle se termine avec une erreur de délai d'expiration de connexion Postgres sur Cloud Run | Le service n'est pas attaché au VPC, ou Cloud SQL n'a pas d'IP privée sur ce VPC ; le store arrête d'attendre après 5 secondes | Déployez avec `--network` et `--subnet` pour l'accès VPC direct, et créez l'instance Cloud SQL avec `--no-assign-ip` et `--network` pointant vers le même VPC |323| Le démarrage de la passerelle se termine avec une erreur de délai d'expiration de connexion Postgres sur Cloud Run | Le service n'est pas attaché au VPC, ou Cloud SQL n'a pas d'IP privée sur ce VPC | Déployez avec `--network` et `--subnet` pour l'accès VPC direct, et créez l'instance Cloud SQL avec `--no-assign-ip` et `--network` pointant vers le même VPC |

321| Les demandes Agent Platform retournent `403 PERMISSION_DENIED` | Le runtime n'utilise pas le compte de service `claude-gateway`, ou le modèle n'est pas activé dans Model Garden pour le projet | Définissez `--service-account` sur Cloud Run ou liez Workload Identity sur GKE, et activez chaque modèle Claude dans Model Garden pour la région cible |324| Les requêtes vers Agent Platform de Google Cloud retournent `403 PERMISSION_DENIED` | Le runtime n'utilise pas le compte de service `claude-gateway`, ou le modèle n'est pas activé dans Model Garden pour le projet | Définissez `--service-account` sur Cloud Run ou liez Workload Identity sur GKE, et activez chaque modèle Claude dans Model Garden pour la région cible |

322| Les réponses de streaming se coupent après une durée fixe | Délai d'expiration de la demande du front-end : le service backend de l'équilibreur de charge derrière GKE Ingress par défaut à 30 secondes et Cloud Run à 300 secondes | Attachez un BackendConfig avec un `timeoutSec` augmenté sur GKE, ou déployez avec `--timeout=3600` sur Cloud Run |325| Les réponses de streaming se coupent après une durée fixe | Délai d'expiration de la demande du front-end : le service backend de l'équilibreur de charge derrière GKE Ingress par défaut à 30 secondes et Cloud Run à 300 secondes | Attachez un BackendConfig avec un `timeoutSec` augmenté sur GKE, ou déployez avec `--timeout=3600` sur Cloud Run |

323 326 

324<h2 id="next-steps">327<h2 id="next-steps">

Details

135 Envoyer des référentiels locaux sans GitHub135 Envoyer des référentiels locaux sans GitHub

136</h4>136</h4>

137 137 

138Quand 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.138Quand vous exécutez `claude --cloud` depuis un dépôt qui n'a pas de remote git, ou depuis un dépôt github.com sur lequel l'application Claude GitHub n'est pas installée, Claude Code regroupe votre dépôt local et le télécharge directement vers la session cloud. Cela s'applique même si vous avez connecté GitHub avec `/web-setup`.

139 139 

140Sur 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é.140Pour un clone complet, le bundle inclut l'historique de votre dépôt sur toutes les branches, plus les modifications non commitées des fichiers suivis.

141 

142Ce qu'il advient des modifications non commitées dans les fichiers sensibles dépend de votre plateforme :

143 

144* **macOS, Linux et WSL** : Claude Code exclut de l'upload les modifications non commitées des fichiers nommés comme des identifiants ou des clés. Cela inclut les fichiers `.env`, les fichiers Terraform `*.tfvars` et les fichiers clés tels que `id_rsa` et `*.pem`. Il exclut également les modifications non commitées des fichiers gérés par un filtre git tel que Git LFS. Un avis `Left on this machine:` nomme les fichiers exclus, et la session démarre avec la version commitée de chacun, ou sans le fichier si aucune version n'est commitée.

145* **Windows natif** : les modifications non commitées des fichiers suivis sont uploadées telles quelles, quel que soit le nom du fichier. Remisez (stash) ou annulez toute modification que vous ne voulez pas dans la session cloud avant de la démarrer.

141 146 

142Pour télécharger un bundle même quand Claude Code clonerait autrement depuis le remote, définissez `CCR_FORCE_BUNDLE=1` :147Pour télécharger un bundle même quand Claude Code clonerait autrement depuis le remote, définissez `CCR_FORCE_BUNDLE=1` :

143 148 


153* Sur macOS, Linux et WSL, Claude Code refuse l'upload quand il ne peut pas suivre un paramètre git qui affecte les règles d'attributs qui s'appliquent à vos fichiers, comme `core.attributesFile` défini dans un fichier config inclus. Le [message de refus](/docs/fr/errors#the-repository-upload-cant-follow-a-git-setting) nomme le paramètre et la correction158* Sur macOS, Linux et WSL, Claude Code refuse l'upload quand il ne peut pas suivre un paramètre git qui affecte les règles d'attributs qui s'appliquent à vos fichiers, comme `core.attributesFile` défini dans un fichier config inclus. Le [message de refus](/docs/fr/errors#the-repository-upload-cant-follow-a-git-setting) nomme le paramètre et la correction

154* 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érentiel159* 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

155 160 

161Sur macOS, Linux et WSL, l'upload nécessite également git 2.31 ou ultérieur et une organisation de checkout prise en charge, tandis que sur Windows natif, Claude Code effectue l'upload sans aucune de ces vérifications. Quand un checkout ne satisfait pas ces exigences, Claude Code ne démarre pas la session. Il affiche une erreur contenant `Not uploading this working tree:`, nomme la cause et indique ce qu'il faut changer. Voici les causes courantes :

162 

163* **Version de git trop ancienne** : le git installé est antérieur à 2.31. Mettez à jour git, puis réessayez.

164* **Une organisation de checkout que l'upload ne prend pas en charge** : vous avez démarré à l'intérieur d'un sous-module, dans un clone créé avec `git clone --separate-git-dir`, `--shared` ou `--reference`, dans un checkout où `core.worktree` est défini, ou dans un dépôt qui stocke ses refs au format reftable. Démarrez plutôt depuis le checkout principal d'un clone créé avec un simple `git clone`.

165* **Un worktree lié avec un sparse checkout** : `git sparse-checkout` écrit des paramètres dans le propre fichier `config.worktree` du worktree, que l'upload n'accepte pas ; un worktree qui possède ces paramètres n'est donc pas uploadé, pas plus qu'un worktree créé par Claude Code avec [`worktree.sparsePaths`](/docs/fr/settings-reference#worktree-sparsepaths). Démarrez plutôt depuis le checkout principal du dépôt.

166* **Configuration git conservée dans la copie de travail** : votre configuration git inclut un fichier situé à l'intérieur du checkout, par exemple une entrée `include.path` qui pointe vers le dépôt. Déplacez ce fichier en dehors de la copie de travail ou supprimez l'inclusion, puis réessayez.

167 

168Sur macOS, Linux et WSL, un clone partiel créé avec `git clone --filter` est uploadé sous forme de snapshot de sa copie de travail sans historique, à condition que le clone contienne localement tous les fichiers suivis.

169 

170Pour `claude --cloud`, si le dépôt est sur GitHub, vous pouvez éviter l'upload et ses exigences : poussez votre branche, installez l'application Claude GitHub sur le dépôt, puis démarrez à nouveau la session afin qu'elle clone depuis GitHub.

171 

156<h3 id="send-follow-ups-from-the-cli">172<h3 id="send-follow-ups-from-the-cli">

157 Envoyer des messages de suivi depuis le CLI173 Envoyer des messages de suivi depuis le CLI

158</h3>174</h3>


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

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

229 245 

246Quand Teleport récupère la branche de la session, le fetch n'attend jamais de saisie dans votre terminal. Si git ou ssh demandait un mot de passe, une phrase secrète de clé ou la confirmation d'un nouvel hôte SSH, le fetch échoue, et le checkout ne fonctionne alors que si votre clone local possède déjà la branche. Pour les deux cas SSH, chargez votre clé dans `ssh-agent` et exécutez d'abord `git fetch` une fois manuellement pour enregistrer l'hôte.

247 

230<h4 id="teleport-is-unavailable">248<h4 id="teleport-is-unavailable">

231 `--teleport` n'est pas disponible249 `--teleport` n'est pas disponible

232</h4>250</h4>

Details

40 Installez le plugin40 Installez le plugin

41</h2>41</h2>

42 42 

43Dans une session Claude Code, installez à partir de la [place de marché officielle Anthropic](/docs/fr/plugins/anthropic-marketplaces) :43Dans l'extension VS Code ou l'application de bureau, installez-le en suivant [Installer un plugin](/docs/fr/plugins/install#install-a-plugin). Dans un terminal, démarrez Claude Code en exécutant `claude`, puis saisissez ceci à son invite pour installer à partir de la [marketplace officielle Anthropic](/docs/fr/plugins/anthropic-marketplaces) :

44 44 

45```text theme={null}45```text theme={null}

46/plugin install claude-security@claude-plugins-official46/plugin install claude-security@claude-plugins-official

cli-reference.md +20 −12

Details

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 un prompt initial | `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"` |

20| `cat file \| claude -p "query"` | Traiter le contenu canalisé | `cat logs.txt \| claude -p "explain"` |20| `cat file \| claude -p "query"` | Traiter le contenu canalisé | `cat logs.txt \| claude -p "explain"` |

21| `claude -c` | Continuer la conversation la plus récente dans le répertoire courant | `claude -c` |21| `claude -c` | Continuer la conversation la plus récente dans le répertoire courant | `claude -c` |


26| `claude install [version]` | Installer ou réinstaller le binaire natif. Accepte une version comme `2.1.118`, ou `stable` ou `latest`. Voir [Installer une version spécifique](/docs/fr/setup#install-a-specific-version) | `claude install stable` |26| `claude install [version]` | Installer ou réinstaller le binaire natif. Accepte une version comme `2.1.118`, ou `stable` ou `latest`. Voir [Installer une version spécifique](/docs/fr/setup#install-a-specific-version) | `claude install stable` |

27| `claude auth login` | Se connecter à votre compte Anthropic. Utilisez `--email` pour pré-remplir votre adresse e-mail, `--sso` pour forcer l'authentification SSO, et `--console` pour vous connecter avec Anthropic Console pour la facturation de l'utilisation de l'API au lieu d'un abonnement Claude | `claude auth login --console` |27| `claude auth login` | Se connecter à votre compte Anthropic. Utilisez `--email` pour pré-remplir votre adresse e-mail, `--sso` pour forcer l'authentification SSO, et `--console` pour vous connecter avec Anthropic Console pour la facturation de l'utilisation de l'API au lieu d'un abonnement Claude | `claude auth login --console` |

28| `claude auth logout` | Se déconnecter de votre compte Anthropic | `claude auth logout` |28| `claude auth logout` | Se déconnecter de votre compte Anthropic | `claude auth logout` |

29| `claude auth status` | Afficher l'état d'authentification en JSON. Utilisez `--text` pour une sortie lisible par l'homme. Quitte avec le code 0 si connecté, 1 sinon. Le JSON inclut un champ `configDirectory` nommant le [répertoire de configuration](/docs/fr/claude-directory) que l'interface de ligne de commande utilise. Le champ nécessite Claude Code v2.1.268 ou ultérieur | `claude auth status` |29| `claude auth status` | Afficher l'état d'authentification en JSON. Utilisez `--text` pour une sortie lisible par l'homme. Quitte avec le code 0 si connecté, 1 sinon. Le JSON inclut un champ `configDirectory` nommant le [répertoire de configuration](/docs/fr/claude-directory) que l'interface de ligne de commande utilise. Le champ nécessite Claude Code v2.1.268 ou ultérieur. Le champ `authMethod` du JSON prend l'une des valeurs `none`, `claude.ai`, `oauth_token`, `api_key`, `api_key_helper` ou `third_party` | `claude auth status` |

30| `claude agents` | Ouvrir la [vue agent](/docs/fr/agent-view) pour surveiller et dispatcher les sessions d'arrière-plan parallèles. Utilisez `--cwd <path>` pour afficher uniquement les sessions démarrées sous ce répertoire, ou `--json` pour imprimer les sessions actives en tant que tableau JSON pour les scripts (`--json --all` inclut également les sessions d'arrière-plan terminées). Passez `--permission-mode`, `--model`, `--effort`, ou `--agent` pour définir les [valeurs par défaut pour les sessions dispatched](/docs/fr/agent-view#permission-mode-model-and-effort). Accepte `--settings`, `--add-dir`, `--plugin-dir`, et `--mcp-config` comme la commande `claude` de niveau supérieur. L'ouverture de la vue agent nécessite un terminal interactif | `claude agents --json` |30| `claude agents` | Ouvrir la [vue agent](/docs/fr/agent-view) pour surveiller et dispatcher les sessions d'arrière-plan parallèles. Utilisez `--cwd <path>` pour afficher uniquement les sessions démarrées sous ce répertoire, ou `--json` pour imprimer les sessions actives en tant que tableau JSON pour les scripts (`--json --all` inclut également les sessions d'arrière-plan terminées). Passez `--permission-mode`, `--model`, `--effort`, ou `--agent` pour définir les [valeurs par défaut pour les sessions dispatched](/docs/fr/agent-view#permission-mode-model-and-effort). Accepte `--settings`, `--add-dir`, `--plugin-dir`, et `--mcp-config` comme la commande `claude` de niveau supérieur. L'ouverture de la vue agent nécessite un terminal interactif | `claude agents --json` |

31| `claude attach <id>` | Attacher à une [session d'arrière-plan](/docs/fr/agent-view#manage-sessions-from-the-shell) dans ce terminal | `claude attach 7c5dcf5d` |31| `claude attach <id>` | Attacher à une [session d'arrière-plan](/docs/fr/agent-view#manage-sessions-from-the-shell) dans ce terminal | `claude attach 7c5dcf5d` |

32| `claude auto-mode defaults` | Imprimer les règles du classificateur [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) intégrées en JSON. Utilisez `claude auto-mode config` pour voir votre configuration effective avec les paramètres appliqués. `--label <prefix>` imprime uniquement les règles dont l'étiquette commence par ce préfixe, correspondance insensible à la casse. Nécessite Claude Code v2.1.208 ou ultérieur | `claude auto-mode defaults --label 'Git Destructive'` |32| `claude auto-mode defaults` | Imprimer les règles du classificateur [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) intégrées en JSON. Utilisez `claude auto-mode config` pour voir votre configuration effective avec les paramètres appliqués. `--label <prefix>` imprime uniquement les règles dont l'étiquette commence par ce préfixe, correspondance insensible à la casse. Nécessite Claude Code v2.1.208 ou ultérieur | `claude auto-mode defaults --label 'Git Destructive'` |

33| `claude auto-mode reset` | Restaurer la configuration [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) par défaut en supprimant la section `autoMode` de votre fichier de paramètres utilisateur. Demande une confirmation avant d'écrire ; passez `-y`/`--yes` pour ignorer l'invite. Les règles des [paramètres gérés](/docs/fr/server-managed-settings) ou du drapeau `--settings` s'appliquent toujours. Nécessite Claude Code v2.1.212 ou ultérieur. Voir [Inspecter les valeurs par défaut et votre configuration effective](/docs/fr/auto-mode-config#inspect-the-defaults-and-your-effective-config) | `claude auto-mode reset --yes` |33| `claude auto-mode reset` | Restaurer la configuration [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) par défaut en supprimant la section `autoMode` de votre fichier de paramètres utilisateur. Demande une confirmation avant d'écrire ; passez `-y`/`--yes` pour ignorer la demande. Les règles des [paramètres gérés](/docs/fr/server-managed-settings) ou du flag `--settings` s'appliquent toujours. Nécessite Claude Code v2.1.212 ou ultérieur. Voir [Inspecter les valeurs par défaut et votre configuration effective](/docs/fr/auto-mode-config#inspect-the-defaults-and-your-effective-config) | `claude auto-mode reset --yes` |

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é à Remote Control. 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 [source]` | Démarrer une session interactive qui exécute [`/import`](/docs/fr/commands#all-commands) pour apporter la configuration d'autres agents de codage dans Claude Code. Accepte les mêmes options `--dry-run` et `--yes` que la commande. Non disponible sur Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, ou Claude Platform sur AWS. Également indisponible quand vous désactivez [la récupération des drapeaux de fonctionnalité](/docs/fr/env-vars#features-that-need-feature-flag-fetching). Nécessite Claude Code v2.1.213 ou ultérieur | `claude import codex --dry-run` |37| `claude import [source]` | Démarrer une session interactive qui exécute [`/import`](/docs/fr/commands#all-commands) pour apporter la configuration d'autres agents de codage dans Claude Code. Accepte les mêmes options `--dry-run` et `--yes` que la commande. Non disponible sur Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, ou Claude Platform sur AWS. Également indisponible quand vous désactivez [la récupération des feature flags](/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. 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 les connecteurs claude.ai. Ajoutez `--no-browser` sur SSH pour imprimer l'URL d'autorisation au lieu d'ouvrir un navigateur, puis collez l'URL de redirection à l'invite. Voir [S'authentifier à partir de la ligne de commande](/docs/fr/mcp#authenticate-from-the-command-line) | `claude mcp login sentry` |

41| `claude mcp logout <name>` | Effacer les identifiants OAuth stockés pour un serveur MCP | `claude mcp logout sentry` |41| `claude mcp logout <name>` | Effacer les identifiants OAuth stockés pour un serveur MCP | `claude mcp logout sentry` |

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

43| `claude project purge [path]` | Supprimer tout l'état local de Claude Code pour un projet : transcriptions, listes de tâches, journaux de débogage, historique des modifications de fichiers, lignes d'historique des invites, et l'entrée du projet dans `~/.claude.json`. Omettez `[path]` pour choisir dans une liste interactive. Drapeaux : `--dry-run` pour prévisualiser, `-y`/`--yes` pour ignorer la confirmation, `-i`/`--interactive` pour confirmer chaque élément, `--all` pour chaque projet. Voir [Effacer les données locales](/docs/fr/claude-directory#clear-local-data) | `claude project purge ~/work/repo --dry-run` |43| `claude project purge [path]` | Supprimer tout l'état local de Claude Code pour un projet : transcriptions, listes de tâches, journaux de débogage, historique des modifications de fichiers, lignes d'historique des prompts, et l'entrée du projet dans `~/.claude.json`. Omettez `[path]` pour choisir dans une liste interactive. Flags : `--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 [Flags 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. 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` |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 qu'une deuxième `claude rm` peut la résoudre, le refus imprime le flag 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 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` |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 le payload brut et `--timeout <minutes>` pour remplacer la valeur par défaut de 45 minutes. Utilisez `--post` sur une cible de pull request `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 pull request](/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 

54À partir de v2.1.199, `claude --dangerously-skip-permissions daemon <subcommand>` exécute la sous-commande `daemon`. Les versions antérieures traitaient `daemon <subcommand>` comme l'invite pour une nouvelle session interactive, donc la sous-commande ne s'exécutait jamais quand le drapeau venait en premier, une configuration courante quand `claude` est aliasé pour inclure le drapeau. Seul un `--dangerously-skip-permissions` ou `--allow-dangerously-skip-permissions` en tête achemine vers `daemon` de cette façon ; tout autre drapeau en tête démarre toujours une session interactive.54À partir de v2.1.199, `claude --dangerously-skip-permissions daemon <subcommand>` exécute la sous-commande `daemon`. Les versions antérieures traitaient `daemon <subcommand>` comme le prompt d'une nouvelle session interactive, donc la sous-commande ne s'exécutait jamais quand le flag venait en premier, une configuration courante quand `claude` est aliasé pour inclure le flag. Seul un `--dangerously-skip-permissions` ou `--allow-dangerously-skip-permissions` en tête achemine vers `daemon` de cette façon ; tout autre flag en tête démarre toujours une session interactive.

55 55 

56<h2 id="cli-flags">56<h2 id="cli-flags">

57 Drapeaux CLI57 Drapeaux CLI


156| `--append-system-prompt-file` | Ajoute le contenu du fichier à l'invite système par défaut | `claude --append-system-prompt-file ./style-rules.txt` |156| `--append-system-prompt-file` | Ajoute le contenu du fichier à l'invite système par défaut | `claude --append-system-prompt-file ./style-rules.txt` |

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

158 158 

159`--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.159Vous pouvez combiner ces flags. Pour remplacer le prompt par défaut tout en ajoutant votre propre texte, passez `--append-system-prompt` ou `--append-system-prompt-file` avec `--system-prompt` ou `--system-prompt-file`. Avec Claude Code v2.1.283 ou ultérieur, vous pouvez également passer un flag avec sa propre forme fichier, comme `--append-system-prompt` avec `--append-system-prompt-file`, et Claude Code utilise les deux.

160 

161Par exemple, exécutez la commande suivante dans votre shell pour ajouter à la fois un guide de style depuis un fichier et une instruction supplémentaire :

162 

163```bash theme={null}

164claude -p --append-system-prompt-file ./style.md --append-system-prompt "Always reply in French" "Summarize README.md"

165```

166 

167Claude reçoit le prompt système par défaut suivi du contenu de `style.md`, d'une ligne vide, puis de `Always reply in French`. Le contenu du fichier vient en premier même si vous passez `--append-system-prompt` avant `--append-system-prompt-file`.

160 168 

161Lorsque le texte de remplacement combine des instructions qui sont les mêmes à chaque exécution avec un contexte qui change par exécution, ajoutez une ligne contenant uniquement `__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__` entre les instructions et le contexte. Claude Code divise l'invite à la première telle ligne et supprime cette ligne, de sorte que la partie au-dessus reste mise en cache tandis que la partie au-dessous change. Nécessite Claude Code v2.1.275 ou ultérieur. [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) répertorie les configurations où la division s'applique.169Lorsque le texte de remplacement combine des instructions qui sont les mêmes à chaque exécution avec un contexte qui change par exécution, ajoutez une ligne contenant uniquement `__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__` entre les instructions et le contexte. Claude Code divise l'invite à la première telle ligne et supprime cette ligne, de sorte que la partie au-dessus reste mise en cache tandis que la partie au-dessous change. Nécessite Claude Code v2.1.275 ou ultérieur. [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) répertorie les configurations où la division s'applique.

162 170 

Details

271 271 

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

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

274* **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.274* **Restrictions de push** : le proxy rejette les suppressions de branches et les push de tout ce qui n'est pas une branche, comme un tag. Il ne limite pas les branches qu'un push peut mettre à jour. Pour cela, utilisez des règles de protection de branche ou des rulesets sur GitHub.

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

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

277 277 

code-review.md +2 −4

Details

397La révision s'exécute en arrière-plan par défaut ; avant v2.1.218, elle s'exécutait dans votre conversation. Elle s'exécute au premier plan à la place dans des cas comme ceux-ci :397La révision s'exécute en arrière-plan par défaut ; avant v2.1.218, elle s'exécutait dans votre conversation. Elle s'exécute au premier plan à la place dans des cas comme ceux-ci :

398 398 

399* Vous exécutez `/code-review` à nouveau alors qu'une révision antérieure est toujours en cours399* Vous exécutez `/code-review` à nouveau alors qu'une révision antérieure est toujours en cours

400* Vous l'exécutez en mode non interactif, avec le drapeau `-p` ou le SDK Agent ; Claude Code attend la révision et inclut les résultats dans la réponse, sauf pour `ultra`, qui [lance la révision en cloud sans attendre](#escalate-to-ultrareview)400* Vous l'exécutez en mode non interactif, avec le flag `-p` ou l'Agent SDK ; Claude Code attend la revue et inclut les résultats dans la réponse, sauf pour `ultra`, qui [n'attend pas la revue cloud](/docs/fr/ultrareview#run-ultrareview-non-interactively)

401* Vous définissez [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](/docs/fr/env-vars) à `1`, ce qui désactive également toute autre fonctionnalité de tâche en arrière-plan401* Vous définissez [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](/docs/fr/env-vars) à `1`, ce qui désactive également toute autre fonctionnalité de tâche en arrière-plan

402 402 

403<h3 id="let-claude-start-the-review">403<h3 id="let-claude-start-the-review">


434 Ultrareview nécessite l'authentification avec un compte claude.ai et n'est pas disponible sur Amazon Bedrock, Google Cloud's Agent Platform, ou Microsoft Foundry, ou pour les organisations avec Zero Data Retention activé. Quand ultrareview n'est pas disponible, `/code-review ultra` exécute une révision locale dans votre session à la place.434 Ultrareview nécessite l'authentification avec un compte claude.ai et n'est pas disponible sur Amazon Bedrock, Google Cloud's Agent Platform, ou Microsoft Foundry, ou pour les organisations avec Zero Data Retention activé. Quand ultrareview n'est pas disponible, `/code-review ultra` exécute une révision locale dans votre session à la place.

435</Note>435</Note>

436 436 

437Pour démarrer une révision en cloud à partir d'un script ou d'une CI, exécutez `claude -p '/code-review ultra'`. Claude Code lance la révision et imprime un lien pour la suivre. Nécessite Claude Code v2.1.218 ou ultérieur.437Pour exécuter une revue cloud depuis un script ou un job de CI, utilisez la [sous-commande `claude ultrareview`](/docs/fr/ultrareview#run-ultrareview-non-interactively), qui attend les résultats et les affiche sur stdout.

438 

439Quand la révision facturerait les [crédits d'utilisation](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans), Claude Code s'arrête avant de lancer, car la confirmation de facturation a besoin d'une session interactive. Exécutez la [sous-commande `claude ultrareview`](/docs/fr/ultrareview#run-ultrareview-non-interactively) à la place ; en l'exécutant, vous consentez aux frais.

440 438 

441La commande s'appelait `/simplify` avant v2.1.147, quand elle appliquait les correctifs par défaut. `/simplify` exécute une révision de nettoyage séparé qui applique les correctifs sans rechercher les bugs. Si vous avez écrit un script `/simplify` pour la recherche de bugs, passez à `/code-review --fix`.439La commande s'appelait `/simplify` avant v2.1.147, quand elle appliquait les correctifs par défaut. `/simplify` exécute une révision de nettoyage séparé qui applique les correctifs sans rechercher les bugs. Si vous avez écrit un script `/simplify` pour la recherche de bugs, passez à `/code-review --fix`.

442 440 

commands.md +56 −55

Details

36 Toutes les commandes36 Toutes les commandes

37</h2>37</h2>

38 38 

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

40 40 

41* **[Skill](/docs/fr/skills#bundled-skills)** : une compétence groupée. Elle fonctionne comme les compétences que vous écrivez vous-même : une invite transmise à Claude.41* **[Skill](/docs/fr/skills#bundled-skills)** : un skill fourni. Il fonctionne comme les skills que vous écrivez vous-même : un prompt transmis à Claude.

42 * `/verify` s'exécute uniquement lorsque vous l'invoquez. Avant la v2.1.215, Claude pouvait également exécuter `/verify` de lui-même.42 * `/verify` s'exécute uniquement lorsque vous l'invoquez. Avant la v2.1.215, Claude pouvait également exécuter `/verify` de lui-même.

43* **[Workflow](/docs/fr/workflows#bundled-workflows)** : un [workflow dynamique](/docs/fr/workflows) groupé qui distribue le travail sur plusieurs sous-agents et s'exécute en arrière-plan.43* **[Workflow](/docs/fr/workflows#bundled-workflows)** : un [workflow dynamique](/docs/fr/workflows) fourni qui distribue le travail sur plusieurs sous-agents et s'exécute en arrière-plan.

44 * `/deep-research` s'exécute uniquement lorsque vous l'invoquez. Avant la v2.1.218, Claude pouvait également le démarrer de lui-même.44 * `/deep-research` s'exécute uniquement lorsque vous l'invoquez. Avant la v2.1.218, Claude pouvait également le démarrer de lui-même.

45 45 

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


61| `/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 |61| `/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 |

62| `/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 |62| `/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 |

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

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

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

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

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

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

69| `/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` |69| `/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` |


72| `/claude-api [migrate\|upgrade\|managed-agents-onboard\|prompt-audit\|cost-optimize\|build-eval\|hillclimb\|preserved-thinking-migration]` | **[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`. Pour ce que chaque sous-commande fait et la version qu'elle nécessite, consultez [Travailler sur les projets Claude API](/docs/fr/skills#work-on-claude-api-projects) |72| `/claude-api [migrate\|upgrade\|managed-agents-onboard\|prompt-audit\|cost-optimize\|build-eval\|hillclimb\|preserved-thinking-migration]` | **[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`. Pour ce que chaque sous-commande fait et la version qu'elle nécessite, consultez [Travailler sur les projets Claude API](/docs/fr/skills#work-on-claude-api-projects) |

73| `/claude-in-chrome [task]` | **[Skill](/docs/fr/skills#bundled-skills).** Faire en sorte que Claude accomplisse une tâche dans votre navigateur, telle que tester une page, remplir un formulaire ou lire les journaux de la console, via [Claude dans Chrome](/docs/fr/chrome). Disponible lorsque l'intégration Chrome est activée pour la session, par exemple avec `claude --chrome`, ou lorsque Claude Code peut proposer d'[installer l'extension](/docs/fr/chrome#install-the-extension-when-claude-asks) |73| `/claude-in-chrome [task]` | **[Skill](/docs/fr/skills#bundled-skills).** Faire en sorte que Claude accomplisse une tâche dans votre navigateur, telle que tester une page, remplir un formulaire ou lire les journaux de la console, via [Claude dans Chrome](/docs/fr/chrome). Disponible lorsque l'intégration Chrome est activée pour la session, par exemple avec `claude --chrome`, ou lorsque Claude Code peut proposer d'[installer l'extension](/docs/fr/chrome#install-the-extension-when-claude-asks) |

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

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

76| `/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 |76| `/color [color\|default]` | Définir la couleur de la barre du prompt 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 |

77| `/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) |77| `/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 skills et les fichiers de mémoire](/docs/fr/context-window#what-survives-compaction) |

78| `/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. Passez une ou plusieurs paires `key=value` pour définir un paramètre directement sans ouvrir l'interface, par exemple `/config thinking=false`, `/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` |78| `/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. Passez une ou plusieurs paires `key=value` pour définir un paramètre directement sans ouvrir l'interface, par exemple `/config thinking=false`, `/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` |

79| `/context [all]` | Visualiser l'utilisation actuelle du contexte sous forme de grille colorée. Affiche les suggestions d'optimisation pour les outils lourds en contexte, le gonflement de la mémoire et les avertissements de capacité. Lorsque la conversation dépasse la fenêtre de contexte, la sortie inclut un [avertissement](/docs/fr/errors#context-exceeds-the-token-limit) montrant à quel point vous dépassez la limite et quelle commande libère de l'espace. En [mode plein écran](/docs/fr/fullscreen), `/context` réduit la ventilation par élément pour garder la grille visible. Passez `all` pour la développer |79| `/context [all]` | Visualiser l'utilisation actuelle du contexte sous forme de grille colorée. Affiche les suggestions d'optimisation pour les outils lourds en contexte, le gonflement de la mémoire et les avertissements de capacité. Lorsque la conversation dépasse la fenêtre de contexte, la sortie inclut un [avertissement](/docs/fr/errors#context-exceeds-the-token-limit) montrant à quel point vous dépassez la limite et quelle commande libère de l'espace. En [mode plein écran](/docs/fr/fullscreen), `/context` réduit la ventilation par élément pour garder la grille visible. Passez `all` pour la développer |

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

81| `/cost` | Alias pour `/usage` |81| `/cost` | Alias pour `/usage` |

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

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

84| `/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é |84| `/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é |

85| `/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) Design, par exemple `/design a settings screen for a mobile banking app`. Vous modifiez les plans de travail dans un navigateur de bureau, et vos modifications s'enregistrent automatiquement. Vous pouvez exporter chaque plan de travail en PNG ou PDF. Nécessite Claude Code v2.1.265 ou ultérieur, une session où les [artefacts sont disponibles](/docs/fr/artifacts#availability), et un compte où le [modèle Design est disponible](/docs/fr/artifacts#start-from-a-slides-design-or-docs-template) ; si votre organisation a désactivé ce modèle, `/design` ne rédige pas de conceptions. 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 |85| `/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) Claude Design, par exemple `/design a settings screen for a mobile banking app`. Vous modifiez les plans de travail dans un navigateur de bureau, et vos modifications s'enregistrent automatiquement. Vous pouvez exporter chaque plan de travail en PNG ou PDF. Nécessite Claude Code v2.1.265 ou ultérieur, une session où les [artefacts sont disponibles](/docs/fr/artifacts#availability), et un compte où le [modèle Design est disponible](/docs/fr/artifacts#start-from-a-slides-design-or-docs-template) ; si votre organisation a désactivé ce modèle, `/design` ne rédige pas de conceptions. 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 |

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

87| `/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 |87| `/design-sync [hint]` | **[Skill](/docs/fr/skills#bundled-skills).** Convertir le système de conception React de votre dépôt 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 dépôt. Disponible sur l'API Anthropic. Il a besoin de claude.ai, que la CLI 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 |

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

89| `/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) |89| `/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) |

90| `/doctor [prompt-audit [path]]` | **[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`. Exécutez `/doctor prompt-audit` pour que Claude [audite vos fichiers `CLAUDE.md`, compétences et autres configurations](/docs/fr/memory#audit-your-instruction-files) pour les instructions obsolètes ou conflictuelles au lieu d'exécuter la vérification. La sous-commande `prompt-audit` nécessite Claude Code v2.1.283 ou ultérieur. 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 |90| `/doctor [prompt-audit [path]]` | **[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 skills, 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 [skills](/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`. Exécutez `/doctor prompt-audit` pour que Claude [audite vos fichiers `CLAUDE.md`, skills et autres configurations](/docs/fr/memory#audit-your-instruction-files) pour les instructions obsolètes ou conflictuelles au lieu d'exécuter la vérification. La sous-commande `prompt-audit` nécessite Claude Code v2.1.283 ou ultérieur. 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 |

91| `/effort [level\|auto\|status\|ultracode [on\|off]]` | Définir le [niveau d'effort](/docs/fr/model-config#adjust-effort-level) : `low` à `xhigh`, `max`, ou `auto` ; `status` l'affiche. `ultracode` ou `ultracode on` active [ultracode](/docs/fr/workflows#let-claude-decide-with-ultracode) pour la session au niveau actuel, et `ultracode off` le désactive ; la clé [`ultracode`](/docs/fr/settings-reference#ultracode) persiste. `max` est réservé à la session. Les arguments `on` et `off` et le maintien du niveau actuel nécessitent Claude Code v2.1.284 ou ultérieur. Avant la v2.1.284, `/effort ultracode` définissait la session à `xhigh`, et `/effort ultracode off` échouait avec `Invalid argument`. L'exécuter pendant que Claude répond 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 dans ce tour. Avant la v2.1.242, Claude Code a décidé à partir d'un drapeau de fonctionnalité qu'il a récupéré d'Anthropic s'il fallait exécuter la commande en milieu de tour ou la mettre en file d'attente jusqu'à la fin du tour, et l'a toujours mise en file d'attente dans une session qui ne [récupère pas les drapeaux de fonctionnalité](/docs/fr/env-vars#features-that-need-feature-flag-fetching), comme sur un [fournisseur tiers](/docs/fr/third-party-integrations). Fonctionne en `-p` |91| `/effort [level\|auto\|status\|ultracode [on\|off]]` | Définir le [niveau d'effort](/docs/fr/model-config#adjust-effort-level) : `low` à `xhigh`, `max`, ou `auto` ; `status` l'affiche. `ultracode` ou `ultracode on` active [ultracode](/docs/fr/workflows#let-claude-decide-with-ultracode) pour la session au niveau actuel, et `ultracode off` le désactive ; la clé [`ultracode`](/docs/fr/settings-reference#ultracode) persiste. `max` est réservé à la session. Les arguments `on` et `off` et le maintien du niveau actuel nécessitent Claude Code v2.1.284 ou ultérieur. Avant la v2.1.284, `/effort ultracode` définissait la session à `xhigh`, et `/effort ultracode off` échouait avec `Invalid argument`. L'exécuter pendant que Claude répond 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 requête suivante dans ce tour. Avant la v2.1.242, Claude Code décidait à partir d'un feature flag qu'il récupérait d'Anthropic s'il fallait exécuter la commande en milieu de tour ou la mettre en file d'attente jusqu'à la fin du tour, et la mettait toujours en file d'attente dans une session qui ne [récupère pas les feature flags](/docs/fr/env-vars#features-that-need-feature-flag-fetching), comme sur un [fournisseur tiers](/docs/fr/third-party-integrations). Fonctionne en `-p` |

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

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

94| `/fast [on\|off]` | Basculer le [mode rapide](/docs/fr/fast-mode) activé ou désactivé. L'exécuter pendant que Claude répond et Claude Code bascule le mode rapide sans attendre la fin du tour, bien que le tour en cours se termine à sa vitesse d'origine. Avant la v2.1.242, Claude Code a décidé à partir d'un drapeau de fonctionnalité qu'il a récupéré d'Anthropic s'il fallait exécuter la commande en milieu de tour ou la mettre en file d'attente jusqu'à la fin du tour, et l'a toujours mise en file d'attente dans une session qui ne [récupère pas les drapeaux de fonctionnalité](/docs/fr/env-vars#features-that-need-feature-flag-fetching). La disponibilité en mode non interactif avec `-p` est limitée ; consultez [Basculer le mode rapide](/docs/fr/fast-mode#toggle-fast-mode). Nécessite Claude Code v2.1.205 ou ultérieur |94| `/fast [on\|off]` | Activer ou désactiver le [mode rapide](/docs/fr/fast-mode). L'exécuter pendant que Claude répond et Claude Code bascule le mode rapide sans attendre la fin du tour, bien que le tour en cours se termine à sa vitesse d'origine. Avant la v2.1.242, Claude Code décidait à partir d'un feature flag qu'il récupérait d'Anthropic s'il fallait exécuter la commande en milieu de tour ou la mettre en file d'attente jusqu'à la fin du tour, et la mettait toujours en file d'attente dans une session qui ne [récupère pas les feature flags](/docs/fr/env-vars#features-that-need-feature-flag-fetching). La disponibilité en mode non interactif avec `-p` est limitée ; consultez [Basculer le mode rapide](/docs/fr/fast-mode#toggle-fast-mode). Nécessite Claude Code v2.1.205 ou ultérieur |

95| `/feedback [report]` | Envoyer des commentaires sur les produits concernant Claude Code. Ouvre la même boîte de dialogue que [`/bug`](#all-commands), avec la même étape de consentement, les mêmes règles d'envoi et le même comportement en milieu de tour. Dans les sessions avec [commentaires rédigés par Claude](/docs/fr/tools-reference#sendfeedback-tool-behavior), `/feedback` sans argument ouvre plutôt la file d'attente des brouillons, où vous examinez, modifiez, envoyez ou rejetez les brouillons que Claude a mis en file d'attente ; la file d'attente inclut une option pour rédiger un nouveau rapport dans la boîte de dialogue. Avec un argument, et pour `/bug` toujours, la boîte de dialogue s'ouvre directement |95| `/feedback [report]` | Envoyer des commentaires sur les produits concernant Claude Code. Ouvre la même boîte de dialogue que [`/bug`](#all-commands), avec la même étape de consentement, les mêmes règles d'envoi et le même comportement en milieu de tour. Dans les sessions avec [commentaires rédigés par Claude](/docs/fr/tools-reference#sendfeedback-tool-behavior), `/feedback` sans argument ouvre plutôt la file d'attente des brouillons, où vous examinez, modifiez, envoyez ou rejetez les brouillons que Claude a mis en file d'attente ; la file d'attente inclut une option pour rédiger un nouveau rapport dans la boîte de dialogue. Avec un argument, et pour `/bug` toujours, la boîte de dialogue s'ouvre directement |

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

97| `/focus` | Basculer la vue de focus, qui affiche uniquement votre dernière invite, un résumé d'appel d'outil d'une ligne avec les statistiques de diff de modification, et la réponse finale. Le résumé d'appel d'outil compte également les sous-agents lancés dans le tour et réduit les notifications de tâche en arrière-plan terminées en un seul décompte. La sélection persiste entre les sessions ; définissez [`viewMode`](/docs/fr/settings-reference#viewmode) dans les paramètres pour la remplacer. Disponible uniquement dans le [rendu plein écran](/docs/fr/fullscreen). À partir d'un client [Remote Control](/docs/fr/remote-control), exécutez `/focus [on\|off]` pour activer ou désactiver la vue de focus pour la session actuelle uniquement, sans modifier votre sélection enregistrée ; cela nécessite Claude Code v2.1.281 ou ultérieur. L'[extension VS Code](/docs/fr/vs-code#use-the-prompt-box) offre sa propre vue Focus en tant que basculement du menu de commande, stockée en tant que paramètre d'extension, indépendant de `viewMode` |97| `/focus` | Basculer la vue de focus, qui affiche uniquement votre dernier prompt, un résumé d'appel d'outil d'une ligne avec les statistiques de diff de modification, et la réponse finale. Le résumé d'appel d'outil compte également les sous-agents lancés dans le tour et réduit les notifications de tâche en arrière-plan terminées en un seul décompte. La sélection persiste entre les sessions ; définissez [`viewMode`](/docs/fr/settings-reference#viewmode) dans les paramètres pour la remplacer. Disponible uniquement dans le [rendu plein écran](/docs/fr/fullscreen). À partir d'un client [Remote Control](/docs/fr/remote-control), exécutez `/focus [on\|off]` pour activer ou désactiver la vue de focus pour la session actuelle uniquement, sans modifier votre sélection enregistrée ; cela nécessite Claude Code v2.1.281 ou ultérieur. L'[extension VS Code](/docs/fr/vs-code#use-the-prompt-box) offre sa propre vue Focus en tant que basculement du menu de commande, stockée en tant que paramètre d'extension, indépendant de `viewMode` |

98| `/fork [prompt]` | [Copier la conversation actuelle](/docs/fr/agent-view#copy-the-session-with-%2Ffork) dans une nouvelle session en arrière-plan et continuer à travailler ici. Passez une invite et la copie commence immédiatement à travailler dessus ; sans une, elle attend dans la vue agent pour sa première invite. Sauf lorsque la copie [modifie sur place](/docs/fr/agent-view#how-file-edits-are-isolated), Claude Code l'instruit de créer son propre worktree avant d'apporter des modifications de code ; l'instruction d'isolation nécessite Claude Code v2.1.221 ou ultérieur. Pour confier une tâche secondaire à un sous-agent dont le résultat revient dans cette conversation, utilisez `/subtask` ; pour basculer dans une copie vous-même, utilisez `/branch`. Nécessite Claude Code v2.1.212 ou ultérieur ; sur la v2.1.161 à la v2.1.211, et chaque fois que la [vue agent est désactivée](/docs/fr/agent-view#turn-off-agent-view), `/fork` démarre un [sous-agent forké](/docs/fr/sub-agents#fork-the-current-conversation) à la place |98| `/fork [prompt]` | [Copier la conversation actuelle](/docs/fr/agent-view#copy-the-session-with-%2Ffork) dans une nouvelle session en arrière-plan et continuer à travailler ici. Passez un prompt et la copie commence immédiatement à travailler dessus ; sans prompt, elle attend dans la vue agent son premier prompt. Sauf lorsque la copie [modifie sur place](/docs/fr/agent-view#how-file-edits-are-isolated), Claude Code l'instruit de créer son propre worktree avant d'apporter des modifications de code ; l'instruction d'isolation nécessite Claude Code v2.1.221 ou ultérieur. Pour confier une tâche secondaire à un sous-agent dont le résultat revient dans cette conversation, utilisez `/subtask` ; pour basculer dans une copie vous-même, utilisez `/branch`. Nécessite Claude Code v2.1.212 ou ultérieur ; sur la v2.1.161 à la v2.1.211, et chaque fois que la [vue agent est désactivée](/docs/fr/agent-view#turn-off-agent-view), `/fork` démarre un [sous-agent forké](/docs/fr/sub-agents#fork-the-current-conversation) à la place |

99| `/goal [condition\|clear]` | Définir un [objectif](/docs/fr/goal) : Claude continue de travailler entre les tours jusqu'à ce que la condition soit remplie ou l'objectif [s'efface pour une autre raison](/docs/fr/goal#how-evaluation-works). Sans argument, affiche l'objectif actuel ou le plus récemment atteint. `clear`, `stop`, `off`, `reset`, `none`, ou `cancel` supprime un objectif actif tôt |99| `/goal [condition\|clear]` | Définir un [objectif](/docs/fr/goal) : Claude continue de travailler entre les tours jusqu'à ce que la condition soit remplie ou que l'objectif [s'efface pour une autre raison](/docs/fr/goal#how-evaluation-works). Sans argument, affiche l'objectif actuel ou le plus récemment atteint. `clear`, `stop`, `off`, `reset`, `none`, ou `cancel` supprime un objectif actif avant terme |

100| `/heapdump` | Écrire un instantané de tas JavaScript et une ventilation de la mémoire vers `~/Desktop`, ou votre répertoire personnel sur Linux sans dossier Desktop, pour diagnostiquer une utilisation élevée de la mémoire. Joignez uniquement le fichier `-diagnostics.json` lors de la signalisation d'un problème de mémoire ; le `.heapsnapshot` contient votre conversation complète et vos identifiants, donc ne le partagez pas. [Masqué du menu de commande](#how-the-command-menu-matches-what-you-type) ; tapez-le en entier. Consultez [ce qu'il faut faire avec la sortie](/docs/fr/troubleshooting#high-cpu-or-memory-usage) |100| `/heapdump` | Écrire un instantané de tas JavaScript et une ventilation de la mémoire vers `~/Desktop`, ou votre répertoire personnel sur Linux sans dossier Desktop, pour diagnostiquer une utilisation élevée de la mémoire. Joignez uniquement le fichier `-diagnostics.json` lors de la signalisation d'un problème de mémoire ; le `.heapsnapshot` contient votre conversation complète et vos identifiants, donc ne le partagez pas. [Masqué du menu de commande](#how-the-command-menu-matches-what-you-type) ; tapez-le en entier. Consultez [ce qu'il faut faire avec la sortie](/docs/fr/troubleshooting#high-cpu-or-memory-usage) |

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

102| `/hooks` | Afficher les configurations de [hook](/docs/fr/hooks) pour les événements d'outils |102| `/hooks` | Afficher les configurations de [hook](/docs/fr/hooks#the-%2Fhooks-menu) |

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

104| `/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 |104| `/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 skills. 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 feature flags](/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 |

105| `/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` |105| `/init` | Initialiser le projet avec un guide `CLAUDE.md`. Définissez `CLAUDE_CODE_NEW_INIT=1` pour un flux interactif qui vous guide également à travers les skills, les hooks et les fichiers de mémoire personnels. Si `/init` trouve une configuration OpenAI Codex ou Google Gemini CLI, il offre de la transférer avec `/import` |

106| `/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 |106| `/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 passent mal, 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 |

107| `/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) |107| `/install-github-app` | Installer l'application Claude GitHub pour un dépôt, avec une étape facultative pour configurer les workflows [GitHub Actions](/docs/fr/github-actions) et les secrets. Vous guide à travers la sélection d'un dépôt et la configuration de l'intégration. Fonctionne uniquement avec les dépôts github.com. Lorsque le dépôt distant git de votre dépôt 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) |

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

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

110| `/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) |110| `/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) |

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

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

113| `/loop [interval] [prompt]` | **[Skill](/docs/fr/skills#bundled-skills).** Exécuter une invite à plusieurs reprises pendant que la session reste ouverte. Omettez l'intervalle et Claude [s'auto-règle entre les itérations](/docs/fr/scheduled-tasks#let-claude-choose-the-interval). Omettez l'invite et Claude exécute l'[invite de maintenance intégrée](/docs/fr/scheduled-tasks#run-the-built-in-maintenance-prompt) ou votre [`loop.md`](/docs/fr/scheduled-tasks#customize-the-default-prompt-with-loop-md). Exemple : `/loop 5m check if the deploy finished`. Consultez [Exécuter les invites selon un calendrier](/docs/fr/scheduled-tasks). Alias : `/proactive` |113| `/loop [interval] [prompt]` | **[Skill](/docs/fr/skills#bundled-skills).** Exécuter un prompt à plusieurs reprises pendant que la session reste ouverte. Omettez l'intervalle et Claude [s'auto-règle entre les itérations](/docs/fr/scheduled-tasks#let-claude-choose-the-interval). Omettez le prompt et Claude exécute le [prompt de maintenance intégré](/docs/fr/scheduled-tasks#run-the-built-in-maintenance-prompt) ou votre [`loop.md`](/docs/fr/scheduled-tasks#customize-the-default-prompt-with-loop-md). Exemple : `/loop 5m check if the deploy finished`. Consultez [Exécuter des prompts selon un calendrier](/docs/fr/scheduled-tasks). Alias : `/proactive` |

114| `/mcp [reconnect <server>\|enable\|disable [<server>\|all]]` | Gérer les connexions de serveur MCP et l'authentification OAuth. Exécutez sans argument pour ouvrir la liste interactive, passez `reconnect <server>` pour reconnecter un serveur déconnecté, ou passez `enable`/`disable` avec un nom de serveur ou `all` pour modifier l'état de la connexion sans ouvrir la boîte de dialogue. Également disponible en mode non interactif (`-p`), où l'exécuter sans argument affiche un résumé textuel de l'état du serveur au lieu d'ouvrir la liste ; nécessite Claude Code v2.1.205 ou ultérieur |114| `/mcp [reconnect (<server>\|all)\|enable\|disable [<server>\|all]]` | Gérer les connexions de serveur MCP et l'authentification OAuth. Exécutez sans argument pour ouvrir la liste interactive, ou passez `reconnect`, `enable` ou `disable` avec un nom de serveur ou `all` pour modifier l'état de la connexion sans l'ouvrir. `reconnect all` [réessaie chaque serveur qui a échoué ou nécessite une authentification](/docs/fr/mcp#retry-failed-servers-yourself). Également disponible en mode non interactif (`-p`), où l'exécuter sans argument affiche un résumé textuel de l'état du serveur au lieu d'ouvrir la liste ; nécessite Claude Code v2.1.205 ou ultérieur |

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

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

117| `/model [model]` | Basculer le modèle d'IA et l'enregistrer comme votre défaut pour les nouvelles sessions. Pour les modèles qui le supportent, utilisez les flèches gauche/droite pour [ajuster le niveau d'effort](/docs/fr/model-config#adjust-effort-level). Sans argument, ouvre un sélecteur ; appuyez sur `s` sur une ligne pour basculer pour la session actuelle uniquement. Consultez [quand Claude Code vous demande de confirmer le basculement](/docs/fr/prompt-caching#switching-models). Une fois que vous confirmez le basculement, si Claude Code vous le demande, Claude Code applique la modification sans attendre la fin de la réponse actuelle. Avant la v2.1.242, Claude Code a décidé à partir d'un drapeau de fonctionnalité qu'il a récupéré d'Anthropic s'il fallait exécuter la commande en milieu de tour ou la mettre en file d'attente jusqu'à la fin du tour, et l'a toujours mise en file d'attente dans une session qui ne [récupère pas les drapeaux de fonctionnalité](/docs/fr/env-vars#features-that-need-feature-flag-fetching), comme sur un [fournisseur tiers](/docs/fr/third-party-integrations). Également disponible en mode non interactif (`-p`) avec un argument de modèle au lieu du sélecteur, où il s'applique à la session actuelle uniquement et n'est pas enregistré comme votre défaut ; nécessite Claude Code v2.1.205 ou ultérieur |117| `/model [model]` | Basculer le modèle d'IA et l'enregistrer comme votre défaut pour les nouvelles sessions. Pour les modèles qui le supportent, utilisez les flèches gauche/droite pour [ajuster le niveau d'effort](/docs/fr/model-config#adjust-effort-level). Sans argument, ouvre un sélecteur ; appuyez sur `s` sur une ligne pour basculer pour la session actuelle uniquement. Consultez [quand Claude Code vous demande de confirmer le basculement](/docs/fr/prompt-caching#switching-models). Une fois que vous confirmez le basculement, si Claude Code vous le demande, Claude Code applique la modification sans attendre la fin de la réponse actuelle. Avant la v2.1.242, Claude Code décidait à partir d'un feature flag qu'il récupérait d'Anthropic s'il fallait exécuter la commande en milieu de tour ou la mettre en file d'attente jusqu'à la fin du tour, et la mettait toujours en file d'attente dans une session qui ne [récupère pas les feature flags](/docs/fr/env-vars#features-that-need-feature-flag-fetching), comme sur un [fournisseur tiers](/docs/fr/third-party-integrations). Également disponible en mode non interactif (`-p`) avec un argument de modèle au lieu du sélecteur, où il s'applique à la session actuelle uniquement et n'est pas enregistré comme votre défaut ; nécessite Claude Code v2.1.205 ou ultérieur |

118| `/output-style [style]` | Répertorier les [styles de sortie](/docs/fr/output-styles) ou basculer vers l'un d'eux, par exemple `/output-style concise`. Consultez [Changer votre style de sortie](/docs/fr/output-styles#change-your-output-style). Nécessite Claude Code v2.1.269 ou ultérieur |118| `/output-style [style]` | Répertorier les [styles de sortie](/docs/fr/output-styles) ou basculer vers l'un d'eux, par exemple `/output-style concise`. Consultez [Changer votre style de sortie](/docs/fr/output-styles#change-your-output-style). Nécessite Claude Code v2.1.269 ou ultérieur |

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

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

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

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

123| `/plugin-authoring` | Charger la référence sur laquelle Claude s'appuie pour [écrire un mod](/docs/fr/plugins/mods/create#ask-claude-for-a-mod). Claude peut la charger de lui-même lorsque vous demandez un mod. Il s'agit d'un skill provenant d'un [plugin intégré](/docs/fr/plugins/mods/overview#mods-built-into-claude-code), que vous pouvez désactiver dans `/plugin`. Nécessite Claude Code v2.1.287 ou ultérieur |

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

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

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

126| `/radio` | Ouvrir Claude FM lo-fi radio dans votre navigateur. Affiche l'URL du flux lorsqu'aucun navigateur n'est disponible |127| `/radio` | Ouvrir Claude FM lo-fi radio dans votre navigateur. Affiche l'URL du flux lorsqu'aucun navigateur n'est disponible |

127| `/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. Les lignes d'attente et de continuation nécessitent Claude Code v2.1.234 ou ultérieur |128| `/rate-limit-options` | Afficher les façons de continuer à travailler lorsqu'une limite d'utilisation claude.ai bloque une requête : 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. Les lignes d'attente et de continuation nécessitent Claude Code v2.1.234 ou ultérieur |

128| `/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 |129| `/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 |

129| `/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 |130| `/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 |

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

131| `/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é |132| `/reload-skills` | Rescanner les répertoires de [skills](/docs/fr/skills) et de commandes afin que les skills ajoutés ou modifiés sur le disque pendant la session deviennent disponibles sans redémarrer. Signale le nombre de skills disponibles et le nombre ajouté ou supprimé |

132| `/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` |133| `/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` |

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

134| `/rename [name]` | Renommer la session actuelle et afficher le nom sur la barre d'invite. Sans nom, génère automatiquement un à partir de l'historique de conversation. Également disponible en mode non interactif (`-p`) ; nécessite Claude Code v2.1.205 ou ultérieur. À partir de chaque surface de renommage, y compris claude.ai et l'application de bureau, Claude Code remplace les caractères de contrôle et invisibles dans le nouveau nom par des espaces et limite le nom à 200 caractères. Si le nom est vide une fois les caractères invisibles supprimés, Claude Code le rejette et affiche `That name is empty once invisible characters are removed. Usage: /rename <name>`. Le remplacement de caractères et la limite de longueur nécessitent Claude Code v2.1.221 ou ultérieur. Si une autre session en direct sur cette machine utilise déjà un nom que vous passez, Claude Code applique [une variante de celui-ci](/docs/fr/sessions#name-your-sessions) à la place |135| `/rename [name]` | Renommer la session actuelle et afficher le nom sur la barre du prompt. Sans nom, en génère automatiquement un à partir de l'historique de conversation. Également disponible en mode non interactif (`-p`) ; nécessite Claude Code v2.1.205 ou ultérieur. À partir de chaque surface de renommage, y compris claude.ai et l'application de bureau, Claude Code remplace les caractères de contrôle et invisibles dans le nouveau nom par des espaces et limite le nom à 200 caractères. Si le nom est vide une fois les caractères invisibles supprimés, Claude Code le rejette et affiche `That name is empty once invisible characters are removed. Usage: /rename <name>`. Le remplacement de caractères et la limite de longueur nécessitent Claude Code v2.1.221 ou ultérieur. Si une autre session en direct sur cette machine utilise déjà un nom que vous passez, Claude Code applique [une variante de celui-ci](/docs/fr/sessions#name-your-sessions) à la place |

135| `/resume [session]` | Reprendre une conversation par ID ou nom, ou ouvrir le sélecteur de session. Les [sessions en arrière-plan](/docs/fr/agent-view) apparaissent dans le sélecteur marquées avec `bg`. Reprendre une qui est encore en cours d'exécution, à partir du sélecteur ou par ID ou nom, [ouvre cette session](/docs/fr/sessions#resume-a-running-background-session) : votre conversation actuelle se déplace en arrière-plan et ce terminal s'attache à celle en cours d'exécution. Appuyez sur `←` sur une invite vide pour revenir à la vue agent, qui répertorie également la conversation que vous avez laissée. Avant la v2.1.285, Claude Code refusait et vous disait d'ouvrir la session avec `claude attach` ou de l'arrêter d'abord. Alias : `/continue` |136| `/resume [session]` | Reprendre une conversation par ID ou nom, ou ouvrir le sélecteur de session. Les [sessions en arrière-plan](/docs/fr/agent-view) apparaissent dans le sélecteur marquées avec `bg`. Reprendre une session encore en cours d'exécution, à partir du sélecteur ou par ID ou nom, [ouvre cette session](/docs/fr/sessions#resume-a-running-background-session) : votre conversation actuelle se déplace en arrière-plan et ce terminal s'attache à celle en cours d'exécution. Appuyez sur `←` sur un prompt vide pour revenir à la vue agent, qui répertorie également la conversation que vous avez laissée. Avant la v2.1.285, Claude Code refusait et vous disait d'ouvrir la session avec `claude attach` ou de l'arrêter d'abord. Alias : `/continue` |

136| `/review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [pr#\|branch\|path]` | Alias de [`/code-review`](/docs/fr/code-review#review-a-diff-locally) : examine le diff actuel, ou un numéro de demande de fusion, une branche ou un chemin que vous passez, tel que `/review 1234`, et prend les mêmes niveaux d'effort et drapeaux. Sans niveau donné, l'examen réutilise le dernier niveau `low` à `max` que vous avez tapé ; consultez [Examiner un diff localement](/docs/fr/code-review#review-a-diff-locally) pour les règles exactes. Pour un examen cloud approfondi, utilisez [`/code-review ultra`](/docs/fr/ultrareview). Avant la v2.1.223, `/review` était une commande distincte qui exécutait un examen unique en lecture seule d'une demande de fusion GitHub par numéro, répertoriant les demandes de fusion ouvertes à choisir lorsqu'elle était exécutée sans argument ; de la v2.1.186 à la v2.1.201, elle exécutait le même moteur multi-agents que `/code-review medium` |137| `/review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [pr#\|branch\|path]` | Alias de [`/code-review`](/docs/fr/code-review#review-a-diff-locally) : examine le diff actuel, ou un numéro de PR, une branche ou un chemin que vous passez, tel que `/review 1234`, et prend les mêmes niveaux d'effort et flags. Sans niveau donné, la revue réutilise le dernier niveau `low` à `max` que vous avez tapé ; consultez [Examiner un diff localement](/docs/fr/code-review#review-a-diff-locally) pour les règles exactes. Pour une revue cloud approfondie, utilisez [`/code-review ultra`](/docs/fr/ultrareview). Avant la v2.1.223, `/review` était une commande distincte qui exécutait une revue en un seul passage et en lecture seule d'une pull request GitHub par numéro, répertoriant les PR ouvertes à choisir lorsqu'elle était exécutée sans argument ; de la v2.1.186 à la v2.1.201, elle exécutait le même moteur multi-agents que `/code-review medium` |

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

138| `/run` | **[Skill](/docs/fr/skills#bundled-skills).** Lancer et piloter l'application de votre projet pour voir un changement fonctionner, pas seulement passer les tests. Consultez [Exécuter et vérifier votre application](/docs/fr/skills#run-and-verify-your-app) |139| `/run` | **[Skill](/docs/fr/skills#bundled-skills).** Lancer et piloter l'application de votre projet pour voir un changement fonctionner, pas seulement passer les tests. Consultez [Exécuter et vérifier votre application](/docs/fr/skills#run-and-verify-your-app) |

139| `/run-skill-generator` | **[Skill](/docs/fr/skills#bundled-skills).** Enseigner à `/run` et `/verify` comment construire, lancer et piloter l'application de votre projet à partir d'un environnement propre en écrivant une [compétence](/docs/fr/skills#run-and-verify-your-app) par projet |140| `/run-skill-generator` | **[Skill](/docs/fr/skills#bundled-skills).** Enseigner à `/run` et `/verify` comment compiler, lancer et piloter l'application de votre projet à partir d'un environnement propre en écrivant un [skill](/docs/fr/skills#run-and-verify-your-app) par projet |

140| `/sandbox` | Basculer le [mode sandbox](/docs/fr/sandboxing). Disponible sur les plates-formes prises en charge uniquement |141| `/sandbox` | Basculer le [mode sandbox](/docs/fr/sandboxing). Disponible sur les plates-formes prises en charge uniquement |

141| `/schedule [description]` | Créer, mettre à jour, répertorier ou exécuter des [routines](/docs/fr/routines), qui s'exécutent dans le cloud. Claude vous guide à travers la configuration de manière conversationnelle. Vous pouvez également demander des informations sur les [exécutions récentes d'une routine](/docs/fr/routines#manage-routines-from-the-cli). Alias : `/routines` |142| `/schedule [description]` | Créer, mettre à jour, répertorier ou exécuter des [routines](/docs/fr/routines), qui s'exécutent dans le cloud. Claude vous guide à travers la configuration de manière conversationnelle. Vous pouvez également demander des informations sur les [exécutions récentes d'une routine](/docs/fr/routines#manage-routines-from-the-cli). Alias : `/routines` |

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

143| `/security-review` | Analyser les modifications sur votre branche actuelle pour les vulnérabilités de sécurité. Examine le diff entre votre branche et la branche par défaut de l'origine, identifiant les risques tels que l'injection, les problèmes d'authentification et l'exposition des données. Nécessite une télécommande `origin` ; si l'examen échoue avec une erreur `ambiguous argument`, consultez la [référence d'erreur](/docs/fr/errors#security-review-fails-without-origin-head) |144| `/security-review` | Analyser les modifications sur votre branche actuelle pour les vulnérabilités de sécurité. Examine le diff entre votre branche et la branche par défaut de l'origine, identifiant les risques tels que l'injection, les problèmes d'authentification et l'exposition des données. Nécessite un dépôt distant `origin` ; si la revue échoue avec une erreur `ambiguous argument`, consultez la [référence d'erreur](/docs/fr/errors#security-review-fails-without-origin-head) |

144| `/setup-bedrock` | Configurer l'authentification, la région et les épingles de modèle [Amazon Bedrock](/docs/fr/amazon-bedrock) via un assistant interactif. [Masqué du menu de commande](#how-the-command-menu-matches-what-you-type) jusqu'à ce que `CLAUDE_CODE_USE_BEDROCK=1` soit défini ; tapez-le en entier. Les utilisateurs d'Amazon Bedrock pour la première fois peuvent également accéder à cet assistant à partir de l'écran de connexion |145| `/setup-bedrock` | Configurer l'authentification, la région et les épingles de modèle [Amazon Bedrock](/docs/fr/amazon-bedrock) via un assistant interactif. [Masqué du menu de commande](#how-the-command-menu-matches-what-you-type) jusqu'à ce que `CLAUDE_CODE_USE_BEDROCK=1` soit défini ; tapez-le en entier. Les utilisateurs d'Amazon Bedrock pour la première fois peuvent également accéder à cet assistant à partir de l'écran de connexion |

145| `/setup-vertex` | Configurer l'authentification, le projet, la région et les épingles de modèle de la [plateforme d'agents de Google Cloud](/docs/fr/google-vertex-ai) via un assistant interactif. [Masqué du menu de commande](#how-the-command-menu-matches-what-you-type) jusqu'à ce que `CLAUDE_CODE_USE_VERTEX=1` soit défini ; tapez-le en entier. Les utilisateurs de la plateforme d'agents de Google Cloud pour la première fois peuvent également accéder à cet assistant à partir de l'écran de connexion |146| `/setup-vertex` | Configurer l'authentification, le projet, la région et les épingles de modèle de la [plateforme d'agents de Google Cloud](/docs/fr/google-vertex-ai) via un assistant interactif. [Masqué du menu de commande](#how-the-command-menu-matches-what-you-type) jusqu'à ce que `CLAUDE_CODE_USE_VERTEX=1` soit défini ; tapez-le en entier. Les utilisateurs de la plateforme d'agents de Google Cloud pour la première fois peuvent également accéder à cet assistant à partir de l'écran de connexion |

146| `/simplify [target]` | **[Skill](/docs/fr/skills#bundled-skills).** Examiner le code modifié pour les opportunités de nettoyage et appliquer les corrections. Quatre [agents](/docs/fr/sub-agents) d'examen s'exécutent en parallèle, couvrant la réutilisation des assistants existants, la simplification, l'efficacité et si la modification est au bon niveau d'abstraction. L'examen ne recherche pas les bogues de correction. Utilisez `/code-review` pour trouver les bogues. Passez un chemin ou une référence de demande de fusion pour examiner une cible spécifique |147| `/simplify [target]` | **[Skill](/docs/fr/skills#bundled-skills).** Examiner le code modifié pour les opportunités de nettoyage et appliquer les corrections. Quatre [agents](/docs/fr/sub-agents) de revue s'exécutent en parallèle, couvrant la réutilisation des assistants existants, la simplification, l'efficacité et si la modification est au bon niveau d'abstraction. La revue ne recherche pas les bogues de correction. Utilisez `/code-review` pour trouver les bogues. Passez un chemin ou une référence de PR pour examiner une cible spécifique |

147| `/skill-doctor` | Afficher ce que chacune de vos [compétences](/docs/fr/skills) coûte en contexte et à quelle fréquence elle est utilisée, afin que vous puissiez [trouver les compétences à désactiver](/docs/fr/skills#find-unused-skills). Nécessite Claude Code v2.1.252 ou ultérieur et la [récupération des drapeaux de fonctionnalité](/docs/fr/env-vars#features-that-need-feature-flag-fetching) |148| `/skill-doctor` | Afficher ce que chacun de vos [skills](/docs/fr/skills) coûte en contexte et à quelle fréquence il est utilisé, afin que vous puissiez [trouver les skills à désactiver](/docs/fr/skills#find-unused-skills). Nécessite Claude Code v2.1.252 ou ultérieur et la [récupération des feature flags](/docs/fr/env-vars#features-that-need-feature-flag-fetching) |

148| `/skills` | Répertorier les [compétences](/docs/fr/skills) disponibles. Tapez pour filtrer la liste par nom, description ou source. Appuyez sur `t` pour trier par nombre de jetons, `Space` ou `Enter` pour [faire défiler la visibilité d'une compétence à Claude et au menu `/`](/docs/fr/skills#override-skill-visibility-from-settings), et `Esc` pour enregistrer et fermer. Vous ne pouvez pas faire défiler les compétences des plugins, les compétences dont le frontmatter définit `disable-model-invocation: true`, ou les compétences avec une entrée `skillOverrides` dans les paramètres gérés ou l'indicateur `--settings` |149| `/skills` | Répertorier les [skills](/docs/fr/skills) disponibles. Tapez pour filtrer la liste par nom, description ou source. Appuyez sur `t` pour trier par nombre de tokens, `Space` ou `Enter` pour [faire défiler la visibilité d'un skill pour Claude et le menu `/`](/docs/fr/skills#override-skill-visibility-from-settings), et `Esc` pour enregistrer et fermer. Vous ne pouvez pas faire défiler les skills des plugins, les skills dont le frontmatter définit `disable-model-invocation: true`, ou les skills avec une entrée `skillOverrides` dans les paramètres gérés ou le flag `--settings` |

149| `/slides [brief]` | **[Skill](/docs/fr/skills#bundled-skills).** Créer une nouvelle présentation en tant qu'[artefact](/docs/fr/artifacts#make-a-slide-deck) Claude Slides rempli à partir de votre résumé, par exemple `/slides a quarterly review of the platform team`. Nécessite Claude Code v2.1.265 ou ultérieur, une session où les [artefacts sont disponibles](/docs/fr/artifacts#availability), et un compte où le [modèle Slides est disponible](/docs/fr/artifacts#start-from-a-slides-design-or-docs-template) ; sinon la commande n'apparaît pas. 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 |150| `/slides [brief]` | **[Skill](/docs/fr/skills#bundled-skills).** Créer une nouvelle présentation en tant qu'[artefact](/docs/fr/artifacts#make-a-slide-deck) Claude Slides rempli à partir de votre résumé, par exemple `/slides a quarterly review of the platform team`. Nécessite Claude Code v2.1.265 ou ultérieur, une session où les [artefacts sont disponibles](/docs/fr/artifacts#availability), et un compte où le [modèle Slides est disponible](/docs/fr/artifacts#start-from-a-slides-design-or-docs-template) ; sinon la commande n'apparaît pas. 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 |

150| `/stats` | Alias pour `/usage`. S'ouvre sur l'onglet Stats |151| `/stats` | Alias pour `/usage`. S'ouvre sur l'onglet Stats |

151| `/status` | Ouvrir l'interface Paramètres sur l'onglet Statut, affichant la version, le modèle, le compte et la connectivité. Une ligne `Session kind` lit `background job · attached` ou `background job · unattended` dans une [session en arrière-plan](/docs/fr/agent-view), selon qu'un terminal est attaché, et `interactive` dans toute autre session. Avant la v2.1.221, `/status` n'affichait pas cette ligne. Fonctionne pendant que Claude répond |152| `/status` | Ouvrir l'interface Paramètres sur l'onglet Statut, affichant la version, le modèle, le compte et la connectivité. Une ligne `Session kind` indique `background job · attached` ou `background job · unattended` dans une [session en arrière-plan](/docs/fr/agent-view), selon qu'un terminal est attaché, et `interactive` dans toute autre session. Avant la v2.1.221, `/status` n'affichait pas cette ligne. Fonctionne pendant que Claude répond |

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

153| `/stickers` | Commander des autocollants Claude Code |154| `/stickers` | Commander des autocollants Claude Code |

154| `/stop` | Arrêter la [session en arrière-plan](/docs/fr/agent-view) actuelle. Disponible uniquement lors de l'attachement à une session en arrière-plan ; la transcription et tout worktree sont conservés. Pour vous détacher sans arrêter, utilisez `/exit` ou appuyez sur `←` |155| `/stop` | Arrêter la [session en arrière-plan](/docs/fr/agent-view) à laquelle vous êtes attaché, ou celle à laquelle vous l'envoyez en tant que [réponse d'aperçu](/docs/fr/agent-view#peek-and-reply) ; la transcription et tout worktree sont conservés. Pour vous détacher sans arrêter, utilisez `/exit` ou appuyez sur `←` |

155| `/subtask <task>` | Générer un [sous-agent forké](/docs/fr/sub-agents#fork-the-current-conversation) : un sous-agent en arrière-plan qui hérite de la conversation complète et travaille sur la tâche pendant que vous continuez à travailler. Son résultat revient à cette conversation lorsqu'il se termine. Pour copier la conversation dans une session en arrière-plan distincte à la place, utilisez `/fork`. Nécessite Claude Code v2.1.212 ou ultérieur ; sur la v2.1.161 à la v2.1.211, cette commande est `/fork`. Lorsque la [vue agent est désactivée](/docs/fr/agent-view#turn-off-agent-view), `/subtask` n'est pas disponible et `/fork` conserve le comportement du sous-agent forké |156| `/subtask <task>` | Générer un [sous-agent forké](/docs/fr/sub-agents#fork-the-current-conversation) : un sous-agent en arrière-plan qui hérite de la conversation complète et travaille sur la tâche pendant que vous continuez à travailler. Son résultat revient à cette conversation lorsqu'il se termine. Pour copier la conversation dans une session en arrière-plan distincte à la place, utilisez `/fork`. Nécessite Claude Code v2.1.212 ou ultérieur ; sur la v2.1.161 à la v2.1.211, cette commande est `/fork`. Lorsque la [vue agent est désactivée](/docs/fr/agent-view#turn-off-agent-view), `/subtask` n'est pas disponible et `/fork` conserve le comportement du sous-agent forké |

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

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

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

159| `/terminal-setup` | [Installer une liaison de clé Shift+Enter pour les nouvelles lignes](/docs/fr/terminal-config#enter-multiline-prompts) dans VS Code, Cursor, Devin Desktop, Alacritty ou Zed. Dans Apple Terminal, [activer Option+Enter pour les nouvelles lignes et désactiver la cloche audible](/docs/fr/terminal-config#enable-option-key-shortcuts-on-macos) à la place. Dans iTerm2, [activer l'accès au presse-papiers afin que `/copy` fonctionne](/docs/fr/terminal-config#enable-option-key-shortcuts-on-macos) |160| `/terminal-setup` | [Installer un raccourci clavier Shift+Enter pour les nouvelles lignes](/docs/fr/terminal-config#enter-multiline-prompts) dans VS Code, Cursor, Devin Desktop, Alacritty ou Zed. Dans Apple Terminal, [activer Option+Enter pour les nouvelles lignes et désactiver la cloche audible](/docs/fr/terminal-config#enable-option-key-shortcuts-on-macos) à la place. Dans iTerm2, [activer l'accès au presse-papiers afin que `/copy` fonctionne](/docs/fr/terminal-config#enable-option-key-shortcuts-on-macos) |

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

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

162| `/ultraplan <prompt>` | Supprimé. Utilisez le [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode) à la place. Auparavant, envoyait une tâche de planification à une session [Claude Code sur le web](/docs/fr/claude-code-on-the-web) pour examen dans votre navigateur |163| `/ultraplan <prompt>` | Supprimé. Utilisez le [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode) à la place. Auparavant, envoyait une tâche de planification à une [session cloud](/docs/fr/claude-code-on-the-web) pour examen dans votre navigateur |

163| `/ultrareview [PR or branch]` | Exécuter un examen de code approfondi et multi-agents dans un sandbox cloud avec [ultrareview](/docs/fr/ultrareview). Passez une référence de demande de fusion pour examiner cette demande de fusion, ou une branche de base ou un commit pour modifier la base de comparaison. L'invocation préférée est `/code-review ultra`, et `/ultrareview` est un alias. Inclut 3 exécutions gratuites sur Pro et Max, puis nécessite des [crédits d'utilisation](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |164| `/ultrareview [PR or branch]` | Exécuter une revue de code approfondie et multi-agents dans un sandbox cloud avec [ultrareview](/docs/fr/ultrareview). Passez une référence de PR pour examiner cette pull request, ou une branche de base ou un commit pour modifier la base de comparaison. L'invocation préférée est `/code-review ultra`, et `/ultrareview` est un alias. Inclut 3 exécutions gratuites sur Pro et Max, puis nécessite des [crédits d'utilisation](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |

164| `/update-config [request]` | **[Skill](/docs/fr/skills#bundled-skills).** Décrivez une modification des paramètres, telle que l'autorisation d'une commande, la définition d'une variable d'environnement, ou l'ajout d'un [hook](/docs/fr/hooks), et Claude modifie le fichier [`settings.json`](/docs/fr/settings) correspondant. Pour les options telles que le thème et le modèle, utilisez `/config` à la place |165| `/update-config [request]` | **[Skill](/docs/fr/skills#bundled-skills).** Décrivez une modification des paramètres, telle que l'autorisation d'une commande, la définition d'une variable d'environnement, ou l'ajout d'un [hook](/docs/fr/hooks), et Claude modifie le fichier [`settings.json`](/docs/fr/settings) correspondant. Pour les options telles que le thème et le modèle, utilisez `/config` à la place |

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

166| `/usage` | Afficher le coût de la session, les limites d'utilisation du plan et les statistiques d'activité. Sur un plan Pro, Max, Team ou Entreprise, inclut une [ventilation de ce qui compte contre vos limites de plan](/docs/fr/costs#plan-usage-breakdown). `/cost` et `/stats` sont des alias |167| `/usage` | Afficher le coût de la session, les limites d'utilisation du plan et les statistiques d'activité. Sur un plan Pro, Max, Team ou Entreprise, inclut une [ventilation de ce qui compte dans vos limites de plan](/docs/fr/costs#plan-usage-breakdown). `/cost` et `/stats` sont des alias |

167| `/usage-credits` | Configurer les crédits d'utilisation, ou les demander à votre administrateur, lorsque vous atteignez une limite. Ouvre vos [paramètres de facturation des crédits d'utilisation](/docs/fr/costs#add-usage-credits-to-your-subscription) dans le navigateur, sauf que les membres de l'équipe et de l'entreprise sans accès à la facturation envoient plutôt une demande de crédits d'utilisation à leur administrateur à partir de l'interface de ligne de commande, après confirmation dans une boîte de dialogue que la demande notifie leurs administrateurs. Lorsqu'aucun navigateur ne peut ouvrir la page de facturation, par exemple sur SSH, la commande affiche l'URL à visiter à la place ; cela nécessite Claude Code v2.1.205 ou ultérieur, et les versions antérieures n'affichaient rien dans ce cas. Auparavant `/extra-usage` |168| `/usage-credits` | Configurer les crédits d'utilisation, ou les demander à votre administrateur, lorsque vous atteignez une limite. Ouvre vos [paramètres de facturation des crédits d'utilisation](/docs/fr/costs#add-usage-credits-to-your-subscription) dans le navigateur, sauf que les membres Team et Entreprise sans accès à la facturation envoient plutôt une demande de crédits d'utilisation à leur administrateur à partir de la CLI, après avoir confirmé dans une boîte de dialogue que la demande notifie leurs administrateurs. Lorsqu'aucun navigateur ne peut ouvrir la page de facturation, par exemple sur SSH, la commande affiche l'URL à visiter à la place ; cela nécessite Claude Code v2.1.205 ou ultérieur, et les versions antérieures n'affichaient rien dans ce cas. Auparavant `/extra-usage` |

168| `/verify` | **[Skill](/docs/fr/skills#bundled-skills).** Confirmer qu'une modification de code fait ce qu'elle devrait en construisant l'application de votre projet, en l'exécutant et en observant le résultat, plutôt que de compter sur les tests ou les vérifications de type. Consultez [Exécuter et vérifier votre application](/docs/fr/skills#run-and-verify-your-app) |169| `/verify` | **[Skill](/docs/fr/skills#bundled-skills).** Confirmer qu'une modification de code fait ce qu'elle devrait en compilant l'application de votre projet, en l'exécutant et en observant le résultat, plutôt que de compter sur les tests ou les vérifications de type. Consultez [Exécuter et vérifier votre application](/docs/fr/skills#run-and-verify-your-app) |

169| `/vim` | Supprimé dans la v2.1.92. Pour basculer entre les modes d'édition Vim et Normal, utilisez `/config` → Mode éditeur |170| `/vim` | Supprimé dans la v2.1.92. Pour basculer entre les modes d'édition Vim et Normal, utilisez `/config` → Mode éditeur |

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

171| `/web-setup` | Connecter votre compte GitHub à [Claude Code sur le web](/docs/fr/web-quickstart#connect-from-your-terminal) en utilisant vos identifiants `gh` CLI locaux |172| `/web-setup` | Connecter votre compte GitHub pour les [sessions cloud](/docs/fr/web-quickstart#connect-from-your-terminal) en utilisant vos identifiants locaux de la CLI `gh` |

172| `/workflow-authoring` | **[Skill](/docs/fr/skills#bundled-skills).** Charger la référence pour écrire des scripts de [workflow dynamique](/docs/fr/workflows) : l'API de script, le comportement de reprise, les modèles de qualité et les exemples travaillés. Claude le charge normalement de lui-même avant d'écrire un script ; exécutez-le vous-même avant de [modifier un script enregistré à la main](/docs/fr/workflows#edit-a-saved-script). Disponible lorsque les workflows dynamiques sont activés, et nécessite Claude Code v2.1.248 ou ultérieur |173| `/workflow-authoring` | **[Skill](/docs/fr/skills#bundled-skills).** Charger la référence pour écrire des scripts de [workflow dynamique](/docs/fr/workflows) : l'API de script, le comportement de reprise, les modèles de qualité et les exemples travaillés. Claude le charge normalement de lui-même avant d'écrire un script ; exécutez-le vous-même avant de [modifier un script enregistré à la main](/docs/fr/workflows#edit-a-saved-script). Disponible lorsque les workflows dynamiques sont activés, et nécessite Claude Code v2.1.248 ou ultérieur |

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

174 175 

Details

70 70 

71* Le message dépasse la [limite de taille](#limitations). Claude Code le refuse dans la session d'envoi, avant qu'il ne parte.71* Le message dépasse la [limite de taille](#limitations). Claude Code le refuse dans la session d'envoi, avant qu'il ne parte.

72* 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 les messages supplémentaires à cette session.72* 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 les messages supplémentaires à cette session.

73* Une session au-delà de cette machine est [listée comme incapable de recevoir des messages entre sessions](#message-sessions-on-other-machines). Claude Code refuse le message dans la session d'envoi, avant qu'il ne quitte cette machine.

73* La cible de réponse sur cette machine échoue une vérification de sécurité, comme une cible liée symboliquement. [Refuser d'envoyer un message entre sessions](/docs/fr/errors#refusing-to-send-a-cross-session-message) énumère ces vérifications.74* La cible de réponse sur cette machine échoue une vérification de sécurité, comme une cible liée symboliquement. [Refuser d'envoyer un message entre sessions](/docs/fr/errors#refusing-to-send-a-cross-session-message) énumère ces vérifications.

74 75 

75La 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 des trois résultats :76La 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 des trois résultats :


160 161 

161Démarrer une conversation avec une session sur une autre de vos machines nécessite Claude Code v2.1.225 ou ultérieur et une cible qui [apparaît dans la liste](#see-which-sessions-claude-can-reach).162Démarrer une conversation avec une session sur une autre de vos machines nécessite Claude Code v2.1.225 ou ultérieur et une cible qui [apparaît dans la liste](#see-which-sessions-claude-can-reach).

162 163 

163Vous pouvez envoyer un message à une session affichée comme `offline` dans [la liste](#see-which-sessions-claude-can-reach), une dont la connexion Remote Control a chuté. L'envoi passe, mais le message n'arrive qu'après que la machine de cette session se reconnecte.164La ligne d'une session dans [la liste](#see-which-sessions-claude-can-reach) peut afficher une condition qui change ce qui se passe quand Claude envoie un message à cette session :

165 

166* **`offline`** : la connexion Remote Control de cette session a chuté. Le message passe, mais n'arrive qu'après que la machine de cette session se reconnecte.

167* **`can't receive cross-session messages (off in that session)`** : la messagerie [n'est pas disponible](#availability) dans cette session, ou sa valeur [`crossSessionInbound`](/docs/fr/settings-reference#crosssessioninbound) est `refuse`. Claude Code refuse un message vers cette session avant que le message ne quitte cette machine. Le résultat sous l'appel `SendMessage` de Claude commence par `Not sent` et nomme la raison. Une fois la cause corrigée dans cette session, une liste ultérieure n'affiche plus cette condition, et Claude peut envoyer un message à cette session.

164 168 

165Une session à l'intérieur d'un conteneur et une session sur l'hôte ne peuvent pas se joindre. 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 joindre.169Une session à l'intérieur d'un conteneur et une session sur l'hôte ne peuvent pas se joindre. 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 joindre.

166 170 


345 * **Session cloud manquante** : une session cloud n'apparaît que lorsque cette session est connectée à [Remote Control](/docs/fr/remote-control).349 * **Session cloud manquante** : une session cloud n'apparaît que lorsque cette session est connectée à [Remote Control](/docs/fr/remote-control).

346 * **Session sur une autre machine manquante** : une session sur une autre de vos machines n'apparaît que lorsqu'elle s'exécute avec [Remote Control](/docs/fr/remote-control) et que cette session est également connectée.350 * **Session sur une autre machine manquante** : une session sur une autre de vos machines n'apparaît que lorsqu'elle s'exécute avec [Remote Control](/docs/fr/remote-control) et que cette session est également connectée.

347 * **Session sur une autre machine `offline`** : un message à une session listée comme `offline` passe, mais [n'arrive que lorsque la machine de cette session se reconnecte](#message-sessions-on-other-machines).351 * **Session sur une autre machine `offline`** : un message à une session listée comme `offline` passe, mais [n'arrive que lorsque la machine de cette session se reconnecte](#message-sessions-on-other-machines).

352 * **Session cloud ou sur une autre machine `can't receive cross-session messages`** : un message à une session listée avec cette condition [ne quitte pas cette machine](#message-sessions-on-other-machines), et le résultat sous `SendMessage` commence par `Not sent`.

348 * **Session cloud ou sur une autre machine plus ancienne manquante** : Claude Code lit ces listes de sessions du plus récent au plus ancien et s'arrête après un nombre limité de pages, donc Claude ne peut pas contacter une session qui a glissé au-delà d'elles par nom.353 * **Session cloud ou sur une autre machine plus ancienne manquante** : Claude Code lit ces listes de sessions du plus récent au plus ancien et s'arrête après un nombre limité de pages, donc Claude ne peut pas contacter une session qui a glissé au-delà d'elles par nom.

349 354 

350Dans une session avec messagerie, `/status` affiche également une ligne `Peer address` avec l'adresse de la boîte de réception de la session, ou `unavailable` et la raison lorsque Claude Code [n'a pas pu configurer une boîte de réception](#the-sessions-inbox-socket).355Dans une session avec messagerie, `/status` affiche également une ligne `Peer address` avec l'adresse de la boîte de réception de la session, ou `unavailable` et la raison lorsque Claude Code [n'a pas pu configurer une boîte de réception](#the-sessions-inbox-socket).

Details

65 Vérifier les hooks65 Vérifier les hooks

66</h2>66</h2>

67 67 

68Exécutez `/hooks` pour lister chaque hook enregistré pour la session actuelle, groupé par événement. Si un hook que vous avez défini n'apparaît pas, il n'est pas en cours de lecture : les hooks vont sous la clé `"hooks"` dans un fichier de paramètres, pas dans un fichier autonome.68Exécutez `/hooks` pour lister chaque hook enregistré pour la session actuelle, groupé par événement. Si un hook que vous avez défini n'apparaît pas, Claude Code ne l'a pas chargé. Vérifiez les causes suivantes :

69 

70* Le hook est défini dans un fichier autonome. Les hooks vont sous la clé `"hooks"` dans un [fichier de paramètres](/docs/fr/settings#settings-files).

71* La valeur `matcher` est un tableau au lieu d'une chaîne unique. Claude Code liste l'entrée comme un paramètre invalide lorsque vous démarrez une session interactive et dans `claude doctor`. Si le tableau se trouve sous `PreToolUse` ou `PermissionRequest`, aucun des autres hooks de ce fichier ne se charge non plus.

69 72 

70Si le hook apparaît mais ne se déclenche pas, le matcher est la cause habituelle. Vérifiez-le pour ces erreurs :73Si le hook apparaît mais ne se déclenche pas, le matcher est la cause habituelle. Vérifiez-le pour ces erreurs :

71 74 

72* Le champ `matcher` est une chaîne unique qui utilise `|` pour correspondre à plusieurs noms d'outils, par exemple `"Edit|Write"`. Un séparateur `,` est équivalent, donc `"Edit,Write"` correspond aux mêmes outils. Avant v2.1.191, une virgule passait à l'évaluation regex et le matcher ne correspondait jamais, donc utilisez `|` si vous n'êtes pas sur v2.1.191 encore.75* Le champ `matcher` est une chaîne unique qui utilise `|` pour correspondre à plusieurs noms d'outils, par exemple `"Edit|Write"`. Un séparateur `,` est équivalent, donc `"Edit,Write"` correspond aux mêmes outils. Avant v2.1.191, une virgule passait à l'évaluation regex et le matcher ne correspondait jamais, donc utilisez `|` si vous n'êtes pas sur v2.1.191 encore.

73* Un nom d'outil mal orthographié produit un matcher qui ne correspond à rien, donc le hook échoue silencieusement.76* 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.

75 77 

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.78Lorsque 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 79 

Details

103 103 

104Si apt signale `E: Unsupported file ./claude-desktop_*.deb given on commandline`, le motif ne correspondait pas à un fichier `.deb` dans le répertoire courant. Confirmez que le téléchargement s'est terminé, puis exécutez à nouveau la commande à partir du répertoire qui contient le fichier.104Si apt signale `E: Unsupported file ./claude-desktop_*.deb given on commandline`, le motif ne correspondait pas à un fichier `.deb` dans le répertoire courant. Confirmez que le téléchargement s'est terminé, puis exécutez à nouveau la commande à partir du répertoire qui contient le fichier.

105 105 

106L'installation du `.deb` enregistre également le référentiel apt d'Anthropic à `/etc/apt/sources.list.d/claude-desktop.list`, donc les futures mises à jour arrivent avec les [mises à jour régulières des paquets](#update) de votre système.106Le `.deb` contient la clé de signature d'Anthropic et l'installe à `/usr/share/keyrings/claude-desktop-archive-keyring.asc`, vous n'avez donc pas besoin de télécharger la clé vous-même. Sauf si vous avez désactivé l'enregistrement avec `CLAUDE_DESKTOP_ADD_REPO`, le paquet enregistre également le dépôt apt à `/etc/apt/sources.list.d/claude-desktop.list`, donc les futures mises à jour arrivent avec les [mises à jour régulières des paquets](#update) de votre système.

107 107 

108<h2 id="update">108<h2 id="update">

109 Mise à jour109 Mise à jour

env-vars.md +5 −3

Details

205| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | Délai d'expiration de stagnation en millisecondes pour les sous-agents. Par défaut `600000` (10 minutes) ; si vous augmentez `CLAUDE_STREAM_IDLE_TIMEOUT_MS` tandis que le chien de garde de flux est activé, la valeur par défaut augmente avec lui, comme [Gérer les réponses API lentes ou bloquées](/docs/fr/agent-sdk/typescript#handle-slow-or-stalled-api-responses) le décrit. Le minuteur se réinitialise à chaque événement de progression en continu ; si aucune progression n'arrive dans la fenêtre, Claude Code interrompt le sous-agent et signale la stagnation au parent |205| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | Délai d'expiration de stagnation en millisecondes pour les sous-agents. Par défaut `600000` (10 minutes) ; si vous augmentez `CLAUDE_STREAM_IDLE_TIMEOUT_MS` tandis que le chien de garde de flux est activé, la valeur par défaut augmente avec lui, comme [Gérer les réponses API lentes ou bloquées](/docs/fr/agent-sdk/typescript#handle-slow-or-stalled-api-responses) le décrit. Le minuteur se réinitialise à chaque événement de progression en continu ; si aucune progression n'arrive dans la fenêtre, Claude Code interrompt le sous-agent et signale la stagnation au parent |

206| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Définissez le pourcentage (1-100) de la fenêtre de compaction automatique auquel la compaction automatique se déclenche. Utilisez des valeurs plus basses comme `50` pour compacter plus tôt ; la variable ne peut pas augmenter le seuil, donc les valeurs au-dessus du pourcentage par défaut sont ignorées. Elle s'applique uniquement aux sessions qui [compactent avant la limite de contexte du modèle](/docs/fr/model-config#context-window-and-auto-compaction). S'applique aux conversations principales et aux sous-agents |206| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Définissez le pourcentage (1-100) de la fenêtre de compaction automatique auquel la compaction automatique se déclenche. Utilisez des valeurs plus basses comme `50` pour compacter plus tôt ; la variable ne peut pas augmenter le seuil, donc les valeurs au-dessus du pourcentage par défaut sont ignorées. Elle s'applique uniquement aux sessions qui [compactent avant la limite de contexte du modèle](/docs/fr/model-config#context-window-and-auto-compaction). S'applique aux conversations principales et aux sous-agents |

207| `CLAUDE_AUTO_BACKGROUND_TASKS` | Définissez sur `1` pour forcer l'activation de la mise en arrière-plan automatique des tâches d'agent longues. Lorsqu'elle est activée, les sous-agents sont déplacés en arrière-plan après environ deux minutes d'exécution. Active également [la mise en arrière-plan automatique des appels d'outils MCP longs](/docs/fr/mcp#automatic-backgrounding-of-long-tool-calls) en mode non interactif sur Claude Code v2.1.212 ou ultérieur |207| `CLAUDE_AUTO_BACKGROUND_TASKS` | Définissez sur `1` pour forcer l'activation de la mise en arrière-plan automatique des tâches d'agent longues. Lorsqu'elle est activée, les sous-agents sont déplacés en arrière-plan après environ deux minutes d'exécution. Active également [la mise en arrière-plan automatique des appels d'outils MCP longs](/docs/fr/mcp#automatic-backgrounding-of-long-tool-calls) en mode non interactif sur Claude Code v2.1.212 ou ultérieur |

208| `CLAUDE_AX_PREPARK_MS` | En [mode lecteur d'écran](/docs/fr/accessibility#what-your-screen-reader-hears), combien de millisecondes Claude Code attend, avec le curseur au début de la ligne, avant d'écrire une ligne nouvelle ou modifiée. Par défaut `50`. Définissez `0` pour écrire immédiatement. Claude Code limite l'attente à `5000`. Nécessite Claude Code v2.1.233 ou ultérieur |208| `CLAUDE_AX_PREPARK_MS` | En [mode lecteur d'écran](/docs/fr/accessibility), nombre de millisecondes que Claude Code attend avant d'écrire une ligne nouvelle ou modifiée. Par défaut `0`, donc Claude Code n'attend pas. Avant la v2.1.287, la valeur par défaut était `50`. Claude Code plafonne l'attente à `5000`. Nécessite Claude Code v2.1.233 ou ultérieur |

209| `CLAUDE_AX_SCREEN_READER` | Définissez sur `1` pour afficher une sortie conviviale pour les lecteurs d'écran : texte plat sans bordures décoratives ni animations. Définissez sur `0` pour forcer le mode lecteur d'écran désactivé même lorsque [`axScreenReader`](/docs/fr/settings-reference#axscreenreader) est `true`. Le [drapeau `--ax-screen-reader`](/docs/fr/cli-reference#cli-flags) a la priorité. Nécessite Claude Code v2.1.181 ou ultérieur |209| `CLAUDE_AX_SCREEN_READER` | Définissez sur `1` pour afficher une sortie conviviale pour les lecteurs d'écran : texte plat sans bordures décoratives ni animations. Définissez sur `0` pour forcer le mode lecteur d'écran désactivé même lorsque [`axScreenReader`](/docs/fr/settings-reference#axscreenreader) est `true`. Le [drapeau `--ax-screen-reader`](/docs/fr/cli-reference#cli-flags) a la priorité. Nécessite Claude Code v2.1.181 ou ultérieur |

210| `CLAUDE_AX_STARTUP_QUIET_MS` | En [mode lecteur d'écran](/docs/fr/accessibility), combien de millisecondes Claude Code maintient le premier rendu d'interface après la ligne de confirmation de démarrage, afin que votre lecteur d'écran puisse prononcer la ligne en entier avant que la nouvelle sortie ne l'interrompe. Par défaut `3000`. Définissez `0` pour afficher immédiatement. Claude Code limite la tenue à `600000` (10 minutes). Votre première frappe termine la tenue plus tôt. Nécessite Claude Code v2.1.217 ou ultérieur |210| `CLAUDE_AX_STARTUP_QUIET_MS` | En [mode lecteur d'écran](/docs/fr/accessibility), combien de millisecondes Claude Code maintient le premier rendu d'interface après la ligne de confirmation de démarrage, afin que votre lecteur d'écran puisse prononcer la ligne en entier avant que la nouvelle sortie ne l'interrompe. Par défaut `3000`. Définissez `0` pour afficher immédiatement. Claude Code limite la tenue à `600000` (10 minutes). Votre première frappe termine la tenue plus tôt. Nécessite Claude Code v2.1.217 ou ultérieur |

211| `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` | Retournez au répertoire de travail d'origine après chaque commande Bash ou PowerShell dans la session principale |211| `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` | Retournez au répertoire de travail d'origine après chaque commande Bash ou PowerShell dans la session principale |


245| `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN` | Définissez sur `1` pour désactiver le [rendu plein écran](/docs/fr/fullscreen) et utiliser le rendu d'écran principal classique. La conversation reste dans le défilement natif de votre terminal afin que `Cmd+f` et le mode copie tmux fonctionnent comme d'habitude. A la priorité sur `CLAUDE_CODE_NO_FLICKER` et le paramètre [`tui`](/docs/fr/settings-reference#tui). Vous pouvez également basculer avec `/tui default`. Ne s'applique pas aux sessions d'arrière-plan ouvertes à partir de [la vue agent](/docs/fr/agent-view), qui utilisent toujours le rendu plein écran |245| `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN` | Définissez sur `1` pour désactiver le [rendu plein écran](/docs/fr/fullscreen) et utiliser le rendu d'écran principal classique. La conversation reste dans le défilement natif de votre terminal afin que `Cmd+f` et le mode copie tmux fonctionnent comme d'habitude. A la priorité sur `CLAUDE_CODE_NO_FLICKER` et le paramètre [`tui`](/docs/fr/settings-reference#tui). Vous pouvez également basculer avec `/tui default`. Ne s'applique pas aux sessions d'arrière-plan ouvertes à partir de [la vue agent](/docs/fr/agent-view), qui utilisent toujours le rendu plein écran |

246| `CLAUDE_CODE_DISABLE_ARTIFACT` | Définissez sur `1` pour désactiver l'outil [Artifact](/docs/fr/artifacts), qui publie la sortie de session en tant que page web privée sur claude.ai. Une fois que vous le définissez, aucun fichier de paramètres n'active l'outil. Pour désactiver l'outil à partir d'un fichier de paramètres à la place, définissez [`enableArtifact`](/docs/fr/settings-reference#enableartifact) sur `false` ; la clé [`disableArtifact`](/docs/fr/settings-reference#disableartifact) dépréciée le désactive également |246| `CLAUDE_CODE_DISABLE_ARTIFACT` | Définissez sur `1` pour désactiver l'outil [Artifact](/docs/fr/artifacts), qui publie la sortie de session en tant que page web privée sur claude.ai. Une fois que vous le définissez, aucun fichier de paramètres n'active l'outil. Pour désactiver l'outil à partir d'un fichier de paramètres à la place, définissez [`enableArtifact`](/docs/fr/settings-reference#enableartifact) sur `false` ; la clé [`disableArtifact`](/docs/fr/settings-reference#disableartifact) dépréciée le désactive également |

247| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | Définissez sur `1` pour désactiver le traitement des pièces jointes. Les mentions de fichiers avec la syntaxe `@` sont envoyées en tant que texte simple au lieu d'être développées dans le contenu du fichier |247| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | Définissez sur `1` pour désactiver le traitement des pièces jointes. Les mentions de fichiers avec la syntaxe `@` sont envoyées en tant que texte simple au lieu d'être développées dans le contenu du fichier |

248| `CLAUDE_CODE_DISABLE_AUTH_REFRESH_LOCK` | Définissez sur `1` pour qu'un processus Claude Code exécute lui-même sa commande [`gcpAuthRefresh`](/docs/fr/settings-reference#gcpauthrefresh) ou [`awsAuthRefresh`](/docs/fr/settings-reference#awsauthrefresh) au lieu d'attendre qu'un autre processus l'exécute. Nécessite Claude Code v2.1.286 ou ultérieur |

248| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Définissez sur `1` pour désactiver la [mémoire automatique](/docs/fr/memory#auto-memory). Définissez sur `0` pour forcer la mémoire automatique activée même lorsque le mode `--bare` ou [`autoMemoryEnabled: false`](/docs/fr/settings-reference#automemoryenabled) la désactiverait autrement. Lorsqu'elle est désactivée, Claude ne crée ni ne charge les fichiers de mémoire automatique |249| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Définissez sur `1` pour désactiver la [mémoire automatique](/docs/fr/memory#auto-memory). Définissez sur `0` pour forcer la mémoire automatique activée même lorsque le mode `--bare` ou [`autoMemoryEnabled: false`](/docs/fr/settings-reference#automemoryenabled) la désactiverait autrement. Lorsqu'elle est désactivée, Claude ne crée ni ne charge les fichiers de mémoire automatique |

249| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Définissez sur `1` pour désactiver toute la fonctionnalité de tâche d'arrière-plan, y compris le paramètre `run_in_background` sur les outils Bash et sous-agent, la mise en arrière-plan automatique et le raccourci Ctrl+B |250| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Définissez sur `1` pour désactiver toute la fonctionnalité de tâche d'arrière-plan, y compris le paramètre `run_in_background` sur les outils Bash et sous-agent, la mise en arrière-plan automatique et le raccourci Ctrl+B |

250| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_DEFAULT` | Définissez sur `1` pour empêcher Claude Code de traiter une réponse en continu [Amazon Bedrock](/docs/fr/amazon-bedrock) avec un en-tête `Content-Type` manquant ou vide comme le flux d'événements binaires d'Amazon Bedrock. Par défaut, Claude Code suppose qu'une passerelle a supprimé l'en-tête d'une réponse autrement inmodifiée, afin que le décodage du corps et le flux continu fonctionnent. Définissez ceci uniquement pour une passerelle qui réemet également le flux en tant qu'événements envoyés par le serveur ; Claude Code lit alors le corps sans en-tête en tant qu'événements envoyés par le serveur à la place. Nécessite Claude Code v2.1.239 ou ultérieur |251| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_DEFAULT` | Définissez sur `1` pour empêcher Claude Code de traiter une réponse en continu [Amazon Bedrock](/docs/fr/amazon-bedrock) avec un en-tête `Content-Type` manquant ou vide comme le flux d'événements binaires d'Amazon Bedrock. Par défaut, Claude Code suppose qu'une passerelle a supprimé l'en-tête d'une réponse autrement inmodifiée, afin que le décodage du corps et le flux continu fonctionnent. Définissez ceci uniquement pour une passerelle qui réemet également le flux en tant qu'événements envoyés par le serveur ; Claude Code lit alors le corps sans en-tête en tant qu'événements envoyés par le serveur à la place. Nécessite Claude Code v2.1.239 ou ultérieur |


256| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Définissez sur `1` pour empêcher le chargement de tous les fichiers mémoire CLAUDE.md dans le contexte, y compris les fichiers mémoire utilisateur, projet et automatique |257| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Définissez sur `1` pour empêcher le chargement de tous les fichiers mémoire CLAUDE.md dans le contexte, y compris les fichiers mémoire utilisateur, projet et automatique |

257| `CLAUDE_CODE_DISABLE_CRON` | Définissez sur `1` pour désactiver les [tâches planifiées](/docs/fr/scheduled-tasks). La compétence `/loop` et les outils cron deviennent indisponibles et toutes les tâches déjà planifiées cessent de se déclencher, y compris les tâches qui s'exécutent déjà au milieu de la session |258| `CLAUDE_CODE_DISABLE_CRON` | Définissez sur `1` pour désactiver les [tâches planifiées](/docs/fr/scheduled-tasks). La compétence `/loop` et les outils cron deviennent indisponibles et toutes les tâches déjà planifiées cessent de se déclencher, y compris les tâches qui s'exécutent déjà au milieu de la session |

258| `CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT` | Définissez sur `1` pour désactiver la limite de temps sur les invites de [suppression de chemin critique](/docs/fr/permission-modes#critical-paths). En mode `auto`, Claude Code envoie alors ces suppressions au classificateur à la place, et en mode `bypassPermissions`, l'invite attend votre réponse. Définissez-le dans l'environnement qui lance Claude Code, car Claude Code ignore une copie livrée via un bloc `env` de paramètres. Nécessite Claude Code v2.1.281 ou ultérieur |259| `CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT` | Définissez sur `1` pour désactiver la limite de temps sur les invites de [suppression de chemin critique](/docs/fr/permission-modes#critical-paths). En mode `auto`, Claude Code envoie alors ces suppressions au classificateur à la place, et en mode `bypassPermissions`, l'invite attend votre réponse. Définissez-le dans l'environnement qui lance Claude Code, car Claude Code ignore une copie livrée via un bloc `env` de paramètres. Nécessite Claude Code v2.1.281 ou ultérieur |

259| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Définissez sur `1` pour supprimer les en-têtes de requête `anthropic-beta` spécifiques à Anthropic et les champs de schéma d'outil bêta (comme `defer_loading` et `eager_input_streaming`) des requêtes API. Utilisez ceci lorsqu'une passerelle proxy rejette les requêtes avec des erreurs comme « Unexpected value(s) for the `anthropic-beta` header » ou « Extra inputs are not permitted ». Les champs standard (`name`, `description`, `input_schema`, `cache_control`) sont conservés. [La recherche d'outils MCP](/docs/fr/mcp#scale-with-mcp-tool-search) est désactivée et tous les outils MCP se chargent en amont, même lorsque vous définissez `ENABLE_TOOL_SEARCH`. Sur Claude Code v2.1.227 ou ultérieur, [les paramètres gérés](/docs/fr/managed-settings) peuvent garder la recherche d'outils activée. [Désactiver les capacités de pré-version](/docs/fr/llm-gateway-protocol#disable-pre-release-capabilities) couvre où le remplacement s'applique |260| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Définissez sur `1` pour retirer des requêtes API les en-têtes de requête `anthropic-beta` en préversion, les champs de corps qui leur sont associés et les champs bêta de schéma d'outil tels que `defer_loading` et `eager_input_streaming`. Utilisez-la lorsqu'une passerelle proxy rejette les requêtes avec une erreur `Unexpected value(s)` pour l'en-tête `anthropic-beta` ou une erreur `Extra inputs are not permitted`. [Désactiver les capacités en préversion](/docs/fr/llm-gateway-protocol#disable-pre-release-capabilities) liste ce que la variable supprime, y compris [MCP Tool Search](/docs/fr/mcp#scale-with-mcp-tool-search), et ce que Claude Code continue d'envoyer |

260| `CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS` | Définissez sur `1` pour désactiver les [sous-agents Explore et Plan intégrés](/docs/fr/sub-agents#built-in-subagents). Claude explore avec ses outils de recherche ou le sous-agent à usage général à la place, et [le mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode) lit les fichiers directement plutôt que de lancer les agents Explore et Plan. Les sous-agents personnalisés nommés `Explore` ou `Plan` ne sont pas affectés. Pour supprimer tous les types de sous-agents intégrés dans le SDK Agent ou le mode non interactif, utilisez `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` à la place. Nécessite Claude Code v2.1.198 ou ultérieur |261| `CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS` | Définissez sur `1` pour désactiver les [sous-agents Explore et Plan intégrés](/docs/fr/sub-agents#built-in-subagents). Claude explore avec ses outils de recherche ou le sous-agent à usage général à la place, et [le mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode) lit les fichiers directement plutôt que de lancer les agents Explore et Plan. Les sous-agents personnalisés nommés `Explore` ou `Plan` ne sont pas affectés. Pour supprimer tous les types de sous-agents intégrés dans le SDK Agent ou le mode non interactif, utilisez `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` à la place. Nécessite Claude Code v2.1.198 ou ultérieur |

261| `CLAUDE_CODE_DISABLE_FAST_MODE` | Définissez sur `1` pour désactiver le [mode rapide](/docs/fr/fast-mode) |262| `CLAUDE_CODE_DISABLE_FAST_MODE` | Définissez sur `1` pour désactiver le [mode rapide](/docs/fr/fast-mode) |

262| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Définissez sur `1` pour désactiver les sondages de qualité de session « How is Claude doing? ». Les sondages sont également désactivés lorsque `DISABLE_TELEMETRY`, `DO_NOT_TRACK` ou `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` est défini, sauf si `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` se réinscrit. Pour définir un taux d'échantillonnage au lieu de désactiver complètement, utilisez le paramètre [`feedbackSurveyRate`](/docs/fr/settings-reference#feedbacksurveyrate). Voir [Sondages de qualité de session](/docs/fr/data-usage#session-quality-surveys) |263| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Définissez sur `1` pour désactiver les sondages de qualité de session « How is Claude doing? ». Les sondages sont également désactivés lorsque `DISABLE_TELEMETRY`, `DO_NOT_TRACK` ou `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` est défini, sauf si `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` se réinscrit. Pour définir un taux d'échantillonnage au lieu de désactiver complètement, utilisez le paramètre [`feedbackSurveyRate`](/docs/fr/settings-reference#feedbacksurveyrate). Voir [Sondages de qualité de session](/docs/fr/data-usage#session-quality-surveys) |


362| `CLAUDE_CODE_REMOTE` | Défini automatiquement sur `true` lorsque Claude Code s'exécute en tant que [session cloud](/docs/fr/claude-code-on-the-web). Lisez ceci à partir d'un crochet ou d'un script de configuration pour détecter si vous êtes dans une session cloud |363| `CLAUDE_CODE_REMOTE` | Défini automatiquement sur `true` lorsque Claude Code s'exécute en tant que [session cloud](/docs/fr/claude-code-on-the-web). Lisez ceci à partir d'un crochet ou d'un script de configuration pour détecter si vous êtes dans une session cloud |

363| `CLAUDE_CODE_REMOTE_SESSION_ID` | Défini automatiquement dans les [sessions cloud](/docs/fr/claude-code-on-the-web) à l'ID de la session actuelle. Lisez ceci pour construire un lien vers la transcription de la session. Voir [Lier la sortie à la session](/docs/fr/cloud-environments#link-output-back-to-the-session) |364| `CLAUDE_CODE_REMOTE_SESSION_ID` | Défini automatiquement dans les [sessions cloud](/docs/fr/claude-code-on-the-web) à l'ID de la session actuelle. Lisez ceci pour construire un lien vers la transcription de la session. Voir [Lier la sortie à la session](/docs/fr/cloud-environments#link-output-back-to-the-session) |

364| `CLAUDE_CODE_RESTRICTED` | Définissez sur `1` pour démarrer la session en mode restreint, identique à la transmission de [`--restricted`](/docs/fr/cli-reference#cli-flags). Claude Code ignore cette variable dans un bloc `env` du fichier de paramètres. Nécessite Claude Code v2.1.248 ou ultérieur |365| `CLAUDE_CODE_RESTRICTED` | Définissez sur `1` pour démarrer la session en mode restreint, identique à la transmission de [`--restricted`](/docs/fr/cli-reference#cli-flags). Claude Code ignore cette variable dans un bloc `env` du fichier de paramètres. Nécessite Claude Code v2.1.248 ou ultérieur |

365| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Définissez sur `1` pour reprendre automatiquement si la session précédente s'est terminée au milieu d'un tour. Utilisé en mode SDK afin que le modèle continue sans que le SDK ait besoin de renvoyer l'invite. Pour désactiver ceci, supprimez la variable ou définissez-la sur `0`. Avant v2.1.221, Claude Code ignorait `0` et les autres valeurs fausses, si bien que la définition de `0` déclenchait toujours la reprise en mode non interactif et que la suppression de la variable était le seul moyen de la désactiver |366| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Définir sur `1` pour reprendre automatiquement si la session précédente s'est terminée en plein tour. Utilisée en mode SDK pour que le modèle continue sans que le SDK ait besoin de renvoyer le prompt. Pour la désactiver, supprimez la variable ou définissez-la sur `0`. Pour le panneau de chat VS Code, voir [Poursuivre les conversations après un rechargement](/docs/fr/vs-code#continue-conversations-after-a-reload) |

366| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | Âge maximum en millisecondes du dernier message de transcription pour qu'une session qui s'est terminée au milieu d'un tour continue automatiquement à la reprise. Lorsque le dernier message est plus ancien que cette limite, Claude Code ignore la reprise automatique `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` et son message de continuation `CLAUDE_CODE_RESUME_PROMPT`, et la session démarre inactive afin que vous continuiez explicitement. Non défini ou `0` signifie aucune limite, sauf qu'un tour dont la dernière requête a échoué avec une erreur API reprend uniquement tandis que cette erreur a moins de six heures. Une valeur positive limite chaque tour, y compris ceux ; une valeur négative ou non numérique applique une limite d'une heure. Les scripts de génération pour les agents de longue durée peuvent définir ceci afin qu'une redémarrage par rapport à une transcription ancienne ne réexécute pas une invite obsolète. Claude Code définit lui-même une limite d'une heure lorsqu'il redémarre une session de [vue agent](/docs/fr/agent-view) qui a hérité de sa conversation d'une session interactive. Nécessite Claude Code v2.1.211 ou ultérieur |367| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | Âge maximum en millisecondes du dernier message de transcription pour qu'une session qui s'est terminée au milieu d'un tour continue automatiquement à la reprise. Lorsque le dernier message est plus ancien que cette limite, Claude Code ignore la reprise automatique `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` et son message de continuation `CLAUDE_CODE_RESUME_PROMPT`, et la session démarre inactive afin que vous continuiez explicitement. Non défini ou `0` signifie aucune limite, sauf qu'un tour dont la dernière requête a échoué avec une erreur API reprend uniquement tandis que cette erreur a moins de six heures. Une valeur positive limite chaque tour, y compris ceux ; une valeur négative ou non numérique applique une limite d'une heure. Les scripts de génération pour les agents de longue durée peuvent définir ceci afin qu'une redémarrage par rapport à une transcription ancienne ne réexécute pas une invite obsolète. Claude Code définit lui-même une limite d'une heure lorsqu'il redémarre une session de [vue agent](/docs/fr/agent-view) qui a hérité de sa conversation d'une session interactive. Nécessite Claude Code v2.1.211 ou ultérieur |

367| `CLAUDE_CODE_RESUME_PROMPT` | Remplacez le message de continuation que Claude Code envoie à Claude lorsque `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` continue un tour interrompu au lieu de renvoyer son invite, ou lorsque vous reprenez un [appel d'outil différé](/docs/fr/hooks#defer-a-tool-call-for-later) avec `-p`. Par défaut `Continue from where you left off.`. Une chaîne vide utilise la valeur par défaut |368| `CLAUDE_CODE_RESUME_PROMPT` | Remplacez le message de continuation que Claude Code envoie à Claude lorsque `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` continue un tour interrompu au lieu de renvoyer son invite, ou lorsque vous reprenez un [appel d'outil différé](/docs/fr/hooks#defer-a-tool-call-for-later) avec `-p`. Par défaut `Continue from where you left off.`. Une chaîne vide utilise la valeur par défaut |

368| `CLAUDE_CODE_RETRY_WATCHDOG` | Définissez sur `1` pour les sessions sans surveillance telles que les harnais d'évaluation, les travaux CI ou les travailleurs distants. Réessaye les erreurs de capacité `429` et `529` indéfiniment au lieu d'échouer après `CLAUDE_CODE_MAX_RETRIES` tentatives. Claude Code échoue immédiatement lorsqu'une requête à vitesse standard reçoit un `429` qui signale une limite de dépenses ou des crédits d'utilisation épuisés, même un de la [limite de dépenses de passerelle](/docs/fr/errors#spend-limit-reached) qui se réinitialise selon un calendrier. Avant v2.1.239, le chien de garde réessayait ceux-ci indéfiniment. Pour les requêtes en mode rapide, voir [Gérer les limites de débit](/docs/fr/fast-mode#handle-rate-limits). Le chien de garde recule jusqu'à 5 minutes entre les tentatives, ou jusqu'à ce que la limite se réinitialise lorsque la réponse porte un temps de réinitialisation de limite de débit, afin qu'une session qui atteint une limite d'utilisation attende la fenêtre restante. Sur v2.1.199 ou ultérieur, il augmente également le nombre de tentatives par défaut pour les autres erreurs transitoires, telles que les erreurs de serveur, les délais d'expiration et les connexions abandonnées, à 300, environ trois heures de recul, et supprime le plafond de 15 sur `CLAUDE_CODE_MAX_RETRIES` si vous définissez explicitement cette variable. Nécessite Claude Code v2.1.186 ou ultérieur |369| `CLAUDE_CODE_RETRY_WATCHDOG` | Définissez sur `1` pour les sessions sans surveillance telles que les harnais d'évaluation, les travaux CI ou les travailleurs distants. Réessaye les erreurs de capacité `429` et `529` indéfiniment au lieu d'échouer après `CLAUDE_CODE_MAX_RETRIES` tentatives. Claude Code échoue immédiatement lorsqu'une requête à vitesse standard reçoit un `429` qui signale une limite de dépenses ou des crédits d'utilisation épuisés, même un de la [limite de dépenses de passerelle](/docs/fr/errors#spend-limit-reached) qui se réinitialise selon un calendrier. Avant v2.1.239, le chien de garde réessayait ceux-ci indéfiniment. Pour les requêtes en mode rapide, voir [Gérer les limites de débit](/docs/fr/fast-mode#handle-rate-limits). Le chien de garde recule jusqu'à 5 minutes entre les tentatives, ou jusqu'à ce que la limite se réinitialise lorsque la réponse porte un temps de réinitialisation de limite de débit, afin qu'une session qui atteint une limite d'utilisation attende la fenêtre restante. Sur v2.1.199 ou ultérieur, il augmente également le nombre de tentatives par défaut pour les autres erreurs transitoires, telles que les erreurs de serveur, les délais d'expiration et les connexions abandonnées, à 300, environ trois heures de recul, et supprime le plafond de 15 sur `CLAUDE_CODE_MAX_RETRIES` si vous définissez explicitement cette variable. Nécessite Claude Code v2.1.186 ou ultérieur |


543* Synchroniser les [compétences](/docs/fr/skills#where-synced-skills-load) et les [plugins](/docs/fr/plugins/loading#synced-plugins) activés pour votre compte claude.ai dans vos sessions de terminal544* Synchroniser les [compétences](/docs/fr/skills#where-synced-skills-load) et les [plugins](/docs/fr/plugins/loading#synced-plugins) activés pour votre compte claude.ai dans vos sessions de terminal

544* Utiliser [l'outil advisor](/docs/fr/advisor#requirements)545* Utiliser [l'outil advisor](/docs/fr/advisor#requirements)

545* Lire ou répondre aux [commentaires sur un artifact](/docs/fr/artifacts#collect-comments-on-an-artifact)546* Lire ou répondre aux [commentaires sur un artifact](/docs/fr/artifacts#collect-comments-on-an-artifact)

547* Faire en sorte que Claude lise [l'artefact public d'une autre organisation](/docs/fr/artifacts#read-an-artifact-shared-with-you)

546* Faire en sorte que Claude Code sonde les serveurs connecteurs claude.ai pour [la révision du protocole MCP 2026-07-28](/docs/fr/mcp#mcp-client-runtimes) sauf si vous définissez `MCP_PROTOCOL_NEGOTIATION=auto`548* Faire en sorte que Claude Code sonde les serveurs connecteurs claude.ai pour [la révision du protocole MCP 2026-07-28](/docs/fr/mcp#mcp-client-runtimes) sauf si vous définissez `MCP_PROTOCOL_NEGOTIATION=auto`

547* Obtenir l'[outil PowerShell](/docs/fr/tools-reference#powershell-tool) par défaut pour les comptes claude.ai et Console sur Windows avec Git Bash installé ; Claude Code achemine les commandes shell via Git Bash sauf si vous définissez `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`. Sur Windows sans Git Bash, l'outil reste activé549* Obtenir l'[outil PowerShell](/docs/fr/tools-reference#powershell-tool) par défaut pour les comptes claude.ai et Console sur Windows avec Git Bash installé ; Claude Code achemine les commandes shell via Git Bash sauf si vous définissez `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`. Sur Windows sans Git Bash, l'outil reste activé

548* Obtenir les [retours rédigés par Claude](/docs/fr/tools-reference#sendfeedback-tool-behavior), que Claude Code active via un flag récupéré550* Obtenir les [retours rédigés par Claude](/docs/fr/tools-reference#sendfeedback-tool-behavior), que Claude Code active via un flag récupéré

errors.md +704 −638

Details

75| `Remote Control stopped — the app running this session is now signed in to a different Claude account` | [Authentification](#remote-control-stopped-because-the-app-running-the-session-signed-out-or-switched-accounts) |75| `Remote Control stopped — the app running this session is now signed in to a different Claude account` | [Authentification](#remote-control-stopped-because-the-app-running-the-session-signed-out-or-switched-accounts) |

76| `Remote Control stopped — the app running this session is signed out of Claude` | [Authentification](#remote-control-stopped-because-the-app-running-the-session-signed-out-or-switched-accounts) |76| `Remote Control stopped — the app running this session is signed out of Claude` | [Authentification](#remote-control-stopped-because-the-app-running-the-session-signed-out-or-switched-accounts) |

77| `Couldn't verify your organization's policy for remote control` | [Dépannage de Remote Control](/docs/fr/remote-control#couldnt-verify-your-organizations-policy-for-remote-control) |77| `Couldn't verify your organization's policy for remote control` | [Dépannage de Remote Control](/docs/fr/remote-control#couldnt-verify-your-organizations-policy-for-remote-control) |

78| `Remote Control is disabled by your organization's policy` | [Dépannage de Remote Control](/docs/fr/remote-control#remote-control-is-disabled-by-your-organizations-policy) |

79| `Remote Control was turned off by your organization's policy` | [Dépannage de Remote Control](/docs/fr/remote-control#remote-control-was-turned-off-by-your-organizations-policy) |

78| `OAuth token revoked` / `OAuth token has expired` | [Authentification](#oauth-token-revoked-or-expired) |80| `OAuth token revoked` / `OAuth token has expired` | [Authentification](#oauth-token-revoked-or-expired) |

81| `Failed to authenticate: OAuth token revoked` | [Authentification](#oauth-token-revoked-or-expired) |

82| `Your account does not have access to Claude. Please login again or contact your administrator.` | [Authentification](#oauth-token-revoked-or-expired) |

79| `API Error: 401 Invalid authentication credentials` | [Authentification](#api-error-401-invalid-authentication-credentials) |83| `API Error: 401 Invalid authentication credentials` | [Authentification](#api-error-401-invalid-authentication-credentials) |

80| `Login expired · Please run /login` | [Authentification](#login-expired) |84| `Login expired · Please run /login` | [Authentification](#login-expired) |

81| `Failed to start OAuth callback server` | [Authentification](#failed-to-start-oauth-callback-server) |85| `Failed to start OAuth callback server` | [Authentification](#failed-to-start-oauth-callback-server) |


186| `The connection dropped while downloading the update` | [Erreurs d'installation](#the-connection-dropped-while-downloading-the-update) |190| `The connection dropped while downloading the update` | [Erreurs d'installation](#the-connection-dropped-while-downloading-the-update) |

187| `Download timed out: exceeded the total deadline` | [Erreurs d'installation](#the-connection-dropped-while-downloading-the-update) |191| `Download timed out: exceeded the total deadline` | [Erreurs d'installation](#the-connection-dropped-while-downloading-the-update) |

188| `--bg and --print conflict` | [Erreurs de ligne de commande](#conflict-between-bg-and-print) |192| `--bg and --print conflict` | [Erreurs de ligne de commande](#conflict-between-bg-and-print) |

193| `Error: Cannot use both --append-subagent-system-prompt and --append-subagent-system-prompt-file. Please use only one.` | [Erreurs de ligne de commande](#conflict-between-a-system-prompt-flag-and-its-file-form) |

189| `Cloud sessions cannot be created from a --restricted session` | [Erreurs de ligne de commande](#cloud-sessions-cannot-be-created-from-a-restricted-session) |194| `Cloud sessions cannot be created from a --restricted session` | [Erreurs de ligne de commande](#cloud-sessions-cannot-be-created-from-a-restricted-session) |

190| `Cloud sessions are disabled by your organization's policy` | [Erreurs de ligne de commande](#cloud-sessions-are-disabled-by-your-organizations-policy) |195| `Cloud sessions are disabled by your organization's policy` | [Erreurs de ligne de commande](#cloud-sessions-are-disabled-by-your-organizations-policy) |

191| `Couldn't verify your organization's policy for cloud sessions` | [Erreurs de ligne de commande](#cloud-sessions-are-disabled-by-your-organizations-policy) |196| `Couldn't verify your organization's policy for cloud sessions` | [Erreurs de ligne de commande](#cloud-sessions-are-disabled-by-your-organizations-policy) |


203| `Could not read Claude Code config` | [Erreurs de ligne de commande](#could-not-read-claude-code-config) |208| `Could not read Claude Code config` | [Erreurs de ligne de commande](#could-not-read-claude-code-config) |

204| `Could not import <server>: <reason>` | [Erreurs de ligne de commande](#could-not-import-a-server-from-claude-desktop) |209| `Could not import <server>: <reason>` | [Erreurs de ligne de commande](#could-not-import-a-server-from-claude-desktop) |

205| `Cannot add MCP server to scope: managed` | [Erreurs de ligne de commande](#cannot-add-mcp-server-to-the-managed-scope) |210| `Cannot add MCP server to scope: managed` | [Erreurs de ligne de commande](#cannot-add-mcp-server-to-the-managed-scope) |

211| `Cannot add MCP server: your organization's managed settings allow only MCP servers that plugins provide` | [Erreurs de ligne de commande](#cannot-add-mcp-server-when-managed-settings-allow-only-plugin-servers) |

206| `is Anthropic-hosted and doesn't support local OAuth` | [Erreurs de ligne de commande](#anthropic-hosted-and-doesnt-support-local-oauth) |212| `is Anthropic-hosted and doesn't support local OAuth` | [Erreurs de ligne de commande](#anthropic-hosted-and-doesnt-support-local-oauth) |

207| `Can't read .mcp.json: it isn't a regular file or is larger than 2097152 bytes` | [Erreurs de ligne de commande](#cant-read-mcp-json) |213| `Can't read .mcp.json: it isn't a regular file or is larger than 2097152 bytes` | [Erreurs de ligne de commande](#cant-read-mcp-json) |

208| `MCP server "<name>" was not saved to` / `was not removed from` | [Erreurs de ligne de commande](#mcp-server-was-not-saved-or-removed) |214| `MCP server "<name>" was not saved to` / `was not removed from` | [Erreurs de ligne de commande](#mcp-server-was-not-saved-or-removed) |


246| `Marketplace name impersonates an official Anthropic/Claude marketplace` | [Erreurs de plugin](#claude-code-refuses-the-marketplace-name) |252| `Marketplace name impersonates an official Anthropic/Claude marketplace` | [Erreurs de plugin](#claude-code-refuses-the-marketplace-name) |

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

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

255| `Marketplace "<name>" is added but ignored` | [Dépannage des plugins](/docs/fr/plugins/troubleshooting#marketplace-is-added-but-ignored) |

256| `Marketplace "<name>" is registered but was refused (see the debug log)` | [Dépannage des plugins](/docs/fr/plugins/troubleshooting#marketplace-is-added-but-ignored) |

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

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

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

252| `Plugin archive integrity check failed` | [Erreurs de plugin](#plugin-archive-integrity-check-failed) |260| `Plugin archive integrity check failed` | [Erreurs de plugin](#plugin-archive-integrity-check-failed) |

261| `An npm plugin source must name a registry package` | [Dépannage des plugins](/docs/fr/plugins/troubleshooting#an-npm-plugin-source-must-name-a-registry-package) |

253| `path escapes plugin directory` | [Erreurs de plugin](#path-escapes-plugin-directory) |262| `path escapes plugin directory` | [Erreurs de plugin](#path-escapes-plugin-directory) |

254| `path could not be checked` | [Erreurs de plugin](#path-could-not-be-checked) |263| `path could not be checked` | [Erreurs de plugin](#path-could-not-be-checked) |

255| `its marketplace entry path does not stay inside the marketplace directory` | [Erreurs de plugin](#marketplace-entry-path-does-not-stay-inside-the-marketplace-directory) |264| `its marketplace entry path does not stay inside the marketplace directory` | [Erreurs de plugin](#marketplace-entry-path-does-not-stay-inside-the-marketplace-directory) |


359 368 

360Claude Code réessaie ces défaillances :369Claude Code réessaie ces défaillances :

361 370 

362* Les erreurs serveur, les réponses surchargées et les délais d'attente de requête qui arrivent avant que l'une des réponses de Claude ne soit diffusée.371* Les erreurs serveur, les réponses surchargées et les délais d'attente de requête qui arrivent avant que la moindre partie de la réponse de Claude n'ait été envoyée en streaming.

363* Les connexions interrompues. Lorsqu'une connexion s'interrompt au milieu d'une requête avant que Claude n'ait complété une partie de sa réponse, y compris sa réflexion, Claude Code rémet la requête avec le même backoff et le tour continue, même si du texte avait déjà commencé à être diffusé. Lorsqu'elle s'interrompt après que Claude a terminé sa réflexion mais avant qu'il n'ait commencé un texte ou un appel d'outil, Claude Code rémet plutôt la requête jusqu'à deux fois en succession rapide, et termine le tour avec `Connection lost before a response was produced` si la connexion continue à s'interrompre à ce stade.372* Une erreur serveur ou une réponse surchargée qui arrive après que Claude a terminé sa réflexion mais avant qu'il n'ait commencé un texte ou un appel d'outil. Claude Code réessaie une erreur serveur à ce stade jusqu'à deux fois. Avant v2.1.284, Claude Code terminait le tour avec l'erreur à ce stade.

373* Les connexions interrompues. Lorsqu'une connexion s'interrompt au milieu d'une requête avant que Claude n'ait complété une partie de sa réponse, y compris sa réflexion, Claude Code renvoie la requête avec le même backoff et le tour continue, même si du texte avait déjà commencé à être envoyé en streaming. Lorsqu'elle s'interrompt après que Claude a terminé sa réflexion mais avant qu'il n'ait commencé un texte ou un appel d'outil, Claude Code renvoie plutôt la requête jusqu'à deux fois en succession rapide, et termine le tour avec `Connection lost before a response was produced` si la connexion continue à s'interrompre à ce stade.

364* Une connexion que Claude Code détecte comme ayant été interrompue par votre ordinateur qui s'endort au milieu d'une requête. Claude Code la compte comme une connexion interrompue selon les règles ci-dessus ; une fois que l'étiquette de tentative nomme la raison spécifique, elle lit `Connection lost while your computer was asleep`, et si le tour se termine après que Claude a terminé sa réflexion mais avant un texte ou un appel d'outil, le message lit `Your computer went to sleep before a response was produced`.374* Une connexion que Claude Code détecte comme ayant été interrompue par votre ordinateur qui s'endort au milieu d'une requête. Claude Code la compte comme une connexion interrompue selon les règles ci-dessus ; une fois que l'étiquette de tentative nomme la raison spécifique, elle lit `Connection lost while your computer was asleep`, et si le tour se termine après que Claude a terminé sa réflexion mais avant un texte ou un appel d'outil, le message lit `Your computer went to sleep before a response was produced`.

365* Un flux de réponse bloqué, lorsque les en-têtes de réponse sont arrivés mais aucune de la réponse de Claude n'est arrivée, ou lorsque Claude a terminé sa réflexion mais n'a pas commencé un texte ou un appel d'outil : Claude Code abandonne la connexion bloquée et rémet la requête au maximum une fois, en dehors du budget de 10 tentatives ci-dessus. Si la réponse se bloque une deuxième fois après que Claude a terminé sa réflexion mais avant un texte ou un appel d'outil, Claude Code termine le tour avec `The response stalled before a response was produced`.375* Un flux de réponse bloqué, lorsque les en-têtes de réponse sont arrivés mais aucune partie de la réponse de Claude n'est arrivée, ou lorsque Claude a terminé sa réflexion mais n'a pas commencé un texte ou un appel d'outil : Claude Code abandonne la connexion bloquée et renvoie la requête au maximum une fois, en dehors du budget de 10 tentatives ci-dessus. Si la réponse se bloque une deuxième fois après que Claude a terminé sa réflexion mais avant un texte ou un appel d'outil, Claude Code termine le tour avec `The response stalled before a response was produced`.

366* Une requête de diffusion à laquelle l'API ne répond jamais avec des en-têtes de réponse, sur une connexion où le [délai de premier octet s'exécute](/docs/fr/network-config#streaming-idle-watchdogs) : Claude Code l'abandonne à la date limite et le renvoie au maximum une fois par requête de modèle, dans le budget de tentatives, puis termine le tour avec [No response from API](#no-response-from-api) si cette tentative reste sans réponse aussi. Sur d'autres connexions, la requête attend `API_TIMEOUT_MS`. Lorsque vous définissez `CLAUDE_CODE_RETRY_WATCHDOG`, le plafond d'une tentative ne s'applique pas.376* Une requête en streaming à laquelle l'API ne répond jamais avec des en-têtes de réponse, sur une connexion où le [délai de premier octet s'exécute](/docs/fr/network-config#streaming-idle-watchdogs) : Claude Code l'abandonne à la date limite et la renvoie au maximum une fois par requête de modèle, dans le budget de tentatives, puis termine le tour avec [No response from API](#no-response-from-api) si cette tentative reste sans réponse aussi. Sur d'autres connexions, la requête attend `API_TIMEOUT_MS`. Lorsque vous définissez `CLAUDE_CODE_RETRY_WATCHDOG`, le plafond d'une tentative ne s'applique pas.

367* Les throttles 429 temporaires, mais pas le `429` de limite de dépenses d'une passerelle, qui n'est pas un throttle ; voir [Spend limit reached](#spend-limit-reached).377* Les throttles 429 temporaires, mais pas le `429` de limite de dépenses d'une passerelle, qui n'est pas un throttle ; voir [Spend limit reached](#spend-limit-reached).

368 * Lorsque vous êtes connecté avec un abonnement claude.ai, cela inclut les throttles 429 qui ne portent pas les en-têtes de quota de votre plan. Avant v2.1.199, Claude Code ne réessayait ces throttles que pour les connexions par clé API et Enterprise.378 * Lorsque vous êtes connecté avec un abonnement claude.ai, cela inclut les throttles 429 qui ne portent pas les en-têtes de quota de votre plan. Avant v2.1.199, Claude Code ne réessayait ces throttles que pour les connexions par clé API et Enterprise.

369* Une requête rejetée parce que l'entrée plus `max_tokens` dépasse la limite de contexte. La renvoyer inchangée échouerait de la même manière, donc Claude Code réessaie avec un `max_tokens` réduit, et arrête de réessayer et compacte à la place dans deux cas :379* Une requête rejetée parce que l'entrée plus `max_tokens` dépasse la limite de contexte. La renvoyer inchangée échouerait de la même manière, donc Claude Code réessaie avec un `max_tokens` réduit, et arrête de réessayer et compacte à la place dans deux cas :

370 * Lorsqu'aucune réduction ne peut tenir, par exemple lorsque la conversation elle-même remplit presque la fenêtre de contexte.380 * Lorsqu'aucune réduction ne peut tenir, par exemple lorsque la conversation elle-même remplit presque la fenêtre de contexte.

371 * Lorsqu'une tentative ne peut pas réduire davantage `max_tokens`. Avant v2.1.218, Claude Code pouvait renvoyer une requête réduite qui ne tenait toujours pas, par exemple lorsque le budget de réflexion étendue dépassait le contexte restant, jusqu'à ce que le budget de tentatives s'épuise.381 * Lorsqu'une tentative ne peut pas réduire davantage `max_tokens`. Avant v2.1.218, Claude Code pouvait renvoyer une requête réduite qui ne tenait toujours pas, par exemple lorsque le budget de réflexion étendue dépassait le contexte restant, jusqu'à ce que le budget de tentatives s'épuise.

372* Une credential Google Cloud expirée ou manquante sur [Google Cloud's Agent Platform](/docs/fr/google-vertex-ai), ou des credentials AWS qui ne se chargent pas sur votre machine. Claude Code rejette ses credentials en cache et réessaie jusqu'à deux fois, puis signale l'erreur pour que vous puissiez vous réauthentifier immédiatement, comme décrit sous [Could not load AWS or Google Cloud credentials](#could-not-load-aws-or-google-cloud-credentials). Avant v2.1.228, Claude Code réessayait une credential Google Cloud défaillante à travers le budget de tentatives complet avant d'afficher l'erreur.382* Des identifiants Google Cloud expirés ou manquants sur [Google Cloud's Agent Platform](/docs/fr/google-vertex-ai), ou des identifiants AWS qui ne se chargent pas sur votre machine. Claude Code rejette ses identifiants en cache et réessaie jusqu'à deux fois, puis signale l'erreur pour que vous puissiez vous réauthentifier immédiatement, comme décrit sous [Could not load AWS or Google Cloud credentials](#could-not-load-aws-or-google-cloud-credentials). Avant v2.1.228, Claude Code réessayait des identifiants Google Cloud défaillants à travers le budget de tentatives complet avant d'afficher l'erreur.

373* Un `401` ou `403` de l'API Anthropic, directement ou via une [passerelle LLM](/docs/fr/llm-gateway), tandis qu'un script [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper) fournit la credential. Claude Code réexécute le script et réessaie avec sa sortie fraîche, dans le budget de tentatives complet. Lorsque le script lui-même échoue à la réexécution, Claude Code affiche [Your apiKeyHelper script is failing](#your-apikeyhelper-script-is-failing) à la place.383* Un `401` ou `403` de l'API Anthropic, directement ou via une [passerelle LLM](/docs/fr/llm-gateway), tandis qu'un script [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper) fournit les identifiants. Claude Code réexécute le script et réessaie avec sa sortie fraîche, dans le budget de tentatives complet. Lorsque le script lui-même échoue à la réexécution, Claude Code affiche [Your apiKeyHelper script is failing](#your-apikeyhelper-script-is-failing) à la place.

374 384 

375Avant v2.1.227, `Connection lost before a response was produced` lisait `Connection closed while thinking, before producing a response` et `The response stalled before a response was produced` lisait `Response stalled while thinking, before producing a response`.385Avant v2.1.227, `Connection lost before a response was produced` lisait `Connection closed while thinking, before producing a response` et `The response stalled before a response was produced` lisait `Response stalled while thinking, before producing a response`.

376 386 

377Claude Code ne réessaie pas ces défaillances :387Claude Code ne réessaie pas ces défaillances :

378 388 

379* Une défaillance de validation de certificat TLS, telle qu'un proxy inspectant TLS, un bundle `NODE_EXTRA_CA_CERTS` manquant, ou un certificat expiré. Claude Code signale l'erreur à la première tentative, pour que vous puissiez corriger la configuration du certificat immédiatement ; voir [SSL certificate errors](#ssl-certificate-errors). Claude Code réessaie toujours les conditions TLS transitoires telles qu'un délai d'attente de poignée de main. Avant v2.1.199, Claude Code réessayait les défaillances de certificat à travers le budget de tentatives complet avant d'afficher l'erreur.389* Une défaillance de validation de certificat TLS, telle qu'un proxy inspectant TLS, un bundle `NODE_EXTRA_CA_CERTS` manquant, ou un certificat expiré. Claude Code signale l'erreur à la première tentative, pour que vous puissiez corriger la configuration du certificat immédiatement ; voir [SSL certificate errors](#ssl-certificate-errors). Claude Code réessaie toujours les conditions TLS transitoires telles qu'un délai d'attente de poignée de main. Avant v2.1.199, Claude Code réessayait les défaillances de certificat à travers le budget de tentatives complet avant d'afficher l'erreur.

380* Une erreur serveur, une connexion interrompue, ou un flux bloqué qui arrive après que Claude a complété un bloc de texte ou un appel d'outil, ou en a commencé un après avoir terminé sa réflexion, mais avant de terminer la réponse. Claude Code ne rémet pas la requête, car cela pourrait exécuter les mêmes appels d'outil deux fois. Il conserve ce que Claude a complété, exécute tous les appels d'outil que Claude a terminés, et continue le tour à partir de leurs résultats. Pour ce que vous voyez dans une session interactive et dans une session non-interactive, lisez [The response above may be incomplete](#the-response-above-may-be-incomplete). Avant v2.1.199, Claude Code rejetait la sortie partielle et signalait le tour entier comme une erreur lorsqu'une erreur serveur arrivait au milieu du flux.390* Une erreur serveur, une connexion interrompue, ou un flux bloqué qui arrive après que Claude a complété un bloc de texte ou un appel d'outil, ou en a commencé un après avoir terminé sa réflexion, mais avant de terminer la réponse. Claude Code ne renvoie pas la requête, car cela pourrait exécuter les mêmes appels d'outils deux fois. Il conserve ce que Claude a complété, exécute tous les appels d'outils que Claude a terminés, et continue le tour à partir de leurs résultats. Pour ce que vous voyez dans une session interactive et dans une session non-interactive, lisez [The response above may be incomplete](#the-response-above-may-be-incomplete). Avant v2.1.199, Claude Code rejetait la sortie partielle et signalait le tour entier comme une erreur lorsqu'une erreur serveur arrivait au milieu du flux.

381* Une défaillance qui arrive après que Claude a terminé la réponse : rien n'a besoin de réessai, donc Claude Code conserve la réponse complète et termine le tour normalement.391* Une défaillance qui arrive après que Claude a terminé la réponse : rien n'a besoin d'être réessayé, donc Claude Code conserve la réponse complète et termine le tour normalement.

382* Une [réponse de diffusion Amazon Bedrock avec un type de contenu inattendu](#bedrock-streaming-response-has-an-unexpected-content-type), parce que la passerelle ou le proxy réécrivant la réponse réécrirait le réessai de la même manière. Nécessite Claude Code v2.1.208 ou ultérieur.392* Une [réponse en streaming Amazon Bedrock avec un type de contenu inattendu](#bedrock-streaming-response-has-an-unexpected-content-type), parce que la passerelle ou le proxy réécrivant la réponse réécrirait la nouvelle tentative de la même manière. Nécessite Claude Code v2.1.208 ou ultérieur.

383* Un réessai non-diffusé d'une requête de diffusion défaillante qui obtient un statut de succès mais [aucun message API Claude dans le corps](#api-returned-an-empty-or-malformed-response). Claude Code termine le tour avec cette erreur.393* Une nouvelle tentative sans streaming d'une requête en streaming défaillante qui obtient un statut de succès mais [aucun message API Claude dans le corps](#api-returned-an-empty-or-malformed-response). Claude Code termine le tour avec cette erreur.

384* Une requête que la vérification de politique de votre organisation a refusée, qui apparaît comme une ligne `API Error:` portant le message de refus. Les administrateurs de votre organisation configurent la vérification avec [Inference hooks](https://platform.claude.com/docs/en/manage-claude/inference-hooks), une fonctionnalité Claude Enterprise, et le message se termine par les instructions qu'ils ont configurées, ou par défaut vous dit de les contacter. Claude Code ne renvoie pas la requête refusée au même modèle ou à un [modèle de secours](/docs/fr/model-config#fallback-model-chains), parce que le refus concerne le contenu de la requête plutôt que le modèle. Avant v2.1.239, Claude Code pouvait renvoyer une requête refusée, sans diffusion ou sur un modèle de secours configuré, avant de vous afficher le refus.394* Une requête que la vérification de politique de votre organisation a refusée, qui apparaît comme une ligne `API Error:` portant le message de refus. Les administrateurs de votre organisation configurent la vérification avec [Inference hooks](https://platform.claude.com/docs/en/manage-claude/inference-hooks), une fonctionnalité Claude Enterprise, et le message se termine par les instructions qu'ils ont configurées, ou par défaut vous dit de les contacter. Claude Code ne renvoie pas la requête refusée au même modèle ou à un [modèle de secours](/docs/fr/model-config#fallback-model-chains), parce que le refus concerne le contenu de la requête plutôt que le modèle. Avant v2.1.239, Claude Code pouvait renvoyer une requête refusée, sans streaming ou sur un modèle de secours configuré, avant de vous afficher le refus.

385 395 

386<h3 id="what-you-see-while-claude-code-retries-or-waits">396<h3 id="what-you-see-while-claude-code-retries-or-waits">

387 Ce que vous voyez pendant que Claude Code réessaie ou attend397 Ce que vous voyez pendant que Claude Code réessaie ou attend

388</h3>398</h3>

389 399 

390Pendant le réessai, le spinner affiche un compte à rebours `Retrying in Ns · attempt x/y` après une étiquette d'erreur. L'étiquette nomme la raison spécifique de la première tentative pour les défaillances sur lesquelles vous pouvez agir immédiatement : le réseau est en panne, une poignée de main TLS a échoué, ou vous avez atteint une limite de débit. Pour les autres erreurs, elle lit `API error` au début. À partir de v2.1.198, elle bascule vers la raison spécifique de la troisième tentative, ou à la tentative finale lorsque `CLAUDE_CODE_MAX_RETRIES` permet moins de trois ; les versions antérieures ne basculent qu'à la tentative finale.400Pendant les nouvelles tentatives, le spinner affiche un compte à rebours `Retrying in Ns · attempt x/y` après une étiquette d'erreur. L'étiquette nomme la raison spécifique dès la première tentative pour les défaillances sur lesquelles vous pouvez agir immédiatement : le réseau est en panne, une poignée de main TLS a échoué, ou vous avez atteint une limite de débit. Pour les autres erreurs, elle lit `API error` au début. À partir de v2.1.198, elle bascule vers la raison spécifique à partir de la troisième tentative, ou à la tentative finale lorsque `CLAUDE_CODE_MAX_RETRIES` permet moins de trois ; les versions antérieures ne basculent qu'à la tentative finale.

391 401 

392À partir de v2.1.198, le conseil du spinner habituel est supprimé pendant les réessais. Une fois que la raison de l'erreur est révélée, si la défaillance est une surcharge 529, la ligne en dessous du compte à rebours nomme également où vérifier l'état du service : `status.claude.com` sur l'API Anthropic, ou l'hôte du fournisseur ou de la passerelle nommé dans le message sur d'autres configurations.402À partir de v2.1.198, le conseil du spinner habituel est supprimé pendant les nouvelles tentatives. Une fois que la raison de l'erreur est révélée, si la défaillance est une surcharge 529, la ligne en dessous du compte à rebours nomme également où vérifier l'état du service : `status.claude.com` sur l'API Anthropic, ou l'hôte du fournisseur ou de la passerelle nommé dans le message sur d'autres configurations.

393 403 

394Si aucune donnée n'arrive sur le flux de réponse pendant 20 secondes tandis qu'une requête est toujours en attente, le spinner affiche `Waiting for API response · will retry in … · check your network` avant que tout réessai n'ait commencé. La requête n'a pas encore échoué : le compte à rebours s'exécute jusqu'au point où Claude Code abandonne la connexion bloquée. Après l'abandon, ce que vous voyez dépend de la distance parcourue par la réponse :404Si aucune donnée n'arrive sur le flux de réponse pendant 20 secondes tandis qu'une requête est toujours en attente, le spinner affiche `Waiting for API response · will retry in … · check your network` avant que toute nouvelle tentative n'ait commencé. La requête n'a pas encore échoué : le compte à rebours s'exécute jusqu'au point où Claude Code abandonne la connexion bloquée. Après l'abandon, ce que vous voyez dépend de la distance parcourue par la réponse :

395 405 

396* Avant que Claude n'ait complété un bloc de texte ou un appel d'outil, ou en ait commencé un après avoir terminé sa réflexion, Claude Code réessaie la requête ou termine le tour avec une erreur. [Automatic retries](#automatic-retries) dit quels blocages il réessaie et combien de fois.406* Avant que Claude n'ait complété un bloc de texte ou un appel d'outil, ou en ait commencé un après avoir terminé sa réflexion, Claude Code réessaie la requête ou termine le tour avec une erreur. [Automatic retries](#automatic-retries) dit quels blocages il réessaie et combien de fois.

397* Après que Claude a complété un bloc de texte ou un appel d'outil, ou en a commencé un après avoir terminé sa réflexion, mais avant que Claude n'ait terminé la réponse, Claude Code conserve ce que Claude a complété, continue le tour à partir de tous les appels d'outil que Claude a terminés, et affiche [The response above may be incomplete](#the-response-above-may-be-incomplete). Dans une session non-interactive, et pour la réponse d'un sous-agent dans toute session, Claude Code peut d'abord inviter Claude à continuer la réponse ; cette entrée dit quand il le fait et quand vous voyez toujours l'avis là.407* Après que Claude a complété un bloc de texte ou un appel d'outil, ou en a commencé un après avoir terminé sa réflexion, mais avant que Claude n'ait terminé la réponse, Claude Code conserve ce que Claude a complété, continue le tour à partir de tous les appels d'outils que Claude a terminés, et affiche [The response above may be incomplete](#the-response-above-may-be-incomplete). Dans une session non-interactive, et pour la réponse d'un sous-agent dans toute session, Claude Code peut d'abord demander à Claude de continuer la réponse ; cette entrée dit quand il le fait et quand vous voyez toujours l'avis là.

398* Après que Claude a terminé la réponse, Claude Code termine le tour normalement.408* Après que Claude a terminé la réponse, Claude Code termine le tour normalement.

399 409 

400La bannière s'efface d'elle-même une fois que les données reprennent ou qu'un réessai réussit. Si elle réapparaît à chaque tentative, traitez-la comme un [problème réseau](#unable-to-connect-to-api). Avant v2.1.185, la bannière apparaissait après 10 secondes avec un libellé différent.410La bannière s'efface d'elle-même une fois que les données reprennent ou qu'une nouvelle tentative réussit. Si elle réapparaît à chaque tentative, traitez-la comme un [problème réseau](#unable-to-connect-to-api). Avant v2.1.185, la bannière apparaissait après 10 secondes avec un libellé différent.

401 411 

402Pendant que Claude consulte le [conseiller](/docs/fr/advisor), la bannière apparaît après 90 secondes sans données au lieu de 20, parce qu'un long examen du conseiller peut ne rien envoyer pendant bien plus de 20 secondes. Avant v2.1.214, le seuil de 20 secondes s'appliquait également pendant les appels du conseiller, donc la bannière apparaissait pendant les examens du conseiller même lorsque rien n'allait mal.412Pendant que Claude consulte le [conseiller](/docs/fr/advisor), la bannière apparaît après 90 secondes sans données au lieu de 20, parce qu'un long examen du conseiller peut ne rien envoyer pendant bien plus de 20 secondes. Avant v2.1.214, le seuil de 20 secondes s'appliquait également pendant les appels du conseiller, donc la bannière apparaissait pendant les examens du conseiller même lorsque rien n'allait mal.

403 413 

404<h3 id="tune-retry-behavior">414<h3 id="tune-retry-behavior">

405 Ajuster le comportement de réessai415 Ajuster le comportement des nouvelles tentatives

406</h3>416</h3>

407 417 

408Vous pouvez ajuster le comportement de réessai avec ces variables d'environnement :418Vous pouvez ajuster le comportement des nouvelles tentatives avec ces variables d'environnement :

409 419 

410| Variable | Par défaut | Effet |420| Variable | Par défaut | Effet |

411| :- | :- | :- |421| :- | :- | :- |

412| [`CLAUDE_CODE_MAX_RETRIES`](/docs/fr/env-vars) | 10 | Nombre de tentatives de réessai. Plafonné à 15 à partir de v2.1.186 ; à partir de v2.1.199 `CLAUDE_CODE_RETRY_WATCHDOG` augmente la valeur par défaut et supprime le plafond. Réduisez-le pour afficher les défaillances plus rapidement dans les scripts. |422| [`CLAUDE_CODE_MAX_RETRIES`](/docs/fr/env-vars) | 10 | Nombre de nouvelles tentatives. Plafonné à 15 à partir de v2.1.186 ; à partir de v2.1.199 `CLAUDE_CODE_RETRY_WATCHDOG` augmente la valeur par défaut et supprime le plafond. Réduisez-le pour afficher les défaillances plus rapidement dans les scripts. |

413| [`CLAUDE_CODE_RETRY_WATCHDOG`](/docs/fr/env-vars) | non défini | Définissez sur `1` dans les sessions sans surveillance telles que les travaux CI pour réessayer les erreurs de capacité `429` et `529` indéfiniment au lieu d'échouer après `CLAUDE_CODE_MAX_RETRIES` tentatives. Claude Code échoue immédiatement lorsqu'une requête à vitesse standard obtient un `429` qui signale une limite de dépenses ou des crédits d'utilisation épuisés, même un provenant d'un [plafond de dépenses de passerelle](#spend-limit-reached) qui se réinitialise selon un calendrier. Avant v2.1.239, le watchdog réessayait ces indéfiniment. Pour les requêtes en mode rapide, voir [Handle rate limits](/docs/fr/fast-mode#handle-rate-limits). Sur v2.1.199 ou ultérieur, il augmente également le nombre de tentatives par défaut pour les autres erreurs transitoires, telles que les erreurs serveur, les délais d'attente et les connexions interrompues, à 300, environ trois heures de backoff, et supprime le plafond de 15 sur `CLAUDE_CODE_MAX_RETRIES` si vous définissez explicitement cette variable. |423| [`CLAUDE_CODE_RETRY_WATCHDOG`](/docs/fr/env-vars) | non défini | Définissez sur `1` dans les sessions sans surveillance telles que les travaux CI pour réessayer les erreurs de capacité `429` et `529` indéfiniment au lieu d'échouer après `CLAUDE_CODE_MAX_RETRIES` tentatives. Claude Code échoue immédiatement lorsqu'une requête à vitesse standard obtient un `429` qui signale une limite de dépenses ou des crédits d'utilisation épuisés, même un provenant d'un [plafond de dépenses de passerelle](#spend-limit-reached) qui se réinitialise selon un calendrier. Avant v2.1.239, le watchdog réessayait ceux-ci indéfiniment. Pour les requêtes en mode rapide, voir [Handle rate limits](/docs/fr/fast-mode#handle-rate-limits). Sur v2.1.199 ou ultérieur, il augmente également le nombre de tentatives par défaut pour les autres erreurs transitoires, telles que les erreurs serveur, les délais d'attente et les connexions interrompues, à 300, environ trois heures de backoff, et supprime le plafond de 15 sur `CLAUDE_CODE_MAX_RETRIES` si vous définissez explicitement cette variable. |

414| [`API_TIMEOUT_MS`](/docs/fr/env-vars) | 600000 | Délai d'attente par requête en millisecondes. Augmentez-le pour les réseaux lents ou les proxies. Il plafonne également la durée pendant laquelle Claude Code attend les en-têtes de réponse, décrite dans [No response from API](#no-response-from-api). |424| [`API_TIMEOUT_MS`](/docs/fr/env-vars) | 600000 | Délai d'attente par requête en millisecondes. Augmentez-le pour les réseaux lents ou les proxys. Il plafonne également la durée pendant laquelle Claude Code attend les en-têtes de réponse, décrite dans [No response from API](#no-response-from-api). |

415| [`CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`](/docs/fr/env-vars) | non défini | Délai en millisecondes pour le premier octet de réponse d'une requête de diffusion. Nécessite Claude Code v2.1.242 ou ultérieur. Pour savoir comment Claude Code choisit le délai lorsque ceci n'est pas défini, voir [No response from API](#no-response-from-api). |425| [`CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`](/docs/fr/env-vars) | non défini | Délai en millisecondes pour le premier octet de réponse d'une requête en streaming. Nécessite Claude Code v2.1.242 ou ultérieur. Pour savoir comment Claude Code choisit le délai lorsque ceci n'est pas défini, voir [No response from API](#no-response-from-api). |

416 426 

417<h2 id="server-errors">427<h2 id="server-errors">

418 Erreurs serveur428 Erreurs serveur

419</h2>429</h2>

420 430 

421La plupart de ces erreurs proviennent du fournisseur d'inférence : le service Anthropic sur l'API Anthropic, et le service derrière le point de terminaison de ce fournisseur sur Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, ou une passerelle personnalisée. [Le mode auto ne peut pas déterminer la sécurité d'une action](#auto-mode-cannot-determine-the-safety-of-an-action) et [L'agent s'est arrêté prématurément en raison d'une erreur API](#agent-terminated-early-due-to-an-api-error) couvrent également les causes de votre côté, comme un compte Amazon Bedrock qui ne peut pas invoquer le modèle de classification ou un sous-agent qui a atteint une limite d'utilisation.431La plupart de ces erreurs proviennent du fournisseur d'inférence : le service Anthropic sur l'API Anthropic, et le service derrière l'endpoint de ce fournisseur sur Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, ou une passerelle personnalisée. [Le mode auto ne peut pas déterminer la sécurité d'une action](#auto-mode-cannot-determine-the-safety-of-an-action) et [L'agent s'est arrêté prématurément en raison d'une erreur API](#agent-terminated-early-due-to-an-api-error) couvrent également les causes de votre côté, comme un compte Amazon Bedrock qui ne peut pas invoquer le modèle du classifieur ou un sous-agent qui a atteint une limite d'utilisation.

422 432 

423<h3 id="api-error-500-internal-server-error">433<h3 id="api-error-500-internal-server-error">

424 Erreur API : 500 Erreur serveur interne434 Erreur API : 500 Erreur serveur interne


495Claude Code définit le délai d'attente des en-têtes de réponse de la première tentative et le délai d'attente de la tentative de réessai séparément :505Claude Code définit le délai d'attente des en-têtes de réponse de la première tentative et le délai d'attente de la tentative de réessai séparément :

496 506 

497* **Première tentative** : [`CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`](/docs/fr/env-vars) quand vous le définissez à 1 ou plus, limité entre 10 secondes et 30 minutes. Sinon, Claude Code utilise le délai d'attente du watchdog au niveau des octets listé dans [Watchdogs d'inactivité de streaming](/docs/fr/network-config#streaming-idle-watchdogs), donc les variables qui changent ce délai d'attente changent aussi cette attente. De toute façon, Claude Code ajoute une seconde pour chaque 32 Ko de corps de demande.507* **Première tentative** : [`CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`](/docs/fr/env-vars) quand vous le définissez à 1 ou plus, limité entre 10 secondes et 30 minutes. Sinon, Claude Code utilise le délai d'attente du watchdog au niveau des octets listé dans [Watchdogs d'inactivité de streaming](/docs/fr/network-config#streaming-idle-watchdogs), donc les variables qui changent ce délai d'attente changent aussi cette attente. De toute façon, Claude Code ajoute une seconde pour chaque 32 Ko de corps de demande.

498* **Tentative de réessai** : une seconde de moins que `API_TIMEOUT_MS`, juste sous 10 minutes par défaut, afin que la tentative de réessai puisse dépasser une passerelle qui retient la réponse jusqu'à ce que la génération soit terminée. Sur Amazon Bedrock, la tentative de réessai utilise la même date limite que la première tentative, et le message affiche une durée au lieu de deux.508* **Tentative de réessai** : une seconde de moins que `API_TIMEOUT_MS`, juste sous 10 minutes par défaut, afin que la tentative de réessai puisse dépasser un proxy ou une passerelle qui retient la réponse jusqu'à ce que la génération soit terminée. Sur Amazon Bedrock, la tentative de réessai utilise la même date limite que la première tentative, et le message affiche une durée au lieu de deux.

499 509 

500Aucune attente ne dépasse une seconde de moins qu'un `API_TIMEOUT_MS` positif, et un `API_TIMEOUT_MS` positif inférieur à 11 secondes désactive la date limite. Le watchdog au niveau des octets ne démarre qu'une fois les en-têtes de réponse arrivés, donc une réponse qui arrête d'envoyer des octets après cela suit les [règles de flux interrompu](#automatic-retries) au lieu de cette date limite.510Aucune attente ne dépasse une seconde de moins qu'un `API_TIMEOUT_MS` positif, et un `API_TIMEOUT_MS` positif inférieur à 11 secondes désactive la date limite. Le watchdog au niveau des octets ne démarre qu'une fois les en-têtes de réponse arrivés, donc une réponse qui arrête d'envoyer des octets après cela suit les [règles de flux interrompu](#automatic-retries) au lieu de cette date limite.

501 511 


541 551 

542* Plus tôt dans la réponse, Claude Code réessaie l'échec ou termine le tour avec une erreur différente. Voir [Tentatives automatiques](#automatic-retries).552* Plus tôt dans la réponse, Claude Code réessaie l'échec ou termine le tour avec une erreur différente. Voir [Tentatives automatiques](#automatic-retries).

543* Quand l'un de ces échecs arrive après que Claude ait terminé la réponse, Claude Code conserve la réponse complète et termine le tour normalement, sans cet avis. Avant v2.1.222, Claude Code affichait cet avis quand la connexion était interrompue ou bloquée après la fin de la réponse, et signalait le tour comme une erreur même si la réponse était complète.553* Quand l'un de ces échecs arrive après que Claude ait terminé la réponse, Claude Code conserve la réponse complète et termine le tour normalement, sans cet avis. Avant v2.1.222, Claude Code affichait cet avis quand la connexion était interrompue ou bloquée après la fin de la réponse, et signalait le tour comme une erreur même si la réponse était complète.

544* Dans une [session non-interactive](/docs/fr/headless), comme une exécution `-p`, une exécution [Agent SDK](/docs/fr/agent-sdk/overview), ou une [session cloud](/docs/fr/claude-code-on-the-web), vous n'avez pas à envoyer `continue` vous-même quand la réponse coupée est dans la conversation principale et contient du texte mais pas d'appels d'outil : Claude Code conserve la sortie partielle et invite Claude à continuer à partir d'où il s'est arrêté, jusqu'à trois fois de suite. Vous voyez cet avis pour une telle réponse seulement une fois que Claude Code a épuisé ces continuations. Avant v2.1.246, Claude Code terminait un tour non-interactif avec cet avis à la première coupure.554* Dans une [session non interactive](/docs/fr/headless), comme une exécution `-p`, une exécution [Agent SDK](/docs/fr/agent-sdk/overview), ou une [session cloud](/docs/fr/claude-code-on-the-web), vous n'avez pas à envoyer `continue` vous-même quand la réponse coupée est dans la conversation principale et contient du texte mais pas d'appels d'outil : Claude Code conserve la sortie partielle et invite Claude à continuer à partir d'où il s'est arrêté, jusqu'à trois fois de suite. Vous voyez cet avis pour une telle réponse seulement une fois que Claude Code a épuisé ces continuations. Avant v2.1.246, Claude Code terminait un tour non interactif avec cet avis à la première coupure.

545* Dans un [sous-agent](/docs/fr/sub-agents#api-errors-in-subagents), que la session soit interactive ou non : quand sa réponse coupée contient du texte mais pas d'appels d'outil, Claude Code invite le sous-agent à continuer. L'avis devient le dernier message du sous-agent seulement une fois que ces continuations sont épuisées. Avant v2.1.257, un sous-agent affichait cet avis à la première coupure.555* Dans un [sous-agent](/docs/fr/sub-agents#api-errors-in-subagents), que la session soit interactive ou non : quand sa réponse coupée contient du texte mais pas d'appels d'outil, Claude Code invite le sous-agent à continuer. L'avis devient le dernier message du sous-agent seulement une fois que ces continuations sont épuisées. Avant v2.1.257, un sous-agent affichait cet avis à la première coupure.

546 556 

547**Que faire :**557**Que faire :**

548 558 

549* Dans une session interactive, lisez la réponse qui reste à l'écran : Claude Code conserve chaque bloc que Claude a terminé avant l'erreur, mais rejette un bloc final interrompu quand le tour se termine, donc les dernières phrases ou appels d'outil peuvent manquer. Répondez avec `continue` pour que Claude reprenne à partir de son dernier bloc terminé.559* Dans une session interactive, lisez la réponse qui reste à l'écran : Claude Code conserve chaque bloc que Claude a terminé avant l'erreur, mais rejette un bloc final interrompu quand le tour se termine, donc les dernières phrases ou appels d'outil peuvent manquer. Répondez avec `continue` pour que Claude reprenne à partir de son dernier bloc terminé.

550* En [mode non-interactif](/docs/fr/headless) (`-p`) :560* En [mode non interactif](/docs/fr/headless) (`-p`) :

551 * Avec la sortie texte par défaut, Claude Code imprime le dernier bloc de texte terminé qu'il détient toujours du début du tour, suivi de ce message. Quand il n'en détient aucun, Claude Code imprime ce message seul, par exemple parce que Claude Code a compacté la conversation en milieu de tour et a effacé ce texte. Avant v2.1.219, Claude Code n'imprimait que ce message dans la sortie texte `-p` et rejetait la réponse qu'il avait déjà produite.561 * Avec la sortie texte par défaut, Claude Code imprime le dernier bloc de texte terminé qu'il détient toujours du début du tour, suivi de ce message. Quand il n'en détient aucun, Claude Code imprime ce message seul, par exemple parce que Claude Code a compacté la conversation en milieu de tour et a effacé ce texte. Avant v2.1.219, Claude Code n'imprimait que ce message dans la sortie texte `-p` et rejetait la réponse qu'il avait déjà produite.

552 * Avec `--output-format json` ou `stream-json`, Claude Code signale ce message dans le champ `result`.562 * Avec `--output-format json` ou `stream-json`, Claude Code signale ce message dans le champ `result`.

553 * Pour continuer le tour une fois la connexion stable, reprenez la session et envoyez `continue` comme décrit dans [Continuer les conversations](/docs/fr/headless#continue-conversations).563 * Pour continuer le tour une fois la connexion stable, reprenez la session et envoyez `continue` comme décrit dans [Continuer les conversations](/docs/fr/headless#continue-conversations).


560 570 

561Les lectures, recherches et modifications à l'intérieur de votre répertoire de travail ignorent le classificateur, donc elles continuent à fonctionner dans tous ces cas.571Les lectures, recherches et modifications à l'intérieur de votre répertoire de travail ignorent le classificateur, donc elles continuent à fonctionner dans tous ces cas.

562 572 

563Quand le modèle de classification est indisponible :573Quand le modèle du classificateur est indisponible :

564 574 

565```text theme={null}575```text theme={null}

566<model> is temporarily unavailable, so auto mode cannot determine the safety of <tool> right now. Wait a moment and then try this action again.576<model> is temporarily unavailable, so auto mode cannot determine the safety of <tool> right now. Wait a moment and then try this action again.


568 578 

569Quand Claude Code peut déterminer la catégorie d'échec, il nomme la catégorie entre parenthèses après `temporarily unavailable`, par exemple `<model> is temporarily unavailable (rate-limited), so auto mode cannot determine the safety of <tool> right now`. Les catégories sont `(rate-limited)`, `(overloaded)`, `(server error)`, `(timed out)`, et `(connection failed)`. Si `(timed out)` ou `(connection failed)` se répète, vérifiez votre connexion ; voir [Impossible de se connecter à l'API](#unable-to-connect-to-api). Avant v2.1.229, le message ne nommait jamais une catégorie et lisait `Wait briefly and then try this action again`.579Quand Claude Code peut déterminer la catégorie d'échec, il nomme la catégorie entre parenthèses après `temporarily unavailable`, par exemple `<model> is temporarily unavailable (rate-limited), so auto mode cannot determine the safety of <tool> right now`. Les catégories sont `(rate-limited)`, `(overloaded)`, `(server error)`, `(timed out)`, et `(connection failed)`. Si `(timed out)` ou `(connection failed)` se répète, vérifiez votre connexion ; voir [Impossible de se connecter à l'API](#unable-to-connect-to-api). Avant v2.1.229, le message ne nommait jamais une catégorie et lisait `Wait briefly and then try this action again`.

570 580 

571Quand aucune catégorie ne convient, le message apparaît sans catégorie entre parenthèses ; plus d'un échec produit cette forme. Sur [Amazon Bedrock](/docs/fr/amazon-bedrock), y compris le [point de terminaison Mantle](/docs/fr/amazon-bedrock#use-the-mantle-endpoint), il apparaît également quand votre compte AWS ne peut pas invoquer le modèle nommé dans le message, et cet échec se répète à chaque tentative jusqu'à ce que votre compte soit autorisé à accéder au modèle.581Quand aucune catégorie ne convient, le message apparaît sans catégorie entre parenthèses ; plus d'un échec produit cette forme. Sur [Amazon Bedrock](/docs/fr/amazon-bedrock), y compris l'[endpoint Mantle](/docs/fr/amazon-bedrock#use-the-mantle-endpoint), il apparaît également quand votre compte AWS ne peut pas invoquer le modèle nommé dans le message, et cet échec se répète à chaque tentative jusqu'à ce que votre compte soit autorisé à accéder au modèle.

572 582 

573**Que faire :**583**Que faire :**

574 584 


576* Si les tentatives continuent à échouer, continuez avec les tâches en lecture seule et revenez à l'action bloquée plus tard586* Si les tentatives continuent à échouer, continuez avec les tâches en lecture seule et revenez à l'action bloquée plus tard

577* Sur Amazon Bedrock, si le message revient à chaque tentative, vérifiez que votre compte peut invoquer le modèle qu'il nomme : pour les modèles Amazon Bedrock standard, confirmez que votre [politique IAM](/docs/fr/amazon-bedrock#iam-configuration) permet de l'invoquer ; pour les ID de modèle Mantle, [contactez votre équipe de compte AWS](/docs/fr/amazon-bedrock#mantle-endpoint-errors)587* Sur Amazon Bedrock, si le message revient à chaque tentative, vérifiez que votre compte peut invoquer le modèle qu'il nomme : pour les modèles Amazon Bedrock standard, confirmez que votre [politique IAM](/docs/fr/amazon-bedrock#iam-configuration) permet de l'invoquer ; pour les ID de modèle Mantle, [contactez votre équipe de compte AWS](/docs/fr/amazon-bedrock#mantle-endpoint-errors)

578 588 

579Quand une demande de classificateur échoue parce que votre jeton OAuth a expiré ou a été pivoté par une autre session, Claude Code actualise le jeton et réessaie la demande une fois, donc une expiration de jeton de routine ne fait pas surface comme ce message. Avant v2.1.216, un jeton expiré ou pivoté échouait à chaque demande de classificateur, et le mode auto refusait chaque action vérifiée avec ce message jusqu'à ce que le jeton soit actualisé.589Quand une demande de classificateur échoue parce que votre jeton OAuth a expiré ou a été pivoté par une autre session, Claude Code actualise le jeton et réessaie la demande une fois, donc une expiration de jeton courante ne fait pas surface comme ce message. Avant v2.1.216, un jeton expiré ou pivoté échouait à chaque demande de classificateur, et le mode auto refusait chaque action vérifiée avec ce message jusqu'à ce que le jeton soit actualisé.

580 590 

581Quand le classificateur a retourné une réponse non analysable :591Quand le classificateur a retourné une réponse non analysable :

582 592 


595Auto mode could not evaluate this action and is blocking it for safety — a safety check separate from auto mode blocked this request because of earlier conversation content — it isn't about the action itself — run with --debug for details605Auto mode could not evaluate this action and is blocking it for safety — a safety check separate from auto mode blocked this request because of earlier conversation content — it isn't about the action itself — run with --debug for details

596```606```

597 607 

598Claude Code refuse l'action mais dit à Claude que ce n'est pas un jugement que l'action est dangereuse, et de continuer avec d'autres tâches plutôt que de réessayer. Ces refus ne comptent pas vers les [seuils de pause du mode auto](/docs/fr/permission-modes#when-auto-mode-falls-back). Dans une exécution `-p` [non-interactive](/docs/fr/headless), Claude Code n'arrête pas l'exécution. Ce que Claude reçoit dépend de l'endroit où il a demandé l'action :608Claude Code refuse l'action mais dit à Claude que ce n'est pas un jugement que l'action est dangereuse, et de continuer avec d'autres tâches plutôt que de réessayer. Ces refus ne comptent pas vers les [seuils de pause du mode auto](/docs/fr/permission-modes#when-auto-mode-falls-back). Dans une exécution `-p` [non interactive](/docs/fr/headless), Claude Code n'arrête pas l'exécution. Ce que Claude reçoit dépend de l'endroit où il a demandé l'action :

599 609 

600* À un [sous-agent en arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) dans une exécution `-p` sans `--input-format stream-json`, Claude Code retourne un résultat d'erreur contenant `Agent aborted: auto mode classifier request refused by the safety safeguard in headless mode`610* À un [sous-agent en arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) dans une exécution `-p` sans `--input-format stream-json`, Claude Code retourne un résultat d'erreur contenant `Agent aborted: auto mode classifier request refused by the safety safeguard in headless mode`

601* Partout ailleurs, y compris les sessions interactives et la conversation principale d'une exécution `-p`, Claude Code retourne ce refus à Claude611* Partout ailleurs, y compris les sessions interactives et la conversation principale d'une exécution `-p`, Claude Code retourne ce refus à Claude


617 627 

618Ce qui se passe à l'action dépend de l'endroit où Claude l'a demandée :628Ce qui se passe à l'action dépend de l'endroit où Claude l'a demandée :

619 629 

620* Dans une session interactive, le mode auto revient à une invite de permission normale pour cette action afin que vous puissiez l'approuver ou la refuser manuellement630* Dans une session interactive, le mode auto bascule sur une demande de permission normale pour cette action afin que vous puissiez l'approuver ou la refuser manuellement

621* À un [sous-agent en arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) dans une exécution `-p` [non-interactive](/docs/fr/headless) sans `--input-format stream-json`, Claude Code retourne un résultat d'erreur contenant `Agent aborted: auto mode classifier transcript exceeded context window in headless mode`, et l'exécution continue631* À un [sous-agent en arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) dans une exécution `-p` [non interactive](/docs/fr/headless) sans `--input-format stream-json`, Claude Code retourne un résultat d'erreur contenant `Agent aborted: auto mode classifier transcript exceeded context window in headless mode`, et l'exécution continue

622* Ailleurs dans une exécution `-p` sans [`--permission-prompt-tool`](/docs/fr/cli-reference#cli-flags), il n'y a pas d'invite pour revenir, donc l'action ne s'exécute pas et l'exécution continue632* Ailleurs dans une exécution `-p` sans [`--permission-prompt-tool`](/docs/fr/cli-reference#cli-flags), il n'y a pas de demande de permission sur laquelle se rabattre, donc l'action ne s'exécute pas et l'exécution continue

623 633 

624**Que faire :**634**Que faire :**

625 635 

626* Dans une session interactive, approuvez ou refusez l'action dans l'invite qui apparaît636* Dans une session interactive, approuvez ou refusez l'action dans la demande qui apparaît

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

628 638 

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


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

648 658 

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

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

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

652 662 

653**Que faire :**663**Que faire :**


697 707 

698Claude Code bloque les demandes supplémentaires jusqu'à l'heure de réinitialisation indiquée dans le message. Les limites de session et hebdomadaires sont partagées entre tous les modèles, donc changer de modèle ne restaure pas l'accès. Les limites Opus et Sonnet s'appliquent chacune uniquement aux demandes adressées à cette famille de modèles, donc passer à un modèle en dehors de la famille avec `/model` vous permet de continuer à travailler.708Claude Code bloque les demandes supplémentaires jusqu'à l'heure de réinitialisation indiquée dans le message. Les limites de session et hebdomadaires sont partagées entre tous les modèles, donc changer de modèle ne restaure pas l'accès. Les limites Opus et Sonnet s'appliquent chacune uniquement aux demandes adressées à cette famille de modèles, donc passer à un modèle en dehors de la famille avec `/model` vous permet de continuer à travailler.

699 709 

700Dans une session interactive connectée avec un abonnement claude.ai, Claude Code peut également attendre dans la session ouverte et continuer la tâche interrompue peu après la réinitialisation. Pendant qu'il attend, une ligne au bas de la session indique `Usage limit reached · continuing automatically at 3:45pm · esc to cancel`. Appuyez sur `Esc` à une invite vide pour annuler l'attente. Consultez [Wait for a usage limit to reset](/docs/fr/interactive-mode#wait-for-a-usage-limit-to-reset) pour voir ce que vous voyez, comment démarrer ou annuler une attente, et comment désactiver la continuation automatique. Avant la v2.1.234, Claude Code n'offrait pas cette attente.710Dans une session interactive connectée avec un abonnement claude.ai, Claude Code peut également attendre dans la session ouverte et continuer la tâche interrompue peu après la réinitialisation. Consultez [Wait for a usage limit to reset](/docs/fr/interactive-mode#wait-for-a-usage-limit-to-reset) pour voir ce que vous voyez, comment démarrer ou annuler une attente, et comment désactiver la continuation automatique. Avant la v2.1.234, Claude Code n'offrait pas cette attente.

701 711 

702L'utilisation compte à la fois pour les allocations de session et hebdomadaires. Une seule rafale d'activité intensive, comme un grand fanout de flux de travail, peut épuiser l'allocation hebdomadaire avant que la fenêtre de session ne se réinitialise.712L'utilisation compte à la fois pour les allocations de session et hebdomadaires. Une seule rafale d'activité intensive, comme un grand fanout de flux de travail, peut épuiser l'allocation hebdomadaire avant que la fenêtre de session ne se réinitialise.

703 713 


885 Erreurs d'authentification895 Erreurs d'authentification

886</h2>896</h2>

887 897 

888Ces erreurs signifient que Claude Code ne peut pas prouver votre identité à l'API. Exécutez `/status` à tout moment pour voir quelle credential est actuellement active.898Ces erreurs signifient que Claude Code ne parvient pas à prouver votre identité auprès de l'API. Exécutez `/status` à tout moment pour voir quels identifiants sont actuellement actifs.

889 899 

890<h3 id="not-logged-in">900<h3 id="not-logged-in">

891 Non connecté901 Non connecté

892</h3>902</h3>

893 903 

894Aucune credential valide n'est disponible pour cette session.904Cette session ne dispose d'aucuns identifiants valides.

895 905 

896```text theme={null}906```text theme={null}

897Not logged in · Please run /login907Not logged in · Please run /login

898```908```

899 909 

900Dans une session que l'application Claude Desktop exécute, comme l'onglet Code ou Cowork, le message se lit `Authentication required · Sign in again to continue`, et vous vous reconnectez à partir de l'application.910Dans une session exécutée par l'application Claude Desktop, comme l'onglet Code ou Cowork, le message indique `Authentication required · Sign in again to continue`, et vous vous reconnectez depuis l'application.

901 911 

902**À faire :**912Si vous vous connectez avec votre compte claude.ai dans une autre fenêtre Claude Code qui utilise le même [répertoire de configuration](/docs/fr/claude-directory), une session interactive affichant ce message commence à utiliser cette connexion d'elle-même. Vous n'avez pas besoin de la redémarrer.

913 

914Avant la v2.1.286 sur macOS, la session pouvait continuer à afficher le message après votre connexion depuis une autre fenêtre. Sur ces versions, redémarrez la session qui affiche le message.

915 

916**Que faire :**

903 917 

904* Exécutez `/login` pour vous authentifier avec votre abonnement Claude ou votre compte Console918* Exécutez `/login` pour vous authentifier avec votre abonnement Claude ou votre compte Console

905* Si vous vous attendiez à ce qu'une variable d'environnement vous authentifie, confirmez que `ANTHROPIC_API_KEY` est définie et exportée dans le shell où vous avez lancé `claude`919* Si vous vous attendiez à ce qu'une variable d'environnement vous authentifie, vérifiez que `ANTHROPIC_API_KEY` est définie et exportée dans le shell où vous avez lancé `claude`

906* Pour l'intégration continue ou l'automatisation où la connexion interactive n'est pas possible, configurez un script [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper) qui récupère une clé au démarrage920* Pour la CI ou l'automatisation où la connexion interactive n'est pas possible, configurez un script [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper) qui récupère une clé au démarrage

907* Consultez [Précédence d'authentification](/docs/fr/authentication#authentication-precedence) pour comprendre quelle credential Claude Code utilise quand plusieurs sont présentes921* Consultez [Priorité d'authentification](/docs/fr/authentication#authentication-precedence) pour comprendre quels identifiants Claude Code utilise lorsque plusieurs sont présents

908 922 

909Si vous êtes invité à vous connecter à plusieurs reprises, consultez [Non connecté ou token expiré](/docs/fr/troubleshoot-install#not-logged-in-or-token-expired) pour les vérifications de l'horloge système et les étapes de récupération du stockage des credentials macOS.923Si vous êtes invité à vous connecter à plusieurs reprises, consultez [Non connecté ou jeton expiré](/docs/fr/troubleshoot-install#not-logged-in-or-token-expired) pour les vérifications de l'horloge système et les étapes de récupération du stockage des identifiants sur macOS.

910 924 

911<h3 id="could-not-resolve-authentication-method">925<h3 id="could-not-resolve-authentication-method">

912 Impossible de résoudre la méthode d'authentification926 Impossible de déterminer la méthode d'authentification

913</h3>927</h3>

914 928 

915La session a atteint le client API sans aucune credential. Les [sessions en arrière-plan](/docs/fr/agent-view) et les sessions cloud affichent ce message quand le worker démarre sans credential. Les exécutions interactives, `-p` et Agent SDK signalent la même condition que [Non connecté](#not-logged-in) et écrivent cette chaîne uniquement dans leur journal de débogage, donc si vous l'avez trouvée là, suivez cette entrée à la place.929La session a atteint le client API sans aucuns identifiants. Les [sessions en arrière-plan](/docs/fr/agent-view) et les sessions cloud affichent ce message lorsque le worker démarre sans identifiants. Les exécutions interactives, `-p` et Agent SDK signalent la même condition sous la forme [Non connecté](#not-logged-in) et n'écrivent cette chaîne que dans leur log de débogage ; si vous l'y avez trouvée, suivez donc plutôt cette entrée.

916 930 

917```text theme={null}931```text theme={null}

918Could not resolve authentication method. Expected one of apiKey, authToken, credentials, config, or profile to be set. Or for one of the "X-Api-Key" or "Authorization" headers to be explicitly omitted932Could not resolve authentication method. Expected one of apiKey, authToken, credentials, config, or profile to be set. Or for one of the "X-Api-Key" or "Authorization" headers to be explicitly omitted

919```933```

920 934 

921Sur les versions actuelles, l'erreur signifie qu'aucune credential n'était disponible pour le processus worker. Avant v2.1.174, une session en arrière-plan assignée à un worker pré-initialisé inactif pouvait échouer de cette façon même quand des credentials valides étaient configurées. Avant v2.1.176, une session cloud qui restait inactive avant d'être réclamée pouvait aussi. Mettez à jour pour récupérer.935Sur les versions actuelles, l'erreur signifie qu'aucuns identifiants n'étaient disponibles pour le processus worker. Avant la v2.1.174, une session en arrière-plan attribuée à un worker pré-initialisé inactif pouvait échouer de cette manière même lorsque des identifiants valides étaient configurés. Avant la v2.1.176, une session cloud restée inactive avant d'être prise en charge le pouvait aussi. Mettez à jour pour corriger le problème.

922 936 

923**À faire :**937**Que faire :**

924 938 

925* Mettez à jour vers v2.1.176 ou ultérieur si cela apparaît dans une session en arrière-plan ou cloud et que vos credentials sont déjà configurées939* Passez à la v2.1.176 ou ultérieure si ce message apparaît dans une session en arrière-plan ou cloud et que vos identifiants sont déjà configurés

926* Confirmez que `ANTHROPIC_API_KEY`, `CLAUDE_CODE_OAUTH_TOKEN` ou vos credentials du fournisseur cloud sont définis dans l'environnement qui lance le worker, pas seulement dans votre shell interactif940* Vérifiez que `ANTHROPIC_API_KEY`, `CLAUDE_CODE_OAUTH_TOKEN` ou les identifiants de votre fournisseur cloud sont définis dans l'environnement qui lance le worker, et pas seulement dans votre shell interactif

927* Pour l'Agent SDK, consultez [configuration de l'authentification dans le guide de démarrage](/docs/fr/agent-sdk/quickstart#setup)941* Pour l'Agent SDK, consultez [la configuration de l'authentification dans le démarrage rapide](/docs/fr/agent-sdk/quickstart#setup)

928* Exécutez `/status` dans une session interactive dans le même environnement pour confirmer quelle source de credential se résout942* Exécutez `/status` dans une session interactive du même environnement pour confirmer quelle source d'identifiants est résolue

929 943 

930<h3 id="invalid-api-key">944<h3 id="invalid-api-key">

931 Clé API invalide945 Clé API non valide

932</h3>946</h3>

933 947 

934La variable d'environnement `ANTHROPIC_API_KEY` ou le script `apiKeyHelper` a renvoyé une clé que l'API a rejetée, ou Claude Code a bloqué une clé de `ANTHROPIC_API_KEY` avant de l'envoyer.948La variable d'environnement `ANTHROPIC_API_KEY` ou le script `apiKeyHelper` a renvoyé une clé que l'API a rejetée, ou Claude Code a bloqué une clé provenant de `ANTHROPIC_API_KEY` avant de l'envoyer.

935 949 

936```text theme={null}950```text theme={null}

937Invalid API key · Fix external API key951Invalid API key · Fix external API key

938```952```

939 953 

940Quand le message continue après `Fix external API key` avec une description telle que `Invalid X-Api-Key header value from ANTHROPIC_API_KEY: it contains a line break at character 41 (120 characters on 2 lines).`, l'API n'a jamais vu la clé. Claude Code a trouvé un caractère que les en-têtes HTTP ne peuvent pas transporter et a arrêté la requête avant de l'envoyer. Consultez [Valeur d'en-tête de requête invalide](#invalid-request-header-value) pour savoir comment lire la description et corriger la valeur.954Lorsque le message se poursuit après `Fix external API key` avec une description telle que `Invalid X-Api-Key header value from ANTHROPIC_API_KEY: it contains a line break at character 41 (120 characters on 2 lines).`, l'API n'a jamais vu la clé. Claude Code a trouvé un caractère que les en-têtes HTTP ne peuvent pas transporter et a arrêté la requête avant de l'envoyer. Consultez [Valeur d'en-tête de requête non valide](#invalid-request-header-value) pour savoir comment lire la description et corriger la valeur.

941 955 

942**À faire :**956**Que faire :**

943 957 

944* Vérifiez les fautes de frappe et confirmez que la clé n'a pas été révoquée dans la [Console](https://platform.claude.com/settings/keys)958* Vérifiez l'absence de fautes de frappe et confirmez que la clé n'a pas été révoquée dans la [Console](https://platform.claude.com/settings/keys)

945* Dans le même shell, exécutez `env | grep ANTHROPIC`, ou dans PowerShell `Get-ChildItem Env:ANTHROPIC*`. Des outils comme direnv, les plugins dotenv shell et les terminaux IDE peuvent charger une clé obsolète à partir d'un fichier `.env` dans votre projet sans que vous la définissiez explicitement.959* Dans le même shell, exécutez `env | grep ANTHROPIC`, ou dans PowerShell `Get-ChildItem Env:ANTHROPIC*`. Des outils comme direnv, les plugins shell dotenv et les terminaux d'IDE peuvent charger une clé obsolète depuis un fichier `.env` de votre projet sans que vous l'ayez définie explicitement.

946* Déconfigurez `ANTHROPIC_API_KEY` et exécutez `/login` pour utiliser l'authentification par abonnement à la place960* Supprimez `ANTHROPIC_API_KEY` et exécutez `/login` pour utiliser plutôt l'authentification par abonnement

947* Si la clé provient d'un script [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper), exécutez le script directement pour confirmer qu'il imprime une clé valide sur stdout961* Si la clé provient d'un script [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper), exécutez le script directement pour confirmer qu'il affiche une clé valide sur stdout

948* Exécutez `/status` pour confirmer quelle source de credential Claude Code utilise réellement962* Exécutez `/status` pour confirmer quelle source d'identifiants Claude Code utilise réellement

949 963 

950<h3 id="your-apikeyhelper-script-is-failing">964<h3 id="your-apikeyhelper-script-is-failing">

951 Votre script apiKeyHelper échoue965 Votre script apiKeyHelper échoue

952</h3>966</h3>

953 967 

954Claude Code a exécuté la commande dans votre paramètre [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper) et n'a pas obtenu de clé en retour. Sans une, la requête atteint l'API avec une credential d'espace réservé, et l'API la rejette avec `401`. Le panneau `Authentication` dans le terminal affiche lequel de ces événements s'est produit :968Claude Code a exécuté la commande de votre paramètre [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper) et n'a pas récupéré de clé. Sans clé, la requête atteint l'API avec des identifiants factices, et l'API la rejette avec une `401`. Le panneau `Authentication` du terminal indique lequel de ces cas s'est produit :

955 969 

956* La commande s'est terminée avec une erreur ou a expiré970* La commande s'est terminée avec une erreur ou a expiré

957* La commande n'a rien imprimé sur stdout971* La commande n'a rien affiché sur stdout

958* La commande a imprimé quelque chose d'autre que la clé, comme une bannière de connexion ou une ligne de journal. Le panneau affiche `returned output that cannot be used as an API key` et indique ce qui ne va pas, sans répéter la sortie. Avant v2.1.227, Claude Code envoyait tout ce que la commande imprimait, après suppression des espaces blancs environnants.972* La commande a affiché autre chose que la clé, comme une bannière de connexion ou une ligne de log. Le panneau affiche `returned output that cannot be used as an API key` et indique ce qui ne va pas, sans répéter la sortie. Avant la v2.1.227, Claude Code envoyait tout ce que la commande affichait, après suppression des espaces environnants.

959 973 

960```text theme={null}974```text theme={null}

961Your apiKeyHelper script is failing · This usually means you need to re-authenticate with your provider · Run /status to see the script's error output975Your apiKeyHelper script is failing · This usually means you need to re-authenticate with your provider · Run /status to see the script's error output

962```976```

963 977 

964En [mode non-interactif](/docs/fr/headless), stderr porte également la raison spécifique, préfixée par `apiKeyHelper failed:`.978En [mode non interactif](/docs/fr/headless), stderr contient également la raison précise, préfixée par `apiKeyHelper failed:`.

965 979 

966Claude Code réexécute le script et réessaie la requête jusqu'à deux fois de plus avant d'afficher ce message, donc l'échec apparaît dans les trois tentatives. Avant v2.1.208, Claude Code dépensait le [budget de retry](#automatic-retries) complet en renvoyant la requête avec la credential d'espace réservé, puis signalait une erreur d'authentification générique `401` au lieu de l'échec du script.980Claude Code réexécute le script et relance la requête jusqu'à deux fois supplémentaires avant d'afficher ce message, de sorte que l'échec apparaît en trois tentatives au maximum. Avant la v2.1.208, Claude Code épuisait tout le [budget de nouvelles tentatives](#automatic-retries) en renvoyant la requête avec les identifiants factices, puis signalait une erreur d'authentification `401` générique au lieu de l'échec du script.

967 981 

968L'exécution de `/login` n'aide pas ici : la sortie du helper [prend la priorité](/docs/fr/authentication#authentication-precedence) sur une connexion enregistrée tant que le paramètre est présent.982Exécuter `/login` n'aide pas ici : la sortie du helper [a priorité](/docs/fr/authentication#authentication-precedence) sur une connexion enregistrée tant que le paramètre est présent.

969 983 

970**À faire :**984**Que faire :**

971 985 

972* Exécutez la commande configurée dans `apiKeyHelper` directement dans votre shell pour reproduire l'échec986* Exécutez directement dans votre shell la commande configurée dans `apiKeyHelper` pour reproduire l'échec

973* Si la commande signale une session expirée, réauthentifiez-vous auprès de votre fournisseur de credentials, par exemple en vous reconnectant à votre SSO ou à votre coffre-fort de secrets987* Si la commande signale une session expirée, authentifiez-vous à nouveau auprès de votre fournisseur d'identifiants, par exemple en vous reconnectant à votre SSO ou à votre coffre de secrets

974* Corrigez la commande pour qu'elle imprime uniquement la clé sur stdout, en tant que jeton unique d'ASCII imprimable jusqu'à 16 384 caractères, et se termine avec le code 0. Consultez [rotation des credentials avec apiKeyHelper](/docs/fr/llm-gateway-connect#rotate-credentials-with-apikeyhelper) pour une configuration fonctionnelle.988* Corrigez la commande pour qu'elle n'affiche que la clé sur stdout, sous la forme d'un seul token d'ASCII imprimable de 16 384 caractères maximum, et qu'elle se termine avec le code 0. Consultez [renouveler les identifiants avec apiKeyHelper](/docs/fr/llm-gateway-connect#rotate-credentials-with-apikeyhelper) pour une configuration fonctionnelle.

975* Exécutez `/status` pour voir l'échec et confirmez que `apiKeyHelper` est la source de credential active. La ligne `apiKeyHelper` affiche `Failing` avec le détail du dernier échec, comme le code de sortie et la sortie d'erreur de la commande, et disparaît après la prochaine exécution réussie. Avant v2.1.274, `/status` affichait uniquement la source de credential, pas l'échec.989* Exécutez `/status` pour voir l'échec et confirmer que `apiKeyHelper` est la source d'identifiants active. La ligne `apiKeyHelper` affiche `Failing` avec le détail du dernier échec, comme le code de sortie et la sortie d'erreur de la commande, et disparaît après la prochaine exécution réussie. Avant la v2.1.274, `/status` n'affichait que la source d'identifiants, pas l'échec.

976* Chaque fois que la commande échoue, son code de sortie et sa sortie d'erreur apparaissent également dans un panneau `Authentication` dans le terminal. Avant v2.1.212, le panneau était intitulé `Cloud authentication`.990* Chaque fois que la commande échoue, son code de sortie et sa sortie d'erreur apparaissent également dans un panneau `Authentication` du terminal. Avant la v2.1.212, le panneau s'intitulait `Cloud authentication`.

977 991 

978<h3 id="invalid-request-header-value">992<h3 id="invalid-request-header-value">

979 Valeur d'en-tête de requête invalide993 Valeur d'en-tête de requête non valide

980</h3>994</h3>

981 995 

982Une valeur que Claude Code s'apprêtait à envoyer en tant qu'en-tête de requête contient un caractère que les en-têtes HTTP ne peuvent pas transporter : un saut de ligne, un octet NUL ou un caractère au-dessus de `U+00FF`, comme un guillemet courbe ou un espace de largeur zéro. Claude Code arrête la requête avant que quoi que ce soit ne soit envoyé et nomme la variable ou le paramètre à corriger. La cause habituelle est une credential collée à partir d'un document ou d'une conversation qui portait un caractère invisible ou un saut de ligne égaré.996Une valeur que Claude Code s'apprêtait à envoyer comme en-tête de requête contient un caractère que les en-têtes HTTP ne peuvent pas transporter : un saut de ligne, un octet NUL ou un caractère au-delà de `U+00FF`, comme un guillemet typographique ou une espace de largeur nulle. Claude Code arrête la requête avant tout envoi et nomme la variable ou le paramètre à corriger. La cause habituelle est un identifiant collé depuis un document ou un chat qui contenait un caractère invisible ou un saut de ligne parasite.

983 997 

984Claude Code exécute cette vérification quand il envoie des requêtes à l'API Claude directement ou via une [passerelle LLM](/docs/fr/llm-gateway). Sur un fournisseur cloud tiers comme [Amazon Bedrock](/docs/fr/amazon-bedrock), Claude Code ne l'exécute pas avant d'envoyer.998Claude Code effectue cette vérification lorsqu'il envoie des requêtes à l'API Claude directement ou via une [passerelle LLM](/docs/fr/llm-gateway). Sur un fournisseur cloud tiers comme [Amazon Bedrock](/docs/fr/amazon-bedrock), Claude Code ne l'effectue pas avant l'envoi.

985 999 

986```text theme={null}1000```text theme={null}

987Invalid auth token · Fix external auth token1001Invalid auth token · Fix external auth token


989Invalid request header from the environment · Fix the environment variable1003Invalid request header from the environment · Fix the environment variable

990```1004```

991 1005 

992La première partie du message dépend de la provenance de la mauvaise valeur :1006La première partie du message dépend de la provenance de la valeur incorrecte :

993 1007 

994* `Invalid auth token` : un jeton bearer de [`ANTHROPIC_AUTH_TOKEN`](/docs/fr/env-vars) ou [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/fr/env-vars)1008* `Invalid auth token` : un jeton bearer provenant de [`ANTHROPIC_AUTH_TOKEN`](/docs/fr/env-vars) ou de [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/fr/env-vars)

995* `Invalid ANTHROPIC_CUSTOM_HEADERS` : un nom ou une valeur d'en-tête que vous avez défini dans [`ANTHROPIC_CUSTOM_HEADERS`](/docs/fr/env-vars). La description compte quelle paire `Name: Value` est en faute, comme `distinct header 2 of 3 parsed from ANTHROPIC_CUSTOM_HEADERS`, sans répéter le nom ou la valeur, puisque vous avez choisi les deux.1009* `Invalid ANTHROPIC_CUSTOM_HEADERS` : un nom ou une valeur d'en-tête que vous avez défini dans [`ANTHROPIC_CUSTOM_HEADERS`](/docs/fr/env-vars). La description indique le rang de la paire `Name: Value` fautive, par exemple `distinct header 2 of 3 parsed from ANTHROPIC_CUSTOM_HEADERS`, sans répéter le nom ni la valeur, puisque vous avez choisi les deux.

996* `Invalid request header from the environment` : une valeur que Claude Code copie dans un en-tête de requête à partir d'une autre variable d'environnement, comme `CLAUDE_AGENT_SDK_CLIENT_APP`. La description nomme la variable à corriger.1010* `Invalid request header from the environment` : une valeur que Claude Code copie dans un en-tête de requête depuis une autre variable d'environnement, comme `CLAUDE_AGENT_SDK_CLIENT_APP`. La description nomme la variable à corriger.

997 1011 

998Claude Code signale une mauvaise `ANTHROPIC_API_KEY` capturée par cette vérification comme [Clé API invalide](#invalid-api-key), avec la même description de fin. Il signale une mauvaise credential `/login` enregistrée comme [Non connecté](#not-logged-in) à la place ; exécutez `/login` pour en enregistrer une nouvelle. La sortie d'un script [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper) n'atteint jamais cette vérification : Claude Code la valide quand le script s'exécute, et la sortie qu'un en-tête HTTP ne peut pas transporter échoue avec [Votre script apiKeyHelper échoue](#your-apikeyhelper-script-is-failing).1012Claude Code signale une `ANTHROPIC_API_KEY` incorrecte détectée par cette vérification sous la forme [Clé API non valide](#invalid-api-key), avec la même description finale. Il signale des identifiants `/login` enregistrés incorrects sous la forme [Non connecté](#not-logged-in) ; exécutez `/login` pour en enregistrer de nouveaux. La sortie d'un script [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper) n'atteint jamais cette vérification : Claude Code la valide lors de l'exécution du script, et une sortie qu'un en-tête HTTP ne peut pas transporter échoue avec [Votre script apiKeyHelper échoue](#your-apikeyhelper-script-is-failing).

999 1013 

1000Après le deuxième `·`, le message décrit le problème, comme dans cet exemple complet :1014Après le second `·`, le message décrit le problème, comme dans cet exemple complet :

1001 1015 

1002```text theme={null}1016```text theme={null}

1003Invalid auth token · Fix external auth token · Invalid Authorization header value from ANTHROPIC_AUTH_TOKEN: it contains a line break at character 41 (120 characters on 2 lines).1017Invalid auth token · Fix external auth token · Invalid Authorization header value from ANTHROPIC_AUTH_TOKEN: it contains a line break at character 41 (120 characters on 2 lines).

1004```1018```

1005 1019 

1006Les positions comptent les caractères en commençant par un. La description est construite à partir de phrases fixes et de comptages de caractères, donc elle n'inclut jamais la valeur elle-même. Elle nomme le caractère offensant uniquement quand il s'agit d'un caractère invisible ou typographique bien connu, comme une marque d'ordre des octets, un espace de largeur zéro ou un guillemet courbe, et signale tout le reste comme `a non-ASCII character`.1020Les positions comptent les caractères à partir de un. La description est construite à partir de phrases fixes et de nombres de caractères, elle n'inclut donc jamais la valeur elle-même. Elle nomme le caractère fautif uniquement lorsqu'il s'agit d'un caractère invisible ou typographique bien connu, comme une marque d'ordre des octets, une espace de largeur nulle ou un guillemet typographique, et signale tout autre caractère comme `a non-ASCII character`.

1007 1021 

1008**À faire :**1022**Que faire :**

1009 1023 

1010* Redéfinissez la variable ou le paramètre que le message nomme, en retapant les caractères autour de la position signalée plutôt que de coller à partir de la même source1024* Redéfinissez la variable ou le paramètre que nomme le message, en retapant les caractères autour de la position signalée plutôt qu'en collant à nouveau depuis la même source

1011* Pour `ANTHROPIC_CUSTOM_HEADERS`, conservez une paire `Name: Value` par ligne et réécrivez la paire que le message compte1025* Pour `ANTHROPIC_CUSTOM_HEADERS`, conservez une paire `Name: Value` par ligne et réécrivez la paire indiquée par le message

1012* Exécutez `/status` pour confirmer quelle source de credential est active1026* Exécutez `/status` pour confirmer quelle source d'identifiants est active

1013 1027 

1014<h3 id="this-organization-has-been-disabled">1028<h3 id="this-organization-has-been-disabled">

1015 Cette organisation a été désactivée1029 Cette organisation a été désactivée

1016</h3>1030</h3>

1017 1031 

1018Claude Code utilise une `ANTHROPIC_API_KEY` obsolète d'une organisation Console désactivée. Quand vous avez une connexion d'abonnement enregistrée, la clé la remplace.1032Claude Code utilise une `ANTHROPIC_API_KEY` obsolète provenant d'une organisation Console désactivée. Lorsque vous disposez d'une connexion par abonnement enregistrée, la clé la remplace.

1019 1033 

1020```text theme={null}1034```text theme={null}

1021Your ANTHROPIC_API_KEY belongs to a disabled organization · Unset the environment variable to use your subscription instead1035Your ANTHROPIC_API_KEY belongs to a disabled organization · Unset the environment variable to use your subscription instead


1023API Error: 400 ... This organization has been disabled.1037API Error: 400 ... This organization has been disabled.

1024```1038```

1025 1039 

1026L'indice après le `·` dépend de vos credentials enregistrées : la première forme apparaît quand une `/login` enregistrée peut prendre le relais après que vous ayez déconfiguré la clé, et la deuxième quand la clé est votre seule credential.1040L'indication après le `·` dépend de vos identifiants enregistrés : la première forme apparaît lorsqu'une connexion `/login` enregistrée peut prendre le relais une fois la clé supprimée, et la seconde lorsque la clé est votre seul identifiant.

1027 1041 

1028Les variables d'environnement prennent la priorité sur `/login`, donc une clé exportée dans votre profil shell ou chargée à partir d'un fichier `.env` est utilisée même quand vous avez un abonnement Pro ou Max fonctionnant. En mode non-interactif (`-p`), la clé est toujours utilisée quand elle est présente.1042Les variables d'environnement ont priorité sur `/login` : une clé exportée dans votre profil de shell ou chargée depuis un fichier `.env` est donc utilisée même si vous disposez d'un abonnement Pro ou Max fonctionnel. En mode non interactif (`-p`), la clé est toujours utilisée lorsqu'elle est présente.

1029 1043 

1030**À faire :**1044**Que faire :**

1031 1045 

1032* Déconfigurez `ANTHROPIC_API_KEY` dans le shell actuel et supprimez-la de votre profil shell, puis relancez `claude`1046* Supprimez `ANTHROPIC_API_KEY` dans le shell actuel et retirez-la de votre profil de shell, puis relancez `claude`

1033* Si le message dit `Update or unset`, vous n'avez pas de connexion enregistrée sur laquelle vous rabattre. Déconfigurez la clé et exécutez `/login`, ou remplacez la clé par une d'une organisation Console active.1047* Si le message indique `Update or unset`, vous n'avez aucune connexion enregistrée sur laquelle vous rabattre. Supprimez la clé et exécutez `/login`, ou remplacez la clé par une clé provenant d'une organisation Console active.

1034* Exécutez `/status` après pour confirmer que la credential active est votre abonnement1048* Exécutez ensuite `/status` pour confirmer que les identifiants actifs sont ceux de votre abonnement

1035* Si aucune variable d'environnement n'est définie et l'erreur persiste, contactez le support ou connectez-vous avec un compte différent.1049* Si aucune variable d'environnement n'est définie et que l'erreur persiste, contactez le support ou connectez-vous avec un autre compte.

1036 1050 

1037<h3 id="your-organization-has-disabled-api-key-authentication">1051<h3 id="your-organization-has-disabled-api-key-authentication">

1038 Votre organisation a désactivé l'authentification par clé API1052 Votre organisation a désactivé l'authentification par clé API

1039</h3>1053</h3>

1040 1054 

1041Ce message nécessite Claude Code v2.1.169 ou ultérieur. L'administrateur de votre organisation Console a désactivé l'authentification par clé API, donc l'API rejette la clé que Claude Code envoie. L'indice de récupération après le `·` varie selon la provenance de la clé :1055Ce message nécessite Claude Code v2.1.169 ou ultérieure. L'administrateur de votre organisation Console a désactivé l'authentification par clé API, l'API rejette donc la clé que Claude Code envoie. L'indication de récupération après le `·` varie selon la provenance de la clé :

1042 1056 

1043```text theme={null}1057```text theme={null}

1044Your organization has disabled API key authentication · Run /login to sign in with your claude.ai account1058Your organization has disabled API key authentication · Run /login to sign in with your claude.ai account


1048Your organization has disabled API key authentication · Sign in again with your claude.ai account1062Your organization has disabled API key authentication · Sign in again with your claude.ai account

1049```1063```

1050 1064 

1051La dernière forme apparaît dans une session que l'application Claude Desktop exécute, comme l'onglet Code ou Cowork, où vous vous reconnectez à partir de l'application.1065La dernière forme apparaît dans une session exécutée par l'application Claude Desktop, comme l'onglet Code ou Cowork, où vous vous reconnectez depuis l'application.

1052 1066 

1053Les variables d'environnement et `apiKeyHelper` prennent la priorité sur `/login`, donc exécuter `/login` seul n'aide pas tant que l'un ou l'autre fournit toujours une clé. Consultez [Précédence d'authentification](/docs/fr/authentication#authentication-precedence).1067Les variables d'environnement et `apiKeyHelper` ont priorité sur `/login` : exécuter `/login` seul n'aide donc pas tant que l'un d'eux fournit encore une clé. Consultez [Priorité d'authentification](/docs/fr/authentication#authentication-precedence).

1054 1068 

1055**À faire :**1069**Que faire :**

1056 1070 

1057* Si le message nomme `ANTHROPIC_API_KEY`, déconfigurez-la dans le shell actuel et supprimez-la de votre profil shell ou fichier `.env`, puis relancez `claude`1071* Si le message nomme `ANTHROPIC_API_KEY`, supprimez-la dans le shell actuel et retirez-la de votre profil de shell ou de votre fichier `.env`, puis relancez `claude`

1058* Si le message nomme `apiKeyHelper`, supprimez le paramètre [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper) de votre `settings.json`1072* Si le message nomme `apiKeyHelper`, retirez le paramètre [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper) de votre `settings.json`

1059* Exécutez `/login` pour vous connecter avec votre compte claude.ai1073* Exécutez `/login` pour vous connecter avec votre compte claude.ai

1060* Exécutez `/status` après pour confirmer que la credential active est votre abonnement plutôt qu'une clé API1074* Exécutez ensuite `/status` pour confirmer que les identifiants actifs sont ceux de votre abonnement et non une clé API

1061* Si vous avez besoin de l'authentification par clé API pour l'automatisation, demandez à l'administrateur de votre organisation de la réactiver dans la Console1075* Si vous avez besoin de l'authentification par clé API pour l'automatisation, demandez à l'administrateur de votre organisation de la réactiver dans la Console

1062 1076 

1063<h3 id="your-organization-has-disabled-claude-subscription-access">1077<h3 id="your-organization-has-disabled-claude-subscription-access">

1064 Votre organisation a désactivé l'accès à l'abonnement Claude1078 Votre organisation a désactivé l'accès par abonnement Claude

1065</h3>1079</h3>

1066 1080 

1067Votre organisation Claude ne permet pas de se connecter à Claude Code avec une connexion d'abonnement. L'exécution de `/login` à nouveau avec le même compte retourne la même erreur.1081Votre organisation Claude n'autorise pas la connexion à Claude Code avec une connexion par abonnement. Exécuter à nouveau `/login` avec le même compte renvoie la même erreur.

1068 1082 

1069```text theme={null}1083```text theme={null}

1070Your organization has disabled Claude subscription access for Claude Code · Use an Anthropic API key instead, or ask your admin to enable access1084Your organization has disabled Claude subscription access for Claude Code · Use an Anthropic API key instead, or ask your admin to enable access

1071```1085```

1072 1086 

1073C'est un paramètre d'organisation côté serveur, donc il ne peut pas être remplacé à partir des paramètres locaux, des variables d'environnement ou des drapeaux CLI.1087Il s'agit d'un paramètre d'organisation côté serveur, qui ne peut donc pas être remplacé par des paramètres locaux, des variables d'environnement ou des flags CLI.

1074 1088 

1075L'Agent SDK et le mode non-interactif `-p` présentent cela comme le code d'erreur `oauth_org_not_allowed`.1089L'Agent SDK et le mode non interactif `-p` le signalent avec le code d'erreur `oauth_org_not_allowed`.

1076 1090 

1077**À faire :**1091**Que faire :**

1078 1092 

1079* Demandez à votre administrateur d'activer l'accès à Claude Code pour votre organisation1093* Demandez à votre administrateur d'activer l'accès à Claude Code pour votre organisation

1080* Authentifiez-vous avec une clé API Console au lieu de votre abonnement. Consultez [Authentification Claude Console](/docs/fr/authentication#claude-console-authentication) pour la configuration.1094* Authentifiez-vous avec une clé API Console plutôt qu'avec votre abonnement. Consultez [Authentification Claude Console](/docs/fr/authentication#claude-console-authentication) pour la configuration.

1081* Si vous êtes l'administrateur et ne voyez pas d'option pour activer l'accès, contactez le [support Anthropic](https://support.claude.com)1095* Si vous êtes l'administrateur et ne voyez pas d'option pour activer l'accès, contactez le [support Anthropic](https://support.claude.com)

1082 1096 

1083<h3 id="routines-are-disabled-by-your-organizations-policy">1097<h3 id="routines-are-disabled-by-your-organizations-policy">

1084 Les routines sont désactivées par la politique de votre organisation1098 Les routines sont désactivées par la politique de votre organisation

1085</h3>1099</h3>

1086 1100 

1087Un propriétaire de votre organisation Team ou Enterprise a désactivé les routines au niveau de l'organisation. L'erreur apparaît quand vous essayez de créer ou d'exécuter une routine, par exemple à partir de l'interface utilisateur [Routines](/docs/fr/routines) sur claude.ai/code. Sur Claude Code v2.1.227 ou ultérieur, le même paramètre [masque également `/schedule`](/docs/fr/routines#troubleshooting) dans le CLI.1101Un Owner de votre organisation Team ou Enterprise a désactivé les routines au niveau de l'organisation. L'erreur apparaît lorsque vous essayez de créer ou d'exécuter une routine, par exemple depuis l'interface [Routines](/docs/fr/routines) sur claude.ai/code. Sur Claude Code v2.1.227 ou ultérieure, le même paramètre [masque également `/schedule`](/docs/fr/routines#troubleshooting) dans la CLI.

1088 1102 

1089```text theme={null}1103```text theme={null}

1090Routines are disabled by your organization's policy.1104Routines are disabled by your organization's policy.

1091```1105```

1092 1106 

1093C'est un paramètre côté serveur, donc il ne peut pas être remplacé à partir des paramètres locaux, des variables d'environnement ou des drapeaux CLI.1107Il s'agit d'un paramètre côté serveur, qui ne peut donc pas être remplacé par des paramètres locaux, des variables d'environnement ou des flags CLI.

1094 1108 

1095**À faire :**1109**Que faire :**

1096 1110 

1097* Demandez à un propriétaire de votre organisation d'activer le bouton bascule **Routines** sur [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)1111* Demandez à un Owner de votre organisation d'activer le bouton **Routines** sur [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)

1098* Pour un travail ponctuel programmé qui ne nécessite pas de routines au niveau de l'organisation, consultez [tâches programmées](/docs/fr/scheduled-tasks)1112* Pour une tâche planifiée ponctuelle qui ne nécessite pas de routines au niveau de l'organisation, consultez [tâches planifiées](/docs/fr/scheduled-tasks)

1099 1113 

1100<h3 id="remote-control-requires-the-anthropic-api">1114<h3 id="remote-control-requires-the-anthropic-api">

1101 Remote Control nécessite l'API Anthropic1115 Remote Control nécessite l'API Anthropic

1102</h3>1116</h3>

1103 1117 

1104La session ne parle pas directement à l'API Anthropic, ce que [Remote Control](/docs/fr/remote-control) nécessite.1118La session ne communique pas directement avec l'API Anthropic, ce que [Remote Control](/docs/fr/remote-control) exige.

1105 1119 

1106```text theme={null}1120```text theme={null}

1107Remote Control is only available when using Claude via api.anthropic.com. CLAUDE_CODE_USE_BEDROCK is set, so this session is using Amazon Bedrock — unset it (or run in a shell without it) to use Remote Control.1121Remote Control is only available when using Claude via api.anthropic.com. CLAUDE_CODE_USE_BEDROCK is set, so this session is using Amazon Bedrock — unset it (or run in a shell without it) to use Remote Control.

1108```1122```

1109 1123 

1110Une deuxième phrase explique ce qui a acheminé la session loin de l'API Anthropic ; avant v2.1.219, le message était la première phrase seule. Selon la cause, le message nomme :1124Une seconde phrase explique ce qui a détourné la session de l'API Anthropic ; avant la v2.1.219, le message se limitait à la première phrase. Selon la cause, le message nomme :

1111 1125 

1112* Une variable de fournisseur `CLAUDE_CODE_USE_*`, comme `CLAUDE_CODE_USE_BEDROCK` pour [Amazon Bedrock](/docs/fr/amazon-bedrock) ou `CLAUDE_CODE_USE_VERTEX` pour [Agent Platform de Google Cloud](/docs/fr/google-vertex-ai)1126* Une variable de fournisseur `CLAUDE_CODE_USE_*`, comme `CLAUDE_CODE_USE_BEDROCK` pour [Amazon Bedrock](/docs/fr/amazon-bedrock) ou `CLAUDE_CODE_USE_VERTEX` pour [Google Cloud's Agent Platform](/docs/fr/google-vertex-ai)

1113* [`ANTHROPIC_BASE_URL`](/docs/fr/env-vars) pointant vers un hôte autre que `api.anthropic.com`, comme une [passerelle LLM](/docs/fr/llm-gateway) ou un proxy, même quand vous vous connectez avec claude.ai ; avant v2.1.196, une URL de base personnalisée ne bloquait pas Remote Control1127* [`ANTHROPIC_BASE_URL`](/docs/fr/env-vars) pointant vers un hôte autre que `api.anthropic.com`, comme une [passerelle LLM](/docs/fr/llm-gateway) ou un proxy, même lorsque vous vous connectez avec claude.ai ; avant la v2.1.196, une URL de base personnalisée ne bloquait pas Remote Control

1114* `ANTHROPIC_UNIX_SOCKET` défini, donc la session envoie ses requêtes via un socket local plutôt qu'à `api.anthropic.com`1128* `ANTHROPIC_UNIX_SOCKET` définie, de sorte que la session envoie ses requêtes via un socket local plutôt qu'à `api.anthropic.com`

1115* Une connexion [passerelle cloud](/docs/fr/claude-apps-gateway) d'entreprise effectuée via `/login`, qui ne supporte pas Remote Control et n'a pas de variable à déconfigurez1129* Une connexion à une [passerelle cloud](/docs/fr/claude-apps-gateway) d'entreprise effectuée via `/login`, qui ne prend pas en charge Remote Control et n'a aucune variable à supprimer

1116 1130 

1117**À faire :**1131**Que faire :**

1118 1132 

1119* Déconfigurez la variable que le message nomme, comme `CLAUDE_CODE_USE_BEDROCK` ou `ANTHROPIC_BASE_URL`, et redémarrez la session, ou démarrez Remote Control à partir d'une session qui parle directement à l'API Anthropic1133* Supprimez la variable que nomme le message, comme `CLAUDE_CODE_USE_BEDROCK` ou `ANTHROPIC_BASE_URL`, et redémarrez la session, ou lancez Remote Control depuis une session qui communique directement avec l'API Anthropic

1120* Si la variable n'est pas définie dans votre shell, vérifiez la clé `env` dans vos [fichiers de paramètres](/docs/fr/settings#where-settings-live), qui applique les variables d'environnement à chaque session1134* Si la variable n'est pas définie dans votre shell, vérifiez la clé `env` dans vos [fichiers de paramètres](/docs/fr/settings#where-settings-live), qui applique des variables d'environnement à chaque session

1121* Pour ce message et les autres messages de démarrage de Remote Control, consultez [Dépannage de Remote Control](/docs/fr/remote-control#troubleshooting)1135* Pour ce message et les autres messages de démarrage de Remote Control, consultez [Dépannage de Remote Control](/docs/fr/remote-control#troubleshooting)

1122 1136 

1123<h3 id="remote-control-couldnt-refresh-your-login">1137<h3 id="remote-control-couldnt-refresh-your-login">

1124 Remote Control n'a pas pu rafraîchir votre connexion1138 Remote Control n'a pas pu actualiser votre connexion

1125</h3>1139</h3>

1126 1140 

1127Claude Code exécute une connexion [Remote Control](/docs/fr/remote-control) en direct sur des credentials de courte durée qu'il obtient et renouvelle en utilisant votre connexion claude.ai enregistrée. Quand claude.ai arrête d'accepter cette connexion, ou que Claude Code n'a plus de connexion enregistrée, Claude Code arrête Remote Control et vous demande de vous reconnecter. L'une ou l'autre défaillance peut se produire pendant que Claude Code se connecte toujours ou plus tard, quand il renouvelle les credentials.1141Claude Code fait fonctionner une connexion [Remote Control](/docs/fr/remote-control) active avec des identifiants de courte durée qu'il obtient et renouvelle à l'aide de votre connexion claude.ai enregistrée. Lorsque claude.ai cesse d'accepter cette connexion, ou que Claude Code n'a plus de connexion enregistrée, Claude Code arrête Remote Control et vous demande de vous reconnecter. L'un ou l'autre échec peut survenir pendant que Claude Code est encore en train de se connecter ou plus tard, lors du renouvellement des identifiants.

1128 1142 

1129Quand Claude Code demande au service de connexion de rafraîchir votre connexion enregistrée et n'obtient pas de réponse, il garde Remote Control en cours d'exécution et réessaie le rafraîchissement pendant que la credential actuelle de la connexion est toujours valide. Un rafraîchissement n'obtient pas de réponse quand Claude Code ne peut pas atteindre le service de connexion, la requête expire, ou le service échoue sans rejeter votre connexion. Si le service de connexion ne répond toujours pas quand cette credential expire, Claude Code arrête Remote Control et signale `OAuth token refresh failed`.1143Lorsque Claude Code demande au service de connexion d'actualiser votre connexion enregistrée et n'obtient aucune réponse, il maintient Remote Control en fonctionnement et retente l'actualisation tant que les identifiants actuels de la connexion sont encore valides. Une actualisation reste sans réponse lorsque Claude Code ne peut pas joindre le service de connexion, que la requête expire ou que le service échoue sans rejeter votre connexion. Si le service de connexion ne répond toujours pas à l'expiration de ces identifiants, Claude Code arrête Remote Control et signale `OAuth token refresh failed`.

1130 1144 

1131Quand Claude Code arrête Remote Control, il affiche la raison dans un avertissement et dans une ligne de transcription qui commence par `Remote Control disconnected`. Votre session locale continue de s'exécuter sans Remote Control. Cette section couvre ces lignes :1145Lorsque Claude Code arrête Remote Control, il affiche la raison dans un avertissement et dans une ligne de transcription commençant par `Remote Control disconnected`. Votre session locale continue de fonctionner sans Remote Control. Cette section couvre les lignes suivantes :

1132 1146 

1133```text theme={null}1147```text theme={null}

1134Remote Control disconnected — Claude.ai login expired — run /login to restore Remote Control1148Remote Control disconnected — Claude.ai login expired — run /login to restore Remote Control


1142 1156 

1143Claude Code nomme la cause au milieu du message :1157Claude Code nomme la cause au milieu du message :

1144 1158 

1145* ` Claude.ai login expired` et `Claude.ai login was rejected` : claude.ai n'accepte plus votre jeton de connexion enregistré, car il a expiré ou a été révoqué1159* `Claude.ai login expired` et `Claude.ai login was rejected` : claude.ai n'accepte plus votre jeton de connexion enregistré, parce qu'il a expiré ou a été révoqué

1146* ` OAuth token unavailable` : Claude Code n'avait pas de jeton de connexion enregistré quand la credential de la connexion était due pour le renouvellement1160* `OAuth token unavailable` : Claude Code n'avait aucun jeton de connexion enregistré au moment où les identifiants de la connexion devaient être renouvelés

1147* `OAuth token refresh failed` : claude.ai a rejeté votre jeton de connexion enregistré pendant que Claude Code se reconnectait, et le rafraîchissement du jeton n'en a produit aucun nouveau1161* `OAuth token refresh failed` : claude.ai a rejeté votre jeton de connexion enregistré pendant que Claude Code se reconnectait, et l'actualisation du jeton n'en a pas produit de nouveau

1148* `JWT refresh failed: no OAuth token` : Claude Code n'a trouvé aucun jeton de connexion enregistré pour renouveler avec1162* `JWT refresh failed: no OAuth token` : Claude Code n'a trouvé aucun jeton de connexion enregistré avec lequel renouveler

1149* ` Signed out of Claude` : vous vous êtes déconnecté sur cette machine, par exemple en exécutant `/logout` dans un autre terminal, donc Claude Code n'a pas de connexion enregistrée pour renouveler la connexion avec1163* `Signed out of Claude` : vous vous êtes déconnecté sur cette machine, par exemple en exécutant `/logout` dans un autre terminal, Claude Code n'a donc plus de connexion enregistrée avec laquelle renouveler la connexion

1150 1164 

1151**À faire :**1165**Que faire :**

1152 1166 

1153* Exécutez `/login` pour vous reconnecter1167* Exécutez `/login` pour vous reconnecter

1154* Exécutez `/remote-control` pour reconnecter la session. Les messages se terminant par `run /login to restore Remote Control` n'ont pas besoin de cette étape : Claude Code se reconnecte automatiquement une fois que vous vous êtes connecté.1168* Exécutez `/remote-control` pour reconnecter la session. Les messages se terminant par `run /login to restore Remote Control` ne nécessitent pas cette étape : Claude Code se reconnecte de lui-même une fois que vous êtes connecté.

1155 1169 

1156Avant v2.1.224, `OAuth token refresh failed — run /login to re-authenticate` lisait `OAuth token refresh failed — re-authenticate, then re-enable Remote Control`, et `JWT refresh failed: no OAuth token — run /login` lisait `no OAuth token available for recovery (code <N>)`. Les messages `Claude.ai login expired`, `Claude.ai login was rejected` et `OAuth token unavailable` ont été ajoutés dans v2.1.225.1170Avant la v2.1.224, `OAuth token refresh failed — run /login to re-authenticate` s'affichait sous la forme `OAuth token refresh failed — re-authenticate, then re-enable Remote Control`, et `JWT refresh failed: no OAuth token — run /login` sous la forme `no OAuth token available for recovery (code <N>)`. Les messages `Claude.ai login expired`, `Claude.ai login was rejected` et `OAuth token unavailable` ont été ajoutés dans la v2.1.225.

1157 1171 

1158Avant v2.1.238, Claude Code signalait les cas qui disent maintenant `Signed out of Claude` comme `JWT refresh failed: no OAuth token — run /login`, et arrêtait Remote Control avec `Claude.ai login expired — run /login to restore Remote Control` dès qu'un rafraîchissement de connexion n'obtenait pas de réponse.1172Avant la v2.1.238, Claude Code signalait les cas qui affichent désormais `Signed out of Claude` sous la forme `JWT refresh failed: no OAuth token — run /login`, et arrêtait Remote Control avec `Claude.ai login expired — run /login to restore Remote Control` dès qu'une actualisation de connexion restait sans réponse.

1159 1173 

1160<h3 id="remote-control-stopped-because-the-signed-in-account-changed">1174<h3 id="remote-control-stopped-because-the-signed-in-account-changed">

1161 Remote Control s'est arrêté car le compte connecté a changé1175 Remote Control s'est arrêté parce que le compte connecté a changé

1162</h3>1176</h3>

1163 1177 

1164Claude Code affiche cette ligne pendant une session [Remote Control](/docs/fr/remote-control) quand vous vous connectez à un compte ou une organisation claude.ai différent sur cette machine. Vous avez effectué le changement en dehors de la session Claude Code, par exemple en exécutant `/login` dans un autre terminal.1178Claude Code affiche cette ligne pendant une session [Remote Control](/docs/fr/remote-control) lorsque vous vous connectez à un autre compte ou à une autre organisation claude.ai sur cette machine. Vous avez effectué ce changement en dehors de la session Claude Code, par exemple en exécutant `/login` dans un autre terminal.

1165 1179 

1166Une session Remote Control que vous avez démarrée alors que vous étiez connecté via `/login` appartient au compte et à l'organisation claude.ai qui étaient connectés à ce moment-là.1180Une session Remote Control que vous avez démarrée en étant connecté via `/login` appartient au compte et à l'organisation claude.ai connectés à ce moment-là.

1167 1181 

1168```text theme={null}1182```text theme={null}

1169Remote Control disconnected — signed-in claude.ai account or organization changed on this machine — run /remote-control to start a session for the current account, or /login to switch back, then /remote-control1183Remote Control disconnected — signed-in claude.ai account or organization changed on this machine — run /remote-control to start a session for the current account, or /login to switch back, then /remote-control

1170```1184```

1171 1185 

1172Claude Code arrête la session Remote Control dès que claude.ai confirme que le compte ou l'organisation a changé. Votre session locale continue de s'exécuter sans Remote Control.1186Claude Code arrête la session Remote Control dès que claude.ai confirme que le compte ou l'organisation a changé. Votre session locale continue de fonctionner sans Remote Control.

1173 1187 

1174**À faire :**1188**Que faire :**

1175 1189 

1176* Exécutez `/remote-control` pour démarrer une nouvelle session Remote Control sous le compte ou l'organisation actuel1190* Exécutez `/remote-control` pour démarrer une nouvelle session Remote Control sous le compte ou l'organisation actuel

1177* Pour revenir en arrière, exécutez `/login` et reconnectez-vous au compte ou à l'organisation précédent. Puis exécutez `/remote-control`.1191* Pour revenir en arrière, exécutez `/login` et reconnectez-vous au compte ou à l'organisation précédent. Exécutez ensuite `/remote-control`.

1178 1192 

1179Avant v2.1.234, Claude Code ne remarquait pas quand vous basculiez vers un compte ou une organisation différent en dehors de la session Claude Code. Claude Code gardait la session Remote Control connectée jusqu'à ce qu'une requête ultérieure au serveur Remote Control échoue avec `Remote Control server rejected the request (HTTP 404)`. Cet échec pouvait survenir des heures après le changement.1193Avant la v2.1.234, Claude Code ne détectait pas le passage à un autre compte ou à une autre organisation en dehors de la session Claude Code. Claude Code maintenait la session Remote Control connectée jusqu'à ce qu'une requête ultérieure au serveur Remote Control échoue avec `Remote Control server rejected the request (HTTP 404)`. Cet échec pouvait survenir des heures après le changement.

1180 1194 

1181<h3 id="remote-control-stopped-because-the-app-running-the-session-signed-out-or-switched-accounts">1195<h3 id="remote-control-stopped-because-the-app-running-the-session-signed-out-or-switched-accounts">

1182 Remote Control s'est arrêté car l'application exécutant la session s'est déconnectée ou a changé de compte1196 Remote Control s'est arrêté parce que l'application exécutant la session s'est déconnectée ou a changé de compte

1183</h3>1197</h3>

1184 1198 

1185Quand l'application de bureau Claude ou un IDE héberge votre session, Claude Code obtient son jeton de connexion de cette application plutôt que de `/login`. Quand claude.ai rejette ce jeton, Claude Code demande à l'application un nouveau. Si l'application répond qu'elle est déconnectée, ou qu'elle est maintenant connectée à un compte Claude différent, Claude Code termine la session [Remote Control](/docs/fr/remote-control) et envoie à l'application l'une de ces lignes :1199Lorsque l'application de bureau Claude ou un IDE héberge votre session, Claude Code obtient son jeton de connexion auprès de cette application plutôt que via `/login`. Lorsque claude.ai rejette ce jeton, Claude Code en demande un nouveau à l'application. Si l'application répond qu'elle est déconnectée, ou qu'elle est désormais connectée à un autre compte Claude, Claude Code met fin à la session [Remote Control](/docs/fr/remote-control) et envoie à l'application l'une de ces lignes :

1186 1200 

1187```text theme={null}1201```text theme={null}

1188Remote Control stopped — the app running this session is now signed in to a different Claude account1202Remote Control stopped — the app running this session is now signed in to a different Claude account

1189Remote Control stopped — the app running this session is signed out of Claude. Sign in there, then turn Remote Control back on1203Remote Control stopped — the app running this session is signed out of Claude. Sign in there, then turn Remote Control back on

1190```1204```

1191 1205 

1192Votre session locale continue de s'exécuter sans Remote Control.1206Votre session locale continue de fonctionner sans Remote Control.

1193 1207 

1194**À faire :**1208**Que faire :**

1195 1209 

1196* Si l'application est déconnectée, reconnectez-vous à celle-ci, puis réactivez Remote Control dans l'application1210* Si l'application est déconnectée, reconnectez-vous-y, puis réactivez Remote Control dans l'application

1197* Si l'application a changé de compte, Claude Code ne peut pas continuer la session terminée sous le nouveau compte. Démarrez une nouvelle session Remote Control sous ce compte.1211* Si l'application a changé de compte, Claude Code ne peut pas poursuivre la session terminée sous le nouveau compte. Démarrez une nouvelle session Remote Control sous ce compte.

1198 1212 

1199Avant v2.1.238, Claude Code envoyait à l'application les messages `/login` listés sous [Remote Control n'a pas pu rafraîchir votre connexion](#remote-control-couldnt-refresh-your-login) dans les deux cas.1213Avant la v2.1.238, Claude Code envoyait à l'application, dans les deux cas, les messages `run /login` listés sous [Remote Control n'a pas pu actualiser votre connexion](#remote-control-couldnt-refresh-your-login).

1200 1214 

1201<h3 id="oauth-token-revoked-or-expired">1215<h3 id="oauth-token-revoked-or-expired">

1202 Jeton OAuth révoqué ou expiré1216 Jeton OAuth révoqué ou expiré

1203</h3>1217</h3>

1204 1218 

1205Votre connexion enregistrée n'est plus valide. Un jeton révoqué signifie que vous vous êtes déconnecté partout ou qu'un administrateur a supprimé l'accès ; un jeton expiré signifie que le rafraîchissement automatique a échoué en cours de session.1219Votre connexion enregistrée n'est plus valide. Un jeton révoqué signifie que vous vous êtes déconnecté partout ou qu'un administrateur a retiré l'accès ; un jeton expiré signifie que l'actualisation automatique a échoué en cours de session.

1206 1220 

1207Les deux messages signalent un rejet que l'API a retourné pour une requête que Claude Code a envoyée. Quand la connexion enregistrée a déjà été effacée après un rafraîchissement échoué, vous voyez [Connexion expirée](#login-expired) à la place. Si vous vous authentifiez avec un jeton de longue durée dans [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/fr/env-vars), vous voyez les mêmes messages quand ce jeton expire ou est révoqué.1221Les deux messages signalent un rejet renvoyé par l'API pour une requête envoyée par Claude Code. Lorsque la connexion enregistrée a déjà été effacée après un échec d'actualisation, vous voyez plutôt [Connexion expirée](#login-expired). Si vous vous authentifiez avec un jeton de longue durée dans [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/fr/env-vars), vous voyez les mêmes messages lorsque ce jeton expire ou est révoqué.

1208 1222 

1209```text theme={null}1223```text theme={null}

1210OAuth token revoked · Please run /login1224OAuth token revoked · Please run /login

1211Please run /login · API Error: 401 OAuth token has expired ...1225Please run /login · API Error: 401 OAuth token has expired ...

1212```1226```

1213 1227 

1214**À faire :**1228En [mode non interactif](/docs/fr/headless) (`-p`) et dans l'[Agent SDK](/docs/fr/agent-sdk/overview), les messages se présentent comme suit, et le code d'erreur structuré est `authentication_failed` :

1215 1229 

1216* Exécutez `/login` pour vous reconnecter1230```text theme={null}

1217* Si vous vous authentifiez avec la variable d'environnement `CLAUDE_CODE_OAUTH_TOKEN`, Claude Code continue d'envoyer la valeur que vous avez définie après l'échec d'une requête avec un 401, plutôt que de basculer vers le jeton d'une connexion enregistrée. [`/status`](/docs/fr/commands) affiche cette credential comme une ligne `Auth token` lisant `CLAUDE_CODE_OAUTH_TOKEN`. Générez un jeton frais avec [`claude setup-token`](/docs/fr/authentication#generate-a-long-lived-token) et redémarrez avec, ou déconfigurez la variable et exécutez `/login`. Avant v2.1.225, Claude Code pouvait remplacer la valeur de la variable en cours de session par le jeton d'accès de courte durée d'une connexion enregistrée, et la session échouait à nouveau avec des erreurs 401 une fois ce jeton expiré.1231Failed to authenticate: OAuth token revoked. Please log in again or contact your administrator.

1218* Pour les invites répétées de connexion entre les lancements, consultez les vérifications de l'horloge système et les étapes de récupération du stockage des credentials macOS dans [Dépannage](/docs/fr/troubleshoot-install#not-logged-in-or-token-expired)1232Failed to authenticate. API Error: 401 OAuth token has expired ...

1219* Pour les autres défaillances incluant `403 Forbidden` et les problèmes du navigateur OAuth, consultez [Connexion et authentification](/docs/fr/troubleshoot-install#login-and-authentication)1233```

1234 

1235Avant la v2.1.287, en mode non interactif et dans l'Agent SDK, le message de révocation indiquait `Your account does not have access to Claude. Please login again or contact your administrator.`

1236 

1237**Que faire :**

1238 

1239* Exécutez `/login` à l'invite de Claude Code pour vous reconnecter

1240* Si votre commande `-p` ou votre programme Agent SDK utilise une connexion enregistrée, exécutez `claude` dans le même environnement, effectuez `/login`, puis relancez la commande ou le programme. Pour une automatisation qui ne peut pas se connecter de manière interactive, authentifiez-vous avec [`ANTHROPIC_API_KEY`](/docs/fr/env-vars) ou [générez un jeton de longue durée avec `claude setup-token`](/docs/fr/authentication#generate-a-long-lived-token).

1241* Si vous vous authentifiez avec la variable d'environnement `CLAUDE_CODE_OAUTH_TOKEN`, Claude Code continue d'envoyer la valeur que vous avez définie après l'échec d'une requête avec une 401, plutôt que de passer au jeton d'une connexion enregistrée. [`/status`](/docs/fr/commands) affiche ces identifiants sous la forme d'une ligne `Auth token` indiquant `CLAUDE_CODE_OAUTH_TOKEN`. Générez un nouveau jeton avec [`claude setup-token`](/docs/fr/authentication#generate-a-long-lived-token) et redémarrez avec celui-ci, ou supprimez la variable et exécutez `/login`. Avant la v2.1.225, Claude Code pouvait remplacer la valeur de la variable en cours de session par le jeton d'accès de courte durée d'une connexion enregistrée, et la session échouait à nouveau avec des erreurs 401 une fois ce jeton expiré.

1242* Pour des demandes de connexion répétées d'un lancement à l'autre, consultez les vérifications de l'horloge système et les étapes de récupération du stockage des identifiants sur macOS dans [Dépannage](/docs/fr/troubleshoot-install#not-logged-in-or-token-expired)

1243* Pour d'autres échecs, notamment `403 Forbidden` et les problèmes de navigateur OAuth, consultez [Connexion et authentification](/docs/fr/troubleshoot-install#login-and-authentication)

1220 1244 

1221<h3 id="api-error-401-invalid-authentication-credentials">1245<h3 id="api-error-401-invalid-authentication-credentials">

1222 Erreur API : 401 Credentials d'authentification invalides1246 API Error: 401 Invalid authentication credentials

1223</h3>1247</h3>

1224 1248 

1225L'API a reconnu le format de votre credential mais a rejeté le compte ou l'organisation derrière. Anthropic retourne ce message quand une credential a été récemment révoquée, quand une organisation a été désactivée ou a supprimé votre accès, ou quand le compte lui-même a été désactivé, donc un jeton expiré n'est pas la cause. La credential peut être votre connexion enregistrée ou une `ANTHROPIC_API_KEY` approuvée, et la correction diffère, donc commencez par exécuter `/status` pour voir laquelle est active.1249L'API a reconnu le format de vos identifiants mais a rejeté le compte ou l'organisation qui se trouve derrière. Anthropic renvoie ce message lorsque des identifiants ont été récemment révoqués, lorsqu'une organisation a été désactivée ou a retiré votre accès, ou lorsque le compte lui-même a été désactivé ; un jeton expiré n'en est donc pas la cause. Les identifiants peuvent être votre connexion enregistrée ou une `ANTHROPIC_API_KEY` approuvée, et la solution diffère : commencez donc par exécuter `/status` pour voir lesquels sont actifs.

1226 1250 

1227```text theme={null}1251```text theme={null}

1228Please run /login · API Error: 401 Invalid authentication credentials1252Please run /login · API Error: 401 Invalid authentication credentials

1229```1253```

1230 1254 

1231**À faire :**1255**Que faire :**

1232 1256 

1233* Si `/status` affiche une ligne `API key` qui n'est pas marquée comme non utilisée, une [`ANTHROPIC_API_KEY`](/docs/fr/authentication#authentication-precedence) approuvée est la credential active et prend la priorité sur votre connexion, donc `/login` ne la remplace pas. Faites tourner la clé dans la Console Claude, ou revenez à votre abonnement en exécutant `unset ANTHROPIC_API_KEY`, ou dans PowerShell `Remove-Item Env:ANTHROPIC_API_KEY`.1257* Si `/status` affiche une ligne `API key` qui n'est pas marquée comme inutilisée, une [`ANTHROPIC_API_KEY`](/docs/fr/authentication#authentication-precedence) approuvée constitue les identifiants actifs et a priorité sur votre connexion, de sorte que `/login` ne la remplace pas. Renouvelez la clé dans la Claude Console, ou revenez à votre abonnement en exécutant `unset ANTHROPIC_API_KEY`, ou dans PowerShell `Remove-Item Env:ANTHROPIC_API_KEY`.

1234* Si `/status` affiche uniquement votre connexion, exécutez `/login` une fois. Si la credential a été révoquée, une connexion fraîche la remplace.1258* Si `/status` n'affiche que votre connexion, exécutez `/login` une fois. Si les identifiants ont été révoqués, une nouvelle connexion les remplace.

1235* Si le même message revient pour le même compte de connexion, le compte ou l'organisation n'est plus actif. Vérifiez le compte et l'organisation que `/status` signale, et demandez à l'administrateur de votre organisation de restaurer l'accès.1259* Si le même message revient pour le même compte de connexion, le compte ou l'organisation n'est plus actif. Vérifiez le compte et l'organisation que signale `/status`, et demandez à l'administrateur de votre organisation de rétablir l'accès.

1236* Si [`ANTHROPIC_BASE_URL`](/docs/fr/env-vars) pointe vers une [passerelle LLM](/docs/fr/llm-gateway), le texte après `401` est le message de votre passerelle plutôt que celui d'Anthropic, et `/login` ne le change pas. Corrigez plutôt la credential que votre passerelle attend.1260* Si [`ANTHROPIC_BASE_URL`](/docs/fr/env-vars) pointe vers une [passerelle LLM](/docs/fr/llm-gateway), le texte après `401` est le message de votre passerelle et non celui d'Anthropic, et `/login` n'y change rien. Corrigez plutôt les identifiants qu'attend votre passerelle.

1237 1261 

1238<h3 id="login-expired">1262<h3 id="login-expired">

1239 Connexion expirée1263 Connexion expirée

1240</h3>1264</h3>

1241 1265 

1242Claude Code a essayé de renouveler votre connexion claude.ai enregistrée et le service OAuth a rejeté le jeton d'actualisation enregistré, donc Claude Code a effacé les credentials enregistrées. Après cela, chaque requête de modèle s'arrête localement avec ce message avant d'atteindre l'API, car seul `/login` peut créer de nouvelles credentials.1266Claude Code a tenté de renouveler votre connexion claude.ai enregistrée et le service OAuth a rejeté le jeton d'actualisation stocké ; Claude Code a donc effacé les identifiants enregistrés. Ensuite, chaque requête au modèle s'arrête localement avec ce message avant d'atteindre l'API, car seul `/login` peut créer de nouveaux identifiants.

1243 1267 

1244Avant v2.1.206, Claude Code envoyait quand même la requête de modèle avec quelle que soit la credential restante dans l'environnement, et chaque modèle échouait alors avec [Il y a un problème avec le modèle sélectionné](#theres-an-issue-with-the-selected-model) ou un 401 au lieu d'une invite de connexion.1268Avant la v2.1.206, Claude Code envoyait quand même la requête au modèle avec les identifiants restant dans l'environnement, et chaque modèle échouait alors avec [Un problème concerne le modèle sélectionné](#theres-an-issue-with-the-selected-model) ou une 401 au lieu d'une invitation à se connecter.

1245 1269 

1246```text theme={null}1270```text theme={null}

1247Login expired · Please run /login1271Login expired · Please run /login

1248```1272```

1249 1273 

1250En [mode non-interactif](/docs/fr/headless) (`-p`) et l'[Agent SDK](/docs/fr/agent-sdk/overview), le message se lit comme suit, et le code d'erreur structuré est `authentication_failed` :1274En [mode non interactif](/docs/fr/headless) (`-p`) et dans l'[Agent SDK](/docs/fr/agent-sdk/overview), le message se présente comme suit, et le code d'erreur structuré est `authentication_failed` :

1251 1275 

1252```text theme={null}1276```text theme={null}

1253Failed to authenticate: OAuth session expired and could not be refreshed1277Failed to authenticate: OAuth session expired and could not be refreshed

1254```1278```

1255 1279 

1256Ce n'est pas le même état que [Jeton OAuth révoqué ou expiré](#oauth-token-revoked-or-expired). Ces messages signalent un rejet que l'API a retourné. Claude Code lui-même produit `Login expired` pour une connexion qu'il a déjà échoué à renouveler, donc il n'envoie pas de requête. Quand le renouvellement échoue parce que le compte lui-même est suspendu plutôt que la connexion étant obsolète, Claude Code affiche [Votre compte est en attente](#your-account-is-on-hold) à la place.1280Cet état est différent de [Jeton OAuth révoqué ou expiré](#oauth-token-revoked-or-expired). Ces messages signalent un rejet renvoyé par l'API. Claude Code produit lui-même `Login expired` pour une connexion qu'il n'a déjà pas réussi à renouveler ; il n'envoie donc aucune requête. Lorsque le renouvellement échoue parce que le compte lui-même est suspendu plutôt que parce que la connexion est obsolète, Claude Code affiche plutôt [Votre compte est suspendu](#your-account-is-on-hold).

1257 1281 

1258Les sessions authentifiées avec une clé API, [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/fr/env-vars) ou un fournisseur tiers n'utilisent pas la connexion enregistrée et ne voient jamais ce message.1282Les sessions authentifiées avec une clé API, [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/fr/env-vars) ou un fournisseur tiers n'utilisent pas la connexion enregistrée et ne voient jamais ce message.

1259 1283 

1260Vous pouvez vérifier cet état avant l'échec d'une requête : [`/status`](/docs/fr/commands) affiche une ligne `Login` lisant `Expired — log in again`, plus l'organisation et l'e-mail qu'il a enregistrés pour la connexion expirée. La ligne n'apparaît que quand la connexion enregistrée est votre credential active et ne peut plus être rafraîchie. Les sessions authentifiées d'une autre manière n'affichent pas la ligne, même si une connexion expirée reste enregistrée. Avant v2.1.210, `/status` ne donnait aucune indication dans cet état qu'une connexion avait jamais existé, car la credential effacée n'avait rien à signaler.1284Vous pouvez détecter cet état avant l'échec d'une requête : [`/status`](/docs/fr/commands) affiche une ligne `Login` indiquant `Expired — log in again`, ainsi que l'organisation et l'adresse e-mail enregistrées pour la connexion expirée. La ligne n'apparaît que lorsque la connexion enregistrée constitue vos identifiants actifs et ne peut plus être actualisée. Les sessions authentifiées d'une autre manière n'affichent pas cette ligne, même si une connexion expirée reste enregistrée. Avant la v2.1.210, `/status` n'indiquait pas dans cet état qu'une connexion avait jamais existé, car les identifiants effacés ne lui laissaient rien à signaler.

1261 1285 

1262**À faire :**1286**Que faire :**

1263 1287 

1264* Exécutez `/login` pour vous reconnecter. Réessayer sans vous connecter affiche le même message à chaque requête.1288* Exécutez `/login` pour vous reconnecter. Réessayer sans vous connecter affiche le même message à chaque requête.

1265* En mode non-interactif, exécutez `claude` dans le même environnement, complétez `/login`, puis réexécutez votre commande. Pour l'automatisation qui ne peut pas se connecter de manière interactive, authentifiez-vous avec `ANTHROPIC_API_KEY` ou [générez un jeton de longue durée avec `claude setup-token`](/docs/fr/authentication#generate-a-long-lived-token).1289* Si vous vous connectez avec votre compte claude.ai dans une autre fenêtre Claude Code, consultez [Non connecté](#not-logged-in) pour savoir quand cette session commence à utiliser cette connexion d'elle-même.

1290* En mode non interactif, exécutez `claude` dans le même environnement, effectuez `/login`, puis relancez votre commande. Pour une automatisation qui ne peut pas se connecter de manière interactive, authentifiez-vous avec `ANTHROPIC_API_KEY` ou [générez un jeton de longue durée avec `claude setup-token`](/docs/fr/authentication#generate-a-long-lived-token).

1266* Si la connexion continue d'échouer, consultez [Connexion et authentification](/docs/fr/troubleshoot-install#login-and-authentication)1291* Si la connexion continue d'échouer, consultez [Connexion et authentification](/docs/fr/troubleshoot-install#login-and-authentication)

1267 1292 

1268<h3 id="could-not-refresh-your-login">1293<h3 id="could-not-refresh-your-login">

1269 Impossible de rafraîchir votre connexion car un autre processus Claude Code la rafraîchit1294 Impossible d'actualiser votre connexion, car un autre processus Claude Code est en train de l'actualiser

1270</h3>1295</h3>

1271 1296 

1272Ce message ne signifie pas que votre connexion a été rejetée. Votre connexion claude.ai enregistrée avait expiré et devait être renouvelée. Un autre processus Claude Code sur la même machine tenait le verrou de rafraîchissement partagé, ou s'est terminé et l'a laissé derrière, et le rafraîchissement n'a fait aucun progrès pendant que cette session attendait. Claude Code arrête la requête avant de l'envoyer :1297Ce message ne signifie pas que votre connexion a été rejetée. Votre connexion claude.ai enregistrée avait expiré et devait être renouvelée. Un autre processus Claude Code sur la même machine détenait le verrou d'actualisation partagé, ou s'est terminé en le laissant derrière lui, et l'actualisation n'a pas progressé pendant que cette session attendait. Claude Code arrête la requête avant de l'envoyer :

1273 1298 

1274```text theme={null}1299```text theme={null}

1275Could not refresh your login because another Claude Code process is refreshing it (or exited mid-refresh) · Try again in a minute; if it keeps happening, close other Claude Code windows or sign in again with /login1300Could not refresh your login because another Claude Code process is refreshing it (or exited mid-refresh) · Try again in a minute; if it keeps happening, close other Claude Code windows or sign in again with /login

1276```1301```

1277 1302 

1278En [mode non-interactif](/docs/fr/headless) (`-p`) et l'[Agent SDK](/docs/fr/agent-sdk/overview), le message se lit comme suit, et le code d'erreur structuré est `server_error` :1303En [mode non interactif](/docs/fr/headless) (`-p`) et dans l'[Agent SDK](/docs/fr/agent-sdk/overview), le message se présente comme suit, et le code d'erreur structuré est `server_error` :

1279 1304 

1280```text theme={null}1305```text theme={null}

1281Failed to refresh OAuth token: another Claude Code process is refreshing it or exited mid-refresh. This is usually transient; retry in a minute, and if it persists close other Claude Code processes or sign in again1306Failed to refresh OAuth token: another Claude Code process is refreshing it or exited mid-refresh. This is usually transient; retry in a minute, and if it persists close other Claude Code processes or sign in again


1283 1308 

1284Les sessions authentifiées avec une clé API, [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/fr/env-vars) ou un fournisseur tiers n'utilisent pas la connexion enregistrée et ne voient jamais ce message.1309Les sessions authentifiées avec une clé API, [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/fr/env-vars) ou un fournisseur tiers n'utilisent pas la connexion enregistrée et ne voient jamais ce message.

1285 1310 

1286**À faire :**1311**Que faire :**

1287 1312 

1288* Réessayez dans une minute. Si un autre processus complète le rafraîchissement en premier, cette session utilise la connexion renouvelée.1313* Réessayez dans une minute. Si un autre processus termine l'actualisation en premier, cette session utilise la connexion renouvelée.

1289* Si le message continue de revenir, fermez les autres fenêtres et processus Claude Code, puis réessayez.1314* Si le message continue de revenir, fermez les autres fenêtres et processus Claude Code, puis réessayez.

1290* S'il revient sans aucun autre processus Claude Code en cours d'exécution, exécutez `/login`. Se connecter à nouveau n'attend pas le verrou de rafraîchissement.1315* S'il revient alors qu'aucun autre processus Claude Code n'est en cours d'exécution, exécutez `/login`. Se reconnecter n'attend pas le verrou d'actualisation.

1291 1316 

1292<h3 id="couldnt-save-your-login">1317<h3 id="couldnt-save-your-login">

1293 Impossible d'enregistrer votre connexion1318 Impossible d'enregistrer votre connexion

1294</h3>1319</h3>

1295 1320 

1296Vous vous êtes connecté avec claude.ai, mais Claude Code n'a pas pu enregistrer la connexion dans son magasin de credentials, donc la connexion n'a pas été complétée. Sur macOS, cela peut se produire quand le trousseau de connexion se verrouille, par exemple au sommeil ou à l'inactivité, après que Claude Code ait déjà lu ou enregistré des credentials dedans pendant la même session.1321Vous vous êtes connecté avec claude.ai, mais Claude Code n'a pas pu enregistrer la connexion dans son magasin d'identifiants ; la connexion n'a donc pas abouti. Sur macOS, cela peut se produire lorsque le trousseau de session se verrouille, par exemple lors de la mise en veille ou d'une inactivité, après que Claude Code y a déjà lu ou enregistré des identifiants au cours de la même session.

1297 1322 

1298```text theme={null}1323```text theme={null}

1299Couldn't save your login. If your Mac's keychain is locked, unlock it and log in again.1324Couldn't save your login. If your Mac's keychain is locked, unlock it and log in again.

1300Couldn't save your login. Try logging in again.1325Couldn't save your login. Try logging in again.

1301```1326```

1302 1327 

1303La première forme apparaît sur macOS et la deuxième partout ailleurs. Une défaillance transitoire du magasin de credentials, comme un délai d'expiration ou un magasin illisible, produit le même message.1328La première forme apparaît sur macOS et la seconde partout ailleurs. Un échec transitoire du magasin d'identifiants, comme un délai d'expiration ou un magasin illisible, produit le même message.

1304 1329 

1305**À faire :**1330**Que faire :**

1306 1331 

1307* Sur macOS, déverrouillez le trousseau de connexion, puis exécutez `/login` à nouveau1332* Sur macOS, déverrouillez le trousseau de session, puis exécutez à nouveau `/login`

1308* Sur d'autres plates-formes, exécutez `/login` à nouveau1333* Sur les autres plateformes, exécutez à nouveau `/login`

1309* Si la connexion ne s'enregistre toujours pas, consultez [Non connecté ou token expiré](/docs/fr/troubleshoot-install#not-logged-in-or-token-expired) pour la commande de déverrouillage du trousseau et d'autres étapes de récupération du stockage des credentials1334* Si la connexion ne s'enregistre toujours pas, consultez [Non connecté ou jeton expiré](/docs/fr/troubleshoot-install#not-logged-in-or-token-expired) pour la commande de déverrouillage du trousseau et d'autres étapes de récupération du stockage des identifiants

1310 1335 

1311<h3 id="failed-to-start-oauth-callback-server">1336<h3 id="failed-to-start-oauth-callback-server">

1312 Impossible de démarrer le serveur de rappel OAuth1337 Échec du démarrage du serveur de rappel OAuth

1313</h3>1338</h3>

1314 1339 

1315Quand `/login`, `claude auth login` ou `claude setup-token` vous connecte via le navigateur, Claude Code ouvre un port d'écoute sur `127.0.0.1` pour que votre navigateur puisse retourner le résultat de la connexion. Ce message signifie que Claude Code n'a pas pu ouvrir ce port, et la connexion s'arrête avant qu'une fenêtre de navigateur ou une URL de connexion n'apparaisse :1340Lorsque `/login`, `claude auth login` ou `claude setup-token` vous connecte via le navigateur, Claude Code ouvre un port d'écoute sur `127.0.0.1` afin que votre navigateur puisse lui renvoyer le résultat de la connexion. Ce message signifie que Claude Code n'a pas pu ouvrir ce port, et la connexion s'arrête avant qu'une fenêtre de navigateur ou une URL de connexion n'apparaisse :

1316 1341 

1317```text theme={null}1342```text theme={null}

1318Failed to start OAuth callback server: Failed to start server. Is port 0 in use?1343Failed to start OAuth callback server: Failed to start server. Is port 0 in use?

1319```1344```

1320 1345 

1321Si votre message se termine par `Is port 0 in use?`, la tentative d'écoute sur l'adresse de bouclage IPv4 `127.0.0.1` a échoué directement. Parce que l'échec se produit avant qu'une URL de connexion n'existe, le flux `Paste code here if prompted` n'est pas disponible comme solution de contournement.1346Si votre message se termine par `Is port 0 in use?`, la tentative d'écoute sur l'adresse de bouclage IPv4 `127.0.0.1` a échoué purement et simplement. Comme l'échec survient avant qu'une URL de connexion n'existe, le flux `Paste code here if prompted` n'est pas disponible comme solution de contournement.

1322 1347 

1323**À faire :**1348**Que faire :**

1324 1349 

1325* Pour vous connecter immédiatement sans l'écouteur local : si vous utilisez un abonnement claude.ai, exécutez [`claude setup-token`](/docs/fr/authentication#generate-a-long-lived-token) sur une machine où la connexion fonctionne et définissez le jeton qu'il imprime comme `CLAUDE_CODE_OAUTH_TOKEN` sur cette machine. Sinon, définissez `ANTHROPIC_API_KEY` sur une clé de la [Console Claude](https://platform.claude.com/settings/keys). [Précédence d'authentification](/docs/fr/authentication#authentication-precedence) explique comment Claude Code choisit entre les credentials.1350* Pour vous connecter immédiatement sans l'écouteur local : si vous utilisez un abonnement claude.ai, exécutez [`claude setup-token`](/docs/fr/authentication#generate-a-long-lived-token) sur une machine où la connexion fonctionne et définissez le jeton qu'il affiche comme `CLAUDE_CODE_OAUTH_TOKEN` sur cette machine. Sinon, définissez `ANTHROPIC_API_KEY` sur une clé provenant de la [Claude Console](https://platform.claude.com/settings/keys). [Priorité d'authentification](/docs/fr/authentication#authentication-precedence) explique comment Claude Code choisit entre les identifiants.

1326* Pour utiliser la connexion du navigateur sur cette machine à la place, Claude Code doit pouvoir écouter sur `127.0.0.1`. S'il s'exécute à l'intérieur d'un bac à sable, vérifiez que la politique du bac à sable permet d'écouter sur les ports locaux, puis exécutez `/login` à nouveau. S'il devrait pouvoir et échoue toujours, exécutez `/feedback` pour que le rapport inclue les détails de votre environnement.1351* Pour utiliser plutôt la connexion par navigateur sur cette machine, Claude Code doit pouvoir écouter sur `127.0.0.1`. S'il s'exécute dans un sandbox, vérifiez que la politique du sandbox autorise l'écoute sur les ports locaux, puis exécutez à nouveau `/login`. S'il devrait pouvoir le faire et que cela échoue toujours, exécutez `/feedback` afin que le rapport inclue les détails de votre environnement.

1327 1352 

1328<h3 id="claude-login-not-accepted">1353<h3 id="claude-login-not-accepted">

1329 Connexion Claude non acceptée1354 Connexion Claude non acceptée

1330</h3>1355</h3>

1331 1356 

1332Vous avez essayé de démarrer une [session cloud](/docs/fr/claude-code-on-the-web), et le serveur a refusé de la créer avec un 401 : il n'a pas accepté la connexion Claude que cette machine a envoyée, généralement parce que la connexion a expiré ou a été révoquée.1357Vous avez tenté de démarrer une [session cloud](/docs/fr/claude-code-on-the-web), et le serveur a refusé de la créer avec une 401 : il n'a pas accepté la connexion Claude envoyée par cette machine, généralement parce que la connexion a expiré ou a été révoquée.

1333 1358 

1334La première partie de la ligne est la propre raison du serveur quand il en donne une. Sinon, la ligne se lit :1359La première partie de la ligne est la raison propre du serveur lorsqu'il en fournit une. Sinon, la ligne indique :

1335 1360 

1336```text theme={null}1361```text theme={null}

1337Claude login not accepted · Run /login, then try again1362Claude login not accepted · Run /login, then try again

1338```1363```

1339 1364 

1340**À faire :**1365**Que faire :**

1341 1366 

1342* Exécutez `/login`, complétez la connexion, puis démarrez la session à nouveau1367* Exécutez `/login`, terminez la connexion, puis démarrez à nouveau la session

1343 1368 

1344<h3 id="artifacts-need-a-claude-ai-login">1369<h3 id="artifacts-need-a-claude-ai-login">

1345 Les artefacts ont besoin d'une connexion claude.ai1370 Les artefacts nécessitent une connexion claude.ai

1346</h3>1371</h3>

1347 1372 

1348Claude Code a refusé une publication ou une lecture d'[artefact](/docs/fr/artifacts) car la session n'a pas de connexion claude.ai qu'elle peut utiliser pour les artefacts.1373Claude Code a refusé une publication ou une lecture d'[artefact](/docs/fr/artifacts) parce que la session n'a aucune connexion claude.ai utilisable pour les artefacts.

1349 1374 

1350Chaque forme du message commence par les mêmes mots, suivis d'un remède qui dépend de la façon dont votre session s'authentifie. Sans credential concurrente, il se lit :1375Chaque forme du message commence par les mêmes mots, suivis d'une solution qui dépend de la manière dont votre session s'authentifie. En l'absence d'identifiants concurrents, il indique :

1351 1376 

1352```text theme={null}1377```text theme={null}

1353Artifacts need a claude.ai login. Run /login and select "Claude account with subscription", then retry — the "Anthropic Console account" option does not provide claude.ai credentials.1378Artifacts need a claude.ai login. Run /login and select "Claude account with subscription", then retry — the "Anthropic Console account" option does not provide claude.ai credentials.

1354```1379```

1355 1380 

1356**À faire :**1381**Que faire :**

1357 1382 

1358* Exécutez `/login` et sélectionnez **Claude account with subscription**. L'option **Anthropic Console account** ne fournit pas de credentials claude.ai.1383* Exécutez `/login` et sélectionnez **Claude account with subscription**. L'option **Anthropic Console account** ne fournit pas d'identifiants claude.ai.

1359* Quand le message nomme une credential qui prend la priorité, comme `ANTHROPIC_API_KEY`, un paramètre `apiKeyHelper` ou une clé Console enregistrée par une `/login` précédente, supprimez-la de la façon que le message dit, puis exécutez `/login`1384* Lorsque le message nomme des identifiants qui ont priorité, comme `ANTHROPIC_API_KEY`, un paramètre `apiKeyHelper` ou une clé Console enregistrée par un `/login` précédent, supprimez-les comme l'indique le message, puis exécutez `/login`

1360* Quand le message dit que cette session distante s'authentifie via la machine qui l'a lancée, connectez-vous à claude.ai sur cette machine, puis reconnectez la session1385* Lorsque le message indique que cette session à distance s'authentifie via la machine qui l'a lancée, connectez-vous à claude.ai sur cette machine, puis reconnectez la session

1361* Quand le message dit que la credential est injectée par l'environnement hôte de la session, vous ne pouvez pas la modifier dans cette session ; démarrez une session qui est connectée à claude.ai1386* Lorsque le message indique que les identifiants sont injectés par l'environnement hôte de la session, vous ne pouvez pas les modifier dans cette session ; démarrez une session connectée à claude.ai

1362* Consultez [Disponibilité](/docs/fr/artifacts#availability) pour les autres exigences que les artefacts ont, comme le plan, le fournisseur de modèle et la politique d'organisation1387* Consultez [Disponibilité](/docs/fr/artifacts#availability) pour les autres exigences des artefacts, comme le forfait, le fournisseur de modèle et la politique de l'organisation

1363 1388 

1364<h3 id="administrator-policy-requires-a-cloud-gateway-sign-in">1389<h3 id="administrator-policy-requires-a-cloud-gateway-sign-in">

1365 La politique de l'administrateur nécessite une connexion à la passerelle Cloud1390 La politique de l'administrateur exige une connexion à la passerelle cloud

1366</h3>1391</h3>

1367 1392 

1368Un [paramètre géré](/docs/fr/managed-settings) d'un administrateur sur cette machine a défini [`forceLoginMethod`](/docs/fr/settings-reference#forceloginmethod) à `"gateway"` ou a défini [`forceLoginGatewayUrl`](/docs/fr/settings-reference#forcelogingatewayurl). À moins que vous sélectionniez un fournisseur cloud via une variable comme `CLAUDE_CODE_USE_BEDROCK`, Claude Code n'accepte alors que la connexion [passerelle d'applications Claude](/docs/fr/claude-apps-gateway). Vous voyez l'un de deux messages :1393Les [paramètres gérés](/docs/fr/managed-settings) d'un administrateur sur cette machine définissent [`forceLoginMethod`](/docs/fr/settings-reference#forceloginmethod) sur `"gateway"` ou définissent [`forceLoginGatewayUrl`](/docs/fr/settings-reference#forcelogingatewayurl). Sauf si vous sélectionnez un fournisseur cloud via une variable comme `CLAUDE_CODE_USE_BEDROCK`, Claude Code n'accepte alors que la connexion à la [passerelle des applications Claude](/docs/fr/claude-apps-gateway). Vous voyez l'un de ces deux messages :

1369 1394 

1370```text theme={null}1395```text theme={null}

1371Not signed in to the Cloud gateway — run /login.1396Not signed in to the Cloud gateway — run /login.

1372```1397```

1373 1398 

1374Les requêtes de modèle échouent avec ce message quand la session n'a pas de connexion à la passerelle, par exemple parce que vous n'avez pas exécuté `/login` depuis que la politique a atteint la machine.1399Les requêtes au modèle échouent avec ce message lorsque la session n'a pas de connexion à la passerelle, par exemple parce que vous n'avez pas exécuté `/login` depuis que la politique a atteint la machine.

1375 1400 

1376Si vous avez également une credential `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` ou `apiKeyHelper` configurée et que les paramètres gérés définissent `forceLoginMethod`, Claude Code se termine au démarrage à la place avec un message qui commence par :1401Si la machine détient également des identifiants émis par Anthropic et que les paramètres gérés définissent `forceLoginMethod` ou `forceLoginOrgUUID`, Claude Code se ferme plutôt au démarrage. Ces identifiants peuvent être une variable `ANTHROPIC_API_KEY` ou `ANTHROPIC_AUTH_TOKEN`, un paramètre `apiKeyHelper` ou une clé API enregistrée par une connexion Claude Console antérieure.

1402 

1403Le message de démarrage nomme les identifiants avec lesquels la session est configurée, l'endroit où ils sont définis et l'étape qui les supprime. Par exemple, avec une variable `ANTHROPIC_API_KEY` définie dans votre shell, il indique :

1377 1404 

1378```text theme={null}1405```text theme={null}

1379Administrator policy requires a Cloud gateway sign-in on this machine; the1406Administrator policy requires a Cloud gateway sign-in on this machine, but this session is configured with an API key from ANTHROPIC_API_KEY, which a gateway machine does not accept.

1380Anthropic-issued credential configured here (ANTHROPIC_API_KEY,1407 

1381ANTHROPIC_AUTH_TOKEN, or apiKeyHelper) is not used.1408To continue: unset ANTHROPIC_API_KEY (or run in a shell without it), then run claude and sign in with /login.

1382```1409```

1383 1410 

1384**À faire :**1411**Que faire :**

1385 1412 

1386* Exécutez `/login` et complétez la connexion sur l'écran **Cloud gateway**1413* Pour `Not signed in to the Cloud gateway`, exécutez `/login` et terminez la connexion sur l'écran **Cloud gateway**

1387* Pour le message de démarrage, supprimez le paramètre `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` ou `apiKeyHelper` que vous avez configuré, puis démarrez `claude` et exécutez `/login`1414* Pour le message de démarrage, supprimez les identifiants en suivant les étapes à la fin du message

1388* Si vous pensez que la machine ne devrait pas nécessiter la passerelle, demandez à l'administrateur qui la gère de supprimer `forceLoginMethod` et `forceLoginGatewayUrl` de ses paramètres gérés1415* Si vous pensez que la machine ne devrait pas exiger la passerelle, demandez à l'administrateur qui la gère de retirer `forceLoginMethod` et `forceLoginGatewayUrl` de ses paramètres gérés

1389 1416 

1390Sur v2.1.265, une régression a également affiché le premier message dans certaines configurations de passerelle LLM et proxy qui s'authentifient avec une clé API, `apiKeyHelper` ou des en-têtes personnalisés, même sans exigence d'administrateur sur la machine. Mettez à jour vers v2.1.266 ou ultérieur. Vous n'avez pas besoin de modifier votre configuration.1417Avant la v2.1.284, le message de démarrage listait les identifiants possibles au lieu de nommer ceux qui étaient configurés. Il commençait par `Administrator policy requires a Cloud gateway sign-in on this machine; the Anthropic-issued credential configured here (ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN, or apiKeyHelper) is not used.` Si vous voyez cette formulation et ne parvenez pas à déterminer quels identifiants supprimer, passez à la v2.1.284 ou ultérieure et relancez `claude`.

1391 1418 

1392Avant v2.1.261, sur les machines qui définissent `forceLoginMethod` à `"gateway"`, Claude Code utilisait une connexion enregistrée restante au lieu d'échouer les requêtes de modèle, et signalait une credential d'environnement configurée avec `This machine's managed settings require a first-party login` au lieu du message de démarrage. Avant v2.1.265, une machine dont les paramètres gérés définissaient uniquement `forceLoginGatewayUrl` ne nécessitait pas la connexion à la passerelle, et Claude Code utilisait une credential restante là.1419Sur la v2.1.265, une régression affichait également le premier message dans certaines configurations de passerelle LLM et de proxy qui s'authentifient avec une clé API, `apiKeyHelper` ou des en-têtes personnalisés, même sans exigence de l'administrateur sur la machine. Passez à la v2.1.266 ou ultérieure. Vous n'avez pas besoin de modifier votre configuration.

1420 

1421Avant la v2.1.261, sur les machines qui définissaient `forceLoginMethod` sur `"gateway"`, Claude Code utilisait une connexion enregistrée résiduelle au lieu de faire échouer les requêtes au modèle, et signalait des identifiants d'environnement configurés avec `This machine's managed settings require a first-party login` au lieu du message de démarrage.

1393 1422 

1394<h3 id="your-account-is-on-hold">1423<h3 id="your-account-is-on-hold">

1395 Votre compte est en attente1424 Votre compte est suspendu

1396</h3>1425</h3>

1397 1426 

1398Le compte Claude derrière votre connexion a été suspendu. Claude Code affiche le premier message quand il essaie de renouveler votre connexion enregistrée et apprend de la suspension, et le deuxième quand une connexion que vous complétez dans le navigateur la signale :1427Le compte Claude associé à votre connexion a été suspendu. Claude Code affiche le premier message lorsqu'il tente de renouveler votre connexion enregistrée et apprend la suspension, et le second lorsqu'une connexion que vous effectuez dans le navigateur la signale :

1399 1428 

1400```text theme={null}1429```text theme={null}

1401Your account is on hold and can't use Claude Code. View details or appeal: https://claude.ai/restricted1430Your account is on hold and can't use Claude Code. View details or appeal: https://claude.ai/restricted

1402Your account is on hold and can't sign in to Claude Code. View details or appeal: https://claude.ai/restricted1431Your account is on hold and can't sign in to Claude Code. View details or appeal: https://claude.ai/restricted

1403```1432```

1404 1433 

1405Se reconnecter avec le même compte n'efface pas le message, car la suspension est sur le compte plutôt que sur la connexion. En [mode non-interactif](/docs/fr/headless) (`-p`) et l'[Agent SDK](/docs/fr/agent-sdk/overview), le code d'erreur structuré est `account_on_hold`. Avant v2.1.235, Claude Code signalait un compte suspendu comme [Connexion expirée · Veuillez exécuter /login](#login-expired), dont les étapes de récupération ne peuvent pas effacer une suspension.1434Se reconnecter avec le même compte ne fait pas disparaître le message, car la suspension porte sur le compte et non sur la connexion. En [mode non interactif](/docs/fr/headless) (`-p`) et dans l'[Agent SDK](/docs/fr/agent-sdk/overview), le code d'erreur structuré est `account_on_hold`. Avant la v2.1.235, Claude Code signalait un compte suspendu sous la forme [Login expired · Please run /login](#login-expired), dont les étapes de récupération ne peuvent pas lever une suspension.

1406 1435 

1407**À faire :**1436**Que faire :**

1408 1437 

1409* Ouvrez le lien dans le message pour afficher les détails de la suspension ou l'appeler1438* Ouvrez le lien du message pour consulter les détails de la suspension ou faire appel

1410* Si vous avez un autre compte Claude ou une clé API qui n'est pas affectée par la suspension, vous pouvez continuer à travailler pendant que la suspension est résolue : exécutez `/login` avec ce compte, ou définissez la clé avec `ANTHROPIC_API_KEY`1439* Si vous disposez d'un autre compte Claude ou d'une clé API non concernés par la suspension, vous pouvez continuer à travailler pendant sa résolution : exécutez `/login` avec ce compte, ou définissez la clé avec `ANTHROPIC_API_KEY`

1411 1440 

1412<h3 id="anthropic-profile-login-expired">1441<h3 id="anthropic-profile-login-expired">

1413 Connexion au profil Anthropic expirée1442 Connexion au profil Anthropic expirée

1414</h3>1443</h3>

1415 1444 

1416Claude Code s'authentifie via un profil de credential Anthropic dont la credential de connexion enregistrée a expiré, et le profil ne contient pas de credential d'actualisation que Claude Code peut utiliser pour la renouveler. Claude Code arrête chaque requête localement sans réessayer, car un réessai lirait la même credential expirée.1445Claude Code s'authentifie via un profil d'identifiants Anthropic dont les identifiants de connexion enregistrés ont expiré, et le profil ne contient aucun identifiant d'actualisation que Claude Code pourrait utiliser pour les renouveler. Claude Code arrête chaque requête localement sans réessayer, car une nouvelle tentative lirait les mêmes identifiants expirés.

1417 1446 

1418```text theme={null}1447```text theme={null}

1419Anthropic profile login expired · Re-authenticate your Anthropic profile1448Anthropic profile login expired · Re-authenticate your Anthropic profile

1420Anthropic profile login expired · Run /login to use your claude.ai account instead, or re-authenticate the profile1449Anthropic profile login expired · Run /login to use your claude.ai account instead, or re-authenticate the profile

1421```1450```

1422 1451 

1423Cela n'apparaît que quand la credential active provient d'un profil de credential Anthropic, un que vous sélectionnez avec la variable d'environnement `ANTHROPIC_PROFILE`, que Claude Code découvre comme le profil actif dans votre répertoire de configuration Anthropic, ou que Claude Code a écrit quand vous [vous êtes connecté sans clé API](/docs/fr/authentication#sign-in-without-an-api-key). Les sessions qui s'authentifient avec une clé API, un jeton bearer comme `ANTHROPIC_AUTH_TOKEN` ou un fournisseur tiers ne voient jamais ce message.1452Ce message n'apparaît que lorsque les identifiants actifs proviennent d'un profil d'identifiants Anthropic, que vous sélectionnez avec la variable d'environnement `ANTHROPIC_PROFILE`, que Claude Code découvre comme profil actif dans votre répertoire de configuration Anthropic, ou que Claude Code a écrit lorsque vous vous êtes [connecté sans clé API](/docs/fr/authentication#sign-in-without-an-api-key). Les sessions qui s'authentifient avec une clé API, un jeton bearer comme `ANTHROPIC_AUTH_TOKEN` ou un fournisseur tiers ne voient jamais ce message.

1424 1453 

1425Sur une machine qui [offre la connexion sans clé](/docs/fr/authentication#sign-in-without-an-api-key), exécutez `/login`, choisissez le compte Anthropic Console et reconnectez-vous pour renouveler un profil que la connexion Console sans clé ou la CLI Claude Platform `ant auth login` a écrit. Claude Code remplace la credential expirée dans ce profil. Pour un profil de fédération ou un créé par un autre outil, `/login` ne renouvelle pas la credential. La forme que vous voyez dépend de si vous avez sélectionné le profil ou si Claude Code l'a découvert :1454Sur une machine qui [propose la connexion sans clé](/docs/fr/authentication#sign-in-without-an-api-key), exécutez `/login`, choisissez le compte Anthropic Console et reconnectez-vous pour renouveler un profil écrit par la connexion Console sans clé ou par `ant auth login` de la Claude Platform CLI. Claude Code remplace les identifiants expirés dans ce profil. Pour un profil de fédération ou un profil créé par un autre outil, `/login` ne renouvelle pas les identifiants. La forme que vous voyez dépend de si vous avez sélectionné le profil ou si Claude Code l'a découvert :

1426 1455 

1427* Quand vous définissez `ANTHROPIC_PROFILE` explicitement, le message se termine par `Re-authenticate your Anthropic profile`.1456* Lorsque vous définissez `ANTHROPIC_PROFILE` explicitement, le message se termine par `Re-authenticate your Anthropic profile`.

1428* Quand Claude Code a découvert le profil à partir de votre répertoire de configuration, le message offre `/login`, car Claude Code donne la priorité à une `/login` fonctionnelle sur le profil découvert et s'authentifie ensuite avec votre compte claude.ai ou Console à la place. Avant v2.1.234, Claude Code affichait la forme `Re-authenticate your Anthropic profile` dans ce cas aussi.1457* Lorsque Claude Code a découvert le profil depuis votre répertoire de configuration, le message propose `/login`, car Claude Code donne la priorité à un `/login` fonctionnel sur le profil découvert et s'authentifie alors avec votre compte claude.ai ou Console. Avant la v2.1.234, Claude Code affichait également la forme `Re-authenticate your Anthropic profile` dans ce cas.

1429 1458 

1430**À faire :**1459**Que faire :**

1431 1460 

1432* Reconnectez-vous au profil, puis réessayez : sur une machine qui [offre la connexion sans clé](/docs/fr/authentication#sign-in-without-an-api-key), exécutez `/login` et choisissez le compte Anthropic Console pour un profil que la connexion Console sans clé ou la CLI Claude Platform `ant auth login` a écrit ; pour les autres profils, utilisez l'outil qui les a créés1461* Reconnectez-vous au profil, puis réessayez : sur une machine qui [propose la connexion sans clé](/docs/fr/authentication#sign-in-without-an-api-key), exécutez `/login` et choisissez le compte Anthropic Console pour un profil écrit par la connexion Console sans clé ou par `ant auth login` de la Claude Platform CLI ; pour les autres profils, utilisez l'outil qui les a créés

1433* Si un administrateur a provisionné la credential du profil, demandez-lui d'en émettre une nouvelle1462* Si un administrateur a provisionné les identifiants du profil, demandez-lui d'en émettre de nouveaux

1434* Exécutez `/status` pour confirmer la source de credential active et le nom du profil1463* Exécutez `/status` pour confirmer la source d'identifiants active et le nom du profil

1435* Pour arrêter d'utiliser le profil, déconfigurez `ANTHROPIC_PROFILE` si vous l'avez défini, puis authentifiez-vous d'une autre manière, comme `/login` ou `ANTHROPIC_API_KEY`1464* Pour cesser d'utiliser le profil, supprimez `ANTHROPIC_PROFILE` si vous l'avez définie, puis authentifiez-vous d'une autre manière, par exemple avec `/login` ou `ANTHROPIC_API_KEY`

1436 1465 

1437<h3 id="oauth-scope-requirement">1466<h3 id="oauth-scope-requirement">

1438 Exigence de portée OAuth1467 Exigence de scope OAuth

1439</h3>1468</h3>

1440 1469 

1441Le jeton enregistré est antérieur à une portée de permission qu'une fonctionnalité plus récente nécessite :1470Le jeton stocké est antérieur à un scope de permission dont une fonctionnalité plus récente a besoin :

1442 1471 

1443```text theme={null}1472```text theme={null}

1444OAuth token does not meet scope requirement: user:profile1473OAuth token does not meet scope requirement: user:profile

1445```1474```

1446 1475 

1447**À faire :**1476**Que faire :**

1448 1477 

1449* Exécutez `/login` pour obtenir un nouveau jeton avec les portées actuelles. Vous n'avez pas besoin de vous déconnecter d'abord.1478* Exécutez `/login` pour obtenir un nouveau jeton avec les scopes actuels. Vous n'avez pas besoin de vous déconnecter au préalable.

1450 1479 

1451<h3 id="claude-ai-rejected-the-session-token">1480<h3 id="claude-ai-rejected-the-session-token">

1452 claude.ai a rejeté le jeton de session1481 claude.ai a rejeté le jeton de session

1453</h3>1482</h3>

1454 1483 

1455Une requête de [connecteur claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai) a échoué car claude.ai a rejeté le jeton de votre connexion Claude Code. Le jeton rejeté est votre connexion, pas l'autorisation propre du connecteur dans claude.ai, donc autoriser le connecteur à nouveau ne le résout pas. Dans `/mcp`, le connecteur s'affiche comme `session token rejected` et sa vue de détail se lit :1484Une requête d'un [connecteur claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai) a échoué parce que claude.ai a rejeté le jeton de votre connexion Claude Code. Le jeton rejeté est votre connexion, et non l'autorisation propre du connecteur dans claude.ai ; autoriser à nouveau le connecteur ne résout donc pas le problème. Dans `/mcp`, le connecteur apparaît comme `session token rejected` et sa vue détaillée indique :

1456 1485 

1457```text theme={null}1486```text theme={null}

1458claude.ai rejected the session token. Run /login, then reconnect.1487claude.ai rejected the session token. Run /login, then reconnect.

1459```1488```

1460 1489 

1461**À faire :**1490**Que faire :**

1462 1491 

1463* Exécutez `/login` pour vous reconnecter1492* Exécutez `/login` pour vous reconnecter

1464* Reconnectez le connecteur à partir de `/mcp`, ou exécutez `/mcp reconnect <server>`. La reconnexion avant de vous reconnecter laisse le connecteur dans le même état. L'option **Reconnect** du panneau `/mcp` signale `your claude.ai session token was rejected` ; la forme `/mcp reconnect <server>` tapée signale une reconnexion réussie même si le jeton est toujours rejeté.1493* Reconnectez le connecteur depuis `/mcp`, ou exécutez `/mcp reconnect <server>`. Reconnecter avant de vous être reconnecté laisse le connecteur dans le même état. L'option **Reconnect** du panneau `/mcp` signale `your claude.ai session token was rejected` ; la forme saisie `/mcp reconnect <server>` signale une reconnexion réussie alors que le jeton est toujours rejeté.

1465 1494 

1466Avant v2.1.222, Claude Code marquait le connecteur comme ayant besoin d'authentification à la place, ce qui vous pointait vers le flux d'autorisation du connecteur même si le compléter ne résolvait pas l'état.1495Avant la v2.1.222, Claude Code marquait plutôt le connecteur comme nécessitant une authentification, ce qui vous orientait vers le flux d'autorisation du connecteur alors que le mener à terme ne résolvait pas l'état.

1467 1496 

1468<h3 id="mcp-server-needs-you-to-sign-in-again">1497<h3 id="mcp-server-needs-you-to-sign-in-again">

1469 Le serveur MCP a besoin que vous vous reconnectiez1498 Le serveur MCP vous demande de vous reconnecter

1470</h3>1499</h3>

1471 1500 

1472Un [serveur MCP](/docs/fr/mcp) distant a rejeté la credential sur un appel d'outil en cours de session, généralement parce qu'une connexion ou un jeton a expiré ou parce que le jeton manque d'une permission que l'outil nécessite. L'appel d'outil échoue, et `/mcp` marque le serveur comme [ayant besoin d'authentification](/docs/fr/mcp#authenticate-with-remote-mcp-servers).1501Un [serveur MCP](/docs/fr/mcp) distant a rejeté les identifiants lors d'un appel d'outil en cours de session, généralement parce qu'une connexion ou un jeton a expiré ou parce que le jeton ne dispose pas d'une permission dont l'outil a besoin. L'appel d'outil échoue, et `/mcp` marque le serveur comme [nécessitant une authentification](/docs/fr/mcp#authenticate-with-remote-mcp-servers).

1473 1502 

1474Pour un serveur auquel vous vous connectez à partir de Claude Code, y compris un connecteur claude.ai, la connexion a expiré ou a été révoquée :1503Pour un serveur auquel vous vous connectez depuis Claude Code, y compris un connecteur claude.ai, la connexion a expiré ou a été révoquée :

1475 1504 

1476```text theme={null}1505```text theme={null}

1477MCP server "<name>" needs you to sign in again (run /mcp to re-authenticate)1506MCP server "<name>" needs you to sign in again (run /mcp to re-authenticate)

1478```1507```

1479 1508 

1480Exécutez `/mcp`, sélectionnez le serveur et reconnectez-vous à partir de son menu.1509Exécutez `/mcp`, sélectionnez le serveur et reconnectez-vous depuis son menu.

1481 1510 

1482Pour un serveur configuré avec un script [`headersHelper`](/docs/fr/mcp#use-dynamic-headers-for-custom-authentication), Claude Code a déjà réexécuté le helper et réessayé l'appel une fois avant d'afficher ceci :1511Pour un serveur configuré avec un script [`headersHelper`](/docs/fr/mcp#use-dynamic-headers-for-custom-authentication), Claude Code a déjà réexécuté le helper et relancé l'appel une fois avant d'afficher ceci :

1483 1512 

1484```text theme={null}1513```text theme={null}

1485MCP server "<name>" rejected the credential from its headersHelper (check the helper and run /mcp to reconnect, or to authenticate if the server also uses OAuth)1514MCP server "<name>" rejected the credential from its headersHelper (check the helper and run /mcp to reconnect, or to authenticate if the server also uses OAuth)

1486```1515```

1487 1516 

1488Vérifiez que le helper retourne une credential que le serveur accepte, puis reconnectez à partir de `/mcp`, qui réexécute le helper.1517Vérifiez que le helper renvoie des identifiants que le serveur accepte, puis reconnectez-vous depuis `/mcp`, qui réexécute le helper.

1489 1518 

1490Pour un serveur avec un en-tête `Authorization` statique dans sa configuration :1519Pour un serveur avec un en-tête `Authorization` statique dans sa configuration :

1491 1520 


1493MCP server "<name>" rejected the Authorization header in its config (update it, then run /mcp to reconnect)1522MCP server "<name>" rejected the Authorization header in its config (update it, then run /mcp to reconnect)

1494```1523```

1495 1524 

1496Mettez à jour la valeur d'en-tête où le serveur est configuré, puis reconnectez à partir de `/mcp`.1525Mettez à jour la valeur de l'en-tête là où le serveur est configuré, puis reconnectez-vous depuis `/mcp`.

1497 1526 

1498Avant v2.1.273, les cas de connexion expirée, `headersHelper` et d'en-tête `Authorization` affichaient tous `MCP server "<name>" requires re-authorization (token expired)`.1527Avant la v2.1.273, les cas de connexion expirée, de `headersHelper` et d'en-tête `Authorization` affichaient tous `MCP server "<name>" requires re-authorization (token expired)`.

1499 1528 

1500Un serveur peut également refuser un appel d'outil avec HTTP 403 `insufficient_scope` pour vous demander d'autoriser une portée, parfois une que votre jeton liste déjà. Le message nomme cette portée :1529Un serveur peut également refuser un appel d'outil avec une erreur HTTP 403 `insufficient_scope` pour vous demander d'autoriser un scope, parfois un scope que votre jeton liste déjà. Le message nomme ce scope :

1501 1530 

1502```text theme={null}1531```text theme={null}

1503MCP server "<name>" needs additional permissions (scope: "<scope>") — run /mcp to re-authenticate1532MCP server "<name>" needs additional permissions (scope: "<scope>") — run /mcp to re-authenticate

1504```1533```

1505 1534 

1506Exécutez `/mcp`, sélectionnez le serveur et authentifiez-vous à nouveau à partir de son menu.1535Exécutez `/mcp`, sélectionnez le serveur et authentifiez-vous à nouveau depuis son menu.

1507 1536 

1508Quand la configuration du serveur ne définit ni [`oauth.scopes`](/docs/fr/mcp#restrict-oauth-scopes) ni [`authServerMetadataUrl`](/docs/fr/mcp#override-oauth-metadata-discovery), Claude Code demande la portée que le serveur a nommée. Avec l'un ou l'autre paramètre, Claude Code demande plutôt les portées de ce paramètre. Si vous avez épinglé `oauth.scopes`, ajoutez la portée manquante à cette liste avant de vous authentifier à nouveau.1537Lorsque la configuration du serveur ne définit ni [`oauth.scopes`](/docs/fr/mcp#restrict-oauth-scopes) ni [`authServerMetadataUrl`](/docs/fr/mcp#override-oauth-metadata-discovery), Claude Code demande le scope que le serveur a nommé. Avec l'un ou l'autre de ces paramètres, Claude Code demande plutôt les scopes de ce paramètre. Si vous avez figé `oauth.scopes`, ajoutez le scope manquant à cette liste avant de vous authentifier à nouveau.

1509 1538 

1510Avant v2.1.274, ce cas affichait le message `needs you to sign in again`, et avant v2.1.273 il affichait `requires re-authorization (token expired)` comme les autres cas.1539Avant la v2.1.274, ce cas affichait le message `needs you to sign in again`, et avant la v2.1.273 il affichait `requires re-authorization (token expired)` comme les autres cas.

1511 1540 

1512<h3 id="mcp-server-url-is-missing-or-not-a-valid-url">1541<h3 id="mcp-server-url-is-missing-or-not-a-valid-url">

1513 URL du serveur MCP manquante ou non valide1542 L'URL du serveur MCP est manquante ou n'est pas une URL valide

1514</h3>1543</h3>

1515 1544 

1516Claude Code a refusé de démarrer une connexion OAuth pour un serveur MCP distant car l'`url` configurée du serveur ne s'analyse pas comme une URL. À moins que Claude Code ait un problème de configuration plus spécifique à signaler pour le serveur, l'exécution de [`claude mcp login <name>`](/docs/fr/mcp#authenticate-from-the-command-line) dans votre shell imprime le refus comme :1545Claude Code a refusé de démarrer une connexion OAuth pour un serveur MCP distant parce que l'`url` configurée du serveur ne peut pas être analysée comme une URL. Sauf si Claude Code a un problème de configuration plus précis à signaler pour le serveur, exécuter [`claude mcp login <name>`](/docs/fr/mcp#authenticate-from-the-command-line) dans votre shell affiche le refus ainsi :

1517 1546 

1518```text theme={null}1547```text theme={null}

1519Couldn't complete authentication for "<name>": This server's URL is missing or not a valid URL, so sign-in can't start. Fix the URL in its MCP config (or set the environment variable it uses) and try again.1548Couldn't complete authentication for "<name>": This server's URL is missing or not a valid URL, so sign-in can't start. Fix the URL in its MCP config (or set the environment variable it uses) and try again.

1520```1549```

1521 1550 

1522**À faire :**1551**Que faire :**

1523 1552 

1524* Définissez l'entrée `url` au point de terminaison réel du serveur où le serveur est configuré, ou définissez la variable d'environnement que sa référence [`${VAR}`](/docs/fr/mcp#environment-variable-expansion-in-mcp-json) nomme, puis exécutez la connexion à nouveau.1553* Définissez l'`url` de l'entrée sur l'endpoint réel du serveur là où le serveur est configuré, ou définissez la variable d'environnement que nomme sa [référence `${VAR}`](/docs/fr/mcp#environment-variable-expansion-in-mcp-json), puis relancez la connexion.

1525 1554 

1526<h3 id="issuer-mismatch-in-authorization-response">1555<h3 id="issuer-mismatch-in-authorization-response">

1527 Incompatibilité d'émetteur dans la réponse d'autorisation1556 Incohérence de l'émetteur dans la réponse d'autorisation

1528</h3>1557</h3>

1529 1558 

1530Pendant une [connexion OAuth MCP](/docs/fr/mcp#authenticate-with-remote-mcp-servers), le serveur d'autorisation a redirigé vers Claude Code avec un paramètre `iss` qui ne nomme pas l'émetteur que Claude Code attendait des métadonnées OAuth du serveur. Un mauvais émetteur à cette étape est à quoi ressemble une attaque de mélange de serveur d'autorisation, donc Claude Code échoue la connexion au lieu d'échanger le code d'autorisation. Claude Code affiche l'erreur dans le menu du serveur `/mcp` après la connexion du navigateur :1559Lors d'une [connexion OAuth MCP](/docs/fr/mcp#authenticate-with-remote-mcp-servers), le serveur d'autorisation a redirigé vers Claude Code avec un paramètre `iss` qui ne nomme pas l'émetteur que Claude Code attendait d'après les métadonnées OAuth du serveur. Un émetteur incorrect à cette étape correspond à la signature d'une attaque par confusion de serveur d'autorisation (mix-up) ; Claude Code fait donc échouer la connexion au lieu d'échanger le code d'autorisation. Claude Code affiche l'erreur dans le menu du serveur `/mcp` après la connexion par navigateur :

1531 1560 

1532```text theme={null}1561```text theme={null}

1533Issuer mismatch in authorization response (RFC 9207): expected "https://auth.example.com", received "https://other.example.com"1562Issuer mismatch in authorization response (RFC 9207): expected "https://auth.example.com", received "https://other.example.com"

1534```1563```

1535 1564 

1536`expected` est l'émetteur des métadonnées OAuth du serveur, et `received` est la valeur `iss` que la redirection portait. Une connexion dont la redirection ne porte pas de paramètre `iss` réussit la vérification, à moins que les métadonnées du serveur définissent `authorization_response_iss_parameter_supported`, auquel cas Claude Code échoue la connexion.1565`expected` est l'émetteur indiqué dans les métadonnées OAuth du serveur, et `received` est la valeur `iss` que contenait la redirection. Une connexion dont la redirection ne contient aucun paramètre `iss` passe la vérification, sauf si les métadonnées du serveur définissent `authorization_response_iss_parameter_supported`, auquel cas Claude Code fait échouer la connexion.

1537 1566 

1538**À faire :**1567**Que faire :**

1539 1568 

1540* Réessayez la connexion à partir de `/mcp`1569* Relancez la connexion depuis `/mcp`

1541* Si l'erreur se répète, signalez-la à l'opérateur du serveur. La correction est côté serveur : le serveur d'autorisation doit retourner le même émetteur dans le paramètre `iss` qu'il annonce dans ses métadonnées1570* Si l'erreur se répète, signalez-la à l'opérateur du serveur. La correction se fait côté serveur : le serveur d'autorisation doit renvoyer dans le paramètre `iss` le même émetteur que celui qu'il annonce dans ses métadonnées

1542* Pour vous connecter pendant que le serveur est en cours de correction, démarrez Claude Code avec [`MCP_SDK_GENERATION=v1`](/docs/fr/env-vars), dont le [runtime](/docs/fr/mcp#mcp-client-runtimes) n'exécute pas cette vérification. Cela supprime une protection contre les attaques de mélange, donc préférez la correction côté serveur1571* Pour vous connecter pendant la correction du serveur, démarrez Claude Code avec [`MCP_SDK_GENERATION=v1`](/docs/fr/env-vars), dont le [runtime](/docs/fr/mcp#mcp-client-runtimes) n'effectue pas cette vérification. Cela supprime une protection contre les attaques par confusion ; privilégiez donc la correction côté serveur

1543 1572 

1544Avant v2.1.232, Claude Code utilisait le runtime v2 uniquement dans un déploiement progressif ou quand vous définissiez `MCP_SDK_GENERATION=v2`.1573Avant la v2.1.232, Claude Code n'utilisait le runtime v2 que dans le cadre d'un déploiement progressif ou lorsque vous définissiez `MCP_SDK_GENERATION=v2`.

1545 1574 

1546<h3 id="refusing-to-send-credentials-to-non-https-token-endpoint">1575<h3 id="refusing-to-send-credentials-to-non-https-token-endpoint">

1547 Refus d'envoyer des credentials à un point de terminaison de jeton non-https1576 Refus d'envoyer des identifiants à un endpoint de jeton non HTTPS

1548</h3>1577</h3>

1549 1578 

1550Sur le [runtime v2](/docs/fr/mcp#mcp-client-runtimes), Claude Code envoie une requête de jeton [OAuth MCP](/docs/fr/mcp#authenticate-with-remote-mcp-servers) uniquement à un point de terminaison de jeton servi via HTTPS ou à `localhost`, `127.0.0.1` ou `::1`. Ce message signifie que le point de terminaison de jeton du serveur n'est ni l'un ni l'autre, donc Claude Code s'est arrêté avant d'envoyer la requête. Cela se produit après la connexion du navigateur, donc l'étape du navigateur réussit d'abord, et à nouveau chaque fois que Claude Code rafraîchit le jeton du serveur.1579Sur le [runtime v2](/docs/fr/mcp#mcp-client-runtimes), Claude Code n'envoie une requête de jeton [OAuth MCP](/docs/fr/mcp#authenticate-with-remote-mcp-servers) qu'à un endpoint de jeton servi en HTTPS ou sur `localhost`, `127.0.0.1` ou `::1`. Ce message signifie que l'endpoint de jeton du serveur n'est ni l'un ni l'autre ; Claude Code s'est donc arrêté avant d'envoyer la requête. Cela se produit après la connexion par navigateur, de sorte que l'étape du navigateur réussit d'abord, puis à nouveau chaque fois que Claude Code actualise le jeton du serveur.

1551 1580 

1552Sous sa forme complète, le message provient du SDK MCP et cite le point de terminaison de jeton qu'il a refusé. Dans le journal de débogage, il suit `Error during auth completion:` pour une connexion ou `Token refresh failed:` pour un rafraîchissement. Dans votre shell, `claude mcp login <name>` l'imprime après `Couldn't complete authentication for "<name>":`, et dans une session, `/mcp` l'affiche sous le menu du serveur :1581Dans sa forme complète, le message provient du MCP SDK et cite l'endpoint de jeton qu'il a refusé. Dans le log de débogage, il suit `Error during auth completion:` pour une connexion ou `Token refresh failed:` pour une actualisation. Dans votre shell, `claude mcp login <name>` l'affiche après `Couldn't complete authentication for "<name>":`, et dans une session, `/mcp` l'affiche sous le menu du serveur :

1553 1582 

1554```text theme={null}1583```text theme={null}

1555Refusing to send credentials to non-https token endpoint 'http://192.168.1.50:8123/oauth/token'. OAuth token requests MUST use TLS (localhost / 127.0.0.1 / ::1 are exempt).1584Refusing to send credentials to non-https token endpoint 'http://192.168.1.50:8123/oauth/token'. OAuth token requests MUST use TLS (localhost / 127.0.0.1 / ::1 are exempt).

1556```1585```

1557 1586 

1558Claude Code traite une URL de serveur qui a une chaîne de requête ou un segment de chemin long et aléatoire comme possiblement secret. Pour un tel serveur, il rédige les erreurs de connexion que le SDK MCP lève avant de les afficher ou de les enregistrer. Cette erreur se lit alors comme un nom court qui peut changer entre les versions, comme `io`, suivi de `from the MCP SDK for` et l'URL du serveur réduite. Les autres erreurs du SDK MCP prennent la même forme là. Le message réduit ne peut être cette erreur que quand le point de terminaison de jeton du serveur est `http://` simple à une adresse autre que `localhost`, `127.0.0.1` ou `::1`.1587Claude Code considère comme potentiellement secrète une URL de serveur qui comporte une chaîne de requête ou un long segment de chemin d'apparence aléatoire. Pour un tel serveur, il masque les erreurs de connexion levées par le MCP SDK avant de les afficher ou de les journaliser. Cette erreur se présente alors sous la forme d'un nom court susceptible de changer d'une version à l'autre, comme `io`, suivi de `from the MCP SDK for` et de l'URL du serveur masquée. Les autres erreurs du MCP SDK prennent la même forme dans ce cas. Le message masqué ne peut correspondre à cette erreur que lorsque l'endpoint de jeton du serveur est en `http://` simple sur une adresse autre que `localhost`, `127.0.0.1` ou `::1`.

1559 1588 

1560**À faire :**1589**Que faire :**

1561 1590 

1562* Servez ce point de terminaison de jeton via HTTPS, par exemple en mettant le serveur derrière un proxy inverse ou un tunnel qui termine TLS et en configurant le serveur pour annoncer l'adresse `https://`1591* Servez cet endpoint de jeton en HTTPS, par exemple en plaçant le serveur derrière un reverse proxy ou un tunnel qui termine TLS et en configurant le serveur pour annoncer l'adresse `https://`

1563* Pour vous connecter sans modifier le serveur, démarrez Claude Code avec [`MCP_SDK_GENERATION=v1`](/docs/fr/env-vars), dont le [runtime](/docs/fr/mcp#mcp-client-runtimes) n'applique pas cette règle et envoie la requête de jeton via `http://` simple. Ce choix dure jusqu'à ce que vous quittiez et s'applique à chaque serveur. Le runtime v1 ignore également la [vérification d'émetteur](#issuer-mismatch-in-authorization-response), donc préférez servir le point de terminaison via HTTPS1592* Pour vous connecter sans modifier le serveur, démarrez Claude Code avec [`MCP_SDK_GENERATION=v1`](/docs/fr/env-vars), dont le [runtime](/docs/fr/mcp#mcp-client-runtimes) n'applique pas cette règle et envoie la requête de jeton en HTTP simple. Ce choix dure jusqu'à ce que vous quittiez et s'applique à tous les serveurs. Le runtime v1 ignore également la [vérification de l'émetteur](#issuer-mismatch-in-authorization-response) ; privilégiez donc le service de l'endpoint en HTTPS

1564 1593 

1565<h3 id="aws-credentials-expired-or-invalid">1594<h3 id="aws-credentials-expired-or-invalid">

1566 Les credentials AWS ont expiré ou sont invalides1595 Identifiants AWS expirés ou non valides

1567</h3>1596</h3>

1568 1597 

1569Votre jeton de session AWS a expiré ou a été rejeté. Ce message apparaît sur un 401 de [Claude Platform sur AWS](/docs/fr/claude-platform-on-aws) ou du [point de terminaison Mantle](/docs/fr/amazon-bedrock#use-the-mantle-endpoint), c'est ainsi que ces fournisseurs signalent un jeton de sécurité expiré.1598Votre jeton de session AWS a expiré ou a été rejeté. Ce message apparaît lors d'une 401 provenant de [Claude Platform on AWS](/docs/fr/claude-platform-on-aws) ou de l'[endpoint Mantle](/docs/fr/amazon-bedrock#use-the-mantle-endpoint), qui est la manière dont ces fournisseurs signalent un jeton de sécurité expiré.

1570 1599 

1571L'indice d'action au milieu varie selon votre configuration. La partie stable est le début `AWS credentials expired or invalid` :1600L'indication d'action au milieu varie selon votre configuration. La partie stable est le début `AWS credentials expired or invalid` :

1572 1601 

1573```text theme={null}1602```text theme={null}

1574AWS credentials expired or invalid · run /login and select "Claude Platform on AWS · refresh credentials", or run `aws sso login --profile myprofile` in another terminal · API Error: 401 ...1603AWS credentials expired or invalid · run /login and select "Claude Platform on AWS · refresh credentials", or run `aws sso login --profile myprofile` in another terminal · API Error: 401 ...

1575```1604```

1576 1605 

1577Avant v2.1.273, ce message n'apparaissait que quand `awsAuthRefresh` était configuré.1606Avant la v2.1.273, ce message n'apparaissait que lorsque `awsAuthRefresh` était configuré.

1578 1607 

1579**À faire :**1608**Que faire :**

1580 1609 

1581* Si l'indice dit que les credentials sont gérées par cet environnement, l'application qui a lancé Claude Code possède la credential et les autres étapes ici ne s'appliquent pas : réessayez, ou contactez votre administrateur1610* Si l'indication précise que les identifiants sont gérés par cet environnement, l'application qui a lancé Claude Code détient les identifiants et les autres étapes ici ne s'appliquent pas : réessayez, ou contactez votre administrateur

1582* Si [`awsAuthRefresh`](/docs/fr/amazon-bedrock#advanced-credential-configuration) est défini, exécutez la commande nommée dans le message, comme `aws sso login --profile myprofile`, dans un autre terminal et complétez la connexion du navigateur, puis réessayez. Sinon, rafraîchissez la credential AWS que vous utilisez vous-même : votre connexion SSO, les clés d'accès, la clé API ou le jeton proxy1611* Si [`awsAuthRefresh`](/docs/fr/amazon-bedrock#advanced-credential-configuration) est défini, exécutez la commande nommée dans le message, comme `aws sso login --profile myprofile`, dans un autre terminal et terminez la connexion par navigateur, puis réessayez. Sinon, actualisez vous-même les identifiants AWS que vous utilisez : votre connexion SSO, vos clés d'accès, votre clé API ou votre jeton de proxy

1583* Avec `awsAuthRefresh` défini dans une session interactive, vous pouvez à la place exécuter `/login`, choisir **3rd-party platform**, puis sélectionner **Claude Platform on AWS · refresh credentials** sous **Using 3rd-party platforms** pour exécuter la même commande sans redémarrer Claude Code. Consultez [Configurer les credentials AWS](/docs/fr/claude-platform-on-aws#1-configure-aws-credentials)1612* Avec `awsAuthRefresh` défini dans une session interactive, vous pouvez plutôt exécuter `/login`, choisir **3rd-party platform**, puis sélectionner **Claude Platform on AWS · refresh credentials** sous **Using 3rd-party platforms** pour exécuter la même commande sans redémarrer Claude Code. Consultez [Configurer les identifiants AWS](/docs/fr/claude-platform-on-aws#1-configure-aws-credentials)

1584* Si l'erreur se répète après la réussite de la commande de rafraîchissement, confirmez que l'identité est valide en dehors de Claude Code avec `aws sts get-caller-identity` dans le même shell et profil1613* Si l'erreur se répète après la réussite de la commande d'actualisation, confirmez que l'identité est valide en dehors de Claude Code avec `aws sts get-caller-identity` dans le même shell et le même profil

1585 1614 

1586<h3 id="aws-authentication-failed">1615<h3 id="aws-authentication-failed">

1587 L'authentification AWS a échoué1616 Échec de l'authentification AWS

1588</h3>1617</h3>

1589 1618 

1590Votre fournisseur AWS a retourné un 403, ou [Amazon Bedrock](/docs/fr/amazon-bedrock) a retourné un 401.1619Votre fournisseur AWS a renvoyé une 403, ou [Amazon Bedrock](/docs/fr/amazon-bedrock) a renvoyé une 401.

1591 1620 

1592Amazon Bedrock signale un jeton de sécurité expiré comme un 403, mais un 403 est aussi comment il signale un refus d'autorisation, comme un `AccessDeniedException` d'une permission IAM manquante. Claude Code ne peut pas distinguer ces deux causes.1621Amazon Bedrock signale un jeton de sécurité expiré par une 403, mais une 403 est aussi sa manière de signaler un refus d'autorisation, comme une `AccessDeniedException` due à une permission IAM manquante. Claude Code ne peut pas distinguer ces deux causes.

1593 1622 

1594Un 401 d'Amazon Bedrock atterrit aussi ici plutôt que sous [Les credentials AWS ont expiré ou sont invalides](#aws-credentials-expired-or-invalid), car Amazon Bedrock ne signale pas un jeton expiré comme un 401. Un 401 de ce point de terminaison provient généralement de quelque chose d'autre dans le chemin de la requête, comme un proxy d'entreprise.1623Une 401 provenant d'Amazon Bedrock aboutit également ici plutôt que sous [Identifiants AWS expirés ou non valides](#aws-credentials-expired-or-invalid), car Amazon Bedrock ne signale pas un jeton expiré par une 401. Une 401 provenant de cet endpoint vient généralement d'un autre élément du chemin de la requête, comme un proxy d'entreprise.

1595 1624 

1596Un rafraîchissement de credential corrige un jeton expiré et ne peut pas corriger les autres causes, donc le message offre les deux :1625Une actualisation des identifiants corrige un jeton expiré mais ne peut pas corriger les autres causes ; le message propose donc les deux :

1597 1626 

1598```text theme={null}1627```text theme={null}

1599AWS authentication failed · run /login and select "Claude Platform on AWS · refresh credentials", or run `aws sso login --profile myprofile` in another terminal · if credentials are current, check AWS permissions and model access · API Error: 403 ...1628AWS authentication failed · run /login and select "Claude Platform on AWS · refresh credentials", or run `aws sso login --profile myprofile` in another terminal · if credentials are current, check AWS permissions and model access · API Error: 403 ...

1600```1629```

1601 1630 

1602L'indice d'action au milieu varie selon votre configuration. La partie stable est le début `AWS authentication failed`.1631L'indication d'action au milieu varie selon votre configuration. La partie stable est le début `AWS authentication failed`.

1603 1632 

1604Quand le 403 est la réponse d'Amazon Bedrock que vous n'avez pas accès au modèle avec l'ID de modèle spécifié, l'indice vous dit plutôt d'activer le modèle pour votre compte et région dans la console Amazon Bedrock.1633Lorsque la 403 est la réponse d'Amazon Bedrock indiquant que vous n'avez pas accès au modèle avec l'identifiant de modèle spécifié, l'indication vous invite plutôt à activer le modèle pour votre compte et votre région dans la console Amazon Bedrock.

1605 1634 

1606Avant v2.1.273, ce message n'apparaissait que quand `awsAuthRefresh` était configuré.1635Avant la v2.1.273, ce message n'apparaissait que lorsque `awsAuthRefresh` était configuré.

1607 1636 

1608**À faire :**1637**Que faire :**

1609 1638 

1610* Si l'indice dit que les credentials sont gérées par cet environnement, l'application qui a lancé Claude Code possède la credential et les autres étapes ici ne s'appliquent pas : réessayez, ou contactez votre administrateur1639* Si l'indication précise que les identifiants sont gérés par cet environnement, l'application qui a lancé Claude Code détient les identifiants et les autres étapes ici ne s'appliquent pas : réessayez, ou contactez votre administrateur

1611* Rafraîchissez vos credentials AWS au cas où une credential expirée serait la cause : exécutez la commande [`awsAuthRefresh`](/docs/fr/amazon-bedrock#advanced-credential-configuration) nommée dans le message quand une est définie, ou rafraîchissez votre connexion SSO, les clés d'accès, la clé API ou le jeton proxy vous-même1640* Actualisez vos identifiants AWS au cas où des identifiants expirés seraient en cause : exécutez la commande [`awsAuthRefresh`](/docs/fr/amazon-bedrock#advanced-credential-configuration) nommée dans le message lorsqu'elle est définie, ou actualisez vous-même votre connexion SSO, vos clés d'accès, votre clé API ou votre jeton de proxy

1612* Si vos credentials sont actuelles, confirmez que les permissions IAM dans [Configuration IAM](/docs/fr/amazon-bedrock#iam-configuration) sont attachées à l'identité que vous utilisez et que le modèle sélectionné est activé pour votre compte et région1641* Si vos identifiants sont à jour, vérifiez que les permissions IAM de [Configuration IAM](/docs/fr/amazon-bedrock#iam-configuration) sont attachées à l'identité que vous utilisez et que le modèle sélectionné est activé pour votre compte et votre région

1613* Exécutez `aws sts get-caller-identity` pour confirmer quelle identité vos requêtes utilisent1642* Exécutez `aws sts get-caller-identity` pour confirmer quelle identité vos requêtes utilisent

1614 1643 

1615<h3 id="google-cloud-credentials-expired-or-invalid">1644<h3 id="google-cloud-credentials-expired-or-invalid">

1616 Les credentials Google Cloud ont expiré ou sont invalides1645 Identifiants Google Cloud expirés ou non valides

1617</h3>1646</h3>

1618 1647 

1619Vos credentials Google Cloud pour [Agent Platform de Google Cloud](/docs/fr/google-vertex-ai) ont expiré ou ont été rejetées : la requête a retourné un 401, c'est ainsi qu'Agent Platform signale l'expiration des credentials.1648Vos identifiants Google Cloud pour [Google Cloud's Agent Platform](/docs/fr/google-vertex-ai) ont expiré ou ont été rejetés : la requête a renvoyé une 401, qui est la manière dont Agent Platform signale l'expiration des identifiants.

1620 1649 

1621L'indice d'action au milieu varie selon votre configuration. La partie stable est le début `Google Cloud credentials expired or invalid` :1650L'indication d'action au milieu varie selon votre configuration. La partie stable est le début `Google Cloud credentials expired or invalid` :

1622 1651 

1623```text theme={null}1652```text theme={null}

1624Google Cloud credentials expired or invalid · refresh your Google Cloud credentials (application default sign-in, or the key file in GOOGLE_APPLICATION_CREDENTIALS) and retry · API Error: 401 ...1653Google Cloud credentials expired or invalid · refresh your Google Cloud credentials (application default sign-in, or the key file in GOOGLE_APPLICATION_CREDENTIALS) and retry · API Error: 401 ...

1625```1654```

1626 1655 

1627**À faire :**1656**Que faire :**

1628 1657 

1629* Si l'indice dit que les credentials sont gérées par cet environnement, l'application qui a lancé Claude Code possède la credential et les autres étapes ici ne s'appliquent pas : réessayez, ou contactez votre administrateur1658* Si l'indication précise que les identifiants sont gérés par cet environnement, l'application qui a lancé Claude Code détient les identifiants et les autres étapes ici ne s'appliquent pas : réessayez, ou contactez votre administrateur

1630* Si vous vous authentifiez avec les credentials par défaut de l'application, exécutez la commande [`gcpAuthRefresh`](/docs/fr/google-vertex-ai#advanced-credential-configuration) nommée dans le message, ou `gcloud auth application-default login`, et complétez la connexion, puis réessayez1659* Si vous vous authentifiez avec les identifiants par défaut de l'application, exécutez la commande [`gcpAuthRefresh`](/docs/fr/google-vertex-ai#advanced-credential-configuration) nommée dans le message, ou `gcloud auth application-default login`, et terminez la connexion, puis réessayez

1631* Si vous acheminez via une [passerelle LLM](/docs/fr/llm-gateway) avec `CLAUDE_CODE_SKIP_VERTEX_AUTH` défini, rafraîchissez le jeton de la passerelle dans `ANTHROPIC_AUTH_TOKEN` ou `ANTHROPIC_CUSTOM_HEADERS`, puis réessayez1660* Si vous passez par une [passerelle LLM](/docs/fr/llm-gateway) avec `CLAUDE_CODE_SKIP_VERTEX_AUTH` défini, actualisez le jeton de la passerelle dans `ANTHROPIC_AUTH_TOKEN` ou `ANTHROPIC_CUSTOM_HEADERS`, puis réessayez

1632* Si vous vous authentifiez avec un fichier de clé de compte de service, confirmez que `GOOGLE_APPLICATION_CREDENTIALS` pointe vers une clé valide. Consultez [Configurer les credentials GCP](/docs/fr/google-vertex-ai#3-configure-gcp-credentials)1661* Si vous vous authentifiez avec un fichier de clé de compte de service, vérifiez que `GOOGLE_APPLICATION_CREDENTIALS` pointe vers une clé valide. Consultez [Configurer les identifiants GCP](/docs/fr/google-vertex-ai#3-configure-gcp-credentials)

1633* Si l'erreur se répète après un rafraîchissement, confirmez que l'identité fonctionne en dehors de Claude Code avec `gcloud auth application-default print-access-token` dans le même shell1662* Si l'erreur se répète après une actualisation, confirmez que l'identité fonctionne en dehors de Claude Code avec `gcloud auth application-default print-access-token` dans le même shell

1634 1663 

1635Avant v2.1.273, un 401 d'Agent Platform affichait le message générique `Please run /login` ou `Failed to authenticate` à la place, qui ne peut pas rafraîchir les credentials Google Cloud.1664Avant la v2.1.273, une 401 provenant d'Agent Platform affichait plutôt le message générique `Please run /login` ou `Failed to authenticate`, qui ne permet pas d'actualiser les identifiants Google Cloud.

1636 1665 

1637<h3 id="google-cloud-authentication-failed">1666<h3 id="google-cloud-authentication-failed">

1638 L'authentification Google Cloud a échoué1667 Échec de l'authentification Google Cloud

1639</h3>1668</h3>

1640 1669 

1641[Agent Platform de Google Cloud](/docs/fr/google-vertex-ai) a retourné un 403, qu'il utilise pour les refus d'autorisation plutôt que les credentials expirées. Généralement, l'identité avec laquelle vous vous authentifiez manque d'une permission IAM, ou le modèle n'est pas activé pour votre projet.1670[Agent Platform de Google Cloud](/docs/fr/google-vertex-ai) a renvoyé une erreur 403, qu'il utilise pour les refus d'autorisation plutôt que pour les identifiants expirés. En général, il manque une permission IAM à l'identité avec laquelle vous vous authentifiez, ou le modèle n'est pas activé pour votre projet.

1642 1671 

1643L'indice d'action au milieu varie selon votre configuration. La partie stable est le début `Google Cloud authentication failed` :1672L'indication d'action au milieu varie selon votre configuration. La partie stable est le début `Google Cloud authentication failed` :

1644 1673 

1645```text theme={null}1674```text theme={null}

1646Google Cloud authentication failed · refresh your Google Cloud credentials (application default sign-in, or the key file in GOOGLE_APPLICATION_CREDENTIALS) and retry · if credentials are current, check GCP IAM permissions and Vertex AI model access · API Error: 403 ...1675Google Cloud authentication failed · refresh your Google Cloud credentials (application default sign-in, or the key file in GOOGLE_APPLICATION_CREDENTIALS) and retry · if credentials are current, check GCP IAM permissions and Vertex AI model access · API Error: 403 ...

1647```1676```

1648 1677 

1649**À faire :**1678**Que faire :**

1650 1679 

1651* Si l'indice dit que les credentials sont gérées par cet environnement, l'application qui a lancé Claude Code possède la credential et les autres étapes ici ne s'appliquent pas : réessayez, ou contactez votre administrateur1680* Si l'indication précise que les identifiants sont gérés par cet environnement, c'est l'application qui a lancé Claude Code qui détient l'identifiant et les autres étapes ci-dessous ne s'appliquent pas : réessayez ou contactez votre administrateur

1652* Confirmez que les rôles dans [Configuration IAM](/docs/fr/google-vertex-ai#iam-configuration) sont accordés à l'identité avec laquelle vous vous authentifiez1681* Vérifiez que les rôles décrits dans [Configuration IAM](/docs/fr/google-vertex-ai#iam-configuration) sont accordés à l'identité avec laquelle vous vous authentifiez

1653* Confirmez que le modèle est activé pour votre projet. Consultez [Demander l'accès au modèle](/docs/fr/google-vertex-ai#2-request-model-access)1682* Vérifiez que le modèle est activé pour votre projet. Consultez [Demander l'accès au modèle](/docs/fr/google-vertex-ai#2-request-model-access)

1654 1683 

1655Avant v2.1.273, un 403 d'Agent Platform affichait le message générique `Please run /login` ou `Failed to authenticate` à la place, qui ne peut pas rafraîchir les credentials Google Cloud.1684Avant la v2.1.273, une erreur 403 d'Agent Platform affichait à la place le message générique `Please run /login` ou `Failed to authenticate`, qui ne permet pas d'actualiser les identifiants Google Cloud.

1656 1685 

1657<h3 id="microsoft-foundry-authentication-failed">1686<h3 id="microsoft-foundry-authentication-failed">

1658 L'authentification Microsoft Foundry a échoué1687 Échec de l'authentification Microsoft Foundry

1659</h3>1688</h3>

1660 1689 

1661[Microsoft Foundry](/docs/fr/microsoft-foundry) a retourné un 401 ou 403 : la credential Azure sur la requête a été rejetée, ou l'identité derrière n'a pas accès à la ressource Foundry. `/login` ne peut pas émettre de credentials Azure. L'indice d'action au milieu varie selon votre configuration. La partie stable est le début `Microsoft Foundry authentication failed` :1690[Microsoft Foundry](/docs/fr/microsoft-foundry) a renvoyé une erreur 401 ou 403 : l'identifiant Azure de la requête a été rejeté, ou l'identité associée n'a pas accès à la ressource Foundry. `/login` ne peut pas générer d'identifiants Azure. L'indication d'action au milieu varie selon votre configuration. La partie stable est le début `Microsoft Foundry authentication failed` :

1662 1691 

1663```text theme={null}1692```text theme={null}

1664Microsoft Foundry authentication failed · refresh your Foundry credential (ANTHROPIC_FOUNDRY_AUTH_TOKEN, ANTHROPIC_FOUNDRY_API_KEY, Azure sign-in for Entra, or your proxy token) and retry · if credentials are current, check access to the Foundry resource · API Error: 401 ...1693Microsoft Foundry authentication failed · refresh your Foundry credential (ANTHROPIC_FOUNDRY_AUTH_TOKEN, ANTHROPIC_FOUNDRY_API_KEY, Azure sign-in for Entra, or your proxy token) and retry · if credentials are current, check access to the Foundry resource · API Error: 401 ...

1665```1694```

1666 1695 

1667**À faire :**1696**Que faire :**

1668 1697 

1669* Si l'indice dit que les credentials sont gérées par cet environnement, l'application qui a lancé Claude Code possède la credential et les autres étapes ici ne s'appliquent pas : réessayez, ou contactez votre administrateur1698* Si l'indication précise que les identifiants sont gérés par cet environnement, c'est l'application qui a lancé Claude Code qui détient l'identifiant et les autres étapes ci-dessous ne s'appliquent pas : réessayez ou contactez votre administrateur

1670* Rafraîchissez la credential que vous avez configurée dans [Configurer les credentials Azure](/docs/fr/microsoft-foundry#2-configure-azure-credentials) : faites tourner `ANTHROPIC_FOUNDRY_API_KEY`, émettez un `ANTHROPIC_FOUNDRY_AUTH_TOKEN` frais, ou exécutez `az login` pour que la chaîne de credential Microsoft Entra par défaut puisse se reconnecter1699* Actualisez l'identifiant que vous avez configuré dans [Configurer les identifiants Azure](/docs/fr/microsoft-foundry#2-configure-azure-credentials) : renouvelez `ANTHROPIC_FOUNDRY_API_KEY`, générez un nouveau `ANTHROPIC_FOUNDRY_AUTH_TOKEN`, ou exécutez `az login` pour que la chaîne d'identifiants Microsoft Entra par défaut puisse se reconnecter

1671* Si la credential est actuelle, confirmez que l'identité a accès à la ressource Foundry. Consultez [Configuration Azure RBAC](/docs/fr/microsoft-foundry#azure-rbac-configuration)1700* Si l'identifiant est à jour, vérifiez que l'identité a accès à la ressource Foundry. Consultez [Configuration Azure RBAC](/docs/fr/microsoft-foundry#azure-rbac-configuration)

1672 1701 

1673Avant v2.1.273, un 401 ou 403 de Microsoft Foundry affichait le message générique `Please run /login` ou `Failed to authenticate` à la place, qui ne peut pas rafraîchir les credentials Azure.1702Avant la v2.1.273, une erreur 401 ou 403 de Microsoft Foundry affichait à la place le message générique `Please run /login` ou `Failed to authenticate`, qui ne permet pas d'actualiser les identifiants Azure.

1674 1703 

1675<h3 id="could-not-load-aws-or-google-cloud-credentials">1704<h3 id="could-not-load-aws-or-google-cloud-credentials">

1676 Impossible de charger les credentials AWS ou Google Cloud1705 Impossible de charger les identifiants AWS ou Google Cloud

1677</h3>1706</h3>

1678 1707 

1679Claude Code n'a pas pu obtenir de credentials utilisables à partir de la chaîne de fournisseur de credentials AWS ou de vos credentials par défaut de l'application Google sur la machine sur laquelle il s'exécute, donc aucune requête n'a atteint votre fournisseur cloud. Claude Code efface ses credentials en cache et réessaie deux fois avant d'afficher ce message. Le détail après le `·` nomme la cause spécifique, comme une session SSO expirée, des credentials par défaut manquantes signalées comme `Could not load the default credentials`, ou une connexion révoquée signalée comme `invalid_grant` :1708Claude Code n'a pas pu obtenir d'identifiants utilisables à partir de la chaîne de fournisseurs d'identifiants AWS ou de vos identifiants par défaut d'application Google sur la machine où il s'exécute ; aucune requête n'a donc atteint votre fournisseur cloud. Claude Code vide ses identifiants en cache et réessaie deux fois avant d'afficher ce message. Le détail après le `·` indique la cause précise, par exemple une session SSO expirée, des identifiants par défaut d'application manquants signalés par `Could not load the default credentials`, ou une connexion révoquée signalée par `invalid_grant` :

1680 1709 

1681```text theme={null}1710```text theme={null}

1682API Error: Could not load AWS credentials · Could not load credentials from any providers. Check or refresh your AWS credentials and try again.1711API Error: Could not load AWS credentials · Could not load credentials from any providers. Check or refresh your AWS credentials and try again.

1683API Error: Could not load Google Cloud credentials · invalid_grant. Check or refresh your Google Cloud credentials and try again.1712API Error: Could not load Google Cloud credentials · invalid_grant. Check or refresh your Google Cloud credentials and try again.

1684```1713```

1685 1714 

1686En [mode non-interactif](/docs/fr/headless) avec `-p` et dans l'[Agent SDK](/docs/fr/agent-sdk/overview), le code d'erreur structuré est `cloud_credential_error`. Avant v2.1.267, le message affichait uniquement le texte de détail après `API Error:`, et le code structuré était `server_error` ou `unknown`.1715En [mode non interactif](/docs/fr/headless) avec `-p` et dans l'[Agent SDK](/docs/fr/agent-sdk/overview), le code d'erreur structuré est `cloud_credential_error`. Avant la v2.1.267, le message n'affichait que le texte de détail après `API Error:`, et le code structuré était `server_error` ou `unknown`.

1687 1716 

1688**À faire :**1717**Que faire :**

1689 1718 

1690* Exécutez la commande de connexion de votre fournisseur, comme `aws sso login --profile myprofile` ou `gcloud auth application-default login`, puis réessayez. [Les credentials Bedrock, Agent Platform ou Foundry ne se chargent pas](/docs/fr/troubleshoot-install#bedrock-agent-platform-or-foundry-credentials-not-loading) montre comment confirmer les credentials en dehors de Claude Code1719* Exécutez la commande de connexion de votre fournisseur, par exemple `aws sso login --profile myprofile` ou `gcloud auth application-default login`, puis réessayez. [Identifiants Bedrock, Agent Platform ou Foundry non chargés](/docs/fr/troubleshoot-install#bedrock-agent-platform-or-foundry-credentials-not-loading) explique comment vérifier les identifiants en dehors de Claude Code

1691* Si le détail se lit `AWS default-chain credential resolve timed out`, la chaîne a bloqué plutôt que d'échouer, donc suivez [Le délai d'expiration de la résolution des credentials de la chaîne par défaut AWS](#aws-default-chain-credential-resolve-timed-out) à la place1720* Si le détail indique `AWS default-chain credential resolve timed out`, la chaîne s'est bloquée au lieu d'échouer ; suivez plutôt [Délai d'expiration de la résolution des identifiants de la chaîne AWS par défaut](#aws-default-chain-credential-resolve-timed-out)

1692 1721 

1693<h3 id="aws-default-chain-credential-resolve-timed-out">1722<h3 id="aws-default-chain-credential-resolve-timed-out">

1694 Le délai d'expiration de la résolution des credentials de la chaîne par défaut AWS1723 Délai d'expiration de la résolution des identifiants de la chaîne AWS par défaut

1695</h3>1724</h3>

1696 1725 

1697La chaîne de fournisseur de credentials par défaut AWS n'a pas produit de credentials dans les 60 secondes, donc Claude Code a arrêté la résolution et a échoué la requête. Ce délai d'expiration est une cause de [Impossible de charger les credentials AWS ou Google Cloud](#could-not-load-aws-or-google-cloud-credentials). L'échec est la résolution locale des credentials : la requête n'a jamais atteint [Amazon Bedrock](/docs/fr/amazon-bedrock), [Claude Platform sur AWS](/docs/fr/claude-platform-on-aws) ou le [point de terminaison Mantle](/docs/fr/amazon-bedrock#use-the-mantle-endpoint). Claude Code efface son [cache de credentials](/docs/fr/amazon-bedrock#credential-caching-and-resolution-timeout) et réessaie avant que cette erreur ne fasse surface, donc au moment où vous la voyez, la chaîne s'est bloquée sur des tentatives répétées.1726La chaîne de fournisseurs d'identifiants AWS par défaut n'a pas produit d'identifiants dans un délai de 60 secondes ; Claude Code a donc interrompu la résolution et fait échouer la requête. Ce délai d'expiration est l'une des causes de [Impossible de charger les identifiants AWS ou Google Cloud](#could-not-load-aws-or-google-cloud-credentials). L'échec concerne la résolution locale des identifiants : la requête n'a jamais atteint [Amazon Bedrock](/docs/fr/amazon-bedrock), [Claude Platform on AWS](/docs/fr/claude-platform-on-aws) ni l'[endpoint Mantle](/docs/fr/amazon-bedrock#use-the-mantle-endpoint). Claude Code vide son [cache d'identifiants](/docs/fr/amazon-bedrock#credential-caching-and-resolution-timeout) et réessaie avant que cette erreur n'apparaisse ; lorsque vous la voyez, la chaîne s'est donc bloquée lors de plusieurs tentatives.

1698 1727 

1699```text theme={null}1728```text theme={null}

1700API Error: Could not load AWS credentials · AWS default-chain credential resolve timed out. Check or refresh your AWS credentials and try again.1729API Error: Could not load AWS credentials · AWS default-chain credential resolve timed out. Check or refresh your AWS credentials and try again.

1701```1730```

1702 1731 

1703Les causes courantes sont une commande `credential_process` dans votre profil AWS qui attend une entrée qu'elle ne peut pas recevoir, et un conteneur ou une VM dont le service de métadonnées d'instance (IMDS) ne répond jamais à la sonde de la chaîne.1732Les causes courantes sont une commande `credential_process` dans votre profil AWS qui attend une saisie qu'elle ne peut pas recevoir, et un conteneur ou une VM dont le service de métadonnées d'instance (IMDS) ne répond jamais à la sonde de la chaîne.

1704 1733 

1705Avant v2.1.267, le message se lisait `API Error: AWS default-chain credential resolve timed out`.1734Avant la v2.1.267, le message était `API Error: AWS default-chain credential resolve timed out`.

1706Avant v2.1.207, une chaîne bloquée laissait la requête attendre indéfiniment au lieu d'échouer.1735Avant la v2.1.207, une chaîne bloquée laissait la requête en attente indéfiniment au lieu d'échouer.

1707 1736 

1708**À faire :**1737**Que faire :**

1709 1738 

1710* Exécutez `aws sts get-caller-identity` dans le même shell avec le même `AWS_PROFILE`. S'il bloque aussi, corrigez le profil ; une commande `credential_process` qui demande de manière interactive est une cause courante.1739* Exécutez `aws sts get-caller-identity` dans le même shell avec le même `AWS_PROFILE`. Si la commande se bloque également, corrigez le profil ; une commande `credential_process` qui demande une saisie interactive en est une cause fréquente.

1711* Complétez l'étape de connexion avant de démarrer Claude Code, par exemple `aws sso login --profile myprofile`, pour que la chaîne se résolve à partir du cache SSO local au lieu d'attendre un flux de navigateur1740* Effectuez l'étape de connexion avant de démarrer Claude Code, par exemple `aws sso login --profile myprofile`

1712* Si votre chaîne exécute une connexion interactive qui a légitimement besoin de plus de 60 secondes, comme SSO 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)1741* Si votre chaîne exécute une connexion interactive qui nécessite légitimement plus de 60 secondes, comme une connexion SSO avec MFA via un wrapper tel que `aws-vault`, augmentez la limite en millisecondes avec [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/fr/env-vars)

1713 1742 

1714<h3 id="bedrock-setup-verification-timed-out-waiting-for-aws">1743<h3 id="bedrock-setup-verification-timed-out-waiting-for-aws">

1715 La vérification de la configuration de Bedrock a expiré en attendant AWS1744 Délai d'attente d'AWS expiré lors de la vérification de la configuration Bedrock

1716</h3>1745</h3>

1717 1746 

1718Un appel à AWS pendant l'[assistant de configuration de Bedrock](/docs/fr/amazon-bedrock#sign-in-with-bedrock), comme la recherche de credentials ou la vérification d'identité, n'a pas terminé dans la limite de 60 secondes. L'assistant arrête d'attendre et échoue l'étape de vérification :1747Un appel à AWS lors de la vérification des identifiants de l'[assistant de configuration Bedrock](/docs/fr/amazon-bedrock#sign-in-with-bedrock), comme la recherche d'identifiants ou la vérification d'identité, ne s'est pas terminé dans la limite de 60 secondes. L'assistant cesse d'attendre et fait échouer l'étape de vérification :

1719 1748 

1720```text theme={null}1749```text theme={null}

1721Timed out after 60s waiting for AWS. Check your network and proxy settings; if a credential helper needs longer to prompt you, raise CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS.1750Timed out after 60s waiting for AWS. Check your network and proxy settings; if a credential helper needs longer to prompt you, raise CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS.


1723 1752 

1724Le nombre reflète votre limite : 60 secondes par défaut, ou la valeur que vous avez définie dans [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/fr/env-vars).1753Le nombre reflète votre limite : 60 secondes par défaut, ou la valeur que vous avez définie dans [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/fr/env-vars).

1725 1754 

1726Les causes courantes sont un réseau ou un proxy qui bloque les requêtes à AWS, y compris le rafraîchissement du jeton SSO, et un helper de credential qui attend toujours une entrée que vous ne pouvez pas voir. Augmentez la limite uniquement quand l'helper a légitimement besoin de plus de temps.1755Les causes courantes sont un réseau ou un proxy qui bloque les requêtes vers AWS, y compris l'actualisation du jeton SSO, et un assistant d'identifiants qui attend encore une saisie que vous ne voyez pas. N'augmentez la limite que lorsque l'assistant a légitimement besoin de plus de temps.

1727 1756 

1728Une seule requête bloquée à AWS peut aussi échouer sur son propre délai d'expiration par requête, qui affiche un message plus court sur la même étape :1757Une seule requête bloquée vers AWS peut également échouer en raison de son propre délai d'expiration par requête, ce qui affiche un message plus court à la même étape :

1729 1758 

1730```text theme={null}1759```text theme={null}

1731A request to AWS timed out. Check your network and proxy settings, then try again.1760A request to AWS timed out. Check your network and proxy settings, then try again.

1732```1761```

1733 1762 

1734Quand les mêmes délais d'expiration se produisent sur l'étape d'épinglage de modèle, l'assistant marque un modèle comme `unreachable` au lieu d'afficher l'un ou l'autre message.1763Lorsque les mêmes délais d'expiration surviennent à l'étape d'épinglage du modèle, l'assistant marque un modèle comme `unreachable` au lieu d'afficher l'un ou l'autre message.

1735 1764 

1736**À faire :**1765**Que faire :**

1737 1766 

1738* Exécutez `aws sts get-caller-identity` dans le même shell. S'il bloque aussi, le blocage est en dehors de Claude Code, dans votre réseau, votre proxy ou l'helper de credential dans votre profil AWS ; corrigez cela d'abord.1767* Exécutez `aws sts get-caller-identity` dans le même shell. Si la commande se bloque également, le blocage se situe en dehors de Claude Code, dans votre réseau, votre proxy ou l'assistant d'identifiants de votre profil AWS ; corrigez d'abord ce problème.

1739* Complétez toute connexion interactive avant d'ouvrir l'assistant, par exemple `aws sso login --profile myprofile`1768* Effectuez toute connexion interactive avant d'ouvrir l'assistant, par exemple `aws sso login --profile myprofile`

1740* Si un helper de credential dans votre profil AWS a légitimement besoin de plus de 60 secondes pour vous demander, augmentez la limite en millisecondes avec [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/fr/env-vars)1769* Si un assistant d'identifiants de votre profil AWS a légitimement besoin de plus de 60 secondes pour vous demander une saisie, augmentez la limite en millisecondes avec [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/fr/env-vars)

1741 1770 

1742<h3 id="cloud-gateway-session-expired">1771<h3 id="cloud-gateway-session-expired">

1743 La session de la passerelle cloud a expiré1772 Session de passerelle cloud expirée

1744</h3>1773</h3>

1745 1774 

1746Vous vous êtes connecté via une [passerelle d'applications Claude](/docs/fr/claude-apps-gateway), et la session de la passerelle enregistrée sur cette machine a expiré et n'a pas pu être renouvelée, ou la passerelle ne l'accepte plus, par exemple après que le [secret JWT de la passerelle soit remplacé](/docs/fr/claude-apps-gateway-deploy#jwt-secret-rotation). Si vous voyez cette ligne quand vous démarrez `claude` de manière interactive, la session s'est ouverte déconnectée de la passerelle :1775Vous vous êtes connecté via une [passerelle Claude apps](/docs/fr/claude-apps-gateway), et la session de passerelle enregistrée sur cette machine a expiré et n'a pas pu être renouvelée, ou la passerelle ne l'accepte plus, par exemple après le [remplacement du secret JWT](/docs/fr/claude-apps-gateway-deploy#jwt-secret-rotation) de la passerelle. Si cette ligne apparaît lorsque vous démarrez `claude` en mode interactif, la session s'est ouverte déconnectée de la passerelle :

1747 1776 

1748```text theme={null}1777```text theme={null}

1749Cloud gateway session expired — run /login to reconnect.1778Cloud gateway session expired — run /login to reconnect.

1750```1779```

1751 1780 

1752La même ligne peut apparaître en cours de session quand la credential de la passerelle expire et Claude Code ne peut pas la renouveler.1781La même ligne peut apparaître en cours de session lorsque l'identifiant de la passerelle expire et que Claude Code ne parvient pas à le renouveler.

1753 1782 

1754Dans une exécution [non-interactive](/docs/fr/headless), une session en arrière-plan ou autre sans surveillance, ou une sous-commande `claude` autre que `claude auth`, Claude Code se termine avec ce message à la place quand la passerelle n'accepte plus la session :1783Lors d'une exécution [non interactive](/docs/fr/headless), d'une session en arrière-plan ou autrement sans surveillance, ou d'une sous-commande `claude` autre que `claude auth`, Claude Code se ferme plutôt avec ce message lorsque la passerelle n'accepte plus la session :

1755 1784 

1756```text theme={null}1785```text theme={null}

1757Cloud gateway <url> no longer accepts this session. Start `claude` and sign in again with /login.1786Cloud gateway <url> no longer accepts this session. Start `claude` and sign in again with /login.

1758```1787```

1759 1788 

1760**À faire :**1789**Que faire :**

1761 1790 

1762* Exécutez `/login` dans la session et complétez la connexion du navigateur1791* Exécutez `/login` dans la session et terminez la connexion dans le navigateur

1763* Pour un lancement non-interactif, démarrez `claude` dans le même environnement, exécutez `/login`, puis réexécutez votre commande1792* Pour un lancement non interactif, démarrez `claude` dans le même environnement, exécutez `/login`, puis relancez votre commande

1764 1793 

1765<h3 id="sign-in-timed-out-while-waiting-for-you-to-continue">1794<h3 id="sign-in-timed-out-while-waiting-for-you-to-continue">

1766 La connexion a expiré en attendant que vous continuiez1795 Délai de connexion expiré en attendant votre confirmation

1767</h3>1796</h3>

1768 1797 

1769Pendant une [connexion à la passerelle d'applications Claude](/docs/fr/claude-apps-gateway), la passerelle a nommé le compte qui s'est connecté, et Claude Code vous a demandé de le confirmer avant d'enregistrer la credential. Vous avez laissé la confirmation ouverte au-delà de l'expiration de la connexion elle-même, et la passerelle n'a émis aucun jeton d'actualisation qui pourrait la renouveler, donc Claude Code n'a rien enregistré quand vous avez continué :1798Lors d'une connexion via une [passerelle Claude apps](/docs/fr/claude-apps-gateway), la passerelle a indiqué le compte qui s'est connecté, et Claude Code vous a demandé de le confirmer avant d'enregistrer l'identifiant. Vous avez laissé la confirmation ouverte au-delà de l'expiration propre à la connexion, et la passerelle n'a émis aucun jeton d'actualisation permettant de la renouveler ; Claude Code n'a donc rien enregistré lorsque vous avez continué :

1770 1799 

1771```text theme={null}1800```text theme={null}

1772Sign-in timed out while waiting for you to continue. Try again.1801Sign-in timed out while waiting for you to continue. Try again.

1773```1802```

1774 1803 

1775**À faire :**1804**Que faire :**

1776 1805 

1777* Exécutez `/login` à nouveau et confirmez le compte avant que la connexion n'expire1806* Exécutez de nouveau `/login` et confirmez le compte avant l'expiration de la connexion

1778 1807 

1779<h3 id="gateway-refused-the-request">1808<h3 id="gateway-refused-the-request">

1780 La passerelle a refusé la requête1809 La passerelle a refusé la requête

1781</h3>1810</h3>

1782 1811 

1783Vous êtes connecté via une [passerelle d'applications Claude](/docs/fr/claude-apps-gateway), et une requête a retourné un 403 : la passerelle, ou l'amont derrière, l'a refusée. Se reconnecter ne change pas un refus, donc le message pointe vers votre administrateur de passerelle :1812Vous êtes connecté via une [passerelle Claude apps](/docs/fr/claude-apps-gateway), et une requête a renvoyé une erreur 403 : la passerelle, ou le service en amont derrière elle, l'a refusée. Se reconnecter ne change rien à un refus ; le message vous oriente donc vers l'administrateur de votre passerelle :

1784 1813 

1785```text theme={null}1814```text theme={null}

1786Gateway refused the request · signing in again won't change this — check with your gateway administrator · API Error: 403 ...1815Gateway refused the request · signing in again won't change this — check with your gateway administrator · API Error: 403 ...

1787```1816```

1788 1817 

1789**À faire :**1818**Que faire :**

1790 1819 

1791* Demandez à votre administrateur de passerelle de rechercher la requête. La queue `API Error:` porte le refus que la passerelle a retourné1820* Demandez à l'administrateur de votre passerelle d'examiner la requête. La fin du message `API Error:` contient le refus renvoyé par la passerelle

1792* Pour les administrateurs : une [règle de contrôle d'accès](/docs/fr/claude-apps-gateway-config#http-tuning) sur la passerelle retourne un 403 que le [journal d'audit](/docs/fr/claude-apps-gateway-deploy#logs) enregistre avec sa raison, et un refus d'autorisation en amont passe par [Messages d'erreur en amont](/docs/fr/claude-apps-gateway-config#upstream-error-messages)1821* Pour les administrateurs : une [règle de contrôle d'accès](/docs/fr/claude-apps-gateway-config#http-tuning) sur la passerelle renvoie une erreur 403 que le [log d'audit](/docs/fr/claude-apps-gateway-deploy#logs) consigne avec sa raison, et un refus d'autorisation du service en amont est transmis conformément à [Messages d'erreur en amont](/docs/fr/claude-apps-gateway-config#upstream-error-messages)

1793 1822 

1794Avant v2.1.273, un 403 sur une session de passerelle affichait le message générique `Please run /login` ou `Failed to authenticate` à la place, et se reconnecter ne changeait pas le refus.1823Avant la v2.1.273, une erreur 403 sur une session de passerelle affichait à la place le message générique `Please run /login` ou `Failed to authenticate`, et se reconnecter ne levait pas le refus.

1795 1824 

1796<h2 id="network-and-connection-errors">1825<h2 id="network-and-connection-errors">

1797 Erreurs de réseau et de connexion1826 Erreurs de réseau et de connexion


2317API Error: 400 ... Extra inputs are not permitted ... context_management2346API Error: 400 ... Extra inputs are not permitted ... context_management

2318```2347```

2319 2348 

2320Claude Code envoie des champs bêta uniquement comme `context_management` et `effort` aux côtés d'un en-tête `anthropic-beta` qui les active. Quand une passerelle transfère le corps mais supprime l'en-tête, l'API voit des champs qu'elle ne reconnaît pas.2349Claude Code envoie des champs réservés aux bêtas, comme `context_management`, accompagnés d'un en-tête `anthropic-beta` qui les active. Quand une passerelle transfère le corps mais supprime l'en-tête, l'API voit des champs qu'elle ne reconnaît pas.

2321 2350 

2322**Que faire :**2351**Que faire :**

2323 2352 


2852 Erreurs de ligne de commande2881 Erreurs de ligne de commande

2853</h2>2882</h2>

2854 2883 

2855Ces erreurs proviennent de la ligne de commande `claude` et de ses sous-commandes, d'un nom de commande que vous soumettez à l'invite, et de commandes telles que `/security-review` qui rassemblent le contexte en exécutant des commandes shell avant l'exécution de leur invite. Elles proviennent également de `/tui`, qui relance l'interface de ligne de commande.2884Ces erreurs proviennent de la ligne de commande `claude` et de ses sous-commandes, d'un nom de commande que vous soumettez dans le prompt, et de commandes telles que `/security-review` qui rassemblent du contexte en exécutant des commandes shell avant l'exécution de leur prompt. Elles proviennent aussi de `/tui`, qui relance la CLI.

2856 2885 

2857<h3 id="conflict-between-bg-and-print">2886<h3 id="conflict-between-bg-and-print">

2858 Conflit entre `--bg` et `--print`2887 Conflit entre `--bg` et `--print`

2859</h3>2888</h3>

2860 2889 

2861Ce message nécessite Claude Code v2.1.198 ou version ultérieure. Vous avez combiné `--bg` avec `-p` ou `--print` dans la même invocation `claude`. `--bg` démarre une [session en arrière-plan](/docs/fr/agent-view#from-your-shell) à laquelle vous vous connectez ultérieurement avec `claude agents`, tandis que `--print` s'exécute [de manière non interactive](/docs/fr/headless) et ne démarre jamais la session interactive à laquelle `claude agents` se connecte. Avant la v2.1.198, cette combinaison créait silencieusement une tâche en arrière-plan qui ne pouvait jamais être attachée.2890Ce message nécessite Claude Code v2.1.198 ou une version ultérieure. Vous avez combiné `--bg` avec `-p` ou `--print` dans le même appel `claude`. `--bg` démarre une [session en arrière-plan](/docs/fr/agent-view#from-your-shell) à laquelle vous vous rattachez ensuite avec `claude agents`, tandis que `--print` s'exécute en [mode non interactif](/docs/fr/headless) et ne démarre jamais la session interactive à laquelle `claude agents` se rattache. Avant la v2.1.198, cette combinaison créait silencieusement une tâche en arrière-plan à laquelle il était impossible de se rattacher.

2862 2891 

2863```text theme={null}2892```text theme={null}

2864--bg and --print conflict: --print never starts the interactive session that `claude agents` attaches to, so the job would be unattachable. The prompt is the positional — drop --print: `claude --bg '<task>'`.2893--bg and --print conflict: --print never starts the interactive session that `claude agents` attaches to, so the job would be unattachable. The prompt is the positional — drop --print: `claude --bg '<task>'`.


2866 2895 

2867**Que faire :**2896**Que faire :**

2868 2897 

2869* Supprimez `-p` ou `--print`. `--bg` prend l'invite comme argument positionnel, donc `claude --bg "<task>"` est la commande complète. Voir [Dispatcher de nouveaux agents depuis votre shell](/docs/fr/agent-view#from-your-shell).2898* Supprimez `-p` ou `--print`. `--bg` prend le prompt comme argument positionnel, donc `claude --bg "<task>"` est la commande complète. Consultez [Lancer de nouveaux agents depuis votre shell](/docs/fr/agent-view#from-your-shell).

2870* Pour exécuter l'invite de manière non interactive et imprimer le résultat au lieu de créer une session en arrière-plan, supprimez `--bg` et exécutez `claude -p "<task>"`2899* Pour exécuter le prompt en mode non interactif et afficher le résultat au lieu de créer une session en arrière-plan, supprimez `--bg` et exécutez `claude -p "<task>"`

2900 

2901<h3 id="conflict-between-a-system-prompt-flag-and-its-file-form">

2902 Conflit entre un flag de prompt système et sa forme fichier

2903</h3>

2904 

2905Vous avez passé [`--append-subagent-system-prompt`](/docs/fr/cli-reference#cli-flags) avec `--append-subagent-system-prompt-file` dans un même appel `claude`, donc `claude` se termine avec le code 1 au lieu de démarrer la session :

2906 

2907```text theme={null}

2908Error: Cannot use both --append-subagent-system-prompt and --append-subagent-system-prompt-file. Please use only one.

2909```

2910 

2911Avant la v2.1.283, `claude` se terminait de la même façon lorsque vous passiez `--system-prompt` avec `--system-prompt-file`, ou `--append-system-prompt` avec `--append-system-prompt-file`, car ces paires entraient en conflit au lieu de [se combiner](/docs/fr/cli-reference#system-prompt-flags). Sur ces versions, le message nomme la paire que vous avez combinée.

2912 

2913**Que faire :**

2914 

2915* Conservez une seule forme du flag et supprimez l'autre. Pour combiner un fichier de prompt fixe avec du texte propre à chaque exécution, fusionnez le texte dans le fichier avant le lancement au lieu de passer les deux flags

2871 2916 

2872<h3 id="invalid-agents-configuration">2917<h3 id="invalid-agents-configuration">

2873 Configuration `--agents` invalide2918 Configuration `--agents` invalide

2874</h3>2919</h3>

2875 2920 

2876La valeur que vous avez transmise à `--agents` est invalide, donc `claude` se termine avec le code 1 au lieu de démarrer la session. Lorsque vous transmettez `--safe-mode` ou définissez [`CLAUDE_CODE_SAFE_MODE`](/docs/fr/env-vars#variables), Claude Code ignore `--agents` entièrement. Avec `--resume` ou `--continue`, une valeur JSON en ligne n'est pas vérifiée et la session démarre ; une valeur lue à partir d'un fichier est vérifiée à chaque lancement. Avant la v2.1.242, Claude Code démarrait la session de toute façon.2921La valeur que vous avez passée à `--agents` est invalide, donc `claude` se termine avec le code 1 au lieu de démarrer la session. Lorsque vous passez `--safe-mode` ou définissez [`CLAUDE_CODE_SAFE_MODE`](/docs/fr/env-vars#variables), Claude Code ignore entièrement `--agents`. Avec `--resume` ou `--continue`, une valeur JSON en ligne n'est pas vérifiée et la session démarre ; une valeur lue depuis un fichier est vérifiée à chaque lancement. Avant la v2.1.242, Claude Code démarrait quand même la session.

2877 2922 

2878```text theme={null}2923```text theme={null}

2879Error: Invalid --agents configuration:2924Error: Invalid --agents configuration:

2880<what failed>2925<what failed>

2881```2926```

2882 2927 

2883Ce qui suit la première ligne dépend de la façon dont la valeur a échoué. Claude Code exécute ces vérifications dans l'ordre et s'arrête à la première qui échoue. Si votre valeur a deux types de problème, vous ne voyez le second qu'après avoir corrigé le premier :2928Ce qui suit la première ligne dépend de la manière dont la valeur a échoué. Claude Code exécute ces vérifications dans l'ordre et s'arrête à la première qui échoue. Si votre valeur présente deux types de problèmes, vous ne voyez le second qu'après avoir corrigé le premier :

2884 2929 

28851. Lorsque la valeur commence par `{` mais ne s'analyse pas en JSON, ou le contenu d'un fichier `--agents` ne s'analyse pas, Claude Code imprime une ligne `invalid JSON:` portant le message du parseur JSON lui-même29301. Lorsque la valeur commence par `{` mais n'est pas analysable en JSON, ou que le contenu d'un fichier `--agents` n'est pas analysable, Claude Code affiche une ligne `invalid JSON:` contenant le message propre à l'analyseur JSON

28862. Lorsqu'elle s'analyse mais qu'une définition d'agent ne correspond pas au schéma pour les [sous-agents définis par CLI](/docs/fr/sub-agents#choose-the-subagent-scope), Claude Code imprime une ligne par problème29312. Lorsqu'elle est analysable mais qu'une définition d'agent ne correspond pas au schéma des [sous-agents définis par la CLI](/docs/fr/sub-agents#choose-the-subagent-scope), Claude Code affiche une ligne par problème

28873. Lorsqu'un nom d'agent commence par `-`, Claude Code imprime `<name>: agent names must not start with '-'`29323. Lorsqu'un nom d'agent commence par `-`, Claude Code affiche `<name>: agent names must not start with '-'`

2888 2933 

2889Lorsqu'il y a plus de 20 lignes de problème, Claude Code imprime les 20 premières et remplace le reste par `…and N more`.2934Lorsqu'il y a plus de 20 lignes de problèmes, Claude Code affiche les 20 premières et remplace le reste par `…and N more`.

2890 2935 

2891Avec `--print`, `--agents` accepte également [le chemin vers un fichier JSON](/docs/fr/sub-agents#choose-the-subagent-scope) à la place de l'objet en ligne. Avant la v2.1.281, `--agents` acceptait uniquement du JSON en ligne et traitait un chemin de fichier comme du JSON invalide. La forme de fichier a ses propres refus, imprimés à la place de ce message, y compris ceux-ci :2936Avec `--print`, `--agents` accepte aussi [le chemin d'un fichier JSON](/docs/fr/sub-agents#choose-the-subagent-scope) à la place de l'objet en ligne. Avant la v2.1.281, `--agents` n'acceptait que du JSON en ligne et traitait un chemin de fichier comme du JSON invalide. La forme fichier a ses propres refus, affichés à la place de ce message, notamment ceux-ci :

2892 2937 

2893* **`Error: --agents takes a JSON object, or a file path only with --print (-p)`** : Claude Code a lu la valeur comme un chemin de fichier dans une session interactive. Transmettez les définitions en tant que JSON en ligne, ou ajoutez `-p` pour les lire à partir d'un fichier.2938* **`Error: --agents takes a JSON object, or a file path only with --print (-p)`** : Claude Code a lu la valeur comme un chemin de fichier dans une session interactive. Passez les définitions en JSON en ligne, ou ajoutez `-p` pour les lire depuis un fichier.

2894* **`Error: --agents file not found: <path>`** : aucun fichier n'existe à ce chemin. Une valeur qui ne commence pas par `{` et n'est pas du JSON valide est lue comme un chemin, donc du JSON en ligne que votre shell a endommagé peut échouer de cette manière aussi. Vérifiez le chemin ou les guillemets et exécutez la commande à nouveau.2939* **`Error: --agents file not found: <path>`** : aucun fichier n'existe à ce chemin. Une valeur qui ne commence pas par `{` et qui n'est pas du JSON valide est lue comme un chemin, donc du JSON en ligne altéré par votre shell peut aussi échouer de cette façon. Vérifiez le chemin ou les guillemets et exécutez à nouveau la commande.

2895 2940 

2896**Que faire :**2941**Que faire :**

2897 2942 

2898* Corrigez chaque problème que le message énumère, puis exécutez la commande à nouveau. Voir [les champs qu'un sous-agent défini par CLI prend](/docs/fr/sub-agents#choose-the-subagent-scope).2943* Corrigez chaque problème listé par le message, puis exécutez à nouveau la commande. Consultez [les champs acceptés par un sous-agent défini par la CLI](/docs/fr/sub-agents#choose-the-subagent-scope).

2899 2944 

2900<h3 id="cloud-sessions-cannot-be-created-from-a-restricted-session">2945<h3 id="cloud-sessions-cannot-be-created-from-a-restricted-session">

2901 Les sessions cloud ne peuvent pas être créées à partir d'une session `--restricted`2946 Les sessions cloud ne peuvent pas être créées depuis une session `--restricted`

2902</h3>2947</h3>

2903 2948 

2904Lorsque vous démarrez une session avec [`--restricted`](/docs/fr/cli-reference#cli-flags), Claude Code refuse de créer des [sessions cloud](/docs/fr/claude-code-on-the-web#from-terminal-to-cloud) à partir de celle-ci, car la nouvelle session s'exécuterait en dehors du processus restreint et n'appliquerait pas le mode restreint. Claude Code refuse du côté client, avant de contacter le serveur, donc aucune session cloud n'est créée :2949Lorsque vous démarrez une session avec [`--restricted`](/docs/fr/cli-reference#cli-flags), Claude Code refuse d'y créer des [sessions cloud](/docs/fr/claude-code-on-the-web#from-terminal-to-cloud), car la nouvelle session s'exécuterait en dehors du processus restreint et n'appliquerait pas le mode restreint. Claude Code refuse côté client, avant de contacter le serveur, donc aucune session cloud n'est créée :

2905 2950 

2906```text theme={null}2951```text theme={null}

2907Cloud sessions cannot be created from a --restricted session: they would not enforce it.2952Cloud sessions cannot be created from a --restricted session: they would not enforce it.


2910**Que faire :**2955**Que faire :**

2911 2956 

2912* Exécutez la tâche localement dans la session restreinte2957* Exécutez la tâche localement dans la session restreinte

2913* Si vous contrôlez la façon dont la session a été lancée, démarrez une nouvelle session `claude` sans `--restricted` et créez la session cloud à partir de là2958* Si vous contrôlez la manière dont la session a été lancée, démarrez une nouvelle session `claude` sans `--restricted` et créez la session cloud depuis celle-ci

2914 2959 

2915Avant la v2.1.248, Claude Code n'avait pas d'indicateur `--restricted` ; les versions antérieures rejettent l'indicateur lui-même avec une erreur d'option inconnue.2960Avant la v2.1.248, Claude Code n'avait pas de flag `--restricted` ; les versions antérieures rejettent le flag lui-même avec une erreur d'option inconnue.

2916 2961 

2917<h3 id="cloud-sessions-are-disabled-by-your-organizations-policy">2962<h3 id="cloud-sessions-are-disabled-by-your-organizations-policy">

2918 Les sessions cloud sont désactivées par la politique de votre organisation2963 Les sessions cloud sont désactivées par la politique de votre organisation


2924Cloud sessions are disabled by your organization's policy. Contact your organization admin to enable them.2969Cloud sessions are disabled by your organization's policy. Contact your organization admin to enable them.

2925```2970```

2926 2971 

2927Le message apparaît lorsque vous [créez une session cloud à partir du terminal](/docs/fr/claude-code-on-the-web#from-terminal-to-cloud) et lorsque vous soumettez une commande qui a besoin de sessions cloud, telle que `/teleport`, `/remote-env`, ou `/web-setup`. Avant la v2.1.268, soumettre l'une de ces commandes renvoyait [`Unknown command`](#unknown-command) à la place.2972Le message apparaît lorsque vous [créez une session cloud depuis le terminal](/docs/fr/claude-code-on-the-web#from-terminal-to-cloud) et lorsque vous soumettez une commande qui nécessite les sessions cloud, comme `/teleport`, `/remote-env` ou `/web-setup`. Avant la v2.1.268, soumettre l'une de ces commandes renvoyait [`Unknown command`](#unknown-command) à la place.

2928 2973 

2929Il s'agit d'une politique d'organisation côté serveur, elle ne peut donc pas être remplacée par des paramètres locaux, des variables d'environnement ou des indicateurs CLI.2974Il s'agit d'une politique d'organisation côté serveur, elle ne peut donc pas être outrepassée par des paramètres locaux, des variables d'environnement ou des flags de la CLI.

2930 2975 

2931Si Claude Code n'a pas encore chargé la politique de votre organisation ou ne peut pas la récupérer, ces commandes répondent `Couldn't verify your organization's policy for cloud sessions. Check your network connection, then restart Claude Code and try again.` à la place.2976Si Claude Code n'a pas encore chargé la politique de votre organisation ou ne parvient pas à la récupérer, ces commandes répondent `Couldn't verify your organization's policy for cloud sessions. Check your network connection, then restart Claude Code and try again.` à la place.

2932 2977 

2933**Que faire :**2978**Que faire :**

2934 2979 

2935* Demandez à un [Propriétaire](/docs/fr/server-managed-settings#access-control) de votre organisation d'activer les sessions cloud dans les paramètres d'administration Claude Code à [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)2980* Demandez à un [Owner](/docs/fr/server-managed-settings#access-control) de votre organisation d'activer les sessions cloud dans les paramètres d'administration de Claude Code sur [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)

2936* Si le message indique qu'il n'a pas pu vérifier la politique, vérifiez votre connexion réseau, puis redémarrez Claude Code et réessayez2981* Si le message indique que la politique n'a pas pu être vérifiée, vérifiez votre connexion réseau, puis redémarrez Claude Code et réessayez

2937 2982 

2938<h3 id="the-json-schema-value-is-not-a-valid-json-schema">2983<h3 id="the-json-schema-value-is-not-a-valid-json-schema">

2939 La valeur `--json-schema` n'est pas un schéma JSON valide2984 La valeur `--json-schema` n'est pas un JSON Schema valide

2940</h3>2985</h3>

2941 2986 

2942Le schéma que vous avez transmis à [`--json-schema`](/docs/fr/cli-reference#cli-flags) en [mode non interactif](/docs/fr/headless#get-structured-output) a échoué la compilation du schéma JSON, donc `claude` se termine avec le code 1 au lieu d'exécuter l'invite. Avant la v2.1.205, un schéma invalide produisait une sortie non structurée sans erreur, et tout schéma utilisant le mot-clé `format` était traité comme invalide.2987Le schéma que vous avez passé à [`--json-schema`](/docs/fr/cli-reference#cli-flags) en [mode non interactif](/docs/fr/headless#get-structured-output) a échoué à la compilation JSON Schema, donc `claude` se termine avec le code 1 au lieu d'exécuter le prompt. Avant la v2.1.205, un schéma invalide produisait une sortie non structurée sans erreur, et tout schéma utilisant le mot-clé `format` était traité comme invalide.

2943 2988 

2944```text theme={null}2989```text theme={null}

2945Error: --json-schema is not a valid JSON Schema: data/type must be equal to one of the allowed values2990Error: --json-schema is not a valid JSON Schema: data/type must be equal to one of the allowed values

2946```2991```

2947 2992 

2948Le texte après le deuxième deux-points est le diagnostic du validateur et nomme le mot-clé ou l'emplacement qui a échoué. Les schémas qui utilisent le mot-clé `format`, tels que `"format": "email"`, sont valides : Claude Code accepte `format` comme annotation et ne l'applique pas.2993Le texte après le second deux-points est le diagnostic du validateur et nomme le mot-clé ou l'emplacement en échec. Les schémas qui utilisent le mot-clé `format`, comme `"format": "email"`, sont valides : Claude Code accepte `format` comme annotation et ne l'applique pas.

2949 2994 

2950Claude Code exécute deux vérifications avant la compilation du schéma : il rejette une valeur qui n'est pas analysable en JSON avec `Error: --json-schema is not valid JSON`, et un JSON valide qui n'est pas un objet avec `Error: --json-schema must be a JSON object`.2995Claude Code effectue deux vérifications avant la compilation du schéma : il rejette une valeur qui n'est pas du JSON analysable avec `Error: --json-schema is not valid JSON`, et du JSON valide qui n'est pas un objet avec `Error: --json-schema must be a JSON object`.

2951 2996 

2952**Que faire :**2997**Que faire :**

2953 2998 

2954* Corrigez la partie du schéma que le diagnostic nomme, puis réexécutez la commande2999* Corrigez la partie du schéma nommée par le diagnostic, puis relancez la commande

2955* Voir [Obtenir une sortie structurée](/docs/fr/headless#get-structured-output) pour un schéma et une commande fonctionnels3000* Consultez [Obtenir une sortie structurée](/docs/fr/headless#get-structured-output) pour un schéma et une commande fonctionnels

2956 3001 

2957<h3 id="settings-file-exceeds-the-2mib-limit">3002<h3 id="settings-file-exceeds-the-2mib-limit">

2958 Le fichier de paramètres dépasse la limite de 2 Mio3003 Le fichier de paramètres dépasse la limite de 2 MiB

2959</h3>3004</h3>

2960 3005 

2961Le fichier que vous avez transmis à [`--settings`](/docs/fr/cli-reference#cli-flags) est plus grand que 2 Mio, donc `claude` se termine avec le code 1 au démarrage au lieu de le charger. Avant la v2.1.214, Claude Code lisait le fichier sans vérification de taille, et un fichier de plusieurs gigaoctets ou un fichier de périphérique tel que `/dev/zero` augmentait la mémoire sans limite.3006Le fichier que vous avez passé à [`--settings`](/docs/fr/cli-reference#cli-flags) dépasse 2 MiB, donc `claude` se termine avec le code 1 au démarrage au lieu de le charger. Avant la v2.1.214, Claude Code lisait le fichier sans vérifier sa taille, et un fichier de plusieurs gigaoctets ou un fichier de périphérique comme `/dev/zero` faisait croître la mémoire sans limite.

2962 3007 

2963```text theme={null}3008```text theme={null}

2964Error: Settings file exceeds the 2MiB limit: /path/to/settings.json3009Error: Settings file exceeds the 2MiB limit: /path/to/settings.json

2965```3010```

2966 3011 

2967Claude Code rejette un chemin `--settings` qui n'est pas un fichier régulier de la même manière : un périphérique, FIFO ou socket signale `Error: Cannot use settings file (Not a regular file (device, FIFO, or socket))` suivi du chemin, et un répertoire signale une raison `EISDIR`.3012Claude Code rejette de la même façon un chemin `--settings` qui n'est pas un fichier ordinaire : un périphérique, une FIFO ou un socket signale `Error: Cannot use settings file (Not a regular file (device, FIFO, or socket))` suivi du chemin, et un répertoire signale un motif `EISDIR`.

2968 3013 

2969**Que faire :**3014**Que faire :**

2970 3015 

2971* Pointez `--settings` vers un fichier de paramètres JSON régulier inférieur à 2 Mio. Voir [Paramètres](/docs/fr/settings) pour le format.3016* Faites pointer `--settings` vers un fichier de paramètres JSON ordinaire de moins de 2 MiB. Consultez [Paramètres](/docs/fr/settings) pour le format.

2972 3017 

2973<h3 id="the-current-directory-no-longer-exists">3018<h3 id="the-current-directory-no-longer-exists">

2974 Le répertoire courant n'existe plus3019 Le répertoire courant n'existe plus

2975</h3>3020</h3>

2976 3021 

2977Vous avez démarré `claude` à partir d'un répertoire qui a été supprimé ou déplacé après que votre shell y soit entré, par exemple un worktree ou un répertoire temporaire qu'un autre shell a supprimé. Claude Code ne peut pas lire son répertoire de travail, donc il se termine avec le code 1 avant de démarrer la session, en mode interactif et [non interactif](/docs/fr/headless) également. Avant la v2.1.239, Claude Code s'écrasait avec une source de bundle minifiée et une pile `ENOENT ... uv_cwd` brute sur stderr au lieu de ce message.3022Vous avez démarré `claude` depuis un répertoire qui a été supprimé ou déplacé après que votre shell y est entré, par exemple un worktree ou un répertoire temporaire supprimé par un autre shell. Claude Code ne peut pas lire son répertoire de travail, il se termine donc avec le code 1 avant de démarrer la session, en mode interactif comme en [mode non interactif](/docs/fr/headless). Avant la v2.1.239, Claude Code plantait en affichant le source minifié du bundle et une pile brute `ENOENT ... uv_cwd` sur stderr au lieu de ce message.

2978 3023 

2979```text theme={null}3024```text theme={null}

2980The current directory no longer exists (it was deleted or moved). Start Claude Code from an existing directory.3025The current directory no longer exists (it was deleted or moved). Start Claude Code from an existing directory.

2981error: The current working directory was deleted, so that command didn't work. Please cd into a different directory and try again.3026error: The current working directory was deleted, so that command didn't work. Please cd into a different directory and try again.

2982```3027```

2983 3028 

2984La cause et la correction sont les mêmes pour les deux formes.3029La cause et la solution sont les mêmes pour les deux formes.

2985 3030 

2986Lorsque Claude Code ne peut pas lire le répertoire de travail pour une autre raison, telle qu'un changement de permissions, le message nomme le code d'erreur à la place : `Can't read the current directory (EACCES). Start Claude Code from a different directory.`3031Lorsque Claude Code ne peut pas lire le répertoire de travail pour une autre raison, comme un changement de permissions, le message nomme le code d'erreur à la place : `Can't read the current directory (EACCES). Start Claude Code from a different directory.`

2987 3032 

2988Sur macOS, `EPERM` pour un répertoire dans `~/Desktop`, `~/Documents`, `~/Downloads`, ou iCloud Drive signifie généralement que macOS bloque votre application terminal de ce dossier. D'autres commandes qui lisent ce dossier échouent de la même manière : `ls` là-bas signale `Operation not permitted`, même avec `sudo`.3033Sur macOS, `EPERM` pour un répertoire situé dans `~/Desktop`, `~/Documents`, `~/Downloads` ou iCloud Drive signifie généralement que macOS bloque l'accès de votre application de terminal à ce dossier. Les autres commandes qui lisent ce dossier échouent de la même façon : `ls` à cet endroit signale `Operation not permitted`, même avec `sudo`.

2989 3034 

2990**Que faire :**3035**Que faire :**

2991 3036 

2992* Changez vers un répertoire qui existe, tel que votre répertoire personnel ou de projet, puis exécutez `claude` à nouveau3037* Placez-vous dans un répertoire qui existe, comme votre répertoire personnel ou votre répertoire de projet, puis exécutez à nouveau `claude`

2993* Si le répertoire a été recréé au même chemin, votre shell tient toujours le répertoire supprimé. Exécutez `cd "$PWD"` ou quittez et réentrez le répertoire, puis exécutez `claude` à nouveau3038* Si le répertoire a été recréé au même chemin, votre shell conserve toujours celui qui a été supprimé. Exécutez `cd "$PWD"` ou quittez le répertoire et revenez-y, puis exécutez à nouveau `claude`

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

2995 3040 

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

2997 Le répertoire temporaire a été refusé ou ne peut pas être créé3042 Répertoire temporaire refusé ou impossible à créer

2998</h3>3043</h3>

2999 3044 

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

3001 3046 

3002```text wrap theme={null}3047```text wrap theme={null}

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


3012**Que faire :**3057**Que faire :**

3013 3058 

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

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

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

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

3018 3063 

3019<h3 id="directory-couldnt-be-resolved-to-a-real-location">3064<h3 id="directory-couldnt-be-resolved-to-a-real-location">

3020 Le répertoire n'a pas pu être résolu à un emplacement réel3065 Le répertoire n'a pas pu être résolu vers un emplacement réel

3021</h3>3066</h3>

3022 3067 

3023Vous avez exécuté `/add-dir` pour un sous-répertoire de votre répertoire de travail, et Claude Code n'a pas pu résoudre le répertoire à son emplacement réel.3068Vous avez exécuté `/add-dir` pour un sous-répertoire de votre répertoire de travail, et Claude Code n'a pas pu résoudre le répertoire vers son emplacement réel.

3024 3069 

3025Vous avez déjà accès aux fichiers d'un sous-répertoire du répertoire de travail, donc `/add-dir` charge uniquement ses skills, commandes et agents. Avant de les charger, Claude Code vérifie que l'emplacement réel du répertoire, avec tous les liens symboliques résolus, se trouve à l'intérieur du répertoire de travail. Lorsque Claude Code ne peut pas résoudre cet emplacement, il ne charge rien et affiche ce message :3070Vous avez déjà accès aux fichiers d'un sous-répertoire du répertoire de travail, donc `/add-dir` ne charge que ses skills, commandes et agents. Avant de les charger, Claude Code vérifie que l'emplacement réel du répertoire, après résolution des liens symboliques, se trouve dans le répertoire de travail. Lorsque Claude Code ne parvient pas à résoudre cet emplacement, il ne charge rien et affiche ce message :

3026 3071 

3027```text theme={null}3072```text theme={null}

3028packages/app couldn't be resolved to a real location, so its skills, commands, and agents weren't loaded. Check that it is a directory inside the working directory and try again.3073packages/app couldn't be resolved to a real location, so its skills, commands, and agents weren't loaded. Check that it is a directory inside the working directory and try again.


3030 3075 

3031**Que faire :**3076**Que faire :**

3032 3077 

3033* Vérifiez que le chemin nomme un répertoire réel à l'intérieur du répertoire de travail, puis exécutez `/add-dir` à nouveau3078* Vérifiez que le chemin désigne un répertoire réel dans le répertoire de travail, puis exécutez à nouveau `/add-dir`

3034* Le message ne change pas votre accès aux fichiers ; il signale uniquement que le contenu `.claude/` du répertoire n'a pas été chargé3079* Le message ne modifie pas votre accès aux fichiers ; il signale seulement que le contenu `.claude/` du répertoire n'a pas été chargé

3035 3080 

3036Avant la v2.1.261, ce message apparaissait également pour chaque `/add-dir <subdirectory>` lorsque le répertoire de travail était sur un automontage `/net/<host>`, où Claude Code refuse de résoudre les chemins par conception ; le répertoire était correct et réessayer ne pouvait pas aider.3081Avant la v2.1.261, ce message apparaissait aussi pour chaque `/add-dir <subdirectory>` lorsque le répertoire de travail se trouvait sur un montage automatique `/net/<host>`, où Claude Code refuse par conception de résoudre les chemins ; le répertoire était correct et réessayer ne pouvait pas aider.

3037 3082 

3038<h3 id="workspace-not-trusted-when-starting-remote-control">3083<h3 id="workspace-not-trusted-when-starting-remote-control">

3039 Espace de travail non approuvé au démarrage du contrôle à distance3084 Espace de travail non approuvé au démarrage de Remote Control

3040</h3>3085</h3>

3041 3086 

3042Vous avez démarré le mode serveur [Contrôle à distance](/docs/fr/remote-control) avec `claude remote-control` ou son alias `claude rc` dans un répertoire que vous n'avez pas approuvé, et la commande n'a pas pu vous demander si vous faites confiance à celui-ci. Par exemple, l'entrée standard ou la sortie standard de la commande n'est pas un terminal parce que l'une d'elles est redirigée ou canalisée. La commande se termine avec le code 1 :3087Vous avez démarré le mode serveur de [Remote Control](/docs/fr/remote-control) avec `claude remote-control` ou son alias `claude rc` dans un répertoire que vous n'avez pas approuvé, et la commande n'a pas pu vous demander si vous vouliez l'approuver. Par exemple, l'entrée standard ou la sortie standard de la commande n'est pas un terminal parce que l'une d'elles est redirigée ou envoyée dans un pipe. La commande se termine avec le code 1 :

3043 3088 

3044```text theme={null}3089```text theme={null}

3045Error: Workspace not trusted. Please run `claude` in /Users/you/project first to review and accept the workspace trust dialog.3090Error: Workspace not trusted. Please run `claude` in /Users/you/project first to review and accept the workspace trust dialog.

3046```3091```

3047 3092 

3048Deux variantes qui commencent également par `Error: Workspace not trusted.` apparaissent également dans un terminal trop petit pour afficher ce que faire confiance au répertoire active, ou un qui n'a pas signalé sa taille. Agrandissez la fenêtre ou passez à une fenêtre de terminal normale, puis exécutez `claude rc` à nouveau.3093Deux variantes qui commencent aussi par `Error: Workspace not trusted.` apparaissent dans un terminal trop petit pour afficher ce qu'active l'approbation du répertoire, ou dans un terminal qui n'a pas signalé sa taille. Agrandissez la fenêtre ou passez à une fenêtre de terminal normale, puis exécutez à nouveau `claude rc`.

3049 3094 

3050Dans votre répertoire personnel, le message est différent, car la boîte de dialogue d'approbation de l'espace de travail ne sauvegarde jamais l'approbation pour le répertoire personnel, donc l'accepter là-bas ne peut pas satisfaire cette vérification. Avant la v2.1.214, le répertoire personnel affichait le message ci-dessus, dont les conseils ne peuvent pas réussir là-bas.3095Dans votre répertoire personnel, le message est différent, car la boîte de dialogue d'approbation de l'espace de travail n'enregistre jamais l'approbation pour le répertoire personnel, donc l'accepter à cet endroit ne peut pas satisfaire cette vérification. Avant la v2.1.214, le répertoire personnel affichait le message ci-dessus, dont le conseil ne peut pas aboutir à cet endroit.

3051 3096 

3052```text theme={null}3097```text theme={null}

3053Error: Workspace not trusted. /Users/you is your home directory, and for security home-directory trust is never saved, so running `claude` here first won't help. Run `claude rc` from a project directory instead (run `claude` there once to accept the trust dialog).3098Error: Workspace not trusted. /Users/you is your home directory, and for security home-directory trust is never saved, so running `claude` here first won't help. Run `claude rc` from a project directory instead (run `claude` there once to accept the trust dialog).

3054```3099```

3055 3100 

3056Si vous répondez `n` ou appuyez sur Entrée à la question [`Trust <directory>?`](/docs/fr/remote-control#requirements), la commande imprime un message `Remote Control did not start` qui nomme le répertoire et se termine avec le code 1. Exécutez `claude rc` à nouveau pour répondre `y`.3101Si vous répondez `n` ou appuyez sur Entrée à la [question `Trust <directory>?`](/docs/fr/remote-control#requirements), la commande affiche un message `Remote Control did not start` qui nomme le répertoire et se termine avec le code 1. Exécutez à nouveau `claude rc` pour répondre `y`.

3057 3102 

3058**Que faire :**3103**Que faire :**

3059 3104 

3060* Approuvez le répertoire à partir d'un terminal d'abord : exécutez `claude rc` là-bas et répondez `y`, ou exécutez `claude` là-bas et acceptez la [boîte de dialogue d'approbation de l'espace de travail](/docs/fr/permissions#project-allow-rules-and-workspace-trust), puis exécutez votre commande d'origine à nouveau3105* Approuvez d'abord le répertoire depuis un terminal : exécutez `claude rc` à cet endroit et répondez `y`, ou exécutez `claude` à cet endroit et acceptez la [boîte de dialogue d'approbation de l'espace de travail](/docs/fr/permissions#project-allow-rules-and-workspace-trust), puis exécutez à nouveau votre commande d'origine

3061* Dans votre répertoire personnel, changez vers un répertoire de projet et démarrez le contrôle à distance là-bas3106* Dans votre répertoire personnel, placez-vous dans un répertoire de projet et démarrez Remote Control depuis celui-ci

3062 3107 

3063Avant la v2.1.284, la commande ne demandait jamais, même dans un terminal.3108Avant la v2.1.284, la commande ne posait jamais la question, même dans un terminal.

3064 3109 

3065<h3 id="not-carried-over-to-the-sessions-remote-control-starts">3110<h3 id="not-carried-over-to-the-sessions-remote-control-starts">

3066 Non reporté aux sessions que le contrôle à distance démarre3111 Non transmis aux sessions démarrées par Remote Control

3067</h3>3112</h3>

3068 3113 

3069Vous avez démarré [Contrôle à distance](/docs/fr/remote-control) avec un indicateur global `claude` avant le verbe `remote-control`, un qui restreindrait ou configurerait les sessions que le contrôle à distance démarre, tel que `--settings`, `--setting-sources`, `--permission-mode`, `--disallowed-tools`, ou `--mcp-config`. Un indicateur placé avant le verbe n'atteint jamais ces sessions. Claude Code refuse de démarrer à la place, en nommant l'indicateur :3114Vous avez démarré [Remote Control](/docs/fr/remote-control) avec un flag global de `claude` placé avant le verbe `remote-control`, qui restreindrait ou configurerait les sessions démarrées par Remote Control, comme `--settings`, `--setting-sources`, `--permission-mode`, `--disallowed-tools` ou `--mcp-config`. Un flag placé avant le verbe n'atteint jamais ces sessions. Claude Code refuse donc de démarrer, en nommant le flag :

3070 3115 

3071```text theme={null}3116```text theme={null}

3072Error: `--settings` before `remote-control` is not carried over to the sessions Remote Control starts, so Remote Control refuses to start rather than drop it — remove it, and give Remote Control's own options after the verb (see `claude remote-control --help`).3117Error: `--settings` before `remote-control` is not carried over to the sessions Remote Control starts, so Remote Control refuses to start rather than drop it — remove it, and give Remote Control's own options after the verb (see `claude remote-control --help`).

3073```3118```

3074 3119 

3075Claude Code ne refuse pas les indicateurs globaux qui sont inoffensifs à supprimer, tels que `--verbose`, `--model`, ou un `--session-id` ou `--plugin-dir` injecté par wrapper : il les ignore et le contrôle à distance démarre.3120Claude Code ne refuse pas les flags globaux qu'il est sans danger d'ignorer, comme `--verbose`, `--model`, ou un `--session-id` ou `--plugin-dir` injecté par un wrapper : il les ignore et Remote Control démarre.

3076 3121 

3077Claude Code refuse également de démarrer pour un indicateur global qu'il ne reconnaît pas encore comme inoffensif, donc un indicateur ajouté dans une version plus récente peut apparaître dans ce message jusqu'à ce qu'une version ultérieure le marque comme inoffensif.3122Claude Code refuse aussi de démarrer pour un flag global qu'il ne reconnaît pas encore comme sans danger, donc un flag ajouté dans une version plus récente peut apparaître dans ce message jusqu'à ce qu'une version ultérieure le marque comme sans danger.

3078 3123 

3079**Que faire :**3124**Que faire :**

3080 3125 

3081* Supprimez l'indicateur avant le verbe et transmettez [les options propres du contrôle à distance](/docs/fr/remote-control#start-a-remote-control-session) après ; `claude remote-control --help` les énumère3126* Retirez le flag placé avant le verbe et passez les [options propres à Remote Control](/docs/fr/remote-control#start-a-remote-control-session) après celui-ci ; `claude remote-control --help` les liste

3082* Lorsque l'indicateur refusé est `--permission-mode`, exécutez `claude remote-control --permission-mode <mode>` pour définir le mode de permission pour les sessions que le contrôle à distance démarre3127* Lorsque le flag refusé est `--permission-mode`, exécutez `claude remote-control --permission-mode <mode>` pour définir le mode de permission des sessions démarrées par Remote Control

3083 3128 

3084Avant la v2.1.248, `claude remote-control` n'acceptait pas ses propres indicateurs lorsqu'un indicateur global venait en premier, et la commande échouait avec une erreur d'option inconnue.3129Avant la v2.1.248, `claude remote-control` n'acceptait pas ses propres flags lorsqu'un flag global venait en premier, et la commande échouait avec une erreur `unknown option`.

3085 3130 

3086<h3 id="claude-import-is-not-yet-available-in-this-build">3131<h3 id="claude-import-is-not-yet-available-in-this-build">

3087 claude import n'est pas encore disponible dans cette version3132 claude import n'est pas encore disponible dans ce build

3088</h3>3133</h3>

3089 3134 

3090Vous avez exécuté [`claude import`](/docs/fr/cli-reference#cli-commands), et Claude Code a trouvé le flux d'importation désactivé, donc la commande se termine avec le code 1 au lieu de démarrer l'importation. Avant la v2.1.222, une version avec le flux d'importation désactivé traitait `import` comme une invite et démarrait une session interactive au lieu d'imprimer ce message.3135Vous avez exécuté [`claude import`](/docs/fr/cli-reference#cli-commands), et Claude Code a constaté que le processus d'import était désactivé, donc la commande se termine avec le code 1 au lieu de démarrer l'import. Avant la v2.1.222, un build avec le processus d'import désactivé traitait `import` comme un prompt et démarrait une session interactive au lieu d'afficher ce message.

3091 3136 

3092```text theme={null}3137```text theme={null}

3093`claude import` is not yet available in this build. Run `claude` and use /mcp or edit ~/.claude/settings.json directly.3138`claude import` is not yet available in this build. Run `claude` and use /mcp or edit ~/.claude/settings.json directly.

3094```3139```

3095 3140 

3096Claude Code active `claude import` via un indicateur de fonctionnalité qu'il récupère auprès d'Anthropic et met en cache sur le disque. Ce message signifie que la valeur mise en cache est désactivée. La cause est généralement l'une des suivantes :3141Claude Code active `claude import` via un feature flag qu'il récupère auprès d'Anthropic et met en cache sur le disque. Ce message signifie que la valeur en cache est désactivée. La cause est généralement l'une des suivantes :

3097 3142 

3098* Vous n'avez pas démarré de session depuis l'installation, donc Claude Code n'a pas encore récupéré l'indicateur. Le premier `claude import` peut imprimer ceci même lorsque la fonctionnalité vous est disponible.3143* Vous n'avez pas démarré de session depuis l'installation, donc Claude Code n'a pas encore récupéré le flag. Le premier `claude import` peut afficher ce message même lorsque la fonctionnalité vous est disponible.

3099* Vous utilisez Claude Code via Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, ou Claude Platform sur AWS, ou via une [passerelle d'applications Claude](/docs/fr/claude-apps-gateway#availability-and-limitations). Claude Code ne récupère pas les indicateurs de fonctionnalité dans ces sessions, donc `claude import` reste indisponible.3144* Vous utilisez Claude Code via Amazon Bedrock, Agent Platform de Google Cloud, Microsoft Foundry ou Claude Platform on AWS, ou via une [passerelle Claude apps](/docs/fr/claude-apps-gateway#availability-and-limitations). Claude Code ne récupère pas les feature flags dans ces sessions, donc `claude import` reste indisponible.

3100* Vous avez défini `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, `DISABLE_GROWTHBOOK`, ou [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/fr/env-vars), qui désactivent la récupération des indicateurs de fonctionnalité, donc `claude import` reste indisponible.3145* Vous avez défini `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, `DISABLE_GROWTHBOOK` ou [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/fr/env-vars), qui désactivent la récupération des feature flags, donc `claude import` reste indisponible.

3101 3146 

3102**Que faire :**3147**Que faire :**

3103 3148 

3104* Sur une installation nouvelle, démarrez `claude`, attendez que la session se charge, quittez, et exécutez `claude import` à nouveau3149* Sur une nouvelle installation, démarrez `claude`, attendez que la session se charge, quittez, puis exécutez à nouveau `claude import`

3105* Où la récupération des indicateurs de fonctionnalité reste désactivée, configurez la configuration vous-même : ajoutez des serveurs MCP avec [`claude mcp add`](/docs/fr/mcp#installing-mcp-servers), et créez les [fichiers `CLAUDE.md`](/docs/fr/memory#how-claude-md-files-load), [skills et commandes](/docs/fr/skills#where-skills-live), et [sous-agents](/docs/fr/sub-agents#choose-the-subagent-scope) que vous souhaitez reporter. Le message nomme également `~/.claude/settings.json`. De la configuration que `claude import` reporte, ce fichier ne contient que le [mode de permission](/docs/fr/settings-reference#permission-settings) ; Claude Code ne lit pas les serveurs MCP à partir de celui-ci.3150* Lorsque la récupération des feature flags reste désactivée, configurez vous-même l'environnement : ajoutez des serveurs MCP avec [`claude mcp add`](/docs/fr/mcp#installing-mcp-servers), et créez les [fichiers `CLAUDE.md`](/docs/fr/memory#how-claude-md-files-load), les [skills et commandes](/docs/fr/skills#where-skills-live) et les [sous-agents](/docs/fr/sub-agents#choose-the-subagent-scope) que vous souhaitez transférer. Le message nomme aussi `~/.claude/settings.json`. De la configuration que transfère `claude import`, ce fichier ne contient que le [mode de permission](/docs/fr/settings-reference#permission-settings) ; Claude Code n'y lit pas les serveurs MCP.

3106 3151 

3107<h3 id="could-not-read-claude-code-config">3152<h3 id="could-not-read-claude-code-config">

3108 Impossible de lire la configuration Claude Code3153 Impossible de lire la configuration de Claude Code

3109</h3>3154</h3>

3110 3155 

3111Vous avez exécuté [`claude import`](/docs/fr/cli-reference#cli-commands) tandis que Claude Code ne pouvait pas analyser `~/.claude.json`, le fichier où il stocke votre connexion et l'état par projet. La sous-commande lit ce fichier pour vérifier la disponibilité mais n'affiche pas la boîte de dialogue de récupération que la session interactive affiche, elle se termine donc avec le code 1. Avant la v2.1.222, `claude import` avec un fichier de configuration illisible démarrait une session interactive, dont la boîte de dialogue de récupération gérait le fichier.3156Vous avez exécuté [`claude import`](/docs/fr/cli-reference#cli-commands) alors que Claude Code ne parvenait pas à analyser `~/.claude.json`, le fichier dans lequel il stocke votre connexion et l'état de chaque projet. La sous-commande lit ce fichier pour vérifier la disponibilité, mais n'affiche pas la boîte de dialogue de récupération qu'affiche la session interactive, elle se termine donc avec le code 1. Avant la v2.1.222, `claude import` avec un fichier de configuration illisible démarrait une session interactive, dont la boîte de dialogue de récupération prenait en charge le fichier.

3112 3157 

3113```text theme={null}3158```text theme={null}

3114Could not read Claude Code config — run `claude` with no arguments to recover it.3159Could not read Claude Code config — run `claude` with no arguments to recover it.


3116 3161 

3117**Que faire :**3162**Que faire :**

3118 3163 

3119* Exécutez `claude` sans arguments. Claude Code détecte le fichier invalide et propose de le réinitialiser. Puis exécutez `claude import` à nouveau.3164* Exécutez `claude` sans arguments. Claude Code détecte le fichier invalide et propose de le réinitialiser. Exécutez ensuite à nouveau `claude import`.

3120* Pour conserver les modifications manuelles que vous avez apportées, corrigez la syntaxe JSON dans `~/.claude.json` dans un éditeur à la place, puis réexécutez `claude import`3165* Pour conserver les modifications manuelles que vous avez apportées, corrigez plutôt la syntaxe JSON de `~/.claude.json` dans un éditeur, puis relancez `claude import`

3121 3166 

3122<h3 id="could-not-import-a-server-from-claude-desktop">3167<h3 id="could-not-import-a-server-from-claude-desktop">

3123 Impossible d'importer un serveur depuis Claude Desktop3168 Impossible d'importer un serveur depuis Claude Desktop

3124</h3>3169</h3>

3125 3170 

3126Claude Code n'a pas pu ajouter l'un des serveurs que vous avez sélectionnés dans `claude mcp add-from-claude-desktop`. La commande importe toujours les autres serveurs sélectionnés et imprime une ligne par serveur qu'elle n'a pas pu ajouter. Avant la v2.1.205, le premier serveur qui a échoué a arrêté l'importation.3171Claude Code n'a pas pu ajouter l'un des serveurs que vous avez sélectionnés dans `claude mcp add-from-claude-desktop`. La commande importe quand même les autres serveurs sélectionnés et affiche une ligne par serveur qu'elle n'a pas pu ajouter. Avant la v2.1.205, le premier serveur en échec arrêtait l'import.

3127 3172 

3128```text theme={null}3173```text theme={null}

3129Could not import my server: Invalid name my server. Names can only contain letters, numbers, hyphens, and underscores.3174Could not import my server: Invalid name my server. Names can only contain letters, numbers, hyphens, and underscores.

3130```3175```

3131 3176 

3132Le texte après le nom du serveur est la raison. La plus courante est la vérification du nom : Claude Desktop autorise les caractères dans les noms de serveur, tels que les espaces et les points, que `claude mcp` restreint aux lettres, chiffres, traits d'union et traits de soulignement. D'autres raisons incluent une configuration de serveur qui échoue la validation et un serveur bloqué par la [politique MCP](/docs/fr/managed-mcp) de votre organisation.3177Le texte après le nom du serveur est le motif. Le plus courant est la vérification du nom : Claude Desktop autorise dans les noms de serveurs des caractères, comme les espaces et les points, que `claude mcp` limite aux lettres, chiffres, traits d'union et tirets bas. Les autres motifs incluent une configuration de serveur qui échoue à la validation et un serveur bloqué par la [politique MCP](/docs/fr/managed-mcp) de votre organisation.

3133 3178 

3134**Que faire :**3179**Que faire :**

3135 3180 

3136* Renommez le serveur dans `claude_desktop_config.json` pour utiliser uniquement des lettres, des chiffres, des traits d'union et des traits de soulignement, puis exécutez `claude mcp add-from-claude-desktop` à nouveau3181* Renommez le serveur dans `claude_desktop_config.json` pour n'utiliser que des lettres, chiffres, traits d'union et tirets bas, puis exécutez à nouveau `claude mcp add-from-claude-desktop`

3137* Ajoutez ce serveur directement avec `claude mcp add` ou `claude mcp add-json` sous un nom valide. Voir [Importer les serveurs MCP depuis Claude Desktop](/docs/fr/mcp#import-mcp-servers-from-claude-desktop).3182* Ajoutez ce serveur directement avec `claude mcp add` ou `claude mcp add-json` sous un nom valide. Consultez [Importer des serveurs MCP depuis Claude Desktop](/docs/fr/mcp#import-mcp-servers-from-claude-desktop).

3138 3183 

3139<h3 id="cannot-add-mcp-server-to-the-managed-scope">3184<h3 id="cannot-add-mcp-server-to-the-managed-scope">

3140 Impossible d'ajouter un serveur MCP à la portée gérée3185 Impossible d'ajouter un serveur MCP à la portée managed

3141</h3>3186</h3>

3142 3187 

3143Vous avez exécuté `claude mcp add` ou `claude mcp add-json` avec `--scope managed`. Cette portée contient les serveurs que votre organisation fournit via le paramètre géré [`managedMcpServers`](/docs/fr/settings-reference#managedmcpservers). Claude Code les lit à partir des paramètres gérés uniquement, donc la commande ne peut pas écrire un serveur dans cette portée.3188Vous avez exécuté `claude mcp add` ou `claude mcp add-json` avec `--scope managed`. Cette portée contient les serveurs que votre organisation fournit via le paramètre géré [`managedMcpServers`](/docs/fr/settings-reference#managedmcpservers). Claude Code les lit uniquement depuis les paramètres gérés, donc la commande ne peut pas écrire de serveur dans cette portée.

3144 3189 

3145```text theme={null}3190```text theme={null}

3146Cannot add MCP server to scope: managed3191Cannot add MCP server to scope: managed


3148 3193 

3149**Que faire :**3194**Que faire :**

3150 3195 

3151* Ajoutez le serveur à une portée dans laquelle vous pouvez écrire : `local`, `user`, ou `project`. Sans `--scope`, la commande utilise `local`. Voir [Portées d'installation MCP](/docs/fr/mcp#mcp-installation-scopes)3196* Ajoutez le serveur à une portée dans laquelle vous pouvez écrire : `local`, `user` ou `project`. Sans `--scope`, la commande utilise `local`. Consultez [Portées d'installation MCP](/docs/fr/mcp#mcp-installation-scopes)

3152* Pour fournir le serveur à chaque utilisateur de votre organisation, ajoutez-le à [`managedMcpServers`](/docs/fr/settings-reference#managedmcpservers) dans les paramètres gérés que vous déployez3197* Pour fournir le serveur à tous les utilisateurs de votre organisation, ajoutez-le à [`managedMcpServers`](/docs/fr/settings-reference#managedmcpservers) dans les paramètres gérés que vous déployez

3198 

3199<h3 id="cannot-add-mcp-server-when-managed-settings-allow-only-plugin-servers">

3200 Impossible d'ajouter un serveur MCP lorsque les paramètres gérés n'autorisent que les serveurs de plugins

3201</h3>

3202 

3203Vous avez exécuté `claude mcp add` ou `claude mcp add-json` alors que les paramètres gérés de votre organisation définissent [`strictPluginOnlyCustomization`](/docs/fr/settings-reference#strictpluginonlycustomization) sur `true` ou sur une liste qui inclut `mcp`. Avec ce paramètre, Claude Code ne charge pas les serveurs MCP depuis `~/.claude.json` ou `.mcp.json`, donc la commande se termine avec le code 1 au lieu d'enregistrer un serveur qui ne se chargerait jamais :

3204 

3205```text theme={null}

3206Cannot add MCP server: your organization's managed settings allow only MCP servers that plugins provide. Install a plugin that provides this server, or ask your administrator to make it available.

3207```

3208 

3209`claude mcp add-from-claude-desktop` signale chaque serveur que vous sélectionnez comme non importé, avec ce message comme motif. [`/import`](/docs/fr/commands#all-commands) signale ce message pour chaque serveur MCP qu'il tente d'ajouter et importe quand même les autres éléments qu'il a trouvés.

3210 

3211Avant la v2.1.284, ces commandes enregistraient le serveur et signalaient un succès, et le serveur ne se chargeait jamais.

3212 

3213**Que faire :**

3214 

3215* Installez un [plugin](/docs/fr/plugins/install) qui fournit le serveur

3216* Demandez à votre administrateur de distribuer le serveur dans un [plugin](/docs/fr/plugins/org), ou de le fournir via [`managedMcpServers`](/docs/fr/settings-reference#managedmcpservers) s'il s'agit d'un serveur distant HTTP ou SSE

3153 3217 

3154<h3 id="cant-read-mcp-json">3218<h3 id="cant-read-mcp-json">

3155 Impossible de lire .mcp.json3219 Impossible de lire .mcp.json

3156</h3>3220</h3>

3157 3221 

3158Une commande qui lit le [`.mcp.json`](/docs/fr/mcp#project-scope) du projet, telle que `claude mcp add` ou `claude mcp add-json` avec `--scope project`, ou `claude mcp remove`, a trouvé que le fichier dans votre répertoire courant n'est pas un fichier régulier ou est plus grand que 2 Mio, elle se termine donc avec cette erreur au lieu de lire le fichier.3222Une commande qui lit le fichier [`.mcp.json`](/docs/fr/mcp#project-scope) du projet, comme `claude mcp add` ou `claude mcp add-json` avec `--scope project`, ou `claude mcp remove`, a constaté que le fichier de votre répertoire courant n'est pas un fichier ordinaire ou dépasse 2 MiB, elle se termine donc avec cette erreur au lieu de lire le fichier.

3159 3223 

3160```text theme={null}3224```text theme={null}

3161Can't read .mcp.json: it isn't a regular file or is larger than 2097152 bytes. Fix or remove it, then run the command again.3225Can't read .mcp.json: it isn't a regular file or is larger than 2097152 bytes. Fix or remove it, then run the command again.

3162```3226```

3163 3227 

3164Avant la v2.1.257, un FIFO à `.mcp.json` laissait la commande attendre indéfiniment sans sortie, et un lien symbolique vers un fichier de périphérique tel que `/dev/zero` augmentait la mémoire jusqu'à ce que le processus soit tué.3228Avant la v2.1.257, une FIFO à l'emplacement `.mcp.json` laissait la commande en attente indéfiniment sans aucune sortie, et un lien symbolique vers un fichier de périphérique comme `/dev/zero` faisait croître la mémoire jusqu'à ce que le processus soit tué.

3165 3229 

3166**Que faire :**3230**Que faire :**

3167 3231 

3168* Vérifiez ce qui se trouve à `.mcp.json` dans votre répertoire courant. Remplacez-le par un fichier JSON ordinaire au [format de portée de projet](/docs/fr/mcp#project-scope), ou supprimez-le, puis exécutez la commande à nouveau.3232* Vérifiez ce qui se trouve à l'emplacement `.mcp.json` dans votre répertoire courant. Remplacez-le par un fichier JSON ordinaire au [format de portée projet](/docs/fr/mcp#project-scope), ou supprimez-le, puis exécutez à nouveau la commande.

3169 3233 

3170<h3 id="mcp-server-was-not-saved-or-removed">3234<h3 id="mcp-server-was-not-saved-or-removed">

3171 Le serveur MCP n'a pas été enregistré ou supprimé3235 Le serveur MCP n'a pas été enregistré ou supprimé

3172</h3>3236</h3>

3173 3237 

3174Vous avez exécuté `claude mcp add`, `claude mcp add-json`, ou `claude mcp remove` pour un serveur dans la portée `user` ou `local` [scope](/docs/fr/mcp#mcp-installation-scopes). Les deux portées sont stockées dans `~/.claude.json`, et la modification n'est pas dans ce fichier lorsque Claude Code le relit après l'écriture. La commande se termine avec cette erreur au lieu de sa ligne de succès.3238Vous avez exécuté `claude mcp add`, `claude mcp add-json` ou `claude mcp remove` pour un serveur de [portée](/docs/fr/mcp#mcp-installation-scopes) `user` ou `local`. Les deux portées sont stockées dans `~/.claude.json`, et la modification ne figure pas dans ce fichier lorsque Claude Code le relit après l'écriture. La commande se termine avec cette erreur au lieu de sa ligne de succès.

3175 3239 

3176```text theme={null}3240```text theme={null}

3177MCP server "example" was not saved to /home/user/.claude.json. If that file is read-only or protected by a sandbox, make it writable or run the command outside the sandbox, then add the server again.3241MCP server "example" was not saved to /home/user/.claude.json. If that file is read-only or protected by a sandbox, make it writable or run the command outside the sandbox, then add the server again.

3178```3242```

3179 3243 

3180Après une suppression, le message lit `was not removed from` et se termine par `then remove the server again`. Pour un serveur de portée `local`, le chemin est suivi du répertoire du projet auquel l'entrée appartient, comme `(local scope for /path/to/project)`.3244Après une suppression, le message indique `was not removed from` et se termine par `then remove the server again`. Pour un serveur de portée `local`, le chemin est suivi du répertoire de projet auquel appartient l'entrée, sous la forme `(local scope for /path/to/project)`.

3181 3245 

3182Avant la v2.1.283, `claude mcp add`, `claude mcp add-json`, et `claude mcp remove` signalaient le succès même lorsque la modification n'atteignait pas le fichier.3246Avant la v2.1.283, `claude mcp add`, `claude mcp add-json` et `claude mcp remove` signalaient un succès même lorsque la modification n'atteignait pas le fichier.

3183 3247 

3184**Que faire :**3248**Que faire :**

3185 3249 

3186* Rendez le fichier que le message nomme inscriptible, ou exécutez la commande en dehors du sandbox, puis exécutez la même commande d'ajout ou de suppression à nouveau.3250* Rendez accessible en écriture le fichier nommé par le message, ou exécutez la commande en dehors du sandbox, puis exécutez à nouveau la même commande d'ajout ou de suppression.

3187 3251 

3188<h3 id="mcp-server-may-not-have-been-saved-or-removed">3252<h3 id="mcp-server-may-not-have-been-saved-or-removed">

3189 Le serveur MCP peut ne pas avoir été enregistré ou supprimé3253 Le serveur MCP n'a peut-être pas été enregistré ou supprimé

3190</h3>3254</h3>

3191 3255 

3192Vous avez exécuté `claude mcp add`, `claude mcp add-json`, ou `claude mcp remove` pour un serveur dans la portée `user` ou `local` [scope](/docs/fr/mcp#mcp-installation-scopes), et Claude Code n'a pas pu relire `~/.claude.json` pour confirmer la modification. La modification peut ou peut ne pas être sur le disque. Le texte entre parenthèses est l'erreur de cette lecture.3256Vous avez exécuté `claude mcp add`, `claude mcp add-json` ou `claude mcp remove` pour un serveur de [portée](/docs/fr/mcp#mcp-installation-scopes) `user` ou `local`, et Claude Code n'a pas pu relire `~/.claude.json` pour confirmer la modification. La modification peut être ou ne pas être sur le disque. Le texte entre parenthèses est l'erreur renvoyée par cette lecture.

3193 3257 

3194```text theme={null}3258```text theme={null}

3195MCP server "example" may not have been saved: /home/user/.claude.json could not be read to confirm the change (EACCES: permission denied, open '/home/user/.claude.json'). Run `claude mcp get example` to check, then add the server again if it is missing.3259MCP server "example" may not have been saved: /home/user/.claude.json could not be read to confirm the change (EACCES: permission denied, open '/home/user/.claude.json'). Run `claude mcp get example` to check, then add the server again if it is missing.

3196```3260```

3197 3261 

3198Après une suppression, le message lit `may not have been removed` et se termine par `then remove the server again if it is still listed`.3262Après une suppression, le message indique `may not have been removed` et se termine par `then remove the server again if it is still listed`.

3199 3263 

3200Avant la v2.1.283, les commandes signalaient le succès même lorsque la modification ne pouvait pas être confirmée.3264Avant la v2.1.283, les commandes signalaient un succès même lorsque la modification n'avait pas pu être confirmée.

3201 3265 

3202**Que faire :**3266**Que faire :**

3203 3267 

3204* Exécutez `claude mcp get <name>` pour vérifier si la modification est sur le disque. Pour un serveur de portée `local`, exécutez-le à partir du répertoire du projet auquel le serveur appartient, car la portée locale est par projet.3268* Exécutez `claude mcp get <name>` pour vérifier si la modification est sur le disque. Pour un serveur de portée `local`, exécutez-la depuis le répertoire de projet auquel appartient le serveur, puisque la portée locale est propre à chaque projet.

3205* Si le serveur manque après un ajout, ou est toujours listé après une suppression, exécutez la même commande d'ajout ou de suppression à nouveau.3269* Si le serveur est absent après un ajout, ou toujours listé après une suppression, exécutez à nouveau la même commande d'ajout ou de suppression.

3206 3270 

3207<h3 id="anthropic-hosted-and-doesnt-support-local-oauth">3271<h3 id="anthropic-hosted-and-doesnt-support-local-oauth">

3208 Le serveur est hébergé par Anthropic et ne supporte pas OAuth local3272 Le serveur est hébergé par Anthropic et ne prend pas en charge OAuth en local

3209</h3>3273</h3>

3210 3274 

3211Vous avez démarré une connexion pour un serveur MCP dont l'URL pointe vers un hôte de connecteur hébergé par Anthropic qui s'authentifie via un fournisseur d'identité tiers. Ces hôtes incluent `microsoft365.mcp.claude.com`, `gmail.mcp.claude.com`, et `gcal.mcp.claude.com`. Claude Code refuse de démarrer son flux OAuth local pour ces hôtes à partir du panneau `/mcp` et de `claude mcp login`, car [leur connexion fonctionne uniquement via claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai).3275Vous avez lancé une connexion pour un serveur MCP dont l'URL pointe vers un hôte de connecteur hébergé par Anthropic qui s'authentifie via un fournisseur d'identité tiers. Ces hôtes incluent `microsoft365.mcp.claude.com`, `gmail.mcp.claude.com` et `gcal.mcp.claude.com`. Claude Code refuse de démarrer son flux OAuth local pour ces hôtes, depuis le panneau `/mcp` comme depuis `claude mcp login`, car [leur connexion ne fonctionne que via claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai).

3212 3276 

3213```text theme={null}3277```text theme={null}

3214"gmail" is Anthropic-hosted and doesn't support local OAuth. Connect it via Settings → Connectors on claude.ai (requires `claude login`), then it'll be available here automatically.3278"gmail" is Anthropic-hosted and doesn't support local OAuth. Connect it via Settings → Connectors on claude.ai (requires `claude login`), then it'll be available here automatically.


3217**Que faire :**3281**Que faire :**

3218 3282 

3219* Supprimez votre entrée avec `claude mcp remove <name>`, afin qu'elle ne puisse pas masquer le connecteur claude.ai à la même URL3283* Supprimez votre entrée avec `claude mcp remove <name>`, afin qu'elle ne puisse pas masquer le connecteur claude.ai à la même URL

3220* Après l'avoir supprimée, connectez le service à [claude.ai/customize/connectors](https://claude.ai/customize/connectors), tout en étant connecté au compte que vous utilisez dans Claude Code. Une fois connecté, [le connecteur apparaît dans Claude Code automatiquement](/docs/fr/mcp#use-mcp-servers-from-claude-ai) si votre méthode d'authentification active est une connexion d'abonnement claude.ai3284* Après l'avoir supprimée, connectez le service sur [claude.ai/customize/connectors](https://claude.ai/customize/connectors), en étant connecté au compte que vous utilisez dans Claude Code. Une fois la connexion établie, [le connecteur apparaît automatiquement dans Claude Code](/docs/fr/mcp#use-mcp-servers-from-claude-ai) si votre méthode d'authentification active est une connexion par abonnement claude.ai

3221 3285 

3222<h3 id="server-rejected-the-authorization-header-minted-by-the-configured-headershelper">3286<h3 id="server-rejected-the-authorization-header-minted-by-the-configured-headershelper">

3223 Le serveur a rejeté l'en-tête Authorization créé par le headersHelper configuré3287 Le serveur a rejeté l'en-tête Authorization généré par le headersHelper configuré

3224</h3>3288</h3>

3225 3289 

3226Un serveur MCP dont le [`headersHelper`](/docs/fr/mcp#use-dynamic-headers-for-custom-authentication) fournit l'en-tête `Authorization` a répondu à la connexion avec HTTP 401 ou 403, donc Claude Code signale la connexion comme échouée. Parce que le helper fournit l'en-tête `Authorization`, Claude Code [ne revient pas à OAuth](/docs/fr/mcp#authenticate-with-remote-mcp-servers) pour le serveur :3290Un serveur MCP dont le [`headersHelper`](/docs/fr/mcp#use-dynamic-headers-for-custom-authentication) fournit l'en-tête `Authorization` a répondu à la connexion avec un HTTP 401 ou 403, donc Claude Code signale l'échec de la connexion. Comme le helper fournit l'en-tête `Authorization`, Claude Code [ne se rabat pas sur OAuth](/docs/fr/mcp#authenticate-with-remote-mcp-servers) pour ce serveur :

3227 3291 

3228```text theme={null}3292```text theme={null}

3229Server rejected the Authorization header minted by the configured headersHelper (HTTP 401). Check that the helper command returns a valid credential for this MCP endpoint — OAuth fallback is disabled when the helper supplies Authorization.3293Server rejected the Authorization header minted by the configured headersHelper (HTTP 401). Check that the helper command returns a valid credential for this MCP endpoint — OAuth fallback is disabled when the helper supplies Authorization.

3230```3294```

3231 3295 

3232Claude Code réexécute le helper à chaque tentative de connexion, donc une nouvelle tentative après un rejet transitoire, tel qu'une course de rotation de jeton, peut réussir avec une nouvelle credential.3296Claude Code réexécute le helper à chaque tentative de connexion, donc une nouvelle tentative après un rejet transitoire, comme une situation de concurrence lors de la rotation d'un jeton, peut réussir avec de nouveaux identifiants.

3233 3297 

3234**Que faire :**3298**Que faire :**

3235 3299 

3236* Exécutez la commande `headersHelper` vous-même de la façon que Claude Code l'exécute : à partir du [répertoire où Claude Code l'exécute](/docs/fr/mcp#where-the-helper-runs), avec les [variables d'environnement que Claude Code définit pour elle](/docs/fr/mcp#use-dynamic-headers-for-custom-authentication), et sans les [variables de credential que Claude Code supprime](/docs/fr/mcp#which-variables-a-helper-can-read) pour un serveur à partir d'un `.mcp.json` de projet, d'un plugin, ou d'un fichier d'agent de projet. Vérifiez qu'elle imprime une valeur `Authorization` que le point de terminaison du serveur accepte3300* Exécutez vous-même la commande `headersHelper` de la même façon que Claude Code : depuis le [répertoire dans lequel Claude Code l'exécute](/docs/fr/mcp#where-the-helper-runs), avec les [variables d'environnement que Claude Code définit pour elle](/docs/fr/mcp#use-dynamic-headers-for-custom-authentication), et sans les [variables d'identifiants que Claude Code supprime](/docs/fr/mcp#which-variables-a-helper-can-read) pour un serveur provenant d'un fichier `.mcp.json` de projet, d'un plugin ou d'un fichier d'agent de projet. Vérifiez qu'elle affiche une valeur `Authorization` acceptée par l'endpoint du serveur

3237* Après avoir corrigé le helper ou sa source de credential, sélectionnez le serveur dans `/mcp` et choisissez **Reconnect**3301* Après avoir corrigé le helper ou la source de ses identifiants, sélectionnez le serveur dans `/mcp` et choisissez **Reconnect**

3238 3302 

3239Avant la v2.1.248, Claude Code exécutait la découverte OAuth pour un serveur dont le helper fournissait l'en-tête `Authorization`. Cette découverte pouvait échouer avec `Incompatible auth server: does not support dynamic client registration` au lieu de signaler la credential rejetée.3303Avant la v2.1.248, Claude Code lançait la découverte OAuth pour un serveur dont le helper fournissait l'en-tête `Authorization`. Cette découverte pouvait échouer avec `Incompatible auth server: does not support dynamic client registration` au lieu de signaler les identifiants rejetés.

3240 3304 

3241<h3 id="mcp-permission-prompt-tool-not-found">3305<h3 id="mcp-permission-prompt-tool-not-found">

3242 Outil d'invite de permission MCP non trouvé3306 Outil de demande de permission MCP introuvable

3243</h3>3307</h3>

3244 3308 

3245L'outil que vous avez transmis à [`--permission-prompt-tool`](/docs/fr/cli-reference#cli-flags) ne figurait pas parmi les outils MCP connectés lorsque l'exécution a d'abord eu besoin d'une décision de permission, soit parce que son serveur ne s'est jamais connecté, soit parce qu'aucun serveur connecté n'expose un outil portant ce nom. Claude Code envoie toujours votre invite : l'exécution [non interactive](/docs/fr/headless) se termine avec cette erreur, et le code de sortie 1, au premier appel d'outil, donc elle ne produit aucune réponse même si la demande a été faite. Avant la première invite, Claude Code attend jusqu'au délai d'expiration de la connexion par serveur de 30 secondes défini par [`MCP_TIMEOUT`](/docs/fr/env-vars) pour que ce serveur se connecte. Avant la v2.1.206, le démarrage n'attendait pas que le serveur finisse de se connecter, donc un serveur qui démarre lentement mais sain produisait également cette erreur.3309L'outil que vous avez passé à [`--permission-prompt-tool`](/docs/fr/cli-reference#cli-flags) ne figurait pas parmi les outils MCP connectés lorsque l'exécution a eu besoin pour la première fois d'une décision de permission, soit parce que son serveur ne s'est jamais connecté, soit parce qu'aucun serveur connecté n'expose d'outil portant ce nom. Claude Code envoie quand même votre prompt : l'exécution en [mode non interactif](/docs/fr/headless) se termine avec cette erreur, et le code de sortie 1, au premier appel d'outil, elle ne produit donc aucune réponse bien que la requête ait été effectuée. Avant le premier prompt, Claude Code attend que ce serveur se connecte, jusqu'au délai d'expiration de connexion par serveur de 30 secondes défini par [`MCP_TIMEOUT`](/docs/fr/env-vars). Avant la v2.1.206, le démarrage n'attendait pas la fin de la connexion du serveur, donc un serveur sain mais lent à démarrer produisait aussi cette erreur.

3246 3310 

3247```text theme={null}3311```text theme={null}

3248Error: MCP tool mcp__permissions__approve (passed via --permission-prompt-tool) not found. Available MCP tools: none3312Error: MCP tool mcp__permissions__approve (passed via --permission-prompt-tool) not found. Available MCP tools: none

3249```3313```

3250 3314 

3251La liste après `Available MCP tools:` nomme les outils MCP qui étaient connectés lorsque l'attente s'est terminée.3315La liste après `Available MCP tools:` nomme les outils MCP qui étaient connectés.

3252 3316 

3253**Que faire :**3317**Que faire :**

3254 3318 

3255* Vérifiez que le serveur démarre et reste connecté : exécutez `claude mcp list` dans le même répertoire et confirmez que le serveur est listé comme connecté3319* Vérifiez que le serveur démarre et reste connecté : exécutez `claude mcp list` dans le même répertoire et confirmez que le serveur est listé comme connecté

3256* Confirmez que le nom de l'outil correspond au nom `mcp__<server>__<tool>` que le serveur expose3320* Confirmez que le nom de l'outil correspond au nom `mcp__<server>__<tool>` exposé par le serveur

3257* Si le serveur a besoin de plus de 30 secondes pour démarrer, augmentez [`MCP_TIMEOUT`](/docs/fr/env-vars)3321* Si le serveur a besoin de plus de 30 secondes pour démarrer, augmentez [`MCP_TIMEOUT`](/docs/fr/env-vars)

3258 3322 

3259<h3 id="oauth-callback-port-is-already-in-use">3323<h3 id="oauth-callback-port-is-already-in-use">

3260 Le port de rappel OAuth est déjà en cours d'utilisation3324 Le port de callback OAuth est déjà utilisé

3261</h3>3325</h3>

3262 3326 

3263Lorsque vous vous connectez à un serveur MCP distant avec OAuth, Claude Code démarre un écouteur local pour recevoir le rappel de connexion. Si le port dont cet écouteur a besoin est détenu par un autre processus, la connexion échoue avec ce message. Cela se produit principalement avec un [port de rappel fixe](/docs/fr/mcp#use-a-fixed-oauth-callback-port) défini via la variable [`MCP_OAUTH_CALLBACK_PORT`](/docs/fr/env-vars) ou `--callback-port`, car sans celui-ci Claude Code choisit un port disponible.3327Lorsque vous vous connectez à un serveur MCP distant avec OAuth, Claude Code démarre un écouteur local pour recevoir le callback de connexion. Si le port dont cet écouteur a besoin est occupé par un autre processus, la connexion échoue avec ce message. Cela se produit surtout avec un [port de callback fixe](/docs/fr/mcp#use-a-fixed-oauth-callback-port) défini via la variable [`MCP_OAUTH_CALLBACK_PORT`](/docs/fr/env-vars) ou `--callback-port`, puisque sans cela Claude Code choisit un port disponible.

3264 3328 

3265```text theme={null}3329```text theme={null}

3266OAuth callback port <port> is already in use — another process may be holding it. Run `lsof -ti:<port> -sTCP:LISTEN` to find it.3330OAuth callback port <port> is already in use — another process may be holding it. Run `lsof -ti:<port> -sTCP:LISTEN` to find it.


3270 3334 

3271**Que faire :**3335**Que faire :**

3272 3336 

3273* Exécutez la commande du message pour trouver le processus qui détient le port, et arrêtez-le ou attendez qu'il se termine3337* Exécutez la commande du message pour trouver le processus qui occupe le port, puis arrêtez-le ou attendez qu'il se termine

3274* Si un autre programme a besoin de ce port de manière permanente, enregistrez un URI de redirection différent auprès du serveur et définissez son port avec `MCP_OAUTH_CALLBACK_PORT` ou `--callback-port`, selon celui que vous utilisez3338* Si un autre programme a besoin de ce port en permanence, enregistrez une URI de redirection différente auprès du serveur et définissez son port avec `MCP_OAUTH_CALLBACK_PORT` ou `--callback-port`, selon ce que vous utilisez

3275* Puis démarrez la connexion à nouveau, par exemple en sélectionnant le serveur dans `/mcp`3339* Relancez ensuite la connexion, par exemple en sélectionnant le serveur dans `/mcp`

3276 3340 

3277<h3 id="no-available-ports-for-oauth-redirect">3341<h3 id="no-available-ports-for-oauth-redirect">

3278 Aucun port disponible pour la redirection OAuth3342 Aucun port disponible pour la redirection OAuth

3279</h3>3343</h3>

3280 3344 

3281Lorsque vous vous connectez à un serveur MCP distant avec [OAuth](/docs/fr/mcp#authenticate-with-remote-mcp-servers), Claude Code démarre un écouteur local pour recevoir le rappel de connexion. La connexion échoue avec ce message lorsque Claude Code ne peut pas lier un port local pour cela. Quelque chose sur la machine empêche d'écouter sur `127.0.0.1`, par exemple un logiciel de sécurité ou une politique de sandbox qui refuse les écouteurs locaux.3345Lorsque vous vous connectez à un serveur MCP distant avec [OAuth](/docs/fr/mcp#authenticate-with-remote-mcp-servers), Claude Code démarre un écouteur local pour recevoir le callback de connexion. La connexion échoue avec ce message lorsque Claude Code ne parvient pas à lier un port local pour cet écouteur. Un élément de la machine l'empêche d'écouter sur `127.0.0.1`, par exemple un logiciel de sécurité ou une politique de sandbox qui interdit les écouteurs locaux.

3282 3346 

3283```text theme={null}3347```text theme={null}

3284No available ports for OAuth redirect3348No available ports for OAuth redirect

3285```3349```

3286 3350 

3287Avant la v2.1.268, Claude Code ne revenait pas à un port assigné par le système d'exploitation, donc le message apparaissait également lorsque seuls ses ports auto-sélectionnés ne pouvaient pas être liés. Cela peut se produire sur les hôtes Windows où Hyper-V réserve des plages de ports qui couvrent les ports que Claude Code choisit.3351Avant la v2.1.268, Claude Code ne basculait pas sur un port attribué par le système d'exploitation, donc le message apparaissait aussi lorsque seuls les ports qu'il choisissait lui-même ne pouvaient pas être liés. Cela peut se produire sur des hôtes Windows où Hyper-V réserve des plages de ports qui couvrent les ports parmi lesquels Claude Code choisit.

3288 3352 

3289**Que faire :**3353**Que faire :**

3290 3354 

3291* Vérifiez si un logiciel de sécurité ou une politique de sandbox bloque les processus d'écoute sur `127.0.0.1`, et autorisez Claude Code à lier un port local3355* Vérifiez si un logiciel de sécurité ou une politique de sandbox empêche les processus d'écouter sur `127.0.0.1`, et autorisez Claude Code à lier un port local

3292* Puis démarrez la connexion à nouveau, par exemple en sélectionnant le serveur dans `/mcp`3356* Relancez ensuite la connexion, par exemple en sélectionnant le serveur dans `/mcp`

3293 3357 

3294<h3 id="security-review-fails-without-origin-head">3358<h3 id="security-review-fails-without-origin-head">

3295 /security-review échoue sans origin/HEAD3359 /security-review échoue sans origin/HEAD

3296</h3>3360</h3>

3297 3361 

3298[`/security-review`](/docs/fr/commands#all-commands) construit son contexte d'examen en comparant votre branche avec `origin/HEAD`, la référence locale qui enregistre quelle branche est la branche par défaut sur votre télécommande `origin`. Lorsque cette référence n'existe pas, les commandes git qui rassemblent la comparaison échouent et l'examen s'arrête avant de commencer.3362[`/security-review`](/docs/fr/commands#all-commands) construit son contexte de revue en calculant le diff de votre branche par rapport à `origin/HEAD`, la référence locale qui indique quelle branche est la branche par défaut sur votre remote `origin`. Lorsque cette référence n'existe pas, les commandes git qui rassemblent le diff échouent et la revue s'arrête avant de commencer.

3299 3363 

3300```text theme={null}3364```text theme={null}

3301Error: Shell command failed for pattern "!`git diff --name-only origin/HEAD...`": [stderr]3365Error: Shell command failed for pattern "!`git diff --name-only origin/HEAD...`": [stderr]


3304'git <command> [<revision>...] -- [<file>...]'3368'git <command> [<revision>...] -- [<file>...]'

3305```3369```

3306 3370 

3307Le message peut citer `git log` ou une `git diff` différente à la place. Git crée `origin/HEAD` uniquement lorsque la télécommande annonce une branche par défaut et que votre refspec de récupération la couvre, ce qu'un `git clone` complet d'une télécommande avec des commits fait. La référence manque dans ces configurations :3371Le message peut citer `git log` ou une autre commande `git diff` à la place. Git ne crée `origin/HEAD` que lorsque le remote annonce une branche par défaut et que votre refspec de fetch la couvre, ce que fait un `git clone` complet d'un remote contenant des commits. La référence est absente dans ces configurations :

3308 3372 

3309* Un checkout à branche unique ou CI, qui récupère un refspec trop étroit3373* Un checkout mono-branche ou de CI, qui récupère une refspec trop étroite

3310* Une télécommande dont le HEAD côté serveur pointe vers une branche que personne n'a poussée3374* Un remote dont le HEAD côté serveur pointe vers une branche que personne n'a poussée

3311* Un référentiel sans télécommande `origin`, ou une que vous n'avez jamais récupérée3375* Un dépôt sans remote `origin`, ou un remote que vous n'avez jamais récupéré

3312 3376 

3313Claude Code affiche la même erreur pour tout skill qui [injecte du contexte dynamique](/docs/fr/skills#when-an-injected-command-fails), et une commande injectée échouée abandonne l'invocation de ce skill. Deux chaînes sœurs se déclenchent avant l'exécution de la commande :3377Claude Code affiche la même erreur pour tout skill qui [injecte du contexte dynamique](/docs/fr/skills#when-an-injected-command-fails), et une commande injectée en échec interrompt l'invocation de ce skill. Deux messages apparentés apparaissent avant même l'exécution de la commande :

3314 3378 

3315* `Shell command permission check failed for pattern "..."`: la vérification de permission de la commande ne l'a pas autorisée. [Les vérifications de permission sur les commandes injectées](/docs/fr/skills#permission-checks-on-injected-commands) couvrent quels résultats abandonnent dans chaque mode de permission et comment pré-approuver une commande avec `allowed-tools`3379* `Shell command permission check failed for pattern "..."` : la vérification de permission de la commande ne l'a pas autorisée. [Vérifications de permission sur les commandes injectées](/docs/fr/skills#permission-checks-on-injected-commands) explique quels résultats interrompent l'exécution dans chaque mode de permission et comment pré-approuver une commande avec `allowed-tools`

3316* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: le frontmatter du skill exige bash sur une machine sans celui-ci. Installez Git pour Windows ou changez le frontmatter en `shell: powershell`. Voir [Comment les commandes injectées s'exécutent](/docs/fr/skills#how-injected-commands-run)3380* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found`` : le frontmatter du skill exige bash sur une machine qui n'en dispose pas. Installez Git for Windows ou modifiez le frontmatter en `shell: powershell`. Consultez [Comment les commandes injectées s'exécutent](/docs/fr/skills#how-injected-commands-run)

3317 3381 

3318**Que faire :**3382**Que faire :**

3319 3383 

3320* Créez la référence en nommant la branche par défaut de votre télécommande : `git remote set-head origin <default-branch>`. Cela fonctionne chaque fois que la référence de suivi locale `origin/<default-branch>` existe. Si ce n'est pas le cas, comme dans les clones à branche unique, récupérez d'abord la branche : exécutez `git remote set-branches --add origin <branch>`, puis `git fetch origin`, puis réexécutez la commande set-head. Réexécutez `/security-review`.3384* Créez la référence en nommant la branche par défaut de votre remote : `git remote set-head origin <default-branch>`. Cela fonctionne dès lors que la référence de suivi locale `origin/<default-branch>` existe. Si ce n'est pas le cas, comme dans les clones mono-branche, récupérez d'abord la branche : exécutez `git remote set-branches --add origin <branch>`, puis `git fetch origin`, puis relancez la commande set-head. Relancez `/security-review`.

3321* Si vous préférez ne pas nommer la branche, exécutez `git fetch origin` puis `git remote set-head origin --auto`, qui demande à la télécommande quelle branche est sa branche par défaut. Elle échoue avec `error: Cannot determine remote HEAD` lorsque la télécommande n'annonce aucune branche par défaut, car elle est vide ou son HEAD pointe vers une branche que personne n'a poussée ; nommez la branche explicitement à la place. Elle échoue avec `error: Not a valid ref` lorsque votre clone ne récupère pas cette branche ; élargissez le refspec comme ci-dessus d'abord.3385* Si vous préférez ne pas nommer la branche, exécutez `git fetch origin` puis `git remote set-head origin --auto`, qui demande au remote quelle est sa branche par défaut. Cette commande échoue avec `error: Cannot determine remote HEAD` lorsque le remote n'annonce aucune branche par défaut, parce qu'il est vide ou que son HEAD pointe vers une branche que personne n'a poussée ; nommez alors explicitement la branche. Elle échoue avec `error: Not a valid ref` lorsque votre clone ne récupère pas cette branche ; élargissez d'abord la refspec comme indiqué ci-dessus.

3322* Si le référentiel n'a pas de télécommande, ajoutez-en une avec `git remote add origin <url>` et récupérez avant de créer la référence. Si la télécommande est vide, poussez votre branche d'abord avec `git push -u origin HEAD` et nommez cette branche dans la commande set-head ; `origin/HEAD` pointe alors vers la branche que vous venez de pousser, donc `/security-review` voit une comparaison vide jusqu'à ce que la branche diverge de celle-ci.3386* Si le dépôt n'a pas de remote, ajoutez-en un avec `git remote add origin <url>` et effectuez un fetch avant de créer la référence. Si le remote est vide, poussez d'abord votre branche avec `git push -u origin HEAD` et nommez cette branche dans la commande set-head ; `origin/HEAD` pointe alors vers la branche que vous venez de pousser, donc `/security-review` voit un diff vide jusqu'à ce que la branche diverge.

3323 3387 

3324<h3 id="input-must-be-provided-when-using-print">3388<h3 id="input-must-be-provided-when-using-print">

3325 L'entrée doit être fournie lors de l'utilisation de `--print`3389 Une entrée doit être fournie lors de l'utilisation de `--print`

3326</h3>3390</h3>

3327 3391 

3328Le `claude` nu a besoin que stdout soit un terminal pour démarrer l'interface utilisateur interactive. Lorsque stdout est redirigé, ou que la console n'est pas un vrai terminal, tel que PowerShell ISE et certains volets de sortie IDE, `claude` s'exécute [de manière non interactive](/docs/fr/headless) à la place. C'est le même mode que `claude -p`, qui nécessite une invite, donc le message nomme `--print` même si vous n'avez pas transmis l'indicateur. Transmettre `-p`/`--print` sans invite et rien canalisé sur stdin produit la même erreur n'importe où.3392`claude` seul a besoin que stdout soit un terminal pour démarrer l'interface interactive. Lorsque stdout est redirigé, ou que la console n'est pas un vrai terminal, comme PowerShell ISE et certains volets de sortie d'IDE, `claude` s'exécute en [mode non interactif](/docs/fr/headless) à la place. Il s'agit du même mode que `claude -p`, qui exige un prompt, donc le message nomme `--print` même si vous n'avez pas passé le flag. Passer `-p`/`--print` sans prompt et sans rien envoyer sur stdin produit la même erreur partout.

3329 3393 

3330```text theme={null}3394```text theme={null}

3331Error: Input must be provided either through stdin or as a prompt argument when using --print3395Error: Input must be provided either through stdin or as a prompt argument when using --print


3333 3397 

3334**Que faire :**3398**Que faire :**

3335 3399 

3336* Pour une utilisation interactive, exécutez `claude` dans un vrai terminal : Windows Terminal ou la console PowerShell plutôt que ISE, et le terminal intégré de votre IDE plutôt qu'un volet de sortie3400* Pour une utilisation interactive, exécutez `claude` dans un vrai terminal : Windows Terminal ou la console PowerShell plutôt qu'ISE, et le terminal intégré de votre IDE plutôt qu'un volet de sortie

3337* Pour une utilisation ponctuelle, transmettez l'invite : `claude -p "your question"`, ou canalisez-la avec `echo "your question" | claude -p`3401* Pour une utilisation ponctuelle, passez le prompt : `claude -p "your question"`, ou envoyez-le via un pipe avec `echo "your question" | claude -p`

3338 3402 

3339<h3 id="input-contained-only-whitespace">3403<h3 id="input-contained-only-whitespace">

3340 L'entrée contenait uniquement des espaces blancs3404 L'entrée ne contenait que des espaces

3341</h3>3405</h3>

3342 3406 

3343En [mode non interactif](/docs/fr/headless), Claude Code refuse une invite composée entièrement d'espaces, de tabulations ou de sauts de ligne au lieu de l'envoyer, car l'API rejette les messages sans texte visible. Le message que vous voyez dépend de l'endroit d'où provient l'invite vide :3407En [mode non interactif](/docs/fr/headless), Claude Code refuse un prompt composé entièrement d'espaces, de tabulations ou de sauts de ligne au lieu de l'envoyer, car l'API rejette les messages sans texte visible. Le message affiché dépend de la provenance du prompt vide :

3344 3408 

3345* **Argument d'invite ou stdin canalisé pour `claude -p`** : `claude` se termine avec `Error: Input contained only whitespace. Provide a prompt with text through stdin or as a prompt argument when using --print`3409* **Argument de prompt ou stdin envoyé via un pipe pour `claude -p`** : `claude` se termine avec `Error: Input contained only whitespace. Provide a prompt with text through stdin or as a prompt argument when using --print`

3346* **Message soumis à une session `--input-format stream-json` ou [Agent SDK](/docs/fr/agent-sdk/overview) en cours d'exécution** : Claude Code termine le tour sans appeler le modèle et la session reste utilisable. Le refus arrive comme un message informatif et comme le texte de résultat du tour : `Blank prompt — the message was only whitespace, so nothing was sent to the model.`3410* **Message soumis à une session `--input-format stream-json` ou [Agent SDK](/docs/fr/agent-sdk/overview) en cours** : Claude Code termine le tour sans appeler le modèle et la session reste utilisable. Le refus arrive sous forme de message informatif et comme texte de résultat du tour : `Blank prompt — the message was only whitespace, so nothing was sent to the model.`

3347 3411 

3348Avant la v2.1.229, Claude Code envoyait le message contenant uniquement des espaces blancs à l'API, qui rejetait la demande avec une erreur 400.3412Avant la v2.1.229, Claude Code envoyait le message composé uniquement d'espaces à l'API, qui rejetait la requête avec une erreur 400.

3349 3413 

3350**Que faire :**3414**Que faire :**

3351 3415 

3352* Incluez du texte visible dans l'invite. Si un script construit l'invite à partir d'une variable ou d'un fichier, vérifiez que la source n'est pas vide avant d'appeler Claude Code.3416* Incluez du texte visible dans le prompt. Si un script construit le prompt à partir d'une variable ou d'un fichier, vérifiez que la source n'est pas vide avant d'appeler Claude Code.

3353 3417 

3354<h3 id="stream-json-input-carried-over-256m-characters-with-no-newline">3418<h3 id="stream-json-input-carried-over-256m-characters-with-no-newline">

3355 L'entrée stream-json a porté plus de 256 M caractères sans nouvelle ligne3419 L'entrée stream-json contenait plus de 256M caractères sans saut de ligne

3356</h3>3420</h3>

3357 3421 

3358Votre programme a envoyé plus de 268 435 456 caractères sur stdin sans nouvelle ligne à une exécution `claude -p --input-format stream-json`, donc Claude Code imprime cette erreur sur stderr et se termine avec le code 1 au lieu de mettre en mémoire tampon plus d'entrée. Le message énonce ce budget comme `256M`. Avant la v2.1.257, Claude Code mettait en mémoire tampon une telle entrée sans limite, augmentant la mémoire jusqu'à ce que le processus s'écrase ou soit tué.3422Votre programme a envoyé plus de 268 435 456 caractères sur stdin sans saut de ligne à une exécution `claude -p --input-format stream-json`, donc Claude Code affiche cette erreur sur stderr et se termine avec le code 1 au lieu de mettre davantage d'entrée en mémoire tampon. Le message exprime cette limite sous la forme `256M`. Avant la v2.1.257, Claude Code mettait une telle entrée en mémoire tampon sans limite, faisant croître la mémoire jusqu'à ce que le processus plante ou soit tué.

3359 3423 

3360```text theme={null}3424```text theme={null}

3361Error: stream-json input carried over 256M characters with no newline. Each stream-json message must be a single newline-terminated JSON line: either the producer is not newline-terminating its messages, or one message exceeded this budget.3425Error: stream-json input carried over 256M characters with no newline. Each stream-json message must be a single newline-terminated JSON line: either the producer is not newline-terminating its messages, or one message exceeded this budget.

3362```3426```

3363 3427 

3364Une entrée aussi longue sans nouvelle ligne signifie généralement que le producteur n'est pas du tout un producteur stream-json, tel qu'un fichier binaire ou une sortie de journal ordinaire canalisée par accident. Un seul message dépassant le budget échoue la même vérification.3428Une entrée aussi longue sans saut de ligne signifie généralement que le producteur n'est pas du tout un producteur stream-json, par exemple un fichier binaire ou une sortie de log en texte brut envoyé par erreur via un pipe. Un seul message dépassant la limite échoue à la même vérification.

3365 3429 

3366**Que faire :**3430**Que faire :**

3367 3431 

3368* Vérifiez ce qui est canalisé sur stdin. Avec [`--input-format stream-json`](/docs/fr/cli-reference#cli-flags), chaque message doit être une ligne JSON terminée par une nouvelle ligne3432* Vérifiez ce qui est envoyé sur stdin. Avec [`--input-format stream-json`](/docs/fr/cli-reference#cli-flags), chaque message doit être une seule ligne JSON terminée par un saut de ligne

3369* Pour envoyer du texte ordinaire à la place, supprimez `--input-format stream-json` ; `claude -p` lit une invite en texte ordinaire à partir de stdin par défaut3433* Pour envoyer du texte brut à la place, supprimez `--input-format stream-json` ; `claude -p` lit par défaut un prompt en texte brut depuis stdin

3370 3434 

3371<h3 id="unknown-command">3435<h3 id="unknown-command">

3372 Commande inconnue3436 Commande inconnue

3373</h3>3437</h3>

3374 3438 

3375Dans une session de terminal interactive, vous avez soumis un nom `/` qui ne correspond à aucune commande dans cette session, donc Claude Code signale le nom au lieu d'exécuter quoi que ce soit :3439Dans une session de terminal interactive, vous avez soumis un nom `/` qui ne correspond à aucune commande de cette session, donc Claude Code signale le nom au lieu d'exécuter quoi que ce soit :

3376 3440 

3377```text theme={null}3441```text theme={null}

3378Unknown command: /hepl. Did you mean /help?3442Unknown command: /hepl. Did you mean /help?

3379```3443```

3380 3444 

3381Claude Code suggère le nom de commande ou l'alias le plus proche que le menu énumère dans cette session. Lorsque rien n'est proche, le message se termine après le nom. La cause est généralement l'une des suivantes :3445Claude Code suggère le nom de commande ou l'alias le plus proche listé par le menu dans cette session. Lorsque rien n'est proche, le message se termine après le nom. La cause est généralement l'une des suivantes :

3382 3446 

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

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

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

3386 3450 

3387Claude Code répond à un nom `/` non appairé de cette manière uniquement dans une session de terminal interactive. Dans toute autre session, il envoie l'invite à Claude comme un message normal à la place, avec une note que la commande n'a pas s'exécutée et une liste de commandes que Claude peut exécuter dans la session. Ces sessions incluent :3451Claude Code ne répond de cette façon à un nom `/` sans correspondance que dans une session de terminal interactive. Dans toutes les autres sessions, il envoie plutôt le prompt à Claude comme un message normal, avec une note indiquant que la commande ne s'est pas exécutée et une liste des commandes que Claude peut exécuter dans la session. Ces sessions incluent :

3388 3452 

3389* Les exécutions `-p`3453* Les exécutions `-p`

3390* Les applications [Agent SDK](/docs/fr/agent-sdk/overview)3454* Les applications [Agent SDK](/docs/fr/agent-sdk/overview)

3391* L'onglet Code de l'[application Desktop](/docs/fr/desktop)3455* L'onglet Code de l'[application Desktop](/docs/fr/desktop)

3392* Le panneau de chat de l'[extension VS Code](/docs/fr/vs-code)3456* Le panneau de chat de l'[extension VS Code](/docs/fr/vs-code)

3393* Les [sessions cloud](/docs/fr/claude-code-on-the-web) et [routines](/docs/fr/routines)3457* Les [sessions cloud](/docs/fr/claude-code-on-the-web) et les [routines](/docs/fr/routines)

3394 3458 

3395Pour une commande intégrée qui ne peut pas s'exécuter dans l'une de ces sessions, Claude Code répond toujours que la commande n'est pas disponible au lieu de l'envoyer à Claude. Avant la v2.1.274, seules les sessions cloud et les routines envoyaient un nom non appairé à Claude. Avant la v2.1.273, elles répondaient également `Unknown command`.3459Pour une commande intégrée qui ne peut pas s'exécuter dans l'une de ces sessions, Claude Code répond quand même que la commande n'est pas disponible au lieu de l'envoyer à Claude. Avant la v2.1.274, seules les sessions cloud et les routines envoyaient un nom sans correspondance à Claude. Avant la v2.1.273, elles répondaient aussi `Unknown command`.

3396 3460 

3397Claude Code ne traite pas chaque invite qui commence par `/` comme une commande. Il envoie l'invite à Claude comme un message normal lorsque le premier mot après le `/` commence par la ponctuation, telle que le `/--` qui ouvre un commentaire de document Lean, ou est un chemin tel que `/var/log/syslog`.3461Claude Code ne traite pas comme une commande chaque prompt qui commence par `/`. Il envoie le prompt à Claude comme un message normal lorsque le premier mot après le `/` commence par un signe de ponctuation, comme le `/--` qui ouvre un commentaire de documentation Lean, ou qu'il s'agit d'un chemin comme `/var/log/syslog`.

3398 3462 

3399Avant la v2.1.236, si vous aviez appuyé sur `Entrée` tandis que le menu de commande énumérait une correspondance proche du nom que vous aviez tapé, Claude Code exécutait cette correspondance, donc une faute de frappe telle que `/hepl` exécutait `/help` au lieu de produire ce message.3463Avant la v2.1.236, si vous appuyiez sur `Enter` alors que le menu des commandes listait une correspondance proche du nom saisi, Claude Code exécutait cette correspondance, donc une faute de frappe comme `/hepl` exécutait `/help` au lieu de produire ce message.

3400 3464 

3401**Que faire :**3465**Que faire :**

3402 3466 

3403* Exécutez le nom suggéré, ou tapez `/` suivi d'une partie du nom pour voir ce qui est disponible dans cette session3467* Exécutez le nom suggéré, ou tapez `/` suivi d'une partie du nom pour voir ce qui est disponible dans cette session

3404* Si Claude Code signale une commande documentée comme inconnue, vérifiez sa ligne dans la [référence des commandes](/docs/fr/commands) pour l'exigence qu'elle nomme3468* Si Claude Code signale comme inconnue une commande documentée, consultez sa ligne dans la [référence des commandes](/docs/fr/commands) pour connaître la condition qu'elle indique

3405 3469 

3406<h3 id="diff-is-too-large-for-ultrareview">3470<h3 id="diff-is-too-large-for-ultrareview">

3407 La comparaison est trop grande pour ultrareview3471 Le diff est trop volumineux pour ultrareview

3408</h3>3472</h3>

3409 3473 

3410La comparaison entre votre branche et la branche de base, y compris les modifications non validées et mises en scène, dépasse les limites de taille pour un [ultrareview](/docs/fr/ultrareview), donc `/code-review ultra` et la sous-commande `claude ultrareview` refusent l'examen avant le démarrage de la session cloud. Un examen refusé n'utilise pas une exécution gratuite et ne facture pas les crédits d'utilisation. Le message nomme les limites en vigueur, la taille de votre comparaison et les fichiers qui contribuent le plus de lignes modifiées. Avant la v2.1.216, le message affichait uniquement les statistiques de comparaison brutes.3474Le diff entre votre branche et la branche de base, y compris les modifications non commitées et indexées, dépasse les limites de taille d'un [ultrareview](/docs/fr/ultrareview), donc `/code-review ultra` et la sous-commande `claude ultrareview` refusent la revue avant le démarrage de la session cloud. Une revue refusée n'utilise pas d'exécution gratuite et ne facture pas de crédits d'utilisation. Le message nomme les limites en vigueur, la taille de votre diff et les fichiers qui contribuent le plus de lignes modifiées. Avant la v2.1.216, le message n'affichait que les statistiques brutes du diff.

3411 3475 

3412```text theme={null}3476```text theme={null}

3413Diff is too large for ultrareview: 812 files, 96,410 lines changed (limits: 500 files, 8,000 lines). Largest files: package-lock.json (41,904 lines), dist/bundle.js (18,210 lines), src/generated/api.ts (9,876 lines). Pass a closer base branch (`/code-review ultra <branch>`) to narrow the scope, or split the change.3477Diff is too large for ultrareview: 812 files, 96,410 lines changed (limits: 500 files, 8,000 lines). Largest files: package-lock.json (41,904 lines), dist/bundle.js (18,210 lines), src/generated/api.ts (9,876 lines). Pass a closer base branch (`/code-review ultra <branch>`) to narrow the scope, or split the change.

3414```3478```

3415 3479 

3416L'examen d'une demande de tirage applique les mêmes limites ; cette forme du message commence par `PR #<N> is too large for ultrareview` et nomme les comptes de fichiers et de lignes de la demande de tirage.3480La revue d'une pull request applique les mêmes limites ; cette forme du message commence par `PR #<N> is too large for ultrareview` et nomme le nombre de fichiers et de lignes de la PR.

3417 3481 

3418**Que faire :**3482**Que faire :**

3419 3483 

3420* Transmettez une branche de base plus proche de votre travail, telle que `/code-review ultra develop`, afin que l'examen couvre uniquement la comparaison par rapport à cette branche3484* Passez une branche de base plus proche de votre travail, comme `/code-review ultra develop`, afin que la revue ne couvre que le diff par rapport à cette branche

3421* Divisez la modification en branches plus petites et examinez chacune. Les fichiers que le message nomme contribuent le plus de lignes modifiées, donc commencez par déplacer ceux-ci vers leur propre branche.3485* Divisez la modification en branches plus petites et faites la revue de chacune. Les fichiers nommés par le message contribuent le plus de lignes modifiées, commencez donc par les déplacer dans leur propre branche.

3422 3486 

3423<h3 id="could-not-find-merge-base-with-the-base-branch">3487<h3 id="could-not-find-merge-base-with-the-base-branch">

3424 Impossible de trouver la base de fusion avec la branche de base3488 Impossible de trouver la merge-base avec la branche de base

3425</h3>3489</h3>

3426 3490 

3427`/code-review ultra` et la sous-commande `claude ultrareview` examinent la comparaison entre votre branche et une branche de base, ce qui nécessite un commit que les deux partagent. Lorsque `git merge-base` n'en trouve aucun, Claude Code refuse l'examen avant le démarrage de la session cloud. Sur un clone que Claude Code peut vérifier comme complet, avec au moins une branche, il revient à [examiner chaque fichier suivi](/docs/fr/ultrareview#diff-limits-and-fallbacks) au lieu de refuser. Vous voyez ce refus lorsque la branche de base ne peut pas être trouvée du tout, lorsque Claude Code ne peut pas vérifier que votre clone est complet, ou dans le rare référentiel où la comparaison de l'arborescence entière n'est pas possible, telle que le format d'objet SHA-256.3491`/code-review ultra` et la sous-commande `claude ultrareview` font la revue du diff entre votre branche et une branche de base, ce qui nécessite un commit commun aux deux. Lorsque `git merge-base` n'en trouve aucun, Claude Code refuse la revue avant le démarrage de la session cloud. Sur un clone dont Claude Code peut vérifier qu'il est complet, avec au moins une branche, il bascule sur la [revue de chaque fichier suivi](/docs/fr/ultrareview#diff-limits-and-fallbacks) au lieu de refuser. Vous voyez ce refus lorsque la branche de base est introuvable, lorsque Claude Code ne peut pas vérifier que votre clone est complet, ou dans les rares dépôts où le diff de l'arborescence entière n'est pas possible, comme avec le format d'objets SHA-256.

3428 3492 

3429```text theme={null}3493```text theme={null}

3430Could not find merge-base with main. Pass the base branch explicitly (e.g. `/code-review ultra develop`) or make sure you're in a git repo with a main branch.3494Could not find merge-base with main. Pass the base branch explicitly (e.g. `/code-review ultra develop`) or make sure you're in a git repo with a main branch.

3431```3495```

3432 3496 

3433L'indice après la première phrase dépend de ce que Claude Code a observé :3497L'indication après la première phrase dépend de ce que Claude Code a observé :

3434 3498 

3435* **Vous n'avez pas transmis une branche de base** : Claude Code a comparé par rapport à la branche par défaut du référentiel et suggère de transmettre votre base explicitement, comme dans l'exemple ci-dessus3499* **Vous n'avez pas passé de branche de base** : Claude Code a comparé avec la branche par défaut du dépôt et suggère de passer explicitement votre branche de base, comme dans l'exemple ci-dessus

3436* **Vous avez transmis une branche de base qui était déjà dans votre clone** : l'indice lit ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``3500* **Vous avez passé une branche de base déjà présente dans votre clone** : l'indication est ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``

3437* **Vous avez transmis une branche de base qui n'était pas dans votre clone** : Claude Code l'a récupérée à partir de origin avant de comparer. L'indice lit ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``; lorsque Claude Code ne peut pas dire si votre clone est superficiel, il suggère `git fetch --unshallow origin` à la place. Avant la v2.1.221, l'indice suggérait `git fetch --unshallow origin` pour chaque branche de base récupérée, et sur un clone complet cette commande échoue avec `fatal: --unshallow on a complete repository does not make sense`.3501* **Vous avez passé une branche de base absente de votre clone** : Claude Code l'a récupérée depuis origin avant la comparaison. L'indication est ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)`` ; lorsque Claude Code ne peut pas déterminer si votre clone est superficiel, il suggère `git fetch --unshallow origin` à la place. Avant la v2.1.221, l'indication suggérait `git fetch --unshallow origin` pour chaque branche de base récupérée, et sur un clone complet cette commande échoue avec `fatal: --unshallow on a complete repository does not make sense`.

3438 3502 

3439**Que faire :**3503**Que faire :**

3440 3504 

3441* Si une autre branche est votre vraie base, transmettez-la explicitement : `/code-review ultra <branch>`3505* Si une autre branche est votre véritable branche de base, passez-la explicitement : `/code-review ultra <branch>`

3442* Si votre clone pourrait ne pas avoir l'historique complet, exécutez `git fetch --unshallow origin` et réexécutez l'examen3506* Si votre clone n'a peut-être pas l'historique complet, exécutez `git fetch --unshallow origin` et relancez la revue

3443 3507 

3444<h3 id="your-checkout-has-no-branches">3508<h3 id="your-checkout-has-no-branches">

3445 Votre checkout n'a pas de branches3509 Votre checkout n'a aucune branche

3446</h3>3510</h3>

3447 3511 

3448Un checkout peut avoir des commits mais pas de branches : si vous exécutez `git init` suivi de `git fetch <url>` et `git checkout FETCH_HEAD`, vous obtenez un HEAD détaché sans références. Claude Code empaquette votre référentiel en tant que bundle git pour le télécharger pour un [ultrareview](/docs/fr/ultrareview), et il ne peut pas empaqueter un référentiel qui n'a pas de branches ou d'autres références, donc `/code-review ultra` et la sous-commande `claude ultrareview` refusent l'examen avant le démarrage de la session cloud.3512Un checkout peut avoir des commits mais aucune branche : si vous exécutez `git init` suivi de `git fetch <url>` et `git checkout FETCH_HEAD`, vous obtenez un HEAD détaché sans aucune référence. Claude Code empaquette votre dépôt sous forme de bundle git pour le téléverser en vue d'un [ultrareview](/docs/fr/ultrareview), et il ne peut pas empaqueter un dépôt qui n'a ni branches ni autres références, donc `/code-review ultra` et la sous-commande `claude ultrareview` refusent la revue avant le démarrage de la session cloud.

3449 3513 

3450```text theme={null}3514```text theme={null}

3451Your checkout has no branches (detached HEAD only), which cloud review can't bundle. Create one first — `git checkout -b <name>` — then rerun /code-review ultra.3515Your checkout has no branches (detached HEAD only), which cloud review can't bundle. Create one first — `git checkout -b <name>` — then rerun /code-review ultra.

3452```3516```

3453 3517 

3454Avant la v2.1.221, Claude Code tentait d'examiner chaque fichier suivi dans ce checkout, et le téléchargement échouait.3518Avant la v2.1.221, Claude Code tentait de faire la revue de chaque fichier suivi dans ce checkout, et le téléversement échouait.

3455 3519 

3456**Que faire :**3520**Que faire :**

3457 3521 

3458* Créez une branche à votre commit courant avec `git checkout -b <name>`, puis réexécutez l'examen3522* Créez une branche sur votre commit actuel avec `git checkout -b <name>`, puis relancez la revue

3459 3523 

3460<h3 id="no-github-account-is-connected-to-your-claude-account">3524<h3 id="no-github-account-is-connected-to-your-claude-account">

3461 Aucun compte GitHub n'est connecté à votre compte Claude3525 Aucun compte GitHub n'est connecté à votre compte Claude

3462</h3>3526</h3>

3463 3527 

3464Vous avez exécuté `/code-review ultra <PR#>` ou `claude ultrareview <PR#>`, et avant de créer la session cloud Claude Code demande au serveur si [le compte GitHub connecté à votre compte Claude](/docs/fr/ultrareview#review-a-pull-request) peut atteindre le référentiel de la demande de tirage. Aucun compte n'est connecté, ou la connexion a expiré, donc le clone cloud échouerait et Claude Code refuse le lancement. Claude Code ne dépense pas une exécution gratuite ou ne facture pas les crédits d'utilisation pour un lancement refusé.3528Vous avez exécuté `/code-review ultra <PR#>` ou `claude ultrareview <PR#>`, et avant de créer la session cloud, Claude Code demande au serveur si [le compte GitHub connecté à votre compte Claude](/docs/fr/ultrareview#review-a-pull-request) peut accéder au dépôt de la PR. Aucun compte n'est connecté, ou la connexion a expiré, donc le clonage dans le cloud échouerait et Claude Code refuse le lancement. Claude Code ne consomme pas d'exécution gratuite et ne facture pas de crédits d'utilisation pour un lancement refusé.

3465 3529 

3466```text theme={null}3530```text theme={null}

3467Ultrareview clones <owner>/<repo> in the cloud with the GitHub account connected to your Claude account, and none is connected (or the connection expired). To fix: run /web-setup to reuse your GitHub CLI login, or connect an account at https://claude.ai/connect-github — then re-run /code-review ultra 1234 (allow a minute after connecting).3531Ultrareview clones <owner>/<repo> in the cloud with the GitHub account connected to your Claude account, and none is connected (or the connection expired). To fix: run /web-setup to reuse your GitHub CLI login, or connect an account at https://claude.ai/connect-github — then re-run /code-review ultra 1234 (allow a minute after connecting).

3468```3532```

3469 3533 

3470Lorsque [`/web-setup`](/docs/fr/web-quickstart#connect-from-your-terminal) n'est pas disponible dans votre session, le message nomme uniquement le lien claude.ai.3534Lorsque [`/web-setup`](/docs/fr/web-quickstart#connect-from-your-terminal) n'est pas disponible dans votre session, le message ne nomme que le lien claude.ai.

3471 3535 

3472**Que faire :**3536**Que faire :**

3473 3537 

3474* Exécutez `/web-setup` pour connecter votre connexion GitHub CLI à votre compte Claude, ou connectez un compte à [claude.ai/connect-github](https://claude.ai/connect-github)3538* Exécutez `/web-setup` pour connecter votre connexion GitHub CLI à votre compte Claude, ou connectez un compte sur [claude.ai/connect-github](https://claude.ai/connect-github)

3475* Réexécutez l'examen une minute après la connexion3539* Relancez la revue une minute après la connexion

3476 3540 

3477Avant la v2.1.248, Claude Code ne vérifiait pas cela avant le lancement.3541Avant la v2.1.248, Claude Code ne vérifiait pas cela avant le lancement.

3478 3542 

3479<h3 id="your-connected-github-account-cant-see-the-repository">3543<h3 id="your-connected-github-account-cant-see-the-repository">

3480 Votre compte GitHub connecté ne peut pas voir le référentiel3544 Votre compte GitHub connecté ne peut pas voir le dépôt

3481</h3>3545</h3>

3482 3546 

3483Vous avez exécuté `/code-review ultra <PR#>` ou `claude ultrareview <PR#>`, et [le compte GitHub connecté à votre compte Claude](/docs/fr/ultrareview#review-a-pull-request) ne peut pas lire le référentiel de la demande de tirage, donc le clone cloud échouerait et Claude Code refuse le lancement. Claude Code ne dépense pas une exécution gratuite ou ne facture pas les crédits d'utilisation pour un lancement refusé.3547Vous avez exécuté `/code-review ultra <PR#>` ou `claude ultrareview <PR#>`, et [le compte GitHub connecté à votre compte Claude](/docs/fr/ultrareview#review-a-pull-request) ne peut pas lire le dépôt de la PR, donc le clonage dans le cloud échouerait et Claude Code refuse le lancement. Claude Code ne consomme pas d'exécution gratuite et ne facture pas de crédits d'utilisation pour un lancement refusé.

3484 3548 

3485```text theme={null}3549```text theme={null}

3486Your connected GitHub account can't see <owner>/<repo> — usually the Claude GitHub app isn't installed on <owner> or wasn't granted this repo (web-connected accounts need it for private repos), or a different GitHub account is connected. To fix: run /web-setup to reuse your GitHub CLI login, or install the app at https://github.com/apps/claude/installations/new — then re-run /code-review ultra 1234.3550Your connected GitHub account can't see <owner>/<repo> — usually the Claude GitHub app isn't installed on <owner> or wasn't granted this repo (web-connected accounts need it for private repos), or a different GitHub account is connected. To fix: run /web-setup to reuse your GitHub CLI login, or install the app at https://github.com/apps/claude/installations/new — then re-run /code-review ultra 1234.

3487```3551```

3488 3552 

3489Lorsque [`/web-setup`](/docs/fr/web-quickstart#connect-from-your-terminal) n'est pas disponible dans votre session, le message nomme uniquement l'installation de l'application.3553Lorsque [`/web-setup`](/docs/fr/web-quickstart#connect-from-your-terminal) n'est pas disponible dans votre session, le message ne nomme que l'installation de l'application.

3490 3554 

3491**Que faire :**3555**Que faire :**

3492 3556 

3493* Si votre CLI `gh` local peut lire le référentiel, exécutez `/web-setup` pour connecter cette connexion à votre compte Claude3557* Si votre CLI `gh` locale peut lire le dépôt, exécutez `/web-setup` pour connecter cette connexion à votre compte Claude

3494* Réexécutez l'examen après la modification3558* Relancez la revue après la modification

3495 3559 

3496Avant la v2.1.248, Claude Code ne vérifiait pas cela avant le lancement.3560Avant la v2.1.248, Claude Code ne vérifiait pas cela avant le lancement.

3497 3561 

3498<h3 id="the-github-app-preflight-failed-transiently">3562<h3 id="the-github-app-preflight-failed-transiently">

3499 La vérification préalable de l'application GitHub a échoué de manière transitoire3563 La vérification préalable de la GitHub App a échoué de manière transitoire

3500</h3>3564</h3>

3501 3565 

3502Vous avez démarré une [session cloud](/docs/fr/claude-code-on-the-web) à partir d'un référentiel local, et deux étapes ont échoué ensemble. Claude Code n'a pas pu construire ou télécharger le bundle de votre référentiel. Avant le téléchargement, il a vérifié si le service cloud peut cloner le référentiel à partir de GitHub, et plutôt qu'une réponse définitive, cette vérification s'est terminée par une erreur qu'une nouvelle tentative pourrait clarifier, telle qu'une erreur réseau, un délai d'expiration ou une erreur serveur temporaire. Le message complet commence par ce qui a arrêté le bundle, par exemple `Could not upload repo bundle (<error>)`, et se termine par la phrase de vérification préalable :3566Vous avez démarré une [session cloud](/docs/fr/claude-code-on-the-web) depuis un dépôt local, et deux étapes ont échoué ensemble. Claude Code n'a pas pu construire ou téléverser le bundle de votre dépôt. Avant le téléversement, il a vérifié si le service cloud peut cloner le dépôt depuis GitHub, et au lieu d'une réponse définitive, cette vérification s'est terminée par une erreur qu'une nouvelle tentative pourrait résoudre, comme une erreur réseau, un délai d'expiration ou une erreur serveur temporaire. Le message complet commence par ce qui a empêché le bundle, par exemple `Could not upload repo bundle (<error>)`, et se termine par la phrase concernant la vérification préalable :

3503 3567 

3504```text theme={null}3568```text theme={null}

3505Could not upload repo bundle (<error>). The GitHub App preflight failed transiently (network or service hiccup) — retry in a moment to start from GitHub instead3569Could not upload repo bundle (<error>). The GitHub App preflight failed transiently (network or service hiccup) — retry in a moment to start from GitHub instead


3507 3571 

3508**Que faire :**3572**Que faire :**

3509 3573 

3510* Réexécutez la commande après un moment. Lorsque la vérification GitHub réussit, Claude Code peut démarrer la session à partir d'un clone GitHub, donc le téléchargement échoué ne bloque plus le lancement3574* Relancez la commande après un moment. Lorsque la vérification GitHub réussit, Claude Code peut démarrer la session à partir d'un clone GitHub, donc l'échec du téléversement ne bloque plus le lancement

3511* Si les nouvelles tentatives continuent d'échouer, le début du message nomme ce qui a arrêté le téléchargement. Lorsque cette cause est quelque chose que vous pouvez corriger, corrigez-la afin que la session puisse démarrer à partir de votre référentiel local à la place3575* Si les nouvelles tentatives continuent d'échouer, le début du message nomme ce qui a empêché le téléversement. Lorsque cette cause est quelque chose que vous pouvez corriger, corrigez-la afin que la session puisse démarrer à partir de votre dépôt local

3512 3576 

3513Avant la v2.1.251, Claude Code terminait le message avec `Please set up GitHub on https://claude.ai/code` même lorsque la vérification GitHub a échoué uniquement de manière transitoire, et les conseils de configuration ne peuvent pas clarifier un échec transitoire.3577Avant la v2.1.251, Claude Code terminait le message par `Please set up GitHub on https://claude.ai/code` même lorsque la vérification GitHub n'avait échoué que de manière transitoire, et un conseil de configuration ne peut pas résoudre un échec transitoire.

3514 3578 

3515<h3 id="the-repository-upload-cant-follow-a-git-setting">3579<h3 id="the-repository-upload-cant-follow-a-git-setting">

3516 Le téléchargement du référentiel ne peut pas suivre un paramètre git3580 Le téléversement du dépôt ne peut pas suivre un paramètre git

3517</h3>3581</h3>

3518 3582 

3519Vous avez démarré une [session cloud qui télécharge votre référentiel local](/docs/fr/claude-code-on-the-web#send-local-repositories-without-github), ou un [ultrareview](/docs/fr/ultrareview) d'une branche, et le téléchargement ne peut pas suivre l'un des paramètres git qui décident quelles règles d'attribut s'appliquent à vos fichiers. Si le téléchargement s'était poursuivi et avait manqué une règle, un fichier que git transforme avant de le stocker, tel qu'un fichier qu'un filtre clean chiffre, pourrait atteindre le cloud tel qu'il est sur le disque. Claude Code refuse le téléchargement à la place, et rien n'est téléchargé :3583Vous avez démarré une [session cloud qui téléverse votre dépôt local](/docs/fr/claude-code-on-the-web#send-local-repositories-without-github), ou un [ultrareview](/docs/fr/ultrareview) d'une branche, et le téléversement ne peut pas suivre l'un des paramètres git qui déterminent quelles règles d'attributs s'appliquent à vos fichiers. Si le téléversement se poursuivait en manquant une règle, un fichier que git transforme avant de le stocker, comme un fichier chiffré par un filtre clean, pourrait atteindre le cloud tel qu'il est sur le disque. Claude Code refuse donc le téléversement, et rien n'est téléversé :

3520 3584 

3521```text theme={null}3585```text theme={null}

3522Not uploading this working tree: core.ignoreCase (which decides whether .gitattributes patterns match file names regardless of letter case) is set in <file>, and the upload cannot follow that setting, so a file git would change before storing it (to encrypt it, for example) could be uploaded as it is on disk. Move the core.ignoreCase line into this repository's .git/config or directly into your ~/.gitconfig, then retry.3586Not uploading this working tree: core.ignoreCase (which decides whether .gitattributes patterns match file names regardless of letter case) is set in <file>, and the upload cannot follow that setting, so a file git would change before storing it (to encrypt it, for example) could be uploaded as it is on disk. Move the core.ignoreCase line into this repository’s .git/config or directly into your ~/.gitconfig, then retry.

3523```3587```

3524 3588 

3525Le message nomme le paramètre et où il est défini, et se termine par la correction pour le cas que vous avez rencontré. Le même refus apparaît pour `core.attributesFile` et `attr.tree`, chacun avec sa propre correction.3589Le message nomme le paramètre et l'endroit où il est défini, et se termine par la solution correspondant à votre cas. Le même refus apparaît pour `core.attributesFile` et `attr.tree`, chacun avec sa propre solution.

3526 3590 

3527Le message peut nommer un fichier de configuration que votre configuration git tire via une directive `include` ou `includeIf`, même lorsque la condition de cette directive ne s'applique pas à ce référentiel.3591Le message peut nommer un fichier de configuration que votre configuration git inclut via une directive `include` ou `includeIf`, même lorsque la condition de cette directive ne s'applique pas à ce dépôt.

3528 3592 

3529**Que faire :**3593**Que faire :**

3530 3594 

3531* Appliquez la correction dans la phrase finale du message3595* Appliquez la solution indiquée dans la dernière phrase du message

3532 3596 

3533<h3 id="github-isnt-connected-to-your-claude-account">3597<h3 id="github-isnt-connected-to-your-claude-account">

3534 GitHub n'est pas connecté à votre compte Claude3598 GitHub n'est pas connecté à votre compte Claude

3535</h3>3599</h3>

3536 3600 

3537Vous avez démarré une [session cloud](/docs/fr/claude-code-on-the-web) à partir de votre référentiel local, par exemple avec `/autofix-pr`. Aucun compte GitHub n'est connecté à votre compte Claude, ou la connexion a expiré, donc Claude Code refuse le lancement :3601Vous avez démarré une [session cloud](/docs/fr/claude-code-on-the-web) depuis votre dépôt local, par exemple avec `/autofix-pr`. Aucun compte GitHub n'est connecté à votre compte Claude, ou la connexion a expiré, donc Claude Code refuse le lancement :

3538 3602 

3539```text theme={null}3603```text theme={null}

3540GitHub isn't connected to your Claude account, so this repository can't be cloned in the cloud. Run /web-setup to connect with your GitHub CLI login, or connect on the web at https://claude.ai/connect-github3604GitHub isn't connected to your Claude account, so this repository can't be cloned in the cloud. Run /web-setup to connect with your GitHub CLI login, or connect on the web at https://claude.ai/connect-github

3541```3605```

3542 3606 

3543Lorsque vous créez une routine avec [`/schedule`](/docs/fr/routines), le même message apparaît comme une note de configuration qui nomme le référentiel ; la note ne bloque pas la création de la routine.3607Lorsque vous créez une routine avec [`/schedule`](/docs/fr/routines), le même message apparaît sous forme de note de configuration qui nomme le dépôt ; la note n'empêche pas la création de la routine.

3544 3608 

3545**Que faire :**3609**Que faire :**

3546 3610 

3547* Exécutez `/web-setup` pour connecter votre connexion GitHub CLI à votre compte Claude, ou connectez un compte à [claude.ai/connect-github](https://claude.ai/connect-github). Voir [Options d'authentification GitHub](/docs/fr/claude-code-on-the-web#github-authentication-options) pour voir comment les deux diffèrent.3611* Exécutez `/web-setup` pour connecter votre connexion GitHub CLI à votre compte Claude, ou connectez un compte sur [claude.ai/connect-github](https://claude.ai/connect-github). Consultez [Options d'authentification GitHub](/docs/fr/claude-code-on-the-web#github-authentication-options) pour connaître les différences entre les deux.

3548* Réexécutez la commande une minute après la connexion3612* Relancez la commande une minute après la connexion

3549 3613 

3550Avant la v2.1.268, Claude Code signalait ceci comme un échec temporaire de la vérification de l'application GitHub Claude et suggérait de réessayer ou d'installer l'application ; aucun des deux ne connecte un compte GitHub.3614Avant la v2.1.268, Claude Code signalait cette situation comme un échec temporaire de la vérification de la Claude GitHub App et suggérait de réessayer ou d'installer l'application ; aucune de ces actions ne connecte de compte GitHub.

3551 3615 

3552<h3 id="single-sign-on-authorization-needed">3616<h3 id="single-sign-on-authorization-needed">

3553 Autorisation d'authentification unique requise3617 Autorisation d'authentification unique requise

3554</h3>3618</h3>

3555 3619 

3556Vous avez exécuté [`/install-github-app`](/docs/fr/github-actions#quick-setup) et choisi un référentiel dont l'organisation applique l'authentification unique SAML. Avant la configuration, Claude Code vérifie votre accès au référentiel avec l'interface de ligne de commande GitHub, et GitHub a refusé cette vérification car votre jeton `gh` n'est pas encore autorisé pour l'organisation. L'assistant affiche l'avertissement avec les étapes à suivre :3620Vous avez exécuté [`/install-github-app`](/docs/fr/github-actions#quick-setup) et choisi un dépôt dont l'organisation impose l'authentification unique SAML. Avant la configuration, Claude Code vérifie votre accès au dépôt avec la GitHub CLI, et GitHub a refusé cette vérification parce que votre jeton `gh` n'est pas encore autorisé pour l'organisation. L'assistant affiche l'avertissement avec les étapes d'autorisation :

3557 3621 

3558```text theme={null}3622```text theme={null}

3559Single sign-on authorization needed3623Single sign-on authorization needed


3562 3626 

3563**Que faire :**3627**Que faire :**

3564 3628 

3565* Réautorisez votre connexion GitHub CLI avec les portées `repo` et `workflow` en exécutant `gh auth refresh -h github.com -s repo,workflow`, et autorisez l'organisation lorsque GitHub vous invite à l'authentification unique3629* Réautorisez votre connexion GitHub CLI avec les scopes `repo` et `workflow` en exécutant `gh auth refresh -h github.com -s repo,workflow`, et autorisez l'organisation lorsque GitHub vous le demande pour l'authentification unique

3566* Si vous vous authentifiez avec un jeton d'accès personnel dans `GH_TOKEN`, ouvrez [github.com/settings/tokens](https://github.com/settings/tokens), sélectionnez **Configure SSO** sur le jeton, et autorisez l'organisation3630* Si vous vous authentifiez avec un jeton d'accès personnel dans `GH_TOKEN`, ouvrez [github.com/settings/tokens](https://github.com/settings/tokens), sélectionnez **Configure SSO** sur le jeton et autorisez l'organisation

3567* Exécutez `/install-github-app` à nouveau3631* Exécutez à nouveau `/install-github-app`

3568 3632 

3569Avant la v2.1.273, Claude Code affichait l'avertissement `Admin permissions required` pour cette condition à la place.3633Avant la v2.1.273, Claude Code affichait l'avertissement `Admin permissions required` pour cette situation à la place.

3570 3634 

3571<h3 id="failed-to-resume-the-conversation">3635<h3 id="failed-to-resume-the-conversation">

3572 Impossible de reprendre la conversation3636 Échec de la reprise de la conversation

3573</h3>3637</h3>

3574 3638 

3575Claude Code n'a pas pu lire ou traiter la transcription enregistrée pour la session que vous avez sélectionnée dans le [sélecteur `claude --resume`](/docs/fr/sessions#use-the-session-picker), il termine donc le processus plutôt que de continuer dans un état partiellement chargé. Le message inclut la commande pour réessayer :3639Claude Code n'a pas pu lire ou traiter la transcription enregistrée de la session que vous avez sélectionnée dans le [sélecteur `claude --resume`](/docs/fr/sessions#use-the-session-picker), il met donc fin au processus plutôt que de continuer dans un état partiellement chargé. Le message inclut la commande pour réessayer :

3576 3640 

3577```text theme={null}3641```text theme={null}

3578Failed to resume the conversation.3642Failed to resume the conversation.

3579Run claude --resume <session-id> to retry, or claude to start a new session.3643Run claude --resume <session-id> to retry, or claude to start a new session.

3580```3644```

3581 3645 

3582Claude Code se termine avec le code 1 après avoir affiché le message. Le sélecteur `/resume` à l'intérieur d'une session en cours signale `Failed to resume conversation` dans la conversation à la place, et votre session actuelle continue de s'exécuter. Avant la v2.1.216, une reprise échouée du sélecteur `claude --resume` restait sur le spinner `Resuming conversation…` indéfiniment au lieu d'afficher ce message.3646Claude Code se termine avec le code 1 après avoir affiché le message. Le sélecteur `/resume` au sein d'une session en cours signale plutôt `Failed to resume conversation` dans la conversation, et votre session actuelle continue de s'exécuter. Avant la v2.1.216, une reprise échouée depuis le sélecteur `claude --resume` restait indéfiniment sur l'indicateur `Resuming conversation…` au lieu d'afficher ce message.

3583 3647 

3584**Que faire :**3648**Que faire :**

3585 3649 

3586* Exécutez `claude --resume <session-id>` avec l'ID de session du message pour réessayer3650* Exécutez `claude --resume <session-id>` avec l'ID de session du message pour réessayer

3587* Si chaque nouvelle tentative échoue de la même manière, exécutez `claude update` et reprenez à nouveau. Les versions antérieures à v2.1.275 échouent la reprise lorsque la transcription enregistrée contient une entrée qu'elles ne peuvent pas lire.3651* Sur une version antérieure à la v2.1.285, si la nouvelle tentative échoue de la même façon, exécutez `claude update` et reprenez à nouveau la session. Ces versions font échouer la reprise lorsque la transcription enregistrée contient une entrée qu'elles ne savent pas lire.

3588* Si la nouvelle tentative échoue à nouveau, exécutez `claude` pour démarrer une nouvelle session3652* Si la nouvelle tentative échoue encore, exécutez `claude` pour démarrer une nouvelle session

3589 3653 

3590<h3 id="no-conversation-found-with-the-session-id">3654<h3 id="no-conversation-found-with-the-session-id">

3591 Aucune conversation trouvée avec l'ID de session3655 Aucune conversation trouvée avec l'ID de session

3592</h3>3656</h3>

3593 3657 

3594Vous avez transmis un ID de session à `claude --resume <session-id>` et aucune transcription enregistrée ne l'a appairé :3658Vous avez transmis un ID de session à `claude --resume <session-id>` et aucune transcription enregistrée ne lui correspondait :

3595 3659 

3596```text theme={null}3660```text theme={null}

3597No conversation found with session ID: <session-id>3661No conversation found with session ID: <session-id>

3598```3662```

3599 3663 

3600Claude Code se termine avec le code 1 après avoir affiché le message. Claude Code [recherche d'abord le projet courant, puis chaque autre projet sur cette machine](/docs/fr/sessions#resume-a-session) pour l'ID. Avant la v2.1.223, la recherche s'arrêtait au répertoire du projet courant et ses worktrees git, donc reprendre à partir du répertoire où la session a travaillé en dernier.3664Claude Code se termine avec le code 1 après avoir affiché le message. Claude Code [recherche l'ID d'abord dans le projet actuel, puis dans tous les autres projets de cette machine](/docs/fr/sessions#resume-a-session). Avant la v2.1.223, la recherche s'arrêtait au répertoire du projet actuel et à ses worktrees git ; reprenez donc la session depuis le répertoire dans lequel elle a travaillé en dernier.

3601 3665 

3602Les causes courantes :3666Causes courantes :

3603 3667 

3604* **ID mal saisi** : pour une exécution non interactive, l'ID est le champ `session_id` de la sortie [`--output-format json`](/docs/fr/headless#get-structured-output)3668* **ID mal saisi** : pour une exécution non interactive, l'ID correspond au champ `session_id` de la [sortie `--output-format json`](/docs/fr/headless#get-structured-output)

3605* **Transcription supprimée** : Claude Code supprime les transcriptions après la [période de rétention](/docs/fr/sessions#where-transcripts-are-stored), 30 jours par défaut, suivant les [règles de balayage de rétention](/docs/fr/claude-directory#cleaned-up-automatically)3669* **Transcription supprimée** : Claude Code supprime les transcriptions après la [période de rétention](/docs/fr/sessions#where-transcripts-are-stored), 30 jours par défaut, selon les [règles de nettoyage de rétention](/docs/fr/claude-directory#cleaned-up-automatically)

3606* **Machine différente** : Claude Code stocke les transcriptions localement, donc reprenez la session sur la machine où elle s'est exécutée3670* **Machine différente** : Claude Code stocke les transcriptions localement ; reprenez donc la session sur la machine où elle s'est exécutée

3607* **Copies en double** : si vous avez copié un répertoire de projet sous `~/.claude/projects` afin que deux transcriptions portent le même ID, Claude Code signale ce message plutôt que de reprendre une copie arbitrairement3671* **Copies en double** : si vous avez copié un répertoire de projet sous `~/.claude/projects` de sorte que deux transcriptions portent le même ID, Claude Code affiche ce message plutôt que de reprendre arbitrairement l'une des copies

3608 3672 

3609**Que faire :**3673**Que faire :**

3610 3674 

3611* Pour une session interactive, ouvrez le [sélecteur de session](/docs/fr/sessions#use-the-session-picker) avec `claude --resume` et appuyez sur `Ctrl+A` pour l'élargir à chaque projet sur cette machine, puis sélectionnez la session3675* Pour une session interactive, ouvrez le [sélecteur de sessions](/docs/fr/sessions#use-the-session-picker) avec `claude --resume` et appuyez sur `Ctrl+A` pour l'étendre à tous les projets de cette machine, puis sélectionnez la session

3612* Les sessions créées avec `claude -p` ou le [Agent SDK](/docs/fr/agent-sdk/overview) n'apparaissent pas dans le sélecteur, donc revérifiez l'ID par rapport au `session_id` que votre exécution d'origine a imprimé3676* Les sessions créées avec `claude -p` ou l'[Agent SDK](/docs/fr/agent-sdk/overview) n'apparaissent pas dans le sélecteur ; vérifiez donc à nouveau l'ID par rapport au `session_id` affiché par votre exécution d'origine

3613 3677 

3614<h3 id="windows-reported-an-error-ebadf">3678<h3 id="windows-reported-an-error-ebadf">

3615 Windows a signalé une erreur (EBADF) lorsque Claude Code a lu le fichier de transcription de cette session3679 Windows a signalé une erreur (EBADF) lorsque Claude Code a lu le fichier de transcription de cette session

3616</h3>3680</h3>

3617 3681 

3618Vous avez repris une session sur Windows, son fichier de [transcription](/docs/fr/sessions#where-transcripts-are-stored) enregistré s'est ouvert normalement, et la lecture a échoué avec l'erreur système EBADF. L'erreur système ne dit pas pourquoi la lecture a échoué, donc le message suggère les causes probables et ce qu'il faut essayer :3682Vous avez repris une session sous Windows, son [fichier de transcription](/docs/fr/sessions#where-transcripts-are-stored) enregistré s'est ouvert normalement, puis sa lecture a échoué avec l'erreur système EBADF. L'erreur système n'indique pas pourquoi la lecture a échoué ; le message suggère donc des causes probables et des solutions à essayer :

3619 3683 

3620```text theme={null}3684```text theme={null}

3621Windows reported an error (EBADF) when Claude Code read this session's transcript file, although the file had opened normally. This can happen when other software intercepts file reads — security, encryption or endpoint-management tools, for example. If it keeps happening for this conversation, try excluding the folder that holds Claude Code's session transcripts from such software (the .claude folder in your user profile, unless the app or CLAUDE_CONFIG_DIR points Claude Code elsewhere), or adding Claude Code to its allowed applications, then resume again.3685Windows reported an error (EBADF) when Claude Code read this session's transcript file, although the file had opened normally. This can happen when other software intercepts file reads — security, encryption or endpoint-management tools, for example. If it keeps happening for this conversation, try excluding the folder that holds Claude Code's session transcripts from such software (the .claude folder in your user profile, unless the app or CLAUDE_CONFIG_DIR points Claude Code elsewhere), or adding Claude Code to its allowed applications, then resume again.

3622```3686```

3623 3687 

3624Le message suit la ligne d'échec propre de la commande, telle que `Failed to resume session <session-id>`. Une commande `claude --resume` ou [`claude -p`](/docs/fr/headless) se termine avec le code 1 après l'affichage. Après `/resume` à l'intérieur d'une session, votre session actuelle continue de s'exécuter.3688Le message suit la ligne d'échec propre à la commande, comme `Failed to resume session <session-id>`. Une commande `claude --resume` ou [`claude -p`](/docs/fr/headless) se termine avec le code 1 après l'avoir affiché. Après `/resume` au sein d'une session, votre session actuelle continue de s'exécuter.

3625 3689 

3626**Que faire :**3690**Que faire :**

3627 3691 

3628* Excluez le dossier qui contient vos transcriptions de session des logiciels qui analysent ou interceptent les lectures de fichiers, tels que les outils de sécurité, de chiffrement ou de gestion des points de terminaison. Les transcriptions vivent sous `%USERPROFILE%\.claude\projects` par défaut, ou sous le répertoire que [`CLAUDE_CONFIG_DIR`](/docs/fr/env-vars) nomme3692* Excluez le dossier contenant vos transcriptions de session des logiciels qui analysent ou interceptent les lectures de fichiers, tels que les outils de sécurité, de chiffrement ou de gestion des terminaux. Les transcriptions se trouvent par défaut sous `%USERPROFILE%\.claude\projects`, ou sous le répertoire désigné par [`CLAUDE_CONFIG_DIR`](/docs/fr/env-vars)

3629* Si vous ne pouvez pas ajouter une exclusion, ajoutez Claude Code aux applications autorisées de ce logiciel à la place3693* Si vous ne pouvez pas ajouter d'exclusion, ajoutez plutôt Claude Code aux applications autorisées de ce logiciel

3630* Reprenez la session à nouveau3694* Reprenez à nouveau la session

3631 3695 

3632Avant la v2.1.282, l'échec n'avait aucune explication : `claude --resume <session-id>` s'est terminé à `Failed to resume session <session-id>`, et une exécution `-p` a imprimé uniquement le texte d'erreur système, tel que `Failed to resume session: EBADF: bad file descriptor, read`.3696Avant la v2.1.282, l'échec ne s'accompagnait d'aucune explication : `claude --resume <session-id>` se terminait sur `Failed to resume session <session-id>`, et une exécution `-p` n'affichait que le texte de l'erreur système, comme `Failed to resume session: EBADF: bad file descriptor, read`.

3633 3697 

3634<h3 id="cannot-switch-renderers-in-this-session">3698<h3 id="cannot-switch-renderers-in-this-session">

3635 Impossible de changer de renderers dans cette session3699 Impossible de changer de moteur de rendu dans cette session

3636</h3>3700</h3>

3637 3701 

3638Lorsque vous changez de renderers, Claude Code redémarre son processus. Vous avez exécuté [`/tui`](/docs/fr/fullscreen#enable-fullscreen-rendering) dans une session que Claude Code refuse de redémarrer, elle ne change donc pas et ne sauvegarde rien. Le message que vous voyez vous indique la cause :3702Lorsque vous changez de moteur de rendu, Claude Code redémarre son processus. Vous avez exécuté [`/tui`](/docs/fr/fullscreen#enable-fullscreen-rendering) dans une session que Claude Code refuse de redémarrer ; il ne change donc pas de moteur et n'enregistre rien. Le message que vous voyez vous indique la cause :

3639 3703 

3640* `Cannot switch renderers while work is running in the background` : vous avez du travail en arrière-plan en cours d'exécution qu'un redémarrage abandonnerait, tel qu'un shell en arrière-plan ou un sous-agent. Attendez que le travail se termine ou arrêtez-le avec [`/tasks`](/docs/fr/commands), puis exécutez `/tui fullscreen` ou `/tui default` à nouveau3704* `Cannot switch renderers while work is running in the background` : vous avez des tâches en arrière-plan qu'un redémarrage abandonnerait, comme un shell en arrière-plan ou un sous-agent. Attendez la fin de ces tâches ou arrêtez-les avec [`/tasks`](/docs/fr/commands), puis exécutez à nouveau `/tui fullscreen` ou `/tui default`

3641* `Cannot switch renderers in this session` : la session a des restrictions que Claude Code ne peut pas transmettre au processus redémarré. Avant la v2.1.234, Claude Code redémarrait de toute façon et la session relancée s'exécutait sans elles3705* `Cannot switch renderers in this session` : la session comporte des restrictions que Claude Code ne peut pas transmettre au processus redémarré. Avant la v2.1.234, Claude Code redémarrait malgré tout et la session relancée s'exécutait sans elles

3642 3706 

3643Dans le message des restrictions, la partie entre parenthèses nomme les restrictions que Claude Code a trouvées :3707Dans le message sur les restrictions, la partie entre parenthèses nomme les restrictions détectées par Claude Code :

3644 3708 

3645```text theme={null}3709```text theme={null}

3646Cannot switch renderers in this session — it has restrictions a restart can't carry over (permission rules set for this session only). Nothing was changed. Running /tui fullscreen in a session started without them switches every later session too.3710Cannot switch renderers in this session — it has restrictions a restart can't carry over (permission rules set for this session only). Nothing was changed. Running /tui fullscreen in a session started without them switches every later session too.


3648 3712 

3649Chaque raison que le message peut afficher entre parenthèses :3713Chaque raison que le message peut afficher entre parenthèses :

3650 3714 

3651* `launch flags: a custom system prompt, a tool allowlist, or restricted settings` : vous avez démarré la session avec un indicateur que Claude Code ne transmet pas au processus redémarré. Ces indicateurs incluent [`--system-prompt`](/docs/fr/cli-reference#cli-flags), `--system-prompt-file`, `--append-system-prompt-file`, une liste d'autorisation [`--tools`](/docs/fr/cli-reference#cli-flags), [`--setting-sources`](/docs/fr/cli-reference#cli-flags), et [`--permission-prompt-tool`](/docs/fr/cli-reference#cli-flags)3715* `launch flags: a custom system prompt, a tool allowlist, or restricted settings` : vous avez démarré la session avec un flag que Claude Code ne retransmet pas au processus redémarré. Ces flags incluent [`--system-prompt`](/docs/fr/cli-reference#cli-flags), `--system-prompt-file`, `--append-system-prompt-file`, une liste d'autorisation [`--tools`](/docs/fr/cli-reference#cli-flags), [`--setting-sources`](/docs/fr/cli-reference#cli-flags) et [`--permission-prompt-tool`](/docs/fr/cli-reference#cli-flags)

3652* `permission rules set for this session only` : une [mise à jour de permission](/docs/fr/hooks#permission-update-entries) d'un hook ou d'un appelant SDK a ajouté des règles de refus ou de demande avec la destination `session`. Les règles d'autorisation à portée de session ne déclenchent pas le refus. Un redémarrage les supprime, et Claude Code demande à nouveau à la place3716* `permission rules set for this session only` : une [mise à jour de permissions](/docs/fr/hooks#permission-update-entries) provenant d'un hook ou d'un appelant SDK a ajouté des règles de refus ou de demande avec la destination `session`. Les règles d'autorisation limitées à la session ne déclenchent pas le refus. Un redémarrage les supprime, et Claude Code vous demande à nouveau à la place

3653* `ask-before-running rules with no command-line form` : une mise à jour de permission d'un hook ou d'un appelant SDK a ajouté des règles de demande aux côtés des règles que Claude Code transmet comme `--allowed-tools` et `--disallowed-tools`. Aucun indicateur n'existe pour les règles de demande3717* `ask-before-running rules with no command-line form` : une mise à jour de permissions provenant d'un hook ou d'un appelant SDK a ajouté des règles de demande en plus des règles que Claude Code retransmet sous forme de `--allowed-tools` et `--disallowed-tools`. Aucun flag n'existe pour les règles de demande

3654* `permission rules a command line cannot carry intact` et `added directories a command line cannot carry intact` : une mise à jour de permission a ajouté une règle ou un chemin de répertoire en milieu de session. La ligne de commande du processus redémarré ne peut pas porter son texte comme la même valeur3718* `permission rules a command line cannot carry intact` et `added directories a command line cannot carry intact` : une mise à jour de permissions a ajouté une règle ou un chemin de répertoire en cours de session. La ligne de commande du processus redémarré ne peut pas transporter son texte sous la même valeur

3655 3719 

3656**Que faire :**3720**Que faire :**

3657 3721 

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

3659 3723 

3660<h3 id="couldnt-open-claude-desktop">3724<h3 id="couldnt-open-claude-desktop">

3661 Impossible d'ouvrir Claude Desktop3725 Impossible d'ouvrir Claude Desktop

3662</h3>3726</h3>

3663 3727 

3664Vous avez exécuté [`/desktop`](/docs/fr/desktop#coming-from-the-cli) ou son alias `/app` dans une session, ou [`claude --desktop`](/docs/fr/cli-reference#cli-flags) dans votre shell, et la commande système que Claude Code utilise pour ouvrir Claude Desktop a échoué. Après `/desktop`, la session reste dans le terminal ; `claude --desktop` imprime le message sans le préfixe `Error:` et se termine avec le statut 1.3728Vous avez exécuté [`/desktop`](/docs/fr/desktop#coming-from-the-cli) ou son alias `/app` dans une session, ou [`claude --desktop`](/docs/fr/cli-reference#cli-flags) dans votre shell, et la commande système qu'utilise Claude Code pour ouvrir Claude Desktop a échoué. Après `/desktop`, la session reste dans le terminal ; `claude --desktop` affiche le message sans le préfixe `Error:` et se termine avec le statut 1.

3665 3729 

3666Le texte entre parenthèses nomme la commande qui a échoué, avec son code de sortie et la première ligne de sa sortie d'erreur lorsqu'elle l'a produite. Sur macOS cette commande est `open`, comme dans cet exemple ; sur Windows c'est `rundll32` :3730Le texte entre parenthèses nomme la commande qui a échoué, avec son statut de sortie et la première ligne de sa sortie d'erreur lorsqu'elle les a produits. Sous macOS, cette commande est `open`, comme dans cet exemple ; sous Windows, il s'agit de `rundll32` :

3667 3731 

3668```text theme={null}3732```text theme={null}

3669Error: Couldn't open Claude Desktop (`open` exited 1: LSOpenURLsWithRole() failed for the URL claude://resume?session=<session-id> with error -10814). Open Claude Desktop and try again.3733Error: Couldn't open Claude Desktop (`open` exited 1: LSOpenURLsWithRole() failed for the URL claude://resume?session=<session-id> with error -10814). Open Claude Desktop and try again.


3671 3735 

3672**Que faire :**3736**Que faire :**

3673 3737 

3674* Ouvrez Claude Desktop vous-même, puis exécutez `/desktop` ou `claude --desktop` à nouveau3738* Ouvrez vous-même Claude Desktop, puis exécutez à nouveau `/desktop` ou `claude --desktop`

3675* Pour lire la sortie d'erreur complète de la commande qui a échoué, activez la journalisation de débogage avec `/debug` et exécutez `/desktop` à nouveau, ou exécutez `claude --desktop --debug-file <path>`, puis vérifiez le journal de débogage3739* Pour lire la sortie d'erreur complète de la commande ayant échoué, activez la journalisation de débogage avec `/debug` et exécutez à nouveau `/desktop`, ou exécutez `claude --desktop --debug-file <path>`, puis consultez le log de débogage

3676 3740 

3677Avant la v2.1.285, le message se terminait par `Open Claude Desktop and run /desktop again.` Avant la v2.1.275, c'était `Failed to open Claude Desktop. Please try opening it manually.` et ne disait pas ce qui a échoué.3741Avant la v2.1.285, le message se terminait par `Open Claude Desktop and run /desktop again.` Avant la v2.1.275, il s'agissait de `Failed to open Claude Desktop. Please try opening it manually.` et il n'indiquait pas ce qui avait échoué.

3678 3742 

3679<h3 id="terminal-setup-left-your-zed-keymap-unchanged">3743<h3 id="terminal-setup-left-your-zed-keymap-unchanged">

3680 /terminal-setup a laissé votre keymap Zed inchangée3744 /terminal-setup a laissé votre keymap Zed inchangé

3681</h3>3745</h3>

3682 3746 

3683Vous avez exécuté [`/terminal-setup`](/docs/fr/terminal-config#enter-multiline-prompts) dans Zed, et Claude Code n'a pas pu terminer la mise à jour de votre Zed `keymap.json`, il a donc laissé le fichier tel qu'il était.3747Vous avez exécuté [`/terminal-setup`](/docs/fr/terminal-config#enter-multiline-prompts) dans Zed, et Claude Code n'a pas pu terminer la mise à jour de votre fichier Zed `keymap.json` ; il a donc laissé le fichier tel quel.

3684 3748 

3685Chaque message nomme le chemin vers votre keymap et se termine avec le bloc de liaison de clé à ajouter vous-même :3749Chaque message nomme le chemin de votre keymap et se termine par le bloc de raccourci clavier à ajouter vous-même :

3686 3750 

3687```text theme={null}3751```text theme={null}

3688Couldn't update your Zed keymap, so it was left unchanged.3752Couldn't update your Zed keymap, so it was left unchanged.


3692 3756 

3693La première ligne du message nomme la cause :3757La première ligne du message nomme la cause :

3694 3758 

3695* `Couldn't read your Zed keymap, so it was left unchanged.` : Claude Code n'a pas pu lire le fichier, par exemple en raison de permissions de fichier3759* `Couldn't read your Zed keymap, so it was left unchanged.` : Claude Code n'a pas pu lire le fichier, par exemple en raison des permissions du fichier

3696* `Your Zed keymap isn't a readable list of keybindings, so it was left unchanged.` : le fichier s'est bien lu mais ne s'analyse pas comme un tableau de blocs de liaison de clé, même avec les commentaires `//` et les virgules finales autorisés3760* `Your Zed keymap isn't a readable list of keybindings, so it was left unchanged.` : le fichier a été lu correctement mais ne s'analyse pas comme un tableau de blocs de raccourcis clavier, même en autorisant les commentaires `//` et les virgules finales

3697* `Couldn't back up your Zed keymap; not modifying it.` : Claude Code n'a pas pu copier le fichier vers une sauvegarde `.bak` à côté, il n'a donc rien changé3761* `Couldn't back up your Zed keymap; not modifying it.` : Claude Code n'a pas pu copier le fichier vers une sauvegarde `.bak` à côté de celui-ci ; il n'a donc rien modifié

3698* `Couldn't update your Zed keymap, so it was left unchanged.` : le résultat fusionné n'a pas vérifié comme un keymap valide portant la liaison, donc Claude Code l'a rejeté au lieu de l'écrire. Un bloc de liaison de clé avec une clé dupliquée peut causer ceci3762* `Couldn't update your Zed keymap, so it was left unchanged.` : le résultat fusionné n'a pas été validé comme un keymap valide contenant le raccourci ; Claude Code l'a donc abandonné au lieu de l'écrire. Un bloc de raccourci clavier contenant une clé en double peut en être la cause

3699 3763 

3700**Que faire :**3764**Que faire :**

3701 3765 

3702* Copiez le bloc du message dans le tableau de niveau supérieur dans votre `keymap.json` au chemin que le message nomme3766* Copiez le bloc du message dans le tableau de premier niveau de votre `keymap.json`, au chemin indiqué par le message

3703* Pour `isn't a readable list of keybindings`, corrigez l'erreur de syntaxe, ou rendez la valeur de niveau supérieur du fichier un tableau, puis exécutez `/terminal-setup` à nouveau3767* Pour `isn't a readable list of keybindings`, corrigez l'erreur de syntaxe, ou faites de la valeur de premier niveau du fichier un tableau, puis exécutez à nouveau `/terminal-setup`

3704 3768 

3705Avant la v2.1.247, `/terminal-setup` ne pouvait pas analyser un keymap Zed qui utilisait des commentaires `//` ou des virgules finales, et il remplaçait le fichier entier par uniquement sa propre liaison tout en signalant la liaison comme installée. Pour restaurer un keymap qu'une version antérieure a remplacé, utilisez le fichier de sauvegarde `.bak` décrit sous [Entrer des invites multiligne](/docs/fr/terminal-config#enter-multiline-prompts).3769Avant la v2.1.247, `/terminal-setup` ne pouvait pas analyser un keymap Zed utilisant des commentaires `//` ou des virgules finales, et il remplaçait l'intégralité du fichier par son seul raccourci tout en signalant ce raccourci comme installé. Pour restaurer un keymap remplacé par une version antérieure, utilisez le fichier de sauvegarde `.bak` décrit dans [Saisir des prompts multilignes](/docs/fr/terminal-config#enter-multiline-prompts).

3706 3770 

3707<h3 id="skill-usage-reports-are-not-available-on-this-connection">3771<h3 id="skill-usage-reports-are-not-available-on-this-connection">

3708 Les rapports d'utilisation des skills ne sont pas disponibles sur cette connexion3772 Les rapports d'utilisation des skills ne sont pas disponibles sur cette connexion

3709</h3>3773</h3>

3710 3774 

3711Vous avez exécuté [`/skill-doctor`](/docs/fr/skills#find-unused-skills) sur [Contrôle à distance](/docs/fr/remote-control), à partir de votre téléphone ou navigateur. Claude Code n'envoie pas le rapport d'utilisation des skills sur le contrôle à distance et répond avec ce message à la place :3775Vous avez exécuté [`/skill-doctor`](/docs/fr/skills#find-unused-skills) via [Remote Control](/docs/fr/remote-control), depuis votre téléphone ou votre navigateur. Claude Code n'envoie pas le rapport d'utilisation des skills via Remote Control et répond par ce message à la place :

3712 3776 

3713```text theme={null}3777```text theme={null}

3714Skill usage reports are not available on this connection.3778Skill usage reports are not available on this connection.


3716 3780 

3717**Que faire :**3781**Que faire :**

3718 3782 

3719* Exécutez `/skill-doctor` dans le terminal sur la machine où la session s'exécute, ou exécutez `claude -p "/skill-doctor"` là-bas3783* Exécutez `/skill-doctor` dans le terminal de la machine sur laquelle la session s'exécute, ou exécutez-y `claude -p "/skill-doctor"`

3720 3784 

3721<h3 id="custom-output-styles-cant-be-selected-over-remote-control">3785<h3 id="custom-output-styles-cant-be-selected-over-remote-control">

3722 Les styles de sortie personnalisés ne peuvent pas être sélectionnés sur le contrôle à distance3786 Les styles de sortie personnalisés ne peuvent pas être sélectionnés via Remote Control

3723</h3>3787</h3>

3724 3788 

3725Vous avez exécuté [`/output-style`](/docs/fr/output-styles#change-your-output-style) à partir de l'application mobile ou web via [Contrôle à distance](/docs/fr/remote-control), ou la commande est arrivée dans un message relayé dans la session. Parce qu'un tel tour peut ne pas provenir du propriétaire du compte, Claude Code énumère et sélectionne uniquement les [styles intégrés](/docs/fr/output-styles#built-in-output-styles) sur celui-ci, et ajoute cet avis chaque fois que la commande énumère les styles ou ne reconnaît pas le nom que vous avez donné. Un nom de [style personnalisé](/docs/fr/output-styles#create-a-custom-output-style) reçoit la même réponse qu'un nom qui n'existe pas :3789Vous avez exécuté [`/output-style`](/docs/fr/output-styles#change-your-output-style) depuis l'application mobile ou le web via [Remote Control](/docs/fr/remote-control), ou la commande est arrivée dans un message relayé dans la session. Comme un tel tour peut ne pas provenir du titulaire du compte, Claude Code n'y liste et n'y sélectionne que les [styles intégrés](/docs/fr/output-styles#built-in-output-styles), et ajoute cet avertissement chaque fois que la commande liste les styles ou ne reconnaît pas le nom que vous avez indiqué. Un nom de [style personnalisé](/docs/fr/output-styles#create-a-custom-output-style) obtient la même réponse qu'un nom inexistant :

3726 3790 

3727```text theme={null}3791```text theme={null}

3728Custom output styles can't be selected over Remote Control or from a relayed message. Select one in the session itself, or pick a built-in style here.3792Custom output styles can't be selected over Remote Control or from a relayed message. Select one in the session itself, or pick a built-in style here.


3731**Que faire :**3795**Que faire :**

3732 3796 

3733* Choisissez un style intégré, par exemple `/output-style concise`3797* Choisissez un style intégré, par exemple `/output-style concise`

3734* Pour utiliser un style personnalisé, définissez [`outputStyle`](/docs/fr/settings-reference#outputstyle) dans le `.claude/settings.local.json` du projet, ou exécutez `/output-style <style>` au terminal propre de la session s'il en a un3798* Pour utiliser un style personnalisé, définissez [`outputStyle`](/docs/fr/settings-reference#outputstyle) dans le fichier `.claude/settings.local.json` du projet, ou exécutez `/output-style <style>` dans le terminal propre à la session, si elle en possède un

3735 3799 

3736<h3 id="output-styles-are-saved-to-local-settings-which-this-session-doesnt-load">3800<h3 id="output-styles-are-saved-to-local-settings-which-this-session-doesnt-load">

3737 Les styles de sortie sont enregistrés dans les paramètres locaux que cette session ne charge pas3801 Les styles de sortie sont enregistrés dans les paramètres locaux, que cette session ne charge pas

3738</h3>3802</h3>

3739 3803 

3740Vous avez essayé de changer les [styles de sortie](/docs/fr/output-styles) avec `/output-style <style>` ou `/config outputStyle=<style>` dans une session dont les sources de paramètres excluent `local`. Les exemples sont une session [Agent SDK](/docs/fr/agent-sdk/typescript) dont [`settingSources`](/docs/fr/agent-sdk/typescript#options) laisse de côté `"local"` et une session CLI démarrée avec une valeur [`--setting-sources`](/docs/fr/cli-reference#cli-flags) qui laisse de côté `local`. Les deux commandes enregistrent le style dans `.claude/settings.local.json`, un fichier qu'une telle session ne relit jamais, donc Claude Code refuse au lieu d'écrire un paramètre qui n'aurait aucun effet :3804Vous avez essayé de changer de [style de sortie](/docs/fr/output-styles) avec `/output-style <style>` ou `/config outputStyle=<style>` dans une session dont les sources de paramètres excluent `local`. Par exemple, une session [Agent SDK](/docs/fr/agent-sdk/typescript) dont le [`settingSources`](/docs/fr/agent-sdk/typescript#options) omet `"local"`, ou une session CLI démarrée avec une valeur [`--setting-sources`](/docs/fr/cli-reference#cli-flags) qui omet `local`. Les deux commandes enregistrent le style dans `.claude/settings.local.json`, un fichier qu'une telle session ne relit jamais ; Claude Code refuse donc au lieu d'écrire un paramètre qui n'aurait aucun effet :

3741 3805 

3742```text theme={null}3806```text theme={null}

3743Output styles are saved to local settings (.claude/settings.local.json), which this session doesn't load, so the style can't be changed here.3807Output styles are saved to local settings (.claude/settings.local.json), which this session doesn't load, so the style can't be changed here.


3745 3809 

3746**Que faire :**3810**Que faire :**

3747 3811 

3748* Ajoutez `local` aux sources de paramètres de la session et changez à nouveau3812* Ajoutez `local` aux sources de paramètres de la session et changez à nouveau de style

3749* Définissez la clé [`outputStyle`](/docs/fr/settings-reference#outputstyle) dans un fichier de paramètres que la session charge, tel que `.claude/settings.json` dans le projet ou `~/.claude/settings.json`. Dans le SDK TypeScript, définissez `outputStyle` à l'intérieur de l'objet `settings` en ligne à la place ; voir [Activer un style de sortie](/docs/fr/agent-sdk/modifying-system-prompts#activate-an-output-style)3813* Définissez la clé [`outputStyle`](/docs/fr/settings-reference#outputstyle) dans un fichier de paramètres que la session charge, comme `.claude/settings.json` dans le projet ou `~/.claude/settings.json`. Dans le SDK TypeScript, définissez plutôt `outputStyle` dans l'objet `settings` en ligne ; consultez [Activer un style de sortie](/docs/fr/agent-sdk/modifying-system-prompts#activate-an-output-style)

3750 3814 

3751<h2 id="plugin-errors">3815<h2 id="plugin-errors">

3752 Erreurs de plugin3816 Erreurs de plugin


4510**Ce qu'il faut faire :**4574**Ce qu'il faut faire :**

4511 4575 

4512* Généralement rien : le message complet va à Claude comme une erreur d'outil, et Claude réessaye avec le chemin direct qu'il nomme. Pour une édition de fichier bloquée, la vue de conversation affiche uniquement une courte ligne `Error editing file` ; le message complet apparaît dans la vue de transcription, que vous ouvrez avec `Ctrl+O`. Une commande bloquée l'imprime dans sa sortie de commande.4576* Généralement rien : le message complet va à Claude comme une erreur d'outil, et Claude réessaye avec le chemin direct qu'il nomme. Pour une édition de fichier bloquée, la vue de conversation affiche uniquement une courte ligne `Error editing file` ; le message complet apparaît dans la vue de transcription, que vous ouvrez avec `Ctrl+O`. Une commande bloquée l'imprime dans sa sortie de commande.

4513* Si le bloc se répète sur le même fichier, le chemin passe probablement par un lien symbolique commis dont la cible contient `..`, tel que `docs/current -> ../README.md` ; demandez à Claude d'éditer le fichier cible par son chemin réel au lieu de passer par le lien4577* Si le blocage se répète sur le même fichier, le chemin passe probablement par un lien symbolique commité dont la cible contient `..`, tel que `docs/current -> ../README.md` ; demandez à Claude d'éditer le fichier cible par son chemin réel au lieu de passer par le lien

4514 4578 

4515<h3 id="write-or-command-blocked-because-the-path-names-a-network-location">4579<h3 id="write-or-command-blocked-because-the-path-names-a-network-location">

4516 Écriture ou commande bloquée car le chemin nomme un emplacement réseau4580 Écriture ou commande bloquée car le chemin nomme un emplacement réseau

4517</h3>4581</h3>

4518 4582 

4519Claude a adressé un fichier ou un répertoire de travail par un chemin qui nomme un lecteur qui n'est pas sur votre machine, un partage UNC tel que `\\server\share\file` ou un chemin d'automontage `/net`, tandis que le checkout de la session est sur un disque local. La même [garde d'isolation worktree](#write-or-command-blocked-because-the-path-cannot-be-safely-resolved) ne peut pas vérifier qu'un tel chemin reste en dehors du checkout partagé, de sorte qu'elle bloque l'opération. L'isolation de la session dans un worktree ne lève pas le bloc. Le message nomme la forme de chemin à utiliser à la place :4583Claude a adressé un fichier ou un répertoire de travail par un chemin qui nomme un lecteur qui n'est pas sur votre machine, un partage UNC tel que `\\server\share\file` ou un chemin d'automontage `/net`, tandis que le checkout de la session est sur un disque local. La même [garde d'isolation worktree](#write-or-command-blocked-because-the-path-cannot-be-safely-resolved) ne peut pas vérifier qu'un tel chemin reste en dehors du checkout partagé, de sorte qu'elle bloque l'opération. L'isolation de la session dans un worktree ne lève pas le blocage. Le message nomme la forme de chemin à utiliser à la place :

4520 4584 

4521```text theme={null}4585```text theme={null}

4522This write was blocked because the path is network-shaped (a UNC share or /net automount spelling) while this session's checkout is local. Isolating cannot unblock it. If the file is genuinely inside the worktree /path/to/worktree, address it by its local, plainly-spelled path instead.4586This write was blocked because the path is network-shaped (a UNC share or /net automount spelling) while this session's checkout is local. Isolating cannot unblock it. If the file is genuinely inside the worktree /path/to/worktree, address it by its local, plainly-spelled path instead.


4559This session has no saved transcript — it was stopped before its first response finished. If it was backgrounded from another conversation, that one is still intact; `claude respawn <id>` starts this one fresh.4623This session has no saved transcript — it was stopped before its first response finished. If it was backgrounded from another conversation, that one is still intact; `claude respawn <id>` starts this one fresh.

4560```4624```

4561 4625 

4562L'ouverture de la même ligne de session dans la [vue agent](/docs/fr/agent-view) affiche `Press enter again to restart this session fresh` sous la liste à la place, et une deuxième `Entrée` sur la ligne redémarre la session avec une conversation vide. Avant v2.1.212, l'ouverture de la session arrêtée affichait le message de refus sans aucun moyen de redémarrer à partir de la vue agent. Avant v2.1.211, l'ouverture de la session arrêtée démarrait silencieusement cette conversation vierge et pouvait réexécuter l'invite originale de la session.4626L'ouverture de la même ligne de session dans la [vue agent](/docs/fr/agent-view) affiche `Press enter again to restart this session fresh` sous la liste à la place, et une deuxième `Entrée` sur la ligne redémarre la session avec une conversation vide. Avant v2.1.212, l'ouverture de la ligne affichait le message de refus sans aucun moyen de redémarrer à partir de la vue agent. Avant v2.1.211, l'ouverture de la session arrêtée démarrait silencieusement cette conversation vierge et pouvait réexécuter le prompt original de la session.

4563 4627 

4564**Ce qu'il faut faire :**4628**Ce qu'il faut faire :**

4565 4629 


4581* **`running in another terminal`** : un terminal détient la conversation, par exemple celui où vous l'avez reprise avec `claude --resume` ou `/resume`. La ligne affiche également `Open in a terminal`.4645* **`running in another terminal`** : un terminal détient la conversation, par exemple celui où vous l'avez reprise avec `claude --resume` ou `/resume`. La ligne affiche également `Open in a terminal`.

4582* **`already open in another running Claude session`** : un autre processus Claude Code non interactif la détient, par exemple un processus de [session en arrière-plan](/docs/fr/agent-view#the-supervisor-process) pour la même conversation qui n'a pas encore quitté.4646* **`already open in another running Claude session`** : un autre processus Claude Code non interactif la détient, par exemple un processus de [session en arrière-plan](/docs/fr/agent-view#the-supervisor-process) pour la même conversation qui n'a pas encore quitté.

4583 4647 

4584Claude Code enregistre une réponse que vous avez tapée lors de l'ouverture de la ligne et l'envoie comme l'invite suivante de la session lorsque la session démarre ensuite.4648Claude Code enregistre une réponse que vous avez tapée lors de l'ouverture de la ligne et l'envoie comme le prompt suivant de la session lorsque la session démarre ensuite.

4585 4649 

4586**Ce qu'il faut faire :**4650**Ce qu'il faut faire :**

4587 4651 


4593 La conversation enregistrée de cette session n'est plus sur le disque4657 La conversation enregistrée de cette session n'est plus sur le disque

4594</h3>4658</h3>

4595 4659 

4596Vous avez ouvert une [session en arrière-plan](/docs/fr/agent-view) qui s'est terminée alors que le service en arrière-plan était arrêté, et le [nettoyage de transcription](/docs/fr/settings-reference#cleanupperioddays) a depuis supprimé sa conversation enregistrée, par exemple après que la machine ait été éteinte pendant des semaines. L'ouverture d'une telle ligne [reprend normalement sa conversation enregistrée](/docs/fr/agent-view#sessions-show-as-failed-after-shutdown). Sans rien à reprendre, Claude Code refuse plutôt que de réexécuter l'invite originale de la session sans demander :4660Vous avez ouvert une [session en arrière-plan](/docs/fr/agent-view) qui s'est terminée alors que le service en arrière-plan était arrêté, et le [nettoyage de transcription](/docs/fr/settings-reference#cleanupperioddays) a depuis supprimé sa conversation enregistrée, par exemple après que la machine a été éteinte pendant des semaines. L'ouverture d'une telle ligne [reprend normalement sa conversation enregistrée](/docs/fr/agent-view#sessions-show-as-failed-after-shutdown). Sans rien à reprendre, Claude Code refuse plutôt que de réexécuter le prompt original de la session sans demander :

4597 4661 

4598```text theme={null}4662```text theme={null}

4599This session's saved conversation is no longer on disk (it ended while the background service was off, and old transcripts are cleaned up), so there is nothing to resume. `claude rm 7c5dcf5d` deletes the row; `claude respawn 7c5dcf5d` runs its original prompt again instead.4663This session's saved conversation is no longer on disk (it ended while the background service was off, and old transcripts are cleaned up), so there is nothing to resume. `claude rm 7c5dcf5d` deletes the row; `claude respawn 7c5dcf5d` runs its original prompt again instead.


4604**Ce qu'il faut faire :**4668**Ce qu'il faut faire :**

4605 4669 

4606* Exécutez `claude rm <id>` pour supprimer la ligne. Lorsque l'un des [cas conservés](/docs/fr/agent-view#what-deleting-a-session-removes) s'applique, `claude rm` conserve la ligne et le worktree à la place et nomme la raison4670* Exécutez `claude rm <id>` pour supprimer la ligne. Lorsque l'un des [cas conservés](/docs/fr/agent-view#what-deleting-a-session-removes) s'applique, `claude rm` conserve la ligne et le worktree à la place et nomme la raison

4607* Pour exécuter à nouveau l'invite originale de la session en tant que conversation nouvelle, exécutez `claude respawn <id>`4671* Pour exécuter à nouveau le prompt original de la session en tant que nouvelle conversation, exécutez `claude respawn <id>`

4608 4672 

4609Avant v2.1.248, l'ouverture d'une telle ligne réexécutait l'invite originale de la session au lieu de refuser, ramenant une tâche vieille de plusieurs semaines au premier plan.4673Avant v2.1.248, l'ouverture d'une telle ligne réexécutait le prompt original de la session au lieu de refuser, ramenant une tâche vieille de plusieurs semaines au premier plan.

4610 4674 

4611<h3 id="worktree-has-commits-that-are-not-pushed-anywhere">4675<h3 id="worktree-has-commits-that-are-not-pushed-anywhere">

4612 Le worktree a des commits qui ne sont poussés nulle part4676 Le worktree a des commits qui ne sont poussés nulle part

4613</h3>4677</h3>

4614 4678 

4615Vous avez essayé de supprimer une [session en arrière-plan](/docs/fr/agent-view#what-deleting-a-session-removes) dont le worktree contient des commits que Claude Code ne peut pas confirmer sont enregistrés ailleurs. Claude Code conserve le worktree et la ligne de session plutôt que de détruire les commits sans les voir. `claude rm` nomme la branche et les commits non poussés, et dit comment procéder :4679Vous avez essayé de supprimer une [session en arrière-plan](/docs/fr/agent-view#what-deleting-a-session-removes) dont le worktree contient des commits dont Claude Code ne peut pas confirmer qu'ils sont enregistrés ailleurs. Claude Code conserve le worktree et la ligne de session plutôt que de détruire les commits sans les voir. `claude rm` nomme la branche et les commits non poussés, et dit comment procéder :

4616 4680 

4617```text theme={null}4681```text theme={null}

4618kept 7c5dcf5d — its worktree is still at "/home/you/project/.claude/worktrees/fix-login"4682kept 7c5dcf5d — its worktree is still at “/home/you/project/.claude/worktrees/fix-login”

4619 2 unpushed commits on "claude/fix-login": a1b2c3d "Fix login flow" and 1 more. They exist on no remote, so deleting the worktree would lose them.4683 2 unpushed commits on “claude/fix-login”: a1b2c3d “Fix login flow” and 1 more. They exist on no remote, so deleting the worktree would lose them.

4620 push them and run 'claude rm 7c5dcf5d' again, or discard the worktree and its commits: claude rm 7c5dcf5d --discard-unpushed a1b2c3d000000000000000000000000000000000@0123456789abcdef0123456789abcdef4684 push them and run 'claude rm 7c5dcf5d' again, or discard the worktree and its commits: claude rm 7c5dcf5d --discard-unpushed a1b2c3d000000000000000000000000000000000@0123456789abcdef0123456789abcdef

4621```4685```

4622 4686 

4623Lorsque Claude Code ne peut pas résumer les commits, la ligne de détail lit `The worktree has unpushed commits` à la place. Dans la [vue agent](/docs/fr/agent-view), la ligne de la session affiche `not deleted` avec la même raison.4687Lorsque Claude Code ne peut pas résumer les commits, la ligne de détail indique `The worktree has unpushed commits` à la place. Dans la [vue agent](/docs/fr/agent-view), la ligne de la session affiche `not deleted` avec la même raison.

4624 4688 

4625Les commits sur une télécommande ne bloquent pas la suppression. Non plus les commits sur la copie locale de la branche par défaut de votre télécommande `origin`, tant que cette branche est extraite dans votre checkout principal, le répertoire du référentiel lui-même plutôt qu'un worktree.4689Les commits sur un dépôt distant ne bloquent pas la suppression. Les commits sur la copie locale de la branche par défaut de votre dépôt distant `origin` non plus, tant que cette branche est extraite dans votre checkout principal, le répertoire du dépôt lui-même plutôt qu'un worktree.

4626 4690 

4627**Ce qu'il faut faire :**4691**Ce qu'il faut faire :**

4628 4692 

4629* Pour conserver les commits, poussez la branche du worktree, ou fusionnez-la dans la branche par défaut extraite dans votre checkout principal, puis supprimez la session à nouveau4693* Pour conserver les commits, poussez la branche du worktree, ou fusionnez-la dans la branche par défaut extraite dans votre checkout principal, puis supprimez la session à nouveau

4630* Pour abandonner les commits, exécutez la commande `claude rm <id> --discard-unpushed` que le message a imprimée, ou appuyez deux fois sur `Ctrl+X` sur la ligne de la session dans la vue agent à nouveau. Cela supprime la session et le worktree ainsi que sa branche, les commits non poussés et les modifications non validées. Si le worktree a gagné un commit depuis le refus, Claude Code le conserve à nouveau et affiche l'état mis à jour4694* Pour abandonner les commits, exécutez la commande `claude rm <id> --discard-unpushed` que le message a imprimée, ou appuyez deux fois sur `Ctrl+X` sur la ligne de la session dans la vue agent à nouveau. Cela supprime la session et le worktree ainsi que sa branche, les commits non poussés et les modifications non commitées. Si le worktree a gagné un commit depuis le refus, Claude Code le conserve à nouveau et affiche l'état mis à jour

4631* Lorsque le message dit que le worktree est également enregistré par une autre session terminée, la suppression à nouveau ne le supprime pas : poussez les commits, puis supprimez la session à nouveau4695* Lorsque le message dit que le worktree est également enregistré par une autre session terminée, la suppression à nouveau ne le supprime pas : poussez les commits, puis supprimez la session à nouveau

4632 4696 

4633Avant v2.1.268, `claude rm` mettait le résumé du commit sur la ligne `kept` elle-même. Lorsque `claude rm` ne pouvait pas résumer les commits, la ligne `kept` lisait `worktree has commits that are not pushed anywhere` à la place du résumé.4697Avant v2.1.268, `claude rm` mettait le résumé du commit sur la ligne `kept` elle-même. Lorsque `claude rm` ne pouvait pas résumer les commits, la ligne `kept` indiquait `worktree has commits that are not pushed anywhere` à la place du résumé.

4634 4698 

4635Avant v2.1.260, le message ne nommait pas la branche ou les commits, et la suppression à nouveau était refusée de la même manière : supprimer la session sans pousser signifiait supprimer le worktree vous-même avec `git worktree remove --force <path>`, puis exécuter `claude rm <id>` à nouveau.4699Avant v2.1.260, le message ne nommait pas la branche ou les commits, et la suppression à nouveau était refusée de la même manière : supprimer la session sans pousser signifiait supprimer le worktree vous-même avec `git worktree remove --force <path>`, puis exécuter `claude rm <id>` à nouveau.

4636 4700 

4637Avant v2.1.248, la branche par défaut extraite dans votre checkout principal ne comptait pas : une branche que vous aviez déjà fusionnée là-bas déclenchait toujours ce refus jusqu'à ce que ses commits atteignent une télécommande.4701Avant v2.1.248, la branche par défaut extraite dans votre checkout principal ne comptait pas : une branche que vous aviez déjà fusionnée là-bas déclenchait toujours ce refus jusqu'à ce que ses commits atteignent un dépôt distant.

4638 4702 

4639<h3 id="terminal-host-process-died">4703<h3 id="terminal-host-process-died">

4640 Le processus hôte du terminal est mort4704 Le processus hôte du terminal est mort


4660 4724 

4661**Ce qu'il faut faire :**4725**Ce qu'il faut faire :**

4662 4726 

4663* Dans la vue agent, appuyez sur `Entrée` sur la ligne échouée ; la session redémarre sur un processus hôte nouveau et la conversation reprend4727* Dans la vue agent, appuyez sur `Entrée` sur la ligne échouée ; la session redémarre sur un nouveau processus hôte et la conversation reprend

4664* À partir du shell, exécutez `claude attach <id>` à nouveau. Claude Code imprime `Session <id>'s terminal host died — restarting it on a fresh one…` et rouvre la session4728* À partir du shell, exécutez `claude attach <id>` à nouveau. Claude Code imprime `Session <id>'s terminal host died — restarting it on a fresh one…` et rouvre la session

4665* Vous ne pouvez pas redémarrer une ligne de commande shell de cette manière ; envoyez la commande à nouveau pour la réexécuter4729* Vous ne pouvez pas redémarrer une ligne de commande shell de cette manière ; envoyez la commande à nouveau pour la réexécuter

4666 4730 

4667Avant v2.1.247, un processus hôte mort pouvait passer chaque vérification de vivacité que le service en arrière-plan exécutait, de sorte que l'ouverture de la session affichait `opening… · esc to cancel` indéfiniment et `claude attach <id>` attendait sans signaler une erreur.4731Avant v2.1.247, un processus hôte mort pouvait passer chaque vérification de vivacité que le service en arrière-plan exécutait, de sorte que l'ouverture de la session affichait `opening… · esc to cancel` indéfiniment et `claude attach <id>` attendait sans signaler d'erreur.

4668 4732 

4669<h3 id="session-isnt-responding">4733<h3 id="session-isnt-responding">

4670 La session ne répond pas4734 La session ne répond pas


4702Session <id> was stopped while the respawn was in flight4766Session <id> was stopped while the respawn was in flight

4703```4767```

4704 4768 

4705L'ouverture d'une session que vous venez de dispatcher, tandis que son processus démarre toujours, attend le processus à la place. Avant v2.1.246, l'ouverture à ce moment-là pouvait l'arrêter et afficher ce message.4769L'ouverture d'une session que vous venez d'envoyer, tandis que son processus démarre toujours, attend le processus à la place. Avant v2.1.246, l'ouverture à ce moment-là pouvait l'arrêter et afficher ce message.

4706 4770 

4707**Ce qu'il faut faire :**4771**Ce qu'il faut faire :**

4708 4772 


4721 4785 

4722L'avertissement nomme uniquement les répertoires que Claude Code a recherchés, et il apparaît dans la conversation reprise que vous réveilliez une [session en arrière-plan](/docs/fr/agent-view), exécutiez `/resume` ou `claude --resume`, ou repreniez en [mode non interactif](/docs/fr/headless), où il va également à stderr. Les sessions utilisant `--input-format stream-json` ne l'affichent pas, car le SDK Agent fournit les agents après le démarrage.4786L'avertissement nomme uniquement les répertoires que Claude Code a recherchés, et il apparaît dans la conversation reprise que vous réveilliez une [session en arrière-plan](/docs/fr/agent-view), exécutiez `/resume` ou `claude --resume`, ou repreniez en [mode non interactif](/docs/fr/headless), où il va également à stderr. Les sessions utilisant `--input-format stream-json` ne l'affichent pas, car le SDK Agent fournit les agents après le démarrage.

4723 4787 

4724Claude Code n'enregistre pas le repli à la session, de sorte que l'avertissement se répète à chaque reprise jusqu'à ce que vous agissiez. L'agent `claude` intégré ne déclenche pas l'avertissement, puisque le repli à l'ensemble d'outils par défaut ne change rien pour lui. Avant v2.1.216, Claude Code continuait silencieusement en tant qu'agent par défaut, et la recherche couvrait uniquement le répertoire à partir duquel vous repreniez, de sorte qu'un agent limité au projet était perdu à chaque reprise à partir d'un autre répertoire.4788Claude Code n'enregistre pas la solution de repli dans la session, de sorte que l'avertissement se répète à chaque reprise jusqu'à ce que vous agissiez. L'agent `claude` intégré ne déclenche pas l'avertissement, puisque se rabattre sur l'ensemble d'outils par défaut ne change rien pour lui. Avant v2.1.216, Claude Code continuait silencieusement en tant qu'agent par défaut, et la recherche couvrait uniquement le répertoire à partir duquel vous repreniez, de sorte qu'un agent limité au projet était perdu à chaque reprise à partir d'un autre répertoire.

4725 4789 

4726**Ce qu'il faut faire :**4790**Ce qu'il faut faire :**

4727 4791 


4739CLAUDE_CODE_PROCESS_WRAPPER: launcher `/opt/corp/launcher` is not an executable regular file4803CLAUDE_CODE_PROCESS_WRAPPER: launcher `/opt/corp/launcher` is not an executable regular file

4740```4804```

4741 4805 

4742Un lanceur qui démarre mais quitte sans se remplacer par Claude Code échoue la session qu'il démarrait, et la ligne de la session dans la vue agent rapporte que le lanceur `must exec, not daemonize`, suivi de tout ce que le lanceur a imprimé. Une session qui ne peut pas démarrer ou atteindre le service en arrière-plan à cause du lanceur rapporte le problème du lanceur comme la raison à l'intérieur de `Couldn't reach the background service (...)`.4806Un lanceur qui démarre mais quitte sans se remplacer par Claude Code fait échouer la session qu'il démarrait, et la ligne de la session dans la vue agent rapporte que le lanceur `must exec, not daemonize`, suivi de tout ce que le lanceur a imprimé. Une session qui ne peut pas démarrer ou atteindre le service en arrière-plan à cause du lanceur rapporte le problème du lanceur comme la raison à l'intérieur de `Couldn't reach the background service (...)`.

4743 4807 

4744**Ce qu'il faut faire :**4808**Ce qu'il faut faire :**

4745 4809 


4767 4831 

4768**Ce qu'il faut faire :**4832**Ce qu'il faut faire :**

4769 4833 

4770* Si le message lit `Couldn't start the session`, mettez à jour vers v2.1.212 ou ultérieur. Sur les versions antérieures, vous pouvez également exécuter `claude daemon run` dans un terminal séparé en premier, puis démarrer la session en arrière-plan à nouveau. Cette commande exécute le service en arrière-plan au premier plan du terminal, de sorte que le service dure uniquement tant que ce terminal reste ouvert.4834* Si le message indique `Couldn't start the session`, mettez à jour vers v2.1.212 ou ultérieur. Sur les versions antérieures, vous pouvez également exécuter `claude daemon run` dans un terminal séparé en premier, puis démarrer la session en arrière-plan à nouveau. Cette commande exécute le service en arrière-plan au premier plan du terminal, de sorte que le service dure uniquement tant que ce terminal reste ouvert.

4771* Si une installation npm remplaçait le binaire, attendez qu'elle se termine, puis démarrez la session en arrière-plan à nouveau4835* Si une installation npm remplaçait le binaire, attendez qu'elle se termine, puis démarrez la session en arrière-plan à nouveau

4772* Si l'erreur apparaît sur v2.1.212 ou ultérieur tandis qu'aucune installation npm n'est en cours, demandez à votre administrateur Windows d'autoriser l'exécutable Claude Code dans la politique de restriction4836* Si l'erreur apparaît sur v2.1.212 ou ultérieur tandis qu'aucune installation npm n'est en cours, vérifiez auprès de votre administrateur Windows si une politique de restriction bloque l'exécutable Claude Code

4773* Si le service en arrière-plan s'arrête lorsque vous fermez le terminal, Claude Code l'a démarré sans PowerShell. Installez PowerShell 7, ou demandez à votre administrateur de débloquer PowerShell, de sorte que le service puisse survivre au terminal.4837* Si le service en arrière-plan s'arrête lorsque vous fermez le terminal, Claude Code l'a démarré sans PowerShell. Installez PowerShell 7, ou demandez à votre administrateur de débloquer PowerShell, de sorte que le service puisse survivre au terminal.

4774 4838 

4775<h3 id="eacces-when-starting-a-background-session">4839<h3 id="eacces-when-starting-a-background-session">


4825 Le répertoire de travail n'existe plus au démarrage d'une session en arrière-plan4889 Le répertoire de travail n'existe plus au démarrage d'une session en arrière-plan

4826</h3>4890</h3>

4827 4891 

4828Le répertoire dans lequel vous avez essayé de démarrer une [session en arrière-plan](/docs/fr/agent-view) a été supprimé tandis que la session démarrait. Claude Code ne démarre pas la session, et le message nomme le répertoire manquant :4892Le répertoire dans lequel vous avez démarré une [session en arrière-plan](/docs/fr/agent-view) a été supprimé tandis que la session démarrait. Claude Code ne démarre pas la session, et le message nomme le répertoire manquant :

4829 4893 

4830```text theme={null}4894```text theme={null}

4831Couldn't start a background session (working directory no longer exists or is not accessible: /tmp/demo)4895Couldn't start a background session (working directory no longer exists or is not accessible: /tmp/demo)


4849Workspace not trusted. Run `claude` in /path/to/project once and accept the trust prompt, then retry.4913Workspace not trusted. Run `claude` in /path/to/project once and accept the trust prompt, then retry.

4850```4914```

4851 4915 

4852À partir d'un terminal dans le répertoire de la session lui-même, la même commande affiche le dialogue de confiance à la place et démarre la session une fois que vous acceptez. Ce message apparaît où aucun dialogue ne peut, tel que dans un script, ou lorsque vous redémarrez une session à partir d'un répertoire autre que le sien.4916À partir d'un terminal dans le répertoire de la session lui-même, la même commande affiche le dialogue de confiance à la place et démarre la session une fois que vous acceptez. Ce message apparaît là où aucun dialogue ne peut apparaître, comme dans un script, ou lorsque vous redémarrez une session à partir d'un répertoire autre que le sien.

4853 4917 

4854Deux variantes nomment une cause différente :4918Deux variantes nomment une cause différente :

4855 4919 

4856* **`The home directory is trusted one session at a time`** : le répertoire de la session est votre répertoire personnel. Claude Code ne sauvegarde jamais la confiance pour le répertoire personnel, de sorte que l'acceptation du dialogue là-bas dans une session antérieure ne compte pas.4920* **`The home directory is trusted one session at a time`** : le répertoire de la session est votre répertoire personnel. Claude Code ne sauvegarde jamais la confiance pour le répertoire personnel, de sorte que l'acceptation du dialogue là-bas dans une session antérieure ne compte pas.

4857* **`<path> could not be resolved on disk`** : Claude Code n'a pas pu trouver le répertoire de la session sur le disque.4921* **`<path> could not be resolved on disk`** : Claude Code n'a pas pu trouver le répertoire de la session sur le disque.

4858 4922 

4923Avant v2.1.286, sur Windows, ce message pouvait également apparaître dans un répertoire que vous aviez déjà approuvé, si son enregistrement de confiance avait été sauvegardé avec le chemin dans une casse différente. Mettez à jour vers v2.1.286 ou ultérieur.

4924 

4859**Ce qu'il faut faire :**4925**Ce qu'il faut faire :**

4860 4926 

4861* Exécutez `claude` dans le répertoire que le message nomme et acceptez le dialogue de confiance, puis exécutez la commande à nouveau4927* Exécutez `claude` dans le répertoire que le message nomme et acceptez le dialogue de confiance, puis exécutez la commande à nouveau

Details

39Celles-ci ont des différences spécifiques au fournisseur :39Celles-ci ont des différences spécifiques au fournisseur :

40 40 

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** : lorsque la conversation principale exécute Fable, le [sous-agent Explore intégré](/docs/fr/sub-agents#built-in-subagents) s'exécute sur Opus avec un abonnement Claude, un compte Console Anthropic ou une [passerelle LLM](/docs/fr/llm-gateway) atteinte via `ANTHROPIC_BASE_URL`. Chez les autres fournisseurs, y compris Claude Platform sur AWS, il s'exécute sur Fable

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 AWS, et via une [passerelle d'applications Claude](/docs/fr/claude-apps-gateway#availability-and-limitations)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 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

fullscreen.md +2 −0

Details

105* **Cliquez sur une valeur de paramètre dans le panneau `/config`** pour la modifier, et faites défiler la liste des paramètres avec la molette de la souris. Nécessite Claude Code v2.1.271 ou version ultérieure.105* **Cliquez sur une valeur de paramètre dans le panneau `/config`** pour la modifier, et faites défiler la liste des paramètres avec la molette de la souris. Nécessite Claude Code v2.1.271 ou version ultérieure.

106* **Faites défiler un menu de sélection ou de sélection multiple avec la molette de la souris** lorsqu'il a plus d'options qu'il n'en affiche à la fois, comme la liste `/model` dans une fenêtre de terminal courte. La molette fait défiler la liste tandis que le pointeur se trouve sur ses options. Nécessite Claude Code v2.1.280 ou version ultérieure.106* **Faites défiler un menu de sélection ou de sélection multiple avec la molette de la souris** lorsqu'il a plus d'options qu'il n'en affiche à la fois, comme la liste `/model` dans une fenêtre de terminal courte. La molette fait défiler la liste tandis que le pointeur se trouve sur ses options. Nécessite Claude Code v2.1.280 ou version ultérieure.

107* **Faites défiler une liste qui déborde avec sa barre de défilement.** Dans les panneaux de liste tels que `/skills`, `/mcp` et la liste Installed de `/plugin`, une barre de défilement apparaît à côté d'une liste avec plus de lignes que ce qui tient tandis que le pointeur se trouve sur elle. Cliquez sur la piste pour sauter à ce point, ou faites glisser le curseur. Nécessite Claude Code v2.1.281 ou version ultérieure.107* **Faites défiler une liste qui déborde avec sa barre de défilement.** Dans les panneaux de liste tels que `/skills`, `/mcp` et la liste Installed de `/plugin`, une barre de défilement apparaît à côté d'une liste avec plus de lignes que ce qui tient tandis que le pointeur se trouve sur elle. Cliquez sur la piste pour sauter à ce point, ou faites glisser le curseur. Nécessite Claude Code v2.1.281 ou version ultérieure.

108 * Lorsque la barre comporte des flèches `↑` et `↓` à ses extrémités, cliquez sur une flèche pour faire défiler une seule ligne, ou maintenez-la enfoncée pour continuer le défilement. Les flèches nécessitent Claude Code v2.1.286 ou version ultérieure.

109* **Cliquez sur la ligne `↑ N more` ou `↓ N more` au bord d'une liste** pour sauter à cette extrémité de la liste sans choisir d'option. Nécessite Claude Code v2.1.286 ou version ultérieure.

108* **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.110* **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.

109 * 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.111 * 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.

110 * Cliquer développe également une ligne `Message from @<sender>` atténuée lorsque l'expéditeur est un [coéquipier](/docs/fr/agent-teams) ou un autre agent s'exécutant dans votre session. La ligne d'un message provenant de [l'une de vos autres sessions](/docs/fr/cross-session-messaging#what-a-message-looks-like) affiche également la première ligne du message et n'est pas cliquable, donc appuyez sur `Ctrl+o` pour lire celle-ci.112 * Cliquer développe également une ligne `Message from @<sender>` atténuée lorsque l'expéditeur est un [coéquipier](/docs/fr/agent-teams) ou un autre agent s'exécutant dans votre session. La ligne d'un message provenant de [l'une de vos autres sessions](/docs/fr/cross-session-messaging#what-a-message-looks-like) affiche également la première ligne du message et n'est pas cliquable, donc appuyez sur `Ctrl+o` pour lire celle-ci.

headless.md +8 −0

Details

62| Agents personnalisés | `--agents <json>` |62| Agents personnalisés | `--agents <json>` |

63| Un plugin | `--plugin-dir <path>`, `--plugin-url <url>` |63| Un plugin | `--plugin-dir <path>`, `--plugin-url <url>` |

64 64 

65Le mode bare limite également ce qui se passe pendant l'exécution de la session :

66 

67* **Serveurs MCP** : seuls les serveurs fournis sur la ligne de commande se connectent, par exemple avec `--mcp-config`. Dans une session interactive, Claude Code ignore également la connexion automatique à l'IDE, sauf si vous passez `--ide`.

68* **Rappels système** : Claude reçoit vos prompts et les résultats des outils sans les [rappels système](/docs/fr/glossary#system-reminder) que Claude Code y ajouterait. Par exemple, Claude n'est pas informé lorsqu'un fichier qu'il a lu précédemment change sur le disque, et il ne reçoit pas la liste des skills disponibles, y compris les skills d'un dossier `--add-dir`.

69* **Tâches en arrière-plan** : aucune ne s'exécute. Une commande qui atteint son [délai d'expiration](/docs/fr/tools-reference#timeout-and-output-limits) s'arrête au lieu de [passer en arrière-plan](/docs/fr/tools-reference#background-commands).

70 

71Avant la v2.1.286, ces limites ne s'appliquaient que partiellement : une session `--bare` interactive connectait les serveurs MCP qu'une session normale aurait connectés, chaque session `--bare` envoyait des rappels système, et les tâches en arrière-plan restaient disponibles.

72 

65<Note>73<Note>

66 `--bare` est le mode recommandé pour les appels scriptés et SDK, et deviendra le mode par défaut pour `-p` dans une version future.74 `--bare` est le mode recommandé pour les appels scriptés et SDK, et deviendra le mode par défaut pour `-p` dans une version future.

67</Note>75</Note>

hooks.md +4 −10

Details

731 Le menu `/hooks`731 Le menu `/hooks`

732</h3>732</h3>

733 733 

734Tapez `/hooks` dans Claude Code pour ouvrir un navigateur en lecture seule pour vos hooks configurés. Le menu affiche chaque événement de hook avec un nombre de hooks configurés, vous permet d'explorer les matchers et affiche les détails complets de chaque gestionnaire de hook. Utilisez-le pour vérifier la configuration, vérifier à partir de quel fichier de paramètres un hook provient ou inspecter la commande, le prompt ou l'URL d'un hook.734Tapez `/hooks` dans Claude Code pour ouvrir un navigateur en lecture seule pour vos hooks configurés. La liste étiquette chaque hook avec sa provenance, comme les paramètres utilisateur, les paramètres du projet, les paramètres locaux, un plugin ou la session actuelle.

735 735 

736Le menu affiche les cinq types de hooks : `command`, `prompt`, `agent`, `http` et `mcp_tool`. Chaque hook est étiqueté avec un préfixe `[type]` et une source indiquant où il a été défini :736Sélectionnez un hook pour voir le texte complet de ce qu'il exécute et l'endroit où il est défini, comme le chemin de son fichier de paramètres ou le nom de son plugin.

737 737 

738* `User Settings` : de `~/.claude/settings.json`738Pour parcourir tous les événements de hook, y compris ceux pour lesquels aucun hook n'est configuré, sélectionnez `All events` à la fin de la liste.

739* `Project Settings` : de `.claude/settings.json`

740* `Local Settings` : de `.claude/settings.local.json`

741* `Plugin Hooks` : du `hooks/hooks.json` d'un plugin

742* `Session Hooks` : enregistré en mémoire pour la session actuelle

743 

744Sélectionner un hook ouvre une vue détaillée affichant son événement, son matcher, son type, son fichier source et la commande, le prompt ou l'URL complet. Le menu est en lecture seule : pour ajouter, modifier ou supprimer des hooks, éditez directement le JSON des paramètres ou demandez à Claude de faire la modification.

745 739 

746<h3 id="disable-or-remove-hooks">740<h3 id="disable-or-remove-hooks">

747 Désactiver ou supprimer les hooks741 Désactiver ou supprimer les hooks

748</h3>742</h3>

749 743 

750Pour supprimer un hook, supprimez son entrée du fichier de paramètres JSON.744Pour supprimer un hook défini dans un fichier de paramètres, supprimez son entrée de ce fichier.

751 745 

752Pour désactiver temporairement tous les hooks sans les supprimer, définissez `"disableAllHooks": true` dans votre fichier de paramètres. Claude Code lit la valeur restante après que la [précédence des paramètres](/docs/fr/settings#settings-precedence) s'applique, donc un `"disableAllHooks": false` dans le `.claude/settings.json` d'un projet remplace un `true` dans vos paramètres utilisateur. Pour désactiver les hooks pour une exécution quelle que soit la configuration du projet, passez `--settings '{"disableAllHooks": true}'`, qui prend la précédence sur les paramètres du projet et locaux. Il n'y a aucun moyen de désactiver un hook individuel tout en le gardant dans la configuration.746Pour désactiver temporairement tous les hooks sans les supprimer, définissez `"disableAllHooks": true` dans votre fichier de paramètres. Claude Code lit la valeur restante après que la [précédence des paramètres](/docs/fr/settings#settings-precedence) s'applique, donc un `"disableAllHooks": false` dans le `.claude/settings.json` d'un projet remplace un `true` dans vos paramètres utilisateur. Pour désactiver les hooks pour une exécution quelle que soit la configuration du projet, passez `--settings '{"disableAllHooks": true}'`, qui prend la précédence sur les paramètres du projet et locaux. Il n'y a aucun moyen de désactiver un hook individuel tout en le gardant dans la configuration.

753 747 

hooks-guide.md +13 −10

Details

69 </Step>69 </Step>

70 70 

71 <Step title="Vérifier la configuration">71 <Step title="Vérifier la configuration">

72 Tapez `/hooks` pour ouvrir le navigateur des hooks. Vous verrez une liste de tous les événements de hook disponibles, avec un nombre à côté de chaque événement qui a des hooks configurés. Sélectionnez `Notification` pour confirmer que votre nouveau hook apparaît dans la liste. La sélection du hook affiche ses détails : l'événement, le matcher, le type, le fichier source et la commande.72 Tapez `/hooks` dans le prompt de Claude Code pour ouvrir le navigateur des hooks. Votre nouveau hook apparaît dans la liste sous `Notification`.

73 </Step>73 </Step>

74 74 

75 <Step title="Tester le hook">75 <Step title="Tester le hook">


77 </Step>77 </Step>

78</Steps>78</Steps>

79 79 

80<Tip>

81 Le menu `/hooks` est en lecture seule. Pour ajouter, modifier ou supprimer des hooks, modifiez votre JSON de paramètres directement ou demandez à Claude de faire la modification.

82</Tip>

83 

84<h2 id="what-you-can-automate">80<h2 id="what-you-can-automate">

85 Ce que vous pouvez automatiser81 Ce que vous pouvez automatiser

86</h2>82</h2>


97 93 

98Recevez une notification de bureau chaque fois que Claude termine son travail et a besoin de votre entrée, afin que vous puissiez passer à d'autres tâches sans vérifier le terminal.94Recevez une notification de bureau chaque fois que Claude termine son travail et a besoin de votre entrée, afin que vous puissiez passer à d'autres tâches sans vérifier le terminal.

99 95 

100Ce hook utilise l'événement `Notification`, qui se déclenche lorsque Claude attend une entrée ou une permission. Consultez [quand chaque type de notification se déclenche](/docs/fr/hooks#notification) pour le timing exact. Chaque onglet ci-dessous utilise la commande de notification native de la plateforme. Ajoutez ceci à `~/.claude/settings.json` :96Ce hook utilise l'événement `Notification`, que Claude Code déclenche lorsque Claude attend une entrée ou une permission. Consultez [quand chaque type de notification se déclenche](/docs/fr/hooks#notification) pour le timing exact.

97 

98Chaque onglet ci-dessous utilise la commande de notification native de la plateforme. Ajoutez ceci à `~/.claude/settings.json` :

101 99 

102<Tabs>100<Tabs>

103 <Tab title="macOS">101 <Tab title="macOS">


120 ```118 ```

121 119 

122 <Accordion title="Si aucune notification n'apparaît">120 <Accordion title="Si aucune notification n'apparaît">

123 `osascript` achemine les notifications via l'application Script Editor intégrée. Si Script Editor n'a pas la permission de notification, la commande échoue silencieusement, et macOS ne vous demandera pas de l'accorder. Exécutez ceci dans Terminal une fois pour que Script Editor apparaisse dans vos paramètres de notification :121 `osascript` achemine les notifications via l'application Script Editor intégrée. Si Script Editor n'a pas la permission de notification, la commande échoue silencieusement, et macOS ne vous demandera pas de l'accorder.

122 

123 Exécutez ceci dans Terminal une fois pour que Script Editor apparaisse dans vos paramètres de notification :

124 124 

125 ```bash theme={null}125 ```bash theme={null}

126 osascript -e 'display notification "test"'126 osascript -e 'display notification "test"'


180 ```180 ```

181 181 

182 <Accordion title="Si aucune boîte de dialogue n'apparaît">182 <Accordion title="Si aucune boîte de dialogue n'apparaît">

183 Cette commande ouvre une boîte de dialogue plutôt qu'une notification dans le coin de votre écran, la boîte de dialogue peut donc s'ouvrir derrière votre fenêtre de terminal. Testez d'abord la commande directement dans PowerShell. Si vous exécutez Claude Code dans WSL, `powershell.exe` doit être disponible sur votre `PATH` via l'interopérabilité Windows.183 Cette commande ouvre une boîte de dialogue plutôt qu'une notification dans le coin de votre écran, la boîte de dialogue peut donc s'ouvrir derrière votre fenêtre de terminal. Testez d'abord la commande directement dans PowerShell.

184 

185 Si vous exécutez Claude Code dans WSL, `powershell.exe` doit être disponible sur votre `PATH` via l'interopérabilité Windows.

184 </Accordion>186 </Accordion>

185 </Tab>187 </Tab>

186</Tabs>188</Tabs>


212 214 

213`agent_needs_input` pour une question de configuration de terminal d'un coéquipier nécessite Claude Code v2.1.248 ou version ultérieure.215`agent_needs_input` pour une question de configuration de terminal d'un coéquipier nécessite Claude Code v2.1.248 ou version ultérieure.

214 216 

215Tapez `/hooks` et sélectionnez `Notification` pour confirmer que le hook est enregistré. Pour le schéma d'événement complet, consultez la [référence Notification](/docs/fr/hooks#notification).217Tapez `/hooks` dans l'invite de Claude Code et vérifiez que le hook apparaît sous `Notification`.

216 218 

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

218 Formater automatiquement le code après les modifications220 Formater automatiquement le code après les modifications


1016 1018 

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

1018 1020 

1019Un [mod](/docs/fr/plugins/mods/overview) que vous installez et qui accroche `tool.check` peut approuver un appel que votre hook `PreToolUse` a bloqué, sauf si le hook se trouve dans les paramètres gérés. [Étendre les permissions avec les hooks](/docs/fr/permissions#extend-permissions-with-hooks) énumère les règles qui prévalent sur un mod.1021Un [mod](/docs/fr/plugins/mods/overview) que vous installez et qui gère `tool.check` peut approuver un appel que votre hook `PreToolUse` a bloqué, sauf si le hook se trouve dans les paramètres gérés. [Étendre les permissions avec les hooks](/docs/fr/permissions#extend-permissions-with-hooks) énumère les règles qui prévalent sur un mod.

1020 1022 

1021<h3 id="hook-not-firing">1023<h3 id="hook-not-firing">

1022 Hook ne se déclenche pas1024 Hook ne se déclenche pas


1055* Les modifications de fichiers sont normalement récupérées automatiquement. Si elles n'ont pas apparues après quelques secondes, l'observateur de fichiers peut avoir manqué la modification : redémarrez votre session pour forcer un rechargement.1057* Les modifications de fichiers sont normalement récupérées automatiquement. Si elles n'ont pas apparues après quelques secondes, l'observateur de fichiers peut avoir manqué la modification : redémarrez votre session pour forcer un rechargement.

1056* Vérifiez que votre JSON est valide : les virgules finales et les commentaires ne sont pas autorisés1058* Vérifiez que votre JSON est valide : les virgules finales et les commentaires ne sont pas autorisés

1057* Confirmez que le fichier de paramètres est au bon emplacement : `.claude/settings.json` pour les hooks de projet, `~/.claude/settings.json` pour les hooks globaux1059* Confirmez que le fichier de paramètres est au bon emplacement : `.claude/settings.json` pour les hooks de projet, `~/.claude/settings.json` pour les hooks globaux

1060* Si le menu affiche `Only hooks from managed settings run here`, votre organisation a défini [`allowManagedHooksOnly`](/docs/fr/settings-reference#allowmanagedhooksonly). Les hooks de vos fichiers de paramètres utilisateur, de projet et locaux ne s'exécutent pas et ne sont pas répertoriés

1058 1061 

1059<h3 id="stop-hook-hits-the-block-cap">1062<h3 id="stop-hook-hits-the-block-cap">

1060 Le hook Stop atteint le plafond de blocage1063 Le hook Stop atteint le plafond de blocage

Details

394* Quittez avec `Escape`, `Backspace`, ou `Ctrl+U` sur une invite vide394* Quittez avec `Escape`, `Backspace`, ou `Ctrl+U` sur une invite vide

395* Coller du texte commençant par `!` dans une invite vide entre automatiquement en mode shell, correspondant au comportement du `!` tapé395* Coller du texte commençant par `!` dans une invite vide entre automatiquement en mode shell, correspondant au comportement du `!` tapé

396 396 

397À 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.397À moins que votre session ne soit l'une de celles énumérées sous [mode sandbox strict](/docs/fr/sandboxing#turn-off-the-retry-with-strict-sandbox-mode), 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.

398 398 

399Claude 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.399Claude 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.

400 400 


737 737 

738Quand une [limite d'utilisation](/docs/fr/errors#youve-hit-your-session-limit) de claude.ai arrête Claude au milieu d'une tâche, Claude Code attend dans la session ouverte et continue la tâche automatiquement après la réinitialisation de la limite. La continuation automatique est activée par défaut dans les sessions interactives connectées avec un abonnement claude.ai. Nécessite Claude Code v2.1.234 ou version ultérieure.738Quand une [limite d'utilisation](/docs/fr/errors#youve-hit-your-session-limit) de claude.ai arrête Claude au milieu d'une tâche, Claude Code attend dans la session ouverte et continue la tâche automatiquement après la réinitialisation de la limite. La continuation automatique est activée par défaut dans les sessions interactives connectées avec un abonnement claude.ai. Nécessite Claude Code v2.1.234 ou version ultérieure.

739 739 

740Pendant que Claude Code attend, une ligne en bas de la session indique quand il continuera :740Pendant que Claude Code attend, les lignes en bas de la session indiquent quand votre limite se réinitialise et quand Claude continuera :

741 741 

742```text theme={null}742```text theme={null}

743Usage limit reached · continuing automatically at 3:45pm · esc to cancel743Usage limit reached · limit resets 3:45pm

744Continuing automatically at 3:45pm · esc to cancel

744```745```

745 746 

747Chacune de ces lignes peut comporter du contenu supplémentaire après ces mots, comme un lien d'aide sur la première ou `/usage-credits to continue now` sur la seconde. Quand l'attente démarre automatiquement, la conversation l'enregistre également avec une ligne indiquant `Usage limit reached · continuing automatically at 3:45pm · esc to cancel`.

748 

746Gardez la session ouverte. Ce qui se passe ensuite dépend de la façon dont l'attente se termine :749Gardez la session ouverte. Ce qui se passe ensuite dépend de la façon dont l'attente se termine :

747 750 

748* **À la réinitialisation** : la ligne affiche `continuing shortly`, puis `Usage limit reset · continuing automatically`, et Claude Code envoie à Claude une invite fixe pour reprendre la tâche où elle s'est arrêtée. Il ne renvoie pas votre dernier message.751* **À la réinitialisation** : la seconde ligne devient `Continuing shortly · esc to cancel`. Ensuite, `Usage limit reset · continuing automatically` apparaît dans la conversation, et Claude Code demande à Claude de reprendre la tâche là où elle s'est arrêtée. Il ne renvoie pas votre dernier message.

749* **Après la mise en veille de votre ordinateur** : si elle a duré plus d'environ 30 minutes et que la limite s'est réinitialisée pendant la mise en veille, la ligne affiche `Your usage limit has reset · press enter to continue`. Appuyez sur `Entrée` pour continuer. Après une mise en veille plus courte, Claude Code continue automatiquement.752* **Après la mise en veille de votre ordinateur** : si elle a duré plus d'environ 30 minutes et que la limite s'est réinitialisée pendant la mise en veille, la première ligne indique `Your usage limit has reset` et la seconde `Press enter to continue`. Appuyez sur `Entrée` pour continuer. Après une mise en veille plus courte, ou qui s'est terminée avant la réinitialisation, Claude Code continue automatiquement.

750* **Tôt** : quand vous terminez l'ajout de [crédits d'utilisation](/docs/fr/costs#add-usage-credits-to-your-subscription) avec `/usage-credits`, vous reconnectez après `/upgrade`, ou changez de modèle avec `/model` pendant l'attente, Claude Code vérifie si l'utilisation est à nouveau disponible et continue immédiatement si c'est le cas. Il ne vérifie pas après une mise à niveau ou un achat que vous effectuez dans un navigateur de votre côté. Sous [`opusplan`](/docs/fr/model-config#opusplan-model-setting) et d'autres paramètres de modèle qui exécutent le mode plan sur un modèle différent, Claude Code attend la réinitialisation à la place.753* **Tôt** : quand vous terminez l'ajout de [crédits d'utilisation](/docs/fr/costs#add-usage-credits-to-your-subscription) avec `/usage-credits`, vous reconnectez après `/upgrade`, ou changez de modèle avec `/model` pendant l'attente, Claude Code vérifie si l'utilisation est à nouveau disponible et continue immédiatement si c'est le cas. Il ne vérifie pas après une mise à niveau ou un achat que vous effectuez dans un navigateur de votre côté. Sous [`opusplan`](/docs/fr/model-config#opusplan-model-setting) et d'autres paramètres de modèle qui exécutent le mode plan sur un modèle différent, Claude Code attend la réinitialisation à la place.

751 754 

752La tâche continuée s'exécute comme n'importe quel autre tour. Claude Code demande toujours les [permissions](/docs/fr/permissions) comme d'habitude, de sorte que la tâche peut s'arrêter sur une invite pendant que vous êtes absent. S'il atteint à nouveau la limite, Claude Code réarme l'attente automatiquement au maximum deux fois de suite, puis s'arrête et affiche `Automatic continue stopped after repeated usage-limit hits · /rate-limit-options to try again`.755La tâche continuée s'exécute comme n'importe quel autre tour. Claude Code demande toujours les [permissions](/docs/fr/permissions) comme d'habitude, de sorte que la tâche peut s'arrêter sur une invite pendant que vous êtes absent. S'il atteint à nouveau la limite, Claude Code réarme l'attente automatiquement au maximum deux fois de suite, puis s'arrête et affiche `Automatic continue stopped after repeated usage-limit hits · /rate-limit-options to try again`.


755 Annuler l'attente758 Annuler l'attente

756</h3>759</h3>

757 760 

758Appuyez sur `Échap` à une invite vide, ou `Ctrl+C`, pendant que la ligne s'affiche, ou exécutez [`/rate-limit-options`](/docs/fr/commands#all-commands) et choisissez **Don't continue automatically**. Claude Code confirme avec une ligne qui commence par `Automatic continue cancelled`.761Appuyez sur `Échap` à une invite vide, ou `Ctrl+C`, pendant que les lignes s'affichent, ou exécutez [`/rate-limit-options`](/docs/fr/commands#all-commands) et choisissez **Don't continue automatically**. Claude Code confirme avec une ligne qui commence par `Automatic continue cancelled`.

759 762 

760Après une annulation, rien ne continue jusqu'à ce que vous envoyiez une invite ou que vous choisissiez la ligne qui commence par **Wait here, then continue automatically** dans `/rate-limit-options` à nouveau. Claude Code ne démarre pas une attente de son propre chef pour cette fenêtre de réinitialisation ; la prochaine fenêtre de réinitialisation recommence à zéro.763Après une annulation, rien ne continue jusqu'à ce que vous envoyiez une invite ou que vous choisissiez la ligne qui commence par **Wait here, then continue automatically** dans `/rate-limit-options` à nouveau. Claude Code ne démarre pas une attente de son propre chef pour cette fenêtre de réinitialisation ; la prochaine fenêtre de réinitialisation recommence à zéro.

761 764 

762L'attente se termine également sans continuer la tâche dans ces cas :765L'attente se termine également sans continuer la tâche dans ces cas :

763 766 

764* **Vous envoyez une invite** : Claude Code exécute votre invite au lieu d'attendre.767* **Vous envoyez un prompt** : Claude Code envoie votre prompt au lieu d'attendre. Si votre prompt atteint également la limite, il reste dans la conversation et Claude Code redémarre l'attente.

765* **Vous quittez Claude Code** : l'attente ne redémarre pas quand vous reprenez la session.768* **Vous quittez Claude Code** : l'attente ne redémarre pas quand vous reprenez la session.

766* **La conversation change de mains** : vous changez de compte avec `/login`, effacez ou rembobinez la conversation, `/resume` une autre session, en tirez une avec `/teleport`, relancez avec `/tui`, ou remettez la session à Claude Desktop, une session en arrière-plan, ou le cloud.769* **La conversation change de mains** : vous changez de compte avec `/login`, effacez ou rembobinez la conversation, `/resume` une autre session, en tirez une avec `/teleport`, relancez avec `/tui`, ou remettez la session à Claude Desktop, une session en arrière-plan, ou le cloud.

767* **Le paramètre s'éteint, ou la réinitialisation dépasse 24 heures** : cela termine uniquement une attente que Claude Code a démarrée de son propre chef. Une attente que vous avez choisie dans `/rate-limit-options` continue à compter à rebours.770* **Le paramètre s'éteint, ou la réinitialisation dépasse 24 heures** : cela termine uniquement une attente que Claude Code a démarrée de son propre chef. Une attente que vous avez choisie dans `/rate-limit-options` continue à compter à rebours.

Details

204 204 

205Dans un grand dépôt de code, trouver où un symbole est défini ou utilisé peut coûter de nombreuses lectures de fichiers et appels grep. Les [plugins d'intelligence du code](/docs/fr/plugins/code-intelligence) connectent Claude à un serveur de langage afin qu'il puisse sauter aux définitions, trouver des références et afficher les erreurs de type directement au lieu de scanner l'arbre.205Dans un grand dépôt de code, trouver où un symbole est défini ou utilisé peut coûter de nombreuses lectures de fichiers et appels grep. Les [plugins d'intelligence du code](/docs/fr/plugins/code-intelligence) connectent Claude à un serveur de langage afin qu'il puisse sauter aux définitions, trouver des références et afficher les erreurs de type directement au lieu de scanner l'arbre.

206 206 

207La marketplace officielle a des plugins pour TypeScript, Python, Go, Rust et d'autres langages courants. Exécutez la commande ci-dessous à l'intérieur d'une session Claude Code pour installer le plugin TypeScript :207La marketplace officielle a des plugins pour TypeScript, Python, Go, Rust et d'autres langages courants. Dans l'extension VS Code ou l'application de bureau, installez-en un en suivant [Installer un plugin](/docs/fr/plugins/install#install-a-plugin). Dans un terminal, démarrez Claude Code en exécutant `claude`, puis saisissez ceci dans son invite pour installer le plugin TypeScript :

208 208 

209```shell theme={null}209```shell theme={null}

210/plugin install typescript-lsp@claude-plugins-official210/plugin install typescript-lsp@claude-plugins-official

Details

73 73 

74Diffusez les réponses d'inférence en continu. Claude Code lit le flux au fur et à mesure de son arrivée, donc si votre passerelle met en mémoire tampon les réponses complètes avant de les relayer, Claude Code s'arrête.74Diffusez les réponses d'inférence en continu. Claude Code lit le flux au fur et à mesure de son arrivée, donc si votre passerelle met en mémoire tampon les réponses complètes avant de les relayer, Claude Code s'arrête.

75 75 

76Livrez la séquence d'événements complète de chaque réponse sans supprimer, dupliquer ou réordonner les événements. Quand un événement référence un bloc de contenu dont le `content_block_start` n'est jamais arrivé, ou un bloc dont le `content_block_stop` est déjà arrivé, Claude Code arrête de lire le flux à cet événement au lieu de l'appliquer, donc un `content_block_stop` dupliqué ne peut pas exécuter le même appel d'outil deux fois. [La réponse ci-dessus peut être incomplète](/docs/fr/errors#the-response-above-may-be-incomplete) décrit ce que l'utilisateur voit, selon les variantes `Part of the response never arrived` et `The response stream was malformed`.76Livrez la séquence d'événements complète de chaque réponse sans supprimer, dupliquer ou réordonner les événements. Quand un garde-fou Amazon Bedrock bloque une réponse, transférez les événements qu'il envoie sans modification, même quand ils référencent un bloc de contenu dont le `content_block_stop` est déjà arrivé. [AWS Guardrails](/docs/fr/amazon-bedrock#aws-guardrails) décrit comment cette réponse se termine. Quand tout autre événement référence un bloc de contenu dont le `content_block_start` n'est jamais arrivé, ou un bloc dont le `content_block_stop` est déjà arrivé, Claude Code arrête de lire le flux à cet événement au lieu de l'appliquer, donc un `content_block_stop` dupliqué ne peut pas exécuter le même appel d'outil deux fois. [La réponse ci-dessus peut être incomplète](/docs/fr/errors#the-response-above-may-be-incomplete) décrit ce que l'utilisateur voit, selon les variantes `Part of the response never arrived` et `The response stream was malformed`.

77 77 

78Relayez chaque réponse via ses événements finaux `message_delta` et `message_stop` avant de terminer le corps. Un corps qui se termine après un `message_delta` portant un `stop_reason`, sans bloc de contenu encore ouvert et sans événement de bloc de contenu après cette trame, compte comme complet même quand `message_stop` est manquant. Un corps que votre passerelle termine proprement plus tôt, une fois qu'un bloc de contenu a commencé, est traité de la même manière qu'une connexion interrompue : [Tentatives automatiques](/docs/fr/errors#automatic-retries) indique quand Claude Code réédite la requête, et [La réponse ci-dessus peut être incomplète](/docs/fr/errors#the-response-above-may-be-incomplete) couvre ce qu'il conserve une fois que le contenu visible est arrivé. Claude Code conserve le `stop_reason` qu'un `message_delta` livre, donc un `message_delta` ultérieur contenant uniquement l'utilisation dont le `delta` a `stop_reason: null` ou aucune clé `stop_reason` ne l'efface pas.78Relayez chaque réponse via ses événements finaux `message_delta` et `message_stop` avant de terminer le corps. Un corps qui se termine après un `message_delta` portant un `stop_reason`, sans bloc de contenu encore ouvert et sans événement de bloc de contenu après cette trame, compte comme complet même quand `message_stop` est manquant. Un corps que votre passerelle termine proprement plus tôt, une fois qu'un bloc de contenu a commencé, est traité de la même manière qu'une connexion interrompue : [Tentatives automatiques](/docs/fr/errors#automatic-retries) indique quand Claude Code réédite la requête, et [La réponse ci-dessus peut être incomplète](/docs/fr/errors#the-response-above-may-be-incomplete) couvre ce qu'il conserve une fois que le contenu visible est arrivé. Claude Code conserve le `stop_reason` qu'un `message_delta` livre, donc un `message_delta` ultérieur contenant uniquement l'utilisation dont le `delta` a `stop_reason: null` ou aucune clé `stop_reason` ne l'efface pas.

79 79 


242| Fonctionnalité | Paire en-tête et corps | Symptôme lorsque cassé | Correction |242| Fonctionnalité | Paire en-tête et corps | Symptôme lorsque cassé | Correction |

243| :- | :- | :- | :- |243| :- | :- | :- | :- |

244| [Raisonnement adaptatif](/docs/fr/model-config#adjust-effort-level) | Pas d'en-tête bêta. Claude Code envoie `thinking: {"type": "adaptive"}` pour Claude 4.6 et versions ultérieures, et traite les noms de modèles qu'il ne reconnaît pas, tels que les alias de passerelle, comme des modèles actuels qui reçoivent le champ | `400` nommant le champ `thinking` ou la balise `adaptive` lorsque la version du modèle amont ne l'accepte pas | Mettez à niveau l'amont. Sur Opus 4.6 et Sonnet 4.6, les développeurs peuvent définir `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` à la place |244| [Raisonnement adaptatif](/docs/fr/model-config#adjust-effort-level) | Pas d'en-tête bêta. Claude Code envoie `thinking: {"type": "adaptive"}` pour Claude 4.6 et versions ultérieures, et traite les noms de modèles qu'il ne reconnaît pas, tels que les alias de passerelle, comme des modèles actuels qui reçoivent le champ | `400` nommant le champ `thinking` ou la balise `adaptive` lorsque la version du modèle amont ne l'accepte pas | Mettez à niveau l'amont. Sur Opus 4.6 et Sonnet 4.6, les développeurs peuvent définir `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` à la place |

245| [Gestion du contexte](https://platform.claude.com/docs/en/build-with-claude/context-editing) | L'en-tête bêta de gestion du contexte s'associe au champ de corps `context_management` | `400` avec `Extra inputs are not permitted`. Courant lorsqu'une passerelle accepte les requêtes au format Anthropic mais les transmet à Amazon Bedrock | Transmettez les deux, ou [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](/docs/fr/env-vars) |245| [Gestion du contexte](https://platform.claude.com/docs/en/build-with-claude/context-editing) | L'en-tête bêta de gestion du contexte s'associe au champ de corps `context_management` | `400` avec `Extra inputs are not permitted`. Courant lorsqu'une passerelle accepte les requêtes au format Anthropic mais les transmet à Amazon Bedrock | Transmettez les deux, ou [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities) |

246| [Contexte étendu](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model) et [pensée entrelacée](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) | En-têtes bêta uniquement, pas de champ de corps | Silencieusement indisponible lorsque l'en-tête est supprimé ; l'amont ne voit jamais la demande de capacité | Transmettez `anthropic-beta` verbatim |246| [Contexte étendu](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model) et [pensée entrelacée](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) | En-têtes bêta uniquement, pas de champ de corps | Silencieusement indisponible lorsque l'en-tête est supprimé ; l'amont ne voit jamais la demande de capacité | Transmettez `anthropic-beta` verbatim |

247| 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) |247| 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) |

248| [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 |248| [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, ou demandez aux développeurs de définir [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities), qui supprime les paramètres de format et de budget de tâche mais pas l'effort |

249| [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 |249| [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 |

250| [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 |250| [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 |

251 251 


260* 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 conversation260* 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

261* Lorsque l'amont rejette une [signature de pensée](https://platform.claude.com/docs/en/build-with-claude/extended-thinking), y compris avec un `400` dont le message dit que le bloc est `bound to a different conversation`, Claude Code supprime les blocs de pensée antérieurs de la requête, réessaie, et les garde hors de chaque requête ultérieure. Les nouvelles réponses incluent toujours la pensée261* Lorsque l'amont rejette une [signature de pensée](https://platform.claude.com/docs/en/build-with-claude/extended-thinking), y compris avec un `400` dont le message dit que le bloc est `bound to a different conversation`, Claude Code supprime les blocs de pensée antérieurs de la requête, réessaie, et les garde hors de chaque requête ultérieure. Les nouvelles réponses incluent toujours la pensée

262* Lorsque la passerelle ou son amont rejette l'entrée de l'[outil conseiller](/docs/fr/advisor) dans `tools` comme un type d'outil non reconnu, Claude Code réessaie la requête une fois sans cette entrée et sa valeur `anthropic-beta`. Les requêtes ultérieures à cette URL de base laissent le conseiller de côté jusqu'à ce que Claude Code se termine, et `/advisor` n'est pas disponible pour le développeur pendant ce temps. Claude Code reconnaît ce rejet par une réponse `400` ou `422` dont le message nomme le type d'outil après `Input tag`, comme `Input tag 'advisor_20260301'`. Avant v2.1.280, Claude Code ne réessayait pas ce rejet262* Lorsque la passerelle ou son amont rejette l'entrée de l'[outil conseiller](/docs/fr/advisor) dans `tools` comme un type d'outil non reconnu, Claude Code réessaie la requête une fois sans cette entrée et sa valeur `anthropic-beta`. Les requêtes ultérieures à cette URL de base laissent le conseiller de côté jusqu'à ce que Claude Code se termine, et `/advisor` n'est pas disponible pour le développeur pendant ce temps. Claude Code reconnaît ce rejet par une réponse `400` ou `422` dont le message nomme le type d'outil après `Input tag`, comme `Input tag 'advisor_20260301'`. Avant v2.1.280, Claude Code ne réessayait pas ce rejet

263* Lorsque l'amont rejette `output_config.effort`, Claude Code réessaie la requête sans l'effort et le laisse de côté dans les requêtes ultérieures à ce modèle jusqu'à ce que Claude Code se termine. Claude Code reconnaît ce rejet par un `400` dont le message nomme `output_config.effort` avec `Extra inputs are not permitted`, ou indique que le modèle ne prend pas en charge le paramètre d'effort

263* 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éveloppeur264* 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

264 265 

265Le rejet `bound to a different conversation` provient de la vérification de [pensée préservée](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking) de l'API, qui échoue lorsque le contenu `system`, `tools`, ou `messages` antérieurs diffère de la requête qui a produit la pensée. Une passerelle qui réécrit l'un de ces contenus peut causer le rejet lui-même ; [Bibliothèques, proxies et passerelles](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#libraries-proxies-gateways) couvre ce qu'il faut transmettre inchangé.266Le rejet `bound to a different conversation` provient de la vérification de [pensée préservée](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking) de l'API, qui échoue lorsque le contenu `system`, `tools`, ou `messages` antérieurs diffère de la requête qui a produit la pensée. Une passerelle qui réécrit l'un de ces contenus peut causer le rejet lui-même ; [Bibliothèques, proxies et passerelles](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#libraries-proxies-gateways) couvre ce qu'il faut transmettre inchangé.


270 Désactiver les capacités de pré-version271 Désactiver les capacités de pré-version

271</h3>272</h3>

272 273 

273`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` empêche Claude Code d'envoyer les capacités de pré-version et leurs champs de corps, y compris la gestion du contexte et les champs d'outil bêta. La variable n'affecte pas le raisonnement adaptatif, qui est sélectionné par modèle plutôt que par bêta. Elle ne supprime jamais la capacité OAuth que l'authentification par abonnement exige.274Lorsque votre passerelle ou son amont rejette les valeurs `anthropic-beta` de pré-version ou les champs de corps qui leur sont associés, et que vous ne pouvez pas transmettre les deux moitiés, demandez aux développeurs de définir `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`. Avec cette variable définie, Claude Code cesse d'envoyer les capacités de pré-version et les valeurs `anthropic-beta` qui leur sont associées, notamment :

275 

276* La gestion du contexte et son champ de corps `context_management`

277* Les champs de schéma d'outil bêta, tels que `strict` et `defer_loading`. Les champs d'outil standard `name`, `description`, `input_schema` et `cache_control` sont conservés

278* Le champ de sortie structurée `output_config.format`. Nécessite Claude Code v2.1.287 ou ultérieur

279* Le champ `output_config.task_budget`

280* La [recherche d'outils MCP](/docs/fr/mcp#scale-with-mcp-tool-search), de sorte que chaque outil MCP se charge dès le départ, sauf si votre organisation la maintient activée via les paramètres gérés

281 

282La variable ne supprime pas toutes les valeurs `anthropic-beta`. Ce qu'elle laisse en place comprend :

283 

284* Les valeurs `anthropic-beta` pour le contexte étendu, la réflexion entrelacée et l'effort, que les fournisseurs de cloud acceptent également

285* Le champ `output_config.effort`. [Nouvelle tentative automatique et transmission d'erreur](#automatic-retry-and-error-forwarding) couvre le cas d'un amont qui le rejette

286* Le champ `thinking` du raisonnement adaptatif, qui n'a pas d'en-tête bêta

287* La valeur `anthropic-beta` OAuth que l'authentification par abonnement exige

288* Les valeurs d'en-tête et champs de corps que les développeurs ajoutent eux-mêmes via [`ANTHROPIC_BETAS`](/docs/fr/env-vars) ou [`CLAUDE_CODE_EXTRA_BODY`](/docs/fr/env-vars)

274 289 

275Lorsqu'une plateforme hôte qui intègre Claude Code définit [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/fr/env-vars), `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` n'empêche pas les sessions en mode auto sur Amazon Bedrock, Agent Platform de Google Cloud, Microsoft Foundry, ou une [passerelle des applications Claude](/docs/fr/claude-apps-gateway) de demander au serveur un [examen du classificateur](/docs/fr/permission-modes#server-side-classifier-review). Cet examen ajoute une valeur `anthropic-beta` et un champ de requête `safeguards`. Définissez `CLAUDE_CODE_AUTO_MODE_SERVER=0` pour l'arrêter là.290Lorsqu'une plateforme hôte qui intègre Claude Code définit [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/fr/env-vars), `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` n'empêche pas les sessions en mode auto sur Amazon Bedrock, Agent Platform de Google Cloud, Microsoft Foundry, ou une [passerelle des applications Claude](/docs/fr/claude-apps-gateway) de demander au serveur un [examen du classificateur](/docs/fr/permission-modes#server-side-classifier-review). Cet examen ajoute une valeur `anthropic-beta` et un champ de requête `safeguards`. Définissez `CLAUDE_CODE_AUTO_MODE_SERVER=0` pour l'arrêter là.

276 291 

managed-mcp.md +1 −0

Details

532| `managed-mcp.json` est présent et un utilisateur qui pourrait autrement exécuter Claude dans Chrome exécute `claude --chrome` | Claude Code se ferme au démarrage avec `Claude in Chrome is blocked by your organization's managed MCP configuration (managed-mcp.json). An administrator can allow it with allowClaudeInChromeWithManagedMcp in device policy.` |532| `managed-mcp.json` est présent et un utilisateur qui pourrait autrement exécuter Claude dans Chrome exécute `claude --chrome` | Claude Code se ferme au démarrage avec `Claude in Chrome is blocked by your organization's managed MCP configuration (managed-mcp.json). An administrator can allow it with allowClaudeInChromeWithManagedMcp in device policy.` |

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

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

535| [`strictPluginOnlyCustomization`](/docs/fr/settings-reference#strictpluginonlycustomization) est `true` ou inclut `mcp`, et l'utilisateur exécute `claude mcp add` | [`Cannot add MCP server: your organization's managed settings allow only MCP servers that plugins provide`](/docs/fr/errors#cannot-add-mcp-server-when-managed-settings-allow-only-plugin-servers) |

535| 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.` |536| 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.` |

536| Un serveur précédemment configuré est maintenant bloqué par la politique | Le serveur disparaît de `/mcp` et `claude mcp list` |537| Un serveur précédemment configuré est maintenant bloqué par la politique | Le serveur disparaît de `/mcp` et `claude mcp list` |

537| 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) |538| 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) |

Details

470| [`wslInheritsWindowsSettings`](/docs/fr/settings-reference#wslinheritswindowssettings) | Lorsqu'elle est définie dans le registre HKLM ou un fichier sous `C:\Program Files\ClaudeCode`, faire en sorte que WSL lise la chaîne de politique Windows, et lise `/etc/claude-code` uniquement lorsque [aucun document d'administration Windows n'est présent](#present-admin-documents) ; l'entrée donne l'ordre |470| [`wslInheritsWindowsSettings`](/docs/fr/settings-reference#wslinheritswindowssettings) | Lorsqu'elle est définie dans le registre HKLM ou un fichier sous `C:\Program Files\ClaudeCode`, faire en sorte que WSL lise la chaîne de politique Windows, et lise `/etc/claude-code` uniquement lorsque [aucun document d'administration Windows n'est présent](#present-admin-documents) ; l'entrée donne l'ordre |

471 471 

472<Note>472<Note>

473 Sur les plans Team et Enterprise, un propriétaire active ou désactive [Remote Control](/docs/fr/remote-control) et les [sessions cloud](/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 également être désactivé par appareil avec le paramètre [`disableRemoteControl`](/docs/fr/settings-reference#disableremotecontrol). Les sessions cloud n'ont pas de clé de paramètres gérés par appareil.473 Sur les plans Team et Enterprise, un propriétaire active ou désactive [Remote Control](/docs/fr/remote-control) et les [sessions cloud](/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). Lorsqu'un propriétaire désactive Remote Control, les sessions déjà connectées qui exécutent Claude Code v2.1.286 ou ultérieur se déconnectent également. Chacune se déconnecte la prochaine fois qu'elle actualise la politique de votre organisation, environ une fois par heure. Pour savoir ce qui se passe dans ces sessions, voir [`Remote Control was turned off by your organization's policy`](/docs/fr/remote-control#remote-control-was-turned-off-by-your-organizations-policy).

474 

475 Remote Control peut également être désactivé par appareil avec le paramètre [`disableRemoteControl`](/docs/fr/settings-reference#disableremotecontrol). Les sessions cloud n'ont pas de clé de paramètres gérés par appareil.

474 476 

475 Pour vérifier si ces paramètres d'organisation ont atteint une machine donnée, exécutez `claude doctor` là-bas et lisez la ligne `Organization policy`, qui indique où Claude Code a chargé la politique ou pourquoi elle n'a pas été chargée. Nécessite Claude Code v2.1.261 ou ultérieur. Dans une session en cours, `/status` affiche la même ligne lorsque la politique n'a pas été chargée.477 Pour vérifier si ces paramètres d'organisation ont atteint une machine donnée, exécutez `claude doctor` là-bas et lisez la ligne `Organization policy`, qui indique où Claude Code a chargé la politique ou pourquoi elle n'a pas été chargée. Nécessite Claude Code v2.1.261 ou ultérieur. Dans une session en cours, `/status` affiche la même ligne lorsque la politique n'a pas été chargée.

476</Note>478</Note>

mcp.md +7 −1

Details

41 41 

42<Steps>42<Steps>

43 <Step title="Installer le plugin">43 <Step title="Installer le plugin">

44 Dans une session Claude Code, exécutez :44 Dans l'extension VS Code ou l'application de bureau, suivez [Installer un plugin](/docs/fr/plugins/install#install-a-plugin) au lieu de cette étape. Dans un terminal, démarrez Claude Code en exécutant `claude`, puis saisissez ceci à son invite :

45 45 

46 ```46 ```

47 /plugin install mcp-server-dev@claude-plugins-official47 /plugin install mcp-server-dev@claude-plugins-official


430 430 

431Après qu'un serveur se connecte, Claude Code lui envoie des demandes de découverte de capacités telles que `tools/list`, `prompts/list`, et `resources/list`. Claude Code réessaie ces demandes jusqu'à trois fois avec un backoff court après une erreur réseau ou serveur transitoire. Il ne réessaie pas les erreurs d'authentification, les réponses 4xx, ou les délais d'expiration de demande.431Après qu'un serveur se connecte, Claude Code lui envoie des demandes de découverte de capacités telles que `tools/list`, `prompts/list`, et `resources/list`. Claude Code réessaie ces demandes jusqu'à trois fois avec un backoff court après une erreur réseau ou serveur transitoire. Il ne réessaie pas les erreurs d'authentification, les réponses 4xx, ou les délais d'expiration de demande.

432 432 

433<h4 id="retry-failed-servers-yourself">

434 Réessayer vous-même les serveurs en échec

435</h4>

436 

437Pour réessayer tous les serveurs qui ont échoué ou qui nécessitent une authentification, exécutez `/mcp reconnect all`. Dans le terminal interactif, cela nécessite Claude Code v2.1.284 ou ultérieur, et les versions antérieures y affichent `MCP server "all" not found`.

438 

433<h4 id="how-claude-learns-that-a-server-failed">439<h4 id="how-claude-learns-that-a-server-failed">

434 Comment Claude apprend qu'un serveur a échoué440 Comment Claude apprend qu'un serveur a échoué

435</h4>441</h4>

memory.md +39 −37

Details

41 Fichiers CLAUDE.md41 Fichiers CLAUDE.md

42</h2>42</h2>

43 43 

44Les fichiers CLAUDE.md sont des fichiers markdown qui donnent à Claude des instructions persistantes pour un projet, votre flux de travail personnel ou toute votre organisation. Vous écrivez ces fichiers en texte brut ; Claude les lit au début de chaque session. Si votre référentiel utilise `AGENTS.md` à la place, consultez [AGENTS.md](#agents-md).44Les fichiers CLAUDE.md sont des fichiers markdown qui donnent à Claude des instructions persistantes pour un projet, votre workflow personnel ou toute votre organisation. Vous écrivez ces fichiers en texte brut ; Claude les lit au début de chaque session. Si votre dépôt utilise `AGENTS.md` à la place, consultez [AGENTS.md](#agents-md).

45 45 

46<h3 id="when-to-add-to-claude-md">46<h3 id="when-to-add-to-claude-md">

47 Quand ajouter à CLAUDE.md47 Quand ajouter à CLAUDE.md


54* Vous tapez la même correction ou clarification dans le chat que vous aviez tapée la session précédente54* Vous tapez la même correction ou clarification dans le chat que vous aviez tapée la session précédente

55* Un nouveau coéquipier aurait besoin du même contexte pour être productif55* Un nouveau coéquipier aurait besoin du même contexte pour être productif

56 56 

57Limitez-vous aux faits que Claude doit retenir à chaque session : commandes de compilation, conventions, disposition du projet, règles « toujours faire X ». Si une entrée est une procédure multi-étapes ou ne concerne qu'une partie de la base de code, déplacez-la vers une [compétence](/docs/fr/skills) ou une [règle scoped par chemin](#organize-rules-with-claude/rules/) à la place. L'[aperçu des extensions](/docs/fr/features-overview#build-your-setup-over-time) couvre quand utiliser chaque mécanisme.57Limitez-vous aux faits que Claude doit retenir à chaque session : commandes de build, conventions, disposition du projet, règles « toujours faire X ». Si une entrée est une procédure multi-étapes ou ne concerne qu'une partie de la base de code, déplacez-la vers un [skill](/docs/fr/skills) ou une [règle limitée à des chemins](#organize-rules-with-claude/rules/) à la place. L'[aperçu des extensions](/docs/fr/features-overview#build-your-setup-over-time) couvre quand utiliser chaque mécanisme.

58 58 

59<h3 id="choose-where-to-put-claude-md-files">59<h3 id="choose-where-to-put-claude-md-files">

60 Choisir où placer les fichiers CLAUDE.md60 Choisir où placer les fichiers CLAUDE.md


66| - | - | - | - | - |66| - | - | - | - | - |

67| **Politique gérée** | • macOS : `/Library/Application Support/ClaudeCode/CLAUDE.md`<br />• Linux et WSL : `/etc/claude-code/CLAUDE.md`<br />• Windows : `C:\Program Files\ClaudeCode\CLAUDE.md` | Instructions à l'échelle de l'organisation gérées par l'informatique/DevOps | Normes de codage de l'entreprise, politiques de sécurité, exigences de conformité | Tous les utilisateurs de l'organisation |67| **Politique gérée** | • macOS : `/Library/Application Support/ClaudeCode/CLAUDE.md`<br />• Linux et WSL : `/etc/claude-code/CLAUDE.md`<br />• Windows : `C:\Program Files\ClaudeCode\CLAUDE.md` | Instructions à l'échelle de l'organisation gérées par l'informatique/DevOps | Normes de codage de l'entreprise, politiques de sécurité, exigences de conformité | Tous les utilisateurs de l'organisation |

68| **Instructions utilisateur** | `~/.claude/CLAUDE.md` | Préférences personnelles pour tous les projets | Préférences de style de code, raccourcis d'outils personnels | Juste vous (tous les projets) |68| **Instructions utilisateur** | `~/.claude/CLAUDE.md` | Préférences personnelles pour tous les projets | Préférences de style de code, raccourcis d'outils personnels | Juste vous (tous les projets) |

69| **Instructions de projet** | `./CLAUDE.md` ou `./.claude/CLAUDE.md`. Consultez [AGENTS.md](#agents-md) pour savoir quand `./AGENTS.md` se charge à la place ou aux côtés de ceux-ci | Instructions partagées par l'équipe pour le projet | Architecture du projet, normes de codage, flux de travail courants | Membres de l'équipe via le contrôle de source |69| **Instructions de projet** | `./CLAUDE.md` ou `./.claude/CLAUDE.md`. Consultez [AGENTS.md](#agents-md) pour savoir quand `./AGENTS.md` se charge à la place ou aux côtés de ceux-ci | Instructions partagées par l'équipe pour le projet | Architecture du projet, normes de codage, workflows courants | Membres de l'équipe via le contrôle de source |

70| **Instructions locales** | `./CLAUDE.local.md` | Préférences personnelles spécifiques au projet ; ajouter à `.gitignore` | Vos URL de sandbox, données de test préférées | Juste vous (projet actuel) |70| **Instructions locales** | `./CLAUDE.local.md` | Préférences personnelles spécifiques au projet ; ajouter à `.gitignore` | Vos URL de sandbox, données de test préférées | Juste vous (projet actuel) |

71 71 

72Les fichiers CLAUDE.md et CLAUDE.local.md dans la hiérarchie de répertoires au-dessus du répertoire de travail sont chargés au lancement. Les fichiers dans les sous-répertoires se chargent à la demande quand Claude lit les fichiers de ces répertoires. Consultez [Comment les fichiers CLAUDE.md se chargent](#how-claude-md-files-load) pour l'ordre de résolution complet.72Les fichiers CLAUDE.md et CLAUDE.local.md dans la hiérarchie de répertoires au-dessus du répertoire de travail sont chargés au lancement. Les fichiers dans les sous-répertoires se chargent à la demande quand Claude lit les fichiers de ces répertoires. Consultez [Comment les fichiers CLAUDE.md se chargent](#how-claude-md-files-load) pour l'ordre de résolution complet.


77 Configurer un CLAUDE.md de projet77 Configurer un CLAUDE.md de projet

78</h3>78</h3>

79 79 

80Un CLAUDE.md de projet peut être stocké dans `./CLAUDE.md` ou `./.claude/CLAUDE.md`. Créez ce fichier et ajoutez des instructions qui s'appliquent à quiconque travaille sur le projet : commandes de compilation et de test, normes de codage, décisions architecturales, conventions de nommage et flux de travail courants. Ces instructions sont partagées avec votre équipe via le contrôle de source, donc concentrez-vous sur les normes au niveau du projet plutôt que sur les préférences personnelles. Pour confirmer que le fichier a été chargé, exécutez `/context` dans une session et vérifiez la liste sous **Fichiers de mémoire**.80Un CLAUDE.md de projet peut être stocké dans `./CLAUDE.md` ou `./.claude/CLAUDE.md`. Créez ce fichier et ajoutez des instructions qui s'appliquent à quiconque travaille sur le projet : commandes de build et de test, normes de codage, décisions architecturales, conventions de nommage et workflows courants. Ces instructions sont partagées avec votre équipe via le contrôle de source, donc concentrez-vous sur les normes au niveau du projet plutôt que sur les préférences personnelles. Pour confirmer que le fichier a été chargé, exécutez `/context` dans une session et vérifiez la liste sous **Memory files**.

81 81 

82<Tip>82<Tip>

83 Exécutez `/init` pour générer automatiquement un CLAUDE.md de démarrage. Claude analyse votre base de code et crée un fichier avec les commandes de compilation, les instructions de test et les conventions de projet qu'il découvre. Si un CLAUDE.md existe déjà, `/init` suggère des améliorations plutôt que de le remplacer. Affinez-le à partir de là avec des instructions que Claude ne découvrirait pas de lui-même.83 Exécutez `/init` pour générer automatiquement un CLAUDE.md de démarrage. Claude analyse votre base de code et crée un fichier avec les commandes de build, les instructions de test et les conventions de projet qu'il découvre. Si un CLAUDE.md existe déjà, `/init` suggère des améliorations plutôt que de le remplacer. Affinez-le à partir de là avec des instructions que Claude ne découvrirait pas de lui-même.

84 84 

85 Pour un flux interactif multi-phases à la place, définissez la variable d'environnement `CLAUDE_CODE_NEW_INIT` à `1` avant d'exécuter `/init`. Définissez-la dans votre shell ou dans le bloc `env` d'un fichier de paramètres, comme indiqué dans [Définir les variables d'environnement](/docs/fr/env-vars#set-environment-variables). Avec elle définie, `/init` demande quels artefacts configurer : fichiers CLAUDE.md, compétences et hooks. Il explore ensuite votre base de code avec un sous-agent, comble les lacunes via des questions de suivi et présente une proposition vérifiable avant d'écrire des fichiers. La variable ne change que la façon dont `/init` s'exécute, de sorte que vous pouvez la laisser définie.85 Pour un flux interactif multi-phases à la place, définissez la variable d'environnement `CLAUDE_CODE_NEW_INIT` à `1` avant d'exécuter `/init`. Définissez-la dans votre shell ou dans le bloc `env` d'un fichier de paramètres, comme indiqué dans [Définir les variables d'environnement](/docs/fr/env-vars#set-environment-variables). Avec elle définie, `/init` demande quels artefacts configurer : fichiers CLAUDE.md, skills et hooks. Il explore ensuite votre base de code avec un sous-agent, comble les lacunes via des questions de suivi et présente une proposition vérifiable avant d'écrire des fichiers. La variable ne change que la façon dont `/init` s'exécute, de sorte que vous pouvez la laisser définie.

86</Tip>86</Tip>

87 87 

88<h3 id="write-effective-instructions">88<h3 id="write-effective-instructions">


92Claude traite les fichiers CLAUDE.md comme du contexte, pas comme une configuration appliquée, donc la façon dont vous écrivez les instructions affecte la fiabilité avec laquelle Claude les suit. Écrivez des instructions suffisamment concrètes pour être vérifiables :92Claude traite les fichiers CLAUDE.md comme du contexte, pas comme une configuration appliquée, donc la façon dont vous écrivez les instructions affecte la fiabilité avec laquelle Claude les suit. Écrivez des instructions suffisamment concrètes pour être vérifiables :

93 93 

94* « Utiliser l'indentation à 2 espaces » au lieu de « Formater le code correctement »94* « Utiliser l'indentation à 2 espaces » au lieu de « Formater le code correctement »

95* « Exécuter `npm test` avant de valider » au lieu de « Testez vos modifications »95* « Exécuter `npm test` avant de commiter » au lieu de « Testez vos modifications »

96* « Les gestionnaires d'API se trouvent dans `src/api/handlers/` » au lieu de « Gardez les fichiers organisés »96* « Les gestionnaires d'API se trouvent dans `src/api/handlers/` » au lieu de « Gardez les fichiers organisés »

97 97 

98Gardez vos fichiers courts, organisés et cohérents :98Gardez vos fichiers courts, organisés et cohérents :

99 99 

100* **Taille** : visez moins de 200 lignes par fichier CLAUDE.md. Les fichiers plus longs consomment plus de contexte et réduisent l'adhérence. Déplacez les instructions qui ne concernent qu'une partie de la base de code vers [les règles scoped par chemin](#path-specific-rules), qui ne se chargent que quand Claude travaille avec des fichiers correspondants. Les [imports](#import-additional-files) vous aident à organiser un fichier long mais ne réduisent pas son coût de contexte, car les fichiers importés se chargent également au lancement.100* **Taille** : visez moins de 200 lignes par fichier CLAUDE.md. Les fichiers plus longs consomment plus de contexte et réduisent l'adhérence. Déplacez les instructions qui ne concernent qu'une partie de la base de code vers [les règles limitées à des chemins](#path-specific-rules), qui ne se chargent que quand Claude travaille avec des fichiers correspondants. Les [imports](#import-additional-files) vous aident à organiser un fichier long mais ne réduisent pas son coût de contexte, car les fichiers importés se chargent également au lancement.

101* **Structure** : regroupez les instructions connexes sous des en-têtes markdown et des puces. Les sections organisées sont plus faciles à suivre pour Claude que les paragraphes denses.101* **Structure** : regroupez les instructions connexes sous des en-têtes markdown et des puces. Les sections organisées sont plus faciles à suivre pour Claude que les paragraphes denses.

102* **Cohérence** : si deux instructions se contredisent, Claude peut en choisir une arbitrairement. Examinez régulièrement vos fichiers CLAUDE.md, les fichiers CLAUDE.md imbriqués dans les sous-répertoires et [`.claude/rules/`](#organize-rules-with-claude/rules/) pour supprimer les instructions obsolètes ou conflictuelles. Pour que Claude les trouve pour vous, [exécutez un audit d'invite](#audit-your-instruction-files).102* **Cohérence** : si deux instructions se contredisent, Claude peut en choisir une arbitrairement. Examinez régulièrement vos fichiers CLAUDE.md, les fichiers CLAUDE.md imbriqués dans les sous-répertoires et [`.claude/rules/`](#organize-rules-with-claude/rules/) pour supprimer les instructions obsolètes ou conflictuelles. Pour que Claude les trouve pour vous, [exécutez un audit de prompt](#audit-your-instruction-files).

103 103 

104<h4 id="audit-your-instruction-files">104<h4 id="audit-your-instruction-files">

105 Auditer vos fichiers d'instructions105 Auditer vos fichiers d'instructions


107 107 

108Pour que Claude vérifie vos fichiers d'instructions pour les contenus obsolètes ou conflictuels, exécutez `/doctor prompt-audit` dans une session. Claude recherche des problèmes tels que les instructions écrites pour les anciens modèles, les références à des fichiers ou des commandes qui n'existent pas, et les fichiers qui se contredisent. Vous obtenez un rapport des résultats avec les modifications proposées, et rien dans vos fichiers ne change jusqu'à ce que vous demandiez à Claude de les appliquer.108Pour que Claude vérifie vos fichiers d'instructions pour les contenus obsolètes ou conflictuels, exécutez `/doctor prompt-audit` dans une session. Claude recherche des problèmes tels que les instructions écrites pour les anciens modèles, les références à des fichiers ou des commandes qui n'existent pas, et les fichiers qui se contredisent. Vous obtenez un rapport des résultats avec les modifications proposées, et rien dans vos fichiers ne change jusqu'à ce que vous demandiez à Claude de les appliquer.

109 109 

110Par défaut, l'audit couvre vos fichiers CLAUDE.md, CLAUDE.local.md et AGENTS.md, plus les règles, compétences, commandes, sous-agents et styles de sortie sous `.claude/` et `~/.claude/`. Pour auditer un fichier ou un répertoire à la place, passez son chemin, par exemple `/doctor prompt-audit .claude/skills/deploy`.110Par défaut, l'audit couvre vos fichiers CLAUDE.md, CLAUDE.local.md et AGENTS.md, plus les règles, skills, commandes, sous-agents et styles de sortie sous `.claude/` et `~/.claude/`. Pour auditer un fichier ou un répertoire à la place, passez son chemin, par exemple `/doctor prompt-audit .claude/skills/deploy`.

111 111 

112L'audit s'exécute via la compétence `/claude-api` groupée. Elle n'est pas disponible quand cette compétence est désactivée dans [`skillOverrides`](/docs/fr/skills#override-skill-visibility-from-settings) ou avec [`disableBundledSkills`](/docs/fr/settings-reference#disablebundledskills). `/doctor prompt-audit` nécessite Claude Code v2.1.283 ou ultérieur.112L'audit s'exécute via le skill `/claude-api` intégré. Il n'est pas disponible quand ce skill est désactivé dans [`skillOverrides`](/docs/fr/skills#override-skill-visibility-from-settings) ou avec [`disableBundledSkills`](/docs/fr/settings-reference#disablebundledskills). `/doctor prompt-audit` nécessite Claude Code v2.1.283 ou ultérieur.

113 113 

114<h3 id="import-additional-files">114<h3 id="import-additional-files">

115 Importer des fichiers supplémentaires115 Importer des fichiers supplémentaires


127 127 

128L'analyse d'import ignore les étendues de code Markdown et les blocs de code clôturés. Pour mentionner un chemin dans votre CLAUDE.md sans l'importer, enveloppez-le dans des backticks : écrire `` `@README` `` garde le texte littéral, tandis que `@README` en dehors des backticks importe le fichier.128L'analyse d'import ignore les étendues de code Markdown et les blocs de code clôturés. Pour mentionner un chemin dans votre CLAUDE.md sans l'importer, enveloppez-le dans des backticks : écrire `` `@README` `` garde le texte littéral, tandis que `@README` en dehors des backticks importe le fichier.

129 129 

130Pour intégrer un README, package.json et un guide de flux de travail, référencez-les avec la syntaxe `@` n'importe où dans votre CLAUDE.md :130Pour intégrer un README, package.json et un guide de workflow, référencez-les avec la syntaxe `@` n'importe où dans votre CLAUDE.md :

131 131 

132```text theme={null}132```text theme={null}

133Consultez @README pour un aperçu du projet et @package.json pour les commandes npm disponibles pour ce projet.133Consultez @README pour un aperçu du projet et @package.json pour les commandes npm disponibles pour ce projet.

134 134 

135# Instructions supplémentaires135# Instructions supplémentaires

136- flux de travail git @docs/git-instructions.md136- workflow git @docs/git-instructions.md

137```137```

138 138 

139Pour les préférences personnelles privées par projet qui ne doivent pas être validées dans le contrôle de source, créez un `CLAUDE.local.md` à la racine du projet. Il se charge aux côtés de `CLAUDE.md` et est traité de la même manière. Ajoutez `CLAUDE.local.md` à votre `.gitignore` pour qu'il ne soit pas validé. Avec `CLAUDE_CODE_NEW_INIT=1` défini, l'exécution de `/init` et le choix de l'option personnelle le font pour vous.139Pour les préférences personnelles privées par projet qui ne doivent pas être enregistrées dans le contrôle de source, créez un `CLAUDE.local.md` à la racine du projet. Il se charge aux côtés de `CLAUDE.md` et est traité de la même manière. Ajoutez `CLAUDE.local.md` à votre `.gitignore` pour qu'il ne fasse pas l'objet d'un commit. Avec `CLAUDE_CODE_NEW_INIT=1` défini, l'exécution de `/init` et le choix de l'option personnelle le font pour vous.

140 140 

141Si vous travaillez sur plusieurs git worktrees du même référentiel, un `CLAUDE.local.md` ignoré par git n'existe que dans le worktree où vous l'avez créé. Pour partager des instructions personnelles entre worktrees, importez plutôt un fichier de votre répertoire personnel :141Si vous travaillez sur plusieurs git worktrees du même dépôt, un `CLAUDE.local.md` ignoré par git n'existe que dans le worktree où vous l'avez créé. Pour partager des instructions personnelles entre worktrees, importez plutôt un fichier de votre répertoire personnel :

142 142 

143```text theme={null}143```text theme={null}

144# Préférences individuelles144# Préférences individuelles


148<Warning>148<Warning>

149 Un import dans un fichier de mémoire au niveau du projet est externe quand son chemin se résout en dehors de votre répertoire de travail, comme l'import du répertoire personnel ci-dessus. La première fois que Claude Code rencontre des imports externes dans un projet, il affiche une boîte de dialogue d'approbation listant les fichiers. Si vous refusez, les imports restent désactivés et la boîte de dialogue n'apparaît plus.149 Un import dans un fichier de mémoire au niveau du projet est externe quand son chemin se résout en dehors de votre répertoire de travail, comme l'import du répertoire personnel ci-dessus. La première fois que Claude Code rencontre des imports externes dans un projet, il affiche une boîte de dialogue d'approbation listant les fichiers. Si vous refusez, les imports restent désactivés et la boîte de dialogue n'apparaît plus.

150 150 

151 Claude Code affiche la boîte de dialogue pour vous protéger des fichiers que d'autres personnes valident dans un projet partagé. Les fichiers de mémoire au niveau utilisateur, tels que `~/.claude/CLAUDE.md` et `~/.claude/rules/`, sont des fichiers que vous avez écrit vous-même. Sauf dans les sessions [Cowork](https://claude.com/product/cowork) sur votre bureau, Claude Code charge leurs imports sans la boîte de dialogue et les fait confiance comme le reste de votre configuration personnelle.151 Claude Code affiche la boîte de dialogue pour vous protéger des fichiers que d'autres personnes commitent dans un projet partagé. Les fichiers de mémoire au niveau utilisateur, tels que `~/.claude/CLAUDE.md` et `~/.claude/rules/`, sont des fichiers que vous avez écrits vous-même. Sauf dans les sessions [Cowork](https://claude.com/product/cowork) sur votre bureau, Claude Code charge leurs imports sans la boîte de dialogue et leur fait confiance comme au reste de votre configuration personnelle.

152 152 

153 Dans les sessions Cowork sur votre bureau, Claude Code ignore tout import dans un fichier au niveau utilisateur qui se résout en un chemin en dehors du répertoire de travail de la session et charge le reste du fichier. Dans ces sessions, il ignore également un `~/.claude/CLAUDE.md` qui est lui-même un lien symbolique ou un lien physique, et un répertoire `~/.claude/rules/` symlinké ou un fichier de règle qui pointe en dehors du répertoire de travail.153 Dans les sessions Cowork sur votre bureau, Claude Code ignore tout import dans un fichier au niveau utilisateur qui se résout en un chemin en dehors du répertoire de travail de la session et charge le reste du fichier. Dans ces sessions, il ignore également un `~/.claude/CLAUDE.md` qui est lui-même un lien symbolique ou un lien physique, ainsi qu'un répertoire `~/.claude/rules/` ou un fichier de règle qui est un lien symbolique pointant en dehors du répertoire de travail.

154</Warning>154</Warning>

155 155 

156<h3 id="how-claude-md-files-load">156<h3 id="how-claude-md-files-load">


161 161 

162Tous les fichiers découverts sont concaténés en contexte plutôt que de se remplacer les uns les autres. Dans l'arborescence des répertoires, le contenu est ordonné de la racine du système de fichiers jusqu'à votre répertoire de travail. Pour l'exemple `foo/bar/`, `foo/CLAUDE.md` apparaît en contexte avant `foo/bar/CLAUDE.md`, de sorte que les instructions plus proches de l'endroit où vous avez lancé Claude sont lues en dernier. Dans chaque répertoire, `CLAUDE.local.md` est ajouté après `CLAUDE.md`, de sorte que vos notes personnelles sont la dernière chose que Claude lit à ce niveau.162Tous les fichiers découverts sont concaténés en contexte plutôt que de se remplacer les uns les autres. Dans l'arborescence des répertoires, le contenu est ordonné de la racine du système de fichiers jusqu'à votre répertoire de travail. Pour l'exemple `foo/bar/`, `foo/CLAUDE.md` apparaît en contexte avant `foo/bar/CLAUDE.md`, de sorte que les instructions plus proches de l'endroit où vous avez lancé Claude sont lues en dernier. Dans chaque répertoire, `CLAUDE.local.md` est ajouté après `CLAUDE.md`, de sorte que vos notes personnelles sont la dernière chose que Claude lit à ce niveau.

163 163 

164Claude découvre également les fichiers `CLAUDE.md` et `CLAUDE.local.md` dans les sous-répertoires sous votre répertoire de travail actuel. Au lieu de les charger au lancement, ils sont inclus quand Claude lit les fichiers de ces sous-répertoires.164Claude découvre également les fichiers `CLAUDE.md` et `CLAUDE.local.md` dans les sous-répertoires sous votre répertoire de travail actuel. Au lieu de les charger au lancement, ils sont inclus quand Claude lit les fichiers de ces sous-répertoires. Pour les fichiers situés dans un worktree sous `.claude/worktrees/`, consultez [Isoler les sous-agents avec des worktrees](/docs/fr/worktrees#isolate-subagents-with-worktrees).

165 165 

166Si vous travaillez dans un grand monorepo où les fichiers CLAUDE.md d'autres équipes sont détectés, utilisez [`claudeMdExcludes`](#exclude-specific-claude-md-files) pour les ignorer. Pour la disposition complète des fichiers CLAUDE.md racine et par répertoire et des règles, consultez [Monorepos et grands référentiels](/docs/fr/large-codebases).166Si vous travaillez dans un grand monorepo où les fichiers CLAUDE.md d'autres équipes sont détectés, utilisez [`claudeMdExcludes`](#exclude-specific-claude-md-files) pour les ignorer. Pour la disposition complète des fichiers CLAUDE.md racine et par répertoire et des règles, consultez [Monorepos et grands dépôts](/docs/fr/large-codebases).

167 167 

168Les commentaires HTML au niveau des blocs (`<!-- maintainer notes -->`) dans les fichiers CLAUDE.md sont supprimés avant que le contenu ne soit injecté dans le contexte de Claude. Utilisez-les pour laisser des notes aux responsables humains sans dépenser de jetons de contexte. Les commentaires à l'intérieur des blocs de code sont conservés. Quand vous ouvrez un fichier CLAUDE.md directement avec l'outil Read, les commentaires restent visibles.168Les commentaires HTML au niveau des blocs (`<!-- maintainer notes -->`) dans les fichiers CLAUDE.md sont supprimés avant que le contenu ne soit injecté dans le contexte de Claude. Utilisez-les pour laisser des notes aux responsables humains sans dépenser de tokens de contexte. Les commentaires à l'intérieur des blocs de code sont conservés. Quand vous ouvrez un fichier CLAUDE.md directement avec l'outil Read, les commentaires restent visibles.

169 169 

170<h4 id="load-from-additional-directories">170<h4 id="load-from-additional-directories">

171 Charger à partir de répertoires supplémentaires171 Charger à partir de répertoires supplémentaires

172</h4>172</h4>

173 173 

174Le drapeau `--add-dir` donne à Claude accès à des répertoires supplémentaires en dehors de votre répertoire de travail principal. Par défaut, les fichiers CLAUDE.md de ces répertoires ne sont pas chargés.174Le flag `--add-dir` donne à Claude accès à des répertoires supplémentaires en dehors de votre répertoire de travail principal. Par défaut, les fichiers CLAUDE.md de ces répertoires ne sont pas chargés.

175 175 

176Pour charger également les fichiers de mémoire à partir de répertoires supplémentaires, définissez la variable d'environnement `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD` :176Pour charger également les fichiers de mémoire à partir de répertoires supplémentaires, définissez la variable d'environnement `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD` :

177 177 


187 Organiser les règles avec `.claude/rules/`187 Organiser les règles avec `.claude/rules/`

188</h3>188</h3>

189 189 

190Pour les projets plus importants, vous pouvez organiser les instructions en plusieurs fichiers en utilisant le répertoire `.claude/rules/`. Cela garde les instructions modulaires et plus faciles à maintenir pour les équipes. Les règles peuvent également être [scoped à des chemins de fichiers spécifiques](#path-specific-rules), de sorte qu'elles ne se chargent en contexte que quand Claude travaille avec des fichiers correspondants, réduisant le bruit et économisant l'espace de contexte.190Pour les projets plus importants, vous pouvez organiser les instructions en plusieurs fichiers en utilisant le répertoire `.claude/rules/`. Cela garde les instructions modulaires et plus faciles à maintenir pour les équipes. Les règles peuvent également être [limitées à des chemins de fichiers spécifiques](#path-specific-rules), de sorte qu'elles ne se chargent en contexte que quand Claude travaille avec des fichiers correspondants, réduisant le bruit et économisant l'espace de contexte.

191 191 

192<Note>192<Note>

193 Les règles se chargent en contexte à chaque session ou quand des fichiers correspondants sont ouverts. Pour les instructions spécifiques à une tâche qui n'ont pas besoin d'être en contexte tout le temps, utilisez plutôt les [compétences](/docs/fr/skills), qui ne se chargent que quand vous les invoquez ou quand Claude détermine qu'elles sont pertinentes pour votre invite.193 Les règles se chargent en contexte à chaque session ou quand des fichiers correspondants sont ouverts. Pour les instructions spécifiques à une tâche qui n'ont pas besoin d'être en contexte tout le temps, utilisez plutôt les [skills](/docs/fr/skills), qui ne se chargent que quand vous les invoquez ou quand Claude détermine qu'ils sont pertinents pour votre prompt.

194</Note>194</Note>

195 195 

196<h4 id="set-up-rules">196<h4 id="set-up-rules">


211 211 

212Les règles sans [frontmatter `paths`](#path-specific-rules) sont chargées au lancement avec la même priorité que `.claude/CLAUDE.md`.212Les règles sans [frontmatter `paths`](#path-specific-rules) sont chargées au lancement avec la même priorité que `.claude/CLAUDE.md`.

213 213 

214Les règles de projet sont ignorées si vous excluez `project` de [`--setting-sources`](/docs/fr/cli-reference). Avant v2.1.211, les règles qui se chargent à la demande, y compris les règles scoped par chemin et les règles dans les répertoires `.claude/rules/` imbriqués, se chargeaient même quand `project` était exclu.214Les règles de projet sont ignorées si vous excluez `project` de [`--setting-sources`](/docs/fr/cli-reference). Avant v2.1.211, les règles qui se chargent à la demande, y compris les règles limitées à des chemins et les règles dans les répertoires `.claude/rules/` imbriqués, se chargeaient même quand `project` était exclu.

215 215 

216<h4 id="path-specific-rules">216<h4 id="path-specific-rules">

217 Règles spécifiques au chemin217 Règles spécifiques au chemin

218</h4>218</h4>

219 219 

220Les règles peuvent être scoped à des fichiers spécifiques en utilisant le frontmatter YAML avec le champ `paths`. Ces règles conditionnelles ne s'appliquent que quand Claude travaille avec des fichiers correspondant aux modèles spécifiés.220Les règles peuvent être limitées à des fichiers spécifiques en utilisant le frontmatter YAML avec le champ `paths`. Ces règles conditionnelles ne s'appliquent que quand Claude travaille avec des fichiers correspondant aux modèles spécifiés.

221 221 

222```markdown theme={null}222```markdown theme={null}

223---223---


227 227 

228# Règles de développement d'API228# Règles de développement d'API

229 229 

230- Tous les points de terminaison d'API doivent inclure la validation des entrées230- Tous les endpoints d'API doivent inclure la validation des entrées

231- Utiliser le format de réponse d'erreur standard231- Utiliser le format de réponse d'erreur standard

232- Inclure les commentaires de documentation OpenAPI232- Inclure les commentaires de documentation OpenAPI

233```233```

234 234 

235Les règles sans champ `paths` sont chargées sans condition et s'appliquent à tous les fichiers. Les règles scoped par chemin se déclenchent quand Claude lit les fichiers correspondant au modèle, pas à chaque utilisation d'outil. À partir de v2.1.198, la correspondance fonctionne également quand Claude atteint un fichier via un chemin symlinké vers le répertoire du projet, par exemple dans un checkout symlinké.235Les règles sans champ `paths` sont chargées sans condition et s'appliquent à tous les fichiers. Les règles limitées à des chemins se déclenchent quand Claude lit les fichiers correspondant au modèle, pas à chaque utilisation d'outil. La correspondance fonctionne également quand Claude atteint un fichier via un chemin passant par un lien symbolique vers le répertoire du projet, par exemple dans un checkout accessible via un lien symbolique.

236 236 

237Utilisez les modèles glob dans le champ `paths` pour faire correspondre les fichiers par extension, répertoire ou toute combinaison :237Utilisez les modèles glob dans le champ `paths` pour faire correspondre les fichiers par extension, répertoire ou toute combinaison :

238 238 


268 268 

269| Champ | Requis | Description |269| Champ | Requis | Description |

270| :- | :- | :- |270| :- | :- | :- |

271| `paths` | Non | Modèles glob qui [scoped la règle aux fichiers correspondants](#path-specific-rules). Accepte une liste YAML ou une chaîne séparée par des virgules |271| `paths` | Non | Modèles glob qui [limitent la règle aux fichiers correspondants](#path-specific-rules). Accepte une liste YAML ou une chaîne séparée par des virgules |

272 272 

273Si le YAML entre les marqueurs ne s'analyse pas, Claude Code ignore le frontmatter et charge la règle comme si elle n'avait pas de `paths`. Exécutez `claude --debug` pour voir l'erreur d'analyse.273Si le YAML entre les marqueurs ne s'analyse pas, Claude Code ignore le frontmatter et charge la règle comme si elle n'avait pas de `paths`. Exécutez `claude --debug` pour voir l'erreur d'analyse.

274 274 

275<h4 id="share-rules-across-projects-with-symlinks">275<h4 id="share-rules-across-projects-with-symlinks">

276 Partager les règles entre les projets avec des symlinks276 Partager les règles entre les projets avec des liens symboliques

277</h4>277</h4>

278 278 

279Le répertoire `.claude/rules/` supporte les symlinks, de sorte que vous pouvez maintenir un ensemble partagé de règles et les lier dans plusieurs projets. Les symlinks circulaires sont détectés et gérés correctement.279Le répertoire `.claude/rules/` prend en charge les liens symboliques, de sorte que vous pouvez maintenir un ensemble partagé de règles et les lier dans plusieurs projets. Les liens symboliques circulaires sont détectés et gérés correctement.

280 280 

281Claude Code traite un symlink dont la cible se trouve en dehors de votre répertoire de travail comme un [import externe](#import-additional-files). Les règles liées ne se chargent pas jusqu'à ce que vous approuviez les imports externes pour le projet, et après cela seulement celles sans champ [`paths`](#path-specific-rules) se chargent. Claude Code demande cette approbation uniquement quand un fichier de mémoire de projet importe un fichier en dehors du répertoire de travail avec `@path`, pas pour les symlinks seuls. Pour charger les règles partagées sans cette approbation, gardez-les dans [`~/.claude/rules/`](#user-level-rules), où elles s'appliquent à chaque projet sur votre machine.281Claude Code traite un lien symbolique dont la cible se trouve en dehors de votre répertoire de travail comme un [import externe](#import-additional-files). Les règles liées ne se chargent pas jusqu'à ce que vous approuviez les imports externes pour le projet, et après cela seulement celles sans champ [`paths`](#path-specific-rules) se chargent. Claude Code demande cette approbation uniquement quand un fichier de mémoire de projet importe un fichier en dehors du répertoire de travail avec `@path`, pas pour les liens symboliques seuls. Pour charger les règles partagées sans cette approbation, gardez-les dans [`~/.claude/rules/`](#user-level-rules), où elles s'appliquent à chaque projet sur votre machine.

282 282 

283Cet exemple lie à la fois un répertoire partagé et un fichier individuel :283Cet exemple lie à la fois un répertoire partagé et un fichier individuel :

284 284 


287ln -s ~/company-standards/security.md .claude/rules/security.md287ln -s ~/company-standards/security.md .claude/rules/security.md

288```288```

289 289 

290Si vous pointez un symlink `.claude/rules/` ou `CLAUDE.md` vers un chemin réseau tel que le partage UNC `\\server\share` ou un chemin sous `/net` ou `/Network`, les instructions liées ne se chargent pas. Claude Code ne suit pas le lien, car la recherche d'un tel chemin peut contacter l'hôte qu'il nomme. Les chemins `\\wsl$` ne comptent pas comme des chemins réseau.290Si vous pointez un lien symbolique `.claude/rules/` ou `CLAUDE.md` vers un chemin réseau tel que le partage UNC `\\server\share` ou un chemin sous `/net` ou `/Network`, les instructions liées ne se chargent pas. Claude Code ne suit pas le lien, car la recherche d'un tel chemin peut contacter l'hôte qu'il nomme. Les chemins `\\wsl$` ne comptent pas comme des chemins réseau.

291 291 

292<h4 id="user-level-rules">292<h4 id="user-level-rules">

293 Règles au niveau utilisateur293 Règles au niveau utilisateur


298```text theme={null}298```text theme={null}

299~/.claude/rules/299~/.claude/rules/

300├── preferences.md # Vos préférences de codage personnelles300├── preferences.md # Vos préférences de codage personnelles

301└── workflows.md # Vos flux de travail préférés301└── workflows.md # Vos workflows préférés

302```302```

303 303 

304Claude Code charge les règles au niveau utilisateur avant les règles de projet, de sorte qu'une règle de projet apparaît plus tard dans le contexte de Claude qu'une règle utilisateur. Aucun ensemble ne remplace l'autre : si une règle utilisateur et une règle de projet entrent en conflit, Claude peut suivre l'une ou l'autre, donc gardez les deux cohérentes.304Claude Code charge les règles au niveau utilisateur avant les règles de projet, de sorte qu'une règle de projet apparaît plus tard dans le contexte de Claude qu'une règle utilisateur. Aucun ensemble ne remplace l'autre : si une règle utilisateur et une règle de projet entrent en conflit, Claude peut suivre l'une ou l'autre, donc gardez les deux cohérentes.


329 329 

330La clé `claudeMd` vous permet de placer le contenu CLAUDE.md géré directement dans `managed-settings.json` au lieu de déployer un fichier séparé.330La clé `claudeMd` vous permet de placer le contenu CLAUDE.md géré directement dans `managed-settings.json` au lieu de déployer un fichier séparé.

331 331 

332**Portée** : chaque session Claude Code sur la machine, dans chaque référentiel. Pour des conseils spécifiques au référentiel, validez un CLAUDE.md de projet à la place.332**Portée** : chaque session Claude Code sur la machine, dans chaque dépôt. Pour des conseils spécifiques au dépôt, commitez plutôt un CLAUDE.md de projet.

333 333 

334**Précédence** : identique à un fichier CLAUDE.md géré. Se charge avant CLAUDE.md utilisateur et projet.334**Priorité** : identique à un fichier CLAUDE.md géré. Se charge avant CLAUDE.md utilisateur et projet.

335 335 

336**Où c'est honoré** : paramètres gérés et politiques uniquement. Définir `claudeMd` dans les paramètres utilisateur, projet ou locaux n'a aucun effet.336**Où c'est honoré** : paramètres gérés et politiques uniquement. Définir `claudeMd` dans les paramètres utilisateur, projet ou locaux n'a aucun effet.

337 337 


376 376 

377Les modèles sont mis en correspondance avec les chemins de fichiers absolus en utilisant la syntaxe glob. Vous pouvez configurer `claudeMdExcludes` à n'importe quelle [couche de paramètres](/docs/fr/settings#where-settings-live) : utilisateur, projet, local ou politique gérée. Les tableaux fusionnent entre les couches.377Les modèles sont mis en correspondance avec les chemins de fichiers absolus en utilisant la syntaxe glob. Vous pouvez configurer `claudeMdExcludes` à n'importe quelle [couche de paramètres](/docs/fr/settings#where-settings-live) : utilisateur, projet, local ou politique gérée. Les tableaux fusionnent entre les couches.

378 378 

379Pour exclure un fichier de règles que vous atteignez via un [symlink](#share-rules-across-projects-with-symlinks), que le fichier ou son répertoire soit le lien, écrivez le modèle par rapport à l'un ou l'autre chemin : le chemin du fichier sous `.claude/rules/` ou sa cible de lien. Un modèle qui correspond à l'un ou l'autre chemin exclut le fichier. Avant v2.1.239, seul un modèle qui correspondait à la cible du lien excluait le fichier.379Pour exclure un fichier de règles que vous atteignez via un [lien symbolique](#share-rules-across-projects-with-symlinks), que le fichier ou son répertoire soit le lien, écrivez le modèle par rapport à l'un ou l'autre chemin : le chemin du fichier sous `.claude/rules/` ou sa cible de lien. Un modèle qui correspond à l'un ou l'autre chemin exclut le fichier. Avant v2.1.239, seul un modèle qui correspondait à la cible du lien excluait le fichier.

380 380 

381Les fichiers CLAUDE.md de politique gérée ne peuvent pas être exclus. Cela garantit que les instructions à l'échelle de l'organisation s'appliquent toujours indépendamment des paramètres individuels.381Les fichiers CLAUDE.md de politique gérée ne peuvent pas être exclus. Cela garantit que les instructions à l'échelle de l'organisation s'appliquent toujours indépendamment des paramètres individuels.

382 382 


538 Activer ou désactiver la mémoire automatique538 Activer ou désactiver la mémoire automatique

539</h3>539</h3>

540 540 

541La mémoire automatique est activée par défaut. Pour la basculer, ouvrez `/memory` dans une session et utilisez le bouton bascule de mémoire automatique, qui enregistre `autoMemoryEnabled` dans vos paramètres utilisateur à `~/.claude/settings.json`. Pour la désactiver pour un seul projet, définissez `autoMemoryEnabled` dans les paramètres de ce projet :541La mémoire automatique est activée par défaut dans les sessions locales. En dehors des sessions [Claude Tag](https://claude.com/docs/claude-tag/overview), une session dans un [environnement auto-hébergé](/docs/fr/self-hosted-environments-configuration#how-each-session’s-config-is-assembled) s'exécute par défaut avec la mémoire automatique désactivée.

542 

543Pour la basculer, ouvrez `/memory` dans une session et utilisez le bouton bascule de mémoire automatique, qui enregistre `autoMemoryEnabled` dans vos paramètres utilisateur à `~/.claude/settings.json`. Pour la désactiver pour un seul projet, définissez `autoMemoryEnabled` dans les paramètres de ce projet :

542 544 

543```json theme={null}545```json theme={null}

544{546{

model-config.md +17 −3

Details

280* **[Chaînes de modèle de secours](#fallback-model-chains)** : les entrées en dehors de la liste d'autorisation sont supprimées280* **[Chaînes de modèle de secours](#fallback-model-chains)** : les entrées en dehors de la liste d'autorisation sont supprimées

281* **Mises à niveau du mode plan** : sur l'API Anthropic et Claude Platform on AWS, une mise à niveau telle que [`opusplan`](#opusplan-model-setting) vers un modèle exclu utilise la version la plus récente autorisée de la famille de mise à niveau. Sur les fournisseurs avec des ID de modèle spécifiques au fournisseur, et lorsqu'aucune version n'est autorisée, la mise à niveau est ignorée et la planification continue sur le modèle de la session281* **Mises à niveau du mode plan** : sur l'API Anthropic et Claude Platform on AWS, une mise à niveau telle que [`opusplan`](#opusplan-model-setting) vers un modèle exclu utilise la version la plus récente autorisée de la famille de mise à niveau. Sur les fournisseurs avec des ID de modèle spécifiques au fournisseur, et lorsqu'aucune version n'est autorisée, la mise à niveau est ignorée et la planification continue sur le modèle de la session

282* **[Secours de modèle automatique](#automatic-model-fallback)** : un secours dont la cible est exclue ne s'exécute pas, donc la demande signalée se termine par un refus à la place282* **[Secours de modèle automatique](#automatic-model-fallback)** : un secours dont la cible est exclue ne s'exécute pas, donc la demande signalée se termine par un refus à la place

283* **[Classificateur du mode automatique](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode)** : la valeur par défaut Claude Sonnet 5 du classificateur s'applique uniquement lorsque la liste d'autorisation permet Sonnet 5. Lorsqu'il est exclu, le classificateur s'exécute sur le modèle de la session, que la liste d'autorisation gouverne déjà, ou sur un modèle Opus lorsque la session s'exécute sur un [modèle Fable](#work-with-fable). Sur les fournisseurs autres que l'API Anthropic, ce secours Opus s'exécute sur le modèle Opus par défaut du fournisseur sans consulter la liste d'autorisation. Nécessite Claude Code v2.1.210 ou ultérieur283* **[Classifieur du mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode)** : la valeur par défaut Claude Sonnet 5 du classifieur s'applique uniquement lorsque la liste d'autorisation permet Sonnet 5. Lorsqu'il est exclu, le classifieur s'exécute sur le modèle de la session, que la liste d'autorisation gouverne déjà, ou sur un modèle Opus lorsque la session s'exécute sur un [modèle Fable](#work-with-fable). Sur les fournisseurs autres que l'API Anthropic, ce secours Opus s'exécute sur le modèle que vous définissez dans `ANTHROPIC_DEFAULT_OPUS_MODEL` ou, à défaut, sur Opus 5, sans consulter la liste d'autorisation. Nécessite Claude Code v2.1.210 ou ultérieur

284* **[Mode rapide](/docs/fr/fast-mode)** : l'activation du mode rapide est refusée lorsque le modèle sur lequel la session s'exécuterait ensuite est en dehors de la liste d'autorisation284* **[Mode rapide](/docs/fr/fast-mode)** : l'activation du mode rapide est refusée lorsque le modèle sur lequel la session s'exécuterait ensuite est en dehors de la liste d'autorisation

285 285 

286```json theme={null}286```json theme={null}


447* une valeur `model` dans les [paramètres gérés](/docs/fr/managed-settings) ou fournie via `--settings`447* une valeur `model` dans les [paramètres gérés](/docs/fr/managed-settings) ou fournie via `--settings`

448* une valeur `model` dans vos paramètres utilisateur, projet ou locaux, y compris un modèle que vous enregistrez avec `/model`448* une valeur `model` dans vos paramètres utilisateur, projet ou locaux, y compris un modèle que vous enregistrez avec `/model`

449 449 

450Les administrateurs peuvent également configurer le modèle par défaut de l'organisation pour remplacer la sélection de l'utilisateur. Avec le remplacement activé, il prend précédence sur la valeur `model` dans les paramètres utilisateur, projet et locaux, de sorte qu'un modèle que vous enregistrez avec `/model` s'applique pour la session actuelle et le modèle par défaut de l'organisation revient au lancement suivant. Lorsque votre sélection diffère, `/model` affiche `Your organization's default (<model>) applies on restart`. Le drapeau `--model`, `ANTHROPIC_MODEL`, les paramètres gérés et `--settings` prennent toujours précédence même avec le remplacement activé. Le remplacement est disponible pour un ensemble limité d'organisations ; contactez votre équipe de compte Anthropic pour connaître la disponibilité.450Les administrateurs peuvent également configurer le modèle par défaut de l'organisation pour remplacer la sélection de l'utilisateur. Avec le remplacement activé, il a priorité sur la valeur `model` dans les paramètres utilisateur, projet et locaux, de sorte qu'un modèle que vous enregistrez avec `/model` s'applique pour la session actuelle et le modèle par défaut de l'organisation revient au lancement suivant. Lorsque votre sélection diffère, `/model` affiche `Your organization's default (<model>) applies on restart`. Le flag `--model`, `ANTHROPIC_MODEL`, les paramètres gérés et `--settings` ont toujours priorité même avec le remplacement activé.

451 451 

452Pour limiter les modèles que les membres peuvent sélectionner, utilisez plutôt les [restrictions de modèle de l'organisation](#organization-model-restrictions) ou [`availableModels`](#restrict-model-selection).452Pour limiter les modèles que les membres peuvent sélectionner, utilisez plutôt les [restrictions de modèle de l'organisation](#organization-model-restrictions) ou [`availableModels`](#restrict-model-selection).

453 453 


570 570 

571Le 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é.571Le 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é.

572 572 

573<h4 id="effort-level-after-a-fallback">

574 Niveau d'effort après un secours

575</h4>

576 

577Quand Claude Code bascule votre session vers le modèle de secours, il conserve le niveau d'effort auquel la requête signalée s'est exécutée au lieu de l'effort par défaut de ce modèle. Par exemple, une session sur Opus 5.5 à son niveau par défaut `medium` qui bascule sur Opus 4.8 reste à `medium`, bien qu'Opus 4.8 soit par défaut à `high`.

578 

579Un niveau différent s'applique dans des cas comme ceux-ci :

580 

581* **Paramètres ou défaut de l'organisation** : un niveau dans vos paramètres qui s'applique au modèle de secours, ou un effort par défaut que votre organisation a défini pour lui, s'applique à la place.

582* **Votre propre modification** : dès que vous choisissez un niveau d'effort, sélectionnez un modèle dans `/model` ou reprenez la session plus tard, le niveau de la requête signalée n'est plus reporté.

583* **Effort du skill** : un niveau que le frontmatter `effort` d'un skill a défini pour la requête signalée s'applique à ce tour, et les tours suivants s'exécutent au niveau que l'[ordre de résolution de l'effort](#adjust-effort-level) attribue au modèle de secours.

584 

585L'en-tête de session affiche le niveau en vigueur à côté du nom du modèle. Pour le modifier, exécutez `/effort` dans la session.

586 

573<h4 id="check-what-triggered-fallback">587<h4 id="check-what-triggered-fallback">

574 Vérifier ce qui a déclenché le secours588 Vérifier ce qui a déclenché le secours

575</h4>589</h4>


636 650 

6371. 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))6511. 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))

6382. 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)6522. 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)

6393. L'effort par défaut du modèle : `high` sur chaque modèle qui supporte l'effort, sauf qu'Opus 5.5 et Sonnet 5.5 par défaut à `medium`, 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èle6533. L'effort par défaut du modèle : `high` sur chaque modèle qui supporte l'effort, sauf qu'Opus 5.5 et Sonnet 5.5 sont par défaut à `medium`, Opus 4.7 est 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. Après un secours automatique du modèle, voir [Niveau d'effort après un secours](#effort-level-after-a-fallback) pour le niveau qui s'applique.

640 654 

641Opus 5.5 démarre à `medium` sauf si l'une des sources ci-dessus définit un niveau pour lui, et un `effortLevel` de niveau supérieur dans votre fichier de paramètres utilisateur ne compte pas pour Opus 5.5. Cette clé est la forme plus ancienne que `/effort` écrivait avant que Claude Code enregistre les niveaux par modèle : elle continue à s'appliquer où elle s'appliquait avant, sur Opus 5, Fable 5.1 et les modèles antérieurs, tandis qu'Opus 5.5 et les modèles publiés après lui démarrent à leur propre défaut jusqu'à ce que vous choisissiez un niveau pour eux avec `/effort` ou le sélecteur `/model`. Un `effortLevel` de niveau supérieur dans les paramètres de projet, locaux ou gérés, ou un passé avec `--settings`, s'applique à chaque modèle.655Opus 5.5 démarre à `medium` sauf si l'une des sources ci-dessus définit un niveau pour lui, et un `effortLevel` de niveau supérieur dans votre fichier de paramètres utilisateur ne compte pas pour Opus 5.5. Cette clé est la forme plus ancienne que `/effort` écrivait avant que Claude Code enregistre les niveaux par modèle : elle continue à s'appliquer où elle s'appliquait avant, sur Opus 5, Fable 5.1 et les modèles antérieurs, tandis qu'Opus 5.5 et les modèles publiés après lui démarrent à leur propre défaut jusqu'à ce que vous choisissiez un niveau pour eux avec `/effort` ou le sélecteur `/model`. Un `effortLevel` de niveau supérieur dans les paramètres de projet, locaux ou gérés, ou un passé avec `--settings`, s'applique à chaque modèle.

642 656 

monitoring-usage.md +442 −423

Details

255| `duration_ms` | Durée murale incluant les tentatives | |255| `duration_ms` | Durée murale incluant les tentatives | |

256| `ttft_ms` | Temps jusqu'au premier jeton en millisecondes | |256| `ttft_ms` | Temps jusqu'au premier jeton en millisecondes | |

257| `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 ultérieur | |257| `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 ultérieur | |

258| `input_tokens` | Nombre de jetons d'entrée du bloc d'utilisation de l'API | |258| `input_tokens` | Nombre de tokens d'entrée du bloc d'utilisation de l'API. Exclut les tokens lus depuis le cache de prompt ou écrits dans celui-ci, qui sont indiqués dans `cache_read_tokens` et `cache_creation_tokens` | |

259| `output_tokens` | Nombre de jetons de sortie | |259| `output_tokens` | Nombre de jetons de sortie | |

260| `cache_read_tokens` | Jetons lus du cache d'invite | |260| `cache_read_tokens` | Jetons lus du cache d'invite | |

261| `cache_creation_tokens` | Jetons écrits dans le cache d'invite | |261| `cache_creation_tokens` | Jetons écrits dans le cache d'invite | |


571 571 

572| Attribut | Description | Contrôlé par |572| Attribut | Description | Contrôlé par |

573| - | - | - |573| - | - | - |

574| `session.id` | Identifiant de session unique | `OTEL_METRICS_INCLUDE_SESSION_ID` (par défaut : true) |574| `session.id` | Identifiant unique de session | `OTEL_METRICS_INCLUDE_SESSION_ID` (par défaut : true) |

575| `ccr.session.id` | Identifiant de session cloud, la valeur de `CLAUDE_CODE_REMOTE_SESSION_ID`, sur les sessions qui s'exécutent dans un [environnement cloud](/docs/fr/cloud-environments) | `OTEL_METRICS_INCLUDE_SESSION_ID` (par défaut : true) |575| `ccr.session.id` | Identifiant de la session cloud, c'est-à-dire la valeur de `CLAUDE_CODE_REMOTE_SESSION_ID`, pour les sessions qui s'exécutent dans un [environnement cloud](/docs/fr/cloud-environments) | `OTEL_METRICS_INCLUDE_SESSION_ID` (par défaut : true) |

576| `app.version` | Version actuelle de Claude Code | `OTEL_METRICS_INCLUDE_VERSION` (par défaut : false) |576| `app.version` | Version actuelle de Claude Code | `OTEL_METRICS_INCLUDE_VERSION` (par défaut : false) |

577| `app.entrypoint` | Comment la session a été lancée, par exemple `cli`, `sdk-cli`, `sdk-ts`, `sdk-py`, `claude-vscode`, ou `claude-in-slack` pour les sessions Claude Tag | `OTEL_METRICS_INCLUDE_ENTRYPOINT` (par défaut : false) |577| `app.entrypoint` | Mode de lancement de la session, par exemple `cli`, `sdk-cli`, `sdk-ts`, `sdk-py`, `claude-vscode` ou `claude-in-slack` pour les sessions Claude Tag | `OTEL_METRICS_INCLUDE_ENTRYPOINT` (par défaut : false) |

578| `organization.id` | UUID d'organisation (lorsqu'authentifié) | Toujours inclus lorsque disponible |578| `organization.id` | UUID de l'organisation (si authentifié) | Toujours inclus lorsque disponible |

579| `user.account_uuid` | UUID de compte (lorsqu'authentifié) | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (par défaut : true) |579| `user.account_uuid` | UUID du compte (si authentifié) | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (par défaut : true) |

580| `user.account_id` | ID de compte au format balisé correspondant aux API d'administration Anthropic (lorsqu'authentifié), par exemple `user_01BWBeN28...` | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (par défaut : true) |580| `user.account_id` | ID du compte au format balisé correspondant aux API d'administration d'Anthropic (si authentifié), par exemple `user_01BWBeN28...` | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (par défaut : true) |

581| `user.id` | Identifiant anonyme aléatoire généré à la première exécution et persisté dans `~/.claude.json`. Il ne contient aucune information personnelle et n'est pas dérivé de votre compte Claude. La suppression du fichier produit une nouvelle valeur sans rapport à la prochaine exécution. | Toujours inclus |581| `user.id` | Identifiant anonyme aléatoire généré lors de 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 lien lors de l'exécution suivante. | Toujours inclus |

582| `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 lorsque disponible |582| `user.email` | Adresse e-mail de l'utilisateur, issue de votre connexion ou, dans une [session cloud](/docs/fr/claude-code-on-the-web), des identifiants propres à la session | Toujours inclus lorsque disponible |

583| `terminal.type` | Type de terminal, par exemple `iTerm.app`, `vscode`, `cursor`, ou `tmux` | Toujours inclus lorsque détecté |583| `terminal.type` | Type de terminal, par exemple `iTerm.app`, `vscode`, `cursor` ou `tmux` | Toujours inclus lorsqu'il est détecté |

584| Clés de `OTEL_RESOURCE_ATTRIBUTES` | Attributs personnalisés que vous définissez, par exemple `department` ou `team.id`. Voir [Support des organisations multi-équipes](#multi-team-organization-support) | `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` (par défaut : true) |584| Clés de `OTEL_RESOURCE_ATTRIBUTES` | Attributs personnalisés que vous définissez, par exemple `department` ou `team.id`. Consultez [Prise en charge des organisations multi-équipes](#multi-team-organization-support) | `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` (par défaut : true) |

585| `vcs.repository.url.full`, `vcs.owner.name`, `vcs.repository.name`, `vcs.provider.name` | L'identité du référentiel de la session, dérivée de sa télécommande `origin`. Voir [Attributs du référentiel](#repository-attributes) | `OTEL_METRICS_INCLUDE_REPOSITORY` (par défaut : false). Nécessite Claude Code v2.1.269 ou ultérieur |585| `vcs.repository.url.full`, `vcs.owner.name`, `vcs.repository.name`, `vcs.provider.name` | Identité du dépôt de la session, dérivée de son remote `origin`. Consultez [Attributs de dépôt](#repository-attributes) | `OTEL_METRICS_INCLUDE_REPOSITORY` (par défaut : false). Nécessite Claude Code v2.1.269 ou ultérieur |

586 586 

587Dans les sessions connectées à une [passerelle d'applications Claude](/docs/fr/claude-apps-gateway) via `/login`, la CLI marque les exportations avec l'identité authentifiée : `user.id` est le sujet IdP, `user.email` est l'e-mail connecté, et `user.groups` porte l'appartenance au groupe IdP sous forme de chaîne séparée par des virgules. Chaque exportation porte également `identity.source: gateway-oidc`. L'identité de la passerelle est appliquée en dernier, donc les clés `user.*` et `identity.*` définies via `OTEL_RESOURCE_ATTRIBUTES` sont ignorées sur ces sessions.587Dans les sessions connectées à une [passerelle d'applications Claude](/docs/fr/claude-apps-gateway) via `/login`, la CLI marque les exports avec l'identité authentifiée : `user.id` correspond au sujet de l'IdP, `user.email` à l'adresse e-mail connectée, et `user.groups` contient l'appartenance aux groupes de l'IdP sous forme de chaîne séparée par des virgules. Chaque export contient également `identity.source: gateway-oidc`. L'identité de la passerelle est appliquée en dernier, de sorte que les clés `user.*` et `identity.*` définies via `OTEL_RESOURCE_ATTRIBUTES` sont ignorées dans ces sessions.

588 588 

589Pour les attributs d'identité sur les sessions Claude Desktop et Cowork qui se connectent via une passerelle, voir la [référence de télémétrie de la passerelle](/docs/fr/claude-apps-gateway-config#telemetry).589Pour les attributs d'identité des sessions Claude Desktop et Cowork qui se connectent via une passerelle, consultez la [référence `telemetry` de la passerelle](/docs/fr/claude-apps-gateway-config#telemetry).

590 590 

591Les événements incluent en outre les attributs suivants. Ceux-ci ne sont jamais attachés aux métriques car ils causeraient une cardinalité illimitée :591Les événements incluent en plus les attributs suivants. Ceux-ci ne sont jamais attachés aux métriques, car ils entraîneraient une cardinalité non bornée :

592 592 

593* `prompt.id` : UUID corrélant une invite utilisateur avec tous les événements suivants jusqu'à l'invite suivante. Voir [Attributs de corrélation d'événements](#event-correlation-attributes).593* `prompt.id` : UUID corrélant un prompt utilisateur avec tous les événements suivants jusqu'au prompt suivant. Consultez [Attributs de corrélation des événements](#event-correlation-attributes).

594* `workspace.host_paths` : répertoires d'espace de travail hôte sélectionnés dans l'application de bureau, sous forme de tableau de chaînes594* `workspace.host_paths` : répertoires de l'espace de travail hôte sélectionnés dans l'application de bureau, sous forme de tableau de chaînes

595* `workflow.run_id` : identifiant d'exécution, préfixé `wf_`, sur les événements API et d'outils émis par les agents qui appartiennent à une exécution d'outil [Workflow](/docs/fr/workflows). Le filtrage des événements par un `workflow.run_id` reconstruit les demandes API et les résultats d'outils de cette exécution. L'identifiant couvre les agents que le script de flux de travail génère et tous les agents que ceux-ci génèrent à leur tour, par exemple les invocations de compétences. Il correspond à l'identifiant d'exécution signalé dans le résultat de l'outil Workflow. Absent sur tous les autres événements. Nécessite Claude Code v2.1.202 ou ultérieur595* `workflow.run_id` : identifiant d'exécution, préfixé par `wf_`, présent sur les événements d'API et d'outil émis par les agents appartenant à une exécution de l'outil [Workflow](/docs/fr/workflows). Filtrer les événements sur un `workflow.run_id` permet de reconstituer les requêtes API et les résultats d'outils de cette exécution. L'identifiant couvre les agents lancés par le script du workflow ainsi que tous les agents que ceux-ci lancent à leur tour, comme les invocations de skills. Il correspond à l'identifiant d'exécution indiqué dans le résultat de l'outil Workflow. Absent de tous les autres événements. Nécessite Claude Code v2.1.202 ou ultérieur

596* `workflow.name` : nom du flux de travail, le `meta.name` de son script, émis aux côtés de `workflow.run_id`. Les noms de flux de travail intégrés apparaissent textuellement lorsque l'exécution exécute le script intégré non modifié. Les noms créés par l'utilisateur, y compris les copies modifiées de scripts intégrés, sont remplacés par `custom` sauf si `OTEL_LOG_TOOL_DETAILS=1` est défini. Nécessite Claude Code v2.1.202 ou ultérieur596* `workflow.name` : nom du workflow, c'est-à-dire le `meta.name` de son script, émis avec `workflow.run_id`. Les noms des workflows intégrés apparaissent tels quels lorsque l'exécution utilise le script intégré non modifié. Les noms définis par l'utilisateur, y compris les copies modifiées de scripts intégrés, sont remplacés par `custom` sauf si `OTEL_LOG_TOOL_DETAILS=1` est défini. Nécessite Claude Code v2.1.202 ou ultérieur

597 597 

598<h4 id="repository-attributes">598<h4 id="repository-attributes">

599 Attributs du référentiel599 Attributs de dépôt

600</h4>600</h4>

601 601 

602Définissez `OTEL_METRICS_INCLUDE_REPOSITORY=true` pour baliser les métriques et les événements avec l'identité du référentiel de la session, afin qu'un collecteur partagé puisse attribuer l'utilisation par référentiel. Nécessite Claude Code v2.1.269 ou ultérieur.602Définissez `OTEL_METRICS_INCLUDE_REPOSITORY=true` pour étiqueter les métriques et les événements avec l'identité du dépôt de la session, afin qu'un collecteur partagé puisse attribuer l'utilisation par dépôt. Nécessite Claude Code v2.1.269 ou ultérieur.

603 603 

604Claude Code dérive ces attributs une fois par session à partir de la télécommande `origin` du référentiel. Lorsque les télécommandes HTTPS et SSH d'un référentiel nomment le même hôte et le même chemin, comme c'est le cas sur GitHub, GitLab et Bitbucket Cloud, les deux produisent des valeurs identiques :604Claude Code dérive ces attributs une fois par session à partir du remote `origin` du dépôt. Lorsque les remotes HTTPS et SSH d'un dépôt désignent le même hôte et le même chemin, comme c'est le cas sur GitHub, GitLab et Bitbucket Cloud, tous deux produisent des valeurs identiques :

605 605 

606| Attribut | Valeur |606| Attribut | Valeur |

607| - | - |607| - | - |

608| `vcs.repository.url.full` | L'URL du navigateur du référentiel sans `.git`, par exemple `https://github.com/example-org/example-repo` |608| `vcs.repository.url.full` | URL du dépôt dans le navigateur, sans `.git`, par exemple `https://github.com/example-org/example-repo` |

609| `vcs.owner.name` | Le chemin du propriétaire ou du groupe, par exemple `example-org` ; omis lorsque le chemin distant a un seul segment |609| `vcs.owner.name` | Chemin du propriétaire ou du groupe, par exemple `example-org` ; omis lorsque le chemin du remote ne comporte qu'un seul segment |

610| `vcs.repository.name` | Le nom du référentiel nu, par exemple `example-repo` |610| `vcs.repository.name` | Nom brut du dépôt, par exemple `example-repo` |

611| `vcs.provider.name` | `github`, `gitlab`, `bitbucket`, ou `gitea` lorsque Claude Code reconnaît l'hôte distant ou la forme d'URL comme l'un de ces fournisseurs ; omis sinon |611| `vcs.provider.name` | `github`, `gitlab`, `bitbucket` ou `gitea` lorsque Claude Code reconnaît l'hôte ou la forme d'URL du remote comme celui de l'un de ces fournisseurs ; omis sinon |

612 612 

613Les valeurs sont en minuscules, et les identifiants, les chaînes de requête et les fragments de l'URL distante n'y apparaissent jamais. Les attributs sont omis lorsque la session n'a pas de télécommande `origin`, lorsque la télécommande n'a pas la forme d'une URL, ou lorsque le seul référentiel englobant est votre répertoire personnel.613Les valeurs sont mises en minuscules, et les identifiants, chaînes de requête et fragments de l'URL du remote n'y apparaissent jamais. Les attributs sont omis lorsque la session n'a pas de remote `origin`, lorsque le remote n'a pas la forme d'une URL, ou lorsque le seul dépôt englobant est votre répertoire personnel.

614 614 

615Pour obtenir ces attributs à partir d'une [session cloud](/docs/fr/claude-code-on-the-web), définissez les variables de télémétrie, y compris `OTEL_METRICS_INCLUDE_REPOSITORY`, sur son [environnement cloud](/docs/fr/cloud-environments#set-environment-variables). Autorisez également le domaine de votre collecteur dans l'[accès réseau](/docs/fr/cloud-environments#network-access) de l'environnement.615Pour obtenir ces attributs depuis une [session cloud](/docs/fr/claude-code-on-the-web), définissez les variables de télémétrie, y compris `OTEL_METRICS_INCLUDE_REPOSITORY`, dans son [environnement cloud](/docs/fr/cloud-environments#set-environment-variables). Autorisez également le domaine de votre collecteur dans l'[accès réseau](/docs/fr/cloud-environments#network-access) de l'environnement.

616 616 

617Une clé `vcs.*` que vous déclarez dans [`OTEL_RESOURCE_ATTRIBUTES`](#multi-team-organization-support) remplace la valeur dérivée pour cette clé. Si vous déclarez `vcs.repository.url.full`, Claude Code ne lit jamais la télécommande et signale uniquement les clés que vous déclarez.617Une clé `vcs.*` que vous déclarez dans [`OTEL_RESOURCE_ATTRIBUTES`](#multi-team-organization-support) remplace la valeur dérivée pour cette clé. Si vous déclarez `vcs.repository.url.full`, Claude Code ne lit jamais le remote et ne rapporte que les clés que vous déclarez.

618 618 

619Si les clones HTTPS et SSH d'un référentiel signalent des valeurs différentes, par exemple sur une installation auto-hébergée dont l'URL de clone HTTPS porte un préfixe de chemin que l'URL SSH n'a pas, déclarez `vcs.repository.url.full` dans `OTEL_RESOURCE_ATTRIBUTES` ainsi que toute autre clé `vcs.*` que vous souhaitez signaler. Chaque clone signale alors l'identité que vous déclarez.619Si les clones HTTPS et SSH d'un même dépôt rapportent des valeurs différentes, par exemple sur une installation auto-hébergée dont l'URL de clonage HTTPS comporte un préfixe de chemin absent de l'URL SSH, déclarez `vcs.repository.url.full` dans `OTEL_RESOURCE_ATTRIBUTES` ainsi que toutes les autres clés `vcs.*` que vous souhaitez voir rapportées. Chaque clone rapporte alors l'identité que vous déclarez.

620 620 

621Les attributs ne circulent que vers vos propres exportateurs ; la télémétrie d'Anthropic supprime chaque clé `vcs.*`.621Les attributs sont transmis uniquement à vos propres exportateurs ; la télémétrie d'Anthropic supprime toutes les clés `vcs.*`.

622 622 

623<h3 id="metrics">623<h3 id="metrics">

624 Métriques624 Métriques

625</h3>625</h3>

626 626 

627Claude Code exporte les métriques suivantes. La colonne Unité affiche la chaîne d'unité OpenTelemetry attachée à chaque métrique ; les métriques de comptage n'en ont aucune.627Claude Code exporte les métriques suivantes. La colonne Unité indique la chaîne d'unité OpenTelemetry attachée à chaque métrique ; les métriques de comptage n'en ont pas.

628 628 

629| Nom de la métrique | Description | Unité |629| Nom de la métrique | Description | Unité |

630| - | - | - |630| - | - | - |

631| `claude_code.session.count` | Nombre de sessions CLI démarrées | aucune |631| `claude_code.session.count` | Nombre de sessions CLI démarrées | aucune |

632| `claude_code.lines_of_code.count` | Nombre de lignes de code modifiées | aucune |632| `claude_code.lines_of_code.count` | Nombre de lignes de code modifiées | aucune |

633| `claude_code.pull_request.count` | Nombre de demandes de tirage créées | aucune |633| `claude_code.pull_request.count` | Nombre de pull requests créées | aucune |

634| `claude_code.commit.count` | Nombre de commits git créés | aucune |634| `claude_code.commit.count` | Nombre de commits git créés | aucune |

635| `claude_code.cost.usage` | Coût de la session Claude Code | USD |635| `claude_code.cost.usage` | Coût de la session Claude Code | USD |

636| `claude_code.token.usage` | Nombre de jetons utilisés | tokens |636| `claude_code.token.usage` | Nombre de tokens utilisés | tokens |

637| `claude_code.code_edit_tool.decision` | Nombre de décisions de permission de l'outil d'édition de code | aucune |637| `claude_code.code_edit_tool.decision` | Nombre de décisions de permission des outils d'édition de code | aucune |

638| `claude_code.active_time.total` | Temps actif total | s |638| `claude_code.active_time.total` | Temps actif total | s |

639 639 

640Lorsque `prometheus` est le seul exportateur listé dans `OTEL_METRICS_EXPORTER`, Claude Code omet les unités `USD`, `tokens` et `s` des métriques exportées afin que le scrape reste au format texte Prometheus valide. Les noms de métriques ne changent pas, et les configurations qui combinent des exportateurs, par exemple `otlp,prometheus`, conservent les unités. Avant v2.1.216, le scrape Prometheus incluait des lignes `# UNIT` OpenMetrics uniquement que certains scrapers rejetaient.640Lorsque `prometheus` est le seul exportateur indiqué dans `OTEL_METRICS_EXPORTER`, Claude Code omet les unités `USD`, `tokens` et `s` des métriques exportées afin que le scrape reste au format texte Prometheus valide. Les noms des métriques ne changent pas, et les configurations qui combinent plusieurs exportateurs, comme `otlp,prometheus`, conservent les unités. Avant la v2.1.216, le scrape Prometheus incluait des lignes `# UNIT` propres à OpenMetrics que certains scrapers rejetaient.

641 641 

642<h3 id="metric-details">642<h3 id="metric-details">

643 Détails des métriques643 Détails des métriques

644</h3>644</h3>

645 645 

646Chaque métrique inclut les attributs standard listés ci-dessus. Les métriques avec des attributs supplémentaires spécifiques au contexte sont notées ci-dessous.646Chaque métrique inclut les attributs standard listés ci-dessus. Les métriques dotées d'attributs supplémentaires propres à leur contexte sont indiquées ci-dessous.

647 647 

648<h4 id="session-counter">648<h4 id="session-counter">

649 Compteur de sessions649 Compteur de sessions


654**Attributs** :654**Attributs** :

655 655 

656* Tous les [attributs standard](#standard-attributes)656* Tous les [attributs standard](#standard-attributes)

657* `start_type` : Comment la session a été démarrée. L'une de `"fresh"`, `"resume"`, `"continue"`, ou `"agents_view"`. La valeur `"agents_view"` identifie le processus du tableau de bord `claude agents`, une interface utilisateur locale lancée par l'utilisateur plutôt qu'une session conversationnelle. Filtrez sur cette valeur pour séparer les lancements de processus UI des sessions conversationnelles dans vos tableaux de bord.657* `start_type` : mode de démarrage de la session. L'une des valeurs `"fresh"`, `"resume"`, `"continue"` ou `"agents_view"`. La valeur `"agents_view"` identifie le processus du tableau de bord `claude agents`, une interface locale lancée par l'utilisateur plutôt qu'une session conversationnelle. Filtrez sur cette valeur pour distinguer, dans vos tableaux de bord, les lancements de processus d'interface des sessions conversationnelles.

658 658 

659<h4 id="lines-of-code-counter">659<h4 id="lines-of-code-counter">

660 Compteur de lignes de code660 Compteur de lignes de code


666 666 

667* Tous les [attributs standard](#standard-attributes)667* Tous les [attributs standard](#standard-attributes)

668* `type` : (`"added"`, `"removed"`)668* `type` : (`"added"`, `"removed"`)

669* `model` : Identifiant du modèle pour le modèle qui a effectué la modification (par exemple, « claude-sonnet-5 »)669* `model` : identifiant du modèle ayant effectué la modification (par exemple, "claude-sonnet-5")

670 670 

671<h4 id="pull-request-counter">671<h4 id="pull-request-counter">

672 Compteur de demandes de tirage672 Compteur de pull requests

673</h4>673</h4>

674 674 

675Incrémenté lorsque Claude Code crée une demande de tirage ou de fusion via une commande shell ou un outil MCP.675Incrémenté lorsque Claude Code crée une pull request ou une merge request via une commande shell ou un outil MCP.

676 676 

677**Attributs** :677**Attributs** :

678 678 


692 Compteur de coûts692 Compteur de coûts

693</h4>693</h4>

694 694 

695Incrémenté après chaque demande API.695Incrémenté après chaque requête API.

696 696 

697Les attributs `agent.name`, `skill.name`, `plugin.name`, `mcp_server.name` et `mcp_tool.name` rédactent chacun certains noms à un espace réservé `"custom"` ou `"third-party"` par défaut. Si vous définissez `OTEL_LOG_TOOL_DETAILS=1`, ils portent les noms réels à la place. Avant v2.1.273, les compteurs de coûts et de jetons et les événements `api_request`, `api_error` et `api_refusal` portaient les valeurs rédactées même avec `OTEL_LOG_TOOL_DETAILS=1` défini.697Les attributs `agent.name`, `skill.name`, `plugin.name`, `mcp_server.name` et `mcp_tool.name` masquent chacun par défaut certains noms en les remplaçant par l'espace réservé `"custom"` ou `"third-party"`. Si vous définissez `OTEL_LOG_TOOL_DETAILS=1`, ils contiennent les noms réels. Avant la v2.1.273, les compteurs de coûts et de tokens ainsi que les événements `api_request`, `api_error` et `api_refusal` contenaient les valeurs masquées même lorsque `OTEL_LOG_TOOL_DETAILS=1` était défini.

698 698 

699**Attributs** :699**Attributs** :

700 700 

701* Tous les [attributs standard](#standard-attributes)701* Tous les [attributs standard](#standard-attributes)

702* `model` : Identifiant du modèle (par exemple, « claude-sonnet-5 »)702* `model` : identifiant du modèle (par exemple, "claude-sonnet-5")

703* `query_source` : Catégorie du sous-système qui a émis la demande. L'une de `"main"`, `"subagent"`, ou `"auxiliary"`703* `query_source` : catégorie du sous-système ayant émis la requête. L'une des valeurs `"main"`, `"subagent"` ou `"auxiliary"`

704* `speed` : `"fast"` lorsque la demande a utilisé le mode rapide. Absent sinon704* `speed` : `"fast"` lorsque la requête a utilisé le mode rapide. Absent sinon

705* `effort` : [Niveau d'effort](/docs/fr/model-config#adjust-effort-level) appliqué à la demande : `"low"`, `"medium"`, `"high"`, `"xhigh"`, ou `"max"`. Absent lorsque Claude Code n'envoie aucun niveau d'effort, par exemple sur un modèle qui ne supporte pas l'effort.705* `effort` : [niveau d'effort](/docs/fr/model-config#adjust-effort-level) appliqué à la requête : `"low"`, `"medium"`, `"high"`, `"xhigh"` ou `"max"`. Absent lorsque Claude Code n'envoie aucun niveau d'effort, par exemple avec un modèle qui ne prend pas en charge l'effort.

706* `agent.name` : Type de sous-agent qui a émis la demande. Les noms d'agents intégrés et les agents des plugins de la place de marché officielle apparaissent textuellement. Les autres noms d'agents définis par l'utilisateur sont remplacés par `"custom"`. Absent lorsque la demande n'a pas été émise par un type de sous-agent nommé.706* `agent.name` : type de sous-agent ayant émis la requête. Les noms des agents intégrés et des agents provenant de plugins de la marketplace officielle apparaissent tels quels. Les autres noms d'agents définis par l'utilisateur sont remplacés par `"custom"`. Absent lorsque la requête n'a pas été émise par un type de sous-agent nommé.

707* `skill.name` : Compétence active pour la demande, définie par l'outil Skill ou une commande `/`, ou héritée par un sous-agent généré. Les noms de compétences intégrés, groupés, définis par l'utilisateur et de la place de marché officielle des plugins apparaissent textuellement. Les noms de compétences des plugins tiers sont remplacés par `"third-party"`. Absent lorsqu'aucune compétence n'est active.707* `skill.name` : skill actif pour la requête, défini par l'outil Skill ou par une commande `/`, ou hérité par un sous-agent lancé. Les noms des skills intégrés, fournis, définis par l'utilisateur et issus de plugins de la marketplace officielle apparaissent tels quels. Les noms des skills de plugins tiers sont remplacés par `"third-party"`. Absent lorsqu'aucun skill n'est actif.

708* `plugin.name` : Plugin propriétaire lorsque la compétence active ou le sous-agent est fourni par un plugin. Les noms des plugins de la place de marché officielle apparaissent textuellement. Les noms des plugins tiers sont remplacés par `"third-party"`. Absent lorsque ni la compétence ni le sous-agent n'a de plugin propriétaire.708* `plugin.name` : plugin propriétaire lorsque le skill ou le sous-agent actif est fourni par un plugin. Les noms des plugins de la marketplace officielle apparaissent tels quels. Les noms des plugins tiers sont remplacés par `"third-party"`. Absent lorsque ni le skill ni le sous-agent n'a de plugin propriétaire.

709* `marketplace.name` : Place de marché à partir de laquelle le plugin propriétaire a été installé. Émis uniquement pour les plugins de la place de marché officielle, même avec `OTEL_LOG_TOOL_DETAILS=1` défini. Absent sinon.709* `marketplace.name` : marketplace depuis laquelle le plugin propriétaire a été installé. Émis uniquement pour les plugins de la marketplace officielle, même lorsque `OTEL_LOG_TOOL_DETAILS=1` est défini. Absent sinon.

710* `mcp_server.name` : Serveur MCP dont le résultat d'outil cette demande a consommé. Les noms des serveurs intégrés, proxifiés par claude.ai et du registre officiel apparaissent textuellement. Les noms des serveurs configurés par l'utilisateur sont remplacés par `"custom"`. Absent lorsque la demande n'a consommé aucun résultat d'outil MCP. Avant v2.1.222, Claude Code définissait cet attribut sur chaque demande après un appel d'outil MCP, pas seulement sur les demandes qui ont consommé un résultat d'outil, donc les tableaux de bord qui l'agrègent montrent une baisse après la mise à niveau.710* `mcp_server.name` : serveur MCP dont cette requête a consommé le résultat d'outil. Les noms des serveurs intégrés, relayés par claude.ai et du registre officiel apparaissent tels quels. Les noms des serveurs configurés par l'utilisateur sont remplacés par `"custom"`. Absent lorsque la requête n'a consommé aucun résultat d'outil MCP. Avant la v2.1.222, Claude Code définissait cet attribut sur chaque requête suivant un appel d'outil MCP, et pas uniquement sur les requêtes ayant consommé un résultat d'outil ; les tableaux de bord qui l'agrègent affichent donc une baisse après la mise à jour.

711* `mcp_tool.name` : Outil MCP dont le résultat cette demande a consommé, avec le même comportement de rédaction et de version que `mcp_server.name`. Absent lorsque la demande n'a consommé aucun résultat d'outil MCP.711* `mcp_tool.name` : outil MCP dont cette requête a consommé le résultat, avec le même comportement de masquage et de version que `mcp_server.name`. Absent lorsque la requête n'a consommé aucun résultat d'outil MCP.

712 712 

713<h4 id="token-counter">713<h4 id="token-counter">

714 Compteur de jetons714 Compteur de tokens

715</h4>715</h4>

716 716 

717Incrémenté après chaque demande API.717Incrémenté après chaque requête API.

718 718 

719**Attributs** :719**Attributs** :

720 720 

721* Tous les [attributs standard](#standard-attributes)721* Tous les [attributs standard](#standard-attributes)

722* `type` : (`"input"`, `"output"`, `"cacheRead"`, `"cacheCreation"`)722* `type` : (`"input"`, `"output"`, `"cacheRead"`, `"cacheCreation"`). Le type `"input"` exclut les tokens lus depuis le cache de prompts ou écrits dans celui-ci, qui sont comptabilisés sous `"cacheRead"` et `"cacheCreation"`

723* `model` : Identifiant du modèle (par exemple, « claude-sonnet-5 »)723* `model` : identifiant du modèle (par exemple, "claude-sonnet-5")

724* `query_source` : Catégorie du sous-système qui a émis la demande. L'une de `"main"`, `"subagent"`, ou `"auxiliary"`724* `query_source` : catégorie du sous-système ayant émis la requête. L'une des valeurs `"main"`, `"subagent"` ou `"auxiliary"`

725* `speed` : `"fast"` lorsque la demande a utilisé le mode rapide. Absent sinon725* `speed` : `"fast"` lorsque la requête a utilisé le mode rapide. Absent sinon

726* `effort` : [Niveau d'effort](/docs/fr/model-config#adjust-effort-level) appliqué à la demande. Voir [Compteur de coûts](#cost-counter) pour les détails.726* `effort` : [niveau d'effort](/docs/fr/model-config#adjust-effort-level) appliqué à la requête. Consultez [Compteur de coûts](#cost-counter) pour plus de détails.

727* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name` : Attribution de compétence, plugin, agent et MCP pour la demande. Voir [Compteur de coûts](#cost-counter) pour les définitions et le comportement de rédaction.727* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name` : attribution de la requête au skill, au plugin, à l'agent et à MCP. Consultez [Compteur de coûts](#cost-counter) pour les définitions et le comportement de masquage.

728 728 

729<h4 id="code-edit-tool-decision-counter">729<h4 id="code-edit-tool-decision-counter">

730 Compteur de décisions de l'outil d'édition de code730 Compteur de décisions des outils d'édition de code

731</h4>731</h4>

732 732 

733Incrémenté lorsque l'utilisateur accepte ou rejette l'utilisation de l'outil Edit, Write ou NotebookEdit.733Incrémenté lorsque l'utilisateur accepte ou refuse l'utilisation des outils Edit, Write ou NotebookEdit.

734 734 

735**Attributs** :735**Attributs** :

736 736 

737* Tous les [attributs standard](#standard-attributes)737* Tous les [attributs standard](#standard-attributes)

738* `tool_name` : Nom de l'outil (`"Edit"`, `"Write"`, `"NotebookEdit"`)738* `tool_name` : nom de l'outil (`"Edit"`, `"Write"`, `"NotebookEdit"`)

739* `decision` : Décision de l'utilisateur (`"accept"`, `"reject"`)739* `decision` : décision de l'utilisateur (`"accept"`, `"reject"`)

740* `source` : D'où provient la décision. L'une de `"config"`, `"hook"`, `"user_permanent"`, `"user_temporary"`, `"user_abort"`, ou `"user_reject"`. Voir l'[événement de décision d'outil](#tool-decision-event) pour ce que signifie chaque valeur.740* `source` : origine de la décision. L'une des valeurs `"config"`, `"hook"`, `"user_permanent"`, `"user_temporary"`, `"user_abort"` ou `"user_reject"`. Consultez l'[événement de décision d'outil](#tool-decision-event) pour la signification de chaque valeur.

741* `language` : Langage de programmation du fichier édité, par exemple `"TypeScript"`, `"Python"`, `"JavaScript"`, ou `"Markdown"`. Retourne `"unknown"` pour les extensions de fichier non reconnues.741* `language` : langage de programmation du fichier modifié, par exemple `"TypeScript"`, `"Python"`, `"JavaScript"` ou `"Markdown"`. Renvoie `"unknown"` pour les extensions de fichier non reconnues.

742 742 

743<h4 id="active-time-counter">743<h4 id="active-time-counter">

744 Compteur de temps actif744 Compteur de temps actif

745</h4>745</h4>

746 746 

747Suit le temps réel passé à utiliser activement Claude Code, excluant le temps d'inactivité. Cette métrique est incrémentée lors des interactions utilisateur, telles que la saisie et la lecture des réponses, et lors du traitement CLI, tel que l'exécution d'outils et la génération de réponses IA.747Mesure le temps réellement passé à utiliser activement Claude Code, hors temps d'inactivité. Cette métrique est incrémentée pendant les interactions de l'utilisateur, comme la saisie et la lecture des réponses, ainsi que pendant le traitement par la CLI, comme l'exécution des outils et la génération des réponses de l'IA.

748 748 

749**Attributs** :749**Attributs** :

750 750 

751* Tous les [attributs standard](#standard-attributes)751* Tous les [attributs standard](#standard-attributes)

752* `type` : `"user"` pour les interactions au clavier, `"cli"` pour l'exécution d'outils et les réponses IA752* `type` : `"user"` pour les interactions au clavier, `"cli"` pour l'exécution des outils et les réponses de l'IA

753 753 

754<h3 id="events">754<h3 id="events">

755 Événements755 Événements

756</h3>756</h3>

757 757 

758Claude Code exporte les événements suivants via les journaux/événements OpenTelemetry (lorsque `OTEL_LOGS_EXPORTER` est configuré) :758Claude Code exporte les événements suivants via les logs/événements OpenTelemetry (lorsque `OTEL_LOGS_EXPORTER` est configuré) :

759 759 

760<h4 id="event-correlation-attributes">760<h4 id="event-correlation-attributes">

761 Attributs de corrélation d'événements761 Attributs de corrélation des événements

762</h4>762</h4>

763 763 

764Lorsqu'un utilisateur soumet une invite, Claude Code peut effectuer plusieurs appels API et exécuter plusieurs outils. L'attribut `prompt.id` vous permet de lier tous ces événements à l'invite unique qui les a déclenchés.764Lorsqu'un utilisateur soumet un prompt, Claude Code peut effectuer plusieurs appels API et exécuter plusieurs outils. L'attribut `prompt.id` vous permet de rattacher tous ces événements au prompt unique qui les a déclenchés.

765 765 

766| Attribut | Description |766| Attribut | Description |

767| - | - |767| - | - |

768| `prompt.id` | Identifiant UUID v4 reliant tous les événements produits lors du traitement d'une seule invite utilisateur |768| `prompt.id` | Identifiant UUID v4 reliant tous les événements produits lors du traitement d'un même prompt utilisateur |

769| `event.sequence` | Compteur basé sur 0 pour ordonner les événements, compté par processus Claude Code plutôt que par session |769| `event.sequence` | Compteur commençant à 0 pour ordonner les événements, comptabilisé par processus Claude Code plutôt que par session |

770| `message.uuid` | UUID du message tel que persisté dans la transcription de session, les fichiers `~/.claude/projects/*/*.jsonl`. Présent sur `assistant_response`, sur `api_response_body`, et sur `user_prompt` sauf pour les dispatches de commandes, qui peuvent produire zéro ou plusieurs messages. Sur `assistant_response` et `api_response_body`, c'est l'entrée de transcription finale de la réponse, à partir de laquelle le `parentUuid` du tour suivant s'enchaîne. Nécessite Claude Code v2.1.214 ou ultérieur, ou v2.1.274 ou ultérieur sur `api_response_body` |770| `message.uuid` | UUID du message tel qu'il est conservé dans la transcription de la session, les fichiers `~/.claude/projects/*/*.jsonl`. Présent sur `assistant_response`, sur `api_response_body` et sur `user_prompt`, sauf pour les envois de commandes, qui peuvent produire zéro ou plusieurs messages. Sur `assistant_response` et `api_response_body`, il s'agit de la dernière entrée de transcription de la réponse, à laquelle se rattache le `parentUuid` du tour suivant. Nécessite Claude Code v2.1.214 ou ultérieur, ou v2.1.274 ou ultérieur pour `api_response_body` |

771| `request_id` | ID assigné par le serveur de la demande API, lu à partir de l'en-tête de réponse `request-id`, par exemple `req_011...`. Sur une réponse sans en-tête `request-id`, comme sur [Amazon Bedrock](/docs/fr/amazon-bedrock), la valeur provient de l'en-tête `x-amzn-requestid` à la place. Présent sur `api_request`, `api_error`, `api_refusal`, `assistant_response`, et `api_response_body` lorsque la réponse porte l'un ou l'autre en-tête. Correspond au même attribut sur la plage de trace `llm_request`. La source `x-amzn-requestid` nécessite Claude Code v2.1.282 ou ultérieur |771| `request_id` | ID attribué par le serveur à la requête API, lu depuis l'en-tête de réponse `request-id`, par exemple `req_011...`. Pour une réponse sans en-tête `request-id`, comme sur [Amazon Bedrock](/docs/fr/amazon-bedrock), la valeur provient plutôt de l'en-tête `x-amzn-requestid`. Présent sur `api_request`, `api_error`, `api_refusal`, `assistant_response` et `api_response_body` lorsque la réponse contient l'un de ces en-têtes. Correspond au même attribut sur le span de trace `llm_request`. La source `x-amzn-requestid` nécessite Claude Code v2.1.282 ou ultérieur |

772| `client_request_id` | UUID généré par le client envoyé comme en-tête de demande `x-client-request-id`. Présent sur `api_request` et `api_error` sur les connexions API propriétaires ; absent sur les backends de fournisseurs tiers et lorsque la demande a été retentée via le secours non-streaming. Apparie une demande avec sa réponse et reste disponible pour les défaillances telles que les délais d'expiration qui n'ont jamais produit de `request_id` serveur. Correspond au même attribut sur la plage de trace `llm_request`. Nécessite Claude Code v2.1.214 ou ultérieur |772| `client_request_id` | UUID généré par le client et envoyé dans l'en-tête de requête `x-client-request-id`. Présent sur `api_request` et `api_error` pour les connexions à l'API first-party ; absent sur les backends de fournisseurs tiers et lorsque la requête a été réessayée via la solution de repli sans streaming. Associe une requête à sa réponse et reste disponible pour les échecs, comme les délais d'expiration, qui n'ont jamais produit de `request_id` côté serveur. Correspond au même attribut sur le span de trace `llm_request`. Nécessite Claude Code v2.1.214 ou ultérieur |

773 773 

774Pour tracer toute l'activité déclenchée par une seule invite, filtrez vos événements par une valeur `prompt.id` spécifique. Cela retourne l'événement user\_prompt, tous les événements api\_request, et tous les événements tool\_result qui se sont produits lors du traitement de cette invite.774Pour retracer toute l'activité déclenchée par un même prompt, filtrez vos événements sur une valeur `prompt.id` spécifique. Vous obtenez ainsi l'événement user\_prompt, les éventuels événements api\_request et les éventuels événements tool\_result survenus pendant le traitement de ce prompt.

775 775 

776`event.sequence` commence à 0 chaque fois qu'un processus Claude Code démarre et compte jusqu'à la fin de ce processus. Il continue de compter à travers `/clear`, qui assigne un nouveau `session.id`. Si vous [reprenez une session sans la forker](/docs/fr/how-claude-code-works#resume-or-fork-sessions), la session conserve son `session.id` mais prend ses valeurs `event.sequence` du processus qui l'a reprise, donc au sein d'une session un événement ultérieur peut porter une valeur inférieure à celle d'un événement antérieur, ou en répéter une. Pour ordonner les événements d'une session, triez par `event.timestamp` et utilisez `event.sequence` pour ordonner les événements qui partagent un timestamp.776`event.sequence` commence à 0 à chaque démarrage d'un processus Claude Code et s'incrémente pendant toute la durée de vie de ce processus. Il continue de s'incrémenter après `/clear`, qui attribue un nouveau `session.id`. Si vous [reprenez une session sans la dupliquer](/docs/fr/how-claude-code-works#resume-or-fork-sessions), la session conserve son `session.id` mais tire ses valeurs `event.sequence` du processus qui l'a reprise ; au sein d'une même session, un événement ultérieur peut donc porter une valeur inférieure à celle d'un événement antérieur, ou la répéter. Pour ordonner les événements d'une session, triez-les par `event.timestamp` et utilisez `event.sequence` pour ordonner les événements qui partagent un même horodatage.

777 777 

778Pour la reconstruction au niveau du message, chaque classe d'événement porte une clé qui correspond à un champ dans la transcription de session. Le format d'entrée de transcription est [interne à Claude Code](/docs/fr/sessions#where-transcripts-are-stored) et change entre les versions, donc un pipeline qui se joint sur ces champs peut se casser à chaque version ; traitez les jointures comme spécifiques à la version plutôt que comme un contrat stable :778Pour une reconstitution au niveau des messages, chaque classe d'événements porte une clé correspondant à un champ de la transcription de la session. Le format des entrées de transcription est [interne à Claude Code](/docs/fr/sessions#where-transcripts-are-stored) et change d'une version à l'autre ; un pipeline qui effectue des jointures sur ces champs peut donc cesser de fonctionner à n'importe quelle version. Considérez ces jointures comme propres à une version plutôt que comme un contrat stable :

779 779 

780* `message.uuid` sur `user_prompt`, `assistant_response`, et `api_response_body`780* `message.uuid` sur `user_prompt`, `assistant_response` et `api_response_body`

781* `request_id` sur les événements API, persisté comme `requestId` sur les entrées d'assistant de la transcription781* `request_id` sur les événements d'API, conservé sous le nom `requestId` dans les entrées assistant de la transcription

782* `tool_use_id` sur les événements `tool_result` et `tool_decision`782* `tool_use_id` sur les événements `tool_result` et `tool_decision`

783 783 

784<h4 id="user-prompt-event">784<h4 id="user-prompt-event">

785 Événement d'invite utilisateur785 Événement de prompt utilisateur

786</h4>786</h4>

787 787 

788Enregistré lorsqu'un utilisateur soumet une invite.788Journalisé lorsqu'un utilisateur soumet un prompt.

789 789 

790**Nom de l'événement** : `claude_code.user_prompt`790**Nom de l'événement** : `claude_code.user_prompt`

791 791 


793 793 

794* Tous les [attributs standard](#standard-attributes)794* Tous les [attributs standard](#standard-attributes)

795* `event.name` : `"user_prompt"`795* `event.name` : `"user_prompt"`

796* `event.timestamp` : Timestamp ISO 8601796* `event.timestamp` : horodatage ISO 8601

797* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)797* `event.sequence` : compteur par processus pour ordonner les événements, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes)

798* `prompt_length` : Longueur de l'invite798* `prompt_length` : longueur du prompt

799* `prompt` : Contenu de l'invite. Rédacté par défaut. Définissez `OTEL_LOG_USER_PROMPTS=1` pour l'inclure799* `prompt` : contenu du prompt. Masqué par défaut. Définissez `OTEL_LOG_USER_PROMPTS=1` pour l'inclure

800* `message.uuid` : UUID du message utilisateur résultant, correspondant à l'entrée de transcription persistée. Absent sur les dispatches de commandes, qui peuvent produire zéro ou plusieurs messages. Nécessite Claude Code v2.1.214 ou ultérieur800* `message.uuid` : UUID du message utilisateur résultant, correspondant à l'entrée de transcription conservée. Absent pour les envois de commandes, qui peuvent produire zéro ou plusieurs messages. Nécessite Claude Code v2.1.214 ou ultérieur

801* `command_name` : Nom de la commande lorsque l'invite en invoque une. Les noms de commandes intégrés et groupés tels que `compact` ou `debug` sont émis tels quels ; les alias tels que `reset` émettent tels que tapés plutôt que le nom canonique. Les noms de commandes personnalisés, de plugins et MCP s'effondrent à `custom` ou `mcp` sauf si `OTEL_LOG_TOOL_DETAILS=1` est défini801* `command_name` : nom de la commande lorsque le prompt en invoque une. Les noms des commandes intégrées et fournies, comme `compact` ou `debug`, sont émis tels quels ; les alias comme `reset` sont émis tels que saisis plutôt que sous leur nom canonique. Les noms des commandes personnalisées, de plugins et MCP sont ramenés à `custom` ou `mcp`, sauf si `OTEL_LOG_TOOL_DETAILS=1` est défini

802* `command_source` : Origine de la commande lorsqu'elle est présente : `builtin`, `custom`, ou `mcp`. Les commandes fournies par les plugins signalent comme `custom`802* `command_source` : origine de la commande lorsqu'elle est présente : `builtin`, `custom` ou `mcp`. Les commandes fournies par des plugins sont signalées comme `custom`

803 803 

804<h4 id="assistant-response-event">804<h4 id="assistant-response-event">

805 Événement de réponse d'assistant805 Événement de réponse de l'assistant

806</h4>806</h4>

807 807 

808Enregistré après chaque demande API qui retourne du contenu textuel du modèle. Seuls les blocs de texte de la réponse sont inclus ; les blocs de réflexion et les blocs d'utilisation d'outils sont exclus. Nécessite Claude Code v2.1.193 ou ultérieur.808Journalisé après chaque requête API qui renvoie du contenu textuel de la part du modèle. Seuls les blocs de texte de la réponse sont inclus ; les blocs de réflexion et d'utilisation d'outils sont exclus. Nécessite Claude Code v2.1.193 ou ultérieur.

809 809 

810**Nom de l'événement** : `claude_code.assistant_response`810**Nom de l'événement** : `claude_code.assistant_response`

811 811 


813 813 

814* Tous les [attributs standard](#standard-attributes)814* Tous les [attributs standard](#standard-attributes)

815* `event.name` : `"assistant_response"`815* `event.name` : `"assistant_response"`

816* `event.timestamp` : Timestamp ISO 8601816* `event.timestamp` : horodatage ISO 8601

817* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)817* `event.sequence` : compteur par processus pour ordonner les événements, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes)

818* `response_length` : Longueur du texte de réponse en caractères818* `response_length` : longueur du texte de la réponse en caractères

819* `response` : Texte de réponse, tronqué à la limite de contenu (60 KB par défaut). Rédacté à `<REDACTED>` par défaut. Définissez `OTEL_LOG_ASSISTANT_RESPONSES=1` pour l'inclure. Lorsque `OTEL_LOG_ASSISTANT_RESPONSES` n'est pas défini, `OTEL_LOG_USER_PROMPTS` le contrôle à la place, donc définissez `OTEL_LOG_ASSISTANT_RESPONSES=0` pour garder les réponses rédactées tandis que la journalisation des invites est activée819* `response` : texte de la réponse, tronqué à la limite de contenu (60 Ko par défaut). Masqué en `<REDACTED>` par défaut. Définissez `OTEL_LOG_ASSISTANT_RESPONSES=1` pour l'inclure. Lorsque `OTEL_LOG_ASSISTANT_RESPONSES` n'est pas défini, c'est `OTEL_LOG_USER_PROMPTS` qui le contrôle ; définissez donc `OTEL_LOG_ASSISTANT_RESPONSES=0` pour garder les réponses masquées lorsque la journalisation des prompts est activée

820* `model` : Identifiant du modèle (par exemple, « claude-sonnet-5 »)820* `model` : identifiant du modèle (par exemple, "claude-sonnet-5")

821* `request_id` : ID de demande API, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)821* `request_id` : ID de la requête API, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes)

822* `message.uuid` : UUID de l'entrée de transcription finale de la réponse. Une réponse API est persistée comme une entrée de transcription par bloc de contenu ; c'est la dernière, à partir de laquelle le `parentUuid` du tour suivant s'enchaîne. Nécessite Claude Code v2.1.214 ou ultérieur822* `message.uuid` : UUID de la dernière entrée de transcription de la réponse. Une réponse de l'API est conservée sous la forme d'une entrée de transcription par bloc de contenu ; il s'agit de la dernière, à laquelle se rattache le `parentUuid` du tour suivant. Nécessite Claude Code v2.1.214 ou ultérieur

823* `query_source` : Sous-système qui a émis la demande, par exemple `"repl_main_thread"`, `"compact"`, ou un nom de sous-agent823* `query_source` : sous-système ayant émis la requête, par exemple `"repl_main_thread"`, `"compact"` ou le nom d'un sous-agent

824 824 

825<h4 id="tool-result-event">825<h4 id="tool-result-event">

826 Événement de résultat d'outil826 Événement de résultat d'outil

827</h4>827</h4>

828 828 

829Enregistré lorsqu'un outil termine son exécution. Non émis si l'appel d'outil a été rejeté ; voir l'[événement de décision d'outil](#tool-decision-event) pour les rejets.829Journalisé lorsqu'un outil termine son exécution. Non émis si l'appel d'outil a été refusé ; consultez l'[événement de décision d'outil](#tool-decision-event) pour les refus.

830 830 

831**Nom de l'événement** : `claude_code.tool_result`831**Nom de l'événement** : `claude_code.tool_result`

832 832 


834 834 

835* Tous les [attributs standard](#standard-attributes)835* Tous les [attributs standard](#standard-attributes)

836* `event.name` : `"tool_result"`836* `event.name` : `"tool_result"`

837* `event.timestamp` : Timestamp ISO 8601837* `event.timestamp` : horodatage ISO 8601

838* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)838* `event.sequence` : compteur par processus pour ordonner les événements, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes)

839* `tool_name` : Nom de l'outil839* `tool_name` : nom de l'outil

840* `tool_use_id` : Identifiant unique pour cette invocation d'outil. Correspond au `tool_use_id` passé aux hooks, permettant la corrélation entre les événements OTel et les données capturées par les hooks.840* `tool_use_id` : identifiant unique de cette invocation d'outil. Correspond au `tool_use_id` transmis aux hooks, ce qui permet de corréler les événements OTel avec les données capturées par les hooks.

841* `success` : `"true"` ou `"false"`841* `success` : `"true"` ou `"false"`

842* `duration_ms` : Temps d'exécution en millisecondes842* `duration_ms` : durée d'exécution en millisecondes

843* `error_type` : Chaîne de catégorie d'erreur lorsque l'outil a échoué, par exemple `"Error:ENOENT"` ou `"ShellError"`843* `error_type` : chaîne de catégorie d'erreur lorsque l'outil a échoué, par exemple `"Error:ENOENT"` ou `"ShellError"`

844* `error` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : Message d'erreur complet lorsque l'outil a échoué844* `error` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : message d'erreur complet lorsque l'outil a échoué

845* `decision_type` : Toujours `"accept"`, puisque cet événement n'est émis qu'après l'exécution de l'outil. Les appels rejetés ne produisent pas de résultat d'outil845* `decision_type` : toujours `"accept"`, puisque cet événement n'est émis qu'après l'exécution de l'outil. Les appels refusés ne produisent pas de résultat d'outil

846* `decision_source` : D'où provient la décision de permission. L'une de `"config"`, `"hook"`, `"user_permanent"`, ou `"user_temporary"`. Voir l'[événement de décision d'outil](#tool-decision-event) pour ce que signifie chaque valeur. Les sources réservées au rejet `"user_abort"` et `"user_reject"` n'apparaissent jamais sur cet événement.846* `decision_source` : origine de la décision de permission. L'une des valeurs `"config"`, `"hook"`, `"user_permanent"` ou `"user_temporary"`. Consultez l'[événement de décision d'outil](#tool-decision-event) pour la signification de chaque valeur. Les sources propres aux refus, `"user_abort"` et `"user_reject"`, n'apparaissent jamais sur cet événement.

847* `tool_input_size_bytes` : Taille de l'entrée d'outil sérialisée en JSON en octets847* `tool_input_size_bytes` : taille en octets de l'entrée de l'outil sérialisée en JSON

848* `tool_result_size_bytes` : Taille du résultat d'outil en octets848* `tool_result_size_bytes` : taille en octets du résultat de l'outil

849* `mcp_server_scope` : Identifiant de portée du serveur MCP (pour les outils MCP)849* `mcp_server_scope` : identifiant de portée du serveur MCP (pour les outils MCP)

850* `vcs.ref.head.revision`, `vcs.ref.head.name`, `vcs.ref.head.type` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : l'identité de commit d'une exécution `git commit` réussie par l'outil Bash ou PowerShell. `vcs.ref.head.revision` est le SHA du commit, `vcs.ref.head.name` est la branche sur laquelle il a été commité, et `vcs.ref.head.type` est `branch`. Le nom et le type sont omis lorsque le commit a été effectué sur un HEAD détaché. Nécessite Claude Code v2.1.269 ou ultérieur850* `vcs.ref.head.revision`, `vcs.ref.head.name`, `vcs.ref.head.type` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : identité du commit d'un `git commit` réussi exécuté par l'outil Bash ou PowerShell. `vcs.ref.head.revision` est le SHA du commit, `vcs.ref.head.name` est la branche sur laquelle il a été créé et `vcs.ref.head.type` vaut `branch`. Le nom et le type sont omis lorsque le commit a été créé sur une HEAD détachée. Nécessite Claude Code v2.1.269 ou ultérieur

851* `tool_parameters` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : Chaîne JSON contenant les paramètres spécifiques à l'outil. Pour les serveurs intégrés du Claude Desktop, dans les sessions que Claude Desktop possède, la paire `mcp_server_name`/`mcp_tool_name` est incluse même avec le drapeau désactivé, la même exception créée par l'hôte que l'[événement de décision d'outil](#tool-decision-event), nécessitant Claude Code v2.1.214 ou ultérieur. Les paramètres varient selon l'outil :851* `tool_parameters` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : chaîne JSON contenant les paramètres propres à l'outil. Pour les serveurs intégrés de Claude Desktop, dans les sessions dont Claude Desktop est propriétaire, la paire `mcp_server_name`/`mcp_tool_name` est incluse même lorsque le flag est désactivé, selon la même exception liée à l'hôte que pour l'[événement de décision d'outil](#tool-decision-event), ce qui nécessite Claude Code v2.1.214 ou ultérieur. Les paramètres varient selon l'outil :

852 * Pour l'outil Bash : inclut `bash_command`, `full_command`, `timeout`, `description`, et `dangerouslyDisableSandbox`, plus `git_commit_id` et `git_branch` lorsqu'une commande `git commit` réussit. `git_commit_id` est le SHA complet du commit lorsque le commit est le HEAD du répertoire de travail de la session, et le SHA abrégé de git sinon. `git_branch` est la branche sur laquelle il a été commité, omis sur un HEAD détaché852 * Pour l'outil Bash : inclut `bash_command`, `full_command`, `timeout`, `description` et `dangerouslyDisableSandbox`, ainsi que `git_commit_id` et `git_branch` lorsqu'une commande `git commit` réussit. `git_commit_id` est le SHA complet du commit lorsque celui-ci est la HEAD du répertoire de travail de la session, et le SHA abrégé de git sinon. `git_branch` est la branche sur laquelle il a été créé, omise sur une HEAD détachée

853 * Pour l'outil Bash d'espace de travail de l'application de bureau, qui signale également `tool_name` comme `Bash` : inclut uniquement `bash_command`, `full_command`, et `timeout`853 * Pour l'outil Bash de l'espace de travail de l'application de bureau, qui signale également `tool_name` comme `Bash` : inclut uniquement `bash_command`, `full_command` et `timeout`

854 * Pour les outils MCP : inclut `mcp_server_name`, `mcp_tool_name`854 * Pour les outils MCP : inclut `mcp_server_name`, `mcp_tool_name`

855 * Pour l'outil Skill : inclut `skill_name`855 * Pour l'outil Skill : inclut `skill_name`

856 * Pour l'outil Agent ou l'outil Task hérité : inclut `subagent_type`856 * Pour l'outil Agent ou l'ancien outil Task : inclut `subagent_type`

857* `tool_input` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : Arguments d'outil sérialisés en JSON. Les valeurs individuelles supérieures à 512 caractères sont tronquées, et la charge utile complète est limitée à environ 4 K caractères. S'applique à tous les outils, y compris les outils MCP.857* `tool_input` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : arguments de l'outil sérialisés en JSON. Les valeurs individuelles de plus de 512 caractères sont tronquées, et le payload complet est limité à \~4 K caractères. S'applique à tous les outils, y compris les outils MCP.

858 858 

859<h4 id="api-request-event">859<h4 id="api-request-event">

860 Événement de demande API860 Événement de requête API

861</h4>861</h4>

862 862 

863Enregistré pour chaque demande API à Claude.863Journalisé pour chaque requête API envoyée à Claude.

864 864 

865**Nom de l'événement** : `claude_code.api_request`865**Nom de l'événement** : `claude_code.api_request`

866 866 


868 868 

869* Tous les [attributs standard](#standard-attributes)869* Tous les [attributs standard](#standard-attributes)

870* `event.name` : `"api_request"`870* `event.name` : `"api_request"`

871* `event.timestamp` : Timestamp ISO 8601871* `event.timestamp` : horodatage ISO 8601

872* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)872* `event.sequence` : compteur par processus pour ordonner les événements, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes)

873* `model` : Modèle utilisé (par exemple, « claude-sonnet-5 »)873* `model` : modèle utilisé (par exemple, "claude-sonnet-5")

874* `cost_usd` : Coût estimé en USD874* `cost_usd` : coût estimé en USD

875* `cost_usd_micros` : Coût estimé en millionièmes de dollar américain, émis sous forme d'entier875* `cost_usd_micros` : coût estimé en millionièmes de dollar américain, émis sous forme d'entier

876* `duration_ms` : Durée de la demande en millisecondes876* `duration_ms` : durée de la requête en millisecondes

877* `input_tokens` : Nombre de jetons d'entrée877* `input_tokens` : nombre de tokens d'entrée, hors tokens lus depuis le cache de prompts ou écrits dans celui-ci

878* `output_tokens` : Nombre de jetons de sortie878* `output_tokens` : nombre de tokens de sortie

879* `cache_read_tokens` : Nombre de jetons lus du cache879* `cache_read_tokens` : nombre de tokens lus depuis le cache

880* `cache_creation_tokens` : Nombre de jetons utilisés pour la création du cache880* `cache_creation_tokens` : nombre de tokens utilisés pour la création du cache

881* `request_id` : ID de demande API, par exemple `"req_011..."`, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes).881* `request_id` : ID de la requête API, par exemple `"req_011..."`, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes).

882* `client_request_id` : UUID généré par le client envoyé comme en-tête de demande `x-client-request-id` ; voir le tableau [attributs de corrélation d'événements](#event-correlation-attributes) pour savoir quand il est présent. Nécessite Claude Code v2.1.214 ou ultérieur882* `client_request_id` : UUID généré par le client et envoyé dans l'en-tête de requête `x-client-request-id` ; consultez le tableau des [attributs de corrélation des événements](#event-correlation-attributes) pour savoir quand il est présent. Nécessite Claude Code v2.1.214 ou ultérieur

883* `speed` : `"fast"` ou `"normal"`, indiquant si le mode rapide était actif883* `speed` : `"fast"` ou `"normal"`, indiquant si le mode rapide était actif

884* `query_source` : Sous-système qui a émis la demande, par exemple `"repl_main_thread"`, `"compact"`, ou un nom de sous-agent884* `query_source` : sous-système ayant émis la requête, par exemple `"repl_main_thread"`, `"compact"` ou le nom d'un sous-agent

885* `effort` : [Niveau d'effort](/docs/fr/model-config#adjust-effort-level) appliqué à la demande : `"low"`, `"medium"`, `"high"`, `"xhigh"`, ou `"max"`. Absent lorsque Claude Code n'envoie aucun niveau d'effort, par exemple sur un modèle qui ne supporte pas l'effort.885* `effort` : [niveau d'effort](/docs/fr/model-config#adjust-effort-level) appliqué à la requête : `"low"`, `"medium"`, `"high"`, `"xhigh"` ou `"max"`. Absent lorsque Claude Code n'envoie aucun niveau d'effort, par exemple avec un modèle qui ne prend pas en charge l'effort.

886* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name` : Attribution de compétence, plugin, agent et MCP pour la demande. Voir [Compteur de coûts](#cost-counter) pour les définitions et le comportement de rédaction.886* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name` : attribution de la requête au skill, au plugin, à l'agent et à MCP. Consultez [Compteur de coûts](#cost-counter) pour les définitions et le comportement de masquage.

887 887 

888<h4 id="api-error-event">888<h4 id="api-error-event">

889 Événement d'erreur API889 Événement d'erreur API

890</h4>890</h4>

891 891 

892Enregistré lorsqu'une demande API à Claude échoue.892Journalisé lorsqu'une requête API envoyée à Claude échoue.

893 893 

894**Nom de l'événement** : `claude_code.api_error`894**Nom de l'événement** : `claude_code.api_error`

895 895 


897 897 

898* Tous les [attributs standard](#standard-attributes)898* Tous les [attributs standard](#standard-attributes)

899* `event.name` : `"api_error"`899* `event.name` : `"api_error"`

900* `event.timestamp` : Timestamp ISO 8601900* `event.timestamp` : horodatage ISO 8601

901* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)901* `event.sequence` : compteur par processus pour ordonner les événements, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes)

902* `model` : Modèle utilisé (par exemple, « claude-sonnet-5 »)902* `model` : modèle utilisé (par exemple, "claude-sonnet-5")

903* `error` : Message d'erreur903* `error` : message d'erreur

904* `status_code` : Code de statut HTTP sous forme de nombre. Absent pour les erreurs non-HTTP telles que les défaillances de connexion.904* `status_code` : code de statut HTTP sous forme de nombre. Absent pour les erreurs non HTTP, comme les échecs de connexion.

905* `duration_ms` : Durée de la demande en millisecondes905* `duration_ms` : durée de la requête en millisecondes

906* `attempt` : Nombre total de tentatives effectuées, y compris la demande initiale (`1` signifie qu'aucune nouvelle tentative n'a eu lieu)906* `attempt` : nombre total de tentatives effectuées, y compris la requête initiale (`1` signifie qu'aucune nouvelle tentative n'a eu lieu)

907* `request_id` : ID de demande API, par exemple `"req_011..."`, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes).907* `request_id` : ID de la requête API, par exemple `"req_011..."`, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes).

908* `client_request_id` : UUID généré par le client envoyé comme en-tête de demande `x-client-request-id`. Disponible même lorsqu'une défaillance telle qu'un délai d'expiration ou une erreur de connexion n'a jamais produit de `request_id` serveur ; voir le tableau [attributs de corrélation d'événements](#event-correlation-attributes) pour savoir quand il est présent. Nécessite Claude Code v2.1.214 ou ultérieur908* `client_request_id` : UUID généré par le client et envoyé dans l'en-tête de requête `x-client-request-id`. Disponible même lorsqu'un échec, comme un délai d'expiration ou une erreur de connexion, n'a jamais produit de `request_id` côté serveur ; consultez le tableau des [attributs de corrélation des événements](#event-correlation-attributes) pour savoir quand il est présent. Nécessite Claude Code v2.1.214 ou ultérieur

909* `speed` : `"fast"` ou `"normal"`, indiquant si le mode rapide était actif909* `speed` : `"fast"` ou `"normal"`, indiquant si le mode rapide était actif

910* `query_source` : Sous-système qui a émis la demande, par exemple `"repl_main_thread"`, `"compact"`, ou un nom de sous-agent910* `query_source` : sous-système ayant émis la requête, par exemple `"repl_main_thread"`, `"compact"` ou le nom d'un sous-agent

911* `effort` : [Niveau d'effort](/docs/fr/model-config#adjust-effort-level) appliqué à la demande. Absent lorsque Claude Code n'envoie aucun niveau d'effort, par exemple sur un modèle qui ne supporte pas l'effort.911* `effort` : [niveau d'effort](/docs/fr/model-config#adjust-effort-level) appliqué à la requête. Absent lorsque Claude Code n'envoie aucun niveau d'effort, par exemple avec un modèle qui ne prend pas en charge l'effort.

912* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name` : Attribution de compétence, plugin, agent et MCP pour la demande. Voir [Compteur de coûts](#cost-counter) pour les définitions et le comportement de rédaction.912* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name` : attribution de la requête au skill, au plugin, à l'agent et à MCP. Consultez [Compteur de coûts](#cost-counter) pour les définitions et le comportement de masquage.

913 913 

914<h4 id="api-refusal-event">914<h4 id="api-refusal-event">

915 Événement de refus API915 Événement de refus API

916</h4>916</h4>

917 917 

918Enregistré lorsqu'une demande API retourne `stop_reason: "refusal"`. Les refus arrivent sur un flux de réponse réussi plutôt que comme une erreur HTTP, donc l'événement `api_error` ne se déclenche pas pour eux. Cet événement vous permet de suivre la fréquence des refus et de regrouper les refus par les mêmes attributs que `api_request` et `api_error`.918Journalisé lorsqu'une requête API renvoie `stop_reason: "refusal"`. Les refus arrivent sur un flux de réponse réussi plutôt que sous forme d'erreur HTTP ; l'événement `api_error` ne se déclenche donc pas pour eux. Cet événement vous permet de suivre la fréquence des refus et de les regrouper selon les mêmes attributs que `api_request` et `api_error`.

919 919 

920**Nom de l'événement** : `claude_code.api_refusal`920**Nom de l'événement** : `claude_code.api_refusal`

921 921 


923 923 

924* Tous les [attributs standard](#standard-attributes)924* Tous les [attributs standard](#standard-attributes)

925* `event.name` : `"api_refusal"`925* `event.name` : `"api_refusal"`

926* `event.timestamp` : Timestamp ISO 8601926* `event.timestamp` : horodatage ISO 8601

927* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)927* `event.sequence` : compteur par processus pour ordonner les événements, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes)

928* `model` : Identifiant du modèle de la demande928* `model` : identifiant du modèle indiqué dans la requête

929* `request_id` : ID de demande API, par exemple `"req_011..."`, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes).929* `request_id` : ID de la requête API, par exemple `"req_011..."`, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes).

930* `query_source` : Sous-système qui a émis la demande, par exemple `"repl_main_thread"`, `"compact"`, ou un nom de sous-agent. Voir [`api_request`](#api-request-event) pour les définitions.930* `query_source` : sous-système ayant émis la requête, par exemple `"repl_main_thread"`, `"compact"` ou le nom d'un sous-agent. Consultez [`api_request`](#api-request-event) pour les définitions.

931* `speed` : Soit `"fast"` lorsque le [Mode rapide](/docs/fr/fast-mode) est actif, soit `"normal"`931* `speed` : `"fast"` lorsque le [mode rapide](/docs/fr/fast-mode) est actif, ou `"normal"`

932* `attempt` : Numéro de tentative de nouvelle tentative. La première tentative est `1`.932* `attempt` : numéro de la tentative. La première tentative vaut `1`.

933* `effort` : [Niveau d'effort](/docs/fr/model-config#adjust-effort-level) appliqué à la demande. Absent lorsque Claude Code n'envoie aucun niveau d'effort, par exemple sur un modèle qui ne supporte pas l'effort.933* `effort` : [niveau d'effort](/docs/fr/model-config#adjust-effort-level) appliqué à la requête. Absent lorsque Claude Code n'envoie aucun niveau d'effort, par exemple avec un modèle qui ne prend pas en charge l'effort.

934* `server_fallback_hop` : `true` lorsque le secours du modèle côté serveur de l'API a déjà retesté ce refus sur un modèle différent, donc l'utilisateur n'a pas vu ce refus particulier. `false` lorsque la demande s'est terminée par un refus. Un seul tour peut émettre à la fois un événement `true` hop et un événement `false` final ultérieur lorsque le modèle de secours refuse également.934* `server_fallback_hop` : `true` lorsque le mécanisme de modèle de secours côté serveur de l'API a déjà réessayé ce refus sur un autre modèle, de sorte que l'utilisateur n'a pas vu ce refus en particulier. `false` lorsque la requête s'est terminée par un refus. Un même tour peut émettre à la fois un événement intermédiaire `true` et un événement final `false` ultérieur lorsque le modèle de secours refuse également.

935* `has_category` : `true` lorsque la réponse API portait une `stop_details.category` de `"cyber"`, `"bio"`, `"frontier_llm"`, ou `"reasoning_extraction"`. `false` lorsque la réponse ne portait aucune catégorie ou une valeur en dehors de cet ensemble. Absent lorsque `server_fallback_hop` est `true`, car les blocs hop ne portent pas `stop_details`.935* `has_category` : `true` lorsque la réponse de l'API contenait un `stop_details.category` valant `"cyber"`, `"bio"`, `"frontier_llm"` ou `"reasoning_extraction"`. `false` lorsque la réponse ne contenait aucune catégorie ou une valeur hors de cet ensemble. Absent lorsque `server_fallback_hop` vaut `true`, car les blocs intermédiaires ne contiennent pas de `stop_details`.

936* `has_explanation` : `true` lorsque la réponse API portait une `stop_details.explanation`, sinon `false`. Absent lorsque `server_fallback_hop` est `true`.936* `has_explanation` : `true` lorsque la réponse de l'API contenait un `stop_details.explanation`, `false` sinon. Absent lorsque `server_fallback_hop` vaut `true`.

937* `category` : La valeur `stop_details.category` de la réponse API. L'une de `"cyber"`, `"bio"`, `"frontier_llm"`, ou `"reasoning_extraction"`. Présent uniquement lorsque `OTEL_LOG_TOOL_DETAILS=1` est défini et `has_category` est `true`.937* `category` : valeur `stop_details.category` de la réponse de l'API. L'une des valeurs `"cyber"`, `"bio"`, `"frontier_llm"` ou `"reasoning_extraction"`. Présent uniquement lorsque `OTEL_LOG_TOOL_DETAILS=1` est défini et que `has_category` vaut `true`.

938* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name` : Attribution de compétence, plugin, agent et MCP pour la demande. Voir [Compteur de coûts](#cost-counter) pour les définitions et le comportement de rédaction.938* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name` : attribution de la requête au skill, au plugin, à l'agent et à MCP. Consultez [Compteur de coûts](#cost-counter) pour les définitions et le comportement de masquage.

939 939 

940<h4 id="api-request-body-event">940<h4 id="api-request-body-event">

941 Événement de corps de demande API941 Événement de corps de requête API

942</h4>942</h4>

943 943 

944Enregistré pour chaque tentative de demande API lorsque `OTEL_LOG_RAW_API_BODIES` est défini. Un événement est émis par tentative, donc les nouvelles tentatives avec des paramètres ajustés produisent chacune leur propre événement.944Journalisé pour chaque tentative de requête API lorsque `OTEL_LOG_RAW_API_BODIES` est défini. Un événement est émis par tentative ; chaque nouvelle tentative avec des paramètres ajustés produit donc son propre événement.

945 945 

946**Nom de l'événement** : `claude_code.api_request_body`946**Nom de l'événement** : `claude_code.api_request_body`

947 947 


949 949 

950* Tous les [attributs standard](#standard-attributes)950* Tous les [attributs standard](#standard-attributes)

951* `event.name` : `"api_request_body"`951* `event.name` : `"api_request_body"`

952* `event.timestamp` : Timestamp ISO 8601952* `event.timestamp` : horodatage ISO 8601

953* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)953* `event.sequence` : compteur par processus pour ordonner les événements, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes)

954* `body` : Paramètres de demande API Messages sérialisés en JSON, tels que l'invite système, les messages et les outils, tronqués à la limite de contenu (60 KB par défaut). Le contenu de réflexion étendue dans les tours d'assistant antérieurs est rédacté. Émis uniquement en mode en ligne (`OTEL_LOG_RAW_API_BODIES=1`).954* `body` : paramètres de la requête de l'API Messages sérialisés en JSON, comme le prompt système, les messages et les outils, tronqués à la limite de contenu (60 Ko par défaut). Le contenu de réflexion étendue des tours précédents de l'assistant est masqué. Émis uniquement en mode inline (`OTEL_LOG_RAW_API_BODIES=1`).

955* `body_ref` : Chemin absolu vers un fichier `<dir>/<uuid>.request.json` contenant le corps non tronqué. Émis uniquement en mode fichier (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).955* `body_ref` : chemin absolu vers un fichier `<dir>/<uuid>.request.json` contenant le corps non tronqué. Émis uniquement en mode fichier (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).

956* `body_length` : Longueur du corps non tronqué. Octets UTF-8 lorsque `OTEL_LOG_RAW_API_BODIES=file:<dir>`, ou unités de code UTF-16 lorsque `=1`956* `body_length` : longueur du corps non tronqué. En octets UTF-8 lorsque `OTEL_LOG_RAW_API_BODIES=file:<dir>`, ou en unités de code UTF-16 lorsque `=1`

957* `body_truncated` : `"true"` lorsque la troncature en ligne s'est produite. Absent en mode fichier et lorsqu'aucune troncature ne s'est produite.957* `body_truncated` : `"true"` lorsqu'une troncature inline a eu lieu. Absent en mode fichier et lorsqu'aucune troncature n'a eu lieu.

958* `model` : Identifiant du modèle à partir des paramètres de demande958* `model` : identifiant du modèle indiqué dans les paramètres de la requête

959* `query_source` : Sous-système qui a émis la demande (par exemple, `"compact"`)959* `query_source` : sous-système ayant émis la requête (par exemple, `"compact"`)

960* `request_body_id` : UUID qui identifie le corps de demande de cette tentative. L'[événement `api_response_body`](#api-response-body-event) pour la tentative qui réussit porte la même valeur, afin que vous puissiez appairer une réponse avec la demande exacte qui l'a produite. Nécessite Claude Code v2.1.274 ou ultérieur960* `request_body_id` : UUID identifiant le corps de requête de cette tentative. L'[événement `api_response_body`](#api-response-body-event) de la tentative qui réussit porte la même valeur, ce qui vous permet d'associer une réponse à la requête exacte qui l'a produite. Nécessite Claude Code v2.1.274 ou ultérieur

961 961 

962<h4 id="api-response-body-event">962<h4 id="api-response-body-event">

963 Événement de corps de réponse API963 Événement de corps de réponse API

964</h4>964</h4>

965 965 

966Enregistré pour chaque réponse API réussie lorsque `OTEL_LOG_RAW_API_BODIES` est défini.966Journalisé pour chaque réponse API réussie lorsque `OTEL_LOG_RAW_API_BODIES` est défini.

967 967 

968En mode fichier (`OTEL_LOG_RAW_API_BODIES=file:<dir>`), Claude Code ajoute également une ligne JSON à `<dir>/index.jsonl` pour chaque réponse réussie, avec les champs `timestamp`, `session_id`, `query_source`, `model`, `request_id`, `message_id`, `message_uuid`, `request_file`, et `response_file`. Lisez-le pour trouver les fichiers de demande et de réponse derrière un message de transcription donné sans interroger votre backend de télémétrie. Le fichier d'index nécessite Claude Code v2.1.274 ou ultérieur.968En mode fichier (`OTEL_LOG_RAW_API_BODIES=file:<dir>`), Claude Code ajoute également une ligne JSON à `<dir>/index.jsonl` pour chaque réponse réussie, avec les champs `timestamp`, `session_id`, `query_source`, `model`, `request_id`, `message_id`, `message_uuid`, `request_file` et `response_file`. Lisez-le pour retrouver les fichiers de requête et de réponse associés à un message de transcription donné sans interroger votre backend de télémétrie. Le fichier d'index nécessite Claude Code v2.1.274 ou ultérieur.

969 969 

970**Nom de l'événement** : `claude_code.api_response_body`970**Nom de l'événement** : `claude_code.api_response_body`

971 971 


973 973 

974* Tous les [attributs standard](#standard-attributes)974* Tous les [attributs standard](#standard-attributes)

975* `event.name` : `"api_response_body"`975* `event.name` : `"api_response_body"`

976* `event.timestamp` : Timestamp ISO 8601976* `event.timestamp` : horodatage ISO 8601

977* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)977* `event.sequence` : compteur par processus pour ordonner les événements, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes)

978* `body` : Réponse API Messages sérialisée en JSON, y compris l'id, les blocs de contenu, l'utilisation et la raison d'arrêt, tronquée à la limite de contenu (60 KB par défaut). Le contenu de réflexion étendue est rédacté. Émis uniquement en mode en ligne (`OTEL_LOG_RAW_API_BODIES=1`).978* `body` : réponse de l'API Messages sérialisée en JSON, incluant l'id, les blocs de contenu, l'utilisation et la raison d'arrêt, tronquée à la limite de contenu (60 Ko par défaut). Le contenu de réflexion étendue est masqué. Émis uniquement en mode inline (`OTEL_LOG_RAW_API_BODIES=1`).

979* `body_ref` : Chemin absolu vers un fichier `<dir>/<request_id>.response.json` contenant le corps non tronqué. Émis uniquement en mode fichier (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).979* `body_ref` : chemin absolu vers un fichier `<dir>/<request_id>.response.json` contenant le corps non tronqué. Émis uniquement en mode fichier (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).

980* `body_length` : Longueur du corps non tronqué. Octets UTF-8 lorsque `OTEL_LOG_RAW_API_BODIES=file:<dir>`, ou unités de code UTF-16 lorsque `=1`980* `body_length` : longueur du corps non tronqué. En octets UTF-8 lorsque `OTEL_LOG_RAW_API_BODIES=file:<dir>`, ou en unités de code UTF-16 lorsque `=1`

981* `body_truncated` : `"true"` lorsque la troncature en ligne s'est produite. Absent en mode fichier et lorsqu'aucune troncature ne s'est produite.981* `body_truncated` : `"true"` lorsqu'une troncature inline a eu lieu. Absent en mode fichier et lorsqu'aucune troncature n'a eu lieu.

982* `model` : Identifiant du modèle982* `model` : identifiant du modèle

983* `query_source` : Sous-système qui a émis la demande983* `query_source` : sous-système ayant émis la requête

984* `request_id` : ID de demande API, par exemple `"req_011..."`, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes).984* `request_id` : ID de la requête API, par exemple `"req_011..."`, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes).

985* `request_body_id` : Le `request_body_id` de l'[événement `api_request_body`](#api-request-body-event) auquel cette réponse répond. Nécessite Claude Code v2.1.274 ou ultérieur985* `request_body_id` : le `request_body_id` de l'[événement `api_request_body`](#api-request-body-event) auquel cette réponse répond. Nécessite Claude Code v2.1.274 ou ultérieur

986* `message.id` : ID de message que l'API a assigné à la réponse, le champ `id` du corps de réponse. Nécessite Claude Code v2.1.274 ou ultérieur986* `message.id` : ID de message attribué par l'API à la réponse, c'est-à-dire le champ `id` du corps de la réponse. Nécessite Claude Code v2.1.274 ou ultérieur

987* `message.uuid` : UUID de l'entrée de transcription finale de la réponse. Avec `request_body_id`, il lie un message de transcription aux corps de demande et de réponse derrière lui. Nécessite Claude Code v2.1.274 ou ultérieur987* `message.uuid` : UUID de la dernière entrée de transcription de la réponse. Avec `request_body_id`, il relie un message de transcription aux corps de requête et de réponse correspondants. Nécessite Claude Code v2.1.274 ou ultérieur

988 988 

989<h4 id="tool-decision-event">989<h4 id="tool-decision-event">

990 Événement de décision d'outil990 Événement de décision d'outil

991</h4>991</h4>

992 992 

993Enregistré lorsqu'une décision de permission d'outil est prise (accepter/rejeter).993Journalisé lorsqu'une décision de permission d'outil est prise (acceptation/refus).

994 994 

995**Nom de l'événement** : `claude_code.tool_decision`995**Nom de l'événement** : `claude_code.tool_decision`

996 996 


998 998 

999* Tous les [attributs standard](#standard-attributes)999* Tous les [attributs standard](#standard-attributes)

1000* `event.name` : `"tool_decision"`1000* `event.name` : `"tool_decision"`

1001* `event.timestamp` : Timestamp ISO 86011001* `event.timestamp` : horodatage ISO 8601

1002* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1002* `event.sequence` : compteur par processus pour ordonner les événements, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes)

1003* `tool_name` : Nom de l'outil (par exemple, « Read », « Edit », « Write », « NotebookEdit »)1003* `tool_name` : nom de l'outil (par exemple, "Read", "Edit", "Write", "NotebookEdit")

1004* `tool_use_id` : Identifiant unique pour cette invocation d'outil. Correspond au `tool_use_id` passé aux hooks, permettant la corrélation entre les événements OTel et les données capturées par les hooks.1004* `tool_use_id` : identifiant unique de cette invocation d'outil. Correspond au `tool_use_id` transmis aux hooks, ce qui permet de corréler les événements OTel avec les données capturées par les hooks.

1005* `decision` : Soit `"accept"` soit `"reject"`1005* `decision` : `"accept"` ou `"reject"`

1006* `tool_source` : Toujours présent. La provenance de l'outil, comme un ensemble fermé de valeurs créées par la CLI. Nécessite Claude Code v2.1.214 ou ultérieur1006* `tool_source` : toujours présent. Provenance de l'outil, sous forme d'ensemble fermé de valeurs définies par la CLI. Nécessite Claude Code v2.1.214 ou ultérieur

1007 * `"builtin"` : les outils propres de la CLI1007 * `"builtin"` : les outils propres à la CLI

1008 * `"mcp"` : serveurs MCP en général1008 * `"mcp"` : les serveurs MCP en général

1009 * `"sdk_host_builtin_mcp"` : un serveur en processus intégré à Claude Desktop lui-même, dans une session que Claude Desktop possède. Claude Desktop possède une session qu'il a lancée à partir de l'un de ses propres points d'entrée, `claude-desktop`, `claude-desktop-3p`, ou `local-agent`, lorsque cette session n'est pas un enfant imbriqué ; les sessions imbriquées, y compris les sessions que Claude Code lui-même génère, signalent ces serveurs comme `"mcp"`1009 * `"sdk_host_builtin_mcp"` : un serveur in-process intégré à Claude Desktop lui-même, dans une session dont Claude Desktop est propriétaire. Claude Desktop est propriétaire d'une session qu'il a démarrée depuis l'un de ses propres points d'entrée, `claude-desktop`, `claude-desktop-3p` ou `local-agent`, lorsque cette session n'est pas un enfant imbriqué ; les sessions imbriquées, y compris celles que Claude Code lance lui-même, signalent ces serveurs comme `"mcp"`

1010* `source` : D'où provient la décision :1010* `source` : origine de la décision :

1011 * `"config"` : Décidé automatiquement sans invite, basé sur les paramètres du projet, les règles d'autorisation ou de refus dans les paramètres personnels de l'utilisateur, la politique gérée par l'entreprise, les drapeaux `--allowedTools` ou `--disallowedTools`, le mode de permission actif, une subvention à portée de session d'une invite antérieure dans la même session CLI interactive, ou parce que l'outil est intrinsèquement sûr. L'événement n'indique pas laquelle de ces sources a correspondu. Claude Code signale également `"config"` lorsque la demande d'invite de permission elle-même échoue, par exemple lorsque le rappel [`canUseTool`](/docs/fr/agent-sdk/typescript#canusetool) du SDK Agent ou l'outil [`--permission-prompt-tool`](/docs/fr/cli-reference#cli-flags) retourne un résultat invalide, ou lorsque le flux d'entrée se ferme pendant que la demande est en attente. Avant v2.1.216, Claude Code signalait ces défaillances comme `"user_reject"`.1011 * `"config"` : décision prise automatiquement sans demande de permission, en fonction des paramètres du projet, des règles d'autorisation ou de refus des paramètres personnels de l'utilisateur, de la politique gérée de l'entreprise, des flags `--allowedTools` ou `--disallowedTools`, du mode de permission actif, d'une autorisation limitée à la session accordée lors d'une demande de permission antérieure dans la même session CLI interactive, ou parce que l'outil est intrinsèquement sûr. L'événement n'indique pas laquelle de ces sources a correspondu. Claude Code signale également `"config"` lorsque la demande de permission elle-même échoue, par exemple lorsque le callback [`canUseTool`](/docs/fr/agent-sdk/typescript#canusetool) de l'Agent SDK ou l'outil [`--permission-prompt-tool`](/docs/fr/cli-reference#cli-flags) renvoie un résultat invalide, ou lorsque le flux d'entrée se ferme alors que la demande est en attente. Avant la v2.1.216, Claude Code signalait ces échecs comme `"user_reject"`.

1012 * `"hook"` : Un hook `PreToolUse` ou `PermissionRequest` a retourné la décision.1012 * `"hook"` : un hook `PreToolUse` ou `PermissionRequest` a renvoyé la décision.

1013 * `"user_permanent"` : Émis lorsque l'utilisateur a choisi « Oui, et ne me demande plus pour ... » à une invite de permission, ce qui enregistre une règle d'autorisation dans ses paramètres personnels. Dans la CLI interactive, ceci n'est émis que pour ce choix lui-même ; les appels ultérieurs qui correspondent à la règle enregistrée émettent `"config"` à la place. Dans les sessions SDK Agent ou non-interactive `-p`, à la fois le choix initial et les correspondances de règles ultérieures émettent `"user_permanent"`. Traité comme une acceptation.1013 * `"user_permanent"` : émis lorsque l'utilisateur a choisi « Yes, and don't ask again for ... » lors d'une demande de permission, ce qui enregistre une règle d'autorisation dans ses paramètres personnels. Dans la CLI interactive, cette valeur n'est émise que pour ce choix lui-même ; les appels ultérieurs qui correspondent à la règle enregistrée émettent `"config"` à la place. Dans les sessions Agent SDK ou `-p` non interactives, le choix initial comme les correspondances ultérieures avec la règle émettent `"user_permanent"`. Traité comme une acceptation.

1014 * `"user_temporary"` : Émis lorsque l'utilisateur a choisi « Oui » à une invite de permission pour une approbation unique, ou a choisi une option qui accorde l'accès pour le reste de la session sur une invite d'édition ou de lecture de fichier. Dans la CLI interactive, ceci n'est émis que pour le choix lui-même ; les appels ultérieurs autorisés par cette subvention à portée de session émettent `"config"` à la place. Dans les sessions SDK Agent ou non-interactive `-p`, à la fois le choix et les correspondances ultérieures émettent `"user_temporary"`. Traité comme une acceptation.1014 * `"user_temporary"` : émis lorsque l'utilisateur a choisi « Yes » lors d'une demande de permission pour une approbation ponctuelle, ou a choisi une option accordant l'accès pour le reste de la session lors d'une demande de modification ou de lecture de fichier. Dans la CLI interactive, cette valeur n'est émise que pour le choix lui-même ; les appels ultérieurs autorisés par cette autorisation limitée à la session émettent `"config"` à la place. Dans les sessions Agent SDK ou `-p` non interactives, le choix comme les correspondances ultérieures émettent `"user_temporary"`. Traité comme une acceptation.

1015 * `"user_abort"` : Émis lorsque l'utilisateur a fermé l'invite de permission sans répondre. Dans les sessions SDK Agent et non-interactive `-p`, cela inclut l'interruption du tour pendant qu'une demande de permission `canUseTool` ou `--permission-prompt-tool` est en attente ; avant v2.1.216, Claude Code signalait cette interruption comme `"user_reject"`. Traité comme un rejet.1015 * `"user_abort"` : émis lorsque l'utilisateur a fermé la demande de permission sans répondre. Dans les sessions Agent SDK et `-p` non interactives, cela inclut l'interruption du tour alors qu'une demande de permission `canUseTool` ou `--permission-prompt-tool` est en attente ; avant la v2.1.216, Claude Code signalait cette interruption comme `"user_reject"`. Traité comme un refus.

1016 * `"user_reject"` : Émis lorsque l'utilisateur a choisi « Non » lorsqu'on lui a demandé. Dans la CLI interactive, ceci n'est émis que pour ce choix lui-même ; les appels qui correspondent à une règle de refus dans les paramètres personnels de l'utilisateur émettent `"config"` à la place. Dans les sessions SDK Agent ou non-interactive `-p`, les appels qui correspondent à une règle de refus dans les paramètres personnels émettent `"user_reject"`. Traité comme un rejet.1016 * `"user_reject"` : émis lorsque l'utilisateur a choisi « No » lors de la demande. Dans la CLI interactive, cette valeur n'est émise que pour ce choix lui-même ; les appels qui correspondent à une règle de refus dans les paramètres personnels de l'utilisateur émettent `"config"` à la place. Dans les sessions Agent SDK ou `-p` non interactives, les appels qui correspondent à une règle de refus dans les paramètres personnels émettent `"user_reject"`. Traité comme un refus.

1017* `tool_parameters` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : Chaîne JSON contenant les paramètres spécifiques à l'outil. Même forme que l'[événement de résultat d'outil](#tool-result-event), moins les champs post-exécution tels que `git_commit_id`. Les valeurs peuvent différer de `tool_result` pour un appel accepté si la décision de permission réécrit l'entrée d'outil via `updatedInput`. Utilisez cet attribut pour voir quelle commande a été rejetée lorsque `decision` est `"reject"`.1017* `tool_parameters` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : chaîne JSON contenant les paramètres propres à l'outil. Même structure que pour l'[événement de résultat d'outil](#tool-result-event), sans les champs post-exécution comme `git_commit_id`. Les valeurs peuvent différer de celles de `tool_result` pour un appel accepté si la décision de permission réécrit l'entrée de l'outil via `updatedInput`. Utilisez cet attribut pour voir quelle commande a été refusée lorsque `decision` vaut `"reject"`.

1018 * Pour les outils `"sdk_host_builtin_mcp"` : `mcp_server_name` et `mcp_tool_name` sont inclus même lorsque `OTEL_LOG_TOOL_DETAILS` est désactivé, car l'application hôte définit ces noms ; sans eux, un appel rejeté à l'un de ces serveurs intégrés serait non attribuable sur le flux par défaut. Pour les serveurs MCP configurés par l'utilisateur, le `tool_name` de l'événement est toujours le littéral `"mcp_tool"`, et les noms du serveur et de l'outil apparaissent uniquement dans `tool_parameters` avec le drapeau activé ; le contenu des arguments nécessite le drapeau partout. Nécessite Claude Code v2.1.214 ou ultérieur1018 * Pour les outils `"sdk_host_builtin_mcp"` : `mcp_server_name` et `mcp_tool_name` sont inclus même lorsque `OTEL_LOG_TOOL_DETAILS` est désactivé, car c'est l'application hôte qui définit ces noms ; sans eux, un appel refusé vers l'un de ces serveurs intégrés ne pourrait pas être attribué dans le flux par défaut. Pour les serveurs MCP configurés par l'utilisateur, le `tool_name` de l'événement est toujours la chaîne littérale `"mcp_tool"`, et les noms du serveur et de l'outil n'apparaissent que dans `tool_parameters` lorsque le flag est activé ; le contenu des arguments nécessite le flag dans tous les cas. Nécessite Claude Code v2.1.214 ou ultérieur

1019 * Pour l'outil Bash : inclut `bash_command`, `full_command`, `timeout`, `description`, `dangerouslyDisableSandbox`. L'outil bash d'espace de travail de l'application de bureau signale également `tool_name` comme `Bash`, mais inclut uniquement `bash_command`, `full_command`, et `timeout`1019 * Pour l'outil Bash : inclut `bash_command`, `full_command`, `timeout`, `description`, `dangerouslyDisableSandbox`. L'outil bash de l'espace de travail de l'application de bureau signale également `tool_name` comme `Bash`, mais inclut uniquement `bash_command`, `full_command` et `timeout`

1020 * Pour les outils MCP : inclut `mcp_server_name`, `mcp_tool_name`1020 * Pour les outils MCP : inclut `mcp_server_name`, `mcp_tool_name`

1021 * Pour l'outil Skill : inclut `skill_name`1021 * Pour l'outil Skill : inclut `skill_name`

1022 * Pour l'outil Agent ou l'outil Task hérité : inclut `subagent_type`1022 * Pour l'outil Agent ou l'ancien outil Task : inclut `subagent_type`

1023 1023 

1024<h4 id="permission-mode-changed-event">1024<h4 id="permission-mode-changed-event">

1025 Événement de changement de mode de permission1025 Événement de changement de mode de permission

1026</h4>1026</h4>

1027 1027 

1028Enregistré lorsque le mode de permission change, par exemple à partir du cyclage `Shift+Tab`, de la sortie du mode plan, ou d'une vérification de porte en mode automatique.1028Journalisé lorsque le mode de permission change, par exemple lors d'un passage d'un mode à l'autre avec `Shift+Tab`, de la sortie du mode plan ou d'une vérification d'accès au mode auto.

1029 1029 

1030**Nom de l'événement** : `claude_code.permission_mode_changed`1030**Nom de l'événement** : `claude_code.permission_mode_changed`

1031 1031 


1033 1033 

1034* Tous les [attributs standard](#standard-attributes)1034* Tous les [attributs standard](#standard-attributes)

1035* `event.name` : `"permission_mode_changed"`1035* `event.name` : `"permission_mode_changed"`

1036* `event.timestamp` : Timestamp ISO 86011036* `event.timestamp` : horodatage ISO 8601

1037* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1037* `event.sequence` : compteur par processus pour ordonner les événements, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes)

1038* `from_mode` : Le mode de permission précédent, par exemple `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, ou `"bypassPermissions"`1038* `from_mode` : mode de permission précédent, par exemple `"default"`, `"plan"`, `"acceptEdits"`, `"auto"` ou `"bypassPermissions"`

1039* `to_mode` : Le nouveau mode de permission1039* `to_mode` : nouveau mode de permission

1040* `trigger` : Ce qui a causé le changement. L'une de `"shift_tab"`, `"exit_plan_mode"`, `"auto_gate_denied"`, ou `"auto_opt_in"`. Absent lorsque la transition provient du SDK ou du pont1040* `trigger` : cause du changement. L'une des valeurs `"shift_tab"`, `"exit_plan_mode"`, `"auto_gate_denied"` ou `"auto_opt_in"`. Absent lorsque la transition provient du SDK ou du bridge

1041 1041 

1042<h4 id="auth-event">1042<h4 id="auth-event">

1043 Événement d'authentification1043 Événement d'authentification

1044</h4>1044</h4>

1045 1045 

1046Enregistré lorsque `/login` ou `/logout` se termine.1046Journalisé lorsque `/login` ou `/logout` se termine.

1047 1047 

1048**Nom de l'événement** : `claude_code.auth`1048**Nom de l'événement** : `claude_code.auth`

1049 1049 


1051 1051 

1052* Tous les [attributs standard](#standard-attributes)1052* Tous les [attributs standard](#standard-attributes)

1053* `event.name` : `"auth"`1053* `event.name` : `"auth"`

1054* `event.timestamp` : Timestamp ISO 86011054* `event.timestamp` : horodatage ISO 8601

1055* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1055* `event.sequence` : compteur par processus pour ordonner les événements, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes)

1056* `action` : `"login"` ou `"logout"`1056* `action` : `"login"` ou `"logout"`

1057* `success` : `"true"` ou `"false"`1057* `success` : `"true"` ou `"false"`

1058* `auth_method` : Méthode d'authentification, par exemple `"oauth"`1058* `auth_method` : méthode d'authentification, par exemple `"oauth"`

1059* `error_category` : Type d'erreur catégorique lorsque l'action a échoué. Le message d'erreur brut n'est jamais inclus1059* `error_category` : type d'erreur catégoriel lorsque l'action a échoué. Le message d'erreur brut n'est jamais inclus

1060* `status_code` : Code de statut HTTP sous forme de chaîne lorsque l'action a échoué avec une erreur HTTP1060* `status_code` : code de statut HTTP sous forme de chaîne lorsque l'action a échoué avec une erreur HTTP

1061 1061 

1062<h4 id="mcp-server-connection-event">1062<h4 id="mcp-server-connection-event">

1063 Événement de connexion du serveur MCP1063 Événement de connexion au serveur MCP

1064</h4>1064</h4>

1065 1065 

1066Enregistré lorsqu'un serveur MCP se connecte, se déconnecte ou échoue à se connecter.1066Journalisé lorsqu'un serveur MCP se connecte, se déconnecte ou ne parvient pas à se connecter.

1067 1067 

1068**Nom de l'événement** : `claude_code.mcp_server_connection`1068**Nom de l'événement** : `claude_code.mcp_server_connection`

1069 1069 


1071 1071 

1072* Tous les [attributs standard](#standard-attributes)1072* Tous les [attributs standard](#standard-attributes)

1073* `event.name` : `"mcp_server_connection"`1073* `event.name` : `"mcp_server_connection"`

1074* `event.timestamp` : Timestamp ISO 86011074* `event.timestamp` : horodatage ISO 8601

1075* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1075* `event.sequence` : compteur par processus pour ordonner les événements, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes)

1076* `status` : `"connected"`, `"failed"`, ou `"disconnected"`1076* `status` : `"connected"`, `"failed"` ou `"disconnected"`

1077* `transport_type` : Transport du serveur, par exemple `"stdio"`, `"sse"`, ou `"http"`1077* `transport_type` : transport du serveur, par exemple `"stdio"`, `"sse"` ou `"http"`

1078* `server_scope` : Portée à laquelle le serveur est configuré, par exemple `"user"`, `"project"`, ou `"local"`1078* `server_scope` : portée à laquelle le serveur est configuré, par exemple `"user"`, `"project"` ou `"local"`

1079* `duration_ms` : Durée de la tentative de connexion en millisecondes1079* `duration_ms` : durée de la tentative de connexion en millisecondes

1080* `error_code` : Code d'erreur lorsque la connexion a échoué1080* `error_code` : code d'erreur lorsque la connexion a échoué

1081* `is_plugin` : `true` lorsque le serveur est fourni par un plugin, `false` sinon1081* `is_plugin` : `true` lorsque le serveur est fourni par un plugin, `false` sinon

1082* `plugin_id_hash` (lorsque `is_plugin` est `true`) : Hash stable du nom du plugin et de la place de marché, pour regrouper les événements par plugin sans exposer le nom. Claude Code le calcule comme décrit sous l'[événement de plugin chargé](#plugin-loaded-event)1082* `plugin_id_hash` (lorsque `is_plugin` vaut `true`) : hachage stable du nom du plugin et de la marketplace, permettant de regrouper les événements par plugin sans exposer le nom. Claude Code le calcule comme décrit dans l'[événement de chargement de plugin](#plugin-loaded-event)

1083* `plugin.name` (lorsque `is_plugin` est `true`) : Nom du plugin qui fournit le serveur. Pour les plugins tiers, c'est la chaîne littérale `"third-party"` sauf si `OTEL_LOG_TOOL_DETAILS=1` ; cela protège les noms des plugins tiers d'apparaître dans les journaux par défaut. Les plugins provenant de sources Anthropic officielles sont toujours identifiés par nom. Les attributs `plugin_id_hash` et `plugin.name` circulent vers votre propre backend de surveillance et ne sont pas envoyés à Anthropic1083* `plugin.name` (lorsque `is_plugin` vaut `true`) : nom du plugin qui fournit le serveur. Pour les plugins tiers, il s'agit de la chaîne littérale `"third-party"` sauf si `OTEL_LOG_TOOL_DETAILS=1` ; cela évite par défaut que les noms de plugins tiers apparaissent dans les logs. Les plugins provenant de sources officielles d'Anthropic sont toujours identifiés par leur nom. Les attributs `plugin_id_hash` et `plugin.name` sont transmis à votre propre backend de monitoring et ne sont pas envoyés à Anthropic

1084* `server_name` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : Nom du serveur configuré1084* `server_name` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : nom configuré du serveur

1085* `error` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : Message d'erreur complet lorsque la connexion a échoué1085* `error` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : message d'erreur complet lorsque la connexion a échoué

1086 1086 

1087<h4 id="internal-error-event">1087<h4 id="internal-error-event">

1088 Événement d'erreur interne1088 Événement d'erreur interne

1089</h4>1089</h4>

1090 1090 

1091Enregistré lorsque Claude Code détecte une erreur interne inattendue. Seul le nom de la classe d'erreur et un code de style errno sont enregistrés. Le message d'erreur et la trace de pile ne sont jamais inclus. Cet événement n'est pas émis lors de l'exécution sur Amazon Bedrock, Google Cloud's Agent Platform, ou Microsoft Foundry, ou lorsque `DISABLE_ERROR_REPORTING` est défini.1091Journalisé lorsque Claude Code intercepte une erreur interne inattendue. Seuls le nom de la classe d'erreur et un code de type errno sont enregistrés. Le message d'erreur et la stack trace ne sont jamais inclus. Cet événement n'est pas émis lors de l'exécution avec Amazon Bedrock, l'Agent Platform de Google Cloud ou Microsoft Foundry, ni lorsque `DISABLE_ERROR_REPORTING` est défini.

1092 1092 

1093**Nom de l'événement** : `claude_code.internal_error`1093**Nom de l'événement** : `claude_code.internal_error`

1094 1094 


1096 1096 

1097* Tous les [attributs standard](#standard-attributes)1097* Tous les [attributs standard](#standard-attributes)

1098* `event.name` : `"internal_error"`1098* `event.name` : `"internal_error"`

1099* `event.timestamp` : Timestamp ISO 86011099* `event.timestamp` : horodatage ISO 8601

1100* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1100* `event.sequence` : compteur par processus pour ordonner les événements, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes)

1101* `error_name` : Nom de la classe d'erreur, par exemple `"TypeError"` ou `"SyntaxError"`1101* `error_name` : nom de la classe d'erreur, par exemple `"TypeError"` ou `"SyntaxError"`

1102* `error_code` : Code errno Node.js tel que `"ENOENT"` lorsqu'il est présent sur l'erreur1102* `error_code` : code errno Node.js, par exemple `"ENOENT"`, lorsqu'il est présent sur l'erreur

1103 1103 

1104<h4 id="plugin-installed-event">1104<h4 id="plugin-installed-event">

1105 Événement de plugin installé1105 Événement d'installation de plugin

1106</h4>1106</h4>

1107 1107 

1108Enregistré lorsqu'un plugin termine son installation, à partir à la fois de la commande CLI `claude plugin install` et de l'interface utilisateur interactive `/plugin`.1108Journalisé lorsqu'un plugin termine son installation, aussi bien depuis la commande CLI `claude plugin install` que depuis l'interface interactive `/plugin`.

1109 1109 

1110**Nom de l'événement** : `claude_code.plugin_installed`1110**Nom de l'événement** : `claude_code.plugin_installed`

1111 1111 


1113 1113 

1114* Tous les [attributs standard](#standard-attributes)1114* Tous les [attributs standard](#standard-attributes)

1115* `event.name` : `"plugin_installed"`1115* `event.name` : `"plugin_installed"`

1116* `event.timestamp` : Timestamp ISO 86011116* `event.timestamp` : horodatage ISO 8601

1117* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1117* `event.sequence` : compteur par processus pour ordonner les événements, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes)

1118* `marketplace.is_official` : `"true"` si la place de marché est une place de marché Anthropic officielle, `"false"` sinon1118* `marketplace.is_official` : `"true"` si la marketplace est une marketplace officielle d'Anthropic, `"false"` sinon

1119* `install.trigger` : `"cli"` ou `"ui"`1119* `install.trigger` : `"cli"` ou `"ui"`

1120* `plugin.name` : Nom du plugin installé. Pour les places de marché tiers, ceci n'est inclus que lorsque `OTEL_LOG_TOOL_DETAILS=1`1120* `plugin.name` : nom du plugin installé. Pour les marketplaces tierces, il n'est inclus que lorsque `OTEL_LOG_TOOL_DETAILS=1`

1121* `plugin.version` : Version du plugin lorsqu'elle est déclarée dans l'entrée de la place de marché. Pour les places de marché tiers, ceci n'est inclus que lorsque `OTEL_LOG_TOOL_DETAILS=1`1121* `plugin.version` : version du plugin lorsqu'elle est déclarée dans l'entrée de la marketplace. Pour les marketplaces tierces, elle n'est incluse que lorsque `OTEL_LOG_TOOL_DETAILS=1`

1122* `marketplace.name` : Place de marché à partir de laquelle le plugin a été installé. Pour les places de marché tiers, ceci n'est inclus que lorsque `OTEL_LOG_TOOL_DETAILS=1`1122* `marketplace.name` : marketplace depuis laquelle le plugin a été installé. Pour les marketplaces tierces, elle n'est incluse que lorsque `OTEL_LOG_TOOL_DETAILS=1`

1123 1123 

1124<h4 id="plugin-loaded-event">1124<h4 id="plugin-loaded-event">

1125 Événement de plugin chargé1125 Événement de chargement de plugin

1126</h4>1126</h4>

1127 1127 

1128Enregistré une fois par plugin activé au démarrage de la session. Utilisez cet événement pour inventorier les plugins actifs dans votre flotte, en complément de `plugin_installed` qui enregistre l'action d'installation elle-même.1128Journalisé une fois par plugin activé au démarrage de la session. Utilisez cet événement pour inventorier les plugins actifs sur l'ensemble de votre parc, en complément de `plugin_installed`, qui enregistre l'action d'installation elle-même.

1129 1129 

1130**Nom de l'événement** : `claude_code.plugin_loaded`1130**Nom de l'événement** : `claude_code.plugin_loaded`

1131 1131 


1133 1133 

1134* Tous les [attributs standard](#standard-attributes)1134* Tous les [attributs standard](#standard-attributes)

1135* `event.name` : `"plugin_loaded"`1135* `event.name` : `"plugin_loaded"`

1136* `event.timestamp` : Timestamp ISO 86011136* `event.timestamp` : horodatage ISO 8601

1137* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1137* `event.sequence` : compteur par processus pour ordonner les événements, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes)

1138* `plugin.name` : nom du plugin. Pour les plugins en dehors de la place de marché officielle et du bundle intégré, la valeur est `"third-party"` sauf si `OTEL_LOG_TOOL_DETAILS=1`1138* `plugin.name` : nom du plugin. Pour les plugins extérieurs à la marketplace officielle et au bundle intégré, la valeur est `"third-party"` sauf si `OTEL_LOG_TOOL_DETAILS=1`

1139* `marketplace.name` : place de marché à partir de laquelle le plugin a été installé, lorsqu'elle est connue. Rédactée à `"third-party"` sous la même condition que `plugin.name`1139* `marketplace.name` : marketplace depuis laquelle le plugin a été installé, lorsqu'elle est connue. Masquée en `"third-party"` dans les mêmes conditions que `plugin.name`

1140* `plugin.version` : version du manifeste du plugin. Inclus uniquement lorsque le nom n'est pas rédacté et que le manifeste déclare une version1140* `plugin.version` : version indiquée dans le manifeste du plugin. Incluse uniquement lorsque le nom n'est pas masqué et que le manifeste déclare une version

1141* `plugin.scope` : catégorie de provenance du plugin : `"official"`, `"community"`, `"org"`, `"user-local"`, ou `"default-bundle"`1141* `plugin.scope` : catégorie de provenance du plugin : `"official"`, `"community"`, `"org"`, `"user-local"` ou `"default-bundle"`

1142* `enabled_via` : comment le plugin en est venu à être activé : `"default-enable"`, `"org-policy"`, `"admin-install"`, `"seed-mount"`, ou `"user-install"`. La valeur `"admin-install"` signifie que le plugin est défini comme obligatoire ou auto-installation pour votre organisation dans [**Paramètres d'organisation > Plugins et compétences**](https://claude.ai/admin-settings/skills?tab=inventory). Avant v2.1.246, Claude Code signalait ces plugins comme `"user-install"` ou `"seed-mount"`1142* `enabled_via` : manière dont le plugin a été activé : `"default-enable"`, `"org-policy"`, `"admin-install"`, `"seed-mount"` ou `"user-install"`. La valeur `"admin-install"` signifie que le plugin est défini comme obligatoire ou en installation automatique pour votre organisation dans [**Organization settings > Plugins & skills**](https://claude.ai/admin-settings/skills?tab=inventory). Avant la v2.1.246, Claude Code signalait ces plugins comme `"user-install"` ou `"seed-mount"`

1143* `plugin_id_hash` : hash déterministe du nom du plugin et de la place de marché, envoyé uniquement à votre exportateur configuré. Vous permet de compter les plugins tiers distincts chargés dans votre flotte sans enregistrer leurs noms. Pour les [plugins synchronisés à partir de claude.ai](/docs/fr/plugins/loading#synced-plugins), Claude Code hache le nom du plugin avec le nom de la place de marché que claude.ai signale pour le plugin, ou avec `synced` sinon. Avant v2.1.246, Claude Code n'utilisait pas le nom de la place de marché que claude.ai signale dans le hash1143* `plugin_id_hash` : hachage déterministe du nom du plugin et de la marketplace, envoyé uniquement à votre exportateur configuré. Permet de compter les plugins tiers distincts chargés sur l'ensemble de votre parc sans enregistrer leurs noms. Pour les [plugins synchronisés depuis claude.ai](/docs/fr/plugins/loading#synced-plugins), Claude Code hache le nom du plugin avec le nom de marketplace que claude.ai indique pour ce plugin, ou avec `synced` à défaut. Avant la v2.1.246, Claude Code n'utilisait pas dans le hachage le nom de marketplace indiqué par claude.ai

1144* `has_hooks` : si le plugin contribue des hooks1144* `has_hooks` : indique si le plugin fournit des hooks

1145* `has_mcp` : si le plugin contribue des serveurs MCP1145* `has_mcp` : indique si le plugin fournit des serveurs MCP

1146* `host_owned_mcp` : `true` lorsque l'hôte SDK gère les connexions MCP de ce plugin et Claude Code a ignoré la lecture de la configuration du serveur MCP du plugin, `false` sinon. Nécessite Claude Code v2.1.172 ou ultérieur1146* `host_owned_mcp` : `true` lorsque l'hôte du SDK gère les connexions MCP de ce plugin et que Claude Code n'a pas lu la configuration des serveurs MCP du plugin, `false` sinon. Nécessite Claude Code v2.1.172 ou ultérieur

1147* `skill_path_count` : nombre de répertoires de compétences que le plugin déclare1147* `skill_path_count` : nombre de répertoires de skills déclarés par le plugin

1148* `command_path_count` : nombre de répertoires de commandes que le plugin déclare1148* `command_path_count` : nombre de répertoires de commandes déclarés par le plugin

1149* `agent_path_count` : nombre de répertoires d'agents que le plugin déclare1149* `agent_path_count` : nombre de répertoires d'agents déclarés par le plugin

1150* `safe_mode` : `"true"` lorsque la session a été démarrée avec [`--safe-mode`](/docs/fr/cli-reference), `"false"` sinon. En mode sûr, cet événement signale uniquement l'inventaire configuré ; les commandes, compétences, hooks et serveurs MCP du plugin ne se chargent pas. Nécessite Claude Code v2.1.169 ou ultérieur1150* `safe_mode` : `"true"` lorsque la session a été démarrée avec [`--safe-mode`](/docs/fr/cli-reference), `"false"` sinon. En mode sans échec, cet événement ne rapporte que l'inventaire configuré ; les commandes, skills, hooks et serveurs MCP du plugin ne sont pas chargés. Nécessite Claude Code v2.1.169 ou ultérieur

1151 1151 

1152<h4 id="skill-activated-event">1152<h4 id="skill-activated-event">

1153 Événement de compétence activée1153 Événement d'activation de skill

1154</h4>1154</h4>

1155 1155 

1156Enregistré lorsqu'une compétence est invoquée, que Claude l'appelle via l'outil Skill ou que vous l'exécutiez en tant que commande `/`.1156Journalisé lorsqu'un skill est invoqué, que Claude l'appelle via l'outil Skill ou que vous l'exécutiez sous forme de commande `/`.

1157 1157 

1158**Nom de l'événement** : `claude_code.skill_activated`1158**Nom de l'événement** : `claude_code.skill_activated`

1159 1159 


1161 1161 

1162* Tous les [attributs standard](#standard-attributes)1162* Tous les [attributs standard](#standard-attributes)

1163* `event.name` : `"skill_activated"`1163* `event.name` : `"skill_activated"`

1164* `event.timestamp` : Timestamp ISO 86011164* `event.timestamp` : horodatage ISO 8601

1165* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1165* `event.sequence` : compteur par processus pour ordonner les événements, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes)

1166* `skill.name` : Nom de la compétence. Pour les compétences définies par l'utilisateur et les plugins tiers, la valeur est l'espace réservé `"custom_skill"` sauf si `OTEL_LOG_TOOL_DETAILS=1`1166* `skill.name` : nom du skill. Pour les skills définis par l'utilisateur et ceux de plugins tiers, la valeur est l'espace réservé `"custom_skill"` sauf si `OTEL_LOG_TOOL_DETAILS=1`

1167* `invocation_trigger` : Comment la compétence a été déclenchée (`"user-slash"`, `"claude-proactive"`, ou `"nested-skill"`)1167* `invocation_trigger` : mode de déclenchement du skill (`"user-slash"`, `"claude-proactive"` ou `"nested-skill"`)

1168* `skill.source` : D'où la compétence a été chargée (par exemple, `"bundled"`, `"userSettings"`, `"projectSettings"`, `"plugin"`)1168* `skill.source` : emplacement depuis lequel le skill a été chargé (par exemple, `"bundled"`, `"userSettings"`, `"projectSettings"`, `"plugin"`)

1169* `skill.kind` : `"workflow"` lorsque la compétence est une compétence de flux de travail. Absent sinon1169* `skill.kind` : `"workflow"` lorsque le skill est un skill de workflow. Absent sinon

1170* `plugin.name` (lorsque `OTEL_LOG_TOOL_DETAILS=1` ou le plugin provient d'une place de marché officielle) : Nom du plugin propriétaire lorsque la compétence est fournie par un plugin1170* `plugin.name` (lorsque `OTEL_LOG_TOOL_DETAILS=1` ou que le plugin provient d'une marketplace officielle) : nom du plugin propriétaire lorsque le skill est fourni par un plugin

1171* `marketplace.name` (lorsque `OTEL_LOG_TOOL_DETAILS=1` ou le plugin provient d'une place de marché officielle) : Place de marché à partir de laquelle le plugin propriétaire a été installé, lorsque la compétence est fournie par un plugin1171* `marketplace.name` (lorsque `OTEL_LOG_TOOL_DETAILS=1` ou que le plugin provient d'une marketplace officielle) : marketplace depuis laquelle le plugin propriétaire a été installé, lorsque le skill est fourni par un plugin

1172 1172 

1173<h4 id="at-mention-event">1173<h4 id="at-mention-event">

1174 Événement de mention @1174 Événement de mention @

1175</h4>1175</h4>

1176 1176 

1177Enregistré lorsque Claude Code résout une mention `@` dans une invite. Pas chaque mention n'émet un événement : les chemins de sortie anticipée tels que les refus de permission, les fichiers surdimensionnés, les pièces jointes de référence PDF et les défaillances de listage de répertoires retournent sans journalisation.1177Journalisé lorsque Claude Code résout une mention `@` dans un prompt. Toutes les mentions n'émettent pas un événement : les chemins de sortie anticipée, comme les refus de permission, les fichiers trop volumineux, les pièces jointes de référence PDF et les échecs de listage de répertoires, se terminent sans journalisation.

1178 1178 

1179**Nom de l'événement** : `claude_code.at_mention`1179**Nom de l'événement** : `claude_code.at_mention`

1180 1180 


1182 1182 

1183* Tous les [attributs standard](#standard-attributes)1183* Tous les [attributs standard](#standard-attributes)

1184* `event.name` : `"at_mention"`1184* `event.name` : `"at_mention"`

1185* `event.timestamp` : Timestamp ISO 86011185* `event.timestamp` : horodatage ISO 8601

1186* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1186* `event.sequence` : compteur par processus pour ordonner les événements, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes)

1187* `mention_type` : Type de mention (`"file"`, `"directory"`, `"agent"`, `"mcp_resource"`, `"peer"`). La valeur `"peer"` signifie que vous avez mentionné [l'une de vos autres sessions Claude Code](/docs/fr/cross-session-messaging). Nécessite Claude Code v2.1.232 ou ultérieur1187* `mention_type` : type de mention (`"file"`, `"directory"`, `"agent"`, `"mcp_resource"`, `"peer"`). La valeur `"peer"` signifie que vous avez mentionné [l'une de vos autres sessions Claude Code](/docs/fr/cross-session-messaging). Nécessite Claude Code v2.1.232 ou ultérieur

1188* `success` : Si la mention a été résolue avec succès (`"true"` ou `"false"`)1188* `success` : indique si la mention a été résolue avec succès (`"true"` ou `"false"`)

1189 1189 

1190<h4 id="api-retries-exhausted-event">1190<h4 id="api-retries-exhausted-event">

1191 Événement de tentatives API épuisées1191 Événement d'épuisement des nouvelles tentatives API

1192</h4>1192</h4>

1193 1193 

1194Enregistré une fois lorsqu'une demande API échoue après plus d'une tentative. Émis aux côtés de l'événement `api_error` final.1194Journalisé une seule fois lorsqu'une requête API échoue après plus d'une tentative. Émis en même temps que l'événement `api_error` final.

1195 1195 

1196**Nom de l'événement** : `claude_code.api_retries_exhausted`1196**Nom de l'événement** : `claude_code.api_retries_exhausted`

1197 1197 


1199 1199 

1200* Tous les [attributs standard](#standard-attributes)1200* Tous les [attributs standard](#standard-attributes)

1201* `event.name` : `"api_retries_exhausted"`1201* `event.name` : `"api_retries_exhausted"`

1202* `event.timestamp` : Timestamp ISO 86011202* `event.timestamp` : horodatage ISO 8601

1203* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1203* `event.sequence` : compteur par processus pour ordonner les événements, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes)

1204* `model` : Modèle utilisé1204* `model` : modèle utilisé

1205* `error` : Message d'erreur final1205* `error` : message d'erreur final

1206* `status_code` : Code de statut HTTP sous forme de nombre. Absent pour les erreurs non-HTTP.1206* `status_code` : code de statut HTTP sous forme de nombre. Absent pour les erreurs non HTTP.

1207* `total_attempts` : Nombre total de tentatives effectuées1207* `total_attempts` : nombre total de tentatives effectuées

1208* `total_retry_duration_ms` : Temps mural total sur toutes les tentatives1208* `total_retry_duration_ms` : temps réel total écoulé sur l'ensemble des tentatives

1209* `speed` : `"fast"` ou `"normal"`1209* `speed` : `"fast"` ou `"normal"`

1210 1210 

1211<h4 id="hook-registered-event">1211<h4 id="hook-registered-event">

1212 Événement de hook enregistré1212 Événement d'enregistrement de hook

1213</h4>1213</h4>

1214 1214 

1215Enregistré une fois par hook configuré au démarrage de la session. Utilisez cet événement pour inventorier les hooks actifs dans votre flotte, en complément des événements par exécution `hook_execution_start` et `hook_execution_complete`.1215Journalisé une fois par hook configuré au démarrage de la session. Utilisez cet événement pour inventorier les hooks actifs sur l'ensemble de votre parc, en complément des événements par exécution `hook_execution_start` et `hook_execution_complete`.

1216 1216 

1217**Nom de l'événement** : `claude_code.hook_registered`1217**Nom de l'événement** : `claude_code.hook_registered`

1218 1218 


1220 1220 

1221* Tous les [attributs standard](#standard-attributes)1221* Tous les [attributs standard](#standard-attributes)

1222* `event.name` : `"hook_registered"`1222* `event.name` : `"hook_registered"`

1223* `event.timestamp` : Timestamp ISO 86011223* `event.timestamp` : horodatage ISO 8601

1224* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1224* `event.sequence` : compteur par processus pour ordonner les événements, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes)

1225* `hook_event` : type d'événement hook, par exemple `"PreToolUse"` ou `"PostToolUse"`1225* `hook_event` : type d'événement de hook, par exemple `"PreToolUse"` ou `"PostToolUse"`

1226* `hook_type` : type d'implémentation du hook : `"command"`, `"prompt"`, `"mcp_tool"`, `"http"`, ou `"agent"`1226* `hook_type` : type d'implémentation du hook : `"command"`, `"prompt"`, `"mcp_tool"`, `"http"` ou `"agent"`

1227* `hook_source` : où le hook est défini : `"userSettings"`, `"projectSettings"`, `"localSettings"`, `"flagSettings"`, `"policySettings"`, ou `"pluginHook"`1227* `hook_source` : emplacement où le hook est défini : `"userSettings"`, `"projectSettings"`, `"localSettings"`, `"flagSettings"`, `"policySettings"` ou `"pluginHook"`

1228* `safe_mode` : `"true"` lorsque la session a été démarrée avec [`--safe-mode`](/docs/fr/cli-reference), `"false"` sinon. Nécessite Claude Code v2.1.169 ou ultérieur1228* `safe_mode` : `"true"` lorsque la session a été démarrée avec [`--safe-mode`](/docs/fr/cli-reference), `"false"` sinon. Nécessite Claude Code v2.1.169 ou ultérieur

1229* `hook_matcher` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : la chaîne de correspondance de la configuration du hook, lorsqu'une est définie1229* `hook_matcher` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : chaîne du matcher issue de la configuration du hook, lorsqu'elle est définie

1230* `plugin.name` (lorsque `hook_source` est `"pluginHook"`) : nom du plugin contributeur. Pour les plugins en dehors de la place de marché officielle et du bundle intégré, la valeur est `"third-party"` sauf si `OTEL_LOG_TOOL_DETAILS=1`1230* `plugin.name` (lorsque `hook_source` vaut `"pluginHook"`) : nom du plugin contributeur. Pour les plugins extérieurs à la marketplace officielle et au bundle intégré, la valeur est `"third-party"` sauf si `OTEL_LOG_TOOL_DETAILS=1`

1231* `plugin_id_hash` (lorsque `hook_source` est `"pluginHook"`) : hash déterministe du nom du plugin et de la place de marché, envoyé uniquement à votre exportateur configuré. Vous permet de compter les plugins contributeurs distincts sans enregistrer leurs noms. Claude Code le calcule comme décrit sous l'[événement de plugin chargé](#plugin-loaded-event)1231* `plugin_id_hash` (lorsque `hook_source` vaut `"pluginHook"`) : hachage déterministe du nom du plugin et de la marketplace, envoyé uniquement à votre exportateur configuré. Permet de compter les plugins contributeurs distincts sans enregistrer leurs noms. Claude Code le calcule comme décrit dans l'[événement de chargement de plugin](#plugin-loaded-event)

1232 1232 

1233<h4 id="hook-execution-start-event">1233<h4 id="hook-execution-start-event">

1234 Événement de début d'exécution de hook1234 Événement de début d'exécution de hook

1235</h4>1235</h4>

1236 1236 

1237Enregistré lorsqu'un ou plusieurs hooks commencent à s'exécuter pour un événement hook.1237Journalisé lorsqu'un ou plusieurs hooks commencent à s'exécuter pour un événement de hook.

1238 1238 

1239**Nom de l'événement** : `claude_code.hook_execution_start`1239**Nom de l'événement** : `claude_code.hook_execution_start`

1240 1240 


1242 1242 

1243* Tous les [attributs standard](#standard-attributes)1243* Tous les [attributs standard](#standard-attributes)

1244* `event.name` : `"hook_execution_start"`1244* `event.name` : `"hook_execution_start"`

1245* `event.timestamp` : Timestamp ISO 86011245* `event.timestamp` : horodatage ISO 8601

1246* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1246* `event.sequence` : compteur par processus pour ordonner les événements, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes)

1247* `hook_event` : Type d'événement hook, par exemple `"PreToolUse"` ou `"PostToolUse"`1247* `hook_event` : type d'événement de hook, par exemple `"PreToolUse"` ou `"PostToolUse"`

1248* `hook_name` : Nom complet du hook incluant le correspondant, par exemple `"PreToolUse:Write"`1248* `hook_name` : nom complet du hook incluant le matcher, par exemple `"PreToolUse:Write"`

1249* `num_hooks` : Nombre de commandes hook correspondantes1249* `num_hooks` : nombre de commandes de hook correspondantes

1250* `managed_only` : `"true"` lorsque seuls les hooks de politique gérée sont autorisés1250* `managed_only` : `"true"` lorsque seuls les hooks de la politique gérée sont autorisés

1251* `hook_source` : `"policySettings"` ou `"merged"`1251* `hook_source` : `"policySettings"` ou `"merged"`

1252* `safe_mode` : `"true"` lorsque la session a été démarrée avec [`--safe-mode`](/docs/fr/cli-reference), `"false"` sinon. Nécessite Claude Code v2.1.169 ou ultérieur1252* `safe_mode` : `"true"` lorsque la session a été démarrée avec [`--safe-mode`](/docs/fr/cli-reference), `"false"` sinon. Nécessite Claude Code v2.1.169 ou ultérieur

1253* `hook_definitions` : Configuration du hook sérialisée en JSON. Inclus uniquement lorsque le traçage bêta détaillé et `OTEL_LOG_TOOL_DETAILS=1` sont tous deux activés1253* `hook_definitions` : configuration du hook sérialisée en JSON. Incluse uniquement lorsque le traçage bêta détaillé et `OTEL_LOG_TOOL_DETAILS=1` sont tous deux activés

1254 1254 

1255<h4 id="hook-execution-complete-event">1255<h4 id="hook-execution-complete-event">

1256 Événement de fin d'exécution de hook1256 Événement de fin d'exécution de hook

1257</h4>1257</h4>

1258 1258 

1259Enregistré lorsque tous les hooks pour un événement hook ont terminé.1259Journalisé lorsque tous les hooks d'un événement de hook ont terminé.

1260 1260 

1261**Nom de l'événement** : `claude_code.hook_execution_complete`1261**Nom de l'événement** : `claude_code.hook_execution_complete`

1262 1262 


1264 1264 

1265* Tous les [attributs standard](#standard-attributes)1265* Tous les [attributs standard](#standard-attributes)

1266* `event.name` : `"hook_execution_complete"`1266* `event.name` : `"hook_execution_complete"`

1267* `event.timestamp` : Timestamp ISO 86011267* `event.timestamp` : horodatage ISO 8601

1268* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1268* `event.sequence` : compteur par processus pour ordonner les événements, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes)

1269* `hook_event` : Type d'événement hook1269* `hook_event` : type d'événement de hook

1270* `hook_name` : Nom complet du hook incluant le correspondant1270* `hook_name` : nom complet du hook incluant le matcher

1271* `num_hooks` : Nombre de commandes hook correspondantes1271* `num_hooks` : nombre de commandes de hook correspondantes

1272* `num_success` : Nombre qui ont réussi1272* `num_success` : nombre de hooks terminés avec succès

1273* `num_blocking` : Nombre qui ont retourné une décision de blocage1273* `num_blocking` : nombre de hooks ayant renvoyé une décision bloquante

1274* `num_non_blocking_error` : Nombre qui ont échoué sans bloquer1274* `num_non_blocking_error` : nombre de hooks ayant échoué sans bloquer

1275* `num_cancelled` : Nombre annulé avant la fin1275* `num_cancelled` : nombre de hooks annulés avant la fin

1276* `total_duration_ms` : Durée mural de tous les hooks correspondants1276* `total_duration_ms` : durée réelle écoulée pour l'ensemble des hooks correspondants

1277* `stdout_chars` : Nombre total de caractères de stdout sur les hooks correspondants qui ont réussi. Nécessite Claude Code v2.1.280 ou ultérieur1277* `stdout_chars` : nombre total de caractères de stdout pour les hooks correspondants ayant réussi. Nécessite Claude Code v2.1.280 ou ultérieur

1278* `additional_context_chars` : Nombre total de caractères de `additionalContext` retournés par les hooks correspondants. Nécessite Claude Code v2.1.280 ou ultérieur1278* `additional_context_chars` : nombre total de caractères de `additionalContext` renvoyés par les hooks correspondants. Nécessite Claude Code v2.1.280 ou ultérieur

1279* `system_message_chars` : Nombre total de caractères de `systemMessage` retournés par les hooks correspondants. Nécessite Claude Code v2.1.280 ou ultérieur1279* `system_message_chars` : nombre total de caractères de `systemMessage` renvoyés par les hooks correspondants. Nécessite Claude Code v2.1.280 ou ultérieur

1280* `initial_user_message_chars` : Nombre total de caractères de `initialUserMessage` retournés par les hooks correspondants. Nécessite Claude Code v2.1.280 ou ultérieur1280* `initial_user_message_chars` : nombre total de caractères de `initialUserMessage` renvoyés par les hooks correspondants. Nécessite Claude Code v2.1.280 ou ultérieur

1281* `num_outputs_persisted` : Nombre de sorties de hook au-delà de la [limite de 10 000 caractères](/docs/fr/hooks#json-output) que Claude Code a enregistrées dans un fichier. Nécessite Claude Code v2.1.280 ou ultérieur1281* `num_outputs_persisted` : nombre de sorties de hook dépassant le [plafond de 10 000 caractères](/docs/fr/hooks#json-output) que Claude Code a enregistrées dans un fichier. Nécessite Claude Code v2.1.280 ou ultérieur

1282* `managed_only` : `"true"` lorsque seuls les hooks de politique gérée sont autorisés1282* `managed_only` : `"true"` lorsque seuls les hooks de la politique gérée sont autorisés

1283* `hook_source` : `"policySettings"` ou `"merged"`1283* `hook_source` : `"policySettings"` ou `"merged"`

1284* `safe_mode` : `"true"` lorsque la session a été démarrée avec [`--safe-mode`](/docs/fr/cli-reference), `"false"` sinon. Nécessite Claude Code v2.1.169 ou ultérieur1284* `safe_mode` : `"true"` lorsque la session a été démarrée avec [`--safe-mode`](/docs/fr/cli-reference), `"false"` sinon. Nécessite Claude Code v2.1.169 ou ultérieur

1285* `hook_definitions` : Configuration du hook sérialisée en JSON. Inclus uniquement lorsque le traçage bêta détaillé et `OTEL_LOG_TOOL_DETAILS=1` sont tous deux activés1285* `hook_definitions` : configuration du hook sérialisée en JSON. Incluse uniquement lorsque le traçage bêta détaillé et `OTEL_LOG_TOOL_DETAILS=1` sont tous deux activés

1286 1286 

1287<h4 id="hook-plugin-metrics-event">1287<h4 id="hook-plugin-metrics-event">

1288 Événement de métriques de plugin de hook1288 Événement de métriques de plugin de hook

1289</h4>1289</h4>

1290 1290 

1291Enregistré lorsqu'un hook de plugin de place de marché officielle émet des métriques par invocation. Seuls les plugins installés à partir d'une place de marché Anthropic officielle peuvent émettre ceci. Les plugins de place de marché tiers et les hooks configurés par l'utilisateur n'émettent pas vers cet événement. Utilisez cet événement pour surveiller le comportement du plugin, par exemple les taux de découverte, les coûts et les durées à partir de votre propre pile d'observabilité.1291Journalisé lorsqu'un hook de plugin de la marketplace officielle émet des métriques par invocation. Seuls les plugins installés depuis une marketplace officielle d'Anthropic peuvent les émettre. Les plugins de marketplaces tierces et les hooks configurés par l'utilisateur n'émettent pas cet événement. Utilisez cet événement pour surveiller le comportement des plugins, comme les taux de détection, les coûts et les durées, depuis votre propre stack d'observabilité.

1292 1292 

1293**Nom de l'événement** : `claude_code.hook_plugin_metrics`1293**Nom de l'événement** : `claude_code.hook_plugin_metrics`

1294 1294 


1296 1296 

1297* Tous les [attributs standard](#standard-attributes)1297* Tous les [attributs standard](#standard-attributes)

1298* `event.name` : `"hook_plugin_metrics"`1298* `event.name` : `"hook_plugin_metrics"`

1299* `event.timestamp` : Timestamp ISO 86011299* `event.timestamp` : horodatage ISO 8601

1300* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1300* `event.sequence` : compteur par processus pour ordonner les événements, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes)

1301* `plugin_id` : identifiant du plugin sous la forme `<name>@<marketplace>`1301* `plugin_id` : identifiant du plugin au format `<name>@<marketplace>`

1302* `hook_event` : type d'événement hook qui a émis les métriques1302* `hook_event` : type d'événement de hook ayant émis les métriques

1303* Jusqu'à 20 clés de métriques émises par le plugin. Les noms correspondent à `^[a-z][a-z0-9_]{0,39}$`. Les valeurs sont booléennes ou numériques.1303* Jusqu'à 20 clés de métriques émises par le plugin. Les noms correspondent à `^[a-z][a-z0-9_]{0,39}$`. Les valeurs sont booléennes ou numériques.

1304 1304 

1305<h4 id="compaction-event">1305<h4 id="compaction-event">

1306 Événement de compaction1306 Événement de compaction

1307</h4>1307</h4>

1308 1308 

1309Enregistré lorsque la compaction de conversation se termine.1309Journalisé lorsque la compaction de la conversation se termine.

1310 1310 

1311**Nom de l'événement** : `claude_code.compaction`1311**Nom de l'événement** : `claude_code.compaction`

1312 1312 


1314 1314 

1315* Tous les [attributs standard](#standard-attributes)1315* Tous les [attributs standard](#standard-attributes)

1316* `event.name` : `"compaction"`1316* `event.name` : `"compaction"`

1317* `event.timestamp` : Timestamp ISO 86011317* `event.timestamp` : horodatage ISO 8601

1318* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1318* `event.sequence` : compteur par processus pour ordonner les événements, décrit dans [Attributs de corrélation des événements](#event-correlation-attributes)

1319* `trigger` : `"auto"` ou `"manual"`1319* `trigger` : `"auto"` ou `"manual"`

1320* `success` : `"true"` ou `"false"`1320* `success` : `"true"` ou `"false"`

1321* `duration_ms` : Durée de compaction1321* `duration_ms` : durée de la compaction

1322* `pre_tokens` : Nombre approximatif de jetons avant compaction1322* `pre_tokens` : nombre approximatif de tokens avant la compaction

1323* `post_tokens` : Nombre approximatif de jetons après compaction1323* `post_tokens` : nombre approximatif de tokens après la compaction

1324* `error` : Message d'erreur lorsque la compaction a échoué1324* `error` : message d'erreur lorsque la compaction a échoué

1325* `precompute_reuse` : Défini uniquement lorsque `trigger` est `"manual"`. La compaction automatique peut préparer un résumé en arrière-plan avant que la fenêtre de contexte ne se remplisse, et cet attribut enregistre si `/compact` a réutilisé ce résumé préparé. `"hit"` signifie qu'il a été réutilisé ; `"miss_custom_instructions"`, `"miss_hook"`, et `"miss_not_ready"` donnent la raison pour laquelle un résumé frais a été calculé à la place. Nécessite Claude Code v2.1.153 ou ultérieur1325* `precompute_reuse` : défini uniquement lorsque `trigger` vaut `"manual"`. La compaction automatique peut préparer un résumé en arrière-plan avant que la fenêtre de contexte ne soit pleine, et cet attribut indique si `/compact` a réutilisé ce résumé préparé. `"hit"` signifie qu'il a été réutilisé ; `"miss_custom_instructions"`, `"miss_hook"` et `"miss_not_ready"` indiquent la raison pour laquelle un nouveau résumé a été calculé à la place. Nécessite Claude Code v2.1.153 ou ultérieur

1326 1326 

1327<h4 id="subagent-completed-event">1327<h4 id="subagent-completed-event">

1328 Événement de fin de sous-agent1328 Événement de sous-agent terminé

1329</h4>1329</h4>

1330 1330 

1331Enregistré lorsqu'un [sous-agent](/docs/fr/sub-agents) se termine et retourne son résultat à la conversation qui l'a démarré. Utilisez-le pour regrouper l'utilisation d'outils et le temps d'exécution par type de sous-agent ; pour les regroupements de jetons ou de coûts, utilisez le [compteur de jetons](#token-counter) et le [compteur de coûts](#cost-counter) filtrés sur `query_source` `"subagent"`, puisque le `total_tokens` de cet événement couvre uniquement la demande finale. La catégorie `"subagent"` compte également les demandes des hooks basés sur des agents, qui n'émettent aucun événement de sous-agent.1331Enregistré lorsqu'un [sous-agent](/docs/fr/sub-agents) se termine et renvoie son résultat à la conversation qui l'a lancé. Utilisez-le pour agréger l'utilisation des outils et la durée d'exécution par type de sous-agent ; pour agréger les tokens ou les coûts, utilisez le [compteur de tokens](#token-counter) et le [compteur de coûts](#cost-counter) filtrés sur `query_source` `"subagent"`, car le `total_tokens` de cet événement ne couvre que la requête finale. La catégorie `"subagent"` comptabilise également les requêtes provenant des hooks basés sur des agents, qui n'émettent aucun événement de sous-agent.

1332 1332 

1333**Nom de l'événement** : `claude_code.subagent_completed`1333**Nom de l'événement** : `claude_code.subagent_completed`

1334 1334 


1336 1336 

1337* Tous les [attributs standard](#standard-attributes)1337* Tous les [attributs standard](#standard-attributes)

1338* `event.name` : `"subagent_completed"`1338* `event.name` : `"subagent_completed"`

1339* `event.timestamp` : Timestamp ISO 86011339* `event.timestamp` : horodatage ISO 8601

1340* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1340* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation des événements](#event-correlation-attributes)

1341* `agent_type` : Le type de sous-agent. Les noms d'agents intégrés et les agents des plugins de la place de marché officielle apparaissent textuellement ; les autres noms d'agents sont remplacés par `"custom"` sauf si `OTEL_LOG_TOOL_DETAILS=1` est défini1341* `agent_type` : le type de sous-agent. Les noms des agents intégrés et des agents provenant de plugins de la marketplace officielle apparaissent tels quels ; les autres noms d'agents sont remplacés par `"custom"`, sauf si `OTEL_LOG_TOOL_DETAILS=1` est défini

1342* `agent.source` : D'où la définition d'agent provient : `built-in`, `plugin`, ou la source de paramètres qui a défini un agent personnalisé, par exemple `userSettings` ou `projectSettings`1342* `agent.source` : l'origine de la définition de l'agent : `built-in`, `plugin`, ou la source de paramètres qui a défini un agent personnalisé, comme `userSettings` ou `projectSettings`

1343* `is_built_in` : Si le sous-agent est un type d'agent intégré1343* `is_built_in` : indique si le sous-agent est un type d'agent intégré

1344* `is_async` : Si le sous-agent s'exécutait en [arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background)1344* `is_async` : indique si le sous-agent s'est exécuté en [arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background)

1345* `total_tokens` : L'empreinte de jetons de la demande API finale du sous-agent : les jetons d'entrée, de création de cache, de lecture de cache et de sortie de cette seule demande, à peu près la taille du contexte du sous-agent à la fin. Pas une somme sur l'exécution1345* `total_tokens` : l'empreinte en tokens de la requête API finale du sous-agent : les tokens d'entrée, de création de cache, de lecture du cache et de sortie de cette seule requête, soit approximativement la taille du contexte du sous-agent à la fin de son exécution. Il ne s'agit pas d'une somme sur l'ensemble de l'exécution

1346* `total_tool_uses` : Nombre d'appels d'outils que le sous-agent a effectués sur toute l'exécution1346* `total_tool_uses` : nombre d'appels d'outils effectués par le sous-agent sur l'ensemble de l'exécution

1347* `duration_ms` : Temps d'exécution en millisecondes1347* `duration_ms` : durée d'exécution en millisecondes

1348* `model` : Le modèle auquel le sous-agent a été résolu pour s'exécuter1348* `model` : le modèle sur lequel le sous-agent a été résolu pour s'exécuter

1349* `final_model` : Le modèle qui a produit la réponse finale du sous-agent, qui diffère de `model` après un changement en cours d'exécution tel qu'un secours. Nécessite Claude Code v2.1.212 ou ultérieur1349* `final_model` : le modèle qui a produit la réponse finale du sous-agent, qui diffère de `model` après un changement en cours d'exécution, par exemple vers un modèle de secours. Nécessite Claude Code v2.1.212 ou version ultérieure

1350* `model_swapped` : Si plus d'un modèle a servi les demandes du sous-agent. Nécessite Claude Code v2.1.212 ou ultérieur1350* `model_swapped` : indique si plus d'un modèle a traité les requêtes du sous-agent. Nécessite Claude Code v2.1.212 ou version ultérieure

1351* `plugin_id_hash`, `plugin.name` : Présent pour les agents fournis par les plugins. Les noms des plugins de la place de marché officielle apparaissent textuellement ; les autres noms de plugins sont remplacés par `"third-party"` sauf si `OTEL_LOG_TOOL_DETAILS=1` est défini1351* `plugin_id_hash`, `plugin.name` : présents pour les agents fournis par des plugins. Les noms des plugins de la marketplace officielle apparaissent tels quels ; les autres noms de plugins sont remplacés par `"third-party"`, sauf si `OTEL_LOG_TOOL_DETAILS=1` est défini

1352 1352 

1353<h4 id="feedback-survey-event">1353<h4 id="feedback-survey-event">

1354 Événement d'enquête de rétroaction1354 Événement d'enquête de feedback

1355</h4>1355</h4>

1356 1356 

1357Enregistré lorsqu'une enquête de qualité de session est affichée ou répondue. Voir [Enquêtes de qualité de session](/docs/fr/data-usage#session-quality-surveys) pour ce que les enquêtes collectent et comment les contrôler.1357Enregistré lorsqu'une enquête sur la qualité de la session est affichée ou reçoit une réponse. Consultez [Enquêtes sur la qualité des sessions](/docs/fr/data-usage#session-quality-surveys) pour savoir ce que collectent les enquêtes et comment les contrôler.

1358 1358 

1359**Nom de l'événement** : `claude_code.feedback_survey`1359**Nom de l'événement** : `claude_code.feedback_survey`

1360 1360 


1362 1362 

1363* Tous les [attributs standard](#standard-attributes)1363* Tous les [attributs standard](#standard-attributes)

1364* `event.name` : `"feedback_survey"`1364* `event.name` : `"feedback_survey"`

1365* `event.timestamp` : Timestamp ISO 86011365* `event.timestamp` : horodatage ISO 8601

1366* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1366* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation des événements](#event-correlation-attributes)

1367* `event_type` : Événement du cycle de vie de l'enquête, par exemple `"appeared"`, `"responded"`, ou `"transcript_prompt_appeared"`1367* `event_type` : événement du cycle de vie de l'enquête, par exemple `"appeared"`, `"responded"` ou `"transcript_prompt_appeared"`

1368* `appearance_id` : ID unique reliant les événements émis pour une instance d'enquête1368* `appearance_id` : identifiant unique reliant les événements émis pour une même instance d'enquête

1369* `survey_type` : Quelle enquête a produit l'événement. `"session"` est l'invite d'évaluation « Comment Claude se débrouille-t-il ? »1369* `survey_type` : l'enquête qui a produit l'événement. `"session"` correspond à la demande d'évaluation « How is Claude doing? »

1370* `response` : La sélection de l'utilisateur sur les événements `responded`1370* `response` : la sélection de l'utilisateur pour les événements `responded`

1371* `enabled_via_override` : `true` lorsque [`CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL`](/docs/fr/env-vars) est défini. Émis sous forme de booléen, pas de chaîne. Présent sur les événements d'enquête `session`. Filtrez sur cet attribut pour confirmer que le remplacement est appliqué dans une flotte1371* `enabled_via_override` : `true` lorsque [`CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL`](/docs/fr/env-vars) est défini. Émis sous forme de booléen, et non de chaîne. Présent sur les événements d'enquête `session`. Filtrez sur cet attribut pour confirmer que le remplacement est appliqué sur l'ensemble d'un parc

1372 1372 

1373<h4 id="retention-sweep-event">1373<h4 id="retention-sweep-event">

1374 Événement de balayage de rétention1374 Événement de balayage de rétention

1375</h4>1375</h4>

1376 1376 

1377Enregistré une fois par exécution du balayage de nettoyage de rétention, qui supprime les [transcriptions de session et autres données d'application](/docs/fr/claude-directory#cleaned-up-automatically) plus anciennes que le paramètre [`cleanupPeriodDays`](/docs/fr/settings-reference#cleanupperioddays). Claude Code exécute le balayage en arrière-plan au maximum une fois par session, et une exécution qui ne supprime rien émet quand même l'événement. Si Claude Code a exécuté le balayage dans n'importe quelle session sur la même machine au cours des 24 dernières heures, il retarde le balayage de cette session d'au moins 10 minutes, donc une session qui se termine plus tôt n'émet rien. Lorsque vous exécutez `claude -p` avec `--bare`, Claude Code n'exécute pas le balayage et n'émet rien.1377Enregistré une fois par exécution du balayage de nettoyage de rétention, qui supprime les [transcriptions de session et autres données d'application](/docs/fr/claude-directory#cleaned-up-automatically) plus anciennes que la valeur du paramètre [`cleanupPeriodDays`](/docs/fr/settings-reference#cleanupperioddays). Claude Code exécute le balayage en arrière-plan au plus une fois par session, et une exécution qui ne supprime rien émet tout de même l'événement. Si Claude Code a exécuté le balayage dans une session quelconque sur la même machine au cours des dernières 24 heures, il retarde le balayage de cette session d'au moins 10 minutes, de sorte qu'une session qui se termine plus tôt n'émet rien. Lorsque vous exécutez `claude -p` avec `--bare`, Claude Code n'exécute pas le balayage et n'émet rien.

1378 1378 

1379Comme chaque événement OTel sur cette page, il va uniquement au backend de télémétrie que vous configurez. Nécessite Claude Code v2.1.227 ou ultérieur.1379Comme tous les événements OTel de cette page, il est envoyé uniquement au backend de télémétrie que vous configurez. Nécessite Claude Code v2.1.227 ou version ultérieure.

1380 1380 

1381Lorsque Claude Code ne peut pas déterminer avec certitude la période de rétention, il met en pause le balayage et émet l'événement avec `result` défini à `"skipped"` et une `skip_reason`. Lorsque les [paramètres gérés](/docs/fr/server-managed-settings) définissent `cleanupPeriodDays`, la valeur gérée épingle la période de rétention et le balayage s'exécute même lorsqu'un fichier de paramètres dans une portée de priorité inférieure est cassé ou invalide. Lorsque `managed-settings.json` lui-même ne peut pas être lu, Claude Code met quand même en pause le balayage sauf si le [niveau géré](/docs/fr/managed-settings#how-claude-code-combines-managed-sources) fournit `cleanupPeriodDays` d'ailleurs, par exemple à partir des paramètres gérés par le serveur ou d'une suppression `managed-settings.d/` à côté du fichier cassé. Les attributs du compteur de suppression sont présents uniquement lorsque `result` est `"complete"`.1381Lorsque Claude Code ne peut pas déterminer de manière sûre la période de rétention, il suspend le balayage et émet l'événement avec `result` défini sur `"skipped"` et un `skip_reason`. Lorsque des [paramètres gérés](/docs/fr/server-managed-settings) définissent `cleanupPeriodDays`, la valeur gérée fixe la période de rétention et le balayage s'exécute même lorsqu'un fichier de paramètres d'une portée de priorité inférieure est endommagé ou invalide. Lorsque `managed-settings.json` lui-même ne peut pas être lu, Claude Code suspend quand même le balayage, sauf si le [niveau géré](/docs/fr/managed-settings#how-claude-code-combines-managed-sources) fournit `cleanupPeriodDays` depuis une autre source, comme des paramètres gérés par le serveur ou un fichier déposé dans `managed-settings.d/` à côté du fichier endommagé. Les attributs de compteur de suppressions ne sont présents que lorsque `result` vaut `"complete"`.

1382 1382 

1383**Nom de l'événement** : `claude_code.retention_sweep`1383**Nom de l'événement** : `claude_code.retention_sweep`

1384 1384 


1386 1386 

1387* Tous les [attributs standard](#standard-attributes)1387* Tous les [attributs standard](#standard-attributes)

1388* `event.name` : `"retention_sweep"`1388* `event.name` : `"retention_sweep"`

1389* `event.timestamp` : Timestamp ISO 86011389* `event.timestamp` : horodatage ISO 8601

1390* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1390* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation des événements](#event-correlation-attributes)

1391* `result` : `"complete"` lorsque le balayage s'est exécuté, `"skipped"` lorsque Claude Code l'a mis en pause1391* `result` : `"complete"` lorsque le balayage s'est exécuté, `"skipped"` lorsque Claude Code l'a suspendu

1392* `period_days` : La valeur `cleanupPeriodDays` à partir des paramètres fusionnés, en jours, ou `30` lorsqu'aucune source ne la définit. Sur les événements ignorés, la valeur que le balayage aurait utilisée, calculée à partir des sources de paramètres que Claude Code pouvait lire1392* `period_days` : la valeur de `cleanupPeriodDays` issue des paramètres fusionnés, en jours, ou `30` lorsqu'aucune source ne la définit. Sur les événements ignorés, il s'agit de la valeur que le balayage aurait utilisée, calculée à partir des sources de paramètres que Claude Code a pu lire

1393* `used_default` : `"true"` lorsqu'aucune source de paramètres lisible ne définit `cleanupPeriodDays`, `"false"` sinon. Sur les événements complets, `"true"` signifie que la valeur par défaut de 30 jours s'appliquait1393* `used_default` : `"true"` lorsqu'aucune source de paramètres lisible ne définit `cleanupPeriodDays`, `"false"` sinon. Sur les événements terminés, `"true"` signifie que la valeur par défaut de 30 jours s'est appliquée

1394* `skip_reason` : Pourquoi Claude Code a mis en pause le balayage. Présent uniquement lorsque `result` est `"skipped"` :1394* `skip_reason` : la raison pour laquelle Claude Code a suspendu le balayage. Présent uniquement lorsque `result` vaut `"skipped"` :

1395 * `"user_source_disabled"` : Les paramètres utilisateur sont exclus, par exemple par le drapeau [`--setting-sources`](/docs/fr/cli-reference#cli-flags) ou l'option [`settingSources`](/docs/fr/agent-sdk/typescript#options) du SDK, et aucune source activée ne fournit `cleanupPeriodDays`1395 * `"user_source_disabled"` : les paramètres utilisateur sont exclus, par exemple par le flag [`--setting-sources`](/docs/fr/cli-reference#cli-flags) ou l'option [`settingSources`](/docs/fr/agent-sdk/typescript#options) du SDK, et aucune source activée ne fournit `cleanupPeriodDays`

1396 * `"settings_unknowable"` : Un fichier de paramètres n'a pas pu être lu ou analysé, donc `cleanupPeriodDays` ou `desktopSessionCleanupPeriodDays` peut être défini à une valeur que Claude Code ne peut pas voir1396 * `"settings_unknowable"` : un fichier de paramètres n'a pas pu être lu ou analysé, de sorte que `cleanupPeriodDays` ou `desktopSessionCleanupPeriodDays` pourrait être défini sur une valeur que Claude Code ne peut pas voir

1397 * `"settings_invalid_key_set"` : Les paramètres ont des erreurs de validation et `cleanupPeriodDays` ou `desktopSessionCleanupPeriodDays` est explicitement défini, donc revenir à la valeur par défaut pourrait supprimer ou conserver des fichiers contre ce paramètre1397 * `"settings_invalid_key_set"` : les paramètres comportent des erreurs de validation et `cleanupPeriodDays` ou `desktopSessionCleanupPeriodDays` est explicitement défini, de sorte que se rabattre sur la valeur par défaut pourrait supprimer ou conserver des fichiers contrairement à ce paramètre

1398* `transcripts_deleted` : Nombre de transcriptions de session, les fichiers `~/.claude/projects/*/*.jsonl` de niveau supérieur, que le balayage a supprimés1398* `transcripts_deleted` : nombre de transcriptions de session, c'est-à-dire les fichiers `~/.claude/projects/*/*.jsonl` de premier niveau, que le balayage a supprimées

1399* `transcripts_exempted_desktop` : Nombre de transcriptions au-delà de la période de rétention que le balayage a conservées selon la [règle Claude Desktop et Cowork](/docs/fr/claude-directory#cleaned-up-automatically). Celles-ci ne comptent pas vers `files_past_cutoff`. Nécessite Claude Code v2.1.248 ou ultérieur1399* `transcripts_exempted_desktop` : nombre de transcriptions ayant dépassé la période de rétention que le balayage a conservées en vertu de la [règle Claude Desktop et Cowork](/docs/fr/claude-directory#cleaned-up-automatically). Elles ne sont pas comptabilisées dans `files_past_cutoff`. Nécessite Claude Code v2.1.248 ou version ultérieure

1400* `session_files_deleted` : Nombre d'artefacts que le balayage des fichiers de session a supprimés : transcriptions plus fichiers compagnons par session tels que les barres latérales, les enregistrements et les résultats d'outils1400* `session_files_deleted` : nombre d'artefacts supprimés par le balayage des fichiers de session : les transcriptions ainsi que les fichiers associés à chaque session, tels que les fichiers annexes, les enregistrements et les résultats d'outils

1401* `artifacts_deleted` : Nombre total d'éléments que le balayage a supprimés dans les répertoires de données qu'il couvre, y compris les fichiers de session. Certains balayages comptent un arbre de répertoires supprimé entier comme un élément et quelques passes de nettoyage ne contribuent pas au compteur, donc traitez la valeur comme un plancher plutôt qu'un nombre exact de fichiers1401* `artifacts_deleted` : nombre total d'éléments supprimés par le balayage dans les répertoires de données qu'il couvre, y compris les fichiers de session. Certains balayages comptent une arborescence de répertoires supprimée entière comme un seul élément et quelques passes de nettoyage ne contribuent pas au compteur ; considérez donc cette valeur comme un minimum plutôt que comme un nombre exact de fichiers

1402* `files_retained_fresh` : Fichiers inspectés et laissés en place car ils sont toujours dans la période de rétention. Seuls les balayages par fichier comptent ceux-ci, donc la valeur est un plancher ; une valeur non nulle est l'état stable normal1402* `files_retained_fresh` : fichiers inspectés et laissés en place parce qu'ils sont toujours dans la période de rétention. Seuls les balayages fichier par fichier les comptabilisent, la valeur est donc un minimum ; une valeur non nulle correspond à l'état normal

1403* `files_past_cutoff` : Fichiers plus anciens que la période de rétention que le balayage n'a pas pu supprimer, par exemple en raison d'une erreur de permission ou d'un fichier maintenu ouvert. Une valeur supérieure à zéro signifie que les fichiers ont dépassé la période de rétention configurée ; zéro n'est pas la preuve qu'aucun ne l'a fait, car une suppression échouée d'un répertoire entier compte vers `error_count` à la place1403* `files_past_cutoff` : fichiers plus anciens que la période de rétention que le balayage n'a pas réussi à supprimer, par exemple en raison d'une erreur de permission ou d'un fichier maintenu ouvert. Une valeur supérieure à zéro signifie que des fichiers ont survécu au-delà de la période de rétention configurée ; zéro ne prouve pas qu'aucun ne l'a fait, car l'échec de la suppression d'un répertoire entier est comptabilisé dans `error_count` à la place

1404* `error_count` : Nombre d'erreurs que le balayage a rencontrées lors de la liste ou de la suppression de fichiers1404* `error_count` : nombre d'erreurs rencontrées par le balayage lors du listage ou de la suppression de fichiers

1405 1405 

1406<h4 id="managed-settings-resolved-event">1406<h4 id="managed-settings-resolved-event">

1407 Événement de paramètres gérés résolus1407 Événement de résolution des paramètres gérés

1408</h4>1408</h4>

1409 1409 

1410Enregistré avec les [paramètres gérés](/docs/fr/managed-settings) qu'une session a résolus : une fois au démarrage de la session, à nouveau lorsque soit les paramètres gérés soit l'état de l'[assistant de politique](/docs/fr/managed-settings#compute-the-policy-with-a-helper-program) change pendant la session, et lorsque Claude Code refuse de démarrer ou termine la session pour l'une des raisons que l'attribut `error.type` énumère.1410Enregistré avec les [paramètres gérés](/docs/fr/managed-settings) qu'une session a résolus : une fois au démarrage de la session, de nouveau lorsque les paramètres gérés ou l'état du [programme d'aide de politique](/docs/fr/managed-settings#compute-the-policy-with-a-helper-program) changent pendant la session, et lorsque Claude Code refuse de démarrer ou met fin à la session pour l'une des raisons répertoriées par l'attribut `error.type`.

1411Utilisez cet événement pour trouver les machines exécutées sur une source gérée inattendue, les machines dont l'assistant de politique échoue, et la raison pour laquelle une machine a refusé de démarrer.1411Utilisez cet événement pour repérer les machines qui s'exécutent sur une source gérée inattendue, les machines dont le programme d'aide de politique échoue, et la raison pour laquelle une machine a refusé de démarrer.

1412Nécessite Claude Code v2.1.274 ou ultérieur.1412Nécessite Claude Code v2.1.274 ou version ultérieure.

1413 1413 

1414Par défaut, l'événement porte les sources gérées et l'état de l'assistant de politique mais pas les paramètres eux-mêmes. Pour ajouter l'attribut `managed_settings.settings` rédacté et le digest `managed_settings.resolved_sha256`, définissez `OTEL_LOG_MANAGED_SETTINGS=1` :1414Par défaut, l'événement contient les sources gérées et l'état du programme d'aide de politique, mais pas les paramètres eux-mêmes. Pour ajouter l'attribut expurgé `managed_settings.settings` et l'empreinte `managed_settings.resolved_sha256`, définissez `OTEL_LOG_MANAGED_SETTINGS=1` :

1415 1415 

1416* Définissez-le dans le bloc `env` des paramètres gérés, des paramètres utilisateur, ou `--settings`, ou dans l'environnement avec lequel vous lancez Claude Code. Une valeur dans les paramètres du projet ou locaux ne l'active pas, car un référentiel cloné peut les écrire.1416* Définissez-la dans le bloc `env` des paramètres gérés, des paramètres utilisateur ou de `--settings`, ou dans l'environnement avec lequel vous lancez Claude Code. Une valeur dans les paramètres de projet ou locaux ne l'active pas, car un dépôt cloné peut les écrire.

1417* Les paramètres gérés par le serveur peuvent le définir sans afficher la [boîte de dialogue d'approbation de sécurité](/docs/fr/server-managed-settings#security-approval-dialogs), car la variable ajoute uniquement votre propre politique rédactée de l'organisation à un événement que votre organisation reçoit déjà.1417* Les paramètres gérés par le serveur peuvent la définir sans afficher la [boîte de dialogue d'approbation de sécurité](/docs/fr/server-managed-settings#security-approval-dialogs), car la variable ajoute uniquement la politique expurgée de votre organisation à un événement que votre organisation reçoit déjà.

1418 1418 

1419Dans une session interactive dans un dossier que vous n'avez pas [approuvé](/docs/fr/permissions#what-runs-before-you-trust-a-folder), Claude Code n'exporte pas l'événement de refus.1419Dans une session interactive au sein d'un dossier que vous n'avez pas [approuvé](/docs/fr/permissions#what-runs-before-you-trust-a-folder), Claude Code n'exporte pas l'événement de refus.

1420 1420 

1421**Nom de l'événement** : `claude_code.managed_settings_resolved`1421**Nom de l'événement** : `claude_code.managed_settings_resolved`

1422 1422 


1424 1424 

1425* Tous les [attributs standard](#standard-attributes)1425* Tous les [attributs standard](#standard-attributes)

1426* `event.name` : `"managed_settings_resolved"`1426* `event.name` : `"managed_settings_resolved"`

1427* `event.timestamp` : Timestamp ISO 86011427* `event.timestamp` : horodatage ISO 8601

1428* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1428* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation des événements](#event-correlation-attributes)

1429* `managed_settings.trigger` : `"startup"` pour l'événement de démarrage de session, `"change"` lorsque les paramètres gérés ou l'état de l'assistant de politique ont changé plus tard dans la session, ou `"refused"` lorsqu'une politique de paramètres gérés a arrêté la session. Claude Code envoie un événement `change` uniquement lorsqu'un attribut diffère du dernier événement qu'il a envoyé, et une valeur de paramètre modifiée compte même lorsque `OTEL_LOG_MANAGED_SETTINGS` est désactivé1429* `managed_settings.trigger` : `"startup"` pour l'événement de démarrage de session, `"change"` lorsque les paramètres gérés ou l'état du programme d'aide de politique ont changé plus tard dans la session, ou `"refused"` lorsqu'une politique de paramètres gérés a arrêté la session. Claude Code envoie un événement `change` uniquement lorsqu'un attribut diffère du dernier événement envoyé, et une valeur de paramètre modifiée compte même lorsque `OTEL_LOG_MANAGED_SETTINGS` est désactivé

1430* `error.type` : pourquoi Claude Code a arrêté la session. Présent uniquement sur les événements `refused` :1430* `error.type` : la raison pour laquelle Claude Code a arrêté la session. Présent uniquement sur les événements `refused` :

1431 * `"helper_failed"` : une [exécution d'assistant de politique a échoué](/docs/fr/settings-reference#helper-failures)1431 * `"helper_failed"` : une [exécution du programme d'aide de politique a échoué](/docs/fr/settings-reference#helper-failures)

1432 * `"policy_invalid"` : les paramètres gérés contiennent une erreur qui arrête Claude Code de démarrer, ou une source d'administration n'a pas pu se charger, donc Claude Code ne peut pas vérifier l'application de la connexion à l'organisation1432 * `"policy_invalid"` : les paramètres gérés contiennent une erreur qui empêche Claude Code de démarrer, ou une source d'administration n'a pas pu être chargée pour une raison autre qu'un refus de lecture, de sorte que Claude Code ne peut pas vérifier la connexion de l'organisation ni l'application des restrictions de fournisseur

1433 * `"provider_not_allowed"` : la session utiliserait un fournisseur d'API, ou enverrait le trafic d'un fournisseur à un hôte, que la liste [`allowedProviders`](/docs/fr/settings-reference#allowedproviders) gérée ne permet pas. Nécessite Claude Code v2.1.285 ou ultérieur1433 * `"provider_not_allowed"` : la session utiliserait un fournisseur d'API, ou enverrait le trafic d'un fournisseur vers un hôte, que la liste gérée [`allowedProviders`](/docs/fr/settings-reference#allowedproviders) n'autorise pas. Nécessite Claude Code v2.1.285 ou version ultérieure

1434 * `"consent_rejected"` : l'utilisateur a rejeté la [boîte de dialogue d'approbation de sécurité](/docs/fr/server-managed-settings#security-approval-dialogs) pour les paramètres gérés par le serveur1434 * `"consent_rejected"` : l'utilisateur a rejeté la [boîte de dialogue d'approbation de sécurité](/docs/fr/server-managed-settings#security-approval-dialogs) pour les paramètres gérés par le serveur

1435 * `"force_refresh_failed"` : la récupération de paramètres que [`forceRemoteSettingsRefresh`](/docs/fr/settings-reference#forceremotesettingsrefresh) nécessite a échoué1435 * `"force_refresh_failed"` : la récupération des paramètres exigée par [`forceRemoteSettingsRefresh`](/docs/fr/settings-reference#forceremotesettingsrefresh) a échoué

1436 * `"gateway_rejected"` : une [passerelle d'applications Claude](/docs/fr/claude-apps-gateway) a répondu au chargement des paramètres gérés avec HTTP 4031436 * `"gateway_rejected"` : une [passerelle d'applications Claude](/docs/fr/claude-apps-gateway) a répondu au chargement des paramètres gérés par un HTTP 403

1437 * `"version_below_minimum"` : cette version de Claude Code est inférieure à [`requiredMinimumVersion`](/docs/fr/settings-reference#requiredminimumversion) ou supérieure à [`requiredMaximumVersion`](/docs/fr/settings-reference#requiredmaximumversion)1437 * `"version_below_minimum"` : cette version de Claude Code est inférieure à [`requiredMinimumVersion`](/docs/fr/settings-reference#requiredminimumversion) ou supérieure à [`requiredMaximumVersion`](/docs/fr/settings-reference#requiredmaximumversion)

1438 * `"_OTHER"` : le chargement des paramètres gérés de la passerelle d'applications Claude a échoué pour une autre raison1438 * `"_OTHER"` : le chargement des paramètres gérés de la passerelle d'applications Claude a échoué pour une autre raison

1439* `managed_settings.sources` : chaque source gérée qui fournit au moins une [clé de politique](/docs/fr/managed-settings#how-claude-code-combines-managed-sources), priorité la plus élevée en premier, y compris les sources dont les clés ne prennent pas effet sous `first-wins`. Les valeurs sont `"remote"`, `"plist"` ou `"hklm"` pour la politique MDM ou au niveau du système d'exploitation, `"file"` pour les fichiers de paramètres gérés et les suppressions, `"parent"` lorsqu'un [hôte d'intégration](/docs/fr/managed-settings#let-an-embedding-host-add-policy) fournit des paramètres, et `"hkcu"` pour la [valeur du registre Windows HKCU](/docs/fr/managed-settings#where-each-mechanism-stores-the-policy) lorsque Claude Code la [lit](/docs/fr/managed-settings#how-claude-code-combines-managed-sources). Une source qui porte uniquement des clés de contrôle, ou que Claude Code n'a pas pu lire, n'est pas listée. Émis sous forme de tableau de chaînes, vide lorsqu'aucune source gérée ne fournit une clé de politique1439* `managed_settings.sources` : chaque source gérée qui fournit au moins une [clé de politique](/docs/fr/managed-settings#how-claude-code-combines-managed-sources), par ordre de priorité décroissante, y compris les sources dont les clés ne prennent pas effet en mode `first-wins`. Les valeurs sont `"remote"`, `"plist"` ou `"hklm"` pour la politique MDM ou au niveau du système d'exploitation, `"file"` pour les fichiers de paramètres gérés et les fichiers déposés, `"parent"` lorsqu'un [hôte d'intégration](/docs/fr/managed-settings#let-an-embedding-host-add-policy) fournit des paramètres, et `"hkcu"` pour la [valeur de registre Windows HKCU](/docs/fr/managed-settings#where-each-mechanism-stores-the-policy) lorsque Claude Code [la lit](/docs/fr/managed-settings#how-claude-code-combines-managed-sources). Une source qui ne contient que des clés de contrôle, ou que Claude Code n'a pas pu lire, n'est pas répertoriée. Émis sous forme de tableau de chaînes, vide lorsqu'aucune source gérée ne fournit de clé de politique

1440* `managed_settings.source_behavior` : la valeur [`managedSourcesBehavior`](/docs/fr/settings-reference#managedsourcesbehavior) que Claude Code a lue, `"first-wins"` ou `"merge"`. `"first-wins"` lorsqu'aucune source ne définit la clé1440* `managed_settings.source_behavior` : la valeur de [`managedSourcesBehavior`](/docs/fr/settings-reference#managedsourcesbehavior) lue par Claude Code, `"first-wins"` ou `"merge"`. `"first-wins"` lorsqu'aucune source ne définit la clé

1441* `managed_settings.helper.state` : état de l'assistant de politique que la source MDM ou fichier sélectionnée configure :1441* `managed_settings.helper.state` : état du programme d'aide de politique configuré par la source MDM ou fichier sélectionnée :

1442 * `"ok"` : la sortie de l'assistant sert de paramètres gérés1442 * `"ok"` : la sortie du programme d'aide sert de paramètres gérés

1443 * `"bad_path"`, `"not_a_file"`, `"exit_nonzero"`, `"timed_out"`, `"oversize"`, `"parse_failed"`, `"envelope_invalid"`, ou `"schema_rejected"` : la dernière exécution de l'assistant a échoué. Les [défaillances d'assistant](/docs/fr/settings-reference#helper-failures) décrivent les cas1443 * `"bad_path"`, `"not_a_file"`, `"exit_nonzero"`, `"timed_out"`, `"oversize"`, `"parse_failed"`, `"envelope_invalid"` ou `"schema_rejected"` : la dernière exécution du programme d'aide a échoué. [Échecs du programme d'aide](/docs/fr/settings-reference#helper-failures) décrit ces cas

1444 * `"none"` : aucun assistant n'est configuré, ou la source qui le configure n'est pas une politique MDM ou un fichier de paramètres gérés1444 * `"none"` : aucun programme d'aide n'est configuré, ou la source qui le configure n'est ni une politique MDM ni un fichier de paramètres gérés

1445* `managed_settings.helper.applied` : `"output"` tandis que la sortie propre de l'assistant sert de paramètres gérés, `"none"` lorsqu'elle ne le fait pas1445* `managed_settings.helper.applied` : `"output"` lorsque la sortie propre du programme d'aide sert de paramètres gérés, `"none"` dans le cas contraire

1446* `managed_settings.helper.entry` : `"policyHelper"` lorsque Claude Code a sélectionné un [`policyHelper`](/docs/fr/settings-reference#policyhelper). Absent lorsqu'il n'a sélectionné aucun assistant1446* `managed_settings.helper.entry` : `"policyHelper"` lorsque Claude Code a sélectionné un [`policyHelper`](/docs/fr/settings-reference#policyhelper). Absent lorsqu'aucun programme d'aide n'a été sélectionné

1447* `managed_settings.helper.path` : le [`path`](/docs/fr/settings-reference#policyhelper-path) configuré de l'assistant. Présent chaque fois que Claude Code a sélectionné un assistant, qu'il ait réussi ou non1447* `managed_settings.helper.path` : le [`path`](/docs/fr/settings-reference#policyhelper-path) configuré du programme d'aide. Présent chaque fois que Claude Code a sélectionné un programme d'aide, que `OTEL_LOG_MANAGED_SETTINGS` soit défini ou non

1448* `managed_settings.resolved_sha256` (lorsque `OTEL_LOG_MANAGED_SETTINGS=1`) : SHA-256 des paramètres gérés résolus avant rédaction, sérialisés en JSON avec les clés triées récursivement et sans espace blanc. Les machines avec le même digest exécutent la même politique. Claude Code envoie le digest uniquement avec l'opt-in car une politique courte peut être récupérée en hachant des suppositions. Absent lorsqu'aucun paramètre géré n'a été résolu, et sur les événements `refused`1448* `managed_settings.resolved_sha256` (lorsque `OTEL_LOG_MANAGED_SETTINGS=1`) : SHA-256 des paramètres gérés résolus avant expurgation, sérialisés en JSON avec les clés triées récursivement et sans espaces. Les machines ayant la même empreinte exécutent la même politique. Claude Code n'envoie l'empreinte qu'avec l'activation explicite, car une politique courte peut être retrouvée en hachant des suppositions. Absent lorsqu'aucun paramètre géré n'a été résolu, ainsi que sur les événements `refused`

1449* `managed_settings.settings` (lorsque `OTEL_LOG_MANAGED_SETTINGS=1`) : les noms et la forme des paramètres gérés résolus sous forme de chaîne JSON, avec les valeurs rédactées. Absent sur les événements `refused`. Claude Code le construit à partir de son schéma de paramètres :1449* `managed_settings.settings` (lorsque `OTEL_LOG_MANAGED_SETTINGS=1`) : les noms et la structure des paramètres gérés résolus sous forme de chaîne JSON, avec les valeurs expurgées. Absent sur les événements `refused`. Claude Code le construit à partir de son schéma de paramètres :

1450 1450 

1451 * Un nom de paramètre que le schéma déclare est exporté, et une clé qu'il ne déclare pas est laissée de côté1451 * Un nom de paramètre déclaré par le schéma est exporté, et une clé non déclarée est omise

1452 * Les booléens, les nombres et les valeurs de chaîne que le schéma restreint à un ensemble fixe d'options, par exemple `permissions.defaultMode`, sont exportés tels quels. `sandbox.network.httpProxyPort` et `sandbox.network.socksProxyPort` sont exportés comme `"[REDACTED]"`1452 * Les booléens, les nombres et les valeurs de chaîne que le schéma restreint à un ensemble fixe d'options, comme `permissions.defaultMode`, sont exportés tels quels. `sandbox.network.httpProxyPort` et `sandbox.network.socksProxyPort` sont exportés sous la forme `"[REDACTED]"`

1453 * Chaque autre chaîne, par exemple `model`, `apiKeyHelper`, chaque valeur `env`, chaque URL et chaque commande, est exportée comme `"[REDACTED]"`1453 * Toute autre chaîne, comme `model`, `apiKeyHelper`, chaque valeur `env`, chaque URL et chaque commande, est exportée sous la forme `"[REDACTED]"`

1454 * Les noms d'entrée des cartes, par exemple les noms de variables `env` et les ID de plugins, sont exportés tels quels. Un paramètre dont les entrées le schéma ne tape pas, par exemple `vimInsertModeRemaps`, est exporté comme un seul `"[REDACTED]"`, et `sandbox.ignoreViolations` est exporté comme une liste de ses listes de chemins sans les modèles de commande1454 * Les noms des entrées des maps, comme les noms de variables `env` et les identifiants de plugins, sont exportés tels quels. Un paramètre dont le schéma ne type pas les entrées, comme `vimInsertModeRemaps`, est exporté sous la forme d'un unique `"[REDACTED]"`, et `sandbox.ignoreViolations` est exporté sous la forme d'une liste de ses listes de chemins, sans les motifs de commande

1455 * Une liste conserve sa longueur, avec chaque entrée rédactée par les mêmes règles1455 * Une liste conserve sa longueur, chaque entrée étant expurgée selon les mêmes règles

1456 * Une règle `permissions.allow`, `permissions.deny`, ou `permissions.ask` est exportée comme son nom d'outil avec le contenu rédacté, par exemple `Read([REDACTED])`, lorsque l'outil est intégré à cette version de Claude Code ou est une référence `mcp__` telle que `mcp__jira__create_issue`. Toute autre règle est exportée comme `"[REDACTED]"`1456 * Une règle `permissions.allow`, `permissions.deny` ou `permissions.ask` est exportée sous la forme de son nom d'outil avec le contenu expurgé, comme `Read([REDACTED])`, lorsque l'outil est intégré à cette version de Claude Code ou qu'il s'agit d'une référence `mcp__` telle que `mcp__jira__create_issue`. Toute autre règle est exportée sous la forme `"[REDACTED]"`

1457 * Les hooks suivent les mêmes règles, donc les champs à option fixe et numériques tels que `type` et `timeout` s'affichent, tandis que chaque commande, URL, `matcher` et condition `if` est exportée comme `"[REDACTED]"`1457 * Les hooks suivent les mêmes règles : les champs à options fixes et numériques comme `type` et `timeout` apparaissent, tandis que chaque commande, URL, `matcher` et condition `if` est exportée sous la forme `"[REDACTED]"`

1458 1458 

1459 Par exemple, les paramètres gérés avec `apiKeyHelper`, deux variables `env` et une règle de refus sont exportés comme `{"apiKeyHelper":"[REDACTED]","env":{"HTTPS_PROXY":"[REDACTED]","CLAUDE_CODE_ENABLE_TELEMETRY":"[REDACTED]"},"permissions":{"deny":["Read([REDACTED])"]}}`.1459 Par exemple, des paramètres gérés comportant `apiKeyHelper`, deux variables `env` et une règle de refus sont exportés sous la forme `{"apiKeyHelper":"[REDACTED]","env":{"HTTPS_PROXY":"[REDACTED]","CLAUDE_CODE_ENABLE_TELEMETRY":"[REDACTED]"},"permissions":{"deny":["Read([REDACTED])"]}}`.

1460 1460 

1461 Claude Code coupe la valeur à 8 KB d'UTF-8, et la valeur coupée n'est pas un JSON valide1461 Claude Code tronque la valeur à 8 Ko d'UTF-8, et la valeur tronquée n'est pas du JSON valide

1462* `managed_settings.settings_truncated` (lorsque `managed_settings.settings` est présent) : `true` lorsque Claude Code a coupé `managed_settings.settings` à 8 KB, `false` sinon. Émis sous forme de booléen, pas de chaîne1462* `managed_settings.settings_truncated` (lorsque `managed_settings.settings` est présent) : `true` lorsque Claude Code a tronqué `managed_settings.settings` à 8 Ko, `false` sinon. Émis sous forme de booléen, et non de chaîne

1463 1463 

1464<h2 id="interpret-metrics-and-events-data">1464<h2 id="interpret-metrics-and-events-data">

1465 Interpréter les données de métriques et d'événements1465 Interpréter les données de métriques et d'événements


1473 1473 

1474| Métrique | Opportunité d'analyse |1474| Métrique | Opportunité d'analyse |

1475| - | - |1475| - | - |

1476| `claude_code.token.usage` | Ventiler par `type` (entrée/sortie), utilisateur, équipe, modèle, `skill.name`, `plugin.name`, ou `agent.name` |1476| `claude_code.token.usage` | Ventiler par [`type`](#token-counter) de token, utilisateur, équipe, modèle, `skill.name`, `plugin.name`, ou `agent.name` |

1477| `claude_code.session.count` | Suivre l'adoption et l'engagement au fil du temps |1477| `claude_code.session.count` | Suivre l'adoption et l'engagement au fil du temps |

1478| `claude_code.lines_of_code.count` | Mesurer la productivité en suivant les ajouts et suppressions de code, ventilés par modèle |1478| `claude_code.lines_of_code.count` | Mesurer la productivité en suivant les ajouts et suppressions de code, ventilés par modèle |

1479| `claude_code.commit.count` & `claude_code.pull_request.count` | Comprendre l'impact sur les flux de travail de développement |1479| `claude_code.commit.count` & `claude_code.pull_request.count` | Comprendre l'impact sur les flux de travail de développement |


1535 1535 

1536**Surveillance des performances** : suivre les durées des demandes d'API et les temps d'exécution des outils pour identifier les goulots d'étranglement de performance.1536**Surveillance des performances** : suivre les durées des demandes d'API et les temps d'exécution des outils pour identifier les goulots d'étranglement de performance.

1537 1537 

1538<h3 id="map-input-tokens-to-opentelemetry-genai-semantic-conventions">

1539 Mapper les tokens d'entrée aux conventions sémantiques GenAI d'OpenTelemetry

1540</h3>

1541 

1542Claude Code exporte le nombre de tokens d'entrée tel qu'il apparaît dans le bloc usage de la réponse de l'API, de sorte que ces valeurs excluent les tokens lus depuis le [cache de prompts](/docs/fr/prompt-caching) ou écrits dans celui-ci :

1543 

1544* `input_tokens` sur le span [`claude_code.llm_request`](#span-attributes) et l'événement [`api_request`](#api-request-event)

1545* Le type `"input"` de la métrique [`claude_code.token.usage`](#token-counter)

1546 

1547Claude Code ne définit pas d'attributs `gen_ai.usage.*`. Les [conventions sémantiques GenAI d'OpenTelemetry](https://github.com/open-telemetry/semantic-conventions-genai) indiquent que `gen_ai.usage.input_tokens` doit inclure les tokens lus depuis le cache et écrits dans celui-ci. Pour calculer ce total :

1548 

1549* À partir du span ou de l'événement : additionnez `input_tokens`, `cache_read_tokens` et `cache_creation_tokens`

1550* À partir de la métrique `claude_code.token.usage` : additionnez ses types `"input"`, `"cacheRead"` et `"cacheCreation"`

1551 

1552Les conventions définissent également des attributs distincts pour les lectures et les écritures dans le cache :

1553 

1554* `cache_read_tokens` correspond à `gen_ai.usage.cache_read.input_tokens`

1555* `cache_creation_tokens` correspond à `gen_ai.usage.cache_write.input_tokens`. Les versions antérieures des conventions nomment l'attribut d'écriture dans le cache `gen_ai.usage.cache_creation.input_tokens`, utilisez donc le nom attendu par votre backend.

1556 

1538<h2 id="audit-security-events">1557<h2 id="audit-security-events">

1539 Audit des événements de sécurité1558 Audit des événements de sécurité

1540</h2>1559</h2>

Details

287 287 

288Le tableau précédent couvre l'interface de ligne de commande autonome. L'application Claude Desktop et claude.ai dans un navigateur chargent leur code d'application et le contenu utilisateur à partir d'hôtes CDN Anthropic supplémentaires, y compris `assets-proxy.anthropic.com` et les autres origines `*.claudeusercontent.com` qui servent les [artifacts](/docs/fr/artifacts) dans ces applications. Autoriser `claude.ai` tout en bloquant ces hôtes produit une page vierge plutôt qu'une erreur. Consultez [exigences d'accès réseau](/docs/fr/desktop#network-access-requirements) sur la page Bureau.288Le tableau précédent couvre l'interface de ligne de commande autonome. L'application Claude Desktop et claude.ai dans un navigateur chargent leur code d'application et le contenu utilisateur à partir d'hôtes CDN Anthropic supplémentaires, y compris `assets-proxy.anthropic.com` et les autres origines `*.claudeusercontent.com` qui servent les [artifacts](/docs/fr/artifacts) dans ces applications. Autoriser `claude.ai` tout en bloquant ces hôtes produit une page vierge plutôt qu'une erreur. Consultez [exigences d'accès réseau](/docs/fr/desktop#network-access-requirements) sur la page Bureau.

289 289 

290Claude Desktop et claude.ai affichent également certains résultats d'outils au sein d'une conversation sous forme de widgets interactifs, tels que les [MCP Apps](https://claude.com/docs/connectors/building/mcp-apps/getting-started) que fournissent certains connecteurs. Ces widgets se chargent à partir de sous-domaines générés de `claudemcpcontent.com` ; autorisez donc `*.claudemcpcontent.com` en conservant le caractère générique. Si vous le bloquez, le reste de l'application continue de fonctionner, mais ces widgets ne se chargent pas.

291 

292<h4 id="third-party-hosts-for-artifact-fonts-and-libraries">

293 Hôtes tiers pour les polices et bibliothèques des artefacts

294</h4>

295 

290Un [artifact](/docs/fr/artifacts) qui charge une police de caractères à partir de [Google Fonts](/docs/fr/artifacts#improve-the-visual-design) demande également `fonts.googleapis.com` et `fonts.gstatic.com`. Les deux hôtes sont facultatifs. Si vous les bloquez, les artifacts s'affichent dans les polices de secours. Bloquez avec un rejet rapide plutôt qu'une suppression silencieuse afin que la requête de police échoue immédiatement au lieu de retarder le premier rendu de la page.296Un [artifact](/docs/fr/artifacts) qui charge une police de caractères à partir de [Google Fonts](/docs/fr/artifacts#improve-the-visual-design) demande également `fonts.googleapis.com` et `fonts.gstatic.com`. Les deux hôtes sont facultatifs. Si vous les bloquez, les artifacts s'affichent dans les polices de secours. Bloquez avec un rejet rapide plutôt qu'une suppression silencieuse afin que la requête de police échoue immédiatement au lieu de retarder le premier rendu de la page.

291 297 

292Les artifacts peuvent également charger des bibliothèques JavaScript, telles que React ou un package de graphique, à partir de `cdnjs.cloudflare.com`, `cdn.jsdelivr.net`, `cdn.tailwindcss.com`, `code.jquery.com` et `unpkg.com`, et d'aucun autre hôte externe. Si vous bloquez ces hôtes, les parties d'un artifact qui dépendent d'une bibliothèque ne fonctionnent pas, et contrairement à une police bloquée, une bibliothèque bloquée n'a pas de secours. Bloquez avec un rejet rapide ici aussi, afin qu'une requête de bibliothèque bloquée échoue immédiatement plutôt que de rester suspendue jusqu'à l'expiration du délai d'attente.298Les artifacts peuvent également charger des bibliothèques JavaScript, telles que React ou un package de graphique, à partir de `cdnjs.cloudflare.com`, `cdn.jsdelivr.net`, `cdn.tailwindcss.com`, `code.jquery.com` et `unpkg.com`, et d'aucun autre hôte externe. Si vous bloquez ces hôtes, les parties d'un artifact qui dépendent d'une bibliothèque ne fonctionnent pas, et contrairement à une police bloquée, une bibliothèque bloquée n'a pas de secours. Bloquez avec un rejet rapide ici aussi, afin qu'une requête de bibliothèque bloquée échoue immédiatement plutôt que de rester suspendue jusqu'à l'expiration du délai d'attente.

permission-modes.md +101 −100

Details

288Pour faire du mode plan la valeur par défaut pour les sessions de terminal d'un projet, définissez `defaultMode` sur `plan` dans `.claude/settings.json`, placé comme l'exemple sous [Démarrer dans un mode de permission différent](#start-in-a-different-mode) le montre. Les conversations que l'[extension VS Code](/docs/fr/vs-code) démarre ne lisent pas les paramètres du projet pour le mode de permission de démarrage. Là, définissez `claudeCode.initialPermissionMode` sur `plan` dans vos paramètres utilisateur VS Code à la place.288Pour faire du mode plan la valeur par défaut pour les sessions de terminal d'un projet, définissez `defaultMode` sur `plan` dans `.claude/settings.json`, placé comme l'exemple sous [Démarrer dans un mode de permission différent](#start-in-a-different-mode) le montre. Les conversations que l'[extension VS Code](/docs/fr/vs-code) démarre ne lisent pas les paramètres du projet pour le mode de permission de démarrage. Là, définissez `claudeCode.initialPermissionMode` sur `plan` dans vos paramètres utilisateur VS Code à la place.

289 289 

290<h2 id="eliminate-prompts-with-auto-mode">290<h2 id="eliminate-prompts-with-auto-mode">

291 Éliminer les invites de permission avec le mode auto291 Éliminer les demandes de permission avec le mode auto

292</h2>292</h2>

293 293 

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

295 295 

296Avec Claude Code v2.1.283 ou ultérieur, le mode auto est le [mode de permission intégré de démarrage](#which-mode-a-session-starts-in) pour les sessions de terminal interactif et VS Code sur tous les plans et fournisseurs. Sur les versions antérieures, c'est le mode de permission intégré de démarrage uniquement sur les plans Pro, Max et Team.296Avec Claude Code v2.1.283 ou ultérieur, le mode auto est le [mode de permission intégré de démarrage](#which-mode-a-session-starts-in) pour les sessions de terminal interactif et VS Code sur tous les plans et fournisseurs. Sur les versions antérieures, c'est le mode de permission intégré de démarrage uniquement sur les plans Pro, Max et Team.

297 297 


299 299 

300Par défaut, le classificateur n'examine pas les suppressions `rm` et `rmdir` ciblant un chemin critique, comme `rm -rf /` ou `rm -rf ~`. [Chemins critiques](#critical-paths) couvre ce qui leur arrive dans chaque mode de permission.300Par défaut, le classificateur n'examine pas les suppressions `rm` et `rmdir` ciblant un chemin critique, comme `rm -rf /` ou `rm -rf ~`. [Chemins critiques](#critical-paths) couvre ce qui leur arrive dans chaque mode de permission.

301 301 

302Le mode auto encourage également Claude à continuer à travailler sans s'arrêter pour des questions de clarification, bien que Claude demande toujours quand votre invite ou une compétence s'y fient explicitement. Pour un comportement plus autonome dans un mode qui vous invite toujours, définissez plutôt le [style de sortie proactif](/docs/fr/output-styles).302Le mode auto encourage également Claude à continuer à travailler sans s'arrêter pour des questions de clarification, bien que Claude demande toujours quand votre prompt ou un skill s'y fient explicitement. Pour un comportement plus autonome dans un mode qui vous demande toujours la permission, définissez plutôt le [style de sortie proactif](/docs/fr/output-styles).

303 303 

304<Warning>304<Warning>

305 Le mode auto réduit les invites de permission mais ne garantit pas la sécurité. Utilisez-le pour les tâches où vous faites confiance à la direction générale, pas comme remplacement pour l'examen des opérations sensibles.305 Le mode auto réduit les demandes de permission mais ne garantit pas la sécurité. Utilisez-le pour les tâches où vous faites confiance à la direction générale, pas comme remplacement pour l'examen des opérations sensibles.

306</Warning>306</Warning>

307 307 

308Le mode auto n'est disponible que lorsque votre compte répond à tous ces critères :308Le mode auto n'est disponible que lorsque votre compte répond à tous ces critères :

309 309 

310* **Plan** : Tous les plans.310* **Plan** : Tous les plans.

311* **Organisation** : sur Team et Enterprise, le mode auto est disponible par défaut. Les administrateurs peuvent le désactiver pour l'organisation en définissant `permissions.disableAutoMode` sur `"disable"` dans les [paramètres gérés](/docs/fr/managed-settings).311* **Organisation** : sur Team et Enterprise, le mode auto est disponible par défaut. Les administrateurs peuvent le désactiver pour l'organisation en définissant `permissions.disableAutoMode` sur `"disable"` dans les [paramètres gérés](/docs/fr/managed-settings).

312* **Modèle** : sur l'API Anthropic et [Claude Platform sur AWS](/docs/fr/claude-platform-on-aws), Claude Opus 4.6 ou ultérieur, Sonnet 4.6 ou ultérieur, ou un [modèle Fable](/docs/fr/model-config#work-with-fable). Sur Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry et les sessions de [passerelle d'applications Claude](/docs/fr/claude-apps-gateway) connectées, uniquement Claude Sonnet 5 ou ultérieur, Opus 4.7 ou ultérieur, et les modèles Fable. Les modèles plus anciens, y compris Sonnet 4.5, Opus 4.5, Haiku et les modèles claude-3, ne sont pas pris en charge sur aucun fournisseur.312* **Modèle** : sur l'API Anthropic et [Claude Platform sur AWS](/docs/fr/claude-platform-on-aws), Claude Opus 4.6 ou ultérieur, Sonnet 4.6 ou ultérieur, ou un [modèle Fable](/docs/fr/model-config#work-with-fable). Sur Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry et les sessions de [passerelle d'applications Claude](/docs/fr/claude-apps-gateway) connectées, uniquement Claude Sonnet 5 ou ultérieur, Opus 4.7 ou ultérieur, et les modèles Fable. Les modèles plus anciens, y compris Sonnet 4.5, Opus 4.5, Haiku et les modèles claude-3, ne sont pris en charge sur aucun fournisseur.

313* **Fournisseur** : disponible par défaut sur l'API Anthropic, Claude Platform sur AWS, Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry et les sessions de passerelle d'applications Claude connectées.313* **Fournisseur** : disponible par défaut sur l'API Anthropic, Claude Platform sur AWS, Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry et les sessions de passerelle d'applications Claude connectées.

314 314 

315Si Claude Code signale que le mode auto n'est pas disponible, vérifiez d'abord ces exigences et si un fichier de paramètres définit [`disableAutoMode`](/docs/fr/settings-reference#disableautomode). Anthropic peut également avoir désactivé le mode auto côté serveur, ou le serveur peut avoir rejeté le mode auto pour votre compte. Une session qui a reçu l'une ou l'autre réponse garde le mode auto désactivé jusqu'à la fin de la session, alors démarrez une nouvelle session plus tard.315Si Claude Code signale que le mode auto n'est pas disponible, vérifiez d'abord ces exigences et si un fichier de paramètres définit [`disableAutoMode`](/docs/fr/settings-reference#disableautomode). Anthropic peut également avoir désactivé le mode auto côté serveur, ou le serveur peut avoir rejeté le mode auto pour votre compte. Une session qui a reçu l'une ou l'autre réponse garde le mode auto désactivé jusqu'à la fin de la session, alors démarrez une nouvelle session plus tard.

316 316 

317Un message distinct qui nomme un modèle et dit que le mode auto « ne peut pas déterminer la sécurité » d'une action signifie qu'une demande de classificateur a échoué. Cet échec est généralement transitoire, mais sur Amazon Bedrock, il peut se répéter jusqu'à ce que votre compte puisse invoquer le modèle nommé. Consultez la [référence d'erreur](/docs/fr/errors#auto-mode-cannot-determine-the-safety-of-an-action) pour les causes et ce qu'il faut faire.317Un message distinct qui nomme un modèle et dit que le mode auto « ne peut pas déterminer la sécurité » d'une action signifie qu'une requête de classificateur a échoué. Cet échec est généralement transitoire, mais sur Amazon Bedrock, il peut se répéter jusqu'à ce que votre compte puisse invoquer le modèle nommé. Consultez la [référence d'erreur](/docs/fr/errors#auto-mode-cannot-determine-the-safety-of-an-action) pour les causes et ce qu'il faut faire.

318 318 

319Si vous définissez `defaultMode: "auto"` dans les [paramètres](/docs/fr/settings-reference#all-settings) et qu'une session de terminal démarre en mode Manual sans erreur, le paramètre est probablement dans `.claude/settings.json` ou `.claude/settings.local.json`. `auto` ne prend pas effet à partir de ces fichiers. Déplacez-le vers `~/.claude/settings.json`. Pour une conversation que l'extension VS Code a démarrée, vérifiez plutôt la liste propre de l'extension dans [Basculer les modes de permission](#switch-permission-modes).319Si vous définissez `defaultMode: "auto"` dans les [paramètres](/docs/fr/settings-reference#all-settings) et qu'une session de terminal démarre en mode Manual sans erreur, le paramètre est probablement dans `.claude/settings.json` ou `.claude/settings.local.json`. `auto` ne prend pas effet à partir de ces fichiers. Déplacez-le vers `~/.claude/settings.json`. Pour une conversation que l'extension VS Code a démarrée, vérifiez plutôt la liste propre de l'extension dans [Basculer les modes de permission](#switch-permission-modes).

320 320 


334 Examen du classificateur côté serveur334 Examen du classificateur côté serveur

335</h3>335</h3>

336 336 

337En mode auto, Claude Code peut demander au serveur de vérifier les actions que [l'ordre de décision](#how-the-classifier-evaluates-actions) envoie pour examen, dans le cadre des demandes de modèle de la session, à la place d'envoyer ses propres demandes de classificateur. Ces sessions demandent :337En mode auto, Claude Code peut demander au serveur de vérifier les actions que [l'ordre de décision](#how-the-classifier-evaluates-actions) envoie pour examen, dans le cadre des requêtes de modèle de la session, à la place d'envoyer ses propres requêtes de classificateur. Ces sessions le demandent :

338 338 

339* **Une connexion directe à l'API Anthropic** : dans une session de terminal interactif, sur tous les plans claude.ai et sur les comptes qui utilisent l'API Claude, au fur et à mesure qu'Anthropic le déploie. Nécessite Claude Code v2.1.271 ou ultérieur sur les plans Pro, Max et Team, et v2.1.278 ou ultérieur sur les plans Enterprise et les comptes Claude API. À partir de v2.1.282, une session qui [ne récupère pas les drapeaux de fonctionnalité](/docs/fr/env-vars#features-that-need-feature-flag-fetching), par exemple parce que vous avez désactivé la télémétrie, demande au serveur par défaut dans n'importe quel type de session.339* **Une connexion directe à l'API Anthropic** : dans les sessions de terminal interactif et dans les sessions `-p`, Agent SDK, [extension VS Code](/docs/fr/vs-code) et [application de bureau](/docs/fr/desktop), quel que soit votre plan ou type de compte, au fur et à mesure qu'Anthropic le déploie. Dans les sessions de terminal interactif, cela nécessite Claude Code v2.1.271 ou ultérieur sur les plans Pro, Max et Team, et v2.1.278 ou ultérieur sur les plans Enterprise et les comptes Claude API. Dans les sessions `-p`, Agent SDK, extension VS Code et application de bureau, cela nécessite Claude Code v2.1.281 ou ultérieur. À partir de v2.1.282, une session qui [ne récupère pas les feature flags](/docs/fr/env-vars#features-that-need-feature-flag-fetching), par exemple parce que vous avez désactivé la télémétrie, demande au serveur par défaut dans n'importe quel type de session.

340* **Un fournisseur cloud, une passerelle LLM ou un proxy** : sur [Claude Platform sur AWS](/docs/fr/claude-platform-on-aws), Amazon Bedrock, Google Cloud's Agent Platform et Microsoft Foundry, et chaque fois que vous pointez `ANTHROPIC_BASE_URL` vers une [passerelle LLM ou un proxy](/docs/fr/llm-gateway), quel que soit votre plan. Demander par défaut nécessite Claude Code v2.1.278 ou ultérieur.340* **Un fournisseur cloud, une passerelle LLM ou un proxy** : sur [Claude Platform sur AWS](/docs/fr/claude-platform-on-aws), Amazon Bedrock, Google Cloud's Agent Platform et Microsoft Foundry, et chaque fois que vous pointez `ANTHROPIC_BASE_URL` vers une [passerelle LLM ou un proxy](/docs/fr/llm-gateway), quel que soit votre plan. Demander par défaut nécessite Claude Code v2.1.278 ou ultérieur.

341* **Une session de [passerelle d'applications Claude](/docs/fr/claude-apps-gateway) connectée** : nécessite Claude Code v2.1.280 ou ultérieur341* **Une session de [passerelle d'applications Claude](/docs/fr/claude-apps-gateway) connectée** : nécessite Claude Code v2.1.280 ou ultérieur

342 342 

343Où le serveur examine les actions, ses verdicts les décident. Deux autres résultats sont possibles :343Là où le serveur examine les actions, ses verdicts en décident. Deux autres résultats sont possibles :

344 344 

345* **Le serveur n'examine pas la session** : une réponse se termine sans résultats d'examen, ou le serveur répond qu'il n'examine pas cette session. Les causes les plus courantes sont une passerelle LLM ou un proxy qui abandonne la demande d'examen ou les résultats, et une plateforme, une région ou des identifiants qui n'ont pas encore de vérifications côté serveur. Claude Code revient à ses propres demandes de classificateur. Une fois que ce retour en arrière tient pour le reste de la session, il affiche un [avis sur les frais de demande de classificateur](/docs/fr/auto-mode-classifier-billing) sur les comptes où ces demandes sont facturées.345* **Le serveur n'examine pas la session** : une réponse se termine sans résultats d'examen, ou le serveur répond qu'il n'examine pas cette session. Les causes les plus courantes sont une passerelle LLM ou un proxy qui abandonne la requête d'examen ou les résultats, et une plateforme, une région ou des identifiants qui n'ont pas encore de vérifications côté serveur. Claude Code se rabat sur ses propres requêtes de classificateur. Une fois que cette solution de repli est maintenue pour le reste de la session, il affiche un [avis sur les frais de requêtes de classificateur](/docs/fr/auto-mode-classifier-billing) sur les comptes où ces requêtes sont facturées.

346* **Le serveur ne donne pas de verdict pour une action** : Claude Code refuse l'action plutôt que de l'exécuter sans examen. Sur n'importe quelle connexion, cela se produit quand la réponse se termine avant l'arrivée des résultats d'examen ou que les résultats arrivent sous une forme que Claude Code ne peut pas lire. Une passerelle LLM ou un proxy qui raccourcit les réponses ou réécrit les résultats peut causer l'un ou l'autre. Sur une connexion directe à l'API Anthropic, cela se produit également quand la vérification du serveur échoue pour l'action, par exemple en dépassant le délai d'attente. [Le serveur n'a pas retourné de verdict de sécurité](/docs/fr/errors#the-server-returned-no-safety-verdict) couvre le message de refus, ce qui se passe quand les refus se répètent, et ce qu'il faut faire.346* **Le serveur ne donne pas de verdict pour une action** : Claude Code refuse l'action plutôt que de l'exécuter sans examen. Sur n'importe quelle connexion, cela se produit quand la réponse se termine avant l'arrivée des résultats d'examen ou que les résultats arrivent sous une forme que Claude Code ne peut pas lire. Une passerelle LLM ou un proxy qui raccourcit les réponses ou réécrit les résultats peut causer l'un ou l'autre. Sur une connexion directe à l'API Anthropic, cela se produit également quand la vérification du serveur échoue pour l'action, par exemple en dépassant le délai d'attente. [Le serveur n'a pas retourné de verdict de sécurité](/docs/fr/errors#the-server-returned-no-safety-verdict) couvre le message de refus, ce qui se passe quand les refus se répètent, et ce qu'il faut faire.

347 347 

348Pour ignorer la demande au serveur et toujours utiliser les propres demandes de classificateur de Claude Code, définissez [`CLAUDE_CODE_AUTO_MODE_SERVER=0`](/docs/fr/env-vars). Sur une connexion directe à l'API Anthropic, la variable nécessite Claude Code v2.1.281 ou ultérieur. La définir sur `1` active l'examen du serveur dans une session qui ne l'a pas encore, comme une session `-p` ou Agent SDK, à moins que vous n'ayez également défini `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`. Si vous définissez `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` et laissez `CLAUDE_CODE_AUTO_MODE_SERVER` non défini, Claude Code cesse également de demander au serveur, sauf comme le décrit [Désactiver les capacités de pré-version](/docs/fr/llm-gateway-protocol#disable-pre-release-capabilities).348Pour ne pas interroger le serveur et toujours utiliser les propres requêtes de classificateur de Claude Code, définissez [`CLAUDE_CODE_AUTO_MODE_SERVER=0`](/docs/fr/env-vars). Sur une connexion directe à l'API Anthropic, la variable nécessite Claude Code v2.1.281 ou ultérieur. La définir sur `1` active l'examen du serveur dans une session qui ne l'a pas encore, à moins que vous n'ayez également défini `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`. Si vous définissez `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` et laissez `CLAUDE_CODE_AUTO_MODE_SERVER` non défini, Claude Code cesse également d'interroger le serveur, sauf comme le décrit [Désactiver les capacités de pré-version](/docs/fr/llm-gateway-protocol#disable-pre-release-capabilities).

349 349 

350<h3 id="what-the-classifier-blocks-by-default">350<h3 id="what-the-classifier-blocks-by-default">

351 Ce que le classificateur bloque par défaut351 Ce que le classificateur bloque par défaut

352</h3>352</h3>

353 353 

354Le classificateur fait confiance à votre répertoire de travail et aux télécommandes qui ont été configurées pour lui quand la session a démarré. Une télécommande ajoutée ou réorientée pendant la session avec `git remote add` ou `git remote set-url` n'est pas approuvée, et tout le reste est traité comme externe jusqu'à ce que vous [configuriez l'infrastructure approuvée](/docs/fr/auto-mode-config#define-trusted-infrastructure). Avant v2.1.200, les télécommandes ajoutées en milieu de session étaient également approuvées.354Le classificateur fait confiance à votre répertoire de travail et aux remotes qui étaient configurés pour celui-ci quand la session a démarré. Un remote ajouté ou réorienté pendant la session avec `git remote add` ou `git remote set-url` n'est pas considéré comme fiable, et tout le reste est traité comme externe jusqu'à ce que vous [configuriez l'infrastructure approuvée](/docs/fr/auto-mode-config). Avant v2.1.200, les remotes ajoutés en cours de session étaient également considérés comme fiables.

355 355 

356**Bloqué par défaut** :356**Bloqué par défaut** :

357 357 

358* Téléchargement et exécution de code, comme `curl | bash`358* Téléchargement et exécution de code, comme `curl | bash`

359* Envoi de données sensibles à des points de terminaison externes359* Envoi de données sensibles à des endpoints externes

360* Déploiements et migrations de production360* Déploiements et migrations de production

361* Suppression en masse sur le stockage cloud361* Suppression en masse sur le stockage cloud

362* Octroi de permissions IAM ou de dépôt362* Octroi de permissions IAM ou de dépôt

363* Modification de l'infrastructure partagée363* Modification de l'infrastructure partagée

364* Destruction irréversible de fichiers qui existaient avant la session364* Destruction irréversible de fichiers qui existaient avant la session

365* Forcer la poussée365* Push forcé

366* Valider ou pousser une modification qui enverrait des secrets ou des données sensibles en dehors du dépôt quand il s'exécute, ou élargir ce qu'un déploiement expose. Cela couvre un flux de travail CI ou une configuration de déploiement qui transmet un secret à une destination qui ne le reçoit pas déjà, un script ou une étape de configuration qui lit un magasin de secrets et envoie les données, et une modification de configuration qui élargit ce qu'un déploiement publie, comme un registre, une visibilité, un artefact ou un paramètre de sourcemap. La vérification s'applique sur n'importe quelle branche, s'applique même quand le dépôt est public, et se déclenche quand la modification est validée ou poussée, que ce commit ou cette poussée déclenche le pipeline ou non ; la clarifier nécessite de nommer l'effet d'exécution, pas seulement le commit ou la poussée. Avant v2.1.211, cette vérification était limitée à la branche par défaut à la place : une poussée là était bloquée quand elle contenait du contenu sensible, des modifications dissimulées ou mal décrites par rapport à ce que vous avez demandé, du contenu porté de l'extérieur du dépôt, ou contourné un examen que vous avez demandé366* Créer un commit ou pousser une modification qui enverrait des secrets ou des données sensibles en dehors du dépôt lors de son exécution, ou élargirait ce qu'un déploiement expose. Cela couvre un workflow CI ou une configuration de déploiement qui transmet un secret à une destination qui ne le reçoit pas déjà, un script ou une étape de configuration qui lit un magasin de secrets et envoie les données à l'extérieur, et une modification de configuration qui élargit ce qu'un déploiement publie, comme un paramètre de registre, de visibilité, d'artefact ou de sourcemap. La vérification s'applique sur n'importe quelle branche, s'applique même quand le dépôt est public, et se déclenche quand la modification est commitée ou poussée, que ce commit ou ce push déclenche le pipeline ou non ; la lever nécessite de nommer l'effet d'exécution, pas seulement le commit ou le push. Avant v2.1.211, cette vérification était limitée à la branche par défaut : un push vers celle-ci était bloqué quand il contenait du contenu sensible, des modifications dissimulées ou mal décrites par rapport à ce que vous aviez demandé, du contenu importé de l'extérieur du dépôt, ou contournait un examen que vous aviez demandé

367* `git reset --hard`, `git checkout -- .`, `git restore .`, `git clean -fd`, `git stash drop` ou `git stash clear`, que le classificateur présume abandonnerait les modifications non validées367* `git reset --hard`, `git checkout -- .`, `git restore .`, `git clean -fd`, `git stash drop` ou `git stash clear`, dont le classificateur présume qu'ils abandonneraient les modifications non commitées

368* `git commit --amend` quand le commit à HEAD n'a pas été créé dans cette session368* `git commit --amend` quand le commit à HEAD n'a pas été créé dans cette session

369* À partir de v2.1.198, `git commit --amend` quand le commit à HEAD a déjà été poussé. Une réécriture de message uniquement n'est pas bloquée : `--amend -m` sans rien de nouvellement préparé, sur un commit que Claude a créé pendant cette session369* À partir de v2.1.198, `git commit --amend` quand le commit à HEAD a déjà été poussé. Une reformulation du message seul n'est pas bloquée : `--amend -m` sans rien de nouvellement indexé, sur un commit que Claude a créé pendant cette session

370* `terraform destroy`, `pulumi destroy`, `cdk destroy` ou `terragrunt destroy`, et appliquer un plan qui détruit les ressources370* `terraform destroy`, `pulumi destroy`, `cdk destroy` ou `terragrunt destroy`, et l'application d'un plan qui détruit des ressources

371* Écriture dans un gestionnaire de secrets, ou modification des enregistrements DNS ou des certificats TLS371* Écriture dans un gestionnaire de secrets, ou modification des enregistrements DNS ou des certificats TLS

372* Fusion d'une demande de tirage qu'aucun humain n'a approuvée, approbation de la propre demande de tirage de Claude, ou désactivation des vérifications CI372* Fusion d'une pull request qu'aucun humain n'a approuvée, approbation de la propre pull request de Claude, ou désactivation des vérifications CI

373* Publication d'un commentaire qui est lui-même une commande à l'automatisation, comme `atlantis apply` ou le `/deploy` ou `/merge` d'un bot373* Publication d'un commentaire qui est lui-même une commande destinée à l'automatisation, comme `atlantis apply` ou le `/deploy` ou `/merge` d'un bot

374* Basculement, augmentation ou suppression d'un drapeau de fonctionnalité de production374* Basculement, augmentation progressive ou suppression d'un feature flag de production

375* Application de modifications d'infrastructure à une portée IaC protégée, ou vidage et suppression de nœuds de cluster375* Application de modifications d'infrastructure à une portée IaC protégée, ou vidage et suppression de nœuds de cluster

376* Écritures dans un cluster de calcul partagé qui vont au-delà de la ressource que vous avez nommée, comme un sélecteur d'étiquette ou `--all` qui capture les tâches d'autres utilisateurs376* Écritures dans un cluster de calcul partagé qui vont au-delà de la ressource que vous avez nommée, comme un sélecteur d'étiquette ou `--all` qui capture les tâches d'autres utilisateurs

377* Création de ressources Kubernetes qui s'exécutent sur chaque nœud ou interceptent le trafic du cluster, comme les DaemonSets et les webhooks d'admission377* Création de ressources Kubernetes qui s'exécutent sur chaque nœud ou interceptent le trafic du cluster, comme les DaemonSets et les webhooks d'admission

378* Shells interactifs ou transferts de port vers une cible distante sensible378* Shells interactifs ou redirections de port vers une cible distante sensible

379* Ouverture d'un tunnel ou d'un shell inverse qui rend un service local accessible depuis l'Internet public379* Ouverture d'un tunnel ou d'un shell inverse qui rend un service local accessible depuis l'Internet public

380* Impression d'une identifiant ou d'un jeton en direct dans la transcription ou un fichier380* Affichage d'identifiants ou d'un jeton actifs dans la transcription ou un fichier

381* Accès à un emplacement répertorié comme emplacement de données sensibles dans votre [environnement](/docs/fr/auto-mode-config#define-trusted-infrastructure), ou copie de données hors de celui-ci. À partir de v2.1.198, cela bloque également l'envoi de données d'un à un public que l'entrée exclut381* Accès à un emplacement répertorié comme emplacement de données sensibles dans votre [environnement](/docs/fr/auto-mode-config#define-trusted-infrastructure), ou copie de données hors de celui-ci. À partir de v2.1.198, cela bloque également l'envoi de données issues d'un tel emplacement à un public que l'entrée exclut

382* Contournement d'une installation de paquet autour de votre registre de paquet interne vers un registre public. À partir de v2.1.198, cela s'applique également quand vous avez dit à Claude qu'un registre interne ou un miroir existe dans la conversation, pas seulement quand un est répertorié dans votre environnement382* Contournement de votre registre de paquets interne en installant un paquet depuis un registre public. À partir de v2.1.198, cela s'applique également quand vous avez indiqué à Claude dans la conversation qu'un registre interne ou un miroir existe, pas seulement quand un tel registre est répertorié dans votre environnement

383* Exécution d'une commande avec un drapeau qui désarme une garde de sécurité, comme `--insecure`383* Exécution d'une commande avec un flag qui désarme une protection de sécurité, comme `--insecure`

384* Lancement d'une boucle d'agent autonome qui s'exécute sans approbation humaine ou bac à sable, comme une lancée avec `--dangerously-skip-permissions` ou `--no-sandbox`. À partir de v2.1.198, cela couvre également l'exécution d'un agent tiers ou d'un harnais d'évaluation avec l'isolation et l'approbation par action désactivées, comme un coureur lancé avec `--yes-always`384* Lancement d'une boucle d'agent autonome qui s'exécute sans approbation humaine ni sandbox, comme une boucle lancée avec `--dangerously-skip-permissions` ou `--no-sandbox`. À partir de v2.1.198, cela couvre également l'exécution d'un agent tiers ou d'un harnais d'évaluation avec l'isolation et l'approbation par action désactivées, comme un runner lancé avec `--yes-always`

385* Actions du navigateur [Claude dans Chrome](/docs/fr/chrome) qui pourraient envoyer le contenu de la page, les cookies ou les identifiants hors origine385* Actions du navigateur [Claude dans Chrome](/docs/fr/chrome) qui pourraient envoyer le contenu de la page, les cookies ou les identifiants hors origine

386 386 

387Plusieurs de ces catégories dépendent d'entrées [d'environnement](/docs/fr/auto-mode-config#define-trusted-infrastructure), comme les cibles distantes sensibles et les portées IaC protégées, que vous pouvez affiner à des noms concrets.387Plusieurs de ces catégories dépendent d'entrées [d'environnement](/docs/fr/auto-mode-config#define-trusted-infrastructure), comme les cibles distantes sensibles et les portées IaC protégées, que vous pouvez restreindre à des noms concrets.

388 388 

389Claude Code v2.1.198 et ultérieur bloquent également par défaut :389Claude Code v2.1.198 et ultérieur bloquent également par défaut :

390 390 

391* Suppression de fichiers dans `/tmp`, `$TMPDIR` ou un autre répertoire de travail partagé ou de cache par caractère générique, glob ou filtre d'âge plutôt que par un chemin nommé spécifique391* Suppression de fichiers dans `/tmp`, `$TMPDIR` ou un autre répertoire temporaire ou de cache partagé par caractère générique, glob ou filtre d'âge plutôt que par un chemin nommé spécifique

392* Inclusion de détails sensibles dans le contenu envoyé, téléchargé, publié ou écrit à d'autres personnes ou systèmes partagés, quand votre propre message n'a pas autorisé ces détails pour ce destinataire. Les corps de PR et de problème, les messages de commit et les commentaires comptent comme ce type de contenu sortant quand le dépôt est en dehors de la limite de confiance ou public, y compris les dépôts publics de votre propre organisation ; les chemins de fichiers internes, les noms de code, les données de réponse API en direct comme les e-mails ou les identifiants de compte, et les identifiants d'infrastructure comptent comme des détails sensibles. La portée PR, problème et message de commit nécessite Claude Code v2.1.200 ou ultérieur. Les données personnelles en direct d'une réponse API dans un corps de PR ou de problème, comme une adresse e-mail, un identifiant de compte ou d'organisation, ou une métrique d'utilisation, vous obligent à nommer ces détails et le destinataire indépendamment de la visibilité ou de la limite de confiance du dépôt. Cette vérification nécessite Claude Code v2.1.203 ou ultérieur392* Inclusion de détails sensibles dans du contenu envoyé, téléversé, publié ou écrit à d'autres personnes ou dans des systèmes partagés, quand votre propre message n'a pas autorisé ces détails pour ce destinataire. Les corps de PR et d'issue, les messages de commit et les commentaires comptent comme ce type de contenu sortant quand le dépôt est en dehors de la limite de confiance ou public, y compris les dépôts publics de votre propre organisation ; les chemins de fichiers internes, les noms de code, les données de réponse API en direct comme les e-mails ou les identifiants de compte, et les identifiants d'infrastructure comptent comme des détails sensibles. Cette prise en compte des PR, issues et messages de commit nécessite Claude Code v2.1.200 ou ultérieur. Les données personnelles en direct issues d'une réponse API dans un corps de PR ou d'issue, comme une adresse e-mail, un identifiant de compte ou d'organisation, ou une métrique d'utilisation, vous obligent à nommer ces détails et le destinataire indépendamment de la visibilité ou de la limite de confiance du dépôt. Cette vérification nécessite Claude Code v2.1.203 ou ultérieur

393* Envoi de frappes au clavier au propre volet tmux de Claude Code pour piloter sa propre interface, que le classificateur traite comme Claude changeant ses propres permissions ou surveillance393* Envoi de frappes au clavier au propre volet tmux de Claude Code pour piloter sa propre interface, ce que le classificateur traite comme Claude modifiant ses propres permissions ou sa propre supervision

394 394 

395Claude Code v2.1.200 et ultérieur bloquent également par défaut :395Claude Code v2.1.200 et ultérieur bloquent également par défaut :

396 396 

397* Commentaire, suppression ou passage en force d'un test ou d'une assertion qui protège le comportement de sécurité, comme l'authentification, le contrôle d'accès, la validation des entrées ou le bac à sable397* Mise en commentaire, suppression ou forçage de la réussite d'un test ou d'une assertion qui protège un comportement de sécurité, comme l'authentification, le contrôle d'accès, la validation des entrées ou le sandboxing

398* Suppression ou démantèlement d'une ressource avec état que Claude n'a pas créée dans la session, quand aucune règle de suppression plus spécifique ne s'applique et que vous n'avez pas nommé cette ressource398* Suppression ou démantèlement d'une ressource avec état que Claude n'a pas créée dans la session, quand aucune règle de suppression plus spécifique ne s'applique et que vous n'avez pas nommé cette ressource

399* Réorientation d'une URL de base API, d'un point de terminaison proxy, d'un récepteur webhook ou d'un miroir de registre vers un hôte tiers qui ne convient pas à la tâche, y compris dans les fichiers d'exemple comme `.env.example`399* Réorientation d'une URL de base d'API, d'un endpoint de proxy, d'un récepteur de webhook ou d'un miroir de registre vers un hôte tiers qui ne correspond pas à la tâche, y compris dans les fichiers d'exemple comme `.env.example`

400* Modification de la destination des poussées avec `git remote set-url` ou `git remote add`, à moins que vous n'ayez nommé la nouvelle télécommande400* Modification de la destination des push avec `git remote set-url` ou `git remote add`, à moins que vous n'ayez nommé le nouveau remote

401* Poussée de secrets ou de données personnelles ou confiées vers un dépôt connu pour être public, ou poussée de matériel confidentiel là qui ne fait pas partie du travail propre de ce dépôt. Le sujet propre d'un dépôt de dotfiles est la seule exception pour les données personnelles ou confiées, et le contenu d'un dépôt privé atteignant n'importe quelle surface publique est bloqué de la même manière ; les deux raffinements nécessitent Claude Code v2.1.203 ou ultérieur. Avant v2.1.203, les données personnelles étaient groupées avec le matériel confidentiel et bloquées uniquement quand elles ne faisaient pas partie du travail propre de ce dépôt. Quand la visibilité d'un dépôt n'est pas établie, le classificateur ne bloque pas sur cela seul ; il juge le contenu par rapport aux autres règles à la place401* Push de secrets ou de données personnelles ou confiées vers un dépôt connu pour être public, ou push de contenu confidentiel qui ne fait pas partie du travail propre de ce dépôt. Le sujet propre d'un dépôt de dotfiles est la seule exception pour les données personnelles ou confiées, et le contenu d'un dépôt privé atteignant n'importe quelle surface publique est bloqué de la même manière ; ces deux précisions nécessitent Claude Code v2.1.203 ou ultérieur. Avant v2.1.203, les données personnelles étaient regroupées avec le contenu confidentiel et bloquées uniquement quand elles ne faisaient pas partie du travail propre de ce dépôt. Quand la visibilité d'un dépôt n'est pas établie, le classificateur ne bloque pas sur ce seul critère ; il juge plutôt le contenu par rapport aux autres règles

402* Ouverture d'une demande de tirage contre un dépôt ou une organisation différente, bifurcation avec `gh repo fork` ou poussée vers un dépôt tiers, à moins que vous n'ayez nommé cette cible externe402* Ouverture d'une pull request vers un dépôt ou une organisation différents, fork avec `gh repo fork` ou push vers un dépôt tiers, à moins que vous n'ayez nommé cette cible externe

403 403 

404Claude Code v2.1.203 et ultérieur bloquent également par défaut :404Claude Code v2.1.203 et ultérieur bloquent également par défaut :

405 405 

406* Contenu d'un magasin local sensible, ou d'un fichier dont le nom, le chemin ou le type le marque comme sensible, entrant dans un commit, une poussée, un texte de PR ou de problème, une giste ou un collage, ou une publication de paquet, à moins que vous n'ayez nommé à la fois la source et la destination. Les transcriptions de session et les journaux de conversation, les dossiers de points de configuration d'identifiant et de configuration comme les clés SSH, les identifiants cloud, les profils de navigateur et l'historique du shell, et les exportations de données utilisateur comptent tous, et le dépôt étant privé ne le clarifie pas406* Contenu issu d'un magasin local sensible, ou d'un fichier dont le nom, le chemin ou le type le marque comme sensible, entrant dans un commit, un push, un texte de PR ou d'issue, un gist ou un paste, ou une publication de paquet, à moins que vous n'ayez nommé à la fois la source et la destination. Les transcriptions de session et les journaux de conversation, les dossiers cachés d'identifiants et de configuration comme les clés SSH, les identifiants cloud, les profils de navigateur et l'historique du shell, ainsi que les exportations de données utilisateur comptent tous, et le fait que le dépôt soit privé ne lève pas le blocage

407 407 

408Claude Code v2.1.205 et ultérieur bloquent également par défaut :408Claude Code v2.1.205 et ultérieur bloquent également par défaut :

409 409 

410* Écriture dans les transcriptions de session Claude Code, les fichiers d'historique `.jsonl` sous `~/.claude/projects/` ou votre répertoire de configuration configuré, directement ou via une commande shell. La règle couvre également les lignes de métadonnées que Claude Code ajoute à chaque entrée de transcription pour ses propres vérifications. La lecture d'une transcription n'est pas bloquée410* Écriture dans les transcriptions de session Claude Code, les fichiers d'historique `.jsonl` sous `~/.claude/projects/` ou votre répertoire de configuration configuré, directement ou via une commande shell. La règle couvre également les lignes de métadonnées que Claude Code ajoute à chaque entrée de transcription pour ses propres vérifications. La lecture d'une transcription n'est pas bloquée

411* Une suppression forcée récursive comme `rm -rf "$VAR"` ou `Remove-Item -Recurse -Force $dir` dont la cible est une variable shell qui n'est assignée nulle part dans la conversation que le classificateur voit, ou un glob enraciné à une telle variable. La valeur provenait uniquement de la sortie de commande antérieure, que le classificateur ne reçoit jamais, donc le classificateur ne peut pas vérifier la cible de suppression par rapport aux autres règles de suppression. Le bloc se clarifie quand vous nommez le chemin exact en cours de suppression, ou quand Claude réexécute la suppression avec le chemin littéral résolu écrit dans la commande. Les suppressions dont la cible le classificateur peut résoudre ne sont pas affectées.411* Une suppression forcée récursive comme `rm -rf "$VAR"` ou `Remove-Item -Recurse -Force $dir` dont la cible est une variable shell qui n'est assignée nulle part dans la conversation que le classificateur voit, ou un glob enraciné dans une telle variable. La valeur provenait uniquement d'une sortie de commande antérieure, que le classificateur ne reçoit jamais, donc le classificateur ne peut pas vérifier la cible de suppression par rapport aux autres règles de suppression. Le blocage est levé quand vous nommez le chemin exact en cours de suppression, ou quand Claude réexécute la suppression avec le chemin littéral résolu écrit dans la commande. Les suppressions dont le classificateur peut résoudre la cible ne sont pas affectées.

412 412 

413 Un glob directement sous la variable, comme dans `rm -rf "$VAR"/*`, est un [chemin critique](#critical-paths) à la place. Les cibles `Remove-Item` qui sont un `*` nu ou se terminent par `/*` ou `\*` n'atteignent jamais le classificateur : Claude Code les [refuse directement](#remove-item-in-powershell).413 Un glob directement sous la variable, comme dans `rm -rf "$VAR"/*`, est plutôt un [chemin critique](#critical-paths). Les cibles `Remove-Item` qui sont un `*` seul ou se terminent par `/*` ou `\*` n'atteignent jamais le classificateur : Claude Code les [refuse directement](#remove-item-in-powershell).

414 414 

415Claude Code v2.1.257 et ultérieur bloquent également par défaut :415Claude Code v2.1.257 et ultérieur bloquent également par défaut :

416 416 

417* Demande d'identifiants à partir du point de terminaison des métadonnées d'instance cloud, comme `169.254.169.254`, ou authentification explicite d'un appel cloud, cluster ou registre avec l'identité de compte de service ou de nœud de la machine417* Demande d'identifiants à l'endpoint de métadonnées d'instance cloud, comme `169.254.169.254`, ou authentification explicite d'un appel cloud, cluster ou registre avec l'identité de compte de service ou de nœud de la machine

418* Atteinte d'un hôte public par une route autre qu'une demande directe, comme un tunnel, un shell inverse, ou une configuration de résolveur ou de proxy réécrite pour pointer vers l'extérieur418* Accès à un hôte public par une route autre qu'une requête directe, comme un tunnel, un shell inverse, ou une configuration de résolveur ou de proxy réécrite pour pointer vers l'extérieur

419* Lecture d'identifiants qui appartiennent à l'hôte plutôt qu'à votre tâche, comme les certificats de nœud ou l'authentification du registre de conteneurs du nœud419* Lecture d'identifiants qui appartiennent à l'hôte plutôt qu'à votre tâche, comme les certificats de nœud ou l'authentification au registre de conteneurs du nœud

420* Connexion à ou analyse des conteneurs, pods ou VMs frères que Claude n'a pas démarrés, ou le nœud sous le conteneur420* Connexion à ou analyse des conteneurs, pods ou VMs voisins que Claude n'a pas démarrés, ou du nœud sous le conteneur

421 421 

422Si Claude Code s'exécute quelque part qui est censé permettre l'un de ceux-ci, décrivez cette configuration dans une [entrée Host containment](/docs/fr/auto-mode-config#define-trusted-infrastructure) dans `autoMode.environment`.422Si Claude Code s'exécute dans un endroit censé autoriser l'une de ces actions, décrivez cette configuration dans une [entrée Host containment](/docs/fr/auto-mode-config#define-trusted-infrastructure) dans `autoMode.environment`.

423 423 

424Claude Code v2.1.261 et ultérieur bloquent également par défaut :424Claude Code v2.1.261 et ultérieur bloquent également par défaut :

425 425 

426* Publication ou écriture d'un lien vers un service public de collage, de diagramme ou de partage de données dans un message, un texte de PR ou de problème, un document, ou n'importe où ailleurs où le lien sera ouvert ou récupéré, quand l'URL elle-même porte le contenu partagé, à moins que vous n'ayez nommé ce service426* Publication ou écriture d'un lien vers un service public de paste, de diagramme ou de partage de données dans un message, un texte de PR ou d'issue, un document, ou n'importe où ailleurs où le lien sera ouvert ou récupéré, quand l'URL elle-même contient le contenu partagé, à moins que vous n'ayez nommé ce service

427 427 

428**Autorisé par défaut** :428**Autorisé par défaut** :

429 429 

430* Opérations de fichiers locaux dans votre répertoire de travail430* Opérations sur les fichiers locaux dans votre répertoire de travail

431* Installation de dépendances déclarées dans vos fichiers de verrouillage ou manifestes431* Installation de dépendances déclarées dans vos fichiers de verrouillage ou manifestes

432* Lecture de `.env` et envoi d'identifiants à leur API correspondante432* Lecture de `.env` et envoi d'identifiants à leur API correspondante

433* Demandes HTTP en lecture seule433* Requêtes HTTP en lecture seule

434* 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à sur 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 commandes de poussée [telles qu'écrites](/docs/fr/permissions#bash-rule-limits) dans chaque mode, 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 démarré, 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ée434* Push vers n'importe quelle branche du dépôt sur lequel vous travaillez, y compris la branche par défaut. Une branche autre que celle par défaut dont le nom la désigne comme cible de déploiement ou de publication, comme `production` ou `gh-pages`, n'est pas couverte : le classificateur juge un push vers celle-ci selon ses propres critères. Le contenu du push est toujours vérifié par rapport aux autres règles, les [règles `permissions.deny`](/docs/fr/permissions#manage-permissions) peuvent toujours bloquer les commandes de push [telles qu'écrites](/docs/fr/permissions#bash-rule-limits) dans chaque mode, et la protection de branche propre au remote s'applique toujours. Avant v2.1.211, seuls les push vers la branche sur laquelle vous aviez démarré, vers les branches que Claude avait créées, et les push habituels vers la branche par défaut étaient autorisés par défaut, et avant v2.1.203 tout push direct vers la branche par défaut était bloqué

435* Suppression des tâches exactes que Claude a créées plus tôt dans la même session435* Suppression des tâches exactes que Claude a créées plus tôt dans la même session

436* Lecture, examen ou écriture de code, de configurations et de modèles de menace liés à la sécurité dans le cadre de votre tâche436* Lecture, examen ou écriture de code, de configurations et de modèles de menace liés à la sécurité dans le cadre de votre tâche

437* Messages entre agents travaillant ensemble dans la même session multi-agents437* Messages entre agents travaillant ensemble dans la même session multi-agents

438* Envoi de données aux domaines, buckets et services approuvés que vous énumérez dans [`environment`](/docs/fr/auto-mode-config#define-trusted-infrastructure). Cela couvre le flux de données uniquement, pas les opérations destructrices ou d'identifiant sur la même infrastructure438* Envoi de données aux domaines, buckets et services approuvés que vous énumérez dans [`environment`](/docs/fr/auto-mode-config#define-trusted-infrastructure). Cela couvre uniquement le flux de données, pas les opérations destructrices ou portant sur des identifiants sur la même infrastructure

439* [Claude dans Chrome](/docs/fr/chrome) navigation vers un domaine interne approuvé, localhost ou une URL que vous avez nommée439* Navigation [Claude dans Chrome](/docs/fr/chrome) vers un domaine interne approuvé, localhost ou une URL que vous avez nommée

440 440 

441Les commandes en bac à sable n'obtiennent pas d'accès réseau par défaut. Claude nomme les hôtes qu'une commande a besoin sur la commande elle-même, le classificateur les examine avec la commande, et une liste approuvée ouvre ces hôtes pour cette seule commande. [Domaines autorisés par commande](/docs/fr/sandboxing#per-command-allowed-domains-in-auto-mode) couvre ce qu'une liste peut et ne peut pas ouvrir et ce qui se passe quand une commande atteint un hôte non répertorié.441Les commandes en sandbox n'obtiennent pas d'accès réseau par défaut. Claude nomme les hôtes dont une commande a besoin sur la commande elle-même, le classificateur les examine avec la commande, et une liste approuvée ouvre ces hôtes pour cette seule commande. [Domaines autorisés par commande](/docs/fr/sandboxing#per-command-allowed-domains-in-auto-mode) couvre ce qu'une liste peut et ne peut pas ouvrir et ce qui se passe quand une commande tente d'atteindre un hôte non répertorié.

442 442 

443Exé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, des buckets et des services approuvés via le paramètre `autoMode.environment` : voir [Configurer le mode auto](/docs/fr/auto-mode-config).443Exécutez `claude auto-mode defaults` pour afficher les listes de règles complètes en JSON. Si des actions courantes sont bloquées, un administrateur peut ajouter des dépôts, des buckets et des services approuvés via le paramètre `autoMode.environment` : voir [Configurer le mode auto](/docs/fr/auto-mode-config).

444 444 

445Pousser 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, à moins que la poussée ou la demande de tirage ne 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 commandes 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).445Pousser vers n'importe quelle branche du dépôt sur lequel vous travaillez et créer une pull request qui correspond à votre demande s'exécutent sans demande de permission, à moins que le push ou la pull request ne relève de la [liste de blocage](#what-the-classifier-blocks-by-default), comme des secrets ou des données sensibles quittant le dépôt, ou une pull request qui cible un dépôt ou une organisation différents. Pour exiger un checkpoint humain avant ces commandes 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).

446 446 

447<h3 id="first-read-outside-the-working-directories">447<h3 id="first-read-outside-the-working-directories">

448 La première lecture en dehors des répertoires de travail448 La première lecture en dehors des répertoires de travail

449</h3>449</h3>

450 450 

451Tandis que [`permissions.blockReadsOutsideWorkingDirectories`](/docs/fr/settings-reference#permissions-blockreadsoutsideworkingdirectories) est désactivé, les lectures de fichiers s'exécutent sans invite en mode auto, y compris les lectures en dehors des [répertoires de travail](/docs/fr/permissions#working-directories). La première fois que Claude utilise l'outil Read, Grep ou Glob sur un chemin en dehors d'eux, Claude Code demande s'il faut autoriser cette lecture.451Tant que [`permissions.blockReadsOutsideWorkingDirectories`](/docs/fr/settings-reference#permissions-blockreadsoutsideworkingdirectories) est désactivé, les lectures de fichiers s'exécutent sans demande de permission en mode auto, y compris les lectures en dehors des [répertoires de travail](/docs/fr/permissions#working-directories). La première fois que Claude utilise l'outil Read, Grep ou Glob sur un chemin en dehors de ceux-ci, Claude Code demande s'il faut autoriser cette lecture.

452 452 

453L'invite n'apparaît pas dans les exécutions `-p` non interactives ou les sessions d'arrière-plan ; les lectures là s'exécutent comme avant.453La demande n'apparaît pas dans les exécutions `-p` non interactives ni dans les sessions d'arrière-plan ; les lectures y s'exécutent comme avant.

454 454 

455Quelle que soit votre réponse, Claude continue à travailler :455Quelle que soit votre réponse, Claude continue à travailler :

456 456 

457* **Oui, et continuez à autoriser toute lecture en dehors des répertoires de travail** : la lecture s'exécute, les lectures ultérieures en dehors des répertoires de travail s'exécutent comme avant, et Claude Code enregistre votre réponse pour que l'invite n'apparaisse plus457* **Oui, et continuez à autoriser toute lecture en dehors des répertoires de travail** : la lecture s'exécute, les lectures ultérieures en dehors des répertoires de travail s'exécutent comme avant, et Claude Code enregistre votre réponse pour que la demande n'apparaisse plus

458* **Non, et bloquez les lectures en dehors des répertoires de travail à partir de maintenant** : la lecture est refusée, et Claude Code définit [`permissions.blockReadsOutsideWorkingDirectories`](/docs/fr/settings-reference#permissions-blockreadsoutsideworkingdirectories) sur `true` dans vos paramètres utilisateur, ce qui fait que les outils de fichier refusent de telles lectures dans chaque session ultérieure et chaque mode de permission. Pour laisser Claude lire un tel chemin plus tard, ajoutez son répertoire avec `/add-dir` ou supprimez le paramètre.458* **Non, et bloquez les lectures en dehors des répertoires de travail à partir de maintenant** : la lecture est refusée, et Claude Code définit [`permissions.blockReadsOutsideWorkingDirectories`](/docs/fr/settings-reference#permissions-blockreadsoutsideworkingdirectories) sur `true` dans vos paramètres utilisateur, ce qui fait que les outils de fichier refusent de telles lectures dans chaque session ultérieure et chaque mode de permission. Pour laisser Claude lire un tel chemin plus tard, ajoutez son répertoire avec `/add-dir` ou supprimez le paramètre.

459* **Non, et demandez à nouveau la prochaine fois** : la lecture est refusée, et la prochaine lecture en dehors des répertoires de travail invite à nouveau459* **Non, et demandez à nouveau la prochaine fois** : la lecture est refusée, et la prochaine lecture en dehors des répertoires de travail redemande la permission

460* **Oui, mais demandez à nouveau la prochaine fois** : la lecture s'exécute, rien n'est enregistré, et la prochaine lecture en dehors des répertoires de travail invite à nouveau460* **Oui, mais demandez à nouveau la prochaine fois** : la lecture s'exécute, rien n'est enregistré, et la prochaine lecture en dehors des répertoires de travail redemande la permission

461 461 

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

463 Limites que vous énoncez dans la conversation463 Limites que vous énoncez dans la conversation


465 465 

466Le classificateur traite les limites que vous énoncez dans la conversation comme un signal de blocage. Si vous dites à Claude « ne pousse pas » ou « attends que j'examine avant de déployer », le classificateur bloque les actions correspondantes même quand les règles par défaut les autoriseraient. Une limite reste en vigueur jusqu'à ce que vous la leviez dans un message ultérieur. Le propre jugement de Claude qu'une condition a été remplie ne la lève pas.466Le classificateur traite les limites que vous énoncez dans la conversation comme un signal de blocage. Si vous dites à Claude « ne pousse pas » ou « attends que j'examine avant de déployer », le classificateur bloque les actions correspondantes même quand les règles par défaut les autoriseraient. Une limite reste en vigueur jusqu'à ce que vous la leviez dans un message ultérieur. Le propre jugement de Claude qu'une condition a été remplie ne la lève pas.

467 467 

468Les limites ne sont pas stockées en tant que règles. Le classificateur les relit à partir de la transcription à chaque vérification, donc une limite peut être perdue si la [compaction de contexte](/docs/fr/costs#reduce-token-usage) supprime le message qui l'a énoncée. Pour une garantie ferme, ajoutez une [règle deny](/docs/fr/permissions#permission-rule-syntax) à la place.468Les limites ne sont pas stockées en tant que règles. Le classificateur les relit à partir de la transcription à chaque vérification, donc une limite peut être perdue si la [compaction de contexte](/docs/fr/costs#reduce-token-usage) supprime le message qui l'a énoncée. Pour une garantie ferme, ajoutez plutôt une [règle deny](/docs/fr/permissions#permission-rule-syntax).

469 469 

470<h3 id="approvals-you-state-in-conversation">470<h3 id="approvals-you-state-in-conversation">

471 Approbations que vous énoncez dans la conversation471 Approbations que vous énoncez dans la conversation

472</h3>472</h3>

473 473 

474Si vous dites à Claude qu'une action bloquée est autorisée, le classificateur lit cela comme votre approbation et peut clarifier le bloc. La façon dont vous l'avez formulé décide si l'action s'exécute et jusqu'où l'approbation s'étend :474Si vous dites à Claude qu'une action bloquée est autorisée, le classificateur lit cela comme votre approbation et peut lever le blocage. La façon dont vous l'avez formulé détermine si l'action s'exécute et jusqu'où l'approbation s'étend :

475 475 

476* **Nommez l'action et ses spécificités** : votre message doit nommer l'action et la chose spécifique qui la rend dangereuse, comme la branche d'une poussée forcée. Nommer le verbe seul ne clarifie rien, donc « vous pouvez forcer la poussée » laisse le bloc en place.476* **Nommez l'action et ses spécificités** : votre message doit nommer l'action et l'élément spécifique qui la rend dangereuse, comme la branche d'un push forcé. Nommer le verbe seul ne lève rien, donc « vous pouvez faire un push forcé » laisse le blocage en place.

477* **Attendez-vous à ce qu'il couvre une action** : une approbation couvre l'action destructrice que vous avez nommée, donc une action ultérieure est bloquée à nouveau à moins que vous n'ayez accordé l'approbation en tant que permanente. Pour arrêter d'approuver un modèle routinier une action à la fois, ajoutez-le à [`autoMode.allow`](/docs/fr/auto-mode-config#override-the-block-and-allow-rules).477* **Attendez-vous à ce qu'elle couvre une seule action** : une approbation couvre l'action destructrice que vous avez nommée, donc une action ultérieure est de nouveau bloquée à moins que vous n'ayez accordé l'approbation de manière permanente. Pour cesser d'approuver un schéma courant action par action, ajoutez-le à [`autoMode.allow`](/docs/fr/auto-mode-config#override-the-block-and-allow-rules).

478* **Certains blocs restent en place** : [l'ordre de précédence du classificateur](/docs/fr/auto-mode-config#override-the-block-and-allow-rules) énonce les blocs que votre approbation peut atteindre. Pour exécuter une étape qu'elle ne clarifiera pas, [quittez le mode auto](#switch-permission-modes) et répondez à l'invite de permission.478* **Certains blocages restent en place** : [l'ordre de priorité du classificateur](/docs/fr/auto-mode-config#override-the-block-and-allow-rules) indique les blocages que votre approbation peut lever. Pour exécuter une étape qu'elle ne débloquera pas, [quittez le mode auto](#switch-permission-modes) et répondez à la demande de permission.

479 479 

480<h3 id="when-auto-mode-falls-back">480<h3 id="when-auto-mode-falls-back">

481 Quand le mode auto revient en arrière481 Quand le mode auto se rabat sur une solution de repli

482</h3>482</h3>

483 483 

484Quand le mode auto ne peut pas approuver les actions de votre session, ce qui se passe dépend du cas :484Quand le mode auto ne peut pas approuver les actions de votre session, ce qui se passe dépend du cas :

485 485 

486* **Une action bloquée** : Claude Code affiche une notification et énumère l'action dans `/permissions` sous l'onglet **Recently denied**, où vous pouvez appuyer sur `r` pour la réessayer avec une approbation manuelle.486* **Une action bloquée** : Claude Code affiche une notification et répertorie l'action dans `/permissions` sous l'onglet **Recently denied**, où vous pouvez appuyer sur `r` pour la réessayer avec une approbation manuelle.

487* **Blocs répétés** : si le classificateur bloque une action 3 fois de suite ou 20 fois au total, le mode auto s'interrompt et Claude Code reprend l'invite. L'approbation de l'action invitée reprend le mode auto. Voir [Seuils de bloc répété](#repeated-block-thresholds) pour savoir comment les blocs sont comptés.487* **Blocages répétés** : si le classificateur bloque une action 3 fois de suite ou 20 fois au total, le mode auto se met en pause et Claude Code recommence à vous demander la permission. Approuver l'action demandée relance le mode auto. Voir [Seuils de blocages répétés](#repeated-block-thresholds) pour savoir comment les blocages sont comptés.

488* **Aucun verdict du classificateur** : quand une vérification de sécurité distincte du mode auto refuse la propre demande du classificateur, ou que la réponse du classificateur ne s'analyse pas, Claude Code refuse l'action sans la notification ou l'entrée **Recently denied**. Voir [Le mode auto ne peut pas déterminer la sécurité d'une action](/docs/fr/errors#auto-mode-cannot-determine-the-safety-of-an-action) pour le message que chaque cas affiche et ce qu'il faut faire.488* **Aucun verdict du classificateur** : quand une vérification de sécurité distincte du mode auto refuse la propre requête du classificateur, ou que la réponse du classificateur ne peut pas être analysée, Claude Code refuse l'action sans la notification ni l'entrée **Recently denied**. Voir [Le mode auto ne peut pas déterminer la sécurité d'une action](/docs/fr/errors#auto-mode-cannot-determine-the-safety-of-an-action) pour le message que chaque cas affiche et ce qu'il faut faire.

489* **Aucun verdict du serveur** : sous [examen du classificateur côté serveur](#server-side-classifier-review), Claude Code refuse une action pour laquelle le serveur ne donne pas de verdict, et arrête le tour après dix réponses de suite sans verdict. Voir [Le serveur n'a pas retourné de verdict de sécurité](/docs/fr/errors#the-server-returned-no-safety-verdict).489* **Aucun verdict du serveur** : avec l'[examen du classificateur côté serveur](#server-side-classifier-review), Claude Code refuse une action pour laquelle le serveur ne donne pas de verdict, et arrête le tour après dix réponses de suite sans verdict. Voir [Le serveur n'a pas retourné de verdict de sécurité](/docs/fr/errors#the-server-returned-no-safety-verdict).

490* **Un changement de mode pendant une vérification** : si vous changez les modes de permission tandis qu'une vérification de classificateur est en attente, Claude Code abandonne un verdict que le nouveau mode n'aurait pas demandé. Vous êtes invité à l'approbation à la place, ou l'action est auto-refusée en [mode `dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode).490* **Un changement de mode pendant une vérification** : si vous changez de mode de permission alors qu'une vérification du classificateur est en attente, Claude Code abandonne un verdict que le nouveau mode n'aurait pas demandé. Une approbation vous est demandée à la place, ou l'action est automatiquement refusée en [mode `dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode).

491 491 

492<h4 id="repeated-block-thresholds">492<h4 id="repeated-block-thresholds">

493 Seuils de bloc répété493 Seuils de blocages répétés

494</h4>494</h4>

495 495 

496Les seuils de 3 blocs de suite et 20 blocs au total ne sont pas configurables. Le compteur total persiste pour la session et se réinitialise uniquement quand sa propre limite déclenche un retour en arrière. Claude Code ne compte pas un refus vers l'un ou l'autre seuil quand une vérification de sécurité distincte du mode auto refuse la propre demande du classificateur.496Les seuils de 3 blocages de suite et de 20 blocages au total ne sont pas configurables. Le compteur total persiste pour la session et ne se réinitialise que lorsque sa propre limite déclenche le repli. Claude Code ne compte pas un refus dans l'un ou l'autre seuil quand une vérification de sécurité distincte du mode auto refuse la propre requête du classificateur.

497 497 

498Une exécution `-p` [non interactive](/docs/fr/headless) sans [`--permission-prompt-tool`](/docs/fr/cli-reference#cli-flags) n'a pas d'invite pour revenir en arrière. Quand les blocs répétés atteignent un seuil, l'action ne s'exécute pas et Claude continue à travailler. Claude Code n'arrête pas l'exécution.498Une exécution `-p` [non interactive](/docs/fr/headless) sans [`--permission-prompt-tool`](/docs/fr/cli-reference#cli-flags) n'a pas de demande de permission sur laquelle se rabattre. Quand les blocages répétés atteignent un seuil, l'action ne s'exécute pas et Claude continue à travailler. Claude Code n'arrête pas l'exécution.

499 499 

500Les blocs répétés signifient généralement que le classificateur manque de contexte sur votre infrastructure. Utilisez `/feedback` pour signaler les faux positifs, ou faites en sorte qu'un administrateur [configure l'infrastructure approuvée](/docs/fr/auto-mode-config).500Les blocages répétés signifient généralement que le classificateur manque de contexte sur votre infrastructure. Utilisez `/feedback` pour signaler les faux positifs, ou demandez à un administrateur de [configurer l'infrastructure approuvée](/docs/fr/auto-mode-config).

501 501 

502<h3 id="how-auto-mode-evaluates-actions">502<h3 id="how-auto-mode-evaluates-actions">

503 Comment le mode auto évalue les actions503 Comment le mode auto évalue les actions

504</h3>504</h3>

505 505 

506Les sections suivantes couvrent l'ordre dans lequel Claude Code évalue une action, comment le classificateur examine le travail des sous-agents, et ce que les appels de classificateur ajoutent en coût et en latence.506Les sections suivantes couvrent l'ordre dans lequel Claude Code évalue une action, comment le classificateur examine le travail des sous-agents, et ce que les appels au classificateur ajoutent en coût et en latence.

507 507 

508<span id="how-the-classifier-evaluates-actions" />508<span id="how-the-classifier-evaluates-actions" />

509 509 

510<AccordionGroup>510<AccordionGroup>

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

512 Chaque action passe par un ordre de décision fixe. La première étape correspondante gagne :512 Chaque action passe par un ordre de décision fixe. La première étape correspondante l'emporte :

513 513 

514 1. Les actions correspondant à vos [règles allow, ask ou deny](/docs/fr/permissions#manage-permissions) se résolvent immédiatement, avec ces exceptions :514 1. Les actions correspondant à vos [règles allow, ask ou deny](/docs/fr/permissions#manage-permissions) sont résolues immédiatement, avec ces exceptions :

515 * Les écritures vers les [chemins protégés](#protected-paths) sont acheminées vers le classificateur même quand une règle allow correspond515 * Les écritures vers les [chemins protégés](#protected-paths) sont acheminées vers le classificateur même quand une règle allow correspond

516 * Aucune règle allow n'approuve les suppressions `rm` et `rmdir` ciblant un [chemin critique](#critical-paths)516 * Aucune règle allow n'approuve les suppressions `rm` et `rmdir` ciblant un [chemin critique](#critical-paths)

517 * Les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) vous invitent directement même quand 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 Code517 * Les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) vous demandent directement la permission même quand 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

518 * Une commande shell qui porte des [domaines autorisés par commande](/docs/fr/sandboxing#per-command-allowed-domains-in-auto-mode) est également acheminée vers le classificateur même quand une règle allow correspond, car une règle approuve la commande, pas ses hôtes518 * Une commande shell qui porte des [domaines autorisés par commande](/docs/fr/sandboxing#per-command-allowed-domains-in-auto-mode) est également acheminée vers le classificateur même quand une règle allow correspond, car une règle approuve la commande, pas ses hôtes

519 * Les règles ask qui correspondent sur le contenu d'une commande, comme `Bash(git push *)`, reviennent à une invite de permission519 * Les règles ask qui portent sur le contenu d'une commande, comme `Bash(git push *)`, se rabattent sur une demande de permission

520 * Une écriture que la [vérification de lien symbolique](/docs/fr/permissions#symlinks) résout à un chemin protégé vous invite quand le chemin que Claude a demandé n'est pas lui-même protégé520 * Une écriture que la [vérification des liens symboliques](/docs/fr/permissions#symlinks) résout vers un chemin protégé vous demande la permission quand le chemin que Claude a demandé n'est pas lui-même protégé

521 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 invitent521 2. Les actions en lecture seule et les modifications de fichiers dans votre répertoire de travail sont approuvées automatiquement, 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 demande la permission

522 * Dans une session avec [examen du classificateur côté serveur](#server-side-classifier-review), les actions en lecture seule et les commandes shell [en bac à sable](/docs/fr/sandboxing#sandbox-modes) attendent cet examen et sont bloquées s'il les signale522 * Dans une session avec [examen du classificateur côté serveur](#server-side-classifier-review), les commandes shell en lecture seule et [en sandbox](/docs/fr/sandboxing#sandbox-modes) attendent cet examen et sont bloquées s'il les signale

523 * Une écriture à l'intérieur de votre répertoire de travail que la [vérification de lien symbolique](/docs/fr/permissions#symlinks) résout à un emplacement en dehors d'elle vous invite523 * Une écriture à l'intérieur de votre répertoire de travail que la [vérification des liens symboliques](/docs/fr/permissions#symlinks) résout vers un emplacement extérieur vous demande la permission

524 3. Tout le reste va au classificateur, à part les [suppressions de chemin critique](#critical-paths) sous leur gestion par défaut. Les outils de connecteur et les outils MCP `requiresUserInteraction` qui vous invitent directement à l'étape 1 n'atteignent jamais le classificateur non plus, donc ni une approbation requise par l'organisation ni une étape de consentement n'est auto-approuvée524 * Quand Claude lit un [artefact créé par quelqu'un d'autre](/docs/fr/artifacts#read-an-artifact-shared-with-you), les cas d'approbation répertoriés dans cette section s'appliquent

525 4. Si le classificateur bloque, Claude reçoit la raison. Dans la plupart des sessions, la raison nomme la règle que le classificateur a correspondante, comme `[Data Exfiltration]`, plutôt que de donner une explication écrite ; voir [Examiner les refus](/docs/fr/auto-mode-config#review-denials)525 3. Tout le reste est envoyé au classificateur, à l'exception des [suppressions de chemins critiques](#critical-paths) sous leur gestion par défaut. Les outils de connecteur et les outils MCP `requiresUserInteraction` qui vous demandent directement la permission à l'étape 1 n'atteignent jamais le classificateur non plus, donc ni une approbation exigée par l'organisation ni une étape de consentement n'est approuvée automatiquement

526 4. Si le classificateur bloque, Claude reçoit la raison. Dans la plupart des sessions, la raison nomme la règle à laquelle le classificateur a fait correspondre l'action, comme `[Data Exfiltration]`, plutôt que de donner une explication rédigée ; voir [Examiner les refus](/docs/fr/auto-mode-config#review-denials)

526 527 

527 Un [mod](/docs/fr/plugins/mods/overview) que vous installez qui accroche `tool.check` peut approuver une action avant l'étape 3, et le classificateur ne vérifie pas une action que le mod approuve. Voir [Étendre les permissions avec des hooks](/docs/fr/permissions#extend-permissions-with-hooks).528 Un [mod](/docs/fr/plugins/mods/overview) que vous installez et qui gère `tool.check` peut approuver une action avant l'étape 3, et le classificateur ne vérifie pas une action que le mod approuve. Voir [Étendre les permissions avec des hooks](/docs/fr/permissions#extend-permissions-with-hooks).

528 529 

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

530 531 

531 * Blanket `Bash(*)` ou `PowerShell(*)`532 * `Bash(*)` ou `PowerShell(*)` globaux

532 * Interpréteurs avec caractères génériques comme `Bash(python*)`533 * Interpréteurs avec caractères génériques comme `Bash(python*)`

533 * Commandes d'exécution du gestionnaire de paquet534 * Commandes d'exécution des gestionnaires de paquets

534 * Règles `Agent` allow535 * Règles `Agent` allow

535 * Règles [`Monitor`](/docs/fr/tools-reference#monitor-tool) allow, car Claude Code exécute les commandes Monitor via le shell536 * Règles [`Monitor`](/docs/fr/tools-reference#monitor-tool) allow, car Claude Code exécute les commandes Monitor via le shell

536 537 

537 Les règles étroites comme `Bash(npm test)` restent en vigueur. Claude Code restaure les règles supprimées quand vous quittez le mode auto. Avant v2.1.236, Claude Code laissait les règles `Monitor` allow en vigueur en mode auto, donc une règle qui correspondait à l'outil entier approuvait les commandes Monitor sans examen du classificateur.538 Les règles étroites comme `Bash(npm test)` restent en vigueur. Claude Code restaure les règles supprimées quand vous quittez le mode auto. Avant v2.1.236, Claude Code laissait les règles `Monitor` allow en vigueur en mode auto, donc une règle qui correspondait à l'outil entier approuvait les commandes Monitor sans examen du classificateur.

538 539 

539 Claude Code exécute également `git status` lui-même avant une commande qui abandonnerait le travail non validé, comme `git reset --hard` ou `rm -rf`, et montre au classificateur si le travail préparé, modifié ou non suivi est présent. Claude Code signale les fichiers non suivis dans cette vérification même quand la configuration git du dépôt définit `status.showUntrackedFiles=no`.540 Claude Code exécute également `git status` lui-même avant une commande qui abandonnerait du travail non commité, comme `git reset --hard` ou `rm -rf`, et indique au classificateur si du travail indexé, modifié ou non suivi est présent. Claude Code signale les fichiers non suivis dans cette vérification même quand la configuration git du dépôt définit `status.showUntrackedFiles=no`.

540 541 

541 Dans les demandes de classificateur envoyées par Claude Code lui-même, le classificateur voit les messages utilisateur, les appels d'outil autres que les recherches en lecture seule comme les lectures de fichiers et les recherches, et votre contenu CLAUDE.md. Les résultats d'outil sont supprimés de ces demandes, donc le contenu hostile dans un fichier ou une page Web ne peut pas manipuler le classificateur directement.542 Dans les requêtes de classificateur envoyées par Claude Code lui-même, le classificateur voit les messages utilisateur, les appels d'outils autres que les consultations en lecture seule comme les lectures de fichiers et les recherches, et le contenu de votre CLAUDE.md. Les résultats d'outils sont retirés de ces requêtes, donc le contenu hostile dans un fichier ou une page web ne peut pas manipuler directement le classificateur.

542 543 

543 Vous pouvez annoter le résultat d'un appel avec le champ `classifierContext` d'un [hook PostToolUse](/docs/fr/hooks#annotate-a-result-for-the-auto-mode-classifier), que le classificateur lit comme contexte fourni par l'application. Le champ nécessite Claude Code v2.1.236 ou ultérieur.544 Vous pouvez annoter le résultat d'un appel avec le [champ `classifierContext` d'un hook PostToolUse](/docs/fr/hooks#annotate-a-result-for-the-auto-mode-classifier), que le classificateur lit comme contexte fourni par l'application. Le champ nécessite Claude Code v2.1.236 ou ultérieur.

544 545 

545 Une sonde côté serveur distincte analyse les résultats d'outil entrants et signale le contenu suspect avant que Claude ne le lise. Pour plus d'informations sur la façon dont ces couches fonctionnent ensemble, consultez l'[annonce du mode auto](https://claude.com/blog/auto-mode) et l'[approfondissement technique](https://www.anthropic.com/engineering/claude-code-auto-mode).546 Une sonde côté serveur distincte analyse les résultats d'outils entrants et signale le contenu suspect avant que Claude ne le lise. Pour plus d'informations sur la façon dont ces couches fonctionnent ensemble, consultez l'[annonce du mode auto](https://claude.com/blog/auto-mode) et l'[analyse technique approfondie](https://www.anthropic.com/engineering/claude-code-auto-mode).

546 </Accordion>547 </Accordion>

547 548 

548 <Accordion title="Comment le mode auto gère les sous-agents">549 <Accordion title="Comment le mode auto gère les sous-agents">

549 Le classificateur vérifie le travail des [sous-agents](/docs/fr/sub-agents) à trois points :550 Le classificateur vérifie le travail des [sous-agents](/docs/fr/sub-agents) à trois moments :

550 551 

551 1. Avant qu'un sous-agent ne démarre, la description de la tâche déléguée est évaluée, donc une tâche qui semble dangereuse est bloquée au moment du démarrage.552 1. Avant qu'un sous-agent ne démarre, la description de la tâche déléguée est évaluée, donc une tâche qui semble dangereuse est bloquée au moment du lancement.

552 2. Tandis que le sous-agent s'exécute, chacune de ses actions passe par le même [ordre de décision](#how-the-classifier-evaluates-actions) que dans la session parent, avec les mêmes règles de blocage et d'autorisation. Tout `permissionMode` dans le frontmatter du sous-agent est ignoré.553 2. Pendant que le sous-agent s'exécute, chacune de ses actions passe par le même [ordre de décision](#how-the-classifier-evaluates-actions) que dans la session parente, avec les mêmes règles de blocage et d'autorisation. Tout `permissionMode` dans le frontmatter du sous-agent est ignoré.

553 3. Quand le sous-agent se termine, le classificateur examine son travail et son rapport final avant que le parent ne lise le rapport. Quand le classificateur signale le travail ou le rapport du sous-agent, ou qu'une vérification de sécurité API distincte refuse l'examen, le rapport est toujours livré, précédé d'un avertissement de sécurité. Quand le classificateur n'est pas disponible pour l'examen, le rapport arrive avec une note pour vérifier le travail du sous-agent avant d'agir en fonction de celui-ci.554 3. Quand le sous-agent se termine, le classificateur examine son travail et son rapport final avant que le parent ne lise le rapport. Quand le classificateur signale le travail ou le rapport du sous-agent, ou qu'une vérification de sécurité API distincte refuse l'examen, le rapport est tout de même livré, précédé d'un avertissement de sécurité. Quand le classificateur n'est pas disponible pour l'examen, le rapport arrive avec une note invitant à vérifier le travail du sous-agent avant d'agir en conséquence.

554 </Accordion>555 </Accordion>

555 556 

556 <Accordion title="Coût et latence">557 <Accordion title="Coût et latence">

557 Le classificateur s'exécute sur Claude Sonnet 5 par défaut plutôt que sur votre sélection `/model`. Un modèle de classificateur que Anthropic configure côté serveur prend précédence sur ce défaut. Quand le modèle de votre session est Claude Sonnet 4.6, ou quand [`availableModels`](/docs/fr/model-config#restrict-model-selection) exclut Sonnet 5, le classificateur s'exécute sur le modèle de la session à la place, ou sur un modèle Opus quand la session s'exécute sur un [modèle Fable](/docs/fr/model-config#work-with-fable) ; sur les fournisseurs autres que l'API Anthropic, ce retour en arrière Opus est le modèle Opus par défaut du fournisseur.558 Le classificateur s'exécute par défaut sur Claude Sonnet 5 plutôt que sur votre sélection `/model`. Un modèle de classificateur qu'Anthropic configure côté serveur a priorité sur ce modèle par défaut. Quand le modèle de votre session est Claude Sonnet 4.6, ou quand [`availableModels`](/docs/fr/model-config#restrict-model-selection) exclut Sonnet 5, le classificateur s'exécute plutôt sur le modèle de la session, ou sur un modèle Opus quand la session s'exécute sur un [modèle Fable](/docs/fr/model-config#work-with-fable). Sur les fournisseurs autres que l'API Anthropic, ce modèle Opus de secours est le modèle que vous définissez dans [`ANTHROPIC_DEFAULT_OPUS_MODEL`](/docs/fr/model-config#environment-variables), ou Opus 5 si vous n'en avez défini aucun.

558 559 

559 La première demande en mode auto de la session valide le défaut Sonnet 5 : si la demande réussit, Sonnet 5 reste le modèle de classificateur de la session, et si elle échoue parce que le modèle n'est pas disponible, la session utilise le retour en arrière à la place.560 La première requête en mode auto de la session valide le modèle par défaut Sonnet 5 : si la requête réussit, Sonnet 5 reste le modèle de classificateur de la session, et si elle échoue parce que le modèle n'est pas disponible, la session utilise plutôt le modèle de secours.

560 561 

561 Sur les plans Enterprise et sur les comptes qui utilisent l'API Claude, [Claude Platform sur AWS](/docs/fr/claude-platform-on-aws), Amazon Bedrock, Google Cloud's Agent Platform ou Microsoft Foundry, les appels de classificateur comptent vers votre utilisation de jetons. Chaque vérification envoie une portion de la transcription plus l'action en attente, ajoutant un aller-retour avant l'exécution. Les lectures et les éditions de répertoire de travail en dehors des chemins protégés ignorent le classificateur, donc la surcharge provient principalement des commandes shell et des opérations réseau. Où le serveur examine les actions dans le cadre des demandes de modèle de la session, il n'y a pas d'appels de classificateur distincts à compter ; voir [Examen du classificateur côté serveur](#server-side-classifier-review).562 Sur les plans Enterprise et sur les comptes qui utilisent l'API Claude, [Claude Platform sur AWS](/docs/fr/claude-platform-on-aws), Amazon Bedrock, Google Cloud's Agent Platform ou Microsoft Foundry, les appels au classificateur comptent dans votre utilisation de tokens. Chaque vérification envoie une partie de la transcription ainsi que l'action en attente, ajoutant un aller-retour avant l'exécution. Les lectures et les modifications dans le répertoire de travail en dehors des chemins protégés ne passent pas par le classificateur, donc la surcharge provient principalement des commandes shell et des opérations réseau. Là où le serveur examine les actions dans le cadre des requêtes de modèle de la session, il n'y a pas d'appels distincts au classificateur à compter ; voir [Examen du classificateur côté serveur](#server-side-classifier-review).

562 563 

563 L'accès réseau en bac à sable n'ajoute pas de demandes de classificateur par connexion. Le classificateur juge [les hôtes qu'une commande nomme](/docs/fr/sandboxing#per-command-allowed-domains-in-auto-mode) ensemble avec la commande dans un examen, et Claude Code vérifie chaque connexion par rapport à la liste approuvée sans appeler le classificateur à nouveau.564 L'accès réseau en sandbox n'ajoute pas de requêtes de classificateur par connexion. Le classificateur juge [les hôtes qu'une commande nomme](/docs/fr/sandboxing#per-command-allowed-domains-in-auto-mode) avec la commande en un seul examen, et Claude Code vérifie chaque connexion par rapport à la liste approuvée sans appeler à nouveau le classificateur.

564 </Accordion>565 </Accordion>

565</AccordionGroup>566</AccordionGroup>

566 567 


588 589 

589Le mode `bypassPermissions` désactive les invites de permission et les contrôles de sécurité afin que les appels d'outils s'exécutent immédiatement, y compris les écritures vers les [chemins protégés](#protected-paths).590Le mode `bypassPermissions` désactive les invites de permission et les contrôles de sécurité afin que les appels d'outils s'exécutent immédiatement, y compris les écritures vers les [chemins protégés](#protected-paths).

590 591 

591Les [actions qu'aucun mode n'auto-approuve](#actions-no-mode-auto-approves) invitent toujours dans ce mode. Les [Remove-Item dans PowerShell](#remove-item-in-powershell) refusent également s'appliquent dans ce mode.592Les [actions qu'aucun mode n'auto-approuve](#actions-no-mode-auto-approves) demandent toujours une confirmation dans ce mode. La lecture de l'[artefact public d'une autre organisation](/docs/fr/artifacts#read-an-artifact-shared-with-you) nécessite votre approbation, et ce mode ne la demande pas, donc Claude ne peut pas en lire. Les refus [Remove-Item dans PowerShell](#remove-item-in-powershell) s'appliquent également dans ce mode.

592 593 

593Deux [protections de messagerie inter-sessions](/docs/fr/cross-session-messaging) s'appliquent toujours dans ce mode, et dans les sessions en mode plan interactif où les permissions de contournement sont disponibles :594Deux [protections de messagerie inter-sessions](/docs/fr/cross-session-messaging) s'appliquent toujours dans ce mode, et dans les sessions en mode plan interactif où les permissions de contournement sont disponibles :

594 595 

permissions.md +4 −4

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# Configurer les autorisations5# Configurer les permissions

6 6 

7> Contrôlez ce que Claude Code peut accéder et faire avec des règles d'autorisation granulaires, des modes et des politiques gérées.7> Contrôlez ce à quoi Claude Code peut accéder et ce qu'il peut faire avec des règles de permission granulaires, des modes et des politiques gérées.

8 8 

9Claude Code prend en charge les autorisations granulaires afin que vous puissiez spécifier exactement ce que l'agent est autorisé à faire et ce qu'il ne peut pas faire. Vous pouvez archiver les paramètres d'autorisation dans le contrôle de version pour les partager avec tous les développeurs de votre organisation, et chaque développeur peut personnaliser les siens.9Claude Code prend en charge les autorisations granulaires afin que vous puissiez spécifier exactement ce que l'agent est autorisé à faire et ce qu'il ne peut pas faire. Vous pouvez archiver les paramètres d'autorisation dans le contrôle de version pour les partager avec tous les développeurs de votre organisation, et chaque développeur peut personnaliser les siens.

10 10 


358 Read et Edit358 Read et Edit

359</h3>359</h3>

360 360 

361Pour bloquer les outils de fichier de Claude de lire un fichier ou un répertoire, ajoutez une règle de refus `Read` pour son chemin, telle que `Read(./.env)` ou `Read(./secrets/**)` ; [Exclure les fichiers sensibles](/docs/fr/settings-reference#exclude-sensitive-files) a un exemple prêt à coller.361Pour bloquer les outils de fichier de Claude de lire un fichier ou un répertoire, ajoutez une règle de refus `Read` pour son chemin, telle que `Read(./.env)` ou `Read(./secrets/**)` ; [Exclure les fichiers sensibles](/docs/fr/settings-reference#exclude-sensitive-files) a un exemple prêt à coller. Si votre projet contient un fichier `.claudeignore`, celui-ci n'a aucun effet ; déplacez donc ses entrées dans des règles de refus `Read`.

362 362 

363Les règles `Edit` s'appliquent à tous les outils intégrés qui éditent les fichiers. Claude fait un effort raisonnable pour appliquer les règles `Read` à tous les outils intégrés qui lisent les fichiers comme Grep et Glob, aux mentions `@file` dans vos invites et à la sélection et au contexte de fichier ouvert qu'un [IDE](/docs/fr/vs-code#the-built-in-ide-mcp-server) connecté partage avec Claude.363Les règles `Edit` s'appliquent à tous les outils intégrés qui éditent les fichiers. Claude fait un effort raisonnable pour appliquer les règles `Read` à tous les outils intégrés qui lisent les fichiers comme Grep et Glob, aux mentions `@file` dans vos invites et à la sélection et au contexte de fichier ouvert qu'un [IDE](/docs/fr/vs-code#the-built-in-ide-mcp-server) connecté partage avec Claude.

364 364 


603 603 

604Les décisions du hook PreToolUse ne contournent pas les règles d'autorisation. Claude Code évalue les règles de refus et de demande indépendamment de ce qu'un hook PreToolUse retourne : une règle de refus correspondante bloque l'appel, et une règle de demande correspondante demande toujours même lorsque le hook a retourné `"allow"` ou `"ask"`. Cela préserve la précédence de refus en premier décrite dans [Gérer les autorisations](#manage-permissions), y compris les règles de refus définies dans les paramètres gérés.604Les décisions du hook PreToolUse ne contournent pas les règles d'autorisation. Claude Code évalue les règles de refus et de demande indépendamment de ce qu'un hook PreToolUse retourne : une règle de refus correspondante bloque l'appel, et une règle de demande correspondante demande toujours même lorsque le hook a retourné `"allow"` ou `"ask"`. Cela préserve la précédence de refus en premier décrite dans [Gérer les autorisations](#manage-permissions), y compris les règles de refus définies dans les paramètres gérés.

605 605 

606Cette précédence couvre les hooks dans les fichiers de paramètres et dans le fichier `hooks/hooks.json` d'un plugin. Un [mod](/docs/fr/plugins/mods/overview) que vous installez et qui accroche `tool.check` répond après que les règles et les hooks PreToolUse aient décidé, et sa réponse peut remplacer la leur :606Cette priorité couvre les hooks dans les fichiers de paramètres et dans le fichier `hooks/hooks.json` d'un plugin. Un [mod](/docs/fr/plugins/mods/overview) que vous installez et qui gère `tool.check` répond après que les règles et les hooks `PreToolUse` ont décidé, et sa réponse peut remplacer la leur :

607 607 

608* **Règles de demande** : le mod peut approuver un appel pour lequel une règle de demande demanderait une invite608* **Règles de demande** : le mod peut approuver un appel pour lequel une règle de demande demanderait une invite

609* **Un blocage d'un hook `PreToolUse`** : le mod peut approuver l'appel, sauf si le hook se trouve dans les paramètres gérés609* **Un blocage d'un hook `PreToolUse`** : le mod peut approuver l'appel, sauf si le hook se trouve dans les paramètres gérés

plugin-evals.md +2 −2

Details

31* Claude Code v2.1.269 ou ultérieur. Exécutez `claude --version` pour vérifier et `claude update` pour mettre à jour.31* Claude Code v2.1.269 ou ultérieur. Exécutez `claude --version` pour vérifier et `claude update` pour mettre à jour.

32* Git 2.31 ou ultérieur, si git est installé. Exécutez `git --version` pour vérifier. Avec une version plus ancienne de git, `claude plugin eval` [s'arrête avant d'exécuter un cas quelconque](#git-is-too-old-for-claude-plugin-eval). Sans git, il s'exécute normalement.32* Git 2.31 ou ultérieur, si git est installé. Exécutez `git --version` pour vérifier. Avec une version plus ancienne de git, `claude plugin eval` [s'arrête avant d'exécuter un cas quelconque](#git-is-too-old-for-claude-plugin-eval). Sans git, il s'exécute normalement.

33* Un répertoire de plugin avec un manifeste `plugin.json` ou `.claude-plugin/plugin.json`, ou un [plugin de répertoire de skills](/docs/fr/plugins/loading#plugins-shared-through-a-repository).33* Un répertoire de plugin avec un manifeste `plugin.json` ou `.claude-plugin/plugin.json`, ou un [plugin de répertoire de skills](/docs/fr/plugins/loading#plugins-shared-through-a-repository).

34* 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.34* 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. Si vous exécutez Claude Code sur Amazon Bedrock, Agent Platform de Google Cloud ou Microsoft Foundry, exécutez la suite depuis un shell qui exporte les mêmes variables de fournisseur que vos sessions normales, car chaque exécution les hérite de ce shell, comme le décrit le [champ `env`](#prompt-md-fields).

35 35 

36<h2 id="how-an-eval-run-works">36<h2 id="how-an-eval-run-works">

37 Comment fonctionne une exécution d'eval37 Comment fonctionne une exécution d'eval


455 455 

456Un exécuteur CI a aussi besoin de ceux-ci en place :456Un exécuteur CI a aussi besoin de ceux-ci en place :

457 457 

458* **Installation et identifiants** : un exécuteur CI a besoin d'une installation Claude Code et d'[identifiants dans l'environnement](/docs/fr/authentication) comme `ANTHROPIC_API_KEY`.458* **Installation et identifiants** : un exécuteur CI a besoin d'une installation Claude Code et d'[identifiants dans l'environnement](/docs/fr/authentication) comme `ANTHROPIC_API_KEY` ou les variables de votre fournisseur cloud.

459* **Confiance** : sans `--trust-plugin`, un travail dont le répertoire de checkout Claude Code ne fait pas déjà confiance a besoin de l'[invite de confiance à la première exécution](#trust-the-plugin-directory), et une exécution qui ne peut pas demander est refusée avec la sortie 1.459* **Confiance** : sans `--trust-plugin`, un travail dont le répertoire de checkout Claude Code ne fait pas déjà confiance a besoin de l'[invite de confiance à la première exécution](#trust-the-plugin-directory), et une exécution qui ne peut pas demander est refusée avec la sortie 1.

460* **`init` dans CI** : `claude plugin eval init` a besoin d'un terminal pour vous poser ses questions ; dans CI, exécutez `claude plugin eval init --bare <name>` pour obtenir le modèle vierge.460* **`init` dans CI** : `claude plugin eval init` a besoin d'un terminal pour vous poser ses questions ; dans CI, exécutez `claude plugin eval init --bare <name>` pour obtenir le modèle vierge.

461 461 

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# Les marketplaces d'Anthropic

6 

7> Les marketplaces de plugins officielle, communautaire et de démonstration d'Anthropic pour Claude Code : leurs noms, leurs dépôts, comment ajouter chacune d'elles et où parcourir leurs plugins.

8 

9Anthropic publie trois marketplaces de plugins généralistes pour Claude Code : [officielle](https://github.com/anthropics/claude-plugins-official), [communautaire](https://github.com/anthropics/claude-plugins-community) et [de démonstration](https://github.com/anthropics/claude-code). Chacune est un catalogue de plugins hébergé dans son propre dépôt GitHub. Lorsque vous installez un plugin depuis l'une d'elles dans une session Claude Code, vous saisissez le nom de la marketplace après `@`, comme dans `/plugin install commit-commands@claude-plugins-official`.

10 

11Utilisez cette page pour distinguer les trois marketplaces et pour savoir où vérifier si la marketplace officielle contient un plugin donné.

12 

13<Note>

14 Ces cas sont traités sur d'autres pages :

15 

16 * **Comment installer un plugin** : consultez [Installer des plugins](/docs/fr/plugins/install)

17 * **Une installation qui a échoué** : consultez [Dépannage des plugins](/docs/fr/plugins/troubleshooting)

18</Note>

19 

20Accédez à la partie de la page dont vous avez besoin :

21 

22* Pour distinguer les trois marketplaces par dépôt, nom de marketplace et façon de les obtenir, consultez [Les marketplaces d'Anthropic](#anthropic’s-marketplaces).

23* Pour trouver un plugin dans la marketplace officielle, consultez [Trouver des plugins dans la marketplace officielle](#find-plugins-in-the-official-marketplace).

24 

25<h2 id="anthropic’s-marketplaces">

26 Les marketplaces d'Anthropic

27</h2>

28 

29Une marketplace est un catalogue de plugins qu'un dépôt définit dans son fichier `.claude-plugin/marketplace.json`. Les marketplaces officielle, communautaire et de démonstration proviennent chacune de leur propre dépôt GitHub. Anthropic publie également des marketplaces thématiques, comme `anthropics/skills` et `anthropics/knowledge-work-plugins`, que vous ajoutez dans une session Claude Code avec `/plugin marketplace add <owner>/<repo>`.

30 

31Ce tableau indique le dépôt et le nom de chaque marketplace, c'est-à-dire ce que vous saisissez après `@` lorsque vous installez un plugin depuis cette marketplace. Le nom de la marketplace communautaire est `claude-community`, et non le nom de son dépôt.

32 

33| | Officielle | Communautaire | Démonstration |

34| :- | :- | :- | :- |

35| Dépôt | [`anthropics/claude-plugins-official`](https://github.com/anthropics/claude-plugins-official) | [`anthropics/claude-plugins-community`](https://github.com/anthropics/claude-plugins-community) | [`anthropics/claude-code`](https://github.com/anthropics/claude-code/tree/main/plugins) |

36| Nom de la marketplace | `claude-plugins-official` | `claude-community` | `claude-code-plugins` |

37| Contenu | Des plugins maintenus par Anthropic, ainsi que des plugins de partenaires et d'autres auteurs | Des plugins tiers que leurs auteurs ont soumis à Anthropic | Un petit ensemble de plugins d'exemple qui montrent ce qu'un plugin peut contenir |

38| Comment l'obtenir | Claude Code l'ajoute la première fois que vous démarrez une session interactive dans le terminal, sauf si une [politique gérée](/docs/fr/plugins/org#allow-the-official-marketplace-and-your-own) ou `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` la bloque. Consultez [Marketplace `claude-plugins-official` introuvable](/docs/fr/plugins/troubleshooting#marketplace-claude-plugins-official-not-found) si elle est absente | Vous l'ajoutez dans une session Claude Code avec `/plugin marketplace add anthropics/claude-plugins-community` | Vous l'ajoutez dans une session Claude Code avec `/plugin marketplace add anthropics/claude-code` |

39 

40Si vous avez écrit un plugin et souhaitez que d'autres personnes l'installent, consultez [Publier un plugin](/docs/fr/plugins/publish), qui traite de votre propre marketplace et de la soumission à l'annuaire d'Anthropic.

41 

42<h3 id="the-demo-marketplace-in-anthropics/claude-code">

43 La marketplace de démonstration dans `anthropics/claude-code`

44</h3>

45 

46Si un tutoriel ou d'anciennes instructions vous demandent d'exécuter `/plugin marketplace add anthropics/claude-code`, cette commande ajoute la marketplace de démonstration, nommée `claude-code-plugins`. Il ne s'agit pas de la marketplace officielle.

47 

48La plupart des plugins de la marketplace de démonstration figurent également dans la marketplace officielle sous les mêmes noms. Par exemple, `code-review`, `feature-dev`, `commit-commands` et `security-guidance` sont présents dans les deux. Installez-les depuis `claude-plugins-official` afin de ne pas avoir deux copies installées.

49 

50<h2 id="find-plugins-in-the-official-marketplace">

51 Trouver des plugins dans la marketplace officielle

52</h2>

53 

54Par défaut, Claude Code ajoute pour vous la marketplace officielle, `claude-plugins-official`. La majeure partie de son contenu provient de partenaires et d'autres auteurs plutôt que d'Anthropic : des éditeurs d'outils publient des plugins qui connectent Claude Code à leurs services, et Anthropic maintient un ensemble plus restreint de plugins, comme `commit-commands`, `code-review`, `feature-dev` et les [plugins de serveur de langage](/docs/fr/plugins/code-intelligence). Le catalogue change souvent, c'est pourquoi cette page ne le répertorie pas.

55 

56Pour voir ce qu'il contient, utilisez l'onglet **Discover** de `/plugin` dans une session Claude Code, dans lequel vous pouvez effectuer une recherche, ou parcourez [Claude Marketplace](https://claude.com/marketplace/plugins) sur le web.

57 

58<h2 id="browse-and-install-from-anthropic’s-marketplaces">

59 Parcourir les marketplaces d'Anthropic et installer depuis celles-ci

60</h2>

61 

62Vous pouvez rechercher un plugin dans les marketplaces d'Anthropic depuis Claude Code, sur le web ou sur GitHub :

63 

64* **Dans Claude Code, en parcourant** : exécutez `/plugin` dans une session interactive. Son onglet **Discover** répertorie les plugins de vos marketplaces.

65* **Dans Claude Code, par nom** : exécutez `/plugin install <name>` dans une session, ce qui recherche le nom dans vos marketplaces. Si le plugin se trouve dans l'une d'elles, ses détails s'ouvrent dans le panneau `/plugin`, et rien n'est installé tant que vous n'avez pas choisi une [portée d'installation](/docs/fr/plugins/install#install-a-plugin) et confirmé à cet endroit. Dans le cas contraire, vous voyez `Plugin "<name>" not found in any marketplace`.

66* **Sur le web** : recherchez dans le catalogue complet sur [Claude Marketplace](https://claude.com/marketplace/plugins), qui affiche le nombre d'installations et marque certains plugins comme **Anthropic verified**.

67* **Sur GitHub** : ouvrez `.claude-plugin/marketplace.json` dans le dépôt de la marketplace, par exemple [`anthropics/claude-plugins-official`](https://github.com/anthropics/claude-plugins-official). Ce fichier constitue le catalogue lui-même.

68 

69L'annuaire d'Anthropic est distinct de ces marketplaces. L'annuaire est le catalogue présent sur claude.ai. Un plugin que vous ajoutez depuis l'annuaire sur claude.ai parvient à Claude Code grâce à la [synchronisation du compte](/docs/fr/plugins/loading#synced-plugins). Pour y référencer votre propre plugin, consultez [Soumettre à l'annuaire d'Anthropic](/docs/fr/plugins/publish#submit-to-anthropics-directory).

70 

71Pour installer depuis l'application de bureau ou depuis un script, ou pour voir ce qu'une session cloud charge, consultez [Installer des plugins](/docs/fr/plugins/install).

72 

73<h3 id="add-the-community-or-demo-marketplace">

74 Ajouter la marketplace communautaire ou de démonstration

75</h3>

76 

77Les marketplaces communautaire et de démonstration ne sont pas enregistrées tant que vous ne les avez pas ajoutées dans une session Claude Code :

78 

79* **Communautaire** : exécutez `/plugin marketplace add anthropics/claude-plugins-community`, puis installez avec le suffixe `@claude-community`.

80* **Démonstration** : exécutez `/plugin marketplace add anthropics/claude-code`, puis installez avec le suffixe `@claude-code-plugins`.

81 

82Si `claude-plugins-official` n'apparaît pas dans l'onglet **Marketplaces** de `/plugin`, ajoutez-la de la même manière avec `/plugin marketplace add anthropics/claude-plugins-official`.

83 

84Pour les erreurs `not found` et les marketplaces qui refusent de s'ajouter, consultez [Dépannage des plugins](/docs/fr/plugins/troubleshooting#install-a-plugin).

85 

86<h2 id="third-party-marketplaces">

87 Marketplaces tierces

88</h2>

89 

90De nombreux plugins populaires ne figurent dans aucune marketplace d'Anthropic. Ils se trouvent dans les propres marketplaces de leurs auteurs, généralement un dépôt GitHub contenant un fichier `.claude-plugin/marketplace.json` à sa racine.

91 

92Anthropic n'examine pas les marketplaces tierces : lisez donc [Sécurité et confiance des plugins](/docs/fr/plugins/security) avant d'en ajouter une.

93 

94Pour utiliser une marketplace tierce, ajoutez son dépôt dans une session Claude Code avec `/plugin marketplace add <owner>/<repo>`, puis installez avec `/plugin install <plugin>@<marketplace-name>`. Le nom de la marketplace correspond au champ `name` de ce fichier `marketplace.json`, et Claude Code l'affiche une fois la marketplace ajoutée.

95 

96Pour d'autres façons d'ajouter une marketplace, consultez [Ajouter une marketplace](/docs/fr/plugins/install#add-a-marketplace).

97 

98<h2 id="next-steps">

99 Étapes suivantes

100</h2>

101 

102* [Installer et gérer des plugins](/docs/fr/plugins/install) : installer un plugin depuis l'une de ces marketplaces et choisir une portée

103* [Sécurité et confiance des plugins](/docs/fr/plugins/security) : ce qu'un plugin peut faire sur votre machine et comment l'examiner avant de l'installer

104* [Plugins d'intelligence de code](/docs/fr/plugins/code-intelligence) : installer l'un des plugins de serveur de langage de la marketplace officielle

105* [Créer une marketplace](/docs/fr/plugins/create-marketplace) : gérer votre propre marketplace en parallèle de celles d'Anthropic

Details

571* La balise existe déjà571* La balise existe déjà

572* L'arbre de travail est sale572* L'arbre de travail est sale

573 573 

574<h3 id="plugin-test">

575 plugin test

576</h3>

577 

578Exécutez les tests d'un [mod](/docs/fr/plugins/mods/overview), un plugin dont le code enregistre des gestionnaires d'événements. La commande ne nécessite ni session, ni connexion, ni réseau. Pour savoir comment écrire un test, voir [Tester un mod](/docs/fr/plugins/mods/test).

579 

580```bash theme={null}

581claude plugin test [directory]

582```

583 

584Le `[directory]` est le répertoire du mod, par défaut le répertoire courant. La commande exécute chaque fichier qu'il contient dont le nom se termine par `.test.ts` ou `.test.tsx`, et quitte avec le statut 1 quand un test échoue.

585 

586Exécutez les tests d'un mod dans `./first-mod` :

587 

588```bash theme={null}

589claude plugin test ./first-mod

590```

591 

574<h3 id="plugin-validate">592<h3 id="plugin-validate">

575 plugin validate593 plugin validate

576</h3>594</h3>


804 822 

805Un `<plugin>` est un `name` de plugin ou `name@marketplace`.823Un `<plugin>` est un `name` de plugin ou `name@marketplace`.

806 824 

807Le tableau ci-dessous liste chaque forme de session. Les sous-commandes shell `init`, `update`, `details`, `prune`, `eval`, et `eval init` n'ont pas de forme de session.825Le tableau ci-dessous liste chaque forme de session. Les sous-commandes shell `init`, `update`, `details`, `prune`, `eval`, `eval init`, et `test` n'ont pas de forme de session.

808 826 

809| Commande | Alias | Ce qu'elle fait |827| Commande | Alias | Ce qu'elle fait |

810| :- | :- | :- |828| :- | :- | :- |

Details

52 </Step>52 </Step>

53 53 

54 <Step title="Installer le plugin">54 <Step title="Installer le plugin">

55 Pour installer le plugin listé pour votre langage dans le tableau de l'étape 1, exécutez `/plugin install` dans une session Claude Code, en remplaçant `typescript-lsp` par le nom de ce plugin :55 Dans l'extension VS Code ou l'application de bureau, suivez plutôt [Installer un plugin](/docs/fr/plugins/install#install-a-plugin) au lieu de cette étape. Dans un terminal, démarrez Claude Code en exécutant `claude`, puis saisissez ceci à son invite de commandes, en remplaçant `typescript-lsp` par le plugin que le tableau de l'étape 1 liste pour votre langage :

56 56 

57 ```57 ```

58 /plugin install typescript-lsp@claude-plugins-official58 /plugin install typescript-lsp@claude-plugins-official

Details

435 435 

436<PluginExplorer>436<PluginExplorer>

437 <Piece id="manifest">437 <Piece id="manifest">

438 Le [manifeste](/docs/fr/plugins/manifest-reference) est le fichier `plugin.json` dans le répertoire `.claude-plugin/` d'un plugin. Il contient les métadonnées du plugin et les valeurs `userConfig` que Claude Code demande à l'utilisateur. Claude Code charge un plugin sans celui-ci, mais [le répertoire d'Anthropic](/docs/fr/plugins/publish#submit-to-anthropics-directory) l'exige. À l'intérieur du fichier, seul `name` est requis. Dans celui-ci, `description` est le texte que les utilisateurs voient pour le plugin dans `/plugin`, et `version` garde les utilisateurs sur cette version jusqu'à ce que vous la changiez :438 Le [manifeste](/docs/fr/plugins/manifest-reference) est le fichier `plugin.json` dans le répertoire `.claude-plugin/` d'un plugin. Il contient les métadonnées du plugin et les valeurs `userConfig` que Claude Code demande à l'utilisateur. Claude Code charge un plugin sans celui-ci. À l'intérieur du fichier, seul `name` est requis. Dans celui-ci, `description` est le texte que les utilisateurs voient pour le plugin dans `/plugin`, et `version` garde les utilisateurs sur cette version jusqu'à ce que vous la changiez :

439 439 

440 ```json theme={null}440 ```json theme={null}

441 {441 {

Details

130* `source` : où Claude Code récupère le plugin. Écrivez une chaîne de chemin relatif pour un plugin à l'intérieur du répertoire de la marketplace, comme dans [la procédure pas à pas](#create-a-marketplace), ou un objet source pour un plugin en dehors de celui-ci. Voir [Choisir une source de plugin](#choose-a-plugin-source).130* `source` : où Claude Code récupère le plugin. Écrivez une chaîne de chemin relatif pour un plugin à l'intérieur du répertoire de la marketplace, comme dans [la procédure pas à pas](#create-a-marketplace), ou un objet source pour un plugin en dehors de celui-ci. Voir [Choisir une source de plugin](#choose-a-plugin-source).

131* `description` : la ligne que les gens voient à côté du plugin lorsqu'ils parcourent votre marketplace dans `/plugin`.131* `description` : la ligne que les gens voient à côté du plugin lorsqu'ils parcourent votre marketplace dans `/plugin`.

132 132 

133Pour la liste complète des champs, voir [Entrées de plugins](/docs/fr/plugins/marketplace-reference#plugin-entries).133Pour la liste complète des champs, voir [Entrées de plugins](/docs/fr/plugins/marketplace-reference#plugin-entries), qui couvre également les champs [`plugin.json`](/docs/fr/plugins/manifest-reference) qu'une entrée peut définir et les cas où ils s'appliquent.

134 

135Une entrée peut également définir n'importe quel champ [`plugin.json`](/docs/fr/plugins/manifest-reference). Pour savoir quand les champs `plugin.json` d'une entrée s'appliquent à un plugin qui a son propre `plugin.json`, voir [Entrée et plugin.json](/docs/fr/plugins/marketplace-reference#entry-and-plugin-json).

136 134 

137<h2 id="rules-for-plugin-entries">135<h2 id="rules-for-plugin-entries">

138 Règles pour les entrées de plugins136 Règles pour les entrées de plugins

Details

385 385 

386Dans une session Claude Code, exécutez `/plugin` et allez à l'onglet **Marketplaces**. Sélectionnez la marketplace, puis sélectionnez **Enable auto-update** ou **Disable auto-update**.386Dans une session Claude Code, exécutez `/plugin` et allez à l'onglet **Marketplaces**. Sélectionnez la marketplace, puis sélectionnez **Enable auto-update** ou **Disable auto-update**.

387 387 

388<h3 id="update-one-plugin-now">388<h3 id="update-plugins-now">

389 Mettre à jour un plugin maintenant389 Mettre à jour les plugins maintenant

390</h3>390</h3>

391 391 

392Dans une session, ouvrez le plugin sur l'onglet **Installed** dans `/plugin` et sélectionnez **Update now**, ou dans votre shell exécutez `claude plugin update <plugin>@<marketplace>`.392Pour mettre à jour un plugin, ouvrez-le sur l'onglet **Installed** dans `/plugin` pendant une session et sélectionnez **Update now**, ou exécutez `claude plugin update <plugin>@<marketplace>` dans votre shell.

393 

394Aucune commande ne met à jour tous les plugins en une seule fois. Pour mettre à jour en une seule fois les plugins que vous avez installés à partir d'une marketplace, allez à l'onglet **Marketplaces** dans `/plugin`, sélectionnez la marketplace et choisissez **Update marketplace**. Cela actualise la liste de la marketplace, met à jour les plugins que vous avez installés à partir de celle-ci et signale tout plugin qu'elle vous a laissé mettre à jour vous-même. Un plugin avec une [source `command`](/docs/fr/plugins/marketplace-reference#command-plugin-source) ou dont l'entrée de marketplace définit une commande `headersHelper` n'est pas mis à jour de cette façon ; vous le mettez donc à jour depuis sa vue sur l'onglet **Installed** ou avec `claude plugin update <plugin>@<marketplace>`.

395 

396Si vous exécutez `claude plugin marketplace update` dans votre shell sans nom, cela actualise la liste de chaque marketplace, mais laisse vos plugins installés à leurs versions actuelles.

393 397 

394<h3 id="auto-update-from-a-private-marketplace">398<h3 id="auto-update-from-a-private-marketplace">

395 Mise à jour automatique à partir d'une marketplace privée399 Mise à jour automatique à partir d'une marketplace privée

plugins/loading.md +20 −14

Details

244 Quand l'installation de dépendance s'exécute244 Quand l'installation de dépendance s'exécute

245</h4>245</h4>

246 246 

247Claude Code exécute l'installation à l'intérieur du répertoire de version copié chaque fois qu'il en crée un :247Claude Code installe les dépendances dans le répertoire de version copié chaque fois qu'il en crée un :

248 248 

249* Quand vous installez un plugin249* Quand vous installez un plugin

250* Quand Claude Code met à jour un plugin vers une nouvelle version250* Quand Claude Code met à jour un plugin vers une nouvelle version


252 252 

253Pour un plugin de chemin relatif [chargé en place](#in-place-and-copied-plugins) à partir d'un marché de répertoire local, Claude Code n'installe pas les dépendances dans le répertoire source. Installez-les là vous-même, ou à partir d'un hook dans [`${CLAUDE_PLUGIN_DATA}`](/docs/fr/plugins/components#path-variables-and-persistent-data).253Pour un plugin de chemin relatif [chargé en place](#in-place-and-copied-plugins) à partir d'un marché de répertoire local, Claude Code n'installe pas les dépendances dans le répertoire source. Installez-les là vous-même, ou à partir d'un hook dans [`${CLAUDE_PLUGIN_DATA}`](/docs/fr/plugins/components#path-variables-and-persistent-data).

254 254 

255L'installation s'exécute uniquement quand le répertoire racine du plugin contient à la fois un `package.json` et un fichier de verrouillage pris en charge. Le fichier de verrouillage décide quelle commande Claude Code exécute :255L'installation s'exécute uniquement quand le répertoire racine du plugin contient à la fois un `package.json` et un fichier de verrouillage pris en charge.

256 256 

257| Fichier de verrouillage | Commande |257Le fichier de verrouillage décide quel gestionnaire de packages Claude Code exécute :

258 

259| Fichier de verrouillage | Gestionnaire de packages |

258| :- | :- |260| :- | :- |

259| `bun.lock` ou `bun.lockb` | `bun install --frozen-lockfile --ignore-scripts` |261| `bun.lock` | Bun |

260| `npm-shrinkwrap.json` ou `package-lock.json` | `npm ci --ignore-scripts` |262| `npm-shrinkwrap.json` ou `package-lock.json` | npm |

261 263 

262Si un plugin contient plus d'un de ces fichiers de verrouillage, Claude Code utilise la première correspondance, en vérifiant dans l'ordre : `bun.lock`, `bun.lockb`, `npm-shrinkwrap.json`, `package-lock.json`.264Si un plugin contient plus d'un de ces fichiers de verrouillage, Claude Code utilise la première correspondance, en vérifiant dans l'ordre : `bun.lock`, `npm-shrinkwrap.json`, `package-lock.json`.

263 265 

264Claude Code ignore l'installation pour les fichiers de verrouillage Yarn et pnpm et pour un `bunfig.toml` à côté du fichier de verrouillage Bun :266Claude Code ignore l'installation dans ces cas de fichier de verrouillage :

265 267 

266* Si votre plugin n'a qu'un `yarn.lock` ou `pnpm-lock.yaml`, remplacez-le par un fichier de verrouillage npm268* **`bun.lockb`** : le fichier de verrouillage binaire de Bun ne peut pas être vérifié. Fournissez plutôt un `bun.lock` texte ou un fichier de verrouillage npm

267* Si un `bunfig.toml` est dans le même répertoire que le fichier de verrouillage Bun, supprimez le `bunfig.toml`, ou remplacez le fichier de verrouillage Bun par un fichier de verrouillage npm269* **`yarn.lock` ou `pnpm-lock.yaml`** : remplacez-le par un fichier de verrouillage npm

270* **Un fichier de verrouillage dans un format que Claude Code ne lit pas** : un fichier de verrouillage npm nécessite un `lockfileVersion` de `2` ou `3`, qu'écrit npm 7 ou ultérieur, et un `bun.lock` nécessite un `lockfileVersion` ne dépassant pas `2`

268 271 

269Incluez un fichier de verrouillage npm pour atteindre le plus d'utilisateurs. Claude Code exécute le gestionnaire de packages du fichier de verrouillage correspondant à partir du PATH de l'utilisateur et n'essaie pas l'autre fichier de verrouillage à la place si ce gestionnaire de packages manque.272Incluez un fichier de verrouillage npm pour atteindre le plus d'utilisateurs. Claude Code exécute le gestionnaire de packages du fichier de verrouillage correspondant à partir du PATH de l'utilisateur et n'essaie pas l'autre fichier de verrouillage à la place si ce gestionnaire de packages manque.

270 273 


276 279 

277Claude Code contraint cette installation de dépendance de sorte qu'aucun code du plugin ou de ses packages ne s'exécute pendant celle-ci, et limite combien de temps elle peut s'exécuter :280Claude Code contraint cette installation de dépendance de sorte qu'aucun code du plugin ou de ses packages ne s'exécute pendant celle-ci, et limite combien de temps elle peut s'exécuter :

278 281 

279* **Résolution gelée** : Bun et npm installent exactement ce que le fichier de verrouillage épingle, et échouent plutôt que de re-résoudre les versions quand `package.json` et le fichier de verrouillage ne sont pas d'accord282* **Packages de registre uniquement** : chaque dépendance doit être un package de registre épinglé dans le fichier de verrouillage à une version exacte. Un plugin avec une dépendance git, GitHub, de dossier, d'espace de travail ou liée n'obtient aucune installation.

283* **Téléchargements `https`** : un lien de téléchargement dans le fichier de verrouillage doit utiliser `https`, sauf s'il pointe vers le registre npm par défaut de l'utilisateur qui effectue l'installation.

284* **Un dossier d'installation séparé** : le gestionnaire de packages s'exécute dans un dossier qui lui est propre et qui ne contient qu'une copie de la liste de dépendances vérifiée, de sorte que npm et Bun ne lisent pas le `.npmrc`, le `.env` ou le `bunfig.toml` du plugin. Quand l'installation réussit, Claude Code déplace le `node_modules` résultant dans le plugin.

285* **Résolution gelée** : l'installation utilise exactement les versions que le fichier de verrouillage épingle, et Claude Code l'ignore quand `package.json` et le fichier de verrouillage ne listent pas les mêmes dépendances

280* **Pas de scripts de cycle de vie** : `--ignore-scripts` empêche les scripts `preinstall`, `install`, et `postinstall` de s'exécuter, donc les dépendances qui construisent des modules natifs dans ces scripts téléchargent mais ne compilent pas pendant cette installation286* **Pas de scripts de cycle de vie** : `--ignore-scripts` empêche les scripts `preinstall`, `install`, et `postinstall` de s'exécuter, donc les dépendances qui construisent des modules natifs dans ces scripts téléchargent mais ne compilent pas pendant cette installation

287* **Pas de remplacements ni de correctifs** : un plugin dont le `package.json` définit des `overrides` npm n'obtient aucune installation à partir d'un fichier de verrouillage npm, et un plugin qui définit des `patchedDependencies` Bun n'obtient aucune installation à partir de `bun.lock`

281* **Délai d'expiration de 60 secondes** : Claude Code arrête une installation qui s'exécute plus longtemps et la traite comme échouée288* **Délai d'expiration de 60 secondes** : Claude Code arrête une installation qui s'exécute plus longtemps et la traite comme échouée

282 289 

283Claude Code récupère un plugin de source npm avant cette installation de dépendance, et aucun des scripts d'installation propres du package ne s'exécute pendant la récupération. Voir [source de plugin npm](/docs/fr/plugins/marketplace-reference#npm-plugin-source).290Claude Code récupère un plugin de source npm avant cette installation de dépendance, et aucun des scripts d'installation propres du package ne s'exécute pendant la récupération. Voir [source de plugin npm](/docs/fr/plugins/marketplace-reference#npm-plugin-source).


290 Quand l'installation de dépendance échoue ou est ignorée297 Quand l'installation de dépendance échoue ou est ignorée

291</h4>298</h4>

292 299 

293Une installation échouée ou ignorée ne bloque jamais le plugin, et chaque cas laisse un signe différent :300Une installation échouée ou ignorée ne bloque jamais le plugin, qui se charge alors sans les dépendances. Chaque cas laisse un signe différent :

294 301 

295* Une installation échouée, ou une ignorée à cause d'un fichier de verrouillage Yarn ou pnpm ou un `bunfig.toml`, apparaît comme un avertissement dans la sortie `claude --debug`302* Une installation échouée, ou une ignorée à cause de son fichier de verrouillage ou de l'une des [limites sur l'installation](#limits-on-the-dependency-install), apparaît dans la sortie `claude --debug` comme une ligne `Plugin dependency install warning` qui indique la raison

296* Un plugin avec un `package.json` et aucun fichier de verrouillage est ignoré sans entrée de journal303* Un plugin avec un `package.json` et aucun fichier de verrouillage est ignoré sans entrée de journal

297* Une installation expirée peut laisser un arbre `node_modules` partiel dans la copie en cache

298 304 

299Quand l'installation automatique ne peut pas fournir une dépendance, installez-la à partir d'un hook dans le [répertoire de données persistantes](/docs/fr/plugins/components#path-variables-and-persistent-data). Cela inclut les packages qui ont besoin de leurs scripts de cycle de vie pour construire, les dépendances Python, et les plugins verrouillés avec Yarn ou pnpm.305Quand l'installation automatique ne peut pas fournir une dépendance, installez-la à partir d'un hook dans le [répertoire de données persistantes](/docs/fr/plugins/components#path-variables-and-persistent-data). Cela inclut les packages qui ont besoin de leurs scripts de cycle de vie pour compiler, les dépendances Python, les plugins verrouillés avec Yarn ou pnpm, et les dépendances qui ne sont pas des packages de registre, comme les dépendances git.

300 306 

301<h2 id="versions-and-updates">307<h2 id="versions-and-updates">

302 Versions et mises à jour308 Versions et mises à jour

Details

142| `license` | String | Identifiant SPDX tel que `MIT` ou `Apache-2.0` |142| `license` | String | Identifiant SPDX tel que `MIT` ou `Apache-2.0` |

143| `keywords` | Array of strings | Balises de découverte |143| `keywords` | Array of strings | Balises de découverte |

144| [`metadata`](#metadata) | Object | Objet de forme libre pour vos propres données. Claude Code ne le lit pas |144| [`metadata`](#metadata) | Object | Objet de forme libre pour vos propres données. Claude Code ne le lit pas |

145| [`icon`](#directory-listing-fields) | String | Icône de la fiche du plugin dans l'annuaire d'Anthropic. Claude Code ne la lit pas |

146| [`documentationUrl`](#directory-listing-fields) | String | Lien de documentation pour la fiche du plugin dans l'annuaire d'Anthropic. Claude Code ne le lit pas |

147| [`supportUrl`](#directory-listing-fields) | String | Lien d'assistance pour la fiche du plugin dans l'annuaire d'Anthropic. Claude Code ne le lit pas |

148| [`privacyPolicyUrl`](#directory-listing-fields) | String | Lien vers la politique de confidentialité pour la fiche du plugin dans l'annuaire d'Anthropic. Claude Code ne le lit pas |

149| [`termsOfServiceUrl`](#directory-listing-fields) | String | Lien vers les conditions d'utilisation pour la fiche du plugin dans l'annuaire d'Anthropic. Claude Code ne le lit pas |

145| [`defaultEnabled`](#defaultenabled) | Boolean | Si le plugin démarre activé lorsque l'utilisateur ne l'a pas défini. Par défaut `true` |150| [`defaultEnabled`](#defaultenabled) | Boolean | Si le plugin démarre activé lorsque l'utilisateur ne l'a pas défini. Par défaut `true` |

146| [`dependencies`](#dependencies) | Array of strings or objects | Plugins qui doivent être activés pour que celui-ci fonctionne |151| [`dependencies`](#dependencies) | Array of strings or objects | Plugins qui doivent être activés pour que celui-ci fonctionne |

147| [`settings`](#settings) | Object | Paramètres que Claude Code applique tandis que le plugin est activé. Seuls `agent` et `subagentStatusLine` prennent effet |152| [`settings`](#settings) | Object | Paramètres que Claude Code applique tandis que le plugin est activé. Seuls `agent` et `subagentStatusLine` prennent effet |


202 207 

203Un objet de forme libre pour vos propres données, comme des champs de catalogue ou de droit. Claude Code ne le lit pas. Nécessite Claude Code v2.1.222 ou ultérieur.208Un objet de forme libre pour vos propres données, comme des champs de catalogue ou de droit. Claude Code ne le lit pas. Nécessite Claude Code v2.1.222 ou ultérieur.

204 209 

210<h3 id="directory-listing-fields">

211 Champs de la fiche d'annuaire

212</h3>

213 

214L'annuaire d'Anthropic lit les champs `icon`, `documentationUrl`, `supportUrl`, `privacyPolicyUrl` et `termsOfServiceUrl` depuis `plugin.json` pour la fiche de votre plugin lorsque vous [soumettez le plugin](/docs/fr/plugins/publish#submit-to-anthropics-directory). Claude Code les ignore au moment du chargement. Définissez-les uniquement dans `plugin.json`. Dans une [entrée de marketplace](#marketplace-entries-and-the-manifest), `claude plugin validate` signale chacun d'eux comme un champ inconnu.

215 

216Définissez `icon` sur le chemin d'un fichier image à l'intérieur du plugin, comme `./logo.png`, et chacun des quatre champs d'URL sur une URL `https://`.

217 

218`claude plugin validate` accepte ces champs sans avertissement sur Claude Code v2.1.281 ou ultérieur. Les versions antérieures affichent un avertissement `Unknown field` pour chacun d'eux, de sorte qu'une exécution avec `--strict` échoue sur ces versions.

219 

205<h3 id="defaultenabled">220<h3 id="defaultenabled">

206 `defaultEnabled`221 `defaultEnabled`

207</h3>222</h3>


276 291 

277`hooks` prend un chemin de fichier `.json`, un objet hooks en ligne dans la même forme que [`hooks` dans `settings.json`](/docs/fr/hooks#configuration), ou un tableau mélangeant les deux. Pour les événements hook et les champs de gestionnaire, voir la [référence hooks](/docs/fr/hooks#hook-events).292`hooks` prend un chemin de fichier `.json`, un objet hooks en ligne dans la même forme que [`hooks` dans `settings.json`](/docs/fr/hooks#configuration), ou un tableau mélangeant les deux. Pour les événements hook et les champs de gestionnaire, voir la [référence hooks](/docs/fr/hooks#hook-events).

278 293 

279Claude Code fusionne tout ce que vous déclarez avec `hooks/hooks.json` lorsque ce fichier existe.294Un fichier de hooks encapsule la carte d'événements dans une clé `"hooks"` de premier niveau, la forme qu'utilise [`hooks/hooks.json`](/docs/fr/plugins/components#hooks). Un fichier qui contient uniquement la carte d'événements, sans cette enveloppe, ne se charge pas. Un objet en ligne est la carte d'événements elle-même, sans enveloppe.

295 

296Claude Code fusionne tout ce que vous déclarez avec `hooks/hooks.json` lorsque ce fichier existe. Ce tableau charge un fichier de hooks et déclare un hook `PostToolUse` en ligne :

280 297 

281```json theme={null}298```json theme={null}

282{299{


296}313}

297```314```

298 315 

316Le fichier que nomme ce tableau comporte l'enveloppe `"hooks"` autour de sa propre carte d'événements :

317 

318```json config/extra-hooks.json theme={null}

319{

320 "hooks": {

321 "PreToolUse": [

322 {

323 "matcher": "Bash",

324 "hooks": [

325 { "type": "command", "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/check-command.sh" }

326 ]

327 }

328 ]

329 }

330}

331```

332 

299<h3 id="mcpservers">333<h3 id="mcpservers">

300 `mcpServers`334 `mcpServers`

301</h3>335</h3>


400* **`skills`** : accepte également `"."`. À la fois `"."` et `"./"` désignent la racine du plugin. Avant v2.1.221, `"."` échouait la validation du manifeste, donc utilisez `"./"` lorsque le plugin doit se charger sur les versions antérieures434* **`skills`** : accepte également `"."`. À la fois `"."` et `"./"` désignent la racine du plugin. Avant v2.1.221, `"."` échouait la validation du manifeste, donc utilisez `"./"` lorsque le plugin doit se charger sur les versions antérieures

401* **`mcpServers`** : accepte également une URL de bundle `https://`435* **`mcpServers`** : accepte également une URL de bundle `https://`

402 436 

437`experimental.evals` n'est pas un chemin de composant, donc les règles de cette section ne le couvrent pas, et `claude plugin eval` vérifie plutôt la valeur au moment de son exécution. Elle désigne un répertoire sous la racine du plugin, comme `"quality/evals"`, avec ou sans le préfixe `./`. Avec un tableau, seule la première entrée est utilisée. Pour savoir ce que la valeur accepte et ce qui se passe avec une valeur inutilisable, consultez [Utiliser un répertoire d'eval différent](/docs/fr/plugin-evals#use-a-different-eval-directory).

438 

403<h3 id="containment-and-existence">439<h3 id="containment-and-existence">

404 Confinement et existence440 Confinement et existence

405</h3>441</h3>


693 Entrées de marketplace et le manifeste729 Entrées de marketplace et le manifeste

694</h2>730</h2>

695 731 

696Une [entrée de marketplace](/docs/fr/plugins/marketplace-reference) accepte chaque champ de cette page à côté de [ses propres champs](/docs/fr/plugins/marketplace-reference#plugin-entries), y compris `strict`.732Une [entrée de marketplace](/docs/fr/plugins/marketplace-reference) accepte [ses propres champs](/docs/fr/plugins/marketplace-reference#plugin-entries), y compris `strict`, ainsi que chaque champ de cette page à l'exception des [champs de listing de l'annuaire](#directory-listing-fields).

697 733 

698Le champ `strict` décide si l'entrée peut ajouter des composants à un plugin qui a son propre `plugin.json`. Il est par défaut `true`.734Le champ `strict` décide si l'entrée peut ajouter des composants à un plugin qui a son propre `plugin.json`. Il est par défaut `true`.

699 735 

Details

81 81 

82Chaque objet du tableau `plugins` de niveau supérieur de `marketplace.json` nomme un plugin et indique où le récupérer. `name` et `source` sont obligatoires.82Chaque objet du tableau `plugins` de niveau supérieur de `marketplace.json` nomme un plugin et indique où le récupérer. `name` et `source` sont obligatoires.

83 83 

84Une entrée accepte également tous les [champs `plugin.json`](/docs/fr/plugins/manifest-reference), tels que `description`, `version`, `author`, `commands` et `hooks`. Pour savoir quand ces champs s'appliquent, consultez [Comment une entrée se combine avec plugin.json](#entry-and-plugin-json).84Outre les [champs de référencement dans l'annuaire](/docs/fr/plugins/manifest-reference#directory-listing-fields), une entrée accepte également tous les [champs `plugin.json`](/docs/fr/plugins/manifest-reference), tels que `description`, `version`, `author`, `commands` et `hooks`. Pour savoir quand ces champs s'appliquent, consultez [Comment une entrée se combine avec plugin.json](#entry-and-plugin-json).

85 85 

86Le tableau répertorie les champs propres à l'entrée et les champs du manifeste dont le sens change dans une entrée.86Le tableau répertorie les champs propres à l'entrée et les champs du manifeste dont le sens change dans une entrée.

87 87 


99| `defaultEnabled` | boolean | Par défaut `true`. Si le plugin démarre activé quand l'utilisateur ne l'a pas défini dans [`enabledPlugins`](/docs/fr/settings-reference#enabledplugins). La valeur de l'entrée a la priorité sur `plugin.json` |99| `defaultEnabled` | boolean | Par défaut `true`. Si le plugin démarre activé quand l'utilisateur ne l'a pas défini dans [`enabledPlugins`](/docs/fr/settings-reference#enabledplugins). La valeur de l'entrée a la priorité sur `plugin.json` |

100| `displayName` | string | Nom lisible affiché dans l'interface utilisateur. Quand ni l'entrée ni le `plugin.json` du plugin n'en définit un, les utilisateurs voient le `name` du plugin |100| `displayName` | string | Nom lisible affiché dans l'interface utilisateur. Quand ni l'entrée ni le `plugin.json` du plugin n'en définit un, les utilisateurs voient le `name` du plugin |

101| `metadata` | object | Objet libre pour vos propres champs. Claude Code ne le lit pas. Nécessite Claude Code v2.1.222 ou ultérieur |101| `metadata` | object | Objet libre pour vos propres champs. Claude Code ne le lit pas. Nécessite Claude Code v2.1.222 ou ultérieur |

102| `headers` | object | En-têtes HTTP que Claude Code envoie quand il télécharge l'[archive](#archive-plugin-source) de cette entrée. Un en-tête défini ici remplace un en-tête du même nom de la source du marketplace [`headers`](#fields-by-type). Nécessite Claude Code v2.1.238 ou ultérieur |102| `headers` | object | En-têtes HTTP que Claude Code envoie quand il télécharge l'[archive](#archive-plugin-source) de cette entrée. Un en-tête défini ici remplace un en-tête du même nom provenant des [`headers`](#fields-by-type) de la source de la marketplace. Nécessite Claude Code v2.1.238 ou ultérieur |

103| `headersHelper` | string | Commande qui imprime les en-têtes de téléchargement d'archive de cette entrée sous la forme d'un objet JSON, pour une accréditation qui expire. L'entrée doit également définir [`"strict": false`](#strict-mode). Nécessite Claude Code v2.1.238 ou ultérieur. Consultez [Authentifier les téléchargements d'archive](/docs/fr/plugins/host-marketplace#authenticate-archive-downloads) |103| `headersHelper` | string | Commande qui imprime les en-têtes de téléchargement d'archive de cette entrée sous la forme d'un objet JSON, pour des identifiants qui expirent. L'entrée doit également définir [`"strict": false`](#strict-mode). Nécessite Claude Code v2.1.238 ou ultérieur. Consultez [Authentifier les téléchargements d'archive](/docs/fr/plugins/host-marketplace#authenticate-archive-downloads) |

104 104 

105<h3 id="entry-and-plugin-json">105<h3 id="entry-and-plugin-json">

106 Comment une entrée se combine avec plugin.json106 Comment une entrée se combine avec plugin.json


108 108 

109Les champs de l'entrée s'appliquent différemment à un plugin récupéré qui a son propre `.claude-plugin/plugin.json` et à un qui n'en a pas :109Les champs de l'entrée s'appliquent différemment à un plugin récupéré qui a son propre `.claude-plugin/plugin.json` et à un qui n'en a pas :

110 110 

111* **Pas de `plugin.json`** : l'entrée est le manifeste indépendamment de `strict`. Chaque champ de manifeste dans l'entrée s'applique, y compris [`mcpServers`, `lspServers`, `userConfig` et `channels`](/docs/fr/plugins/manifest-reference).111* **Pas de `plugin.json`** : l'entrée est le manifeste indépendamment de `strict`. Chaque champ de manifeste accepté par l'entrée s'applique, y compris [`mcpServers`, `lspServers`, `userConfig` et `channels`](/docs/fr/plugins/manifest-reference).

112* **`plugin.json` présent** : `plugin.json` est le manifeste. Le [mode strict](#strict-mode) décide si les six champs de composant de l'entrée, `commands`, `agents`, `skills`, `hooks`, `outputStyles` et `themes`, sont combinés avec lui ou rejetés comme un conflit. L'entrée `mcpServers`, `lspServers`, `userConfig` et `channels` ne s'appliquent pas. Déclarez-les dans `plugin.json`.112* **`plugin.json` présent** : `plugin.json` est le manifeste. Le [mode strict](#strict-mode) décide si les six champs de composant de l'entrée, `commands`, `agents`, `skills`, `hooks`, `outputStyles` et `themes`, sont combinés avec lui ou rejetés comme un conflit. Les champs `mcpServers`, `lspServers`, `userConfig` et `channels` de l'entrée ne s'appliquent pas. Déclarez-les dans `plugin.json`.

113 113 

114<h4 id="hooks-in-an-entry">114<h4 id="hooks-in-an-entry">

115 Hooks dans une entrée115 Hooks dans une entrée

116</h4>116</h4>

117 117 

118Écrivez les `hooks` d'entrée comme un objet en ligne qui mappe les noms d'événements de hook aux tableaux de correspondance. Si vous écrivez un chemin de fichier ou un tableau à la place, `claude plugin validate` le passe. Ces hooks ne s'exécutent jamais, et Claude Code signale une erreur `not yet supported in a marketplace entry` pour le plugin. Mettez les hooks basés sur des fichiers dans le propre [`hooks/hooks.json`](/docs/fr/plugins/components) du plugin ou `plugin.json`.118Écrivez les `hooks` d'entrée comme un objet en ligne qui mappe les noms d'événements de hook aux tableaux de matchers. Si vous écrivez un chemin de fichier ou un tableau à la place, `claude plugin validate` le passe. Ces hooks ne s'exécutent jamais, et Claude Code signale une erreur `not yet supported in a marketplace entry` pour le plugin. Mettez les hooks basés sur des fichiers dans le propre [`hooks/hooks.json`](/docs/fr/plugins/components) du plugin ou `plugin.json`.

119 119 

120<h4 id="display-fields">120<h4 id="display-fields">

121 Champs d'affichage121 Champs d'affichage


126* Pour un champ que vous définissez sur l'entrée, les utilisateurs voient la valeur de l'entrée, même quand `plugin.json` en définit une différente.126* Pour un champ que vous définissez sur l'entrée, les utilisateurs voient la valeur de l'entrée, même quand `plugin.json` en définit une différente.

127* Pour un champ que l'entrée laisse non défini, les utilisateurs voient la valeur `plugin.json`.127* Pour un champ que l'entrée laisse non défini, les utilisateurs voient la valeur `plugin.json`.

128 128 

129Avant l'installation, Claude Code ne peut lire `plugin.json` que pour les entrées avec une [source de chemin relatif](#relative-path-plugin-source), dont les fichiers de plugin se trouvent à l'intérieur du marketplace lui-même. Pour une entrée avec tout autre type de source, les utilisateurs ne voient que les champs propres de l'entrée jusqu'à ce qu'ils installent le plugin.129Avant l'installation, Claude Code ne peut lire `plugin.json` que pour les entrées avec une [source de chemin relatif](#relative-path-plugin-source), dont les fichiers de plugin se trouvent à l'intérieur de la marketplace elle-même. Pour une entrée avec tout autre type de source, les utilisateurs ne voient que les champs propres de l'entrée jusqu'à ce qu'ils installent le plugin.

130 130 

131<h3 id="strict-mode">131<h3 id="strict-mode">

132 Mode strict132 Mode strict

133</h3>133</h3>

134 134 

135`strict` décide ce qui se passe quand le plugin récupéré a son propre `plugin.json` et que l'entrée déclare également l'un des [champs de composant](#entry-and-plugin-json) : `commands`, `agents`, `skills`, `hooks`, `outputStyles` ou `themes`. Avec `strict: true`, la valeur par défaut, Claude Code ajoute les champs de composant de l'entrée à `plugin.json`, sauf `hooks`, dont les correspondances remplacent celles du manifeste par événement. Avec `strict: false`, une entrée qui déclare un champ de composant est un conflit, et le plugin ne se charge pas. Le tableau montre chaque combinaison de `strict`, `plugin.json` et des champs de composant de l'entrée.135`strict` décide ce qui se passe quand le plugin récupéré a son propre `plugin.json` et que l'entrée déclare également l'un des [champs de composant](#entry-and-plugin-json) : `commands`, `agents`, `skills`, `hooks`, `outputStyles` ou `themes`. Avec `strict: true`, la valeur par défaut, Claude Code ajoute les champs de composant de l'entrée à `plugin.json`, sauf `hooks`, dont les matchers remplacent ceux du manifeste par événement. Avec `strict: false`, une entrée qui déclare un champ de composant est un conflit, et le plugin ne se charge pas. Le tableau montre chaque combinaison de `strict`, `plugin.json` et des champs de composant de l'entrée.

136 136 

137| `strict` | `plugin.json` | Champs de composant d'entrée | Résultat |137| `strict` | `plugin.json` | Champs de composant d'entrée | Résultat |

138| :- | :- | :- | :- |138| :- | :- | :- | :- |

139| any | absent | any | L'entrée est le manifeste |139| any | absent | any | L'entrée est le manifeste |

140| `true`, la valeur par défaut | présent | any | `plugin.json` est l'autorité. Claude Code ajoute les champs de composant de l'entrée à celui-ci, sauf `hooks`, dont les correspondances [remplacent celles du manifeste par événement](/docs/fr/plugins/manifest-reference#how-entry-fields-combine-with-plugin-json) |140| `true`, la valeur par défaut | présent | any | `plugin.json` est l'autorité. Claude Code ajoute les champs de composant de l'entrée à celui-ci, sauf `hooks`, dont les matchers [remplacent ceux du manifeste par événement](/docs/fr/plugins/manifest-reference#how-entry-fields-combine-with-plugin-json) |

141| `false` | présent | none | `plugin.json` est le manifeste, comme avec `true` |141| `false` | présent | none | `plugin.json` est le manifeste, comme avec `true` |

142| `false` | présent | un ou plusieurs | Conflit. Le plugin ne se charge pas avec `Plugin <name> has conflicting manifests: both plugin.json and marketplace entry specify components` |142| `false` | présent | un ou plusieurs | Conflit. Le plugin ne se charge pas avec `Plugin <name> has conflicting manifests: both plugin.json and marketplace entry specify components` |

143 143 


154| Chemin relatif | la chaîne elle-même | Un répertoire à l'intérieur de la marketplace, résolu à partir de la racine marketplace. Doit commencer par `./`, sauf si vous écrivez un [nom nu sous `metadata.pluginRoot`](#relative-path-plugin-source). `"."` seul signifie la racine elle-même |154| Chemin relatif | la chaîne elle-même | Un répertoire à l'intérieur de la marketplace, résolu à partir de la racine marketplace. Doit commencer par `./`, sauf si vous écrivez un [nom nu sous `metadata.pluginRoot`](#relative-path-plugin-source). `"."` seul signifie la racine elle-même |

155| `github` | `repo`, `ref`, `sha` | Référentiel GitHub sous la forme `owner/repo` |155| `github` | `repo`, `ref`, `sha` | Référentiel GitHub sous la forme `owner/repo` |

156| `url` | `url`, `ref`, `sha` | Tout référentiel git par URL |156| `url` | `url`, `ref`, `sha` | Tout référentiel git par URL |

157| `git-subdir` | `url`, `path`, `ref`, `sha` | Un sous-répertoire d'un référentiel git, récupéré avec un clone partiel clairsemé |157| `git-subdir` | `url`, `path`, `ref`, `sha` | Un sous-répertoire d'un dépôt git, récupéré avec un sparse checkout |

158| `npm` | `package`, `version`, `registry` | Package npm, récupéré avec votre client npm et décompressé sans exécuter les scripts d'installation |158| `npm` | `package`, `version`, `registry` | Package du registre npm ou lien vers un tarball, récupéré avec votre client npm et décompressé sans exécuter les scripts d'installation |

159| `archive` | `url`, `sha256` | Archive Zip sur HTTPS. Nécessite Claude Code v2.1.224 ou ultérieure |159| `archive` | `url`, `sha256` | Archive Zip sur HTTPS. Nécessite Claude Code v2.1.224 ou ultérieure |

160| `command` | `command`, `timeout`, `mode` | Répertoire imprimé par une commande que Claude Code exécute sur la machine de l'utilisateur. Nécessite Claude Code v2.1.229 ou ultérieure |160| `command` | `command`, `timeout`, `mode` | Répertoire imprimé par une commande que Claude Code exécute sur la machine de l'utilisateur. Nécessite Claude Code v2.1.229 ou ultérieure |

161 161 


239 Source de plugin git-subdir239 Source de plugin git-subdir

240</h3>240</h3>

241 241 

242`url` accepte une URL git complète ou le raccourci GitHub `owner/repo`. `path` est le sous-répertoire qui contient le plugin, et Claude Code télécharge uniquement ce sous-répertoire.242`url` accepte une URL git complète ou le raccourci GitHub `owner/repo`. `path` est le sous-répertoire qui contient le plugin, et Claude Code extrait uniquement ce sous-répertoire. Avec une URL `https` ou SSH, Claude Code demande au serveur un clone partiel, de sorte qu'à partir d'un hôte qui prend en charge les clones partiels, un plugin situé dans un grand monorepo s'installe sans télécharger le reste du dépôt.

243 243 

244```json theme={null}244```json theme={null}

245{245{


258 258 

259Une source `npm` prend ces champs :259Une source `npm` prend ces champs :

260 260 

261* `package` : un nom de package, ou un nom scopé tel que `@your-org/formatter`261* `package` : un nom de package du registre tel que `@your-org/formatter`, un nom suivi d'une version tel que `@your-org/formatter@2.0.0`, ou un lien `https` vers le fichier tarball du package

262* `version` : une version ou une plage262* `version` : une version, une plage semver ou un dist-tag, utilisé lorsque `package` est un nom de package sans version ajoutée. Omettez-le pour récupérer `latest`

263* `registry` : une URL de registre pour un package qui n'est pas sur le registre par défaut263* `registry` : une URL de registre pour un package qui n'est pas sur le registre par défaut

264 264 

265Claude Code récupère le package avec votre client npm. Les scripts d'installation du package, tels que `preinstall` ou `postinstall`, ne s'exécutent jamais, et ses dépendances ne sont pas installées lors de la récupération. Si le package a un fichier de verrouillage supporté à côté de son `package.json`, Claude Code installe ces [dépendances de package Node.js](/docs/fr/plugins/loading#node-js-package-dependencies) dans une étape séparée, également avec les scripts désactivés.265Claude Code récupère le package avec votre client npm. Les scripts d'installation du package, tels que `preinstall` ou `postinstall`, ne s'exécutent jamais, et ses dépendances ne sont pas installées lors de la récupération. Si le package a un fichier de verrouillage supporté à côté de son `package.json`, Claude Code installe ces [dépendances de package Node.js](/docs/fr/plugins/loading#node-js-package-dependencies) dans une étape séparée, également avec les scripts désactivés.

266 266 

267Claude Code vérifie la valeur `package` avant de récupérer quoi que ce soit. Une valeur refusée fait échouer l'installation avec un message qui nomme la valeur et la raison. Les valeurs refusées incluent :

268 

269* **Une adresse git, un dossier ou un chemin `file:`, ou un alias `npm:`** : utilisez une [source `github`, `url` ou `git-subdir`](#plugin-sources) pour un dépôt git, un chemin relatif pour un dossier dans la marketplace, et le nom propre du package pour un alias

270* **Un lien tarball sur github.com, gist.github.com, gitlab.com, bitbucket.org ou git.sr.ht** : refusé même lorsque le lien est un téléchargement de release GitHub, sauf s'il s'agit d'un lien vers le registre npm GitLab sous `gitlab.com/api/v4/`

271* **Un lien tarball via `http`** : refusé sauf s'il pointe vers le registre npm par défaut de l'utilisateur qui effectue l'installation

272 

273L'URL `registry` doit utiliser `https`, sauf s'il s'agit du registre npm par défaut de l'utilisateur qui effectue l'installation. Avec tout autre registre `http`, l'installation échoue avant que npm ne le contacte.

274 

267```json theme={null}275```json theme={null}

268{276{

269 "name": "formatter",277 "name": "formatter",

Details

67 Un utilisateur qui s'authentifie avec une clé API, ou via Amazon Bedrock, la plateforme Agent de Google Cloud, ou Microsoft Foundry, n'obtient la garde que sur une machine qui a des paramètres gérés.67 Un utilisateur qui s'authentifie avec une clé API, ou via Amazon Bedrock, la plateforme Agent de Google Cloud, ou Microsoft Foundry, n'obtient la garde que sur une machine qui a des paramètres gérés.

68* **La garde protège ce que vous gérez.** Le mod d'un utilisateur ne peut pas changer ce que vos hooks gérés reçoivent ou décident, l'invite système, votre `CLAUDE.md` géré et autres instructions gérées, ce que n'importe quel mod lit comme paramètres, ou les outils et descriptions de vos serveurs MCP gérés.68* **La garde protège ce que vous gérez.** Le mod d'un utilisateur ne peut pas changer ce que vos hooks gérés reçoivent ou décident, l'invite système, votre `CLAUDE.md` géré et autres instructions gérées, ce que n'importe quel mod lit comme paramètres, ou les outils et descriptions de vos serveurs MCP gérés.

69* **Tout le reste est autorisé.** La garde n'ajoute aucune autre restriction. Le mod d'un utilisateur peut toujours lire et écrire des fichiers, démarrer des processus, faire des demandes réseau, réécrire les appels d'outils et les invites, refuser un appel d'outil, approuver un qui demanderait autrement, et dessiner dans l'interface, tout avec les permissions de cet utilisateur.69* **Tout le reste est autorisé.** La garde n'ajoute aucune autre restriction. Le mod d'un utilisateur peut toujours lire et écrire des fichiers, démarrer des processus, faire des demandes réseau, réécrire les appels d'outils et les invites, refuser un appel d'outil, approuver un qui demanderait autrement, et dessiner dans l'interface, tout avec les permissions de cet utilisateur.

70* **Les règles de refus et vos hooks gérés ont la priorité.** Là où la garde se charge, le mod d'un utilisateur ne peut pas approuver un appel qu'une règle `deny` refuse, quel que soit le fichier de paramètres qui contient la règle. Un bloc d'un hook `PreToolUse` dans les paramètres gérés est aussi final. Les deux s'appliquent aux appels d'outils de Claude. Aucun ne s'applique aux appels [`$.fs` et `$.process` propres à un mod](/docs/fr/plugins/mods/api#reach-files-processes-and-the-network) : avec `Read(.env)` refusé, un mod peut toujours lire ce fichier avec `$.fs.read` ou démarrer un programme qui le fait. Pour limiter ces appels, empêchez le mod de se charger ou accrochez l'appel dans un [mod de politique](#enforce-a-policy-with-a-mod-of-your-own).70* **Les règles de refus et vos hooks gérés ont la priorité.** Là où la garde se charge, le mod d'un utilisateur ne peut pas approuver un appel qu'une règle `deny` refuse, quel que soit le fichier de paramètres qui contient la règle. Un blocage d'un hook `PreToolUse` dans les paramètres gérés est aussi final. Les deux s'appliquent aux appels d'outils de Claude. Aucun ne s'applique aux appels [`$.fs` et `$.process` propres à un mod](/docs/fr/plugins/mods/api#reach-files-processes-and-the-network) : avec `Read(.env)` refusé, un mod peut toujours lire ce fichier avec `$.fs.read` ou démarrer un programme qui le fait. Pour limiter ces appels, empêchez le mod de se charger ou gérez l'appel dans un [mod de politique](#enforce-a-policy-with-a-mod-of-your-own).

71* **Les autres vérifications de permission peuvent être contournées.** Le mod d'un utilisateur qui approuve les appels d'outils peut approuver un appel qu'une règle `ask` demanderait, ou qu'un hook `PreToolUse` en dehors des paramètres gérés a bloqué. En mode auto, un appel que le mod approuve s'exécute sans vérification de classificateur.71* **Les autres vérifications de permission peuvent être contournées.** Le mod d'un utilisateur qui approuve les appels d'outils peut approuver un appel qu'une règle `ask` demanderait, ou qu'un hook `PreToolUse` en dehors des paramètres gérés a bloqué. En mode auto, un appel que le mod approuve s'exécute sans vérification de classificateur.

72 72 

73La source de la garde est publique dans le [répertoire `mods/sec-default` du référentiel Claude Code](https://github.com/anthropics/claude-code/tree/main/mods/sec-default).73La source de la garde est publique dans le [répertoire `mods/sec-default` du référentiel Claude Code](https://github.com/anthropics/claude-code/tree/main/mods/sec-default).


161* **`allowManagedModsOnly`** : une option sur la garde intégrée. Les mods des utilisateurs ne se chargent pas, et leurs hooks de paramètres, lignes d'état, et `/goal` continuent de fonctionner. [Arrêter le chargement des mods installés par les utilisateurs](#stop-user-installed-mods-from-loading) liste ce qu'il couvre.161* **`allowManagedModsOnly`** : une option sur la garde intégrée. Les mods des utilisateurs ne se chargent pas, et leurs hooks de paramètres, lignes d'état, et `/goal` continuent de fonctionner. [Arrêter le chargement des mods installés par les utilisateurs](#stop-user-installed-mods-from-loading) liste ce qu'il couvre.

162* **`allowManagedHooksOnly`** : un paramètre plus large. Seuls [les mods de votre organisation](#install-your-organizations-mods) et les mods intégrés à Claude Code se chargent. Un mod qu'un utilisateur a installé lui-même ne se charge pas. Le paramètre bloque aussi les hooks dans les fichiers de paramètres propres des utilisateurs. Lisez [Ce qui s'exécute sous `allowManagedHooksOnly`](/docs/fr/settings-reference#what-runs-under-allowmanagedhooksonly) avant de le définir.162* **`allowManagedHooksOnly`** : un paramètre plus large. Seuls [les mods de votre organisation](#install-your-organizations-mods) et les mods intégrés à Claude Code se chargent. Un mod qu'un utilisateur a installé lui-même ne se charge pas. Le paramètre bloque aussi les hooks dans les fichiers de paramètres propres des utilisateurs. Lisez [Ce qui s'exécute sous `allowManagedHooksOnly`](/docs/fr/settings-reference#what-runs-under-allowmanagedhooksonly) avant de le définir.

163* **`disableAllHooks`** : le paramètre le plus large. Dans les paramètres gérés, il arrête les mods dans chaque plugin installé, y compris les vôtres, et désactive chaque hook dans les fichiers de paramètres, donc un hook `PreToolUse` dans vos paramètres gérés ne bloque plus rien. Les lignes d'état personnalisées et `/goal` cessent aussi de fonctionner. Lisez [`disableAllHooks`](/docs/fr/settings-reference#disableallhooks) avant de le définir.163* **`disableAllHooks`** : le paramètre le plus large. Dans les paramètres gérés, il arrête les mods dans chaque plugin installé, y compris les vôtres, et désactive chaque hook dans les fichiers de paramètres, donc un hook `PreToolUse` dans vos paramètres gérés ne bloque plus rien. Les lignes d'état personnalisées et `/goal` cessent aussi de fonctionner. Lisez [`disableAllHooks`](/docs/fr/settings-reference#disableallhooks) avant de le définir.

164* **`disableSideloadFlags`** : rejette `--plugin-dir` et `--plugin-url` au démarrage, donc personne ne charge un mod à partir d'un répertoire, et empêche les mods que Claude écrit pendant une session de se charger. Le paramètre rejette aussi `--agents` et `--mcp-config`. Lisez [`disableSideloadFlags`](/docs/fr/settings-reference#disablesideloadflags) avant de le définir.164* **`disableSideloadFlags`** : rejette `--plugin-dir` et `--plugin-url` au démarrage, et empêche les mods que Claude écrit pendant une session de se charger. Le paramètre rejette aussi `--agents` et `--mcp-config`. Lisez [`disableSideloadFlags`](/docs/fr/settings-reference#disablesideloadflags) avant de le définir.

165 165 

166Les mods intégrés à Claude Code, comme le support `AGENTS.md`, ne sont pas affectés par ces paramètres. Chacun a [son propre commutateur](/docs/fr/plugins/mods/overview#mods-built-into-claude-code).166Les mods intégrés à Claude Code, comme le support `AGENTS.md`, ne sont pas affectés par ces paramètres. Chacun a [son propre commutateur](/docs/fr/plugins/mods/overview#mods-built-into-claude-code).

167 167 

168Un utilisateur dont le mod ne s'est pas chargé trouve la raison dans son journal de débogage. [Messages de refus](/docs/fr/plugins/mods/troubleshoot#refusal-messages) liste les lignes pour `allowManagedHooksOnly` et `disableAllHooks`, et [Messages de la garde intégrée](/docs/fr/plugins/mods/troubleshoot#messages-from-the-built-in-guard) a la ligne pour `allowManagedModsOnly`.168Un utilisateur dont le mod ne s'est pas chargé trouve la raison dans son journal de débogage. [Messages de refus](/docs/fr/plugins/mods/troubleshoot#refusal-messages) liste les lignes pour `allowManagedHooksOnly` et `disableAllHooks`, et [Messages de la garde intégrée](/docs/fr/plugins/mods/troubleshoot#messages-from-the-built-in-guard) a la ligne pour `allowManagedModsOnly`.

169 169 

170<h3 id="allow-only-your-organization’s-mods">

171 Autoriser uniquement les mods de votre organisation

172</h3>

173 

174Pour exécuter les mods de votre organisation et bloquer ceux qu'apportent les utilisateurs, déployez les paramètres de la ligne **Uniquement les mods de votre organisation** du [tableau des politiques](#choose-how-much-to-allow), plus `disableSideloadFlags`. Avec ce fichier `managed-settings.json` complet, Claude Code refuse les mods propres des utilisateurs, de sorte qu'aucun de leurs hooks ne s'exécute, et votre mod de politique s'exécute avant les autres mods :

175 

176```json managed-settings.json theme={null}

177{

178 "extraKnownMarketplaces": {

179 "acme-tools": {

180 "source": { "source": "directory", "path": "/opt/acme/claude-plugins" }

181 }

182 },

183 "enabledPlugins": { "acme-guard@acme-tools": true },

184 "prependPlugins": ["acme-guard@acme-tools", "sec-default@builtin"],

185 "pluginConfigs": {

186 "cc-plugin-sec-default@builtin": {

187 "options": { "allowManagedModsOnly": true }

188 }

189 },

190 "disableSideloadFlags": true

191}

192```

193 

194Chaque groupe de clés remplit une fonction :

195 

196* **`extraKnownMarketplaces`, `enabledPlugins` et `prependPlugins`** : installent votre mod pour qu'il compte comme le vôtre, et l'exécutent en premier avec la garde après lui. [Installer les mods de votre organisation et définir l'ordre](#install-your-organizations-mods) couvre le répertoire vers lequel pointent ces clés.

197* **`pluginConfigs`** : définit l'option `allowManagedModsOnly` de la garde, pour que Claude Code refuse les mods propres des utilisateurs. Leurs hooks de paramètres, barres de statut et `/goal` continuent de fonctionner.

198* **`disableSideloadFlags`** : consultez [`disableSideloadFlags`](/docs/fr/settings-reference#disablesideloadflags) pour les flags qu'il rejette au démarrage

199 

200Pour confirmer la politique sur une machine de test, démarrez dans votre shell une session avec `claude --debug` et lisez le journal de débogage :

201 

202* **Votre mod** : sa ligne `hooks module` contient `tier prepend`

203* **Un mod installé par l'utilisateur** : une ligne indique `refused by cc-plugin-sec-default: mods are limited to your organization's by policy (allowManagedModsOnly)`. Une ligne antérieure indique que le module de hooks de ce mod est `loaded`, donc cherchez le refus.

204* **Un répertoire de plugin** : `claude --plugin-dir ./any-mod` se termine avec un message qui commence par `--plugin-dir is disabled by your organization's managed settings (disableSideloadFlags)`

205 

206Pour limiter aussi les marketplaces que les utilisateurs peuvent ajouter, combinez ce fichier avec vos [restrictions de marketplace](/docs/fr/plugins/org#restrict-what-users-can-install).

207 

208<h3 id="apply-your-plugin-controls-to-mods">

209 Appliquer vos contrôles de plugins aux mods

210</h3>

211 

212Un mod est un plugin, donc les façons dont vous [gérez les plugins pour votre organisation](/docs/fr/plugins/org) s'appliquent aussi à un plugin qui contient un mod :

213 

214* **Voir quels plugins se chargent sur l'ensemble de votre parc** : [Auditer et examiner](/docs/fr/plugins/org#audit-and-review)

215* **Décider quand un plugin que vous avez examiné peut se mettre à jour** : [Définir la politique de mise à jour](/docs/fr/plugins/org#set-update-policy)

216* **Donner à un groupe une politique différente, comme un pilote** : [Prévoir ce que les paramètres gérés ne peuvent pas imposer](/docs/fr/plugins/org#plan-for-what-managed-settings-can’t-enforce)

217* **Vérifier quelles applications et quels types de session appliquent les clés de plugin** : [Quand chaque surface applique les clés de plugin](/docs/fr/plugins/org#when-each-surface-applies-the-plugin-keys)

218* **Configurer la CI et les conteneurs** : [Préparer les conteneurs et la CI](/docs/fr/plugins/org#seed-containers-and-ci)

219* **Proposer des mods que vos utilisateurs peuvent installer** : [Héberger une marketplace](/docs/fr/plugins/host-marketplace). Un mod que Claude Code copie depuis une source GitHub, git, URL ou npm compte comme celui d'un utilisateur, et non comme [celui de votre organisation](#install-your-organizations-mods).

220 

170<h3 id="set-options-on-the-built-in-guard">221<h3 id="set-options-on-the-built-in-guard">

171 Définir les options sur la garde intégrée222 Définir les options sur la garde intégrée

172</h3>223</h3>

173 224 

174La garde intégrée prend deux options. Définissez-les dans les paramètres gérés sous `pluginConfigs`, indexées par `cc-plugin-sec-default@builtin`, comme l'exemple dans [Arrêter le chargement des mods installés par les utilisateurs](#stop-user-installed-mods-from-loading) le fait.225La garde intégrée prend des options. Définissez-les dans les paramètres gérés sous `pluginConfigs`, indexées par `cc-plugin-sec-default@builtin`, comme l'exemple dans [Arrêter le chargement des mods installés par les utilisateurs](#stop-user-installed-mods-from-loading) le fait.

175 226 

176Le tableau donne ce que vos utilisateurs obtiennent avec chaque option non définie et avec elle définie à `true` :227Le tableau donne ce que vos utilisateurs obtiennent avec chaque option non définie et avec elle définie à `true` :

177 228 


199 Installer les mods de votre organisation et définir l'ordre250 Installer les mods de votre organisation et définir l'ordre

200</h3>251</h3>

201 252 

202Les mods de votre organisation se chargent là où les mods des utilisateurs ne le font pas et peuvent s'exécuter avant eux, donc Claude Code doit pouvoir dire qu'un mod vient de vous. Il traite un mod comme celui de votre organisation uniquement quand tous ceux-ci sont vrais :253Les mods de votre organisation se chargent là où les mods des utilisateurs ne le font pas et peuvent s'exécuter avant eux, donc Claude Code doit pouvoir déterminer qu'un mod vient de vous. Il traite un mod comme celui de votre organisation uniquement quand toutes ces conditions sont remplies :

203 254 

204* Les `enabledPlugins` gérés définissent le plugin du mod à `true`255* Les `enabledPlugins` gérés définissent le plugin du mod à `true`

205* Les paramètres gérés nomment la [place de marché](/docs/fr/plugins/create-marketplace) du plugin comme un répertoire sur la machine de l'utilisateur, par chemin absolu. Une entrée `extraKnownMarketplaces` le fait et enregistre aussi la place de marché pour l'utilisateur.256* Les paramètres gérés désignent la [marketplace](/docs/fr/plugins/create-marketplace) du plugin comme un répertoire sur la machine de l'utilisateur, par chemin absolu. Une entrée `extraKnownMarketplaces` le fait et enregistre aussi la marketplace pour l'utilisateur.

206* La place de marché liste le plugin par un chemin relatif, donc Claude Code le [charge sur place](/docs/fr/plugins/loading#in-place-and-copied-plugins) à partir de ce répertoire257* La marketplace liste le plugin par un chemin relatif, donc Claude Code le [charge sur place](/docs/fr/plugins/loading#in-place-and-copied-plugins) à partir de ce répertoire

207 258 

208Pour les respecter, faites en sorte que votre gestion d'appareils copie le répertoire de la place de marché au même chemin sur chaque machine. Rendez le répertoire et chaque répertoire au-dessus de lui inscriptibles uniquement par un administrateur, comme le fichier de paramètres gérés l'est. Quiconque peut écrire là-bas peut réécrire votre mod. Les paramètres gérés que vous livrez à partir de la console d'administration claude.ai peuvent porter les clés, mais ils ne peuvent pas mettre le répertoire sur une machine.259Pour les remplir, faites en sorte que votre gestion d'appareils copie le répertoire de la marketplace au même chemin sur chaque machine. Rendez le répertoire et chaque répertoire au-dessus de lui inscriptibles uniquement par un administrateur, comme l'est le fichier de paramètres gérés. Quiconque peut écrire à cet endroit peut réécrire votre mod. Les paramètres gérés que vous livrez à partir de la console d'administration claude.ai peuvent porter les clés, mais ils ne peuvent pas placer le répertoire sur une machine.

209 260 

210Le répertoire contient le manifeste de la place de marché et le plugin :261Le répertoire contient le manifeste de la marketplace et le plugin :

211 262 

212```text theme={null}263```text theme={null}

213/opt/acme/claude-plugins/264/opt/acme/claude-plugins/


234}285}

235```286```

236 287 

237Un plugin que Claude Code copie dans son cache compte comme celui d'un utilisateur, même quand les `enabledPlugins` gérés l'activent. Cela couvre chaque plugin à partir d'une source GitHub, git, URL, ou npm. Son mod s'exécute parmi les mods des utilisateurs, `prependPlugins` et `appendPlugins` le sautent, et il ne se charge pas sous `allowManagedModsOnly` ou `allowManagedHooksOnly`. Le journal de débogage de l'utilisateur a une ligne qui commence par l'id du plugin et `is enabled by managed settings, but`.288Un plugin que Claude Code copie dans son cache compte comme celui d'un utilisateur, même quand les `enabledPlugins` gérés l'activent. Cela couvre chaque plugin provenant d'une source GitHub, git, URL ou npm. Son mod s'exécute parmi les mods des utilisateurs, `prependPlugins` et `appendPlugins` l'ignorent, et il ne se charge pas sous `allowManagedModsOnly` ou `allowManagedHooksOnly`. Le journal de débogage de l'utilisateur contient une ligne qui commence par l'id du plugin et `is enabled by managed settings, but`.

238 289 

239Claude Code lève un événement chaque fois qu'il est sur le point d'agir, comme exécuter un outil, et le passe à chaque mod à tour de rôle. Un mod qui compte comme le vôtre [s'exécute avant les mods des utilisateurs](/docs/fr/plugins/mods/events#the-order-mods-run-in) même quand vous ne le listez nulle part. Pour définir sa place, listez son id dans l'un de deux paramètres. L'id est le nom du plugin, `@`, et le nom de la place de marché, comme `acme-guard@acme-tools`.290Claude Code déclenche un événement chaque fois qu'il est sur le point d'agir, comme exécuter un outil, et le passe à chaque mod à tour de rôle. Un mod qui compte comme le vôtre [s'exécute avant les mods des utilisateurs](/docs/fr/plugins/mods/events#the-order-mods-run-in) même quand vous ne le listez nulle part. Pour définir sa place, listez son id dans l'un de deux paramètres. L'id est le nom du plugin, `@`, et le nom de la marketplace, comme `acme-guard@acme-tools`.

240 291 

241* **`prependPlugins`** : votre mod voit chaque événement avant n'importe quel mod d'utilisateur et chaque résultat après. Il peut changer l'événement, le refuser, ou sauter les mods des utilisateurs.292* **`prependPlugins`** : votre mod voit chaque événement avant n'importe quel mod d'utilisateur et chaque résultat après. Il peut modifier l'événement, le refuser, ou ignorer les mods des utilisateurs.

242* **`appendPlugins`** : votre mod s'exécute après chaque mod d'utilisateur, donc il voit uniquement les événements que ces mods transmettent, sous la forme qu'ils les transmettent293* **`appendPlugins`** : votre mod s'exécute après chaque mod d'utilisateur, donc il voit uniquement les événements que ces mods transmettent, sous la forme dans laquelle ils les transmettent

243 294 

244Cet exemple déclare la place de marché `acme-tools` à `/opt/acme/claude-plugins`, active `acme-guard` à partir de celle-ci, et exécute ce mod en premier, avec la garde intégrée après :295Cet exemple déclare la marketplace `acme-tools` à `/opt/acme/claude-plugins`, active `acme-guard` à partir de celle-ci, et exécute ce mod en premier, avec la garde intégrée après lui :

245 296 

246```json managed-settings.json theme={null}297```json managed-settings.json theme={null}

247{298{


255}306}

256```307```

257 308 

258Chaque clé fait un travail :309Chaque clé a un rôle précis :

259 310 

260* **`extraKnownMarketplaces`** : nomme le répertoire qui contient la place de marché `acme-tools`. `path` est le chemin absolu du répertoire qui contient `.claude-plugin/marketplace.json`.311* **`extraKnownMarketplaces`** : désigne le répertoire qui contient la marketplace `acme-tools`. `path` est le chemin absolu du répertoire qui contient `.claude-plugin/marketplace.json`.

261* **`enabledPlugins`** : active `acme-guard` pour chaque utilisateur qui reçoit ces paramètres gérés312* **`enabledPlugins`** : active `acme-guard` pour chaque utilisateur qui reçoit ces paramètres gérés

262* **`prependPlugins`** : met `acme-guard` en premier et la garde intégrée en deuxième, tous deux avant n'importe quel mod qu'un utilisateur installe. Claude Code suit l'ordre que vous listez.313* **`prependPlugins`** : place `acme-guard` en premier et la garde intégrée en deuxième, tous deux avant n'importe quel mod qu'un utilisateur installe. Claude Code suit l'ordre que vous listez.

263 314 

264Pour confirmer qu'une machine d'utilisateur a reçu les paramètres, voir [Vérifier qu'une politique est en vigueur](/docs/fr/managed-settings#check-that-a-policy-is-in-force).315Pour confirmer qu'une machine d'utilisateur a reçu les paramètres, consultez [Vérifier qu'une politique est en vigueur](/docs/fr/managed-settings#check-that-a-policy-is-in-force).

265 316 

266Pour confirmer où le mod s'exécute, démarrez une session sur cette machine avec `claude --debug` et recherchez dans le [journal de débogage](/docs/fr/plugins/mods/troubleshoot#read-the-debug-log) l'id du mod :317Pour confirmer où le mod s'exécute, démarrez une session sur cette machine avec `claude --debug` et recherchez l'id du mod dans le [journal de débogage](/docs/fr/plugins/mods/troubleshoot#read-the-debug-log) :

267 318 

268* **`hooks module acme-guard@acme-tools loaded`, avec `tier prepend`** : le mod compte comme celui de votre organisation et s'exécute en premier319* **`hooks module acme-guard@acme-tools loaded`, avec `tier prepend`** : le mod compte comme celui de votre organisation et s'exécute en premier

269* **La même ligne avec `tier user`** : Claude Code le traite comme un mod d'utilisateur. Une deuxième ligne, `prependPlugins names acme-guard@acme-tools, which is not an enabled managed plugin with a hooks module; skipped`, dit que la liste l'a sauté.320* **La même ligne avec `tier user`** : Claude Code le traite comme un mod d'utilisateur. Une deuxième ligne, `prependPlugins names acme-guard@acme-tools, which is not an enabled managed plugin with a hooks module; skipped`, indique que la liste l'a ignoré.

270 321 

271Ces règles décident quels ids dans les deux listes prennent effet :322Ces règles déterminent quels ids des deux listes prennent effet :

272 323 

273* **La liste remplace la valeur par défaut** : quand vous définissez `prependPlugins` dans les paramètres gérés, nommez `sec-default@builtin` dans celle-ci pour garder la garde intégrée. La garde est intégrée et n'a besoin d'aucune entrée `enabledPlugins`.324* **La liste remplace la valeur par défaut** : quand vous définissez `prependPlugins` dans les paramètres gérés, indiquez-y `sec-default@builtin` pour conserver la garde intégrée. La garde est intégrée et n'a besoin d'aucune entrée `enabledPlugins`.

274* **Vos propres ids doivent compter comme les vôtres** : dans les paramètres gérés, Claude Code saute un id dont le plugin ne respecte pas les trois conditions pour un mod d'organisation325* **Vos propres ids doivent compter comme les vôtres** : dans les paramètres gérés, Claude Code ignore un id dont le plugin ne remplit pas les conditions d'un mod d'organisation

275* **Les référentiels ne peuvent pas les définir** : Claude Code lit les deux paramètres uniquement à partir des paramètres gérés et jamais à partir du fichier de paramètres d'un référentiel. Un utilisateur peut les définir dans `~/.claude/settings.json` pour ordonner uniquement ses propres mods sur une machine sans paramètres gérés, et uniquement quand il n'est pas connecté avec un plan Team ou Enterprise. N'importe où ailleurs, Claude Code ignore les deux clés dans les paramètres utilisateur. Une liste là-bas n'ajoute ni ne supprime la garde intégrée.326* **Les dépôts ne peuvent pas les définir** : Claude Code lit les deux paramètres à partir des paramètres gérés et jamais à partir du fichier de paramètres d'un dépôt. Un utilisateur peut les définir dans `~/.claude/settings.json` pour ordonner ses propres mods uniquement sur une machine sans paramètres gérés, et uniquement quand il n'est pas connecté avec un plan Team ou Enterprise. Partout ailleurs, Claude Code ignore les deux clés dans les paramètres utilisateur. Une liste à cet endroit n'ajoute ni ne supprime la garde intégrée.

276 327 

277<h3 id="enforce-a-policy-with-a-mod-of-your-own">328<h3 id="enforce-a-policy-with-a-mod-of-your-own">

278 Appliquer une politique avec un mod de votre côté329 Appliquer une politique avec un mod de votre côté

279</h3>330</h3>

280 331 

281Pour empêcher tous les mods d'un utilisateur de se charger, vous n'avez pas besoin d'un mod de votre côté. Définissez [`allowManagedModsOnly`](#stop-user-installed-mods-from-loading). Écrivez un mod de politique quand vous voulez admettre certains mods d'utilisateurs et en refuser d'autres, ou pour enregistrer ce que les mods font.332Pour empêcher tous les mods des utilisateurs de se charger, vous n'avez pas besoin d'un mod de votre côté. Définissez [`allowManagedModsOnly`](#stop-user-installed-mods-from-loading). Écrivez un mod de politique quand vous voulez autoriser certains mods d'utilisateurs et en refuser d'autres, ou pour consigner ce que font les mods.

282 333 

283Chaque fois qu'un autre mod est sur le point de se charger, votre mod reçoit la liste que `claude plugin validate` imprime, dans un événement nommé [`plugin.register`](/docs/fr/plugins/mods/reference#other-mods). Un mod dans `prependPlugins` peut lire cette liste et refuser le mod. Il peut aussi [accrocher n'importe quel appel de l'API des mods par nom](/docs/fr/plugins/mods/api#reach-files-processes-and-the-network) pour enregistrer ou refuser cet appel pour tous les autres mods. Le nom est la méthode sans le `$.`, donc un crochet sur `fs.write` voit chaque appel `$.fs.write`.334Chaque fois qu'un autre mod est sur le point de se charger, votre mod reçoit la liste que `claude plugin validate` affiche, dans un événement nommé [`plugin.register`](/docs/fr/plugins/mods/reference#other-mods). Un mod dans `prependPlugins` peut lire cette liste et refuser le mod. Il peut aussi [intercepter n'importe quel appel de l'API des mods par son nom](/docs/fr/plugins/mods/api#reach-files-processes-and-the-network) pour consigner ou refuser cet appel pour tous les autres mods. Le nom est la méthode sans le `$.`, donc un hook sur `fs.write` voit chaque appel `$.fs.write`.

284 335 

285Ce mod de politique refuse n'importe quel mod d'utilisateur dont le propre code appelle `$.process.run` ou `$.process.spawn`. Il garde aussi un journal d'audit, écrivant chaque appel d'outil et chaque fichier qu'un mod écrit dans le journal de débogage. Parce qu'il s'exécute en premier, le journal enregistre ce qui a été demandé, avant que n'importe quel mod d'utilisateur ne le change. Enregistrez-le comme `acme-guard/hooks/register.js` :336Ce mod de politique refuse tout mod d'utilisateur dont le propre code appelle `$.process.run` ou `$.process.spawn`. Il tient aussi un journal d'audit, en écrivant dans le journal de débogage chaque appel d'outil et chaque fichier qu'un mod écrit. Comme il s'exécute en premier, le journal consigne ce qui a été demandé, avant qu'un mod d'utilisateur ne le modifie. Enregistrez-le sous `acme-guard/hooks/register.js` :

286 337 

287```javascript acme-guard/hooks/register.js theme={null}338```javascript acme-guard/hooks/register.js theme={null}

288// Les méthodes qu'aucun mod d'utilisateur ne peut appeler, chacune orthographiée namespace.method339// The methods no user's mod may call, each spelled namespace.method

289const BLOCKED_CALLS = ['process.run', 'process.spawn']340const BLOCKED_CALLS = ['process.run', 'process.spawn']

290 341 

291export function register(on) {342export function register(on) {

292 // S'exécute chaque fois qu'un autre mod est sur le point de se charger343 // Runs each time another mod is about to load

293 on('plugin.register', async ($, e, next) => {344 on('plugin.register', async ($, e, next) => {

294 // Gardez les appels dans le code de ce mod qui sont sur la liste bloquée345 // Keep the calls in that mod's code that are on the blocked list

295 const blocked = e.uses.calls.filter((call) => BLOCKED_CALLS.includes(call))346 const blocked = e.uses.calls.filter((call) => BLOCKED_CALLS.includes(call))

296 if (e.tier === 'user' && blocked.length > 0) {347 if (e.tier === 'user' && blocked.length > 0) {

297 // Retourner refuse empêche le mod de se charger, et le texte est la raison348 // Returning refuse keeps the mod from loading, and the text is the reason

298 return { refuse: 'Acme policy: mods may not call ' + blocked.join(', ') }349 return { refuse: 'Acme policy: mods may not call ' + blocked.join(', ') }

299 }350 }

300 // Laissez tous les autres mods se charger351 // Let every other mod load

301 return next(e)352 return next(e)

302 })353 })

303 354 

304 // Enregistrez chaque appel d'outil, puis laissez-le continuer inchangé355 // Record each tool call, then let it go ahead unchanged

305 on('tool.call', async ($, e, next) => {356 on('tool.call', async ($, e, next) => {

306 $.ui.log('audit tool.call ' + e.tool, { to: 'debug' })357 $.ui.log('audit tool.call ' + e.tool, { to: 'debug' })

307 return next(e)358 return next(e)

308 })359 })

309 360 

310 // Enregistrez quel mod a écrit un fichier, puis le chemin, entre guillemets car le mod l'a choisi361 // Record which mod wrote a file, then the path, quoted because the mod chose it

311 on('fs.write', async ($, e, next) => {362 on('fs.write', async ($, e, next) => {

312 $.ui.log('audit fs.write by ' + next.origin.plugin + ' ' + JSON.stringify(e.path), { to: 'debug' })363 $.ui.log('audit fs.write by ' + next.origin.plugin + ' ' + JSON.stringify(e.path), { to: 'debug' })

313 return next(e)364 return next(e)


315}366}

316```367```

317 368 

318Le fichier enregistre trois crochets :369Le fichier enregistre trois hooks :

319 370 

320* **`plugin.register`** : décide si un autre mod se charge. Il refuse un mod d'utilisateur qui appelle une méthode bloquée et transmet tous les autres mods.371* **`plugin.register`** : décide si un autre mod se charge. Il refuse un mod d'utilisateur qui appelle une méthode bloquée et transmet tous les autres mods.

321* **`tool.call`** : écrit une ligne comme `audit tool.call Bash` dans le journal de débogage pour chaque appel d'outil, et ne change rien372* **`tool.call`** : écrit une ligne comme `audit tool.call Bash` dans le journal de débogage pour chaque appel d'outil, et ne modifie rien

322* **`fs.write`** : écrit une ligne comme `audit fs.write by reader "/tmp/notes.md"` pour chaque appel `$.fs.write` qu'un autre mod fait, et ne change rien. Le nom du mod vient en premier et le chemin est entre guillemets, donc un chemin qu'un mod choisit ne peut pas passer pour un autre champ de la ligne.373* **`fs.write`** : écrit une ligne comme `audit fs.write by reader "/tmp/notes.md"` pour chaque appel `$.fs.write` qu'effectue un autre mod, et ne modifie rien. Le nom du mod vient en premier et le chemin est entre guillemets, de sorte qu'un chemin choisi par un mod ne puisse pas se faire passer pour un autre champ de la ligne.

323 374 

324Le crochet `plugin.register` lit deux champs de l'événement :375Le hook `plugin.register` lit deux champs de l'événement :

325 376 

326* **`e.tier`** : où le mod s'exécuterait, l'un de `prepend`, `user`, `append`, ou `builtin`. Chaque mod qu'une personne installe est `user`.377* **`e.tier`** : où le mod s'exécuterait, parmi `prepend`, `user`, `append` ou `builtin`. Chaque mod qu'une personne installe est `user`.

327* **`e.uses.calls`** : les méthodes de l'API des mods que le mod appelle, chacune orthographiée `namespace.method` comme `process.run`, sans le `$.` que `claude plugin validate` imprime378* **`e.uses.calls`** : les méthodes de l'API des mods que le mod appelle, chacune écrite `namespace.method` comme `process.run`, sans le `$.` que `claude plugin validate` affiche

328 379 

329Quand un utilisateur installe un mod qui appelle `$.process.run`, le mod ne se charge pas, et son journal de débogage a une ligne qui se termine par `refused by acme-guard:` et votre raison. Le refus atteint aussi la transcription dans une [session qui recharge à chaud un répertoire de plugin](/docs/fr/plugins/mods/troubleshoot#find-out-why-a-mod-does-nothing). Pour bloquer un appel sans refuser le mod entier, retournez `{ deny: 'your reason' }` d'un crochet sur le nom de cet appel.380Quand un utilisateur installe un mod qui appelle `$.process.run`, le mod ne se charge pas, et son journal de débogage contient une ligne qui se termine par `refused by acme-guard:` suivi de votre raison. Le refus apparaît aussi dans la transcription d'une [session qui recharge à chaud un répertoire de plugin](/docs/fr/plugins/mods/troubleshoot#find-out-why-a-mod-does-nothing). Pour bloquer un appel sans refuser le mod entier, retournez `{ deny: 'your reason' }` depuis un hook sur le nom de cet appel.

330 381 

331Pour envoyer les lignes d'audit quelque part d'autre que le journal de débogage, appelez `$.http.fetch` à partir des mêmes crochets.382Pour envoyer les lignes d'audit ailleurs que dans le journal de débogage, appelez `$.http.fetch` depuis les mêmes hooks.

332 383 

333Une session peut s'exécuter sans votre mod. Si le thread de travail qui exécute les mods installés [plante trois fois](/docs/fr/plugins/mods/troubleshoot#mods-that-run-in-the-hooks-worker-are-off-for-this-session), Claude Code décharge tous les mods qui ne sont pas intégrés, y compris le vôtre, jusqu'à ce que l'utilisateur exécute `/reload-plugins` ou démarre une nouvelle session. Et un utilisateur qui démarre Claude Code avec `--safe-mode` s'exécute sans mods installés, y compris les vôtres.384Une session peut s'exécuter sans votre mod. Si le thread de travail qui exécute les mods installés [plante trois fois](/docs/fr/plugins/mods/troubleshoot#mods-that-run-in-the-hooks-worker-are-off-for-this-session), Claude Code décharge tous les mods qui ne sont pas intégrés, y compris le vôtre, jusqu'à ce que l'utilisateur exécute `/reload-plugins` ou démarre une nouvelle session. Et un utilisateur qui démarre Claude Code avec `--safe-mode` s'exécute sans mods installés, y compris les vôtres.

334 385 

335[Créer un mod](/docs/fr/plugins/mods/create) couvre les fichiers qu'un mod a besoin. [Tester un mod qui juge d'autres mods](/docs/fr/plugins/mods/test#test-a-mod-that-judges-other-mods) a un fichier de test pour ce mod de politique.386[Créer un mod](/docs/fr/plugins/mods/create) couvre les fichiers dont un mod a besoin. [Tester un mod de politique](/docs/fr/plugins/mods/test#test-a-mod-that-judges-other-mods) propose un fichier de test pour ce mod de politique.

336 387 

337<h4 id="refuse-mods-when-your-check-fails">388<h4 id="refuse-mods-when-your-check-fails">

338 Refuser les mods quand votre vérification échoue389 Refuser les mods quand votre vérification échoue

339</h4>390</h4>

340 391 

341Si votre crochet `plugin.register` lève une exception ou dépasse sa limite de temps, Claude Code saute le crochet, donc la vérification échoue ouvertement et le mod qu'il vérifiait se charge. Pour échouer fermé et refuser les mods des utilisateurs, déplacez la vérification dans une fonction nommée et ajoutez un gestionnaire `.catch` qui retourne le refus. Cette version du fichier montre uniquement le crochet `plugin.register`, donc gardez les deux crochets d'audit de la première version dans `register` :392Si votre hook `plugin.register` lève une exception ou dépasse sa limite de temps, Claude Code ignore le hook, donc la vérification échoue en mode ouvert et le mod qu'il vérifiait se charge. Pour échouer en mode fermé et refuser les mods des utilisateurs, déplacez la vérification dans une fonction nommée et ajoutez un gestionnaire `.catch` qui retourne le refus. Cette version du fichier montre uniquement le hook `plugin.register`, donc conservez les deux hooks d'audit de la première version dans `register` :

342 393 

343```javascript acme-guard/hooks/register.js theme={null}394```javascript acme-guard/hooks/register.js theme={null}

344const BLOCKED_CALLS = ['process.run', 'process.spawn']395const BLOCKED_CALLS = ['process.run', 'process.spawn']

345 396 

346// La même vérification qu'avant, déplacée dans sa propre fonction397// The same check as before, moved into a function of its own

347async function checkMod($, e, next) {398async function checkMod($, e, next) {

348 const blocked = e.uses.calls.filter((call) => BLOCKED_CALLS.includes(call))399 const blocked = e.uses.calls.filter((call) => BLOCKED_CALLS.includes(call))

349 if (e.tier === 'user' && blocked.length > 0) {400 if (e.tier === 'user' && blocked.length > 0) {


353}404}

354 405 

355export function register(on) {406export function register(on) {

356 // Le gestionnaire s'exécute uniquement quand checkMod lève une exception ou dépasse sa limite de temps407 // The handler runs only when checkMod throws or exceeds its time limit

357 on('plugin.register', checkMod).catch(async ($, e, next) => {408 on('plugin.register', checkMod).catch(async ($, e, next) => {

358 // Laissez les mods de votre organisation et les mods intégrés se charger409 // Let your organization's mods and built-in mods load

359 if (e.tier !== 'user') return next(e)410 if (e.tier !== 'user') return next(e)

360 // Refusez le mod d'utilisateur qui n'a pas pu être vérifié411 // Refuse the user's mod that couldn't be checked

361 return { refuse: 'Acme policy check failed, so this mod was not loaded' }412 return { refuse: 'Acme policy check failed, so this mod was not loaded' }

362 })413 })

363}414}

364```415```

365 416 

366Avec le gestionnaire en place, un mod qui était en cours de vérification quand la vérification a levé une exception ou a dépassé le délai d'attente ne se charge pas, et la ligne de refus porte la deuxième raison, comme dans `refused by acme-guard: Acme policy check failed, so this mod was not loaded`. Le gestionnaire transmet chaque mod en dehors du tier `user` à `next(e)`, donc une vérification échouée n'arrête pas les mods que votre organisation liste. [Gérer un crochet qui échoue](/docs/fr/plugins/mods/events#handle-a-hook-that-fails) couvre `.catch` pour d'autres événements.417Avec le gestionnaire en place, un mod en cours de vérification au moment où la vérification a levé une exception ou dépassé le délai ne se charge pas, et la ligne de refus porte la deuxième raison, comme dans `refused by acme-guard: Acme policy check failed, so this mod was not loaded`. Le gestionnaire transmet à `next(e)` chaque mod en dehors du tier `user`, donc une vérification échouée n'empêche pas les mods que votre organisation liste. [Gérer un hook qui échoue](/docs/fr/plugins/mods/events#handle-a-hook-that-fails) couvre `.catch` pour les autres événements.

367 418 

368<h2 id="next-steps">419<h2 id="next-steps">

369 Étapes suivantes420 Étapes suivantes

Details

75 Appeler un modèle75 Appeler un modèle

76</h2>76</h2>

77 77 

78Un mod peut poser une question à un modèle de son propre chef, en dehors de la conversation, pour une petite tâche comme trier ou résumer un morceau de texte. `$.model.complete` envoie une invite à un modèle avec les identifiants de votre session et se résout en la réponse. Il n'a pas d'historique de conversation.78Un mod peut poser sa propre question à un modèle, en dehors de la conversation, pour une petite tâche comme trier ou résumer un morceau de texte. `$.model.complete` envoie un prompt unique à un modèle avec les identifiants de votre session et se résout avec la réponse. Il n'a aucun historique de conversation.

79 79 

80Ce hook répond à une commande `/triage`, [enregistrée comme une commande](#add-a-command), en demandant à un petit modèle d'étiqueter le texte tapé après :80Ce hook répond à une commande `/triage`, [enregistrée comme commande](#add-a-command), en demandant à un petit modèle d'étiqueter le texte saisi après celle-ci :

81 81 

82```javascript theme={null}82```javascript theme={null}

83on('command.run', { command: 'triage' }, async ($, e) => {83on('command.run', { command: 'triage' }, async ($, e) => {


96})96})

97```97```

98 98 

99Quand vous exécutez `/triage the export button does nothing`, le mod envoie ce texte au modèle et affiche sa réponse, comme `Label: bug`. La conversation de Claude ne fait pas partie de la demande. Quand le modèle ne répond pas, l'étiquette est `unknown`.99Lorsque vous exécutez `/triage the export button does nothing`, le mod envoie ce texte au modèle et affiche sa réponse, par exemple `Label: bug`. La conversation de Claude ne fait pas partie de la requête. Lorsque le modèle ne répond pas, l'étiquette est `unknown`.

100 100 

101Une défaillance de l'API Claude ne rejette pas l'appel, donc vérifiez `r.isAnswered`, et lisez `r.reason` quand c'est `false`. L'appel rejette seulement pour une demande que Claude Code n'enverra pas, comme un modèle que votre organisation bloque. [Les types pour votre build](/docs/fr/plugins/mods/create#get-the-types-for-your-build) listent les autres options, comme `effort`, et les [limites](/docs/fr/plugins/mods/reference#limits) donnent la valeur par défaut de `maxTokens`.101Un échec de l'API Claude ne fait pas rejeter l'appel : vérifiez donc `r.isAnswered`, et lisez `r.reason` lorsqu'il vaut `false`. L'appel est rejeté lorsqu'il s'agit d'une requête que Claude Code n'enverra pas, par exemple pour un modèle que votre organisation bloque. [Les types pour votre build](/docs/fr/plugins/mods/create#get-the-types-for-your-build) répertorient les autres options, comme `effort`, et les [limites](/docs/fr/plugins/mods/reference#limits) indiquent la valeur par défaut de `maxTokens`.

102 102 

103`$.model.fork({ prompt })` pose une question sur la conversation actuelle à la place, avec le même modèle et la même invite système, donc l'API Claude sert la plupart de celle-ci à partir du cache d'invite.103`$.model.fork({ prompt })` pose plutôt une question portant sur la conversation en cours, avec le même modèle et le même prompt système, de sorte que l'API Claude en sert la majeure partie depuis le cache de prompts.

104 104 

105Ces appels utilisent le plan ou la clé API de l'utilisateur.105Ces appels utilisent l'abonnement ou la clé API de l'utilisateur.

106 106 

107<h2 id="run-work-in-the-background">107<h2 id="run-work-in-the-background">

108 Exécuter du travail en arrière-plan108 Exécuter du travail en arrière-plan

109</h2>109</h2>

110 110 

111Le travail qui dépasse un événement, comme vérifier quelque chose une fois par minute, s'exécute sur un minuteur que vous démarrez à partir de `session.start`. Un hook lui-même s'exécute pour un événement et a une limite de temps de 10 secondes de son propre temps d'exécution. Le temps passé à attendre `next` ou un appel de l'API mods ne compte pas, sauf un `$.clock.sleep`. `$.clock.every` et `$.clock.after` remplacent `setInterval` et `setTimeout`, avec le délai en millisecondes en premier : `$.clock.after(5000, fn)` appelle `fn` une fois, cinq secondes à partir de maintenant. Chacun retourne un minuteur avec une méthode `cancel()`, et `await $.clock.now()` donne l'heure en millisecondes.111Le travail qui dépasse un événement, comme vérifier quelque chose une fois par minute, s'exécute sur un minuteur que vous démarrez à partir de `session.start`. Un hook lui-même s'exécute pour un événement et a une [limite de temps](/docs/fr/plugins/mods/reference#limits) sur son propre temps d'exécution. Le temps passé à attendre `next` ou un appel de l'API mods ne compte pas, sauf un `$.clock.sleep`. `$.clock.every` et `$.clock.after` remplacent `setInterval` et `setTimeout`, avec le délai en millisecondes en premier : `$.clock.after(5000, fn)` appelle `fn` une fois, cinq secondes à partir de maintenant. Chacun retourne un minuteur avec une méthode `cancel()`, et `await $.clock.now()` donne l'heure en millisecondes.

112 112 

113Ce hook recherche les vérifications d'une demande de tirage une fois par minute et affiche le résultat sous l'invite. `summarize` est une fonction de votre propre création qui transforme la sortie JSON de la commande en quelques mots :113Ce hook recherche les vérifications d'une demande de tirage une fois par minute et affiche le résultat sous l'invite. `summarize` est une fonction de votre propre création qui transforme la sortie JSON de la commande en quelques mots :

114 114 


136| Appel | Ce que l'utilisateur voit |136| Appel | Ce que l'utilisateur voit |

137| :- | :- |137| :- | :- |

138| `$.ui.status(text)` | Une ligne sous l'invite qui reste jusqu'à ce que vous la changiez. Elle commence par `⚠` et le nom du mod, comme dans `⚠ my-mod: checks: 3 passing`. |138| `$.ui.status(text)` | Une ligne sous l'invite qui reste jusqu'à ce que vous la changiez. Elle commence par `⚠` et le nom du mod, comme dans `⚠ my-mod: checks: 3 passing`. |

139| `$.ui.toast(text)` | Une petite boîte en haut à droite, avec le nom du mod au-dessus du texte, qui disparaît après quelques secondes |139| `$.ui.toast(text)` | Une notification toast en haut à droite, avec le nom du mod au-dessus du texte, qui disparaît après quelques secondes |

140| `$.ui.log(text)` | Une ligne atténuée dans la transcription que Claude ne lit pas. Elle commence par `●` et le nom du mod, comme dans `● my-mod: build finished`. |140| `$.ui.log(text)` | Une ligne atténuée dans la transcription que Claude ne lit pas. Elle commence par `●` et le nom du mod, comme dans `● my-mod: build finished`. |

141 141 

142<h3 id="start-a-turn-from-a-background-job">142<h3 id="start-a-turn-from-a-background-job">


149 Arrêter le travail en arrière-plan149 Arrêter le travail en arrière-plan

150</h3>150</h3>

151 151 

152Le travail en arrière-plan s'arrête de deux façons. Les minuteurs s'arrêtent quand le module se recharge. Pour le travail de longue durée à l'intérieur d'un hook, [`next.signal`](/docs/fr/plugins/mods/reference#the-hook-function) est un `AbortSignal` qui s'interrompt quand l'événement que votre hook gère est abandonné, par exemple quand l'utilisateur interrompt, donc passez-le à tout ce qui est de longue durée.152Les minuteurs s'arrêtent quand le module se recharge. Pour le travail de longue durée à l'intérieur d'un hook, [`next.signal`](/docs/fr/plugins/mods/reference#the-hook-function) est un `AbortSignal` qui s'interrompt quand l'événement que votre hook gère est abandonné, par exemple quand l'utilisateur interrompt, donc passez-le à tout ce qui est de longue durée.

153 153 

154<h2 id="send-and-receive-messages-between-sessions">154<h2 id="send-and-receive-messages-between-sessions">

155 Envoyer et recevoir des messages entre les sessions155 Envoyer et recevoir des messages entre les sessions


170})170})

171```171```

172 172 

173Quand le message est mis en file d'attente, rien n'apparaît dans votre session, et Claude de l'autre session lit `Status? One line.` Quand rien n'a été livré, une petite boîte en haut à droite donne la raison et disparaît après quelques secondes.173Quand le message est mis en file d'attente, rien n'apparaît dans votre session, et Claude de l'autre session lit `Status? One line.` Quand rien n'a été livré, une notification toast donne la raison.

174 174 

175Deux événements permettent à un mod d'observer les messages. Retournez `next(e)` des deux pour passer chaque message inchangé :175`session.receive` et `session.send` permettent à un mod d'observer les messages. Retournez `next(e)` des deux pour passer chaque message inchangé :

176 176 

177| Événement | Se déclenche quand | Champs utiles |177| Événement | Se déclenche quand | Champs utiles |

178| :- | :- | :- |178| :- | :- | :- |


202 202 

203Les fichiers et processus ont quelques règles qui leur sont propres :203Les fichiers et processus ont quelques règles qui leur sont propres :

204 204 

205* **Chemins** : un chemin relatif est sous le répertoire de travail de la session205* **Chemins** : un chemin relatif est résolu par rapport au répertoire de travail de la session

206* **`$.fs.list`** : retourne les entrées d'un répertoire comme `{ name, kind, size, isLink }` et ne descend pas dans les sous-répertoires206* **`$.fs.list`** : retourne les entrées d'un répertoire comme `{ name, kind, size, isLink }` et ne descend pas dans les sous-répertoires

207* **`$.process.run`** : prend une liste d'arguments et n'utilise pas de shell. Il se résout en `{ exitCode, stdout, stderr }` quel que soit le code de sortie. Il rejette si le programme ne peut pas démarrer ou s'exécute toujours au délai d'expiration, qui est de 30 secondes par défaut, donc enveloppez-le dans `try` et `catch`.207* **`$.process.run`** : prend une liste d'arguments et n'utilise pas de shell. Il se résout en `{ exitCode, stdout, stderr }` quel que soit le code de sortie. Il rejette si le programme ne peut pas démarrer ou s'exécute toujours au délai d'expiration, qui est de 30 secondes par défaut, donc enveloppez-le dans `try` et `catch`.

208 208 


215* [Réagir aux événements](/docs/fr/plugins/mods/events) : hook les appels d'outils, les invites et les tours215* [Réagir aux événements](/docs/fr/plugins/mods/events) : hook les appels d'outils, les invites et les tours

216* [Dessiner dans l'interface](/docs/fr/plugins/mods/interface) : afficher ce que votre mod collecte dans un volet ou au-dessus de l'invite216* [Dessiner dans l'interface](/docs/fr/plugins/mods/interface) : afficher ce que votre mod collecte dans un volet ou au-dessus de l'invite

217* [Tester un mod](/docs/fr/plugins/mods/test) : stub n'importe lequel de ces appels dans un test217* [Tester un mod](/docs/fr/plugins/mods/test) : stub n'importe lequel de ces appels dans un test

218* [Référence des mods](/docs/fr/plugins/mods/reference) : chaque événement, chaque méthode de l'API mods, et les limites218* [Référence des mods](/docs/fr/plugins/mods/reference) : événements, méthodes de l'API mods et limites

Details

6 6 

7> Demandez à Claude d'écrire un mod Claude Code à partir d'une description, ou écrivez-en un vous-même qui compte les appels d'outils et ajoute une commande. Apprenez la boucle de rechargement et de validation.7> Demandez à Claude d'écrire un mod Claude Code à partir d'une description, ou écrivez-en un vous-même qui compte les appels d'outils et ajoute une commande. Apprenez la boucle de rechargement et de validation.

8 8 

9Un mod est un [plugin](/docs/fr/plugins/overview) Claude Code avec un fichier d'entrée, appelé le module de hooks : un fichier JavaScript ou TypeScript dont les fonctions Claude Code appelle lorsque des événements se produisent. Il y a deux façons d'en créer un :9Un mod est un [plugin](/docs/fr/plugins/overview) Claude Code avec un fichier d'entrée, appelé le module de hooks : un fichier JavaScript ou TypeScript dont les fonctions Claude Code appelle lorsque des événements se produisent. Pour en créer un :

10 10 

11* **Demander à Claude de l'écrire** : [décrivez ce que vous voulez](#ask-claude-for-a-mod) dans une session Claude Code11* **Demander à Claude de l'écrire** : [décrivez ce que vous voulez](#ask-claude-for-a-mod) dans une session Claude Code

12* **L'écrire vous-même** : [suivez le tutoriel](#write-a-mod-yourself) pour apprendre comment fonctionne le code d'un mod. Vous n'avez pas besoin de Node.js, d'un bundler ou d'une étape de build, car Claude Code charge les fichiers `.js` et `.ts` directement.12* **L'écrire vous-même** : [suivez le tutoriel](#write-a-mod-yourself) pour apprendre comment fonctionne le code d'un mod. Vous n'avez pas besoin de Node.js, d'un bundler ou d'une étape de build, car Claude Code charge les fichiers `.js` et `.ts` directement.


69 69 

70* **Personne n'est là pour approuver** : la session ne peut pas vous montrer une invite, comme dans une exécution `claude -p` ou en [mode `dontAsk`](/docs/fr/permission-modes)70* **Personne n'est là pour approuver** : la session ne peut pas vous montrer une invite, comme dans une exécution `claude -p` ou en [mode `dontAsk`](/docs/fr/permission-modes)

71* **L'espace de travail n'est pas de confiance** : vous n'avez pas accepté l'invite de confiance pour le répertoire71* **L'espace de travail n'est pas de confiance** : vous n'avez pas accepté l'invite de confiance pour le répertoire

72* **Les mods sont arrêtés** : vous avez démarré avec `--safe-mode` ou `--bare`, vous avez défini `disableAllHooks`, ou les [paramètres gérés](/docs/fr/plugins/mods/admin#choose-how-much-to-allow) de votre organisation le bloquent72* **Les mods sont désactivés** : vous avez démarré avec `--safe-mode` ou `--bare`, vous avez défini `disableAllHooks`, ou [les paramètres gérés de votre organisation le bloquent](/docs/fr/plugins/mods/admin#choose-how-much-to-allow)

73 73 

74<h2 id="write-a-mod-yourself">74<h2 id="write-a-mod-yourself">

75 Écrivez un mod vous-même75 Écrivez un mod vous-même


249* **L'événement**, nommé `e` : l'[entrée de l'événement](/docs/fr/plugins/mods/reference#events) en tant que données simples, comme le nom et les arguments d'un appel d'outil249* **L'événement**, nommé `e` : l'[entrée de l'événement](/docs/fr/plugins/mods/reference#events) en tant que données simples, comme le nom et les arguments d'un appel d'outil

250* **Le gestionnaire suivant**, nommé [`next`](/docs/fr/plugins/mods/events#how-a-hook-handles-an-event) : une fonction qui transmet l'événement aux autres mods puis au comportement propre de Claude Code, et retourne le résultat250* **Le gestionnaire suivant**, nommé [`next`](/docs/fr/plugins/mods/events#how-a-hook-handles-an-event) : une fonction qui transmet l'événement aux autres mods puis au comportement propre de Claude Code, et retourne le résultat

251 251 

252Les hooks dans `first-mod` gèrent leurs événements de trois façons qu'un hook peut :252Les hooks de `first-mod` gèrent leurs événements de ces façons :

253 253 

254* **Observer** : le hook `session.start` enregistre la commande, et le hook `tool.call` compte l'appel et demande un redessinage. Les deux retournent `next(e)`, donc la session démarre et l'outil s'exécute comme d'habitude.254* **Observer** : le hook `session.start` enregistre la commande, et le hook `tool.call` compte l'appel et demande un redessinage. Les deux retournent `next(e)`, donc la session démarre et l'outil s'exécute comme d'habitude.

255* **Répondre** : le hook `command.run` retourne son propre résultat et n'appelle jamais `next`. Le deuxième argument à `on`, `{ command: 'tally' }`, est un filtre, appelé un [matcher](/docs/fr/plugins/mods/events#filter-which-events-a-hook-handles), donc le hook s'exécute uniquement pour `/tally`.255* **Répondre** : le hook `command.run` retourne son propre résultat et n'appelle jamais `next`. Le deuxième argument à `on`, `{ command: 'tally' }`, est un filtre, appelé un [matcher](/docs/fr/plugins/mods/events#filter-which-events-a-hook-handles), donc le hook s'exécute uniquement pour `/tally`.


318 318 

319La ligne `hooks:` liste les événements que votre module hook, chacun avec son filtre entre accolades. La ligne `calls:` liste chaque méthode de l'API des mods qu'il appelle. Un module qui lit ou définit des variables d'environnement obtient également des lignes `env reads:` et `env writes:`, et un qui utilise [`$.state`](/docs/fr/plugins/mods/interface#keep-state) obtient `state reads:` et `state writes:`.319La ligne `hooks:` liste les événements que votre module hook, chacun avec son filtre entre accolades. La ligne `calls:` liste chaque méthode de l'API des mods qu'il appelle. Un module qui lit ou définit des variables d'environnement obtient également des lignes `env reads:` et `env writes:`, et un qui utilise [`$.state`](/docs/fr/plugins/mods/interface#keep-state) obtient `state reads:` et `state writes:`.

320 320 

321Si un événement que vous aviez l'intention de hooker manque de la première ligne, Claude Code n'appellera pas ce hook non plus. La cause habituelle est un nom d'événement mal orthographié, que la commande rapporte comme une erreur telle que `"tool.calls" is not an event`.321Si un événement que vous aviez l'intention de gérer manque de la première ligne, Claude Code n'appellera pas ce hook non plus. La cause habituelle est un nom d'événement mal orthographié, que la commande rapporte comme une erreur telle que `"tool.calls" is not an event`.

322 322 

323Suivez ces règles afin que l'analyse statique puisse trouver chaque hook et appel :323Suivez ces règles afin que l'analyse statique puisse trouver chaque hook et appel :

324 324 

325* Épellez chaque appel de l'API des mods en entier : `$`, l'espace de noms, puis la méthode, comme dans `$.store.get('notes')`. Vous pouvez passer `$` à une fonction déclarée au niveau supérieur du même fichier, et pour une fonction vôtre nommée `loadNotes`, la ligne `calls:` lit alors `$.store.get (via loadNotes)`. Passer `$` à une méthode, une fonction définie à l'intérieur du hook, ou une fonction que vous importez d'un autre de vos fichiers échoue la validation. Les fonctions `read` et `update` que [`$.state`](/docs/fr/plugins/mods/interface#keep-state) utilise sont les imports qui peuvent le prendre. N'assignez pas `$` ou l'un de ses espaces de noms à une variable, ne le déstructurez pas, ou ne l'indexez pas avec un nom calculé. `const ui = $.ui` échoue avec `$.ui is used as a value`.325* Écrivez chaque appel de l'API des mods en entier : `$`, l'espace de noms, puis la méthode, comme dans `$.store.get('notes')`. Vous pouvez passer `$` à une fonction déclarée au niveau supérieur du même fichier, et pour une fonction vôtre nommée `loadNotes`, la ligne `calls:` lit alors `$.store.get (via loadNotes)`. Passer `$` à une méthode, une fonction définie à l'intérieur du hook, ou une fonction que vous importez d'un autre de vos fichiers échoue la validation. Les fonctions `read` et `update` que [`$.state`](/docs/fr/plugins/mods/interface#keep-state) utilise sont les imports qui peuvent le prendre. N'assignez pas `$` ou l'un de ses espaces de noms à une variable, ne le déstructurez pas, ou ne l'indexez pas avec un nom calculé. `const ui = $.ui` échoue avec `$.ui is used as a value`.

326* Écrivez le nom de l'événement dans chaque appel `on` comme un littéral de chaîne, comme `'tool.call'`. Une variable, ou une boucle sur une liste de noms, échoue avec `the event name passed to on() is not a string literal`.326* Écrivez le nom de l'événement dans chaque appel `on` comme un littéral de chaîne, comme `'tool.call'`. Une variable, ou une boucle sur une liste de noms, échoue avec `the event name passed to on() is not a string literal`.

327* À l'intérieur de `register`, ne déclarez pas une deuxième variable ou paramètre nommé `on`. La validation échoue avec `"on" is declared again (shadowed)`.327* À l'intérieur de `register`, ne déclarez pas une deuxième variable ou paramètre nommé `on`. La validation échoue avec `"on" is declared again (shadowed)`.

328* Importez uniquement à partir de fichiers à l'intérieur du répertoire du plugin, par chemin relatif. Le seul import nu autorisé est `claude-code`, pour les types et quelques helpers.328* Importez uniquement à partir de fichiers à l'intérieur du répertoire du plugin, par chemin relatif. Le seul import nu autorisé est `claude-code`, pour les types et quelques helpers.


333 Testez le mod333 Testez le mod

334</h3>334</h3>

335 335 

336Vous pouvez écrire des tests automatisés pour un mod et les exécuter à partir de votre shell avec `claude plugin test`, sans session, connexion ou réseau. Un test lève les événements que vos hooks gèrent et vérifie ce que les hooks ont fait.336Vous pouvez écrire des tests automatisés pour un mod et les exécuter à partir de votre shell avec `claude plugin test`, sans session, connexion ou réseau. Un test déclenche les événements que vos hooks gèrent et vérifie ce que les hooks ont fait.

337 337 

338Ce test lève deux appels d'outils, exécute `/tally`, et vérifie que la réponse compte les deux. Enregistrez-le comme `first-mod/tests/first-mod.test.ts` :338Ce test déclenche deux appels d'outils, exécute `/tally`, et vérifie que la réponse compte les deux. Enregistrez-le comme `first-mod/tests/first-mod.test.ts` :

339 339 

340```typescript first-mod/tests/first-mod.test.ts theme={null}340```typescript first-mod/tests/first-mod.test.ts theme={null}

341import { expect, test } from 'claude-code/testing'341import { expect, test } from 'claude-code/testing'


344 // Answer each tool call in Claude Code's place, so no tool runs344 // Answer each tool call in Claude Code's place, so no tool runs

345 on('tool.call', () => ({ result: 'ok' }))345 on('tool.call', () => ({ result: 'ok' }))

346 346 

347 // Raise two tool calls, which the mod's tool.call hook counts347 // Fire two tool calls, which the mod's tool.call hook counts

348 await $.tool.call({ tool: 'Bash', command: 'ls' })348 await $.tool.call({ tool: 'Bash', command: 'ls' })

349 await $.tool.call({ tool: 'Read', file_path: 'README.md' })349 await $.tool.call({ tool: 'Read', file_path: 'README.md' })

350 350 

Details

52 Réécrire un événement52 Réécrire un événement

53</h3>53</h3>

54 54 

55Pour modifier ce sur quoi Claude Code agit, comme le texte d'une invite, appelez `next` avec une copie modifiée de l'événement. L'événement lui-même est immuable : il est gelé à chaque profondeur, et l'assignation à un champ lève une exception. Ce hook supprime les espaces de chaque invite avant qu'elle ne soit envoyée :55Pour modifier ce sur quoi Claude Code agit, comme le texte d'un prompt, appelez `next` avec une copie modifiée de l'événement. L'événement lui-même est immuable : il est gelé à chaque profondeur, et l'assignation à un champ lève une exception. Ce hook supprime les espaces de chaque prompt avant qu'il ne soit envoyé :

56 56 

57```javascript theme={null}57```javascript theme={null}

58on('prompt.submit', async ($, e, next) => {58on('prompt.submit', async ($, e, next) => {


97 97 

98`hook` s'exécute une fois pour un appel Bash, Edit ou Write, et une fois pour un appel à un outil dont le nom commence par `mcp__github__`. Un appel à n'importe quel autre outil, comme Read, ne correspond à aucun des trois, donc `hook` ne s'exécute pas pour lui.98`hook` s'exécute une fois pour un appel Bash, Edit ou Write, et une fois pour un appel à un outil dont le nom commence par `mcp__github__`. Un appel à n'importe quel autre outil, comme Read, ne correspond à aucun des trois, donc `hook` ne s'exécute pas pour lui.

99 99 

100Le nom de l'événement peut être un wildcard. `'classic.*'` correspond à chaque [événement hook des paramètres](#hook-the-settings-hook-events). `'*'` correspond à chaque événement sauf les [événements de télémétrie](/docs/fr/plugins/mods/reference#telemetry), que vous hookez par nom ou en tant que `'telemetry.*'`.100Le nom de l'événement peut être un wildcard. `'classic.*'` correspond à chaque [événement hook des paramètres](#hook-the-settings-hook-events). `'*'` correspond à chaque événement sauf les [événements de télémétrie](/docs/fr/plugins/mods/reference#telemetry), qui prennent leur propre nom et un filtre `{ to: 'collector' }`.

101 101 

102Enregistrez chaque événement une fois par matcher. Si vous appelez `on` deux fois pour `session.start` sans matcher, le module échoue à charger avec `on("session.start") is registered twice without a matcher`. Mettez tout ce que votre mod fait au démarrage de la session dans un hook.102Enregistrez chaque événement une fois par matcher. Si vous appelez `on` deux fois pour `session.start` sans matcher, le module échoue à charger avec `on("session.start") is registered twice without a matcher`. Mettez tout ce que votre mod fait au démarrage de la session dans un hook.

103 103 

104<h2 id="hook-what-claude-is-doing">104<h2 id="hook-what-claude-is-doing">

105 Hook ce que Claude fait105 Intercepter ce que fait Claude

106</h2>106</h2>

107 107 

108Hookez ces événements pour voir ou modifier un appel d'outil, une invite, ou un tour au moment où cela se produit. Pour chaque événement et ce qu'un hook peut retourner, consultez la [référence des événements](/docs/fr/plugins/mods/reference#events).108Gérez ces événements pour observer ou modifier un appel d'outil, un prompt ou un tour au moment où il se produit. Pour connaître tous les événements et ce qu'un hook peut renvoyer, consultez la [référence des événements](/docs/fr/plugins/mods/reference#events).

109 109 

110<h3 id="guard-or-change-a-tool-call">110<h3 id="guard-or-change-a-tool-call">

111 Garder ou modifier un appel d'outil111 Contrôler ou modifier un appel d'outil

112</h3>112</h3>

113 113 

114Un hook `tool.call` voit chaque outil que Claude s'apprête à utiliser, il peut donc refuser l'appel, modifier ses arguments, ou le laisser passer. `tool.call` se déclenche quand Claude Code s'apprête à exécuter un outil, y compris les appels qu'un sous-agent fait et les appels aux outils MCP. `e.tool` est le nom de l'outil et les arguments de l'outil sont des champs de `e`, comme `e.command` pour Bash. Quand vous appelez `next(e)`, Claude Code exécute la vérification des permissions puis l'outil.114Un hook `tool.call` voit chaque outil que Claude s'apprête à utiliser, ce qui lui permet de refuser l'appel, de modifier ses arguments ou de le laisser passer. `tool.call` se déclenche lorsque Claude Code s'apprête à exécuter un outil, y compris pour les appels effectués par un sous-agent et les appels aux outils MCP. `e.tool` est le nom de l'outil et les arguments de l'outil sont des champs de `e`, comme `e.command` pour Bash. Lorsque vous appelez `next(e)`, Claude Code effectue la vérification des permissions, puis exécute l'outil.

115 115 

116Ce hook refuse une commande Bash qui force-push, et dit à Claude pourquoi :116Ce hook refuse une commande Bash qui effectue un force-push et indique à Claude pourquoi :

117 117 

118```javascript theme={null}118```javascript theme={null}

119// Le matcher limite le hook aux appels Bash, donc e.command est la commande shell119// The matcher limits the hook to Bash calls, so e.command is the shell command

120on('tool.call', { tool: 'Bash' }, async ($, e, next) => {120on('tool.call', { tool: 'Bash' }, async ($, e, next) => {

121 if (/git push .*--force/.test(e.command)) {121 if (/git push .*--force/.test(e.command)) {

122 // Retourner sans appeler next répond à l'événement, donc la commande ne s'exécute jamais122 // Returning without calling next answers the event, so the command never runs

123 return { deny: 'Force pushes are not allowed in this repository. Push to a new branch instead.' }123 return { deny: 'Force pushes are not allowed in this repository. Push to a new branch instead.' }

124 }124 }

125 // Chaque autre commande va à la vérification des permissions puis à Bash125 // Every other command goes on to the permission check and then to Bash

126 return next(e)126 return next(e)

127})127})

128```128```

129 129 

130Quand Claude essaie `git push --force`, la commande ne s'exécute pas et aucune invite de permission n'apparaît, car le hook n'appelle jamais `next`. Claude lit le texte `deny` comme le résultat de l'outil, donc écrivez-le comme une instruction sur laquelle Claude peut agir. Chaque autre commande Bash s'exécute comme elle le ferait sans le mod.130Lorsque Claude tente `git push --force`, la commande ne s'exécute pas et aucune demande de permission n'apparaît, car le hook n'appelle jamais `next`. Claude lit le texte de `deny` comme résultat de l'outil ; rédigez-le donc comme une instruction sur laquelle Claude peut agir. Toutes les autres commandes Bash s'exécutent comme elles le feraient sans le mod.

131 131 

132Pour agir après l'exécution d'un outil, `await next(e)`, faites votre travail, et retournez ce que `next` vous a donné. Ce hook enregistre chaque fichier `.mdx` que Claude modifie, avec [`$.ui.log`](/docs/fr/plugins/mods/api#show-something-without-starting-a-turn), qui ajoute une ligne atténuée à la transcription que Claude ne lit pas :132Pour agir après l'exécution d'un outil, faites `await next(e)`, effectuez votre traitement, puis renvoyez ce que `next` vous a fourni. Ce hook consigne chaque fichier `.mdx` que Claude modifie, avec [`$.ui.log`](/docs/fr/plugins/mods/api#show-something-without-starting-a-turn), qui ajoute à la transcription une ligne estompée que Claude ne lit pas :

133 133 

134```javascript theme={null}134```javascript theme={null}

135on('tool.call', { tool: ['Edit', 'Write'] }, async ($, e, next) => {135on('tool.call', { tool: ['Edit', 'Write'] }, async ($, e, next) => {

136 // Attendre la vérification des permissions et l'outil, et garder ce qu'ils ont produit136 // Wait for the permission check and the tool, and keep what they produced

137 const result = await next(e)137 const result = await next(e)

138 // Un appel refusé revient en tant que { deny }, et un appel échoué a isError défini138 // A refused call comes back as { deny }, and a failed one has isError set

139 const changed = !result.deny && !result.isError139 const changed = !result.deny && !result.isError

140 if (changed && e.file_path.endsWith('.mdx')) $.ui.log('Claude changed ' + e.file_path)140 if (changed && e.file_path.endsWith('.mdx')) $.ui.log('Claude changed ' + e.file_path)

141 // Retourner le résultat tel qu'il est venu, donc Claude lit ce que l'outil a retourné141 // Return the result as it came, so Claude reads what the tool returned

142 return result142 return result

143})143})

144```144```

145 145 

146Après que Claude édite ou écrit un fichier `.mdx`, une ligne atténuée dans la transcription nomme le fichier. Rien n'est enregistré pour un autre type de fichier, ou pour un appel qui a été refusé ou échoué. La vue de Claude de l'appel ne change pas, car le hook retourne le résultat qu'il a reçu.146Après que Claude a modifié ou écrit un fichier `.mdx`, une ligne estompée dans la transcription indique le nom du fichier. Rien n'est consigné pour un autre type de fichier, ni pour un appel refusé ou en échec. La vision que Claude a de l'appel ne change pas, car le hook renvoie le résultat qu'il a reçu.

147 147 

148Pour modifier un appel, passez des arguments modifiés à `next`. Pour réessayer un appel, appelez `next(e)` à nouveau : un hook qui voit `isError` sur le premier résultat peut exécuter l'outil une deuxième fois et retourner ce résultat. Pour répondre à un appel vous-même, retournez un objet avec un champ `result`, comme `{ result: 'Skipped by my-mod' }`, sans appeler `next`. Quand vous faites cela, aucune invite de permission n'apparaît et l'outil ne s'exécute pas, donc le résultat que vous retournez est tout ce que Claude apprend sur ce qui s'est passé.148Pour modifier un appel, transmettez des arguments modifiés à `next`. Pour réessayer un appel, appelez de nouveau `next(e)` : un hook qui voit `isError` dans le premier résultat peut exécuter l'outil une seconde fois et renvoyer ce résultat. Pour répondre vous-même à un appel, renvoyez un objet avec un champ `result`, comme `{ result: 'Skipped by my-mod' }`, sans appeler `next`. Dans ce cas, aucune demande de permission n'apparaît et l'outil ne s'exécute pas ; le résultat que vous renvoyez est donc tout ce que Claude apprend de ce qui s'est passé.

149 149 

150Les hooks dans les [paramètres gérés](/docs/fr/server-managed-settings) de votre organisation s'exécutent avant le hook `tool.call` de n'importe quel mod, et un bloc de l'un d'eux est final.150Les hooks des [paramètres gérés](/docs/fr/server-managed-settings) de votre organisation s'exécutent avant le hook `tool.call` de tout mod, et un blocage provenant de l'un d'eux est définitif.

151 151 

152<h4 id="hold-a-tool-call-until-the-user-decides">152<h4 id="hold-a-tool-call-until-the-user-decides">

153 Tenir un appel d'outil jusqu'à ce que l'utilisateur décide153 Suspendre un appel d'outil jusqu'à la décision de l'utilisateur

154</h4>154</h4>

155 155 

156Un hook peut mettre en pause un appel d'outil et demander à l'utilisateur quoi faire avant qu'il ne continue. Un hook `tool.call` peut `await` avant d'appeler `next` ou de retourner, et l'appel d'outil reste en attente jusqu'à ce moment. Pour poser la question à l'utilisateur, appelez `$.ui.ask`. Il affiche votre question au-dessus d'une liste numérotée de vos options, dans la boîte de dialogue que Claude utilise pour vous poser une question, et se résout à l'étiquette que l'utilisateur choisit. Après vos options, la boîte de dialogue ajoute une ligne pour taper une réponse différente et une ligne **Chat about this**.156Un hook peut mettre en pause un appel d'outil et demander à l'utilisateur quoi faire avant de poursuivre. Un hook `tool.call` peut faire un `await` avant d'appeler `next` ou de renvoyer une valeur, et l'appel d'outil reste en attente jusque-là. Pour poser la question à l'utilisateur, appelez `$.ui.ask`. Cette fonction affiche votre question au-dessus d'une liste numérotée de vos options, dans la boîte de dialogue que Claude utilise pour vous demander quelque chose, et se résout avec le libellé choisi par l'utilisateur. Après vos options, la boîte de dialogue ajoute une ligne pour saisir une autre réponse et une ligne **Chat about this**.

157 157 

158Le motif `RISKY` dans cet exemple correspond à `rm -r`, `rm -rf`, `git reset --hard`, et `git push` avec `--force`, et il manque d'autres orthographes comme `git push -f`. Ce module demande avant d'exécuter une commande Bash qui correspond au motif :158Le motif `RISKY` de cet exemple correspond à `rm -r`, `rm -rf`, `git reset --hard` et `git push` avec `--force`, et ne détecte pas d'autres écritures comme `git push -f`. Ce module pose une question avant d'exécuter une commande Bash qui correspond au motif :

159 159 

160```javascript theme={null}160```javascript theme={null}

161const RISKY = /\brm\s+-rf?\b|\bgit\s+reset\s+--hard\b|\bgit\s+push\b.*--force/161const RISKY = /\brm\s+-rf?\b|\bgit\s+reset\s+--hard\b|\bgit\s+push\b.*--force/

162 162 

163export function register(on) {163export function register(on) {

164 on('tool.call', { tool: 'Bash' }, async ($, e, next) => {164 on('tool.call', { tool: 'Bash' }, async ($, e, next) => {

165 // Laisser chaque autre commande passer sans question165 // Let every other command through without a question

166 if (!RISKY.test(e.command)) return next(e)166 if (!RISKY.test(e.command)) return next(e)

167 // Commencer par la réponse sûre, donc une question à laquelle personne ne répond refuse la commande167 // Start from the safe answer, so a question nobody answers refuses the command

168 let answer = 'Refuse'168 let answer = 'Refuse'

169 try {169 try {

170 // L'appel d'outil attend ici jusqu'à ce que l'utilisateur choisisse l'une des deux étiquettes170 // The tool call waits here until the user picks one of the two labels

171 answer = await $.ui.ask('Run this command? ' + e.command, ['Run it', 'Refuse'])171 answer = await $.ui.ask('Run this command? ' + e.command, ['Run it', 'Refuse'])

172 } catch {172 } catch {

173 // L'utilisateur a rejeté la question, ou c'est une exécution claude -p sans personne à demander173 // The user dismissed the question, or this is a claude -p run with nobody to ask

174 }174 }

175 if (answer !== 'Run it') {175 if (answer !== 'Run it') {

176 // Répondre sans appeler next, donc la commande ne s'exécute pas176 // Answer without calling next, so the command doesn't run

177 return { deny: 'The user declined this command. Ask before trying a different approach.' }177 return { deny: 'The user declined this command. Ask before trying a different approach.' }

178 }178 }

179 return next(e)179 return next(e)


181}181}

182```182```

183 183 

184Quand Claude essaie une commande comme `rm -rf build`, la question apparaît avec la commande dedans, et la commande attend la réponse :184Lorsque Claude tente une commande comme `rm -rf build`, la question apparaît avec la commande, et la commande attend la réponse :

185 185 

186* **L'utilisateur choisit Run it** : le hook appelle `next(e)`, et la vérification des permissions habituelle s'exécute toujours après186* **L'utilisateur choisit Run it** : le hook appelle `next(e)`, et la vérification habituelle des permissions s'exécute toujours ensuite

187* **L'utilisateur choisit Refuse** : la commande ne s'exécute pas, et Claude lit le texte `deny`187* **L'utilisateur choisit Refuse** : la commande ne s'exécute pas, et Claude lit le texte de `deny`

188* **L'utilisateur tape une réponse** : `$.ui.ask` se résout au texte tapé. Le hook le compare avec `Run it`, donc n'importe quel autre texte refuse la commande.188* **L'utilisateur saisit une réponse** : `$.ui.ask` se résout avec le texte saisi. Le hook le compare à `Run it`, donc tout autre texte refuse la commande.

189* **Personne ne répond** : `$.ui.ask` rejette quand l'utilisateur rejette la question ou choisit **Chat about this**, et dans une exécution `claude -p`, donc le bloc `catch` laisse la réponse à `Refuse`189* **Personne ne répond** : `$.ui.ask` est rejetée lorsque l'utilisateur ferme la question ou choisit **Chat about this**, ainsi que lors d'une exécution `claude -p` ; le bloc `catch` laisse donc la réponse à `Refuse`

190 190 

191Gardez l'attente à l'intérieur d'un appel API mods comme `$.ui.ask`, car ce temps ne compte pas contre la [limite de temps de 10 secondes](/docs/fr/plugins/mods/reference#limits) du hook. Le temps passé à attendre une promesse de votre propre compte. Claude Code saute un hook qui expire, donc la commande tenue s'exécuterait.191Placez l'attente dans un appel à l'API des mods comme `$.ui.ask`, car ce temps n'est pas décompté de la [limite de temps](/docs/fr/plugins/mods/reference#limits) du hook. Le temps passé à attendre une promesse de votre propre code, en revanche, est décompté. Claude Code ignore un hook qui dépasse le délai, si bien que la commande suspendue s'exécuterait.

192 

193<h4 id="approve-or-refuse-a-tool-call-before-the-user-is-asked">

194 Approuver ou refuser un appel d'outil avant que l'utilisateur ne soit sollicité

195</h4>

196 

197Pour décider si un appel d'outil peut s'exécuter, gérez [`tool.check`](/docs/fr/plugins/mods/reference#tools), l'événement où Claude Code prend cette décision. Il se déclenche après que les règles de permission et les hooks des paramètres ont décidé, et `next(e)` se résout avec leur décision : `allow`, `ask` ou `deny`. Votre hook renvoie cette décision ou une autre. `e.input` contient les arguments de l'outil, comme `command` pour Bash.

198 

199Pour une commande ou un chemin fixe, utilisez une [règle de permission](/docs/fr/permissions#permission-rule-syntax) comme `Bash(npm test)`, qui ne nécessite aucun code. Gérez `tool.check` lorsque la décision dépend de ce qui est vrai à ce moment-là, comme la branche Git courante ou une valeur enregistrée par un autre hook.

200 

201Ce hook refuse `git push` lorsque la branche courante est `main` :

202 

203```javascript theme={null}

204on('tool.check', { tool: 'Bash' }, async ($, e, next) => {

205 // What the permission rules and settings hooks decided: 'allow', 'ask', or 'deny'

206 const decided = await next(e)

207 if (!e.input.command.includes('git push')) return decided

208 const branch = await $.process.run(['git', 'branch', '--show-current'])

209 if (branch.stdout.trim() !== 'main') return decided

210 return { decision: 'deny', reason: 'Push from a branch other than main' }

211})

212```

213 

214Sur `main`, le hook renvoie `deny`, même lorsqu'une règle autorise `git push`. Sur une autre branche, et pour les autres commandes, l'appel obtient la décision qu'il obtiendrait sans le mod.

215 

216Le hook se base sur le texte de la commande ; considérez-le donc comme un garde-fou pour Claude. Pour bloquer les push vers `main` pour tout le monde, protégez la branche sur votre hébergeur Git.

217 

218Un hook peut renvoyer `allow`, `ask` ou `deny` ; il peut donc aussi approuver un appel qu'un hook `PreToolUse` situé en dehors des paramètres gérés a bloqué. [Étendre les permissions avec des hooks](/docs/fr/permissions#extend-permissions-with-hooks) indique quelles décisions prévalent sur un mod.

192 219 

193<h3 id="rewrite-or-add-to-a-prompt">220<h3 id="rewrite-or-add-to-a-prompt">

194 Réécrire ou ajouter à une invite221 Réécrire un prompt ou y ajouter du contenu

195</h3>222</h3>

196 223 

197Un hook `prompt.submit` voit chaque invite avant le début du tour, il peut donc réécrire le texte ou l'ajouter. `e.text` est ce qui a été tapé.224Un hook `prompt.submit` voit chaque prompt avant le début du tour, ce qui lui permet de réécrire le texte ou d'y ajouter du contenu. `e.text` correspond à ce qui a été saisi.

198 225 

199| Pour faire ceci | Retournez ceci |226| Pour faire ceci | Renvoyez ceci |

200| :- | :- |227| :- | :- |

201| Réécrire l'invite. Le message dans la transcription affiche le nouveau texte. | `next({ ...e, text: newText })` |228| Réécrire le prompt. Le message dans la transcription affiche le nouveau texte. | `next({ ...e, text: newText })` |

202| Ajouter du texte que seul Claude lit, après l'invite | `next({ ...e, context: [...(e.context ?? []), extraText] })` |229| Ajouter, après le prompt, du texte que seul Claude lit | `next({ ...e, context: [...(e.context ?? []), extraText] })` |

203| Empêcher l'invite d'être envoyée | `{ drop: 'the reason' }` |230| Empêcher l'envoi du prompt | `{ drop: 'the reason' }` |

204 231 

205Ce hook ajoute le nom de la branche actuelle pour Claude chaque fois qu'une invite mentionne une pull request :232Ce hook ajoute pour Claude le nom de la branche courante chaque fois qu'un prompt mentionne une pull request :

206 233 

207```javascript theme={null}234```javascript theme={null}

208on('prompt.submit', async ($, e, next) => {235on('prompt.submit', async ($, e, next) => {

209 // Passer une invite qui ne mentionne pas une pull request telle qu'elle est236 // Pass on a prompt that doesn't mention a pull request as it is

210 if (!/\bPR\b|pull request/i.test(e.text)) return next(e)237 if (!/\bPR\b|pull request/i.test(e.text)) return next(e)

211 const git = await $.process.run(['git', 'branch', '--show-current'])238 const git = await $.process.run(['git', 'branch', '--show-current'])

212 // En dehors d'un référentiel git, la commande échoue, donc il n'y a pas de branche à ajouter239 // Outside a git repository the command fails, so there's no branch to add

213 if (git.exitCode !== 0) return next(e)240 if (git.exitCode !== 0) return next(e)

214 // Garder tout contexte qu'un hook antérieur a ajouté, et en ajouter une ligne de plus pour Claude241 // Keep any context an earlier hook added, and add one more line for Claude

215 return next({ ...e, context: [...(e.context ?? []), 'Current branch: ' + git.stdout.trim()] })242 return next({ ...e, context: [...(e.context ?? []), 'Current branch: ' + git.stdout.trim()] })

216})243})

217```244```

218 245 

219Quand vous envoyez une invite comme `open a PR for this change`, votre message ressemble au même dans la transcription, et Claude lit aussi une ligne comme `Current branch: feature/auth` après. Une invite qui ne mentionne pas une pull request passe inchangée, et `git` ne s'exécute pas.246Lorsque vous envoyez un prompt comme `open a PR for this change`, votre message reste identique dans la transcription, et Claude lit également après celui-ci une ligne comme `Current branch: feature/auth`. Un prompt qui ne mentionne pas de pull request passe sans modification, et `git` ne s'exécute pas.

220 247 

221[D'autres événements](/docs/fr/plugins/mods/reference#prompts-and-what-claude-reads) couvrent le reste de ce que Claude lit : `prompt.section` pour chaque section de l'invite système, `prompt.context` pour le contexte envoyé avec le premier message, et `skill.prompt` pour le texte d'une compétence. Le texte de ces hooks qui change entre les requêtes [invalide le cache d'invite](/docs/fr/prompt-caching).248[D'autres événements](/docs/fr/plugins/mods/reference#prompts-and-what-claude-reads) couvrent le reste de ce que lit Claude : `prompt.section` pour chaque section du prompt système, `prompt.context` pour le contexte envoyé avec le premier message, et `skill.prompt` pour le texte d'un skill. Un texte issu de ces hooks qui change d'une requête à l'autre [invalide le cache des prompts](/docs/fr/prompt-caching).

222 249 

223<h3 id="follow-a-turn">250<h3 id="follow-a-turn">

224 Suivre un tour251 Suivre un tour

225</h3>252</h3>

226 253 

227Un tour est tout ce que Claude fait en réponse à une invite. Hookez `turn.start`, `turn.step`, et `turn.complete` pour en suivre un :254Un tour correspond à tout ce que fait Claude en réponse à un prompt. Gérez `turn.start`, `turn.step` et `turn.complete` pour en suivre un :

228 255 

229| Événement | Quand il se déclenche | Ce qu'un hook peut faire |256| Événement | Quand il se déclenche | Ce qu'un hook peut faire |

230| :- | :- | :- |257| :- | :- | :- |

231| `turn.start` | Un tour commence | Observer. `e.turnId` identifie le tour dans les deux autres événements. |258| `turn.start` | Un tour commence | Observer. `e.turnId` identifie le tour dans les deux autres événements. |

232| `turn.step` | Claude Code s'apprête à envoyer une requête au modèle. Un tour avec des appels d'outils en a plusieurs. `e.agentId` est défini pour la requête d'un sous-agent. | Lire l'utilisation des jetons de chaque requête, l'envoyer à un modèle différent avec `next({ ...e, model })`, ou répondre sans appeler le modèle |259| `turn.step` | Claude Code s'apprête à envoyer une requête au modèle. Un tour comportant des appels d'outils en compte plusieurs. `e.agentId` est défini pour la requête d'un sous-agent. | Lire l'utilisation des tokens de chaque requête, l'envoyer à un autre modèle avec `next({ ...e, model })`, ou répondre sans appeler le modèle |

233| `turn.complete` | Le tour s'est terminé, y compris un tour que l'utilisateur a interrompu, où `e.isAborted` est `true`. `e.answer` est le texte final de Claude, `e.durationMs` combien de temps cela a pris, et `e.usage` les totaux de jetons du tour. Un tour d'un sous-agent le déclenche avec `e.agentId` défini. | Observer, ou retourner un objet avec un champ `text`, comme `{ text: 'Done in 12 seconds' }`, pour afficher une ligne sous la réponse |260| `turn.complete` | Le tour s'est terminé, y compris un tour interrompu par l'utilisateur, auquel cas `e.isAborted` vaut `true`. `e.answer` est le texte final de Claude, `e.durationMs` sa durée, et `e.usage` le total des tokens du tour. Le tour d'un sous-agent le déclenche avec `e.agentId` défini. | Observer, ou renvoyer un objet avec un champ `text`, comme `{ text: 'Done in 12 seconds' }`, pour afficher une ligne sous la réponse |

234 261 

235Écrivez un hook `turn.step` comme un générateur asynchrone, car l'événement diffuse. `yield* next(e)` transfère la réponse au fur et à mesure qu'elle diffuse et s'évalue au résultat terminé. Ce hook enregistre combien de chaque requête l'API Claude a servi à partir du [cache d'invite](/docs/fr/prompt-caching) :262Écrivez un hook `turn.step` sous forme de générateur asynchrone, car l'événement est diffusé en streaming. `yield* next(e)` transmet la réponse au fil du streaming et s'évalue en résultat final. Ce hook consigne la part de chaque requête que l'API Claude a servie depuis le [cache des prompts](/docs/fr/prompt-caching) :

236 263 

237```javascript theme={null}264```javascript theme={null}

238// function* rend le hook un générateur, qui peut transférer la réponse morceau par morceau265// function* makes the hook a generator, which can pass the response on piece by piece

239on('turn.step', async function* ($, e, next) {266on('turn.step', async function* ($, e, next) {

240 // Envoyer la requête, transférer chaque morceau à son arrivée, et garder le résultat terminé267 // Send the request, forward each piece as it arrives, and keep the finished result

241 const result = yield* next(e)268 const result = yield* next(e)

242 // Sauter un résultat qui ne rapporte pas de comptes de jetons269 // Skip a result that reports no token counts

243 if (result.usage) {270 if (result.usage) {

244 $.ui.log('cache read ' + result.usage.cache_read_input_tokens + ' · wrote ' + result.usage.cache_creation_input_tokens)271 $.ui.log('cache read ' + result.usage.cache_read_input_tokens + ' · wrote ' + result.usage.cache_creation_input_tokens)

245 }272 }

246 // Retourner le résultat inchangé, donc le tour continue comme d'habitude273 // Return the result unchanged, so the turn continues as usual

247 return result274 return result

248})275})

249```276```

250 277 

251La réponse de Claude diffuse à l'écran comme elle le ferait sans le mod. Après chaque fin de requête, une ligne atténuée dans la transcription donne le nombre de jetons lus du cache et le nombre écrit dedans. Un tour avec des appels d'outils a plusieurs requêtes, donc il ajoute plusieurs lignes.278La réponse de Claude s'affiche en streaming à l'écran comme sans le mod. Une fois chaque requête terminée, une ligne estompée dans la transcription indique le nombre de tokens lus depuis le cache et le nombre de tokens écrits dans celui-ci. Un tour comportant des appels d'outils contient plusieurs requêtes ; il ajoute donc plusieurs lignes.

252 279 

253`result.usage` contient les quatre comptes de jetons que l'API Claude rapporte pour une requête, plus le `model` qui a répondu : `input_tokens`, `output_tokens`, `cache_read_input_tokens`, et `cache_creation_input_tokens`. Le hook s'exécute aussi pour les requêtes des sous-agents, donc vérifiez `e.agentId` quand vous voulez seulement la conversation principale.280`result.usage` contient le nombre de tokens que l'API Claude indique pour une requête, ainsi que le `model` qui a répondu : `input_tokens`, `output_tokens`, `cache_read_input_tokens` et `cache_creation_input_tokens`. Le hook s'exécute aussi pour les requêtes des sous-agents ; vérifiez donc `e.agentId` si vous ne souhaitez traiter que la conversation principale.

254 281 

255<h3 id="hook-the-settings-hook-events">282<h3 id="hook-the-settings-hook-events">

256 Hook les événements hook des paramètres283 Gérer les événements des hooks des paramètres

257</h3>284</h3>

258 285 

259Les hooks des paramètres sont les hooks de commande, HTTP, d'invite et d'agent que vous configurez dans les fichiers de paramètres. Chaque [événement hook des paramètres](/docs/fr/hooks#hook-events), comme `Stop`, `SessionEnd`, ou `PostToolUse`, est aussi un événement nommé `classic.` suivi du nom de l'événement hook des paramètres, comme `classic.Stop`. `e` est le JSON qu'un hook des paramètres reçoit sur stdin, y compris `transcript_path`.286Les hooks des paramètres sont les hooks de type commande, HTTP, prompt et agent que vous configurez dans les fichiers de paramètres. Chaque [événement de hook des paramètres](/docs/fr/hooks#hook-events), comme `Stop`, `SessionEnd` ou `PostToolUse`, est aussi un événement nommé `classic.` suivi du nom de l'événement, comme `classic.Stop`. `e` est le JSON qu'un hook des paramètres reçoit sur stdin, y compris `transcript_path`.

260 287 

261Ce hook utilise `Stop`, qui se déclenche quand Claude finit de répondre, pour enregistrer où la transcription de la session est sauvegardée :288Ce hook utilise `Stop`, qui se déclenche lorsque Claude a fini de répondre, pour consigner l'emplacement où la transcription de la session est enregistrée :

262 289 

263```javascript theme={null}290```javascript theme={null}

264on('classic.Stop', async ($, e, next) => {291on('classic.Stop', async ($, e, next) => {

265 // e a les mêmes champs qu'un hook Stop dans un fichier de paramètres lit depuis stdin292 // e has the same fields a Stop hook in a settings file reads from stdin

266 $.ui.log('Transcript saved at ' + e.transcript_path)293 $.ui.log('Transcript saved at ' + e.transcript_path)

267 // Passer l'événement, donc les hooks Stop dans vos fichiers de paramètres s'exécutent toujours294 // Pass the event on, so Stop hooks in your settings files still run

268 return next(e)295 return next(e)

269})296})

270```297```

271 298 

272Chaque fois que Claude finit de répondre, une ligne atténuée dans la transcription donne le chemin du fichier de transcription. Le hook retourne `next(e)`, il observe donc l'événement et ne change rien à la façon dont le tour se termine.299Chaque fois que Claude a fini de répondre, une ligne estompée dans la transcription indique le chemin du fichier de transcription. Le hook renvoie `next(e)` : il observe donc l'événement sans rien changer à la façon dont le tour se termine.

273 300 

274<h2 id="run-alongside-other-mods">301<h2 id="run-alongside-other-mods">

275 Exécuter aux côtés d'autres mods302 Exécuter aux côtés d'autres mods

276</h2>303</h2>

277 304 

278Plusieurs mods peuvent hooker le même événement, et n'importe lequel d'eux peut échouer. Si votre mod bloque les appels d'outils, vérifiez sa position dans la chaîne et ce qui se passe quand son hook échoue.305Plusieurs mods peuvent gérer le même événement, et n'importe lequel d'eux peut échouer. Si votre mod bloque les appels d'outils, vérifiez sa position dans la chaîne et ce qui se passe quand son hook échoue.

279 306 

280<h3 id="the-order-mods-run-in">307<h3 id="the-order-mods-run-in">

281 L'ordre dans lequel les mods s'exécutent308 L'ordre dans lequel les mods s'exécutent


301* **Hooks `PreToolUse` des paramètres gérés** : s'exécutent avant le hook `tool.call` du premier mod, et un bloc de l'un d'eux est final, donc aucun mod ne voit l'appel.328* **Hooks `PreToolUse` des paramètres gérés** : s'exécutent avant le hook `tool.call` du premier mod, et un bloc de l'un d'eux est final, donc aucun mod ne voit l'appel.

302* **Hooks `PreToolUse` de chaque autre fichier de paramètres et des `hooks/hooks.json` des plugins** : s'exécutent après que le dernier mod appelle `next`, comme partie du comportement propre de Claude Code. Un mod qui répond à `tool.call` sans appeler `next` les empêche de s'exécuter, et un mod qui appelle `next` voit leur décision dans le résultat qu'il retourne.329* **Hooks `PreToolUse` de chaque autre fichier de paramètres et des `hooks/hooks.json` des plugins** : s'exécutent après que le dernier mod appelle `next`, comme partie du comportement propre de Claude Code. Un mod qui répond à `tool.call` sans appeler `next` les empêche de s'exécuter, et un mod qui appelle `next` voit leur décision dans le résultat qu'il retourne.

303 330 

304[`tool.check`](/docs/fr/plugins/mods/reference#tools) est l'événement où Claude Code décide si un appel d'outil peut s'exécuter. Il se déclenche après ces hooks et les règles de permission ont décidé, et `next(e)` se résout à leur décision. Un hook sur `tool.check` peut retourner une décision différente, comme `{ decision: 'allow' }`, il peut donc approuver un appel qu'un hook du deuxième groupe a bloqué. [Étendre les permissions avec des hooks](/docs/fr/permissions#extend-permissions-with-hooks) énumère quelles décisions tiennent sur un mod.331[`tool.check`](#approve-or-refuse-a-tool-call-before-the-user-is-asked) se déclenche une fois que ces hooks et les règles de permission ont décidé, de sorte qu'un hook sur cet événement peut approuver un appel qu'un hook du deuxième groupe a bloqué.

305 332 

306<h3 id="handle-a-hook-that-fails">333<h3 id="handle-a-hook-that-fails">

307 Gérer un hook qui échoue334 Gérer un hook qui échoue


324})351})

325```352```

326 353 

327Pendant que `guard` fonctionne, le gestionnaire ne s'exécute jamais. Quand `guard` lève une exception ou expire sur un appel Bash, Claude Code appelle le gestionnaire avec le même événement. Le gestionnaire retourne `{ deny }`, donc la commande ne s'exécute pas, et Claude lit le texte avec `throw` ou `timeout` à la fin. Sans le gestionnaire, Claude Code sauterait `guard` et exécuterait la commande. Le gestionnaire a [une seconde](/docs/fr/plugins/mods/reference#limits) pour répondre.354Pendant que `guard` fonctionne, le gestionnaire ne s'exécute jamais. Quand `guard` lève une exception ou expire sur un appel Bash, Claude Code appelle le gestionnaire avec le même événement. Le gestionnaire retourne `{ deny }`, donc la commande ne s'exécute pas, et Claude lit le texte avec `throw` ou `timeout` à la fin. Sans le gestionnaire, Claude Code sauterait `guard` et exécuterait la commande. Le gestionnaire a sa propre [limite de temps](/docs/fr/plugins/mods/reference#limits), plus courte.

328 355 

329<h2 id="next-steps">356<h2 id="next-steps">

330 Prochaines étapes357 Prochaines étapes

Details

10 10 

11Cette carte montre où un mod peut dessiner dans une session de terminal :11Cette carte montre où un mod peut dessiner dans une session de terminal :

12 12 

13<img src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-screen-map.svg?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=5fda26b6609c62b68c6f9e528c1590ea" className="dark:hidden" alt="Carte d'une session de terminal Claude Code. Un mod peut ajouter un volet comme barre latérale à droite, un toast en haut à droite de la transcription, une ligne de journal dans la transcription, une bande au-dessus de l'invite, et une ligne d'état sous l'invite. Un mod peut redessiner les messages, les lignes d'appels d'outils, et le spinner. L'invite est celle de Claude Code." width="600" height="336" data-path="images/mods-screen-map.svg" />13<img src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-screen-map.svg?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=5fda26b6609c62b68c6f9e528c1590ea" className="dark:hidden" alt="Carte d'une session de terminal Claude Code. Un mod peut ajouter un volet comme barre latérale à droite, un toast en haut à droite de la transcription, une ligne de journal dans la transcription, une bande au-dessus de l'invite, et une barre de statut sous l'invite. Un mod peut redessiner les messages, les lignes d'appels d'outils, et le spinner. L'invite est celle de Claude Code." width="600" height="336" data-path="images/mods-screen-map.svg" />

14 14 

15<img src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-screen-map-dark.svg?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=5b4161581a1bd2c0450b0c8b57bc1225" className="hidden dark:block" alt="Carte d'une session de terminal Claude Code. Un mod peut ajouter un volet comme barre latérale à droite, un toast en haut à droite de la transcription, une ligne de journal dans la transcription, une bande au-dessus de l'invite, et une ligne d'état sous l'invite. Un mod peut redessiner les messages, les lignes d'appels d'outils, et le spinner. L'invite est celle de Claude Code." width="600" height="336" data-path="images/mods-screen-map-dark.svg" />15<img src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-screen-map-dark.svg?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=5b4161581a1bd2c0450b0c8b57bc1225" className="hidden dark:block" alt="Carte d'une session de terminal Claude Code. Un mod peut ajouter un volet comme barre latérale à droite, un toast en haut à droite de la transcription, une ligne de journal dans la transcription, une bande au-dessus de l'invite, et une barre de statut sous l'invite. Un mod peut redessiner les messages, les lignes d'appels d'outils, et le spinner. L'invite est celle de Claude Code." width="600" height="336" data-path="images/mods-screen-map-dark.svg" />

16 16 

17Dans un terminal plus étroit, le volet se trouve au-dessus de l'invite au lieu de côté de la transcription.17Dans un terminal plus étroit, le volet se trouve au-dessus de l'invite au lieu d'être à côté de la transcription.

18 18 

19Construisez votre [premier mod](/docs/fr/plugins/mods/create) avant de commencer ici. Commencez par l'exemple travaillé, qui construit un volet avec deux onglets et un compteur, puis lisez la section pour chaque élément que vous voulez modifier.19Créez votre [premier mod](/docs/fr/plugins/mods/create) avant de commencer ici. Commencez par l'exemple travaillé, qui crée un volet avec deux onglets et un compteur, puis lisez la section pour chaque élément que vous voulez modifier.

20 20 

21<Note>21<Note>

22 Pour rechercher une prop ou une limite, consultez la [référence](/docs/fr/plugins/mods/reference#render-sites).22 Pour rechercher une prop ou une limite, consultez la [référence](/docs/fr/plugins/mods/reference#render-sites).


36 <video autoPlay muted loop playsInline controls className="w-full hidden dark:block" src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-hello-tabs-dark.mp4?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=ff7a14d713d6e5d3b0000efa8522ea4b" aria-label="La commande /hello-tabs est tapée à l'invite Claude Code et un volet encadré s'ouvre au-dessus, avec « 1 : One » et « 2 : Two » en haut et le texte « This is the first tab. » Le deuxième onglet affiche un bouton « Add one » à côté de « Count: 1 », et le compte monte à 3. Le volet revient ensuite au premier onglet." data-path="images/mods-hello-tabs-dark.mp4" />36 <video autoPlay muted loop playsInline controls className="w-full hidden dark:block" src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-hello-tabs-dark.mp4?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=ff7a14d713d6e5d3b0000efa8522ea4b" aria-label="La commande /hello-tabs est tapée à l'invite Claude Code et un volet encadré s'ouvre au-dessus, avec « 1 : One » et « 2 : Two » en haut et le texte « This is the first tab. » Le deuxième onglet affiche un bouton « Add one » à côté de « Count: 1 », et le compte monte à 3. Le volet revient ensuite au premier onglet." data-path="images/mods-hello-tabs-dark.mp4" />

37</Frame>37</Frame>

38 38 

39Claude Code n'a pas d'élément d'onglets intégré, donc les onglets sont deux boutons dans une ligne. Le mod garde la trace de celui qui est actif et dessine le contenu de cet onglet sous la ligne.39Les onglets sont deux boutons dans une ligne. Le mod garde la trace de celui qui est actif et dessine le contenu de cet onglet sous la ligne.

40 40 

41<Steps>41<Steps>

42 <Step title="Créer le plugin">42 <Step title="Créer le plugin">


63 </Step>63 </Step>

64 64 

65 <Step title="Écrire le code">65 <Step title="Écrire le code">

66 Le code fait trois choses, une dans chaque hook :66 Cette liste indique ce que fait chaque hook, dans l'ordre où ils apparaissent dans le code :

67 67 

68 * Ajoute la commande `/hello-tabs`68 * Ajoute la commande `/hello-tabs` et charge le compte qu'une session précédente a sauvegardé

69 * Ouvre le volet quand vous exécutez cette commande69 * Ouvre le volet quand vous exécutez cette commande

70 * Dessine le contenu du volet : la ligne d'onglets et le corps de l'onglet ouvert70 * Dessine le contenu du volet : la ligne d'onglets et le corps de l'onglet ouvert

71 71 


191 191 

192Un hook `ui.render` s'exécute pour chaque site de rendu sauf si vous le réduisez à celui que vous voulez dessiner. Pour choisir le site de rendu, passez un filtre, appelé un [matcher](/docs/fr/plugins/mods/events#filter-which-events-a-hook-handles), comme deuxième argument à `on`. `{ component: 'Pane' }` exécute le hook seulement pour les volets. Dans le hook, `e.component` nomme le site, `e.surface` dit quelle application dessine, et `e.props` contient les données propres du site. Pour un volet, `e.requestId` est l'`id` avec lequel vous l'avez ouvert.192Un hook `ui.render` s'exécute pour chaque site de rendu sauf si vous le réduisez à celui que vous voulez dessiner. Pour choisir le site de rendu, passez un filtre, appelé un [matcher](/docs/fr/plugins/mods/events#filter-which-events-a-hook-handles), comme deuxième argument à `on`. `{ component: 'Pane' }` exécute le hook seulement pour les volets. Dans le hook, `e.component` nomme le site, `e.surface` dit quelle application dessine, et `e.props` contient les données propres du site. Pour un volet, `e.requestId` est l'`id` avec lequel vous l'avez ouvert.

193 193 

194Deux sites sont vides jusqu'à ce qu'un mod les remplisse, le volet et la bande. Sélectionnez un onglet pour voir ce que chacun est et comment dessiner dedans :194Le volet et la bande sont vides jusqu'à ce qu'un mod les remplisse. Sélectionnez un onglet pour voir ce que chacun est et comment dessiner dedans :

195 195 

196<Tabs>196<Tabs>

197 <Tab title="Volet">197 <Tab title="Volet">


220| Site | Ce que c'est |220| Site | Ce que c'est |

221| :- | :- |221| :- | :- |

222| `UserMessage`, `AssistantMessage` | Un message dans la transcription |222| `UserMessage`, `AssistantMessage` | Un message dans la transcription |

223| `ToolUse`, `ToolResult`, `ToolGroup` | La ligne d'un appel d'outil, son résultat, et une exécution repliée d'appels |223| `ToolUse`, `ToolResult`, `ToolGroup` | La ligne d'un appel d'outil, son résultat, et un groupe d'appels replié |

224| `CommandOutput` | La ligne qu'une commande a imprimée |224| `CommandOutput` | La ligne qu'une commande a imprimée |

225| `AskUserQuestion` | Le dialogue que Claude ouvre pour vous poser une question |225| `AskUserQuestion` | Le dialogue que Claude ouvre pour vous poser une question |

226| `Spinner`, `ToolProgress`, `TurnDuration` | Lignes d'état pour un tour : la ligne qui s'anime pendant que Claude travaille, la ligne de progression en direct d'un outil en cours d'exécution, et la ligne qui ferme un tour |226| `Spinner`, `ToolProgress`, `TurnDuration` | Lignes d'état pour un tour : la ligne qui s'anime pendant que Claude travaille, la ligne de progression en direct d'un outil en cours d'exécution, et la ligne qui ferme un tour |

227| `InfoNotice`, `SessionMode`, `PromptHint` | Lignes d'état sous le logo, les étiquettes de mode dans le pied de page, et la ligne d'indice sous l'invite |227| `InfoNotice`, `SessionMode`, `PromptHint` | Lignes d'état sous le logo, les étiquettes de mode dans le pied de page, et la ligne d'indice sous l'invite |

228 228 

229À un site que Claude Code dessine déjà, votre hook a trois choix : modifier un détail, remplacer le dessin, ou le laisser tranquille. Sélectionnez un onglet pour voir chacun appliqué au spinner. Les exemples lisent une variable `calls` qu'un autre hook compte, comme dans le [mod tutoriel](/docs/fr/plugins/mods/create#write-a-mod-yourself).229À un site que Claude Code dessine déjà, votre hook peut modifier un détail, remplacer le dessin, ou le laisser tranquille. Sélectionnez un onglet pour voir chacun appliqué au spinner. Les exemples lisent une variable `calls` qu'un autre hook compte, comme dans le [mod tutoriel](/docs/fr/plugins/mods/create#write-a-mod-yourself).

230 230 

231<Tabs>231<Tabs>

232 <Tab title="Modifier un détail">232 <Tab title="Modifier un détail">


283 </Tab>283 </Tab>

284</Tabs>284</Tabs>

285 285 

286L'invite de permission n'est pas un site de rendu, donc un mod ne peut pas modifier ce qu'il affiche. Le dialogue de question, `AskUserQuestion`, en est un, donc un mod peut modifier cela.286À ces sites, `next(e)` retourne une référence au dessin de Claude Code, `{ type: 'engine', ref }`, sauf si un mod qui s'exécute après le vôtre a retourné son propre arbre. Pour modifier ce qui se trouve dans ce dessin, passez à `next` une copie de l'événement avec des props différentes, comme le fait l'onglet **Modifier un détail**. Vous pouvez retourner la référence telle quelle, ou la placer dans une `Box` à côté de vos propres éléments :

287 

288```javascript theme={null}

289on('ui.render', { component: 'Spinner' }, async ($, e, next) => {

290 const { Box, Text } = $.ui.resolve(e)

291 const theirs = await next(e)

292 return Box({ flexDirection: 'column', children: [theirs, Text({ children: ['under the spinner'] })] })

293})

294```

295 

296Pendant que Claude travaille, le spinner s'anime comme avant, et `under the spinner` apparaît en dessous.

297 

298La demande de permission n'est pas un site de rendu, donc un mod ne peut pas modifier ce qu'elle affiche. Le dialogue de question, `AskUserQuestion`, en est un, donc un mod peut modifier cela. Un arbre pour le dialogue doit contenir la référence exactement une fois, avec vos éléments au-dessus. Sinon, Claude Code dessine son propre dialogue.

287 299 

288Le terminal et l'application Desktop ne déclenchent pas tous les mêmes sites. `Pane`, `AbovePrompt`, `Spinner`, et les sites de transcription fonctionnent dans les deux. Quelques autres lignes d'état sont déclenchées seulement dans le terminal. Le [tableau des sites de rendu](/docs/fr/plugins/mods/reference#render-sites) liste où chacun est déclenché.300Le terminal et l'application Desktop ne déclenchent pas tous les mêmes sites. `Pane`, `AbovePrompt`, `Spinner`, et les sites de transcription fonctionnent dans les deux. Quelques autres lignes d'état sont déclenchées seulement dans le terminal. Le [tableau des sites de rendu](/docs/fr/plugins/mods/reference#render-sites) liste où chacun est déclenché.

289 301 


334* **Ouvert par quelque chose que l'utilisateur a fait**, comme une commande qu'il a exécutée ou un bouton qu'il a appuyé, le volet apparaît à n'importe quelle largeur346* **Ouvert par quelque chose que l'utilisateur a fait**, comme une commande qu'il a exécutée ou un bouton qu'il a appuyé, le volet apparaît à n'importe quelle largeur

335* **Ouvert par votre mod agissant par lui-même**, comme à partir d'une minuterie ou d'un hook [`turn.start`](/docs/fr/plugins/mods/events#follow-a-turn), le volet n'apparaît que dans un terminal d'au moins 144 colonnes de large. Après que l'utilisateur ait ouvert ce volet une fois lui-même, 110 colonnes suffisent.347* **Ouvert par votre mod agissant par lui-même**, comme à partir d'une minuterie ou d'un hook [`turn.start`](/docs/fr/plugins/mods/events#follow-a-turn), le volet n'apparaît que dans un terminal d'au moins 144 colonnes de large. Après que l'utilisateur ait ouvert ce volet une fois lui-même, 110 colonnes suffisent.

336 348 

337Quand le volet apparaît, `$.ui.open` se résout en `{ isPlaced: true }`. Quand le volet attend, `isPlaced` est `false` et `reason` est une chaîne qui dit pourquoi. Un volet en attente apparaît quand l'utilisateur l'ouvre ou élargit le terminal. Pour dire que quelque chose est disponible sans ouvrir un volet, appelez `$.ui.toast('Your message')`, qui affiche un petit avis qui disparaît après quelques secondes.349Quand le volet apparaît, `$.ui.open` se résout en `{ isPlaced: true }`. Quand le volet attend, `isPlaced` est `false` et `reason` est une chaîne qui dit pourquoi. Un volet en attente apparaît quand l'utilisateur l'ouvre ou élargit le terminal. Pour dire que quelque chose est disponible sans ouvrir un volet, appelez `$.ui.toast('Your message')`, qui affiche une notification toast.

338 350 

339<h2 id="build-a-tree-from-elements">351<h2 id="build-a-tree-from-elements">

340 Construire un arbre à partir d'éléments352 Construire un arbre à partir d'éléments


344 356 

345Pour obtenir les éléments, appelez `$.ui.resolve(e)` dans votre hook, comme dans `const { Box, Text, Button } = $.ui.resolve(e)`. Chaque élément est une fonction. Vous lui passez des props, et vous mettez les éléments et les chaînes qui vont à l'intérieur dans `children`.357Pour obtenir les éléments, appelez `$.ui.resolve(e)` dans votre hook, comme dans `const { Box, Text, Button } = $.ui.resolve(e)`. Chaque élément est une fonction. Vous lui passez des props, et vous mettez les éléments et les chaînes qui vont à l'intérieur dans `children`.

346 358 

347La plupart des dessins utilisent quatre éléments. Sélectionnez un onglet pour voir chacun et comment le terminal le dessine :359Sélectionnez un onglet pour voir chacun des éléments les plus courants et comment le terminal le dessine :

348 360 

349<Tabs>361<Tabs>

350 <Tab title="Texte">362 <Tab title="Texte">


407 ```419 ```

408 420 

409 ```text theme={null}421 ```text theme={null}

410 Note: Type a note and press Enter ⏎ add422 Note: Type a note and press Enter

411 ```423 ```

412 </Tab>424 </Tab>

413</Tabs>425</Tabs>

414 426 

415Ce tableau liste chaque élément :427La [galerie d'interfaces](/docs/fr/plugins/mods/gallery) contient des exemples et des captures d'écran de la plupart des éléments. Ce tableau liste chaque élément :

416 428 

417| Élément | Ce qu'il dessine | Où |429| Élément | Ce qu'il dessine | Où |

418| :- | :- | :- |430| :- | :- | :- |


425| `Client` | Une région dessinée par un deuxième fichier du vôtre, pour l'animation et l'entrée au pointeur. Ce fichier n'obtient pas l'API des mods. Il atteint vos hooks seulement en postant des données, qui arrivent comme un événement `ui.message`. | Terminal, Desktop |437| `Client` | Une région dessinée par un deuxième fichier du vôtre, pour l'animation et l'entrée au pointeur. Ce fichier n'obtient pas l'API des mods. Il atteint vos hooks seulement en postant des données, qui arrivent comme un événement `ui.message`. | Terminal, Desktop |

426| `Raster`, `Image` | Une [grille de cellules colorées](#draw-a-grid-of-colored-cells), et une image | Terminal |438| `Raster`, `Image` | Une [grille de cellules colorées](#draw-a-grid-of-colored-cells), et une image | Terminal |

427 439 

428Si votre module est un fichier `.tsx` ou `.jsx`, vous pouvez écrire l'arbre en JSX. Déstructurez les éléments de `$.ui.resolve(e)` d'abord, car un module de hooks n'a pas de globals d'éléments.440Si votre module est un fichier `.tsx` ou `.jsx`, vous pouvez écrire l'arbre en JSX. Déstructurez les éléments de `$.ui.resolve(e)` d'abord.

429 441 

430Si un arbre utilise un élément que l'application n'a pas, une prop qu'un élément ne prend pas, ou un enfant où aucun ne va, Claude Code dessine sa propre version du site.442Si un arbre utilise un élément que l'application n'a pas, une prop qu'un élément ne prend pas, ou un enfant où aucun ne va, Claude Code dessine sa propre version du site.

431 443 


435 Dessiner une grille de cellules colorées447 Dessiner une grille de cellules colorées

436</h3>448</h3>

437 449 

438Pour une carte thermique, une sparkline, ou un plateau de jeu dans le terminal, dessinez un `Raster` et non une `Box` pour chaque cellule. Un `Raster` prend une `key`, sa taille en `columns` et `rows`, et `cells`, qui empaquette chaque cellule dans une chaîne. Chaque cellule est trois nombres : le point de code du caractère, sa couleur et sa couleur de fond. Une couleur est un nombre hexadécimal avec deux chiffres chacun pour le rouge, le vert et le bleu, comme `0xc62828` pour un rouge, ou `0x01000000` pour la valeur par défaut du terminal.450Pour une carte thermique, une sparkline, ou un plateau de jeu dans le terminal, dessinez un `Raster` et non une `Box` pour chaque cellule. Un `Raster` prend une `key`, sa taille en `columns` et `rows`, et `cells`, une chaîne base64 qui empaquette toutes les cellules. Chaque cellule est trois nombres : le point de code du caractère, sa couleur et sa couleur de fond. Une couleur est une valeur RVB sur 24 bits en hexadécimal, comme `0xc62828` pour un rouge. La valeur `0x01000000`, juste au-dessus de cette plage, désigne la couleur par défaut du terminal.

439 451 

440L'application Desktop n'a pas de `Raster`, donc vérifiez `e.surface` et dessinez du texte là. Ce corps de volet dessine une carte thermique de trois par deux :452L'application Desktop n'a pas de `Raster`, donc vérifiez `e.surface` et dessinez du texte là. Ce corps de volet dessine une carte thermique de trois par deux :

441 453 


473 485 

474<img src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-heat-map.svg?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=b91bcce3bad74bc851149133d4acc5d5" alt="Un volet dans le terminal qui contient une petite grille de blocs colorés, deux lignes de trois. La ligne du haut est verte, ambre et rouge. La ligne du bas est verte, verte et ambre." width="360" height="132" data-path="images/mods-heat-map.svg" />486<img src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-heat-map.svg?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=b91bcce3bad74bc851149133d4acc5d5" alt="Un volet dans le terminal qui contient une petite grille de blocs colorés, deux lignes de trois. La ligne du haut est verte, ambre et rouge. La ligne du bas est verte, verte et ambre." width="360" height="132" data-path="images/mods-heat-map.svg" />

475 487 

476Le tableau `rows` est la partie que vous changeriez, et `cellsOf` la transforme en chaîne empaquetée. Le hook dessine seulement dans un volet dont l'`id` est `heat`, donc ouvrez-en un avec `$.ui.open({ id: 'heat' })` à partir d'une commande, comme l'exemple [`hello-tabs`](#build-a-pane-with-tabs) ouvre son volet.488Le tableau `rows` est la partie que vous changeriez, et `cellsOf` la transforme en chaîne empaquetée. Le hook dessine seulement dans un volet dont l'`id` est `heat`, donc ouvrez-en un avec `$.ui.open({ id: 'heat' })` à partir d'une commande, comme [l'exemple `hello-tabs`](#build-a-pane-with-tabs) ouvre son volet.

477 489 

478Chaque caractère doit être large d'une cellule. Pour animer un `Raster` qui est déjà à l'écran, appelez `$.ui.blit` avec l'`id` du volet comme `requestId`, la `key` du `Raster`, la même taille, et de nouvelles cellules. Pour cet exemple, c'est `$.ui.blit({ requestId: 'heat', key: 'grid', columns: 3, rows: 2, cells: cellsOf(newRows) })`. Il repeint cet élément sans exécuter votre hook `ui.render` à nouveau.490Chaque caractère doit être large d'une cellule. Pour animer un `Raster` qui est déjà à l'écran, appelez `$.ui.blit` avec l'`id` du volet comme `requestId`, la `key` du `Raster`, la même taille, et de nouvelles cellules. Pour cet exemple, c'est `$.ui.blit({ requestId: 'heat', key: 'grid', columns: 3, rows: 2, cells: cellsOf(newRows) })`. Il repeint cet élément sans exécuter votre hook `ui.render` à nouveau.

479 491 


481 Répondre aux appuis et à la saisie493 Répondre aux appuis et à la saisie

482</h2>494</h2>

483 495 

484Quand l'utilisateur appuie sur un bouton, tape dans un champ, ou choisit dans une liste que votre mod a dessinée, Claude Code appelle la fonction que vous avez donnée à ce contrôle, et elle s'exécute dans votre module. Chaque contrôle prend ses propres callbacks :496Quand l'utilisateur appuie sur un bouton, tape dans un champ, ou choisit dans une liste que votre mod a dessinée, Claude Code appelle le callback de ce contrôle, qui s'exécute dans votre module. Chaque contrôle prend ses propres callbacks :

485 497 

486* **`Button`** : prend `onPress(e)`, où `e.surface` est l'application d'où vient l'appui498* **`Button`** : prend `onPress(e)`, où `e.surface` est l'application d'où vient l'appui

487* **`Input`** : prend `onSubmit(value)` et `onInput(value)`499* **`Input`** : prend `onSubmit(value)` et `onInput(value)`

488* **`Select`** : prend `onSelect(value)` avec ses choix dans `options`, une liste d'au moins un choix avec des valeurs uniques, comme `[{ value: 'sm', label: 'Small' }, { value: 'lg', label: 'Large' }]`500* **`Select`** : prend `onSelect(value)` avec ses choix dans `options`, une liste d'au moins un choix avec des valeurs uniques, comme `[{ value: 'sm', label: 'Small' }, { value: 'lg', label: 'Large' }]`

489 501 

490Un test appuie ou tape dans un contrôle par sa `key`, donc donnez-en un à chaque contrôle. Chaque utilisation d'un contrôle déclenche aussi [`ui.press`, `ui.input`, ou `ui.select`](/docs/fr/plugins/mods/reference#interface) avec la `key` dans `e.element`, et un autre mod peut accrocher ces événements. Son hook s'exécute avant votre callback, donc il voit ce que l'utilisateur tape dans votre `Input` et peut le modifier ou répondre à la place de votre callback. L'API des mods n'a pas de méthode qui appuie sur le bouton d'un autre mod.502Un test appuie ou tape dans un contrôle par sa `key`, donc donnez-en un à chaque contrôle. Chaque utilisation d'un contrôle déclenche aussi [`ui.press`, `ui.input`, ou `ui.select`](/docs/fr/plugins/mods/reference#interface) avec la `key` dans `e.element`, et un autre mod peut gérer ces événements. Son hook s'exécute avant votre callback, donc il voit ce que l'utilisateur tape dans votre `Input` et peut le modifier ou répondre à la place de votre callback. L'API des mods n'a pas de méthode qui appuie sur le bouton d'un autre mod.

491 503 

492<h3 id="know-which-keys-your-mod-can-receive">504<h3 id="know-which-keys-your-mod-can-receive">

493 Focus clavier et touches de raccourci505 Focus clavier et touches de raccourci


499 Comment un volet obtient le focus clavier511 Comment un volet obtient le focus clavier

500</h4>512</h4>

501 513 

502Un volet obtient le focus clavier de l'une de trois façons :514Un volet obtient le focus clavier quand :

503 515 

504* Votre mod l'ouvre avec `focus: true` à partir d'une commande ou d'un appui516* Votre mod l'ouvre avec `focus: true` à partir d'une commande ou d'un appui

505* L'utilisateur appuie sur Ctrl+X puis Tab517* L'utilisateur appuie sur Ctrl+X puis Tab


527 Définir une touche de raccourci et le premier focus539 Définir une touche de raccourci et le premier focus

528</h4>540</h4>

529 541 

530Deux props sur un contrôle décident comment le clavier l'atteint :542Ces props sur un contrôle décident comment le clavier l'atteint :

531 543 

532* **`hotkey`** : pour laisser l'utilisateur appuyer sur un `Button` avec une touche, donnez-lui une `hotkey` d'un chiffre ou une lettre minuscule, comme dans `hotkey: 'a'`544* **`hotkey`** : pour laisser l'utilisateur appuyer sur un `Button` avec une touche, donnez-lui une `hotkey` d'un chiffre ou une lettre minuscule, comme dans `hotkey: 'a'`

533* **`autoFocus`** : pour choisir quel contrôle a le focus quand le volet s'ouvre, ajoutez `autoFocus: true` à celui-ci. Laissez la prop de côté sur les autres, car Claude Code refuse `autoFocus: false`.545* **`autoFocus`** : pour choisir quel contrôle a le focus quand le volet s'ouvre, ajoutez `autoFocus: true` à celui-ci. La prop n'accepte que `true`, donc omettez-la sur les autres contrôles.

534 546 

535Comment une touche de raccourci s'affiche dépend du bouton et de l'application :547Comment une touche de raccourci s'affiche dépend du bouton et de l'application :

536 548 


555╰──────────────────────────────────────────────────────────╯567╰──────────────────────────────────────────────────────────╯

556```568```

557 569 

558L'exemple utilise deux techniques :570L'exemple utilise ces techniques :

559 571 

560* **Prendre l'entrée tapée** : un `Input` appelle `onSubmit(value)` avec le texte du champ quand l'utilisateur appuie sur Entrée, et `onInput(value)` à chaque changement572* **Prendre l'entrée tapée** : un `Input` appelle `onSubmit(value)` avec le texte du champ quand l'utilisateur appuie sur Entrée, et `onInput(value)` à chaque changement

561* **Dessiner une liste** : mappez vos données à une ligne chacune, et donnez à chaque bouton de ligne sa propre `key`573* **Dessiner une liste** : mappez vos données à une ligne chacune, et donnez à chaque bouton de ligne sa propre `key`


629 641 

630L'exemple enregistre les notes et ne les charge pas. Pour les ramener dans la session suivante, lisez-les dans un hook `session.start`, de la même façon que `hello-tabs` lit `count`.642L'exemple enregistre les notes et ne les charge pas. Pour les ramener dans la session suivante, lisez-les dans un hook `session.start`, de la même façon que `hello-tabs` lit `count`.

631 643 

632Trois props composent la ligne du champ, `Note: Type a note and press Enter ⏎ add` :644Ces props composent la ligne du champ, `Note: Type a note and press Enter ⏎ add` :

633 645 

634| Prop | Dans l'exemple | Ce que c'est |646| Prop | Dans l'exemple | Ce que c'est |

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


700})712})

701```713```

702 714 

703Claude Code exécute maintenant votre hook `ui.render` une fois par seconde. La minuterie s'arrête quand le module se recharge, et la nouvelle copie du module démarre la sienne.715Claude Code exécute maintenant votre hook `ui.render` une fois par seconde. La minuterie s'arrête quand le module se recharge, et la nouvelle instance du module démarre la sienne.

704 716 

705<h3 id="how-often-a-site-can-redraw">717<h3 id="how-often-a-site-can-redraw">

706 À quelle fréquence un site peut redessiner718 À quelle fréquence un site peut redessiner

707</h3>719</h3>

708 720 

709Claude Code limite la fréquence à laquelle il redessine un site, donc votre mod peut appeler `$.ui.invalidate` aussi souvent que ses données changent. Le volet visible et la bande ont une limite plus élevée que les autres sites, et le [tableau des limites](/docs/fr/plugins/mods/reference#limits) contient les chiffres.721Claude Code limite la fréquence à laquelle il redessine un site, donc votre mod peut appeler `$.ui.invalidate` aussi souvent que ses données changent. Pour connaître la fréquence à laquelle chaque site peut redessiner, consultez le [tableau des limites](/docs/fr/plugins/mods/reference#limits).

710 722 

711Les appels qui viennent plus vite que la limite sont combinés en un redessin. Ce redessin exécute votre hook une fois, et le hook lit vos données telles qu'elles sont à ce moment, donc la valeur la plus récente s'affiche et les valeurs entre les deux ne s'affichent pas. Une animation ne peut pas s'exécuter plus vite que la limite.723Les appels qui viennent plus vite que la limite sont combinés en un redessin. Ce redessin exécute votre hook une fois, et le hook lit vos données telles qu'elles sont à ce moment, donc la valeur la plus récente s'affiche et les valeurs entre les deux ne s'affichent pas. Une animation ne peut pas s'exécuter plus vite que la limite.

712 724 


714 Conserver l'état726 Conserver l'état

715</h2>727</h2>

716 728 

717Un mod a trois endroits pour garder une valeur, et ils diffèrent dans la durée pendant laquelle la valeur dure : jusqu'à ce que le module se recharge, jusqu'à ce que la session se termine, ou d'une session à l'autre. Choisissez selon la durée pendant laquelle la valeur doit durer :729L'endroit où un mod garde une valeur détermine combien de temps elle dure : jusqu'à ce que le module se recharge, jusqu'à ce que la session se termine, ou d'une session à l'autre. Choisissez selon la durée pendant laquelle la valeur doit durer :

718 730 

719| La garder dans | Elle dure jusqu'à | L'utiliser pour |731| La garder dans | Elle dure jusqu'à | L'utiliser pour |

720| :- | :- | :- |732| :- | :- | :- |

721| Une variable au niveau du module | Le module se recharge, ce qui se produit chaque fois que vous enregistrez un fichier pendant le développement | Les valeurs que vous pouvez perdre, comme `tab` dans `hello-tabs` |733| Une variable au niveau du module | Le module se recharge, ce qui se produit chaque fois que vous enregistrez un fichier pendant le développement | Les valeurs que vous pouvez perdre, comme `tab` dans `hello-tabs` |

722| `$.state` | La session se termine, ou l'utilisateur exécute `/clear`, `/resume`, ou `/branch` | Les valeurs sur lesquelles un dessin dépend qui devraient survivre à un rechargement |734| `$.state` | La session se termine, ou l'utilisateur exécute `/clear`, `/resume`, ou `/branch` | Les valeurs dont dépend un dessin et qui devraient survivre à un rechargement |

723| `$.store` | Votre mod la supprime, ou aucune session ne lit ou n'écrit le magasin pendant [`cleanupPeriodDays`](/docs/fr/settings-reference#cleanupperioddays). Le magasin est un magasin clé-valeur, enregistré en tant que fichier JSON de votre propre plugin sous `~/.claude/plugins/store/`. | Les paramètres, l'historique, tout ce que l'utilisateur s'attend à trouver la prochaine fois |735| `$.store` | Votre mod la supprime, ou aucune session ne lit ou n'écrit le magasin pendant [`cleanupPeriodDays`](/docs/fr/settings-reference#cleanupperioddays). Le magasin est un magasin clé-valeur, enregistré en tant que fichier JSON de votre propre plugin sous `~/.claude/plugins/store/`. | Les paramètres, l'historique, tout ce que l'utilisateur s'attend à trouver la prochaine fois |

724 736 

725`$.store.get(key)` se résout en la valeur ou `undefined`, et `$.store.set(key, value)` prend n'importe quelle valeur JSON.737`$.store.get(key)` se résout en la valeur ou `undefined`, et `$.store.set(key, value)` prend n'importe quelle valeur JSON.

726 738 

727<h3 id="keep-a-value-in-state">739<h3 id="keep-a-value-in-$-state">

728 Garder une valeur dans `$.state`740 Garder une valeur dans `$.state`

729</h3>741</h3>

730 742 


736 Déclarer les valeurs748 Déclarer les valeurs

737</h4>749</h4>

738 750 

739Déclarez les valeurs dans un fichier de types. La clé externe est le nom de votre plugin, et chaque entrée en dessous est une valeur et son type. Enregistrez ceci sous `hello-tabs/types/index.d.ts` :751Déclarez les valeurs dans un fichier de déclaration de types. La clé externe est le nom de votre plugin, et chaque entrée en dessous est une valeur et son type. Enregistrez ceci sous `hello-tabs/types/index.d.ts` :

740 752 

741```typescript hello-tabs/types/index.d.ts theme={null}753```typescript hello-tabs/types/index.d.ts theme={null}

742declare module 'claude-code' {754declare module 'claude-code' {


786 798 

787Parce que le hook `ui.render` a lu `count`, Claude Code exécute le hook à nouveau chaque fois que le bouton l'écrit.799Parce que le hook `ui.render` a lu `count`, Claude Code exécute le hook à nouveau chaque fois que le bouton l'écrit.

788 800 

789Trois règles s'appliquent au code :801Ces règles s'appliquent au code :

790 802 

791* **Écrivez `plugin` et `key` comme des chaînes littérales** : `claude plugin validate` les lit de votre source803* **Écrivez `plugin` et `key` comme des chaînes littérales** : `claude plugin validate` les lit de votre source

792* **Déclarez chaque valeur dans le fichier de types** : sinon la validation échoue avec `hello-tabs.count is not declared`804* **Déclarez chaque valeur dans le fichier de déclaration de types** : sinon la validation échoue avec `hello-tabs.count is not declared`

793* **Écrivez à partir d'un callback ou du hook d'un autre événement** : un hook `ui.render` peut lire l'état et ne peut pas l'écrire, donc écrivez à partir de `onPress`, `onSubmit`, ou un hook pour un autre événement805* **Écrivez à partir d'un callback ou du hook d'un autre événement** : un hook `ui.render` peut lire l'état et ne peut pas l'écrire, donc écrivez à partir de `onPress`, `onSubmit`, ou un hook pour un autre événement

794 806 

795<h4 id="change-hello-tabs-to-use-state">807<h4 id="change-hello-tabs-to-use-$-state">

796 Modifier `hello-tabs` pour utiliser `$.state`808 Modifier `hello-tabs` pour utiliser `$.state`

797</h4>809</h4>

798 810 


809 Charger une valeur sauvegardée à nouveau après `/clear`821 Charger une valeur sauvegardée à nouveau après `/clear`

810</h3>822</h3>

811 823 

812Si votre mod copie une valeur sauvegardée de `$.store` dans `$.state` à `session.start`, il doit la copier à nouveau après `/clear`, `/resume`, ou `/branch`. Ces commandes remettent chaque valeur `$.state` à sa valeur par défaut, et `session.start` ne se déclenche pas à nouveau. [`classic.SessionStart`](/docs/fr/plugins/mods/events#hook-the-settings-hook-events) se déclenche après chacune d'elles, avec `e.source` défini sur `clear`, `resume`, ou `fork`, donc copiez la valeur à nouveau dans un hook dessus. Sinon votre dessin affiche la valeur par défaut, et un callback qui enregistre la valeur `$.state` écrit la valeur par défaut sur ce que vous avez stocké.824Si votre mod copie une valeur sauvegardée de `$.store` dans `$.state` à `session.start`, il doit la copier à nouveau après `/clear`, `/resume`, ou `/branch`. Ces commandes remettent chaque valeur `$.state` à sa valeur par défaut, et `session.start` ne se déclenche pas à nouveau. [`classic.SessionStart`](/docs/fr/plugins/mods/events#hook-the-settings-hook-events) se déclenche en revanche après chacune d'elles, avec `e.source` défini sur `clear`, `resume`, ou `fork`, donc copiez la valeur à nouveau dans un hook dessus. Sinon votre dessin affiche la valeur par défaut, et un callback qui enregistre la valeur `$.state` écrit la valeur par défaut sur ce que vous avez stocké.

813 825 

814Ce code charge `count` à partir des deux hooks. Il s'appuie sur la version `$.state` de `hello-tabs`, où `count` est un atome et `update` est importé. Mettez `loadCount` au-dessus de `register`, et ajoutez l'appel `loadCount` au hook `session.start` que vous avez déjà. `classic.SessionStart` se déclenche aussi au démarrage et après compaction, ce qui ne réinitialise pas `$.state`, donc le filtre sur `source` garde le hook aux trois réinitialisations :826Ce code charge `count` à partir des deux hooks. Il s'appuie sur la version `$.state` de `hello-tabs`, où `count` est un atome et `update` est importé. Mettez `loadCount` au-dessus de `register`, et ajoutez l'appel `loadCount` au hook `session.start` que vous avez déjà. `classic.SessionStart` se déclenche aussi au démarrage et après compaction, ce qui ne réinitialise pas `$.state`, donc le filtre sur `source` garde le hook aux trois réinitialisations :

815 827 


835 847 

836Avec les deux hooks en place, le volet affiche le compte sauvegardé après `/clear` et non `0`, et le prochain appui sur **Add one** ajoute au compte sauvegardé.848Avec les deux hooks en place, le volet affiche le compte sauvegardé après `/clear` et non `0`, et le prochain appui sur **Add one** ajoute au compte sauvegardé.

837 849 

838`loadCount` écrit la valeur stockée sur celle dans `$.state`, et `session.start` se déclenche à nouveau chaque fois que le module se recharge. Pour garder le magasin de prendre du retard, enregistrez à chaque changement, comme le bouton **Add one** le fait.850`loadCount` écrit la valeur stockée sur celle dans `$.state`, et `session.start` se déclenche à nouveau chaque fois que le module se recharge. Pour éviter que le magasin ne prenne du retard, enregistrez à chaque changement, comme le fait le bouton **Add one**.

839 851 

840Pour vérifier le rechargement sans une session, [testez le dessin après `/clear`](/docs/fr/plugins/mods/test#test-a-drawing-after-clear).852Pour vérifier le rechargement sans une session, [testez le dessin après `/clear`](/docs/fr/plugins/mods/test#test-a-drawing-after-clear).

841 853 


845 857 

846Chaque session sur votre machine qui exécute votre mod partage un `$.store`. Un `get` suivi d'un `set` n'est pas atomique. Quand deux sessions lisent chacune une valeur, la modifient et l'écrivent, elles font la course, et la deuxième écriture remplace la première.858Chaque session sur votre machine qui exécute votre mod partage un `$.store`. Un `get` suivi d'un `set` n'est pas atomique. Quand deux sessions lisent chacune une valeur, la modifient et l'écrivent, elles font la course, et la deuxième écriture remplace la première.

847 859 

848Deux choix rendent cela moins probable :860Pour rendre cela moins probable :

849 861 

850* **Donnez à chaque élément sa propre clé** : un `set` change seulement sa propre clé, donc les sessions qui écrivent des clés différentes ne s'écrasent pas mutuellement862* **Donnez à chaque élément sa propre clé** : un `set` change seulement sa propre clé, donc les sessions qui écrivent des clés différentes ne s'écrasent pas mutuellement

851* **Lisez à nouveau juste avant d'écrire** : pour une valeur que plusieurs sessions changent, `get` la clé dans le callback et construisez la nouvelle valeur à partir de cela, pas à partir d'une copie que vous avez chargée à `session.start`. L'écriture d'une autre session est toujours perdue si elle atterrit entre votre `get` et votre `set`.863* **Lisez à nouveau juste avant d'écrire** : pour une valeur que plusieurs sessions changent, `get` la clé dans le callback et construisez la nouvelle valeur à partir de cela, pas à partir d'une copie que vous avez chargée à `session.start`. L'écriture d'une autre session est toujours perdue si elle atterrit entre votre `get` et votre `set`.

Details

30 Obtenir un mod30 Obtenir un mod

31</h2>31</h2>

32 32 

33Vous pouvez commencer avec un mod de trois façons :33Pour commencer avec un mod :

34 34 

35* **Utiliser un que vous avez déjà** : certaines des propres fonctionnalités de Claude Code sont des mods, comme `/diff`. Voir [Mods intégrés à Claude Code](#mods-built-into-claude-code).35* **Utiliser un que vous avez déjà** : certaines des propres fonctionnalités de Claude Code sont des mods, comme `/diff`. Voir [Mods intégrés à Claude Code](#mods-built-into-claude-code).

36* **En créer un** : décrivez ce que vous voulez dans une session Claude Code, et Claude écrit le mod. Voir [Demander un mod à Claude](/docs/fr/plugins/mods/create#ask-claude-for-a-mod). Pour apprendre comment fonctionne le code d'un mod, [écrivez-en un vous-même](/docs/fr/plugins/mods/create#write-a-mod-yourself).36* **En créer un** : décrivez ce que vous voulez dans une session Claude Code, et Claude écrit le mod. Voir [Demander un mod à Claude](/docs/fr/plugins/mods/create#ask-claude-for-a-mod). Pour apprendre comment fonctionne le code d'un mod, [écrivez-en un vous-même](/docs/fr/plugins/mods/create#write-a-mod-yourself).

37* **En installer un** : voir [Installer ou mettre à jour un mod](#install-or-update-a-mod)37* **En installer un** : voir [Installer ou mettre à jour un mod](#install-or-update-a-mod), ou [essayer un mod d'exemple](#try-a-sample-mod)

38 38 

39<h3 id="install-or-update-a-mod">39<h3 id="install-or-update-a-mod">

40 Installer ou mettre à jour un mod40 Installer ou mettre à jour un mod


49* Dans une session Claude Code, exécutez `/plugin install token-chart@your-org`.49* Dans une session Claude Code, exécutez `/plugin install token-chart@your-org`.

50* Dans votre shell, exécutez `claude plugin install token-chart@your-org`.50* Dans votre shell, exécutez `claude plugin install token-chart@your-org`.

51 51 

52[Installer les plugins](/docs/fr/plugins/install) couvre les marketplaces, les scopes, l'extension VS Code et l'application Desktop, et [garder les plugins à jour](/docs/fr/plugins/install#keep-plugins-updated), qui s'appliquent tous à un plugin contenant un mod sans modifications.52[Installer les plugins](/docs/fr/plugins/install) couvre les marketplaces, les portées, l'extension VS Code et l'application Desktop, et [garder les plugins à jour](/docs/fr/plugins/install#keep-plugins-updated), qui s'appliquent tous à un plugin contenant un mod sans modifications.

53 53 

54Si vous installez ou mettez à jour un mod à partir de votre shell pendant qu'une session est ouverte, exécutez `/reload-plugins` dans cette session pour le charger. Sinon, il se charge la prochaine fois que vous démarrez Claude Code.54Si vous installez ou mettez à jour un mod à partir de votre shell pendant qu'une session est ouverte, exécutez `/reload-plugins` dans cette session pour le charger. Sinon, il se charge la prochaine fois que vous démarrez Claude Code.

55 55 

56<h3 id="try-a-sample-mod">

57 Essayer un mod d'exemple

58</h3>

59 

60Anthropic partage des mods d'exemple dans le [répertoire `claude-code/mods` du dépôt `claude-code-playground`](https://github.com/anthropics/claude-code-playground/tree/main/claude-code/mods). Chacun est un plugin complet, et son README explique comment il a été construit. Le dépôt les partage tels quels, sans support.

61 

62* [`token-weather`](https://github.com/anthropics/claude-code-playground/tree/main/claude-code/mods/token-weather) : dessine une prévision de votre fenêtre de contexte au-dessus du prompt

63* [`blast-radius`](https://github.com/anthropics/claude-code-playground/tree/main/claude-code/mods/blast-radius) : retient une commande shell risquée, comme `rm -rf` ou un force push, et montre ce qu'elle modifierait, avec des boutons pour continuer ou annuler

64* [`replay-theater`](https://github.com/anthropics/claude-code-playground/tree/main/claude-code/mods/replay-theater) : ajoute une commande `/replay` qui parcourt pas à pas les modifications de fichiers effectuées par Claude lors du dernier tour

65 

66Un mod d'exemple s'exécute avec vos permissions. Pour voir ce qu'il fait avant de le charger, [listez ses hooks et ses appels](#list-what-a-mod-does-before-you-install-one).

67 

68Pour en essayer un, clonez le dépôt et [chargez le répertoire du mod pour une session](/docs/fr/plugins/create#load-a-directory-or-archive-for-one-session) avec `--plugin-dir`. Pour confirmer que le mod a été chargé, [vérifiez quels mods la session a chargés](#see-which-mods-a-session-loaded).

69 

70Pour en conserver un, [ajoutez le répertoire `claude-code/mods` du clone en tant que marketplace](/docs/fr/plugins/install#add-a-marketplace), puis installez le mod à partir de `claude-code-playground-mods`. La marketplace pointe vers votre clone, donc le mod cesse de se charger si vous le déplacez ou le supprimez.

71 

56<h2 id="decide-whether-to-trust-a-mod">72<h2 id="decide-whether-to-trust-a-mod">

57 Décider si vous faites confiance à un mod73 Décider si vous faites confiance à un mod

58</h2>74</h2>


67 83 

68* **Agir sur votre machine en tant que vous** : lire et écrire des fichiers n'importe où où votre compte utilisateur peut, démarrer des programmes et faire des requêtes réseau84* **Agir sur votre machine en tant que vous** : lire et écrire des fichiers n'importe où où votre compte utilisateur peut, démarrer des programmes et faire des requêtes réseau

69* **Lire vos secrets** : les variables d'environnement et les fichiers de paramètres, y compris une clé API que vous gardez dans l'un ou l'autre85* **Lire vos secrets** : les variables d'environnement et les fichiers de paramètres, y compris une clé API que vous gardez dans l'un ou l'autre

70* **Voir votre session** : chaque invite que vous envoyez et chaque appel d'outil que Claude fait86* **Voir votre session** : chaque prompt que vous envoyez et chaque appel d'outil que Claude fait

71* **Modifier votre session** : réécrire une invite ou un appel d'outil, soumettre une invite comme si vous l'aviez tapée, ou envoyer un message à une autre de vos sessions87* **Modifier votre session** : réécrire un prompt ou un appel d'outil, soumettre un prompt comme si vous l'aviez tapé, ou envoyer un message à une autre de vos sessions

72* **Agir sans vous demander** : approuver un appel d'outil avant que vous ne soyez invité88* **Agir sans vous demander** : approuver un appel d'outil avant que la question ne vous soit posée

73* **Dépenser votre utilisation** : appeler un modèle sur votre plan ou clé API89* **Dépenser votre utilisation** : appeler un modèle sur votre plan ou clé API

74 90 

75Un mod qui approuve les appels d'outils peut approuver un appel qu'une règle `ask` demanderait, ou qu'un de vos propres hooks `PreToolUse` a bloqué. [Étendre les permissions avec les hooks](/docs/fr/permissions#extend-permissions-with-hooks) énumère ce qu'un tel mod peut approuver, y compris quand il peut approuver un appel qu'une règle `deny` refuse.91Les mods ne sont pas isolés dans un sandbox. Si vous activez le [sandboxing](/docs/fr/sandboxing), le sandbox isole les commandes Bash que Claude exécute, et un processus qu'un mod démarre s'exécute en dehors de celui-ci.

76 92 

77Un mod peut remodeler une grande partie de l'interface de Claude Code, mais pas l'invite de permission. Il ne peut pas modifier ce qu'une invite vous montre.93Un mod qui approuve les appels d'outils peut approuver un appel pour lequel une règle `ask` vous demanderait confirmation, ou qu'un de vos propres hooks `PreToolUse` a bloqué. [Étendre les permissions avec les hooks](/docs/fr/permissions#extend-permissions-with-hooks) énumère ce qu'un tel mod peut approuver, y compris quand il peut approuver un appel qu'une règle `deny` refuse.

94 

95Un mod peut remodeler une grande partie de l'interface de Claude Code, mais pas la demande de permission. Il ne peut pas modifier ce qu'une demande vous montre.

78 96 

79<h3 id="list-what-a-mod-does-before-you-install-one">97<h3 id="list-what-a-mod-does-before-you-install-one">

80 Énumérer ce qu'un mod fait avant de l'installer98 Énumérer ce qu'un mod fait avant de l'installer

81</h3>99</h3>

82 100 

83Avant d'installer un mod, vous pouvez énumérer les événements sur lesquels il se branche et ce qu'il demande à Claude Code de faire, comme lire un fichier ou faire une requête réseau, sans l'exécuter. Obtenez d'abord les fichiers du plugin, par exemple en clonant son référentiel. Ensuite, dans votre shell, exécutez `claude plugin validate` sur le répertoire du plugin :101Avant d'installer un mod, vous pouvez énumérer les événements qu'il gère et ce qu'il demande à Claude Code de faire, comme lire un fichier ou faire une requête réseau, sans l'exécuter. Obtenez d'abord les fichiers du plugin, par exemple en clonant son dépôt. Ensuite, dans votre shell, exécutez `claude plugin validate` sur le répertoire du plugin :

84 102 

85```bash theme={null}103```bash theme={null}

86claude plugin validate ./some-mod104claude plugin validate ./some-mod


97Pour désactiver les mods, choisissez combien en arrêter et pour combien de temps. Pour les réactiver, annulez le même changement :115Pour désactiver les mods, choisissez combien en arrêter et pour combien de temps. Pour les réactiver, annulez le même changement :

98 116 

99* **Un mod** : désactivez ou désinstallez son plugin à partir de l'[onglet **Installé** dans `/plugin`](/docs/fr/plugins/install#manage-installed-plugins)117* **Un mod** : désactivez ou désinstallez son plugin à partir de l'[onglet **Installé** dans `/plugin`](/docs/fr/plugins/install#manage-installed-plugins)

100* **Chaque mod installé, pour une session** : démarrez Claude Code avec [`--safe-mode`](/docs/fr/cli-reference#cli-flags), qui laisse également de côté vos autres personnalisations118* **Chaque mod installé, pour une session** : démarrez Claude Code avec [`--safe-mode`](/docs/fr/cli-reference#cli-flags), qui désactive également vos autres personnalisations

101* **Chaque mod que vous avez installé, dans chaque session** : définissez [`"disableAllHooks": true`](/docs/fr/settings-reference#disableallhooks) dans `~/.claude/settings.json`. Vos settings hooks et votre ligne d'état personnalisée s'arrêtent aussi. Ce que votre organisation gère continue de fonctionner.119* **Chaque mod que vous avez installé, dans chaque session** : définissez [`"disableAllHooks": true`](/docs/fr/settings-reference#disableallhooks) dans `~/.claude/settings.json`. Vos settings hooks et votre barre de statut personnalisée s'arrêtent aussi. Ce que votre organisation gère continue de fonctionner.

102 120 

103Si vous utilisez Claude Code via une organisation, un administrateur peut également limiter les mods qui se chargent. Les administrateurs commencent à [Empêcher les mods installés par l'utilisateur de se charger](/docs/fr/plugins/mods/admin#stop-user-installed-mods-from-loading).121Si vous utilisez Claude Code via une organisation, un administrateur peut également limiter les mods qui se chargent. Les administrateurs commencent à [Empêcher les mods installés par l'utilisateur de se charger](/docs/fr/plugins/mods/admin#stop-user-installed-mods-from-loading).

104 122 

123`disableAllHooks` et `allowManagedModsOnly` de votre organisation arrêtent un mod et laissent le reste de son plugin en place : le plugin reste installé, et ses skills, commandes, agents et serveurs MCP se chargent. D'autres paramètres et flags vont plus loin. [`disableAllHooks`](/docs/fr/settings-reference#disableallhooks) et [Ce qui s'exécute sous `allowManagedHooksOnly`](/docs/fr/settings-reference#what-runs-under-allowmanagedhooksonly) indiquent l'effet de chacun sur un plugin et ses settings hooks.

124 

105Pour savoir si les mods peuvent se charger pour vous, voir [Vérifier si les mods peuvent se charger](/docs/fr/plugins/mods/troubleshoot#check-whether-mods-can-load).125Pour savoir si les mods peuvent se charger pour vous, voir [Vérifier si les mods peuvent se charger](/docs/fr/plugins/mods/troubleshoot#check-whether-mods-can-load).

106 126 

107<Note>127<Note>


136Ceci est un `register.js` complet. Il compte les appels d'outils que Claude fait et affiche le compte à côté du spinner pendant que Claude travaille, comme dans `Thinking · tool calls: 3…`.156Ceci est un `register.js` complet. Il compte les appels d'outils que Claude fait et affiche le compte à côté du spinner pendant que Claude travaille, comme dans `Thinking · tool calls: 3…`.

137 157 

138```javascript hooks/register.js theme={null}158```javascript hooks/register.js theme={null}

139// Le compte, partagé par les deux hooks ci-dessous159// The count, shared by the two hooks below

140let calls = 0160let calls = 0

141 161 

142// Claude Code appelle ceci une fois quand le mod se charge162// Claude Code calls this once when the mod loads

143export function register(on) {163export function register(on) {

144 // S'exécute chaque fois que Claude est sur le point d'utiliser un outil164 // Runs each time Claude is about to use a tool

145 on('tool.call', async ($, e, next) => {165 on('tool.call', async ($, e, next) => {

146 calls += 1166 calls += 1

147 // Demandez à Claude Code de redessiner l'interface, pour que le nouveau compte s'affiche167 // Ask Claude Code to draw the interface again, so the new count shows

148 $.ui.invalidate('ui.render')168 $.ui.invalidate('ui.render')

149 // Laissez l'outil s'exécuter comme d'habitude169 // Let the tool run as usual

150 return next(e)170 return next(e)

151 })171 })

152 172 

153 // S'exécute chaque fois que Claude Code dessine le spinner173 // Runs each time Claude Code draws the spinner

154 on('ui.render', { component: 'Spinner' }, async ($, e, next) => {174 on('ui.render', { component: 'Spinner' }, async ($, e, next) => {

155 // Gardez le spinner de Claude Code, avec le compte ajouté après son mot175 // Keep Claude Code's spinner, with the count added after its word

156 return next({ ...e, props: { ...e.props, suffix: ' · tool calls: ' + calls + '…' } })176 return next({ ...e, props: { ...e.props, suffix: ' · tool calls: ' + calls + '…' } })

157 })177 })

158}178}


163* **Le hook [`tool.call`](/docs/fr/plugins/mods/reference#tools)** s'exécute chaque fois que Claude est sur le point d'utiliser un outil. Il ajoute un à `calls`, demande à Claude Code de redessiner l'interface, et laisse l'outil s'exécuter comme d'habitude.183* **Le hook [`tool.call`](/docs/fr/plugins/mods/reference#tools)** s'exécute chaque fois que Claude est sur le point d'utiliser un outil. Il ajoute un à `calls`, demande à Claude Code de redessiner l'interface, et laisse l'outil s'exécuter comme d'habitude.

164* **Le hook [`ui.render`](/docs/fr/plugins/mods/reference#interface)** s'exécute chaque fois que Claude Code dessine le spinner. Il garde le propre spinner de Claude Code et ajoute le compte après le mot.184* **Le hook [`ui.render`](/docs/fr/plugins/mods/reference#interface)** s'exécute chaque fois que Claude Code dessine le spinner. Il garde le propre spinner de Claude Code et ajoute le compte après le mot.

165 185 

166Cet enregistrement montre le mod en action. Regardez la ligne du spinner au-dessus de la boîte d'invite : pendant que Claude énumère un répertoire et lit deux fichiers, il lit `Thinking · tool calls: 1…`, puis `2…`, puis `3…`.186Cet enregistrement montre le mod en action. Regardez la ligne du spinner au-dessus de la zone de prompt : pendant que Claude énumère un répertoire et lit deux fichiers, il lit `Thinking · tool calls: 1…`, puis `2…`, puis `3…`.

167 187 

168<Frame>188<Frame>

169 <video autoPlay muted loop playsInline controls className="w-full dark:hidden" src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-overview-light.mp4?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=00a18aa0743b59a700f0275ce226e6d1" aria-label="Dans une session Claude Code, l'invite « list the files here and read the README » est tapée et envoyée. Pendant que Claude travaille, le spinner lit « Thinking · tool calls: 1 », puis 2, puis 3, alors que Claude énumère les fichiers et en lit deux." data-path="images/mods-overview-light.mp4" />189 <video autoPlay muted loop playsInline controls className="w-full dark:hidden" src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-overview-light.mp4?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=00a18aa0743b59a700f0275ce226e6d1" aria-label="Dans une session Claude Code, le prompt « list the files here and read the README » est tapé et envoyé. Pendant que Claude travaille, le spinner lit « Thinking · tool calls: 1 », puis 2, puis 3, alors que Claude énumère les fichiers et en lit deux." data-path="images/mods-overview-light.mp4" />

170 190 

171 <video autoPlay muted loop playsInline controls className="w-full hidden dark:block" src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-overview-dark.mp4?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=d5223da2fef16ceaaa214a36d72c0536" aria-label="Dans une session Claude Code, l'invite « list the files here and read the README » est tapée et envoyée. Pendant que Claude travaille, le spinner lit « Thinking · tool calls: 1 », puis 2, puis 3, alors que Claude énumère les fichiers et en lit deux." data-path="images/mods-overview-dark.mp4" />191 <video autoPlay muted loop playsInline controls className="w-full hidden dark:block" src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-overview-dark.mp4?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=d5223da2fef16ceaaa214a36d72c0536" aria-label="Dans une session Claude Code, le prompt « list the files here and read the README » est tapé et envoyé. Pendant que Claude travaille, le spinner lit « Thinking · tool calls: 1 », puis 2, puis 3, alors que Claude énumère les fichiers et en lit deux." data-path="images/mods-overview-dark.mp4" />

172</Frame>192</Frame>

173 193 

174<h3 id="what-a-hook-can-do-with-an-event">194<h3 id="what-a-hook-can-do-with-an-event">

175 Ce qu'un hook peut faire avec un événement195 Ce qu'un hook peut faire avec un événement

176</h3>196</h3>

177 197 

178Claude Code exécute votre hook avant d'agir sur l'événement, donc le hook décide ce qui se passe ensuite. Il a trois choix :198Claude Code exécute votre hook avant d'agir sur l'événement, donc le hook décide ce qui se passe ensuite. Il peut :

179 199 

180* **Observer** : noter ce qui se passe et le laisser continuer inchangé, comme le fait le hook `tool.call` dans l'exemple200* **Observer** : noter ce qui se passe et le laisser continuer inchangé, comme le fait le hook `tool.call` dans l'exemple

181* **Réécrire** : modifier l'événement avant qu'il ne continue, comme le fait le hook `ui.render` quand il ajoute le compte au spinner201* **Réécrire** : modifier l'événement avant qu'il ne continue, comme le fait le hook `ui.render` quand il ajoute le compte au spinner


189 Où les mods s'exécutent209 Où les mods s'exécutent

190</h3>210</h3>

191 211 

192Les hooks d'un mod s'exécutent dans chaque type de session qui charge le plugin. Le dessin est plus étroit : seul le terminal et l'application Desktop affichent les volets, les bandes et les lignes remplacées d'un mod. Ce tableau énumère chaque endroit où vous pourriez exécuter Claude Code :212Les hooks d'un mod s'exécutent dans chaque type de session qui charge le plugin. Le dessin est plus étroit : seuls le terminal et l'application Desktop affichent les volets, les bandes et les lignes remplacées d'un mod. Ce tableau énumère chaque endroit où vous pourriez exécuter Claude Code :

193 213 

194| Où vous exécutez Claude Code | Les hooks s'exécutent | Ce que le mod dessine apparaît |214| Où vous exécutez Claude Code | Les hooks s'exécutent | Ce que le mod dessine apparaît |

195| :- | :- | :- |215| :- | :- | :- |


198| Une [session WSL](/docs/fr/desktop-wsl) dans l'application Desktop | Non, car les plugins ne sont pas disponibles dans les sessions WSL | Non |218| Une [session WSL](/docs/fr/desktop-wsl) dans l'application Desktop | Non, car les plugins ne sont pas disponibles dans les sessions WSL | Non |

199| Le panneau de chat de l'extension VS Code | Oui | Non |219| Le panneau de chat de l'extension VS Code | Oui | Non |

200| `claude -p` et le [SDK Agent](/docs/fr/agent-sdk/overview) | Oui | Non |220| `claude -p` et le [SDK Agent](/docs/fr/agent-sdk/overview) | Oui | Non |

201| [Contrôle à distance](/docs/fr/remote-control) à partir de claude.ai ou de l'application mobile | Oui, dans la session sur votre machine | Dans le terminal sur votre machine |221| [Remote Control](/docs/fr/remote-control) à partir de claude.ai ou de l'application mobile | Oui, dans la session sur votre machine | Dans le terminal sur votre machine |

202| Une [session cloud](/docs/fr/claude-code-on-the-web) | Oui, pour un plugin qui [atteint la session cloud](/docs/fr/cloud-environments#what-carries-over-from-your-setup) | Non |222| Une [session cloud](/docs/fr/claude-code-on-the-web) | Oui, pour un plugin qui [atteint la session cloud](/docs/fr/cloud-environments#what-carries-over-from-your-setup) | Non |

203 223 

204Un mod qui dessine peut vérifier dans quelle application il s'exécute et revenir à une ligne dans la transcription ou à la réponse textuelle d'une commande où rien ne dessine.224Un mod qui dessine peut vérifier dans quelle application il s'exécute et revenir à une ligne dans la transcription ou à la réponse textuelle d'une commande où rien ne dessine.


217 237 

218| | Mod | Settings hook | Skill | Serveur MCP |238| | Mod | Settings hook | Skill | Serveur MCP |

219| :- | :- | :- | :- | :- |239| :- | :- | :- | :- | :- |

220| Ce que c'est | Des fonctions dans un plugin que Claude Code appelle dans son propre processus | Une commande shell, une requête HTTP ou une invite que Claude Code exécute sur un événement du cycle de vie | Un fichier `SKILL.md` d'instructions que Claude lit | Un processus ou un service externe qui donne des outils à Claude |240| Ce que c'est | Des fonctions dans un plugin que Claude Code appelle dans son propre processus | Une commande shell, une requête HTTP ou un prompt que Claude Code exécute sur un événement du cycle de vie | Un fichier `SKILL.md` d'instructions que Claude lit | Un processus ou un service externe qui donne des outils à Claude |

221| Ce qu'il peut modifier | Les appels d'outils, les invites, les commandes, les tours et ce que l'interface dessine | Si un appel d'outil ou une invite continue, les arguments et le résultat d'un appel d'outil, et le contexte ajouté pour Claude | Ce que Claude sait et fait | Les outils que Claude a |241| Ce qu'il peut modifier | Les appels d'outils, les prompts, les commandes, les tours et ce que l'interface dessine | Si un appel d'outil ou un prompt continue, les arguments et le résultat d'un appel d'outil, et le contexte ajouté pour Claude | Ce que Claude sait et fait | Les outils que Claude a |

222| Peut-il dessiner dans l'interface | Oui | Non | Non | Non |242| Peut-il dessiner dans l'interface | Oui | Non | Non | Non |

223| Ce que vous écrivez | JavaScript ou TypeScript | Un script et une entrée `settings.json` | Markdown | Un serveur dans n'importe quel langage |243| Ce que vous écrivez | JavaScript ou TypeScript | Un script et une entrée `settings.json` | Markdown | Un serveur dans n'importe quel langage |

224| Choisissez-le quand | Vous voulez un volet, une bande au-dessus de l'invite, une commande personnalisée, ou réécrire un événement | Vous voulez bloquer, autoriser ou enregistrer un événement avec un script que vous avez déjà | Vous continuez à coller les mêmes instructions dans le chat | Claude doit atteindre un système externe |244| Choisissez-le quand | Vous voulez un volet, une bande au-dessus du prompt, une commande personnalisée, ou réécrire un événement | Vous voulez bloquer, autoriser ou journaliser un événement avec un script que vous avez déjà | Vous continuez à coller les mêmes instructions dans le chat | Claude doit atteindre un système externe |

225 245 

226Chacun des autres a sa propre page : [Hooks](/docs/fr/hooks), [Skills](/docs/fr/skills) et [MCP](/docs/fr/mcp). Un plugin peut contenir les quatre, donc un mod peut être livré dans le même plugin qu'une skill et un serveur MCP.246Chacun des autres a sa propre page : [Hooks](/docs/fr/hooks), [Skills](/docs/fr/skills) et [MCP](/docs/fr/mcp). Un plugin peut tous les contenir, donc un mod peut être livré dans le même plugin qu'un skill et un serveur MCP.

227 247 

228<h2 id="mods-built-into-claude-code">248<h2 id="mods-built-into-claude-code">

229 Mods intégrés à Claude Code249 Mods intégrés à Claude Code


237| :- | :- | :- | :- |257| :- | :- | :- | :- |

238| `cc-plugin-agents-md` | Charge `AGENTS.md` comme instructions de projet | Chaque session, sauf [celles qui ne peuvent pas lire `AGENTS.md`](/docs/fr/memory#when-agents-md-support-is-unavailable) | Désactivez-le dans `/plugin`, ou [choisissez les fichiers d'instructions à charger](/docs/fr/memory#choose-which-instruction-files-load) |258| `cc-plugin-agents-md` | Charge `AGENTS.md` comme instructions de projet | Chaque session, sauf [celles qui ne peuvent pas lire `AGENTS.md`](/docs/fr/memory#when-agents-md-support-is-unavailable) | Désactivez-le dans `/plugin`, ou [choisissez les fichiers d'instructions à charger](/docs/fr/memory#choose-which-instruction-files-load) |

239| `cc-plugin-diff` | Prend en charge [`/diff`](/docs/fr/interactive-mode#review-changes-with-%2Fdiff) et dessine son volet | Sessions de terminal interactif | Désactivez-le dans `/plugin`. `/diff` reste, et la version intégrée de Claude Code de la commande y répond. |259| `cc-plugin-diff` | Prend en charge [`/diff`](/docs/fr/interactive-mode#review-changes-with-%2Fdiff) et dessine son volet | Sessions de terminal interactif | Désactivez-le dans `/plugin`. `/diff` reste, et la version intégrée de Claude Code de la commande y répond. |

240| `cc-plugin-plugin-authoring` | Donne à Claude la [`plugin-authoring` skill](/docs/fr/plugins/mods/create#ask-claude-for-a-mod) pour écrire des mods. Elle contient une skill et aucun code de mod. | Sauf si Anthropic a désactivé les mods installés à distance | Désactivez-le dans `/plugin` |260| `cc-plugin-plugin-authoring` | Donne à Claude le [skill `plugin-authoring`](/docs/fr/plugins/mods/create#ask-claude-for-a-mod) pour écrire des mods. Il contient un skill et aucun code de mod. | Sauf si Anthropic a désactivé les mods installés à distance | Désactivez-le dans `/plugin` |

241| `cc-plugin-sec-default` | Protège ce que votre organisation gère des mods qu'un utilisateur installe | [Où la protection se charge](/docs/fr/plugins/mods/admin#know-what-happens-by-default) | Vous ne pouvez pas. Un administrateur [définit l'ordre](/docs/fr/plugins/mods/admin#install-your-organizations-mods) dans les paramètres gérés |261| `cc-plugin-sec-default` | Protège ce que votre organisation gère des mods qu'un utilisateur installe | [Où la protection se charge](/docs/fr/plugins/mods/admin#know-what-happens-by-default) | Vous ne pouvez pas. Un administrateur [définit l'ordre](/docs/fr/plugins/mods/admin#install-your-organizations-mods) dans les paramètres gérés |

242| `cc-plugin-telemetry` | Envoie les enregistrements d'analyse que Claude Code et ses mods intégrés enregistrent | Partout où les analyses propres à Claude Code sont activées | Désactivez-le dans `/plugin`, ou désactivez les analyses, par exemple avec [`DISABLE_TELEMETRY`](/docs/fr/env-vars) |262| `cc-plugin-telemetry` | Envoie les enregistrements d'analyse que Claude Code et ses mods intégrés journalisent | Partout où les analyses propres à Claude Code sont activées | Désactivez-le dans `/plugin`, ou désactivez les analyses, par exemple avec [`DISABLE_TELEMETRY`](/docs/fr/env-vars) |

243| `cc-plugin-you-should-know` | Exécute un agent auxiliaire qui vous protège pendant que Claude travaille sur des tâches plus longues. Quand il trouve quelque chose qui vaut la peine de savoir et que vous pourriez manquer, il vous affiche une note au-dessus de l'invite. | Désactivé par défaut. Répertorié dans `/plugin` -> **Installed** -> **Show disabled** s'il est disponible pour votre organisation. Activez avec [`/plugin enable cc-plugin-you-should-know@builtin`](/docs/fr/plugins/cli-reference#plugin-in-a-session). | Désactivez-le dans `/plugin` |263| `cc-plugin-you-should-know` | Exécute un agent auxiliaire qui vous protège pendant que Claude travaille sur des tâches plus longues. Quand il trouve quelque chose qui vaut la peine de savoir et que vous pourriez manquer, il vous affiche une note au-dessus de l'invite. | Désactivé par défaut. Répertorié dans `/plugin` -> **Installed** -> **Show disabled** s'il est disponible pour votre organisation. Activez avec [`/plugin enable cc-plugin-you-should-know@builtin`](/docs/fr/plugins/cli-reference#plugin-in-a-session). | Désactivez-le dans `/plugin` |

244 264 

245Les paramètres et les drapeaux qui arrêtent les mods installés, tels que `disableAllHooks`, `--bare` et `--safe-mode`, n'arrêtent pas les mods intégrés.265Les paramètres et les flags qui arrêtent les mods installés, tels que `disableAllHooks`, `--bare` et `--safe-mode`, n'arrêtent pas les mods intégrés.

246 266 

247<h3 id="read-the-source-of-built-in-mods">267<h3 id="read-the-source-of-built-in-mods">

248 Lire le code source des mods intégrés268 Lire le code source des mods intégrés

249</h3>269</h3>

250 270 

251Le code source de quatre de ces mods est public dans le [répertoire `mods` du référentiel Claude Code](https://github.com/anthropics/claude-code/tree/main/mods). Chacun est un plugin complet avec son module hooks et ses tests :271Le code source de certains de ces mods est public dans le [répertoire `mods` du dépôt Claude Code](https://github.com/anthropics/claude-code/tree/main/mods). Chacun est un plugin complet avec son module hooks et ses tests :

252 272 

253* [`diff`](https://github.com/anthropics/claude-code/tree/main/mods/diff) : le volet `/diff`, avec des boutons liés à des actions clavier et le défilement que le mod gère lui-même273* [`diff`](https://github.com/anthropics/claude-code/tree/main/mods/diff) : le volet `/diff`, avec des boutons liés à des actions clavier et le défilement que le mod gère lui-même

254* [`agents-md`](https://github.com/anthropics/claude-code/tree/main/mods/agents-md) : charge `AGENTS.md` comme instructions de projet, avec une option [`userConfig`](/docs/fr/plugins/components#user-configuration)274* [`agents-md`](https://github.com/anthropics/claude-code/tree/main/mods/agents-md) : charge `AGENTS.md` comme instructions de projet, avec une option [`userConfig`](/docs/fr/plugins/components#user-configuration)


259 Étapes suivantes279 Étapes suivantes

260</h2>280</h2>

261 281 

262* [Créer un mod](/docs/fr/plugins/mods/create) : en construire un qui compte les appels d'outils, affiche le compte à côté du spinner, et ajoute une commande, et apprenez la boucle d'édition et de rechargement282* [Créer un mod](/docs/fr/plugins/mods/create) : en créer un qui compte les appels d'outils, affiche le compte à côté du spinner, et ajoute une commande, et apprenez la boucle d'édition et de rechargement

263* [Dessiner dans l'interface](/docs/fr/plugins/mods/interface) : volets, la bande au-dessus de l'invite, boutons, champs de texte et état283* [Dessiner dans l'interface](/docs/fr/plugins/mods/interface) : volets, la bande au-dessus de l'invite, boutons, champs de texte et état

264* [Réagir aux événements](/docs/fr/plugins/mods/events) : appels d'outils, invites, tours et l'ordre dans lequel les mods s'exécutent284* [Réagir aux événements](/docs/fr/plugins/mods/events) : appels d'outils, prompts, tours et l'ordre dans lequel les mods s'exécutent

265* [Utiliser l'API des mods](/docs/fr/plugins/mods/api) : commandes, outils, appels de modèles, minuteurs et fichiers285* [Utiliser l'API des mods](/docs/fr/plugins/mods/api) : commandes, outils, appels de modèles, minuteurs et fichiers

266* [Tester un mod](/docs/fr/plugins/mods/test) : tests automatisés qui s'exécutent sans session286* [Tester un mod](/docs/fr/plugins/mods/test) : tests automatisés qui s'exécutent sans session

267* [Dépanner un mod](/docs/fr/plugins/mods/troubleshoot) : les raisons pour lesquelles un mod ne fait rien et le journal de débogage287* [Dépanner un mod](/docs/fr/plugins/mods/troubleshoot) : les raisons pour lesquelles un mod ne fait rien et le journal de débogage

268* [Gérer les mods de votre organisation](/docs/fr/plugins/mods/admin) : valeurs par défaut, paramètres gérés, examen d'un mod et mods de politique288* [Gérer les mods de votre organisation](/docs/fr/plugins/mods/admin) : valeurs par défaut, paramètres gérés, examen d'un mod et mods de politique

269* [Référence des mods](/docs/fr/plugins/mods/reference) : chaque événement, méthode, élément et limite289* [Référence des mods](/docs/fr/plugins/mods/reference) : événements, méthodes, éléments et limites

plugins/mods/reference.md +326 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Référence des mods

6 

7> Référence complète des mods Claude Code : structure du module de hooks, événements, méthodes de l'API des mods, points de rendu, éléments par surface, limites et paramètres.

8 

9Consultez tout événement qu'un [mod](/docs/fr/plugins/mods/overview) peut gérer, toute méthode de l'API des mods qu'il peut appeler, ou tout point de rendu dans lequel il peut dessiner, pour la CLI Claude Code et l'application Desktop à partir de la v2.1.287. Chaque entrée donne le nom et une description d'une ligne, avec un lien vers la section du guide qui l'explique lorsqu'elle existe.

10 

11<Note>

12 La référence complète est constituée des [déclarations TypeScript pour les mods](https://github.com/anthropics/claude-code/blob/main/mods/types/claude-code.d.ts) de Claude Code, qui décrivent chaque événement, méthode et élément, avec des exemples. La copie sur GitHub peut être plus ancienne que la version de Claude Code que vous avez installée. En cas de divergence, fiez-vous à [la copie que Claude Code écrit pour votre version](/docs/fr/plugins/mods/create#get-the-types-for-your-build).

13</Note>

14 

15<h2 id="files">

16 Fichiers

17</h2>

18 

19Un mod est un répertoire de plugin contenant ces fichiers :

20 

21| Fichier | Requis | Contenu |

22| :- | :- | :- |

23| `.claude-plugin/plugin.json` | Oui | Le [manifeste](/docs/fr/plugins/manifest-reference) du plugin. Les mods n'ajoutent aucun champ requis. |

24| `hooks/hooks.json` | Oui | `modules` : un tableau contenant un chemin, relatif à ce fichier, vers le module de hooks, comme dans `"modules": ["./register.js"]`. Peut aussi contenir des [hooks de paramètres](/docs/fr/hooks) sous `hooks`. |

25| Le module de hooks, tel que [`hooks/register.js`](/docs/fr/plugins/mods/create#write-a-mod-yourself) | Oui | Le point d'entrée du mod. Exporte `register(on, options)`. Nommé `.js`, `.mjs`, `.cjs`, `.jsx`, `.ts`, `.mts`, `.cts` ou `.tsx`. Un module ES. |

26| [`types/index.d.ts`](/docs/fr/plugins/mods/interface#declare-the-values), désigné par `types` dans le manifeste | Lorsque le mod utilise `$.state` ou ajoute un namespace à l'API des mods | Déclare les valeurs `PluginState` et tout namespace ajouté par le mod |

27| Fichiers dont le nom se termine par `.test.ts` ou `.test.tsx` | Non | Tests exécutés par [`claude plugin test`](/docs/fr/plugins/mods/test#write-a-test) |

28 

29`register` reçoit `on` et `options`. `options` contient les valeurs des champs [`userConfig`](/docs/fr/plugins/components#user-configuration) déclarés par le manifeste, avec les valeurs par défaut renseignées.

30 

31<h2 id="the-hook-function">

32 La fonction de hook

33</h2>

34 

35Un mod enregistre chacun de ses hooks, qui sont des gestionnaires d'événements, en appelant `on` à l'intérieur de `register`. `on` prend le nom de l'événement, un [matcher](/docs/fr/plugins/mods/events#filter-which-events-a-hook-handles) facultatif, qui est un filtre sur les champs de l'événement, et le hook, comme dans `on('tool.call', { tool: 'Bash' }, async ($, e, next) => next(e))`. `on` renvoie un enregistrement doté d'une seule méthode, `.catch(handler)`, qui définit le [gestionnaire d'erreurs](/docs/fr/plugins/mods/events#handle-a-hook-that-fails) du hook.

36 

37| Argument | Ce que c'est |

38| :- | :- |

39| [`$`](/docs/fr/plugins/mods/events#how-a-hook-handles-an-event) | L'API des mods : chaque méthode de [Méthodes de l'API des mods](#mods-api-methods). Écrivez chaque appel en entier, namespace puis méthode, comme dans `$.fs.read('notes.md')`. |

40| [`e`](/docs/fr/plugins/mods/events#how-a-hook-handles-an-event) | L'entrée de l'événement, sous forme de données simples profondément figées. Pour la modifier, passez une copie à `next`. |

41| [`next(e)`](/docs/fr/plugins/mods/events#how-a-hook-handles-an-event) | Le gestionnaire suivant, comme dans un middleware. Exécute les hooks qui suivent celui-ci, puis le comportement de Claude Code. Se résout avec le résultat de l'événement. |

42| [`next.signal`](/docs/fr/plugins/mods/api#stop-background-work) | Un `AbortSignal` qui s'interrompt lorsque l'événement est abandonné |

43| `next.origin` | `{ plugin, tier }` de l'émetteur de l'événement. Claude Code lui-même est `{ plugin: 'engine', tier: 'core' }`. Le `tier` d'un mod est son groupe de priorité dans [l'ordre d'exécution des mods](/docs/fr/plugins/mods/events#the-order-mods-run-in) : `prepend`, `user`, `append` ou `builtin`. |

44| `next.budget` | La limite de temps du hook en millisecondes : `next.budget.ms` est la limite totale, et `next.budget.remainingMs` est ce qui reste à cet instant |

45| `next.to(e, tier)` | Passe directement à un tier ultérieur, qui est `append`, `builtin` ou `core`. `next.to(e, 'append')` ignore les mods installés par un utilisateur. Seul un mod présent dans `prependPlugins` ou `appendPlugins` peut l'appeler. |

46| `next.error`, `next.called` | Dans un gestionnaire `.catch` uniquement. `next.error.kind` vaut `throw` ou `timeout`, `next.error.message` est le texte de l'erreur, et `next.called` vaut `true` lorsque le hook en échec avait appelé `next`. |

47 

48<h2 id="events">

49 Événements

50</h2>

51 

52Les événements sont regroupés selon ce qu'ils concernent, chacun avec le moment où il se déclenche et ce qu'un hook qui le gère peut renvoyer. Les hooks sur `turn.step` et `process.spawn` sont des générateurs asynchrones, et les autres hooks sont des fonctions asynchrones.

53 

54La dernière colonne de chaque tableau utilise une notation abrégée. `next(e)` transmet l'événement sans modification. `next({ ...e, text })` transmet une copie dont le champ nommé est modifié, comme dans `next({ ...e, text: e.text.trim() })`. Un objet répond à l'événement sans appeler `next`, et un mot tel que `reason` désigne une chaîne que vous écrivez, comme dans `{ deny: 'Use the file tools.' }`.

55 

56<h3 id="tools">

57 Outils

58</h3>

59 

60Les événements d'outils se déclenchent autour de chaque appel d'outil effectué par Claude, depuis la description que Claude lit jusqu'à la décision d'exécuter ou non l'appel :

61 

62| Événement | Se déclenche lorsque | Un hook peut renvoyer |

63| :- | :- | :- |

64| [`tool.call`](/docs/fr/plugins/mods/events#guard-or-change-a-tool-call) | Un outil est sur le point de s'exécuter | `next(e)`, `{ deny: reason }` ou `{ result }` |

65| [`tool.check`](/docs/fr/plugins/mods/events#where-settings-hooks-run-in-the-order) | Claude Code décide si un appel d'outil peut s'exécuter, après les hooks `tool.call` et `PreToolUse`. `next(e)` se résout avec la décision à laquelle ont abouti les règles, le mode de permission et ces hooks. | `{ decision }`, qui vaut `allow`, `ask` ou `deny` |

66| `tool.describe` | Une fois pour chaque outil, lorsque sa description est envoyée à Claude pour la première fois | `{ description }` |

67 

68<h3 id="prompts-and-what-claude-reads">

69 Prompts et ce que Claude lit

70</h3>

71 

72Les événements de prompt couvrent le texte que l'utilisateur saisit et le texte que Claude Code envoie de lui-même à Claude, comme le prompt système et les rappels :

73 

74| Événement | Se déclenche lorsque | Un hook peut renvoyer |

75| :- | :- | :- |

76| [`prompt.submit`](/docs/fr/plugins/mods/events#rewrite-or-add-to-a-prompt) | Un prompt est soumis | `next({ ...e, text })`, `next({ ...e, context })` ou `{ drop: reason }` |

77| `prompt.fill`, `prompt.suggest` | Du texte est sur le point d'être placé dans la zone de prompt en tant que brouillon, ou en tant que suggestion estompée | `next(e)` avec le texte modifié |

78| `prompt.edit` | L'utilisateur modifie la zone de prompt | `next(e)` |

79| `prompt.compose` | Claude Code génère un prompt système | `{ sections }`, une liste de `{ id, text, scope }` dans l'ordre d'envoi |

80| [`prompt.section`](/docs/fr/plugins/mods/events#rewrite-or-add-to-a-prompt) | Une fois pour chaque section nommée du prompt système. `e.name` est l'`id` de la section dans `prompt.compose`. | `{ text }`, ou `{ text: null }` pour omettre la section |

81| [`prompt.context`](/docs/fr/plugins/mods/events#rewrite-or-add-to-a-prompt) | Une fois pour chaque conversation, pour le contexte envoyé avec le premier message | `{ blocks }` |

82| `prompt.attachment` | Claude Code ajoute un message de sa propre initiative pour Claude, tel qu'un rappel. `e.type` nomme le type, et pour les types que déclarent les déclarations de types, `e.detail` contient les informations à partir desquelles le texte a été rédigé. | `{ text }`, ou `{ text: null }` pour l'omettre |

83| [`skill.prompt`](/docs/fr/plugins/mods/events#rewrite-or-add-to-a-prompt) | Le texte d'un skill est développé pour Claude | `{ text }` |

84| `attribution.text` | Claude Code compose le texte d'attribution d'un commit ou d'une pull request | `{ text }` |

85 

86<h3 id="commands-and-configuration">

87 Commandes et configuration

88</h3>

89 

90Les événements de commande et de configuration se déclenchent lorsqu'une commande s'exécute ou est listée, et lorsqu'une ligne de `/config` est affichée ou modifiée :

91 

92| Événement | Se déclenche lorsque | Un hook peut renvoyer |

93| :- | :- | :- |

94| [`command.run`](/docs/fr/plugins/mods/api#add-a-command) | Une commande est sur le point de s'exécuter | `{ text }`, `{}` ou `next(e)` |

95| `command.describe` | Une fois pour chaque commande, pour la liste des commandes | `{ description, argumentHint, isHidden }` |

96| `config.set` | Une ligne de `/config` est sur le point de changer | `next({ ...e, value })` ou `{ deny: reason }` |

97| `config.describe` | Une fois pour chaque ligne de `/config` | `{ label, description, isHidden }` |

98 

99<h3 id="turns">

100 Tours

101</h3>

102 

103Les événements de tour suivent une réponse du début à la fin, y compris chaque requête envoyée au modèle pendant celle-ci :

104 

105| Événement | Se déclenche lorsque | Un hook peut renvoyer |

106| :- | :- | :- |

107| [`turn.start`](/docs/fr/plugins/mods/events#follow-a-turn) | Un tour commence | `next(e)` |

108| [`turn.step`](/docs/fr/plugins/mods/events#follow-a-turn) | Une requête est sur le point d'être envoyée au modèle | `yield* next(e)`, ou `next({ ...e, model })`, `next({ ...e, effort })` |

109| [`turn.complete`](/docs/fr/plugins/mods/events#follow-a-turn) | Un tour s'est terminé | `next(e)`, ou `{ text }` pour afficher une ligne sous la réponse |

110 

111<h3 id="session">

112 Session

113</h3>

114 

115Les événements de session marquent le démarrage, la fin et la compaction de la session, ainsi que l'échange de messages avec d'autres sessions :

116 

117| Événement | Se déclenche lorsque | Un hook peut renvoyer |

118| :- | :- | :- |

119| [`session.start`](/docs/fr/plugins/mods/api#add-a-command-or-a-tool) | Une fois pour chaque mod chargé, avant le premier prompt, puis à nouveau après un rechargement de ce mod. Pas après `/clear`, `/resume` ou `/branch`. | `next(e)` |

120| `session.end` | La session se termine, ou `/clear`, `/resume` ou `/branch` s'exécute. `e.reason` vaut `clear`, `resume`, `logout`, `prompt_input_exit` ou `other`. `/branch` signale `resume`. | `next(e)` |

121| `session.compact` | La conversation est sur le point d'être compactée | `{ skip: reason }` |

122| [`session.receive`](/docs/fr/plugins/mods/api#send-and-receive-messages-between-sessions), [`session.send`](/docs/fr/plugins/mods/api#send-and-receive-messages-between-sessions) | Un message arrive d'un autre agent ou d'une autre session, ou est sur le point d'y être envoyé. Consultez [Envoyer et recevoir des messages entre sessions](/docs/fr/plugins/mods/api#send-and-receive-messages-between-sessions). | `{ consumed: reason }` pour `receive`, `{ isDelivered: false, reason }` pour `send` |

123| `session.append` | Une fois pour chaque ligne conservée par la conversation, telle qu'un prompt, un bloc de réponse, un résultat d'outil ou une notification, avant son stockage | `next({ ...e, message })` pour réécrire le `content` de la ligne |

124| `session.attach`, `session.detach` | Une autre application se connecte à la session ou s'en déconnecte | `next(e)` |

125| `session.measure` | Après chaque tour, et lorsque le pourcentage utilisé d'une limite de forfait change | `next(e)` |

126 

127<h3 id="subagents">

128 Sous-agents

129</h3>

130 

131Les événements de sous-agent se déclenchent lorsqu'un type de sous-agent est proposé à Claude et lorsqu'un sous-agent est sur le point de démarrer :

132 

133| Événement | Se déclenche lorsque | Un hook peut renvoyer |

134| :- | :- | :- |

135| `agent.offer` | Un type de sous-agent est proposé à Claude | `{ isOffered: false }` pour le retenir |

136| `agent.spawn` | Un sous-agent est sur le point de démarrer | `{ model }` ou `{ deny: reason }` |

137 

138<h3 id="interface">

139 Interface

140</h3>

141 

142Les événements d'interface se déclenchent lorsque Claude Code dessine un point de rendu et lorsque l'utilisateur utilise un contrôle dessiné par un mod. [Dessiner dans l'interface](/docs/fr/plugins/mods/interface) montre ce que renvoie un hook `ui.render` :

143 

144| Événement | Se déclenche lorsque |

145| :- | :- |

146| [`ui.render`](/docs/fr/plugins/mods/interface#pick-where-to-draw) | Un [point de rendu](#render-sites) est sur le point d'être dessiné |

147| `ui.resolve` | Les mods se chargent, une fois pour chaque application, point de rendu et mod. Le résultat est la table d'éléments que lit `$.ui.resolve(e)`. |

148| [`ui.press`](/docs/fr/plugins/mods/interface#respond-to-presses-and-typing), [`ui.input`](/docs/fr/plugins/mods/interface#respond-to-presses-and-typing), [`ui.select`](/docs/fr/plugins/mods/interface#respond-to-presses-and-typing) | Un `Button`, un `Input` ou un `Select` dessiné par un mod est utilisé |

149| `ui.focus`, `ui.scroll` | Le contrôle ayant le focus ou la position de défilement d'un volet ou du bandeau est sur le point de changer |

150| `ui.close` | Un volet est sur le point de se fermer. `e.id` est le volet et `e.origin.kind` vaut `plugin`, `person` ou `unload`. |

151| [`ui.message`](/docs/fr/plugins/mods/interface#build-a-tree-from-elements) | Un élément `Client` envoie des données à son mod |

152 

153<h3 id="other-mods">

154 Autres mods

155</h3>

156 

157Ces événements permettent à un mod d'agir sur d'autres mods au moment de leur chargement, pour en refuser un ou modifier l'API des mods qu'il reçoit :

158 

159| Événement | Se déclenche lorsque | Un hook peut renvoyer |

160| :- | :- | :- |

161| [`plugin.register`](/docs/fr/plugins/mods/admin#enforce-a-policy-with-a-mod-of-your-own) | Un module de hooks est sur le point de se charger. `e.uses` liste ses événements, ses appels à l'API des mods, ses variables d'environnement et son état, tels que `claude plugin validate` les affiche. Chaque appel est écrit sans le préfixe `$.`, comme `fs.read`. | `{ refuse: reason }` |

162| `engine.create` | L'API des mods est en cours de construction pour ce mod | Une API des mods modifiée, pour ajouter un namespace ou en retenir un |

163 

164<h3 id="telemetry">

165 Télémétrie

166</h3>

167 

168Les événements de télémétrie se déclenchent pour les enregistrements d'utilisation que Claude Code journalise :

169 

170| Événement | Se déclenche lorsque | Un hook peut renvoyer |

171| :- | :- | :- |

172| `telemetry.log`, `telemetry.mark` | Un enregistrement de télémétrie est sur le point d'être journalisé, ou une utilisation d'une fonctionnalité est marquée. Dans un mod que vous installez, donnez à un hook de télémétrie le filtre `{ to: 'collector' }`, comme dans `on('telemetry.log', { to: 'collector' }, hook)`. Sans ce filtre, le mod échoue à `claude plugin validate`. `*` ne correspond pas à ces événements. | `next(e)`, ou `{ deny: reason }` |

173 

174<h3 id="settings-hook-events">

175 Événements des hooks de paramètres

176</h3>

177 

178Chaque [événement de hook de paramètres](/docs/fr/hooks#hook-events) est un événement nommé `classic.<Event>`, tel que `classic.Stop` ou `classic.PostToolUse`. `e` est le JSON stdin du hook.

179 

180<h3 id="mods-api-calls">

181 Appels à l'API des mods

182</h3>

183 

184Chaque [méthode de l'API des mods](#mods-api-methods) est également un événement, nommé d'après son namespace et sa méthode, comme `fs.read`, `model.complete` ou `ui.open`. Un hook sur l'un d'eux intercepte les appels des mods qui s'exécutent après lui, et peut renvoyer `next(e)`, `{ deny: reason }` ou `{ value }`.

185 

186<h2 id="mods-api-methods">

187 Méthodes de l'API des mods

188</h2>

189 

190L'API des mods est l'argument `$` que reçoit chaque hook. Ses méthodes sont regroupées en namespaces, comme `$.ui`. Ce tableau liste les méthodes de chaque namespace par nom : ainsi, `open` dans la ligne `$.ui` correspond à l'appel `$.ui.open(...)`. Les guides montrent les plus courantes en action, et [les types pour votre build](/docs/fr/plugins/mods/create#get-the-types-for-your-build) documentent chaque méthode avec un exemple.

191 

192| Namespace | Méthodes |

193| :- | :- |

194| `$.plugin` | `name`, `root` : le nom et le répertoire de ce plugin |

195| [`$.ui`](/docs/fr/plugins/mods/interface#pick-where-to-draw) | `resolve`, `invalidate`, `open`, `close`, `panes`, `focus`, `scroll`, `toast`, `status`, `log`, `notice`, `ask`, `copy`, `blit` |

196| [`$.command`](/docs/fr/plugins/mods/api#add-a-command) | `register`, `run`, `list` |

197| [`$.tool`](/docs/fr/plugins/mods/api#add-a-tool) | `register`, `call`, `check`, `list` |

198| `$.agent` | `register`, `spawn`, `list` |

199| [`$.model`](/docs/fr/plugins/mods/api#call-a-model) | `complete`, `fork`, `classify` |

200| [`$.prompt`](/docs/fr/plugins/mods/api#start-a-turn-from-a-background-job) | `submit`, `read`, `fill`, `suggest`, `compose`. Claude lit le texte de `submit({ text })` après une phrase qui désigne votre mod comme expéditeur. `submit({ text, asUser: true })` envoie le texte comme s'il s'agissait des propres mots de l'utilisateur, sans cette phrase. |

201| `$.turn` | `abort` |

202| [`$.session`](/docs/fr/plugins/mods/api#send-and-receive-messages-between-sessions) | `messages`, `cwd`, `root`, `model`, `turns`, `id`, `repo`, `surfaces`, `usage`, `version`, `compact`, `send`, `append`, `authorize`. `usage()` renvoie `{ startedAt, context, rateLimits, cost }` : `context` contient `tokens`, `window` et `percent`, et `rateLimits` est une liste de `{ kind, percentUsed, resetsAt }`. |

203| `$.config` | `list`, `set` |

204| [`$.settings`](/docs/fr/plugins/mods/api#reach-files-processes-and-the-network) | `read` |

205| [`$.env`](/docs/fr/plugins/mods/api#reach-files-processes-and-the-network) | `get`, `set` |

206| [`$.fs`](/docs/fr/plugins/mods/api#reach-files-processes-and-the-network) | `read`, `write`, `list`, `exists`, `stat`, `ancestors`. `write` n'est pas atomique : il remplace le contenu du fichier sur place, de sorte qu'un autre processus peut lire un fichier partiellement écrit. Conservez dans `$.store` les données que plusieurs sessions modifient. |

207| [`$.store`](/docs/fr/plugins/mods/interface#keep-state) | `get`, `set`, `delete`, `keys`. Un magasin clé-valeur partagé par toutes les sessions de la machine. Consultez [Enregistrer depuis plusieurs sessions](/docs/fr/plugins/mods/interface#save-from-more-than-one-session). |

208| [`$.state`](/docs/fr/plugins/mods/interface#keep-a-value-in-\$-state) | État réactif : `get`, `set`, avec les helpers `atom`, `read`, `update`, `derive` et `memberOf` importés depuis `claude-code` |

209| [`$.clock`](/docs/fr/plugins/mods/api#run-work-in-the-background) | `now`, `sleep`, `after`, `every` |

210| [`$.http`](/docs/fr/plugins/mods/api#reach-files-processes-and-the-network) | `fetch` |

211| [`$.process`](/docs/fr/plugins/mods/api#reach-files-processes-and-the-network) | `run`, `spawn` |

212| [`$.mcp`](/docs/fr/plugins/mods/api#reach-files-processes-and-the-network) | `call`, `connect`. `connect(server)` connecte un serveur MCP listé par le manifeste de votre propre plugin. |

213| `$.audio` | `play`, `speak` |

214| `$.telemetry` | `log`, `mark`. Un enregistrement n'est envoyé que lorsque l'appel est effectué par Claude Code ou par un mod intégré. |

215 

216<h2 id="render-sites">

217 Points de rendu

218</h2>

219 

220Un point de rendu est un point d'extension de l'interface de Claude Code. Chaque ligne est une valeur de `e.component` dans un hook `ui.render`, avec les champs de `e.props` et les applications qui l'affichent. `e.surface` vaut `terminal` ou `desktop`. [Modifier ce que Claude Code dessine déjà](/docs/fr/plugins/mods/interface#change-what-claude-code-already-draws) montre ce qu'un hook peut faire à un point de rendu, avec un exemple pour chaque option.

221 

222| Point de rendu | `e.props` | `e.requestId` | Affiché dans |

223| :- | :- | :- | :- |

224| [`Pane`](/docs/fr/plugins/mods/interface#pick-where-to-draw) | `title`, `isFocused`, `bodyColumns`, `placement`, `scroll`, `view` | L'`id` du volet | Terminal, Desktop |

225| [`AbovePrompt`](/docs/fr/plugins/mods/interface#pick-where-to-draw) | `hasSurvey`, `isWorking`, `maxRows`, `bodyColumns`, `scroll`, `view` | Une seule instance | Terminal, Desktop |

226| `UserMessage` | `text`, `origin`, `isExpanded`, et `task` ou `from` selon l'origine | L'id du message | Terminal, Desktop |

227| `AssistantMessage` | Le texte de la réponse | L'id du message | Terminal, Desktop |

228| `ToolUse`, `ToolResult`, `ToolGroup` | Le nom, l'entrée et le résultat de l'outil | L'id de l'appel d'outil | Terminal, Desktop |

229| `CommandOutput` | `command`, `text` | L'id du message | Terminal, Desktop |

230| [`AskUserQuestion`](/docs/fr/plugins/mods/interface#change-what-claude-code-already-draws) | La question et les options | L'id de l'appel d'outil | Terminal, Desktop |

231| `ToolProgress` | `kind` | L'id de l'appel d'outil | Terminal |

232| [`Spinner`](/docs/fr/plugins/mods/interface#change-what-claude-code-already-draws) | `word`, `message`, `suffix`, `mode` | L'id de l'agent | Terminal, Desktop |

233| `TurnDuration` | `word`, `durationMs` | L'id du message | Terminal |

234| `InfoNotice` | `text`, `command` | L'id du message | Terminal |

235| `SessionMode` | `modes` | Une seule instance | Terminal, Desktop |

236| `PromptHint` | `isDraft`, `isWorking`, `hint` | Une seule instance | Terminal, Desktop |

237 

238`e.viewport` contient `columns`, `rows` et `isFullscreen`. Il est absent tant que l'application n'a pas mesuré sa fenêtre. Son `rows` correspond à la hauteur de la fenêtre entière, et non à celle de votre volet.

239 

240Pour adapter un arbre à son point de rendu, lisez ces props dans le hook :

241 

242* **Largeur d'un `Pane` ou du bandeau** : dessinez selon `e.props.bodyColumns`

243* **Hauteur d'un `Pane` à côté de la transcription** : lorsque `e.props.placement` vaut `'dock'`, `e.props.scroll.bodyRows` est le nombre de lignes dont dispose le volet

244* **Hauteur d'un `Pane` au-dessus du prompt** : lorsque `e.props.placement` vaut `'inline'`, le volet s'agrandit avec votre arbre jusqu'à une limite, et `bodyRows` ne compte que les lignes actuellement affichées. Le [champ `rows` de `$.ui.open`](/docs/fr/plugins/mods/interface#open-a-pane-at-the-right-time) permet de demander une limite différente.

245 

246Un arbre plus haut que le volet défile d'un seul bloc.

247 

248<h2 id="elements">

249 Éléments

250</h2>

251 

252Les éléments sont les briques de l'arbre que renvoie un hook `ui.render`, et vous les obtenez à partir de `$.ui.resolve(e)`. [Construire un arbre à partir d'éléments](/docs/fr/plugins/mods/interface#build-a-tree-from-elements) présente les plus courants avec leur rendu dans le terminal, et la [galerie d'interface](/docs/fr/plugins/mods/gallery) contient des captures d'écran de la plupart d'entre eux. Une coche signifie que l'application peut dessiner l'élément.

253 

254| Élément | Props principales | Terminal | Desktop |

255| :- | :- | :-: | :-: |

256| [`Box`](/docs/fr/plugins/mods/interface#build-a-tree-from-elements) | `key`, disposition flex, `gap`, `padding`, `margin`, `width`, `height`, `borderStyle`, `backgroundColor`, `position`, `hover` | ✓ | ✓ |

257| [`Text`](/docs/fr/plugins/mods/interface#build-a-tree-from-elements) | `color`, `backgroundColor`, `bold`, `italic`, `underline`, `dimColor`, `inverse`, `wrap` | ✓ | ✓ |

258| [`Button`](/docs/fr/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action` | ✓ | ✓ |

259| `Link` | `href`, `label` | ✓ | ✓ |

260| `Code` | Le code, jusqu'à 10 000 caractères | ✓ | ✓ |

261| `Markdown` | `text`, jusqu'à 10 000 caractères, `key`, `dimColor`, `onLinkPress`, `pressableLinks` | ✓ | ✓ |

262| [`Input`](/docs/fr/plugins/mods/interface#take-typed-input-and-draw-a-row-for-each-item) | `key`, `label`, `placeholder`, `value`, `submitLabel`, `onSubmit`, `onInput`, `autoFocus` | ✓ | ✓ |

263| `Select` | `key`, `label`, `options`, `value`, `onSelect`, `autoFocus` | ✓ | ✓ |

264| `Svg` | Un document SVG, jusqu'à 131 072 caractères | | ✓ |

265| [`Client`](/docs/fr/plugins/mods/interface#build-a-tree-from-elements) | `module`, `key` | ✓ | ✓ |

266| [`Raster`](/docs/fr/plugins/mods/interface#draw-a-grid-of-colored-cells) | `key`, `columns` jusqu'à 512, `rows` jusqu'à 256, `cells`. Consultez [Dessiner une grille de cellules colorées](/docs/fr/plugins/mods/interface#draw-a-grid-of-colored-cells). | ✓ | |

267| `Image` | Octets PNG ou RGBA jusqu'à 2 Mio, ou un chemin de fichier | ✓ | |

268 

269Autres règles pour `Button` : `action` nomme l'une des propres [actions de raccourci clavier](/docs/fr/keybindings) de Claude Code, et le raccourci de l'utilisateur pour cette action presse le bouton lorsque ce raccourci est une combinaison de touches ou une touche avec modificateur. Un `hotkey` numérique sur un bouton du bandeau se déclenche aussi lorsque l'utilisateur tape ce seul chiffre dans un prompt vide puis marque une pause. Lorsque deux boutons d'un même dessin désignent le même `hotkey`, c'est le dernier qui l'obtient. `autoFocus` n'accepte que `true` sur tout contrôle : omettez donc la prop pour le désactiver.

270 

271<h2 id="limits">

272 Limites

273</h2>

274 

275Les hooks et les appels à l'API des mods s'exécutent sous des limites de temps et de taille. Claude Code ignore un hook qui dépasse une limite de temps et rejette un appel qui dépasse une limite de taille.

276 

277| Limite | Valeur |

278| :- | :- |

279| Le temps d'exécution propre d'un hook pour un événement, sans compter le temps passé dans `next` ou dans un appel à l'API des mods autre que `$.clock.sleep` | 10 secondes |

280| Le temps d'exécution d'un gestionnaire `.catch` | 1 seconde |

281| L'ensemble des hooks `session.end` | 1,5 seconde |

282| Délai d'expiration de `$.process.run` | 30 secondes par défaut, 10 minutes au maximum |

283| `maxTokens` de `$.model.complete` | 1024 par défaut, jusqu'à 64 000 ou la limite de sortie du modèle |

284| `$.fs.read` et `$.fs.write` | 4 Mio pour un fichier |

285| Un enfant chaîne d'un `Text` | 10 000 caractères |

286| `$.store` | 4 Mio de JSON au total |

287| `$.session.messages()` | Les 4 096 entrées les plus récentes |

288| Redessins `$.ui.invalidate('ui.render')` | Limités à 10 par seconde, ou 30 dans le terminal pour le volet visible, le bandeau déployé et la ligne d'indication sous le prompt. Les appels plus rapprochés sont regroupés. |

289| `$.ui.toast` | Affiché pendant 4 secondes sauf si vous passez `{ timeoutMs }` |

290| Un volet ouvert sans que l'utilisateur l'ait demandé | Placé à partir de 144 colonnes de terminal, 110 une fois que l'utilisateur l'a ouvert une fois |

291| Noms de commandes, d'outils, de types de sous-agents et de volets | Lettres, chiffres, `_` et `-`, jusqu'à 64 caractères |

292| Un test `claude plugin test` | 5 secondes sauf si le test définit `timeoutMs` |

293 

294<h2 id="settings-and-environment-variables">

295 Paramètres et variables d'environnement

296</h2>

297 

298Voici les paramètres et variables d'environnement qui affectent les mods. La colonne Emplacement indique le fichier de paramètres ou l'environnement à partir duquel chacun est lu :

299 

300| Nom | Emplacement | Effet |

301| :- | :- | :- |

302| `CLAUDE_CODE_PLUGIN_DIRS` | Environnement, ou `env` dans `~/.claude/settings.json` | Répertoires de plugins à charger comme le fait `--plugin-dir`, pour les applications auxquelles vous ne pouvez pas passer de flag. Chemins absolus séparés par `:`, ou `;` sous Windows. |

303| `CLAUDE_CODE_PLUGIN_DIR_WATCH` | Environnement | `1` fait recharger les mods `--plugin-dir` à l'enregistrement dans une session non interactive de longue durée |

304| `prependPlugins`, `appendPlugins` | Paramètres gérés. Paramètres utilisateur uniquement sur une machine sans paramètres gérés, pour un utilisateur qui n'est pas connecté avec un forfait Team ou Enterprise. | Listes d'identifiants de plugins, comme `acme-guard@acme-tools`. Les mods de `prependPlugins` s'exécutent avant tout mod installé par un utilisateur, et ceux de `appendPlugins` après, dans l'ordre indiqué. Consultez [L'ordre d'exécution des mods](/docs/fr/plugins/mods/events#the-order-mods-run-in). |

305| `allowManagedModsOnly` | Paramètres gérés, en tant qu'[option du garde-fou intégré](/docs/fr/plugins/mods/admin#set-options-on-the-built-in-guard) | Seuls les mods qui [relèvent de votre organisation](/docs/fr/plugins/mods/admin#install-your-organizations-mods) et les mods intégrés à Claude Code se chargent. Les hooks de paramètres des utilisateurs continuent de s'exécuter. |

306| `allowModsToOverrideDenyRules` | Paramètres gérés, en tant qu'[option du garde-fou intégré](/docs/fr/plugins/mods/admin#set-options-on-the-built-in-guard) | Permet à un mod installé par un utilisateur d'approuver un appel d'outil refusé par une règle `deny` |

307| `allowManagedHooksOnly` | Paramètres gérés | Bloque les hooks et les mods installés qui n'appartiennent pas à votre organisation. Consultez [ce qui continue de s'exécuter](/docs/fr/settings-reference#what-runs-under-allowmanagedhooksonly). |

308| `disableAllHooks` | Tout fichier de paramètres | Dans les paramètres gérés, aucun mod ni hook provenant d'un plugin installé ne s'exécute. Dans vos propres paramètres, ce que gère votre organisation continue de s'exécuter. Consultez [`disableAllHooks`](/docs/fr/settings-reference#disableallhooks). |

309| `disableSideloadFlags` | Paramètres gérés | Rejette `--plugin-dir` et `--plugin-url` au démarrage |

310| `pluginConfigs` | Paramètres utilisateur ou gérés | Contient les valeurs `userConfig` d'un mod, indexées par l'identifiant du plugin, comme `acme-guard@acme-tools`, ou par son nom suivi de `@inline`, comme `first-mod@inline`, pour un mod chargé avec `--plugin-dir` |

311 

312`sec-default@builtin` est un garde-fou intégré à Claude Code, listé sous le nom `cc-plugin-sec-default` dans `/plugin` et dans le log de débogage. Il se charge avant tout mod installé par une personne sur une machine dotée de paramètres gérés, ou pour un utilisateur connecté avec un forfait Team ou Enterprise. Si `prependPlugins` est défini dans les paramètres gérés, le garde-fou ne se charge que lorsque cette liste le nomme, à la position indiquée. Son code source se trouve dans le [répertoire `mods/sec-default` du dépôt Claude Code](https://github.com/anthropics/claude-code/tree/main/mods/sec-default).

313 

314<h2 id="commands">

315 Commandes

316</h2>

317 

318Ces commandes et flags permettent de charger, d'inspecter et de tester un mod. Les commandes `claude` s'exécutent dans votre shell et les commandes `/` dans le prompt de Claude Code. Dans le tableau, `<directory>` désigne un chemin que vous saisissez, comme dans `claude plugin validate ./first-mod`. Les crochets indiquent un argument facultatif.

319 

320| Commande | Effet |

321| :- | :- |

322| [`/plugin`](/docs/fr/plugins/mods/overview#see-which-mods-a-session-loaded) | Affiche une ligne telle que `1 mod active · first-mod` sous ses onglets lorsqu'un mod non intégré a été chargé |

323| [`claude plugin validate <directory>`](/docs/fr/plugins/mods/create#check-what-claude-code-reads-from-your-mod) | Lit le manifeste et le module de hooks d'un plugin et signale les erreurs, les événements qu'il gère et les appels à l'API des mods qu'il effectue. `--strict` traite les avertissements comme des erreurs et `--json` affiche un rapport lisible par une machine. |

324| [`claude plugin test [directory]`](/docs/fr/plugins/mods/test#write-a-test) | Exécute chaque fichier du répertoire, ou du répertoire courant si vous n'en indiquez aucun, dont le nom se termine par `.test.ts` ou `.test.tsx`. Se termine avec le statut 1 lorsqu'un test échoue. |

325| [`claude --plugin-dir <directory>`](/docs/fr/plugins/mods/create#write-a-mod-yourself) | Charge un répertoire de plugin pour une session et recharge son module de hooks lorsque vous enregistrez. Répétez le flag pour en charger plusieurs. |

326| `/reload-plugins` | Recharge les plugins lorsque vous l'exécutez |

Details

16 16 

17Donnez à chaque fichier de test un nom qui se termine par `.test.ts`, comme `first-mod.test.ts`, et enregistrez-le n'importe où dans le répertoire du plugin. Chaque fichier de test a besoin d'au moins un `test()`, sinon l'exécution échoue avec `declares no test(): nothing ran`. Un fichier de test peut importer vos propres fichiers du mod et les helpers `.ts` frères, afin que vous puissiez tester les fonctions simples, comme les règles d'un jeu, sans le kit.17Donnez à chaque fichier de test un nom qui se termine par `.test.ts`, comme `first-mod.test.ts`, et enregistrez-le n'importe où dans le répertoire du plugin. Chaque fichier de test a besoin d'au moins un `test()`, sinon l'exécution échoue avec `declares no test(): nothing ran`. Un fichier de test peut importer vos propres fichiers du mod et les helpers `.ts` frères, afin que vous puissiez tester les fonctions simples, comme les règles d'un jeu, sans le kit.

18 18 

19Ce test lève deux appels d'outils, exécute la commande `/tally` de [Créer un mod](/docs/fr/plugins/mods/create), et vérifie que la réponse compte les deux. Sa première ligne est un [stub](#stub-what-claude-code-would-answer), qui répond aux appels d'outils à la place de Claude Code. Enregistrez-le sous `first-mod/tests/first-mod.test.ts` :19Ce test déclenche deux appels d'outils, exécute la commande `/tally` de [Créer un mod](/docs/fr/plugins/mods/create), et vérifie que la réponse compte les deux. Sa première ligne est un [stub](#stub-what-claude-code-would-answer), qui répond aux appels d'outils à la place de Claude Code. Enregistrez-le sous `first-mod/tests/first-mod.test.ts` :

20 20 

21```typescript first-mod/tests/first-mod.test.ts theme={null}21```typescript first-mod/tests/first-mod.test.ts theme={null}

22import { expect, test } from 'claude-code/testing'22import { expect, test } from 'claude-code/testing'


25 // Answer each tool call in Claude Code's place, so no tool runs25 // Answer each tool call in Claude Code's place, so no tool runs

26 on('tool.call', () => ({ result: 'ok' }))26 on('tool.call', () => ({ result: 'ok' }))

27 27 

28 // Raise two tool calls, which the mod's tool.call hook counts28 // Fire two tool calls, which the mod's tool.call hook counts

29 await $.tool.call({ tool: 'Bash', command: 'ls' })29 await $.tool.call({ tool: 'Bash', command: 'ls' })

30 await $.tool.call({ tool: 'Read', file_path: 'README.md' })30 await $.tool.call({ tool: 'Read', file_path: 'README.md' })

31 31 


62 62 

63Aucun modèle, magasin ou outil ne s'exécute dans un test, donc partout où votre mod s'attend à ce que Claude Code réponde, le test fournit la réponse avec un stub. Une fonction de test reçoit deux arguments pour cela :63Aucun modèle, magasin ou outil ne s'exécute dans un test, donc partout où votre mod s'attend à ce que Claude Code réponde, le test fournit la réponse avec un stub. Une fonction de test reçoit deux arguments pour cela :

64 64 

65* **`$`** : le propre `$` du test, qui se tient à la place de Claude Code. Ce n'est pas l'[API des mods](/docs/fr/plugins/mods/reference#mods-api-methods) qu'un hook reçoit. Chacune de ses méthodes lève l'événement du même nom, l'envoie via les hooks de votre mod, et se résout au résultat : `$.tool.call({ tool: 'Bash', command: 'ls' })` lève `tool.call`. `$.command.run`, `$.prompt.submit`, `$.session.start`, et `$.turn.complete` fonctionnent de la même manière, et `$.classic.Stop` et les autres méthodes `$.classic` lèvent un [événement de hook de paramètres](/docs/fr/plugins/mods/events#hook-the-settings-hook-events). Un test ne peut pas lever directement un appel d'API des mods comme `ui.close`. Déclenchez-le via votre mod, par exemple en appuyant sur le bouton qui ferme le volet.65* **`$`** : le propre `$` du test, qui joue le rôle de Claude Code. Ce n'est pas l'[API des mods](/docs/fr/plugins/mods/reference#mods-api-methods) qu'un hook reçoit. Chacune de ses méthodes déclenche l'événement du même nom, l'envoie via les hooks de votre mod, et se résout au résultat : `$.tool.call({ tool: 'Bash', command: 'ls' })` déclenche `tool.call`. `$.command.run`, `$.prompt.submit`, `$.session.start`, et `$.turn.complete` fonctionnent de la même manière, et `$.classic.Stop` et les autres méthodes `$.classic` déclenchent un [événement de hook de paramètres](/docs/fr/plugins/mods/events#hook-the-settings-hook-events). Un test ne peut pas déclencher directement un appel d'API des mods comme `ui.close`. Déclenchez-le via votre mod, par exemple en appuyant sur le bouton qui ferme le volet.

66* **`on`** : appelez-le pour enregistrer des stubs, qui sont des hooks qui répondent à la place de Claude Code. Nommez un stub pour un appel d'API des mods sans le `$.`, afin qu'un stub enregistré comme `store.get` réponde à votre mod `$.store.get`. Quand votre mod appelle [`$.model.complete`](/docs/fr/plugins/mods/api#call-a-model) ou [`$.store.get`](/docs/fr/plugins/mods/interface#keep-state), un stub fournit la réponse.66* **`on`** : appelez-le pour enregistrer des stubs, qui sont des hooks qui répondent à la place de Claude Code. Nommez un stub pour un appel d'API des mods sans le `$.`, afin qu'un stub enregistré comme `store.get` réponde à votre mod `$.store.get`. Quand votre mod appelle [`$.model.complete`](/docs/fr/plugins/mods/api#call-a-model) ou [`$.store.get`](/docs/fr/plugins/mods/interface#keep-state), un stub fournit la réponse.

67 67 

68Cet exemple remplace un appel de modèle. Le hook appartient à un mod nommé `grader`, et gère une commande `/grade` qui envoie une phrase à un modèle et rapporte si la réponse commence par `PASS`. Le fichier ne contient que le hook testé, donc le mod a également besoin d'un `plugin.json` et d'un `hooks.json`, comme dans [Créer un mod](/docs/fr/plugins/mods/create#write-a-mod-yourself). Pour taper `/grade` dans une session, le mod doit également [enregistrer la commande](/docs/fr/plugins/mods/api#add-a-command) :68Cet exemple remplace un appel de modèle. Le hook appartient à un mod nommé `grader`, et gère une commande `/grade` qui envoie une phrase à un modèle et rapporte si la réponse commence par `PASS`. Le fichier ne contient que le hook testé, donc le mod a également besoin d'un `plugin.json` et d'un `hooks.json`, comme dans [Créer un mod](/docs/fr/plugins/mods/create#write-a-mod-yourself). Pour taper `/grade` dans une session, le mod doit également [enregistrer la commande](/docs/fr/plugins/mods/api#add-a-command) :


105 105 

106Le test réussit parce que le `reply` du hook est l'objet sous `value`, dont le `text` commence par `PASS`. Pour vérifier l'autre branche, ajoutez un deuxième test dont le stub retourne un `text` qui commence par `FAIL`, et attendez `Try again`.106Le test réussit parce que le `reply` du hook est l'objet sous `value`, dont le `text` commence par `PASS`. Pour vérifier l'autre branche, ajoutez un deuxième test dont le stub retourne un `text` qui commence par `FAIL`, et attendez `Try again`.

107 107 

108Un stub pour un appel d'API des mods retourne un objet avec un champ `value`, qui contient ce que l'appel se résout en dans votre mod : `{ value: 7 }` fait que `$.store.get` se résout à `7`. Un stub pour l'un des événements de Claude Code, comme [`turn.step`](/docs/fr/plugins/mods/reference#turns) ou `tool.call`, retourne le propre résultat de cet événement, comme `{ result: 'ok' }`. `$.session.send` et `$.prompt.fill` prennent également le résultat de l'événement, comme le montre le tableau. [Rechercher ce qu'un stub retourne](#look-up-what-a-stub-returns) montre quelle forme chaque nom courant prend. Deux erreurs signifient qu'un stub est incorrect ou manquant. La sortie d'un test échoué inclut un bloc intitulé `the engine reported:`, et chaque erreur y apparaît :108Un stub pour un appel d'API des mods retourne un objet avec un champ `value`, qui contient ce que l'appel se résout en dans votre mod : `{ value: 7 }` fait que `$.store.get` se résout à `7`. Un stub pour l'un des événements de Claude Code, comme [`turn.step`](/docs/fr/plugins/mods/reference#turns) ou `tool.call`, retourne le propre résultat de cet événement, comme `{ result: 'ok' }`. `$.session.send` et `$.prompt.fill` prennent également le résultat de l'événement, comme le montre le tableau. [Rechercher ce qu'un stub retourne](#look-up-what-a-stub-returns) montre quelle forme chaque nom courant prend. Ces erreurs signifient qu'un stub est incorrect ou manquant. La sortie d'un test échoué inclut un bloc intitulé `the engine reported:`, et chaque erreur y apparaît :

109 109 

110* `returned neither { value } nor { deny }` : un stub pour un appel d'API des mods a retourné une valeur nue110* `returned neither { value } nor { deny }` : un stub pour un appel d'API des mods a retourné une valeur nue

111* `no implementation for` suivi d'un nom : votre mod a fait cet appel et aucun stub ne le répond111* `no implementation for` suivi d'un nom : votre mod a fait cet appel et aucun stub ne le répond


120 120 

121* **Enregistrez chaque stub avant le premier appel du test sur `$`.** Appeler `on` après cela lève une erreur comme `on("ui.render") after the test first called $`.121* **Enregistrez chaque stub avant le premier appel du test sur `$`.** Appeler `on` après cela lève une erreur comme `on("ui.render") after the test first called $`.

122 122 

123* **[`session.start`](/docs/fr/plugins/mods/reference#session) ne s'exécute pas par lui-même.** Chaque test commence avec votre module fraîchement chargé et aucun de ses hooks appelés, donc les variables au niveau du module conservent leurs valeurs initiales. Si un hook dépend de ce que `session.start` configure, levez-le d'abord :123* **[`session.start`](/docs/fr/plugins/mods/reference#session) ne s'exécute pas par lui-même.** Chaque test commence avec votre module fraîchement chargé et aucun de ses hooks appelés, donc les variables au niveau du module conservent leurs valeurs initiales. Si un hook dépend de ce que `session.start` configure, déclenchez-le d'abord :

124 124 

125 ```typescript theme={null}125 ```typescript theme={null}

126 // Answer the event after your hook passes it on with next(e)126 // Answer the event after your hook passes it on with next(e)

127 on('session.start', () => ({ cwd: '/work' }))127 on('session.start', () => ({ cwd: '/work' }))

128 // Answer the $.command.register call your hook makes128 // Answer the $.command.register call your hook makes

129 on('command.register', () => ({ value: undefined }))129 on('command.register', () => ({ value: undefined }))

130 // Raise the event, which runs your session.start hook130 // Fire the event, which runs your session.start hook

131 await $.session.start({ surface: 'terminal', isInteractive: true, cwd: '/work' })131 await $.session.start({ surface: 'terminal', isInteractive: true, cwd: '/work' })

132 ```132 ```

133 133 


152 return { turnId: e.turnId, index: e.index, answer: 'ok', toolUses: [], stopReason: 'end_turn', usage: null }152 return { turnId: e.turnId, index: e.index, answer: 'ok', toolUses: [], stopReason: 'end_turn', usage: null }

153 })153 })

154 154 

155 // Raise one request to the model, which runs your turn.step hook155 // Fire one request to the model, which runs your turn.step hook

156 const stream = $.turn.step({ turnId: 't', index: 0, model: 'claude-test', messageCount: 1 })156 const stream = $.turn.step({ turnId: 't', index: 0, model: 'claude-test', messageCount: 1 })

157 // Read every piece until the stream says it's done157 // Read every piece until the stream says it's done

158 let step = await stream.next()158 let step = await stream.next()


162 162 

163 Quand la boucle se termine, `result` est l'objet que le stub a retourné, après que votre hook `turn.step` ait eu la chance de le modifier. Ici `result.answer` est `'ok'`.163 Quand la boucle se termine, `result` est l'objet que le stub a retourné, après que votre hook `turn.step` ait eu la chance de le modifier. Ici `result.answer` est `'ok'`.

164 164 

165* **Levez un appel d'outil avec le nom et les arguments de l'outil en tant que champs**, comme `await $.tool.call({ tool: 'Bash', command: 'ls' })`, et enregistrez un stub `tool.call` qui retourne `{ result }`.165* **Déclenchez un appel d'outil avec le nom et les arguments de l'outil en tant que champs**, comme `await $.tool.call({ tool: 'Bash', command: 'ls' })`, et enregistrez un stub `tool.call` qui retourne `{ result }`.

166 166 

167<h3 id="look-up-what-a-stub-returns">167<h3 id="look-up-what-a-stub-returns">

168 Rechercher ce qu'un stub retourne168 Rechercher ce qu'un stub retourne


185| `session.start` | `() => ({ cwd: '/work' })` |185| `session.start` | `() => ({ cwd: '/work' })` |

186| `turn.start` | `($, e) => ({ turnId: e.turnId })` |186| `turn.start` | `($, e) => ({ turnId: e.turnId })` |

187| `tool.call` | `() => ({ result: '...' })` |187| `tool.call` | `() => ({ result: '...' })` |

188| `turn.complete` | `() => ({ text: '' })`. Levez-le avec `$.turn.complete({ turnId, answer, durationMs, isAborted: false, usage: null })`. |188| `turn.complete` | `() => ({ text: '' })`. Déclenchez-le avec `$.turn.complete({ turnId, answer, durationMs, isAborted: false, usage: null })`. |

189| `prompt.submit` | `($, e) => ({ text: e.text })` |189| `prompt.submit` | `($, e) => ({ text: e.text })` |

190| `prompt.fill` | `() => ({ isFilled: true })` |190| `prompt.fill` | `() => ({ isFilled: true })` |

191| `$.prompt.read` | `() => ({ value: { text: '...', cursor: 0 } })` |191| `$.prompt.read` | `() => ({ value: { text: '...', cursor: 0 } })` |


193| `$.session.messages` | `() => ({ value: [{ role: 'assistant', text: '...', toolUses: [] }] })` |193| `$.session.messages` | `() => ({ value: [{ role: 'assistant', text: '...', toolUses: [] }] })` |

194| `$.session.id`, `$.agent.list` | `() => ({ value: 'abc123' })`, `() => ({ value: [] })` |194| `$.session.id`, `$.agent.list` | `() => ({ value: 'abc123' })`, `() => ({ value: [] })` |

195| `session.send` | `() => ({ isDelivered: true })`. `e.to` arrive en tant que chaîne même quand votre mod a passé `{ sessionId }`. |195| `session.send` | `() => ({ isDelivered: true })`. `e.to` arrive en tant que chaîne même quand votre mod a passé `{ sessionId }`. |

196| `session.receive` | `($, e) => ({ text: e.text })`. Levez-le avec `$.session.receive({ origin: { kind: 'peer-send-message' }, text })`. |196| `session.receive` | `($, e) => ({ text: e.text })`. Déclenchez-le avec `$.session.receive({ origin: { kind: 'peer-send-message' }, text })`. |

197| `ui.render` | `() => ({ type: 'Text', props: {}, children: ['...'] })` |197| `ui.render` | `() => ({ type: 'Text', props: {}, children: ['...'] })` |

198 198 

199`expect` a les assertions `toBe`, `toEqual`, `toMatch`, `toMatchObject`, `toContain`, `toBeDefined`, `toBeUndefined`, et `toThrow`, et `.not` avant n'importe lequel d'entre eux.199`expect` a les assertions `toBe`, `toEqual`, `toMatch`, `toMatchObject`, `toContain`, `toBeDefined`, `toBeUndefined`, et `toThrow`, et `.not` avant n'importe lequel d'entre eux.


329 Tester un dessin après `/clear`329 Tester un dessin après `/clear`

330</h3>330</h3>

331 331 

332Chaque test commence avec chaque valeur `$.state` à sa valeur par défaut, ce qui est comment `/clear` les laisse. Pour tester ce que votre mod fait ensuite, ignorez `session.start`, levez `classic.SessionStart` avec `source: 'clear'`, et vérifiez ce que votre mod dessine.332Chaque test commence avec chaque valeur `$.state` à sa valeur par défaut, ce qui est comment `/clear` les laisse. Pour tester ce que votre mod fait ensuite, ignorez `session.start`, déclenchez `classic.SessionStart` avec `source: 'clear'`, et vérifiez ce que votre mod dessine.

333 333 

334Ce test vérifie le module de [Charger une valeur enregistrée à nouveau après `/clear`](/docs/fr/plugins/mods/interface#load-a-saved-value-again-after-clear). Ajoutez-le au fichier de [Tester un dessin](#test-a-drawing), où `PANE` est défini. Le premier test de ce fichier s'attend à ce que le bouton enregistre le compte, comme le bouton dans [Enregistrer à partir de plus d'une session](/docs/fr/plugins/mods/interface#save-from-more-than-one-session) le fait :334Ce test vérifie le module de [Charger une valeur enregistrée à nouveau après `/clear`](/docs/fr/plugins/mods/interface#load-a-saved-value-again-after-clear). Ajoutez-le au fichier de [Tester un dessin](#test-a-drawing), où `PANE` est défini. Le premier test de ce fichier s'attend à ce que le bouton enregistre le compte, comme le bouton dans [Enregistrer à partir de plus d'une session](/docs/fr/plugins/mods/interface#save-from-more-than-one-session) le fait :

335 335 


340 // Answer the event after your hook passes it on with next(e)340 // Answer the event after your hook passes it on with next(e)

341 on('classic.SessionStart', () => ({}))341 on('classic.SessionStart', () => ({}))

342 342 

343 // Raise the event that fires after /clear, which runs your hook343 // Fire the event that follows /clear, which runs your hook

344 await $.classic.SessionStart({ source: 'clear' })344 await $.classic.SessionStart({ source: 'clear' })

345 345 

346 const ui = await $.ui.mount({ ...PANE, surface: 'terminal' })346 const ui = await $.ui.mount({ ...PANE, surface: 'terminal' })


353Le test réussit quand votre hook `classic.SessionStart` a copié le `7` enregistré dans `$.state` avant que le volet ne se dessine. Sans ce hook dans votre module, le volet dessine `Count: 0`, `find` retourne `undefined`, et le test échoue à `toBeDefined`.353Le test réussit quand votre hook `classic.SessionStart` a copié le `7` enregistré dans `$.state` avant que le volet ne se dessine. Sans ce hook dans votre module, le volet dessine `Count: 0`, `find` retourne `undefined`, et le test échoue à `toBeDefined`.

354 354 

355<h2 id="test-a-mod-that-judges-other-mods">355<h2 id="test-a-mod-that-judges-other-mods">

356 Tester un mod qui juge d'autres mods356 Tester un mod de politique

357</h2>357</h2>

358 358 

359Un mod que votre organisation liste dans [`prependPlugins`](/docs/fr/plugins/mods/admin) peut refuser un autre mod avant qu'il ne se charge. Pour en tester un, définissez le tier de votre mod et donnez au test un deuxième mod pour que le vôtre admette ou refuse :359Un mod que votre organisation liste dans [`prependPlugins`](/docs/fr/plugins/mods/admin) peut refuser un autre mod avant qu'il ne se charge. Pour en tester un, définissez le tier de votre mod et donnez au test un deuxième mod pour que le vôtre l'autorise ou le refuse :

360 360 

361* **`tier`** : appelez-le une fois en haut du fichier de test, comme dans `tier('prepend')`, pour charger votre mod comme `prepend`, `append`, ou `builtin`, sa place dans l'[ordre dans lequel les mods s'exécutent](/docs/fr/plugins/mods/events#the-order-mods-run-in). Sans lui, votre mod se charge comme `user`.361* **`tier`** : appelez-le une fois en haut du fichier de test, comme dans `tier('prepend')`, pour charger votre mod comme `prepend`, `append`, ou `builtin`, sa place dans l'[ordre dans lequel les mods s'exécutent](/docs/fr/plugins/mods/events#the-order-mods-run-in). Sans lui, votre mod se charge comme `user`.

362* **`plugins`** : passez à `test` un objet d'options avant le corps du test. Son tableau `plugins` contient des mods que vous écrivez en ligne, chacun avec un `name` et une fonction `register`. Pour charger un ailleurs que `user`, ajoutez `tier` à celui-ci.362* **`plugins`** : passez à `test` un objet d'options avant le corps du test. Son tableau `plugins` contient des mods que vous écrivez en ligne, chacun avec un `name` et une fonction `register`. Pour charger un ailleurs que `user`, ajoutez `tier` à celui-ci.

363 363 

364Ce fichier de test charge le [mod de politique de la page d'administration](/docs/fr/plugins/mods/admin#enforce-a-policy-with-a-mod-of-your-own) d'abord. Il vérifie que le mod de politique refuse un mod qui démarre un processus et en admet un qui ne le fait pas :364Ce fichier de test charge le [mod de politique de la page d'administration](/docs/fr/plugins/mods/admin#enforce-a-policy-with-a-mod-of-your-own) d'abord. Il vérifie que le mod de politique refuse un mod qui démarre un processus et en autorise un qui ne le fait pas :

365 365 

366```typescript acme-guard/tests/guard.test.ts theme={null}366```typescript acme-guard/tests/guard.test.ts theme={null}

367import { expect, test, tier } from 'claude-code/testing'367import { expect, test, tier } from 'claude-code/testing'

Details

12 Découvrez pourquoi un mod ne fait rien12 Découvrez pourquoi un mod ne fait rien

13</h2>13</h2>

14 14 

15Quand un mod ne fait rien, deux vérifications trouvent la raison : ce que Claude Code lit à partir des fichiers du mod et la ligne qu'il écrit quand il ignore quelque chose. Pour la première, dans votre shell, exécutez [`claude plugin validate`](/docs/fr/plugins/mods/create#check-what-claude-code-reads-from-your-mod) avec le répertoire du mod, comme dans `claude plugin validate ./first-mod`. Cela détecte un événement mal orthographié, un mauvais manifeste et un module que Claude Code ne peut pas lire, sans démarrer une session.15Quand un mod ne fait rien, vérifiez ce que Claude Code lit à partir des fichiers du mod et la ligne qu'il écrit quand il ignore quelque chose. Pour la première vérification, dans votre shell, exécutez [`claude plugin validate`](/docs/fr/plugins/mods/create#check-what-claude-code-reads-from-your-mod) avec le répertoire du mod, comme dans `claude plugin validate ./first-mod`. Cela détecte un événement mal orthographié, un mauvais manifeste et un module que Claude Code ne peut pas lire, sans démarrer une session.

16 16 

17Quand un module ne se charge pas, un hook est ignoré ou un autre mod refuse le vôtre, Claude Code écrit une ligne qui nomme votre mod. L'endroit où vous lisez cette ligne dépend de la session :17Quand un module ne se charge pas, un hook est ignoré ou un autre mod refuse le vôtre, Claude Code écrit une ligne qui nomme votre mod. L'endroit où vous lisez cette ligne dépend de la session :

18 18 


56 56 

57Lisez la raison après les deux points. La section [messages de refus](#refusal-messages) énumère chacun d'eux. Si le journal n'a pas de telle ligne, parcourez les autres entrées de ce groupe.57Lisez la raison après les deux points. La section [messages de refus](#refusal-messages) énumère chacun d'eux. Si le journal n'a pas de telle ligne, parcourez les autres entrées de ce groupe.

58 58 

59Certains paramètres arrêtent un mod et laissent le reste de son plugin fonctionner. [Activer ou désactiver les mods](/docs/fr/plugins/mods/overview#turn-mods-on-or-off) les nomme.

60 

59<h3 id="a-claude-p-run-prints-hooks-module-not-loaded">61<h3 id="a-claude-p-run-prints-hooks-module-not-loaded">

60 Une exécution `claude -p` affiche `hooks module not loaded`62 Une exécution `claude -p` affiche `hooks module not loaded`

61</h3>63</h3>


110 `options do not fit plugin.json userConfig`112 `options do not fit plugin.json userConfig`

111</h3>113</h3>

112 114 

113La ligne commence par le nom du mod, puis `hooks module did not load: options do not fit plugin.json userConfig:` et une raison. Une option ne correspond pas à son champ [`userConfig`](/docs/fr/plugins/components#user-configuration), comme un nombre au-dessus du `max` du champ, ou un champ obligatoire n'a pas de valeur.115La ligne commence par le nom du mod, puis `hooks module did not load: options do not fit plugin.json userConfig:` et une raison. Une option échoue à la validation par rapport à son champ [`userConfig`](/docs/fr/plugins/components#user-configuration), comme un nombre au-dessus du `max` du champ, ou un champ obligatoire n'a pas de valeur.

114 116 

115Définissez ou modifiez la valeur. La fin de la ligne nomme son entrée `pluginConfigs` dans `settings.json`.117Définissez ou modifiez la valeur. La fin de la ligne nomme son entrée `pluginConfigs` dans `settings.json`.

116 118 


140 `hook skipped`142 `hook skipped`

141</h3>143</h3>

142 144 

143La ligne nomme le mod et l'événement, puis dit `hook skipped:` et une raison, comme dans `first-mod: tool.call hook skipped: threw Error: boom`. Un hook a levé une exception, a dépassé sa [limite de temps de 10 secondes](/docs/fr/plugins/mods/reference#limits), ou a retourné un résultat de la mauvaise forme. La ligne apparaît une fois pour chaque événement et type d'échec jusqu'à ce que le mod se recharge.145La ligne nomme le mod et l'événement, puis dit `hook skipped:` et une raison, comme dans `first-mod: tool.call hook skipped: threw Error: boom`. Un hook a levé une exception, a dépassé sa [limite de temps](/docs/fr/plugins/mods/reference#limits), ou a retourné un résultat de la mauvaise forme. La ligne apparaît une fois pour chaque événement et type d'échec jusqu'à ce que le mod se recharge.

144 146 

145Corrigez l'erreur. Le journal de débogage a une ligne pour chaque occurrence.147Corrigez l'erreur. Le journal de débogage a une ligne pour chaque occurrence.

146 148 


207 209 

208Lisez la raison sur cette ligne. Les causes courantes sont une prop que l'élément ne prend pas et un élément que l'application n'a pas.210Lisez la raison sur cette ligne. Les causes courantes sont une prop que l'élément ne prend pas et un élément que l'application n'a pas.

209 211 

210<h3 id="ui-open-runs-and-no-pane-appears">212<h3 id="$-ui-open-runs-and-no-pane-appears">

211 `$.ui.open` s'exécute et aucun volet n'apparaît213 `$.ui.open` s'exécute et aucun volet n'apparaît

212</h3>214</h3>

213 215 

214L'appel ne venait pas de quelque chose que l'utilisateur a fait, et le terminal est plus étroit que 144 colonnes.216L'appel ne venait pas de quelque chose que l'utilisateur a fait, et le terminal est plus étroit que [la largeur dont ce volet a besoin](/docs/fr/plugins/mods/interface#when-a-pane-waits-for-a-wider-terminal).

215 217 

216Ouvrez le volet à partir d'une commande ou d'un bouton, ou vérifiez le résultat `isPlaced` de l'appel. Voir [Ouvrir un volet au bon moment](/docs/fr/plugins/mods/interface#open-a-pane-at-the-right-time).218Ouvrez le volet à partir d'une commande ou d'un bouton, ou vérifiez le résultat `isPlaced` de l'appel. Voir [Ouvrir un volet au bon moment](/docs/fr/plugins/mods/interface#open-a-pane-at-the-right-time).

217 219 


277tail -f ./mod-debug.log | grep first-mod279tail -f ./mod-debug.log | grep first-mod

278```280```

279 281 

280Un mod qui s'est chargé a une ligne qui le nomme et énumère les événements qu'il accroche. Un mod chargé avec `--plugin-dir` apparaît sous son nom suivi de `@inline` :282Un mod qui s'est chargé a une ligne qui le nomme et énumère les événements qu'il gère. Un mod chargé avec `--plugin-dir` apparaît sous son nom suivi de `@inline` :

281 283 

282```text theme={null}284```text theme={null}

283hooks module first-mod@inline loaded (worker, environment 2, tier user); events: session.start,tool.call,command.run,ui.render285hooks module first-mod@inline loaded (worker, environment 2, tier user); events: session.start,tool.call,command.run,ui.render

Details

9Un plugin Claude Code est un répertoire de skills, d'agents, de hooks, de serveurs MCP ou d'autres composants que Claude Code installe et charge comme une seule unité. La plupart des plugins proviennent d'une marketplace, qui est un catalogue listant les plugins et indiquant où récupérer chacun. Vous pouvez également charger un plugin à partir d'un dossier que quelqu'un vous donne, ou [créer le vôtre](/docs/fr/plugins/create).9Un plugin Claude Code est un répertoire de skills, d'agents, de hooks, de serveurs MCP ou d'autres composants que Claude Code installe et charge comme une seule unité. La plupart des plugins proviennent d'une marketplace, qui est un catalogue listant les plugins et indiquant où récupérer chacun. Vous pouvez également charger un plugin à partir d'un dossier que quelqu'un vous donne, ou [créer le vôtre](/docs/fr/plugins/create).

10 10 

11<Note>11<Note>

12 Commencez plutôt sur claude.com si l'une de ces descriptions vous correspond :12 Ces cas sont traités sur d'autres pages :

13 13 

14 * **Vous utilisez le chat claude.ai ou Cowork et non Claude Code** : consultez [Plugins sur claude.ai et dans Cowork](https://claude.com/docs/plugins/overview)14 * **Vous utilisez le chat claude.ai ou Cowork et non Claude Code** : consultez [Plugins sur claude.ai et dans Cowork](https://claude.com/docs/plugins/overview)

15 * **Vous avez créé un serveur MCP et vous voulez le mettre dans le répertoire d'Anthropic** : consultez [Publier dans le répertoire](https://claude.com/docs/directory/publish)15 * **Vous avez créé un serveur MCP et vous voulez le mettre dans le répertoire d'Anthropic** : consultez [Publier dans le répertoire](https://claude.com/docs/directory/publish)

16 * **Vous voulez utiliser Claude Code dans VS Code ou un IDE JetBrains** : il s'agit de l'extension VS Code ou du plugin JetBrains, et non d'un plugin Claude Code. Consultez [Utiliser Claude Code dans VS Code](/docs/fr/vs-code) ou [IDE JetBrains](/docs/fr/jetbrains)

16</Note>17</Note>

17 18 

18Pour essayer un plugin maintenant, exécutez `/plugin` dans une session de terminal Claude Code et installez-en un à partir de l'onglet **Discover**, qui liste les plugins de vos marketplaces. À partir de là :19Pour essayer un plugin maintenant, exécutez `/plugin` dans une session de terminal Claude Code et installez-en un à partir de l'onglet **Discover**, qui liste les plugins de vos marketplaces. À partir de là :

Details

37 37 

38Les [règles de permission](/docs/fr/permissions) et le [sandbox](/docs/fr/sandboxing) de Claude Code couvrent les appels d'outils que Claude fait, pas le code qu'un plugin exécute par lui-même :38Les [règles de permission](/docs/fr/permissions) et le [sandbox](/docs/fr/sandboxing) de Claude Code couvrent les appels d'outils que Claude fait, pas le code qu'un plugin exécute par lui-même :

39 39 

40* **Hooks et processus serveur** : les hooks de commande exécutent des commandes shell avec vos permissions utilisateur complètes. Claude Code exécute les hooks et les serveurs MCP en dehors du sandbox.40* **Hooks et processus serveur** : les hooks de commande exécutent des commandes shell avec vos permissions utilisateur complètes. Claude Code exécute les hooks, les serveurs MCP et les processus qu'un [mod](/docs/fr/plugins/mods/overview#what-a-mod-can-reach) démarre en dehors du sandbox.

41* **Appels d'outils de Claude** : un appel à l'un des outils MCP du plugin, et une commande Bash qui exécute un exécutable du `bin/` du plugin, sont des appels d'outils, donc vos règles de permission s'y appliquent. Pour ce qu'un mod peut faire à un appel d'outil, voir [Décider si vous devez faire confiance à un mod](/docs/fr/plugins/mods/overview#decide-whether-to-trust-a-mod).41* **Appels d'outils de Claude** : un appel à l'un des outils MCP du plugin, et une commande Bash qui exécute un exécutable du `bin/` du plugin, sont des appels d'outils, donc vos règles de permission s'y appliquent. Pour ce qu'un mod peut faire à un appel d'outil, voir [Décider si vous devez faire confiance à un mod](/docs/fr/plugins/mods/overview#decide-whether-to-trust-a-mod).

42 42 

43L'installation d'un plugin l'active également, sauf si son manifeste ou son entrée de marketplace définit [`defaultEnabled: false`](/docs/fr/plugins/install#choose-an-install-scope) et que vous ne l'avez pas activé vous-même.43L'installation d'un plugin l'active également, sauf si son manifeste ou son entrée de marketplace définit [`defaultEnabled: false`](/docs/fr/plugins/install#choose-an-install-scope) et que vous ne l'avez pas activé vous-même.

Details

460* **Vous publiez le plugin** : recalculez le digest du fichier exact que l'URL sert et mettez à jour le `sha256` dans l'entrée de marketplace. Utilisez `shasum -a 256 my-plugin.zip`, ou `Get-FileHash -Algorithm SHA256 my-plugin.zip` dans PowerShell460* **Vous publiez le plugin** : recalculez le digest du fichier exact que l'URL sert et mettez à jour le `sha256` dans l'entrée de marketplace. Utilisez `shasum -a 256 my-plugin.zip`, ou `Get-FileHash -Algorithm SHA256 my-plugin.zip` dans PowerShell

461* **Vous installez le plugin** : exécutez `/plugin marketplace update <name>` dans une session pour actualiser le catalogue au cas où l'entrée aurait été corrigée, puis réessayez l'installation. Si les digests ne correspondent toujours pas après l'actualisation, demandez au propriétaire de la marketplace quel fichier ils ont épinglé avant d'installer461* **Vous installez le plugin** : exécutez `/plugin marketplace update <name>` dans une session pour actualiser le catalogue au cas où l'entrée aurait été corrigée, puis réessayez l'installation. Si les digests ne correspondent toujours pas après l'actualisation, demandez au propriétaire de la marketplace quel fichier ils ont épinglé avant d'installer

462 462 

463<h3 id="an-npm-plugin-source-must-name-a-registry-package">

464 `An npm plugin source must name a registry package`

465</h3>

466 

467Un plugin dont l'entrée de marketplace utilise une [source `npm`](/docs/fr/plugins/marketplace-reference#npm-plugin-source) n'a pas pu être installé, mis à jour ou chargé, et le message inclut cette phrase. Claude Code a vérifié la valeur `package` de l'entrée avant de récupérer quoi que ce soit et l'a refusée. Le message nomme la valeur et la raison :

468 

469```text theme={null}

470"github:acme/formatter" was not installed: it is not an http or https link. An npm plugin source must name a registry package (name or name@version) or link to a tarball file. For a plugin in a git repository, use a "github", "url" or "git-subdir" source.

471```

472 

473Le propriétaire de la marketplace doit modifier l'entrée :

474 

475* **Si c'est vous** : remplacez `package` par une valeur que la [référence de la source de plugin npm](/docs/fr/plugins/marketplace-reference#npm-plugin-source) accepte, ou basculez l'entrée vers une source `github`, `url` ou `git-subdir`

476* **Si ce n'est pas vous** : signalez le message au propriétaire de la marketplace

477 

463<h3 id="marketplace-is-registered-from-an-untrusted-source">478<h3 id="marketplace-is-registered-from-an-untrusted-source">

464 `Marketplace "<name>" is registered from an untrusted source`479 `Marketplace "<name>" is registered from an untrusted source`

465</h3>480</h3>

466 481 

467Une marketplace que vous avez ajoutée plus tôt a cessé de charger, tout comme ses plugins. Cette ligne apparaît dans l'onglet **Erreurs** de `/plugin` ou lors de la prochaine actualisation.482Une marketplace que vous avez ajoutée plus tôt a cessé de charger, tout comme ses plugins. Cette ligne apparaît dans l'onglet **Erreurs** de `/plugin` ou lors de la prochaine actualisation.

468 483 

469La marketplace est enregistrée sous un nom qui est [réservé aux marketplaces officielles d'Anthropic](/docs/fr/plugins/marketplace-reference), mais sa source enregistrée n'est pas un référentiel GitHub `anthropics`. Les noms réservés sont re-vérifiés chaque fois qu'une marketplace charge ou s'actualise, donc la marketplace et les plugins installés à partir de celle-ci cessent de charger.484La marketplace est enregistrée sous un nom qui est [réservé aux marketplaces officielles d'Anthropic](/docs/fr/plugins/marketplace-reference), mais sa source enregistrée n'est pas un dépôt GitHub `anthropics`. Les noms réservés sont re-vérifiés chaque fois qu'une marketplace charge ou s'actualise, donc la marketplace et les plugins installés à partir de celle-ci cessent de charger.

470 485 

471Le message complet nomme le nom réservé et la correction :486Le message complet nomme le nom réservé et la correction :

472 487 


476 491 

477La correction diffère pour les utilisateurs et les éditeurs :492La correction diffère pour les utilisateurs et les éditeurs :

478 493 

479* **Vous utilisez la marketplace** : dans votre shell, exécutez `claude plugin marketplace remove <name>`, puis ajoutez à nouveau la marketplace à partir du référentiel officiel `github.com/anthropics`494* **Vous utilisez la marketplace** : dans votre shell, exécutez `claude plugin marketplace remove <name>`, puis ajoutez à nouveau la marketplace à partir du dépôt officiel `github.com/anthropics`

480* **Vous publiez une marketplace tierce qui a utilisé le nom avant qu'il ne devienne réservé** : renommez-la et demandez aux utilisateurs de la réajouter à partir de votre source495* **Vous publiez une marketplace tierce qui a utilisé le nom avant qu'il ne devienne réservé** : renommez-la et demandez aux utilisateurs de la réajouter à partir de votre source

481 496 

482Avant v2.1.205, Claude Code ne vérifiait le nom que lorsque vous ajoutiez la marketplace, donc une entrée enregistrée avant que son nom ne devienne réservé continuait à charger.497Avant v2.1.205, Claude Code ne vérifiait le nom que lorsque vous ajoutiez la marketplace, donc une entrée enregistrée avant que son nom ne devienne réservé continuait à charger.

483 498 

499<h3 id="marketplace-is-added-but-ignored">

500 `Marketplace "<name>" is added but ignored`

501</h3>

502 

503La marketplace a une entrée dans `~/.claude/plugins/known_marketplaces.json`, mais l'entrée a échoué à une vérification que Claude Code exécute chaque fois qu'il lit ce fichier, donc la marketplace et les plugins installés à partir de celle-ci cessent de charger. Dans votre shell, `claude plugin list` signale chaque plugin affecté avec une ligne qui nomme la raison et la correction :

504 

505```text theme={null}

506Marketplace team-tools is added but ignored. Its location is on a network drive, has "." or ".." in its path, or couldn't be checked. Re-add the marketplace (one added from a folder or file must be re-added from a copy on this computer), or, to trust a folder on a network drive, declare it under extraKnownMarketplaces in user or managed settings.

507```

508 

509Dans une session, l'onglet **Erreurs** de `/plugin` met le nom de la marketplace entre guillemets, termine la ligne après la raison, et affiche la correction sur la ligne en dessous.

510 

511La phrase après `is added but ignored` nomme la vérification à laquelle l'entrée a échoué :

512 

513* `Its location is on a network drive, has "." or ".." in its path, or couldn't be checked`, ou la même phrase à propos de `The folder or file it was added from` : le répertoire de la marketplace, ou le chemin local à partir duquel elle a été ajoutée, se trouve sur un emplacement réseau, contient un segment `.` ou `..` dans son chemin, ou n'a pas pu être vérifié

514* `Its git URL can't be used: <reason>` ou `Its URL can't be read as an https:// or http:// address` : l'URL source enregistrée de l'entrée est une URL à partir de laquelle Claude Code refuse de cloner ou de récupérer

515* `Its source doesn't match its extraKnownMarketplaces entry in user or managed settings` : l'entrée ne correspond pas à la déclaration [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces) du même nom

516 

517Lorsque `(see the debug log)` suit `is added but ignored` à la place d'une raison, Claude Code refuse le nom de la marketplace, par exemple [une autre orthographe d'un nom réservé](/docs/fr/errors#marketplace-name-is-another-spelling-of-a-reserved-name). Le [log de débogage](/docs/fr/debug-your-config) nomme l'entrée.

518 

519**Que faire :**

520 

521* Suivez la correction indiquée dans le message. Dans votre shell, exécutez `claude plugin marketplace remove <name>`, puis ajoutez à nouveau la marketplace à partir d'une source prise en charge ou d'un chemin local et réinstallez ses plugins, que la commande de suppression désinstalle. La commande de suppression fonctionne sur une entrée ignorée

522* Pour conserver une marketplace sur un emplacement réseau, déclarez-la sous [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces) dans vos paramètres utilisateur ou gérés ; une déclaration dans le `.claude/settings.json` ou le `.claude/settings.local.json` d'un dépôt ne compte pas

523* Pour une source qui diffère de sa déclaration dans les paramètres, réajoutez la marketplace à partir de la source déclarée ou modifiez la déclaration. `claude plugin marketplace add` refuse la même non-correspondance ; consultez [l'entrée `Cannot add marketplace` correspondante](#cannot-add-marketplace-source-doesnt-match)

524* Pour un nom refusé, supprimez la marketplace, en utilisant la commande qui suit `Remove it:` lorsque la ligne en fournit une ; l'ajouter à nouveau sous le même nom est à nouveau refusé

525 

526Avant v2.1.286, quelle que soit la raison, `claude plugin list` signalait une telle marketplace comme `Marketplace <name> not found`, et l'onglet **Erreurs** de `/plugin` la signalait comme `Marketplace "<name>" is registered but was refused (see the debug log)`. La raison n'apparaissait que dans le log de débogage. Dans v2.1.286, les phrases de raison et de correction utilisaient une formulation différente, comme `Its recorded location is network-shaped or unclassifiable (never probed)`.

527 

484<h3 id="plugin-has-a-corrupt-manifest-file-or-has-an-invalid-manifest-file">528<h3 id="plugin-has-a-corrupt-manifest-file-or-has-an-invalid-manifest-file">

485 `Plugin <name> has a corrupt manifest file` ou `has an invalid manifest file`529 `Plugin <name> has a corrupt manifest file` ou `has an invalid manifest file`

486</h3>530</h3>


536* **La marketplace que vous avez déjà ajoutée** : installez à partir de celle-ci par nom avec `/plugin install <plugin>@<name>`580* **La marketplace que vous avez déjà ajoutée** : installez à partir de celle-ci par nom avec `/plugin install <plugin>@<name>`

537* **La nouvelle source** : exécutez `/plugin marketplace remove <name>`, puis réessayez l'installation581* **La nouvelle source** : exécutez `/plugin marketplace remove <name>`, puis réessayez l'installation

538 582 

539<h3 id="cannot-add-marketplace-its-network-source-differs">583<h3 id="cannot-add-marketplace-source-doesnt-match">

540 `Cannot add marketplace "<name>": its network source differs from the one declared for it in settings`584 `Cannot add marketplace "<name>": its source doesn't match its extraKnownMarketplaces entry in user or managed settings`

541</h3>585</h3>

542 586 

543Vous avez exécuté `marketplace add`, et le catalogue à cette source a le même nom qu'une marketplace qu'un fichier de paramètres déclare déjà sous [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces) avec une source différente. Claude Code refuse l'ajout et n'enregistre rien.587Vous avez ajouté une marketplace, et le `name` dans son `marketplace.json` possède déjà une entrée [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces) dans vos paramètres utilisateur ou vos paramètres gérés. La source que vous avez fournie diffère de celle que cette entrée indique, donc Claude Code refuse l'ajout et n'enregistre rien.

588 

589Deux sources correspondent lorsqu'elles ont le même type et la même valeur dans chaque champ. Une entrée qui définit un `ref` que vous n'avez pas passé compte comme différente. Une entrée `github` compte également comme différente lorsque vous avez fourni le dépôt sous forme d'URL `https://github.com/`, car Claude Code enregistre cette URL comme une [source `git`](/docs/fr/plugins/marketplace-reference#marketplace-sources). Faites l'une de ces choses :

590 

591* **Utilisez la source déclarée** : Claude Code [enregistre de lui-même les marketplaces déclarées dans les paramètres](/docs/fr/settings-reference#extraknownmarketplaces), donc exécutez d'abord `/plugin marketplace list` dans une session. Si la liste affiche le nom, la marketplace est déjà enregistrée et il n'y a rien à ajouter.

544 592 

545Le message se termine par la correction : la source doit correspondre à celle déclarée pour ce nom dans les paramètres, ou vous modifiez la déclaration. Comparez la source que vous avez passée par rapport à l'entrée `extraKnownMarketplaces` pour ce nom, y compris son `ref`, `path` et `headers`, puis faites l'une de ces choses :593 Si la liste ne l'affiche pas, ajoutez-la avec la source saisie de la manière dont l'entrée l'écrit. Pour une entrée dont l'objet `source` est `{ "source": "github", "repo": "acme-corp/claude-plugins", "ref": "v1.2.0" }`, exécutez ceci :

594 

595 ```text theme={null}

596 /plugin marketplace add acme-corp/claude-plugins#v1.2.0

597 ```

546 598 

547* **Utilisez la source déclarée** : ajoutez la marketplace à partir de la source que l'entrée de paramètres nomme

548* **Utilisez la nouvelle source** : modifiez ou supprimez l'entrée `extraKnownMarketplaces`, puis ajoutez à nouveau la marketplace. Si les paramètres gérés la déclarent, demandez à votre administrateur599* **Utilisez la nouvelle source** : modifiez ou supprimez l'entrée `extraKnownMarketplaces`, puis ajoutez à nouveau la marketplace. Si les paramètres gérés la déclarent, demandez à votre administrateur

549 600 

601Avant v2.1.287, le message indiquait `Cannot add marketplace "<name>": its network source differs from the one declared for it in settings (kind, target, or a fetch-shaping field such as headers / ref / path / sparsePaths)`.

602 

550<h3 id="failed-to-install-from-the-plugin-menu">603<h3 id="failed-to-install-from-the-plugin-menu">

551 `Failed to install: <plugin> (<reason>)`604 `Failed to install: <plugin> (<reason>)`

552</h3>605</h3>


603| `Requires "<dep>" <range>, installed <version>` | La version de la dépendance installée est en dehors de la plage déclarée du plugin. | Mettez à jour la dépendance vers une version dans la plage, ou désinstallez le plugin. |656| `Requires "<dep>" <range>, installed <version>` | La version de la dépendance installée est en dehors de la plage déclarée du plugin. | Mettez à jour la dépendance vers une version dans la plage, ou désinstallez le plugin. |

604| `<Plugin or Dependency> "<name>" has conflicting version requirements` | Aucune version ne satisfait chaque plage qui l'épingle. Le message répertorie les plages. | Désinstallez ou mettez à jour l'un des plugins en conflit, ou demandez à l'auteur en amont d'élargir sa contrainte. |657| `<Plugin or Dependency> "<name>" has conflicting version requirements` | Aucune version ne satisfait chaque plage qui l'épingle. Le message répertorie les plages. | Désinstallez ou mettez à jour l'un des plugins en conflit, ou demandez à l'auteur en amont d'élargir sa contrainte. |

605| `... has version requirements too complex to intersect` ou `has an invalid version requirement` | Une plage n'est pas un semver valide, ou les plages combinées ne peuvent pas être intersectées. | Corrigez la plage invalide ou simplifiez les longues chaînes `\|\|`. |658| `... has version requirements too complex to intersect` ou `has an invalid version requirement` | Une plage n'est pas un semver valide, ou les plages combinées ne peuvent pas être intersectées. | Corrigez la plage invalide ou simplifiez les longues chaînes `\|\|`. |

606| `... has no git tag satisfying <range>` | Le référentiel de la dépendance n'a pas de balise `<name>--v*` dans la plage. | Vérifiez que les balises en amont libèrent avec cette convention, ou assouplissez la plage. |659| `... has no git tag satisfying <range>` | Le dépôt de la dépendance n'a pas de balise `<name>--v*` dans la plage. | Vérifiez que le projet en amont balise ses versions selon cette convention, ou assouplissez la plage. |

607| `Dependency "<dep>" (required by <plugin>) is in <marketplace>, which is not in the allowlist` | La dépendance se trouve dans une marketplace différente, et la résolution inter-marketplace est désactivée par défaut. | Installez la dépendance vous-même à la même portée, dans votre shell avec `claude plugin install <dep>@<marketplace>` plus le `--scope` auquel vous installez le plugin, puis réessayez. |660| `Dependency "<dep>" (required by <plugin>) is in <marketplace>, which is not in the allowlist` | La dépendance se trouve dans une marketplace différente, et la résolution inter-marketplace est désactivée par défaut. | Installez la dépendance vous-même à la même portée, dans votre shell avec `claude plugin install <dep>@<marketplace>` plus le `--scope` auquel vous installez le plugin, puis réessayez. |

608 661 

609Pour voir ces par programmation, exécutez `claude plugin list --json` dans votre shell. Les plugins avec des problèmes portent un champ `errors` avec les messages et un champ `errorDetails` avec un `type` pour chacun : les deux premières lignes sont `dependency-unsatisfied` et la troisième est `dependency-version-unsatisfied`.662Pour voir ces par programmation, exécutez `claude plugin list --json` dans votre shell. Les plugins avec des problèmes portent un champ `errors` avec les messages et un champ `errorDetails` avec un `type` pour chacun : les deux premières lignes sont `dependency-unsatisfied` et la troisième est `dependency-version-unsatisfied`.


890 943 

891L'onglet **Erreurs** affiche `commands path not found: <absolute path>` avec la guidance `Check that the path in your manifest or marketplace config is correct`. Le même message apparaît pour `skills`, `agents` et `hooks`.944L'onglet **Erreurs** affiche `commands path not found: <absolute path>` avec la guidance `Check that the path in your manifest or marketplace config is correct`. Le même message apparaît pour `skills`, `agents` et `hooks`.

892 945 

893Claude Code a résolu un chemin à partir de votre `plugin.json` ou entrée de marketplace par rapport à la racine du plugin et n'a rien trouvé là. Le chemin dans le message est le chemin absolu qu'il a vérifiée, donc comparez-le avec ce qui est sur le disque. Corrigez le chemin ou créez le répertoire, puis exécutez `/reload-plugins`.946Claude Code a résolu un chemin à partir de votre `plugin.json` ou entrée de marketplace par rapport à la racine du plugin et n'a rien trouvé là. Le chemin dans le message est le chemin absolu qu'il a vérifié, donc comparez-le avec ce qui est sur le disque. Corrigez le chemin ou créez le répertoire, puis exécutez `/reload-plugins`.

894 947 

895Les chemins dans le manifeste sont relatifs à la racine du plugin et commencent par `./`. Un chemin qui se résout en dehors de la racine du plugin est signalé comme `<component> path escapes plugin directory` à la place et est supprimé.948Les chemins dans le manifeste sont relatifs à la racine du plugin et commencent par `./`. Un chemin qui se résout en dehors de la racine du plugin est signalé comme `<component> path escapes plugin directory` à la place et est supprimé.

896 949 


900 953 

901Vous avez démarré `claude --plugin-dir <path>` et ne voyez aucune erreur, mais les skills, agents et hooks du plugin ne sont pas là.954Vous avez démarré `claude --plugin-dir <path>` et ne voyez aucune erreur, mais les skills, agents et hooks du plugin ne sont pas là.

902 955 

903`--plugin-dir` prend le répertoire racine du plugin, celui qui contient `.claude-plugin/plugin.json` et les répertoires de composants tels que `skills/`. Si vous le pointez plutôt à une racine de marketplace, Claude Code ne lit pas `marketplace.json`, donc un plugin sous `plugins/` ne charge pas, et vous ne voyez aucune erreur. Avant v2.1.281, Claude Code chargeait une racine de marketplace comme un plugin vide nommé d'après ce répertoire. Pointez le drapeau au répertoire du plugin lui-même :956`--plugin-dir` prend le répertoire racine du plugin, celui qui contient `.claude-plugin/plugin.json` et les répertoires de composants tels que `skills/`. Si vous le pointez plutôt à une racine de marketplace, Claude Code ne lit pas `marketplace.json`, donc un plugin sous `plugins/` ne charge pas, et vous ne voyez aucune erreur. Avant v2.1.281, Claude Code chargeait une racine de marketplace comme un plugin vide nommé d'après ce répertoire. Pointez le flag au répertoire du plugin lui-même :

904 957 

905```shell theme={null}958```shell theme={null}

906claude --plugin-dir ./my-marketplace/plugins/my-plugin959claude --plugin-dir ./my-marketplace/plugins/my-plugin


951* **La description ne correspond pas à la façon dont les gens demandent** : travaillez à travers les vérifications dans [Le skill ne se déclenche pas](/docs/fr/skills#skill-not-triggering)1004* **La description ne correspond pas à la façon dont les gens demandent** : travaillez à travers les vérifications dans [Le skill ne se déclenche pas](/docs/fr/skills#skill-not-triggering)

952* **La description est tronquée** : lorsque de nombreux skills sont installés, Claude Code raccourcit les descriptions pour s'adapter au budget de caractères de la liste, ce qui peut supprimer les mots-clés dont Claude a besoin pour correspondre à une demande. Consultez [Les descriptions de skill sont coupées court](/docs/fr/skills#skill-descriptions-are-cut-short)1005* **La description est tronquée** : lorsque de nombreux skills sont installés, Claude Code raccourcit les descriptions pour s'adapter au budget de caractères de la liste, ce qui peut supprimer les mots-clés dont Claude a besoin pour correspondre à une demande. Consultez [Les descriptions de skill sont coupées court](/docs/fr/skills#skill-descriptions-are-cut-short)

953 1006 

954Pour mesurer la fréquence à laquelle le skill se déclenche sur des invites réalistes plutôt que de vérifier une à la fois, écrivez un cas d'évaluation avec un [évaluateur `tool_used: Skill`](/docs/fr/plugin-evals#create-your-first-eval-suite) et exécutez-le avec `claude plugin eval` après chaque modification de description.1007Pour mesurer la fréquence à laquelle le skill se déclenche sur des prompts réalistes plutôt que de vérifier un à la fois, écrivez un cas d'évaluation avec un [évaluateur `tool_used: Skill`](/docs/fr/plugin-evals#create-your-first-eval-suite) et exécutez-le avec `claude plugin eval` après chaque modification de description.

955 1008 

956<h3 id="is-not-a-plugin-or-skill-folder">1009<h3 id="is-not-a-plugin-or-skill-folder">

957 `<directory> is not a plugin or skill folder` à partir de `claude plugin eval init`1010 `<directory> is not a plugin or skill folder` à partir de `claude plugin eval init`

958</h3>1011</h3>

959 1012 

960Vous avez exécuté `claude plugin eval init` à partir d'un répertoire qui n'est pas la racine d'un plugin, comme votre répertoire personnel ou la racine d'un référentiel qui garde le plugin dans un sous-répertoire. `init` écrit la suite sous le répertoire de travail, donc il s'arrête au lieu de créer un répertoire `evals/` que le plugin ne verrait jamais.1013Vous avez exécuté `claude plugin eval init` à partir d'un répertoire qui n'est pas la racine d'un plugin, comme votre répertoire personnel ou la racine d'un dépôt qui garde le plugin dans un sous-répertoire. `init` écrit la suite sous le répertoire de travail, donc il s'arrête au lieu de créer un répertoire `evals/` que le plugin ne verrait jamais.

961 1014 

962Changez à la racine du plugin, le répertoire qui contient `.claude-plugin/plugin.json` ou le `SKILL.md` du skill, et exécutez à nouveau la commande. Pour échafauder la suite ailleurs exprès, passez `--eval-dir`. Consultez [Testez les plugins avec des evals](/docs/fr/plugin-evals).1015Changez à la racine du plugin, le répertoire qui contient `.claude-plugin/plugin.json` ou le `SKILL.md` du skill, et exécutez à nouveau la commande. Pour échafauder la suite ailleurs exprès, passez `--eval-dir`. Consultez [Testez les plugins avec des evals](/docs/fr/plugin-evals).

963 1016 


973* **La boîte de dialogue Gérer les plugins de l'extension VS Code** : demande les options non définies sous forme de formulaire après l'installation. Avant v2.1.285, l'installation là-bas n'affichait aucun formulaire d'options, donc définissez les valeurs à partir d'une session de terminal avec `/plugin configure <plugin>@<marketplace>`1026* **La boîte de dialogue Gérer les plugins de l'extension VS Code** : demande les options non définies sous forme de formulaire après l'installation. Avant v2.1.285, l'installation là-bas n'affichait aucun formulaire d'options, donc définissez les valeurs à partir d'une session de terminal avec `/plugin configure <plugin>@<marketplace>`

974* **`claude plugin install` dans votre shell** : ne demande jamais les valeurs `userConfig`. Il enregistre toutes les valeurs `--config KEY=VALUE` que vous passez, et lorsque les options restent non définies, il imprime `N userConfig options not yet set — run /plugin configure <plugin>@<marketplace> in Claude Code, or pass --config KEY=VALUE.` Lorsque l'une des options non définies est requise, `(M required)` suit `not yet set`.1027* **`claude plugin install` dans votre shell** : ne demande jamais les valeurs `userConfig`. Il enregistre toutes les valeurs `--config KEY=VALUE` que vous passez, et lorsque les options restent non définies, il imprime `N userConfig options not yet set — run /plugin configure <plugin>@<marketplace> in Claude Code, or pass --config KEY=VALUE.` Lorsque l'une des options non définies est requise, `(M required)` suit `not yet set`.

975 1028 

976Si vous avez installé à partir du shell, passez les valeurs avec `--config`, un drapeau par option :1029Si vous avez installé à partir du shell, passez les valeurs avec `--config`, un flag par option :

977 1030 

978```shell theme={null}1031```shell theme={null}

979claude plugin install my-plugin@my-marketplace --config api_url=https://example.com1032claude plugin install my-plugin@my-marketplace --config api_url=https://example.com


1007| `Path is a file; skills entries must be directories containing SKILL.md` | Une entrée `skills` pointe vers `SKILL.md` au lieu de son répertoire. | Pointez au répertoire parent, ou `.` pour un `SKILL.md` au niveau racine. |1060| `Path is a file; skills entries must be directories containing SKILL.md` | Une entrée `skills` pointe vers `SKILL.md` au lieu de son répertoire. | Pointez au répertoire parent, ou `.` pour un `SKILL.md` au niveau racine. |

1008| `No frontmatter block found` ou `YAML frontmatter failed to parse: <error>` | Un fichier de skill, agent ou commande a un frontmatter YAML manquant ou invalide. | Ajoutez ou corrigez le frontmatter entre les délimiteurs `---`. Signalé lors de la validation d'un répertoire de plugin. |1061| `No frontmatter block found` ou `YAML frontmatter failed to parse: <error>` | Un fichier de skill, agent ou commande a un frontmatter YAML manquant ou invalide. | Ajoutez ou corrigez le frontmatter entre les délimiteurs `---`. Signalé lors de la validation d'un répertoire de plugin. |

1009| `Plugin name "<name>" is reserved: it passes as one of Anthropic's own` | Le nom `name` du plugin est l'un des [noms réservés](/docs/fr/plugins/manifest-reference#name). | Renommez le plugin pour ce qu'il fait. |1062| `Plugin name "<name>" is reserved: it passes as one of Anthropic's own` | Le nom `name` du plugin est l'un des [noms réservés](/docs/fr/plugins/manifest-reference#name). | Renommez le plugin pour ce qu'il fait. |

1010| `Unknown field '<key>'` | Le manifeste a un champ que le schéma ne définit pas. | Supprimez-le, ou utilisez le nom que le message suggère. Claude Code ignore les champs inconnus au moment du chargement. |1063| `Unknown field '<key>'` | Le manifeste a un champ que le schéma ne définit pas. | Supprimez-le, ou utilisez le nom que le message suggère. Claude Code ignore les champs inconnus au moment du chargement. Pour `privacyPolicyUrl` et les autres champs de fiche d'annuaire dans `plugin.json`, consultez [Champs de fiche d'annuaire](/docs/fr/plugins/manifest-reference#directory-listing-fields). |

1011 1064 

1012Exécutez la commande à nouveau après chaque correction jusqu'à ce qu'elle n'imprime aucune erreur.1065Exécutez la commande à nouveau après chaque correction jusqu'à ce qu'elle n'imprime aucune erreur.

1013 1066 

prompt-library.md +291 −68

Details

622 const m = p.slice(base.length).match(/^\/([a-z]{2}(?:-[A-Z]{2})?)\//);622 const m = p.slice(base.length).match(/^\/([a-z]{2}(?:-[A-Z]{2})?)\//);

623 const locale = m ? m[1] : 'en';623 const locale = m ? m[1] : 'en';

624 return href => {624 return href => {

625 if (!href || href[0] !== '/' || href[1] === '/') return href;625 if (!href) return undefined;

626 if (href[0] === '#' || href.startsWith('https://')) return href;

627 if (!(/^\/[A-Za-z0-9]/).test(href)) return undefined;

626 return base + (href.startsWith('/en/') ? '/' + locale + href.slice(3) : href);628 return base + (href.startsWith('/en/') ? '/' + locale + href.slice(3) : href);

627 };629 };

628 }, []);630 }, []);


671 const assemble = p => p.prompt.replace(/\{(\w+)\}/g, (_, k) => fillOf(p, k) || p.slots && p.slots[k] || k);673 const assemble = p => p.prompt.replace(/\{(\w+)\}/g, (_, k) => fillOf(p, k) || p.slots && p.slots[k] || k);

672 const preview = p => p.prompt.replace(/\{(\w+)\}/g, (_, k) => p.slots && p.slots[k] || k);674 const preview = p => p.prompt.replace(/\{(\w+)\}/g, (_, k) => p.slots && p.slots[k] || k);

673 const bodyText = p => preview(p) + ' ' + p.teaches.replace(/\[([^\]]+)\]\([^)]+\)/g, '$1') + ' ' + (p.next || '');675 const bodyText = p => preview(p) + ' ' + p.teaches.replace(/\[([^\]]+)\]\([^)]+\)/g, '$1') + ' ' + (p.next || '');

674 const widthFor = s => (s || '').length + 3 + 'ch';676 const WIDE_RE = /[\u1100-\u115F\u2E80-\uA4CF\uAC00-\uD7A3\uF900-\uFAFF\uFE30-\uFE4F\uFF00-\uFF60\uFFE0-\uFFE6]/g;

677 const widthFor = s => {

678 const t = typeof s === 'string' ? s : '';

679 return t.length + (t.match(WIDE_RE) || []).length + 3 + 'ch';

680 };

675 const ql = q.trim().toLowerCase();681 const ql = q.trim().toLowerCase();

676 const toggleTag = k => {682 const toggleTag = k => {

677 setStart(false);683 setStart(false);


1096 1102 

1097export const text = {1103export const text = {

1098 "get-oriented-in-a": {1104 "get-oriented-in-a": {

1099 title: "S'orienter dans un nouveau référentiel",1105 title: "S'orienter dans un nouveau dépôt",

1100 teaches: "Décrivez ce que vous voulez savoir, pas quels fichiers lire. Claude explore le projet par lui-même et retourne un résumé de la façon dont il s'articule.",1106 teaches: "Décrivez ce que vous voulez savoir, pas quels fichiers lire. Claude explore le projet par lui-même et retourne un résumé de la façon dont il s'articule.",

1101 next: "Exécutez `/init` pour configurer `CLAUDE.md` afin que Claude se souvienne de ceci à chaque session"1107 next: "Exécutez `/init` pour configurer `CLAUDE.md` afin que Claude se souvienne de ceci à chaque session",

1108 prompt: "donnez-moi une vue d'ensemble de cette base de code : architecture, répertoires clés et façon dont les éléments s'articulent"

1102 },1109 },

1103 "explain-unfamiliar-code": {1110 "explain-unfamiliar-code": {

1104 title: "Expliquer du code non familier",1111 title: "Expliquer du code non familier",

1105 teaches: "Nommez le fichier et dites dans quel format vous voulez la réponse. Échangez la page HTML contre un diagramme, des points à puces, ou tout ce qui correspond à votre façon d'apprendre.",1112 teaches: "Nommez le fichier et dites dans quel format vous voulez la réponse. Échangez la page HTML contre un diagramme, des points à puces, ou tout ce qui correspond à votre façon d'apprendre.",

1106 next: "Définissez un style de sortie afin que Claude explique toujours dans votre format préféré"1113 next: "Définissez un style de sortie afin que Claude explique toujours dans votre format préféré",

1114 prompt: "expliquez ce que fait {path} et comment les données y circulent. rédigez cela comme {format}",

1115 slots: {

1116 path: "src/scheduler/queue.ts",

1117 format: "une page HTML avec un diagramme, puis ouvrez-la dans mon navigateur"

1118 }

1107 },1119 },

1108 "find-where-something-happens": {1120 "find-where-something-happens": {

1109 title: "Trouver où quelque chose se produit",1121 title: "Trouver où quelque chose se produit",

1110 teaches: "Recherchez par comportement plutôt que par nom de fichier. La recherche fonctionne même quand vous ne savez pas comment le fichier s'appelle ou dans quel répertoire il se trouve."1122 teaches: "Recherchez par comportement plutôt que par nom de fichier. La recherche fonctionne même quand vous ne savez pas comment le fichier s'appelle ou dans quel répertoire il se trouve.",

1123 prompt: "où {behavior} ?",

1124 slots: {

1125 behavior: "validons-nous les types de fichiers téléversés"

1126 }

1111 },1127 },

1112 "see-what-depends-on": {1128 "see-what-depends-on": {

1113 title: "Vérifier ce qui se casse avant de supprimer",1129 title: "Vérifier ce qui se casse avant de supprimer",

1114 teaches: "Demandez avant de supprimer quoi que ce soit. La liste des appelants et des effets en aval vous indique si vous regardez un nettoyage d'une ligne ou une modification que vous devez coordonner."1130 teaches: "Demandez avant de supprimer quoi que ce soit. La liste des appelants et des effets en aval vous indique si vous regardez un nettoyage d'une ligne ou une modification que vous devez coordonner.",

1131 prompt: "qu'est-ce qui casserait si je supprimais {target} ?",

1132 slots: {

1133 target: "le helper retryWithBackoff"

1134 }

1115 },1135 },

1116 "trace-how-code-evolved": {1136 "trace-how-code-evolved": {

1117 title: "Tracer l'évolution du code",1137 title: "Tracer l'évolution du code",

1118 teaches: "Pointez l'historique des commits quand la question est pourquoi, pas quoi. Claude lit le journal et le blame pour quelle que soit la version control que vous utilisez et explique les décisions derrière l'implémentation actuelle."1138 teaches: "Pointez l'historique des commits quand la question est pourquoi, pas quoi. Claude lit le log et le blame de votre système de gestion de versions, quel qu'il soit, et explique les décisions derrière l'implémentation actuelle.",

1139 prompt: "parcourez l'historique des commits de {path} et résumez comment il a évolué et pourquoi",

1140 slots: {

1141 path: "internal/auth/session.go"

1142 }

1119 },1143 },

1120 "scope-a-change-before": {1144 "scope-a-change-before": {

1121 title: "Délimiter une modification avant de commencer",1145 title: "Délimiter une modification avant de commencer",

1122 teaches: "Dimensionnez le travail avant de vous y engager sur une feuille de route. La liste des fichiers vous indique si vous regardez un composant ou une modification transversale."1146 teaches: "Dimensionnez le travail avant de vous y engager sur une feuille de route. La liste des fichiers vous indique si vous regardez un composant ou une modification transversale.",

1147 prompt: "quels fichiers devrais-je modifier pour {change} ?",

1148 slots: {

1149 change: "ajouter un bouton de mode sombre dans les paramètres"

1150 }

1123 },1151 },

1124 "ask-the-codebase-a": {1152 "ask-the-codebase-a": {

1125 title: "Poser une question produit à la base de code",1153 title: "Poser une question produit à la base de code",

1126 teaches: "Énoncez votre rôle afin que la réponse soit au bon niveau. Claude explique ce que le produit fait réellement à partir du code source, sans que vous ayez besoin de le lire.",1154 teaches: "Énoncez votre rôle afin que la réponse soit au bon niveau. Claude explique ce que le produit fait réellement à partir du code source, sans que vous ayez besoin de le lire.",

1127 next: "Définissez un style de sortie afin que Claude présente toujours les réponses à ce niveau"1155 next: "Définissez un style de sortie afin que Claude présente toujours les réponses à ce niveau",

1156 prompt: "je suis {role}. expliquez-moi étape par étape ce qui se passe quand un utilisateur {action}, de l'interface jusqu'au résultat",

1157 slots: {

1158 role: "PM",

1159 action: "clique sur Exporter en PDF"

1160 }

1128 },1161 },

1129 "plan-a-multi-file": {1162 "plan-a-multi-file": {

1130 title: "Planifier une modification multi-fichiers avant de toucher au code",1163 title: "Planifier une modification multi-fichiers avant de toucher au code",

1131 teaches: "Ajouter « ne pas modifier encore » sépare l'exploration des modifications, afin que vous voyiez l'approche avant que le code ne bouge. Pour faire du plan-first le défaut sur chaque prompt, appuyez sur Maj+Tab pour [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode)."1164 teaches: "Ajouter « ne modifiez rien pour l'instant » sépare l'exploration des modifications, afin que vous voyiez l'approche avant que le code ne bouge. Pour faire du plan-first le défaut sur chaque prompt, appuyez sur Maj+Tab pour passer en [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode).",

1165 prompt: "planifiez comment refactoriser le {target} pour {goal}. listez les fichiers que vous modifieriez, mais ne modifiez rien pour l'instant",

1166 slots: {

1167 target: "module de paiement",

1168 goal: "prendre en charge plusieurs devises"

1169 }

1132 },1170 },

1133 "draft-a-spec-by": {1171 "draft-a-spec-by": {

1134 title: "Rédiger une spécification par entrevue",1172 title: "Rédiger une spécification par entrevue",

1135 teaches: "Demandez à être interviewé au lieu d'écrire la spécification vous-même. Claude vous pose des questions structurées jusqu'à ce que les exigences soient complètes, puis écrit le résultat dans un fichier.",1173 teaches: "Demandez à être interviewé au lieu d'écrire la spécification vous-même. Claude vous pose des questions structurées jusqu'à ce que les exigences soient complètes, puis écrit le résultat dans un fichier.",

1136 next: "Enregistrez vos questions d'entrevue en tant que compétence `/spec` afin que chaque spécification commence de la même façon"1174 next: "Enregistrez vos questions d'entrevue en tant que skill `/spec` afin que chaque spécification commence de la même façon",

1175 prompt: "je veux créer {feature}. interviewez-moi sur l'implémentation, l'UX, les cas limites et les compromis jusqu'à ce que nous ayons tout couvert, puis écrivez la spécification dans SPEC.md",

1176 slots: {

1177 feature: "des limites de débit par espace de travail"

1178 }

1137 },1179 },

1138 "turn-a-meeting-into": {1180 "turn-a-meeting-into": {

1139 title: "Transformer une réunion en tickets",1181 title: "Transformer une réunion en tickets",

1140 teaches: "Ignorez l'étape de transcription. Claude extrait les éléments d'action de l'entrée non structurée et les écrit directement dans votre suivi via [MCP](/docs/fr/mcp), afin que vous examiniez les tickets, pas la transcription.",1182 teaches: "Ignorez l'étape de transcription. Claude extrait les éléments d'action de l'entrée non structurée et les écrit directement dans votre suivi via [MCP](/docs/fr/mcp), afin que vous examiniez les tickets, pas la transcription.",

1141 next: "Enregistrez ceci en tant que compétence `/tickets`"1183 next: "Enregistrez ceci en tant que skill `/tickets`",

1184 prompt: "lisez {input} et rédigez les actions à mener, puis créez un ticket {tracker} pour chacune avec des critères d'acceptation",

1185 slots: {

1186 input: "@meeting-notes.md",

1187 tracker: "Linear"

1188 }

1142 },1189 },

1143 "map-edge-cases-before": {1190 "map-edge-cases-before": {

1144 title: "Cartographier les cas limites avant de construire",1191 title: "Cartographier les cas limites avant de construire",

1145 teaches: "Demandez ce qui manque, pas ce qui est là. Claude énumère les états d'erreur, les états vides et les cas limites qu'une conception de chemin heureux tend à ignorer."1192 teaches: "Demandez ce qui manque, pas ce qui est là. Claude énumère les états d'erreur, les états vides et les cas limites qu'une conception de chemin heureux tend à ignorer.",

1193 prompt: "listez les états d'erreur, les états vides et les cas limites de {feature} que la conception doit couvrir",

1194 slots: {

1195 feature: "le flux de téléversement de fichiers"

1196 }

1146 },1197 },

1147 "turn-a-mockup-into": {1198 "turn-a-mockup-into": {

1148 title: "Transformer une maquette en prototype fonctionnel",1199 title: "Transformer une maquette en prototype fonctionnel",

1149 teaches: "Un prototype cliquable répond à des questions qu'une maquette statique ne peut pas. Remettez le code fonctionnel à l'ingénierie au lieu d'expliquer les interactions dans un document."1200 teaches: "Un prototype cliquable répond à des questions qu'une maquette statique ne peut pas. Remettez le code fonctionnel à l'ingénierie au lieu d'expliquer les interactions dans un document.",

1201 prompt: "voici une maquette. créez un prototype fonctionnel sur lequel je peux cliquer, fidèle à la mise en page et aux états présentés"

1150 },1202 },

1151 "implement-from-a-screenshot": {1203 "implement-from-a-screenshot": {

1152 title: "Implémenter à partir d'une capture d'écran et auto-vérifier",1204 title: "Implémenter à partir d'une capture d'écran et auto-vérifier",

1153 teaches: "Cela donne à Claude une boucle de vérification : il rend, compare par rapport à l'image source, et itère sans que vous pointiez chaque écart.",1205 teaches: "Cela donne à Claude une boucle de vérification : il rend, compare par rapport à l'image source, et itère sans que vous pointiez chaque écart.",

1154 next: "Utilisez `/goal` pour garder Claude itérant jusqu'à ce que les captures d'écran correspondent"1206 next: "Utilisez `/goal` pour garder Claude itérant jusqu'à ce que les captures d'écran correspondent",

1207 prompt: "implémentez ce design, puis faites une capture d'écran du résultat, comparez-la à l'original et corrigez les différences"

1155 },1208 },

1156 "follow-an-existing-pattern": {1209 "follow-an-existing-pattern": {

1157 title: "Suivre un modèle existant",1210 title: "Suivre un modèle existant",

1158 teaches: "Pointez du code que vous aimez déjà. Sans référence, Claude utilise par défaut les meilleures pratiques générales. Avec une, il correspond aux conventions que votre base de code utilise réellement.",1211 teaches: "Pointez du code que vous aimez déjà. Sans référence, Claude utilise par défaut les bonnes pratiques générales. Avec une, il correspond aux conventions que votre base de code utilise réellement.",

1159 next: "Demandez à Claude d'écrire le modèle qu'il a suivi dans `CLAUDE.md` afin que les sessions futures le correspondent sans la référence"1212 next: "Demandez à Claude d'écrire le modèle qu'il a suivi dans `CLAUDE.md` afin que les sessions futures le correspondent sans la référence",

1213 prompt: "regardez comment {example} est implémenté pour comprendre le modèle, puis créez {new} de la même façon",

1214 slots: {

1215 example: "le gestionnaire de webhooks GitHub",

1216 new: "un gestionnaire de webhooks Stripe"

1217 }

1160 },1218 },

1161 "add-a-small-well": {1219 "add-a-small-well": {

1162 title: "Ajouter une petite fonctionnalité bien définie",1220 title: "Ajouter une petite fonctionnalité bien définie",

1163 teaches: "Énoncez les entrées et les sorties, pas comment la construire. Claude trouve où le code similaire vit et ajoute le vôtre à côté."1221 teaches: "Énoncez les entrées et les sorties, pas comment la construire. Claude trouve où le code similaire vit et ajoute le vôtre à côté.",

1222 prompt: "ajoutez un endpoint {endpoint} qui renvoie {payload}",

1223 slots: {

1224 endpoint: "/health",

1225 payload: "la version de l'application et sa durée de fonctionnement"

1226 }

1164 },1227 },

1165 "build-a-small-internal": {1228 "build-a-small-internal": {

1166 title: "Construire un petit outil interne à partir de zéro",1229 title: "Créer un petit outil interne à partir de zéro",

1167 teaches: "Vous n'avez pas besoin d'un projet, d'un framework ou d'une étape de construction. Décrivez l'outil et demandez à Claude de l'ouvrir afin que vous le voyiez fonctionner immédiatement."1230 teaches: "Vous n'avez pas besoin d'un projet, d'un framework ou d'une étape de build. Décrivez l'outil et demandez à Claude de l'ouvrir afin que vous le voyiez fonctionner immédiatement.",

1231 prompt: "créez un {tool} en HTML, CSS et JavaScript vanilla, puis ouvrez-le dans mon navigateur",

1232 slots: {

1233 tool: "tableau Kanban en glisser-déposer avec trois colonnes"

1234 }

1168 },1235 },

1169 "work-an-issue-end": {1236 "work-an-issue-end": {

1170 title: "Traiter un problème de bout en bout",1237 title: "Traiter un problème de bout en bout",

1171 teaches: "Donnez le numéro du problème, pas un résumé. Claude lit le ticket complet lui-même, afin que les exigences que vous oublieriez de mentionner passent, et il valide la modification avant de signaler."1238 teaches: "Donnez le numéro du problème, pas un résumé. Claude lit le ticket complet lui-même, afin que les exigences que vous oublieriez de mentionner passent, et il valide la modification avant de signaler.",

1239 prompt: "lisez l'issue #{issue}, implémentez le correctif et lancez les tests",

1240 slots: {

1241 issue: "312"

1242 }

1172 },1243 },

1173 "find-and-update-copy": {1244 "find-and-update-copy": {

1174 title: "Trouver et mettre à jour le texte dans la base de code",1245 title: "Trouver et mettre à jour le texte dans la base de code",

1175 teaches: "Demandez des variantes et dites ce qu'il faut ignorer. Claude trouve des formulations qu'une recherche littérale manquerait et laisse les fixtures de test et l'historique intacts, afin que vous examiniez uniquement le texte que les utilisateurs voient réellement."1246 teaches: "Demandez des variantes et dites ce qu'il faut ignorer. Claude trouve des formulations qu'une recherche littérale manquerait et laisse les fixtures de test et l'historique intacts, afin que vous examiniez uniquement le texte que les utilisateurs voient réellement.",

1247 prompt: "trouvez chaque endroit où nous disons « {copy} » ou une variante proche, montrez-moi chacun dans son contexte, puis remplacez-les tous par « {new} ». ne touchez pas aux tests ni au changelog",

1248 slots: {

1249 copy: "Inscription gratuite",

1250 new: "Démarrer l'essai gratuit"

1251 }

1176 },1252 },

1177 "draft-from-past-examples": {1253 "draft-from-past-examples": {

1178 title: "Rédiger un document à partir d'exemples passés",1254 title: "Rédiger un document à partir d'exemples passés",

1179 teaches: "Pointez un dossier de travail terminé au lieu de décrire votre style. Claude apprend la structure et la voix de ce que vous avez déjà livré, afin que le premier brouillon se lise comme l'un des vôtres.",1255 teaches: "Pointez un dossier de travail terminé au lieu de décrire votre style. Claude apprend la structure et la voix de ce que vous avez déjà livré, afin que le premier brouillon se lise comme l'un des vôtres.",

1180 next: "Enregistrez la voix en tant que compétence afin que chaque brouillon commence là"1256 next: "Enregistrez la voix en tant que skill afin que chaque brouillon commence là",

1257 prompt: "lisez les {examples} dans {folder} pour apprendre la structure et le ton, puis rédigez un nouveau document pour {topic}",

1258 slots: {

1259 examples: "analyses d'impact sur la vie privée",

1260 folder: "legal/pia/",

1261 topic: "la nouvelle intégration analytics"

1262 }

1181 },1263 },

1182 "write-tests-run-them": {1264 "write-tests-run-them": {

1183 title: "Écrire des tests, les exécuter, corriger les défaillances",1265 title: "Écrire des tests, les exécuter, corriger les défaillances",

1184 teaches: "Demandez d'écrire, d'exécuter et de corriger ensemble afin que Claude itère sans s'arrêter pour les instructions.",1266 teaches: "Demandez d'écrire, d'exécuter et de corriger ensemble afin que Claude itère sans s'arrêter pour les instructions.",

1185 next: "Exécutez `/init` afin que Claude apprenne automatiquement votre commande de test"1267 next: "Exécutez `/init` afin que Claude apprenne automatiquement votre commande de test",

1268 prompt: "écrivez des tests pour {path}, exécutez-les et corrigez les échecs",

1269 slots: {

1270 path: "app/parsers/feed.py"

1271 }

1186 },1272 },

1187 "drive-implementation-from-tests": {1273 "drive-implementation-from-tests": {

1188 title: "Piloter l'implémentation à partir des tests",1274 title: "Piloter l'implémentation à partir des tests",

1189 teaches: "Développement piloté par les tests : les tests définissent quand le travail est terminé, et Claude itère sur l'implémentation jusqu'à ce qu'ils passent."1275 teaches: "Développement piloté par les tests : les tests définissent quand le travail est terminé, et Claude itère sur l'implémentation jusqu'à ce qu'ils passent.",

1276 prompt: "écrivez d'abord des tests pour {feature}, puis implémentez-le jusqu'à ce qu'ils passent",

1277 slots: {

1278 feature: "le flux de réinitialisation du mot de passe"

1279 }

1190 },1280 },

1191 "fill-gaps-from-a": {1281 "fill-gaps-from-a": {

1192 title: "Combler les lacunes à partir d'un rapport de couverture",1282 title: "Combler les lacunes à partir d'un rapport de couverture",

1193 teaches: "Pointez le rapport de couverture au lieu de deviner ce qui n'est pas testé. Claude lit les chiffres réels et écrit des tests pour les fichiers qui en ont le plus besoin.",1283 teaches: "Pointez le rapport de couverture au lieu de deviner ce qui n'est pas testé. Claude lit les chiffres réels et écrit des tests pour les fichiers qui en ont le plus besoin.",

1194 next: "Définissez ceci en tant que `/goal` afin que Claude continue à écrire des tests jusqu'à ce que la couverture atteigne la cible"1284 next: "Définissez ceci en tant que `/goal` afin que Claude continue à écrire des tests jusqu'à ce que la couverture atteigne la cible",

1285 prompt: "lisez {report} et ajoutez des tests pour les fichiers les moins couverts jusqu'à ce que chacun dépasse {target} %",

1286 slots: {

1287 report: "coverage/coverage-summary.json",

1288 target: "80"

1289 }

1195 },1290 },

1196 "port-code-between-languages": {1291 "port-code-between-languages": {

1197 title: "Porter le code vers un autre langage",1292 title: "Porter le code vers un autre langage",

1198 teaches: "Dites ce qu'il faut préserver, pas seulement le langage cible. Nommer l'API ou le comportement qui doit rester le même donne à Claude un contrat pour vérifier le port."1293 teaches: "Dites ce qu'il faut préserver, pas seulement le langage cible. Nommer l'API ou le comportement qui doit rester le même donne à Claude un contrat pour vérifier le port.",

1294 prompt: "portez {source} en {target}, en conservant à l'identique {keep}",

1295 slots: {

1296 source: "ce module Python",

1297 target: "Rust",

1298 keep: "l'API publique et le comportement des tests"

1299 }

1199 },1300 },

1200 "generate-docs-for-code": {1301 "generate-docs-for-code": {

1201 title: "Générer de la documentation pour du code non documenté",1302 title: "Générer de la documentation pour du code non documenté",

1202 teaches: "Nommez la portée et le format. Claude trouve ce qui manque et correspond au style de commentaire déjà dans le fichier, afin que la nouvelle documentation se lise comme le reste."1303 teaches: "Nommez la portée et le format. Claude trouve ce qui manque et correspond au style de commentaire déjà dans le fichier, afin que la nouvelle documentation se lise comme le reste.",

1304 prompt: "trouvez {scope} sans commentaires {format} et ajoutez-en, en respectant le style déjà utilisé dans le fichier",

1305 slots: {

1306 scope: "les fonctions publiques de src/auth/",

1307 format: "JSDoc"

1308 }

1203 },1309 },

1204 "migrate-a-pattern-across": {1310 "migrate-a-pattern-across": {

1205 title: "Migrer un modèle dans la base de code",1311 title: "Migrer un modèle dans la base de code",

1206 teaches: "Décrivez l'ancien modèle et le nouveau. Demander à Claude d'identifier d'abord chaque endroit signifie que les sites d'appel sont énumérés dans la réponse, afin que vous puissiez vérifier qu'aucun n'a été manqué. Pour une migration sur plusieurs fichiers, exécutez [/batch](/docs/fr/commands). Claude divise le travail en unités pour que vous approuviez, puis les sous-agents d'arrière-plan effectuent les modifications."1312 teaches: "Décrivez l'ancien modèle et le nouveau. Demander à Claude d'identifier d'abord chaque endroit signifie que les sites d'appel sont énumérés dans la réponse, afin que vous puissiez vérifier qu'aucun n'a été manqué. Pour une migration sur plusieurs fichiers, exécutez [/batch](/docs/fr/commands). Claude divise le travail en unités pour que vous approuviez, puis les sous-agents d'arrière-plan effectuent les modifications.",

1313 prompt: "migrez tout de {from} vers {to} : identifiez chaque endroit à modifier, puis effectuez les modifications",

1314 slots: {

1315 from: "l'ancienne API de logging",

1316 to: "le logger structuré"

1317 }

1207 },1318 },

1208 "optimize-against-a-measurable": {1319 "optimize-against-a-measurable": {

1209 title: "Optimiser par rapport à une cible mesurable",1320 title: "Optimiser par rapport à une cible mesurable",

1210 teaches: "Énoncer la métrique et la cible donne à Claude une définition claire de la fin.",1321 teaches: "Énoncer la métrique et la cible donne à Claude une définition claire de la fin.",

1211 next: "Définissez ceci en tant que `/goal` afin que Claude continue à mesurer et itérer jusqu'à ce qu'il atteigne le nombre"1322 next: "Définissez ceci en tant que `/goal` afin que Claude continue à mesurer et itérer jusqu'à ce qu'il atteigne le nombre",

1323 prompt: "optimisez {target} pour faire passer {metric} de {current} à moins de {goal}",

1324 slots: {

1325 target: "la requête de recherche",

1326 metric: "la latence p95",

1327 current: "2s",

1328 goal: "500ms"

1329 }

1212 },1330 },

1213 "fix-a-precise-visual": {1331 "fix-a-precise-visual": {

1214 title: "Corriger un bug visuel précis",1332 title: "Corriger un bug visuel précis",

1215 teaches: "Un retour visuel précis obtient une correction précise. Énoncez l'élément exact, la mesure et la fenêtre d'affichage.",1333 teaches: "Un retour visuel précis obtient une correction précise. Énoncez l'élément exact, la mesure et la fenêtre d'affichage.",

1216 next: "Ajoutez un outil d'aperçu afin que Claude capture une capture d'écran et vérifie la correction lui-même"1334 next: "Ajoutez un outil d'aperçu afin que Claude capture une capture d'écran et vérifie la correction lui-même",

1335 prompt: "le {element} dépasse de {amount} du {container} sur {viewport}. corrigez-le.",

1336 slots: {

1337 element: "bouton de connexion",

1338 amount: "20px",

1339 container: "bord de la carte",

1340 viewport: "mobile"

1341 }

1217 },1342 },

1218 "review-your-changes-before": {1343 "review-your-changes-before": {

1219 title: "Examiner vos modifications avant de valider",1344 title: "Examiner vos modifications avant de faire un commit",

1220 teaches: "Attrapez les problèmes tant qu'ils sont encore bon marché à corriger. Claude lit les fichiers modifiés en entier, pas seulement les lignes de diff, afin qu'il repère les problèmes qu'un auto-examen rapide manquerait.",1345 teaches: "Attrapez les problèmes tant qu'ils sont encore bon marché à corriger. Claude lit les fichiers modifiés en entier, pas seulement les lignes de diff, afin qu'il repère les problèmes qu'un auto-examen rapide manquerait.",

1221 next: "Exécutez `/code-review` pour la même vérification en une commande"1346 next: "Exécutez `/code-review` pour la même vérification en une commande",

1347 prompt: "examinez mes modifications non commitées et signalez tout ce qui semble risqué avant que je fasse un commit"

1222 },1348 },

1223 "review-a-pull-request": {1349 "review-a-pull-request": {

1224 title: "Examiner une demande de tirage",1350 title: "Examiner une pull request",

1225 teaches: "Claude examine avec la base de code entière en contexte, pas seulement le diff. Il lit le code modifié et ce qu'il appelle, afin qu'il repère les problèmes qu'un examen diff-only manquerait.",1351 teaches: "Claude examine avec la base de code entière en contexte, pas seulement le diff. Il lit le code modifié et ce qu'il appelle, afin qu'il repère les problèmes qu'une revue limitée au diff manquerait.",

1226 next: "Exécutez `/code-review <pr#>` en une commande, ou activez Code Review pour chaque PR"1352 next: "Exécutez `/code-review <pr#>` en une commande, ou activez Code Review pour chaque PR",

1353 prompt: "examinez la PR #{pr}, résumez ce qui a changé, puis listez vos réserves",

1354 slots: {

1355 pr: "247"

1356 }

1227 },1357 },

1228 "review-infrastructure-changes-before": {1358 "review-infrastructure-changes-before": {

1229 title: "Examiner les modifications d'infrastructure avant d'appliquer",1359 title: "Examiner les modifications d'infrastructure avant d'appliquer",

1230 teaches: "La sortie du plan est dense et difficile à analyser. La coller vous donne un résumé en langage clair de ce qui va réellement changer avant que vous l'appliquiez."1360 teaches: "La sortie du plan est dense et difficile à analyser. La coller vous donne un résumé en langage clair de ce qui va réellement changer avant que vous l'appliquiez.",

1361 prompt: "voici la sortie de mon plan Terraform. que va-t-il faire, et y a-t-il quelque chose ici qui va poser problème ?"

1231 },1362 },

1232 "run-a-security-review": {1363 "run-a-security-review": {

1233 title: "Exécuter un examen de sécurité avec un sous-agent",1364 title: "Exécuter un examen de sécurité avec un sous-agent",

1234 teaches: "Un [sous-agent](/docs/fr/sub-agents) exécute l'audit dans sa propre fenêtre de contexte et signale un résumé, afin qu'un long examen de sécurité ne remplisse pas votre session principale. Le sous-agent polyvalent intégré gère ceci sans configuration supplémentaire.",1365 teaches: "Un [sous-agent](/docs/fr/sub-agents) exécute l'audit dans sa propre fenêtre de contexte et signale un résumé, afin qu'un long examen de sécurité ne remplisse pas votre session principale. Le sous-agent polyvalent intégré gère ceci sans configuration supplémentaire.",

1235 next: "Configurez un sous-agent security-review dédié que toute votre équipe peut utiliser"1366 next: "Configurez un sous-agent security-review dédié que toute votre équipe peut utiliser",

1367 prompt: "utilisez un sous-agent pour examiner {path} à la recherche de problèmes de sécurité et rapportez ce qu'il trouve",

1368 slots: {

1369 path: "src/api/"

1370 }

1236 },1371 },

1237 "review-content-before-sending": {1372 "review-content-before-sending": {

1238 title: "Attraper les problèmes avant l'examen formel",1373 title: "Attraper les problèmes avant l'examen formel",

1239 teaches: "Obtenez une première passe avant qu'un humain ne passe du temps dessus. Nommez les préoccupations que vous voulez vérifier afin que l'examen soit ciblé, puis corrigez ce qu'il trouve et envoyez un brouillon plus propre.",1374 teaches: "Obtenez une première passe avant qu'un humain ne passe du temps dessus. Nommez les préoccupations que vous voulez vérifier afin que l'examen soit ciblé, puis corrigez ce qu'il trouve et envoyez un brouillon plus propre.",

1240 next: "Capturez votre liste de contrôle d'examen en tant que compétence que toute votre équipe peut exécuter"1375 next: "Capturez votre liste de contrôle d'examen en tant que skill que toute votre équipe peut exécuter",

1376 prompt: "examinez {file} pour détecter {concerns} et listez tout ce que je devrais corriger avant de l'envoyer à {reviewer}",

1377 slots: {

1378 file: "launch-post.md",

1379 concerns: "les affirmations non étayées, les attributions manquantes et les écarts par rapport à la charte de marque",

1380 reviewer: "l'équipe juridique"

1381 }

1241 },1382 },

1242 "course-correct-a-wrong": {1383 "course-correct-a-wrong": {

1243 title: "Corriger une mauvaise approche",1384 title: "Corriger une mauvaise approche",

1244 teaches: "Nommez la contrainte que Claude a manquée, pas seulement que c'est mal. Une raison spécifique donne à Claude une contrainte concrète à satisfaire à la nouvelle tentative, au lieu de deviner à nouveau.",1385 teaches: "Nommez la contrainte que Claude a manquée, pas seulement que c'est mal. Une raison spécifique donne à Claude une contrainte concrète à satisfaire à la nouvelle tentative, au lieu de deviner à nouveau.",

1245 next: "Appuyez sur `Esc` deux fois pour ouvrir le menu de rembobinage et restaurer le code et la conversation afin que la nouvelle tentative commence propre"1386 next: "Appuyez sur `Esc` deux fois pour ouvrir le menu de rembobinage et restaurer le code et la conversation afin que la nouvelle tentative commence propre",

1387 prompt: "ce n'est pas correct : {feedback}. essayez une approche différente",

1388 slots: {

1389 feedback: "la signature de la fonction doit rester rétrocompatible"

1390 }

1246 },1391 },

1247 "narrow-the-scope-of": {1392 "narrow-the-scope-of": {

1248 title: "Réduire la portée d'une modification",1393 title: "Réduire la portée d'une modification",

1249 teaches: "Quand la direction est bonne mais la modification est devenue trop large, demandez à Claude de garder une partie plutôt que de rembobiner tout. Une limite énoncée empêche une petite correction de devenir une refactorisation."1394 teaches: "Quand la direction est bonne mais la modification est devenue trop large, demandez à Claude de garder une partie plutôt que de rembobiner tout. Une limite énoncée empêche une petite correction de devenir une refactorisation.",

1395 prompt: "c'est trop. conservez uniquement les modifications apportées à {scope} et annulez vos autres changements",

1396 slots: {

1397 scope: "la logique de validation dans src/forms/"

1398 }

1250 },1399 },

1251 "turn-a-correction-into": {1400 "turn-a-correction-into": {

1252 title: "Transformer une correction en règle",1401 title: "Transformer une correction en règle",

1253 teaches: "Une correction en chat n'est pas partagée avec votre équipe. Une règle dans le [CLAUDE.md](/docs/fr/memory) du projet est partagée une fois que vous la validez, et Claude la lit au début de chaque session.",1402 teaches: "Une correction en chat n'est pas partagée avec votre équipe. Une règle dans le [CLAUDE.md](/docs/fr/memory) du projet est partagée une fois que vous en avez fait un commit, et Claude la lit au début de chaque session.",

1254 next: "Ouvrez `/memory` pour examiner ce que Claude a écrit"1403 next: "Ouvrez `/memory` pour examiner ce que Claude a écrit",

1404 prompt: "vous continuez à {mistake}. ajoutez une règle dans CLAUDE.md pour que cela cesse",

1405 slots: {

1406 mistake: "utiliser des exports par défaut alors que ce projet utilise des exports nommés"

1407 }

1255 },1408 },

1256 "resolve-merge-conflicts": {1409 "resolve-merge-conflicts": {

1257 title: "Résoudre les conflits de fusion",1410 title: "Résoudre les conflits de fusion",

1258 teaches: "Dites quel état vous voulez, pas quels marqueurs garder. Demander le raisonnement rend la fusion examinable au lieu d'une boîte noire."1411 teaches: "Dites quel état vous voulez, pas quels marqueurs garder. Demander le raisonnement rend la fusion examinable au lieu d'une boîte noire.",

1412 prompt: "résolvez les conflits de fusion de cette branche et expliquez ce que vous avez conservé de chaque côté"

1259 },1413 },

1260 "commit-with-a-generated": {1414 "commit-with-a-generated": {

1261 title: "Valider avec un message généré",1415 title: "Faire un commit avec un message généré",

1262 teaches: "Laissez Claude dériver le message du diff. Il correspond au style de commit existant de votre référentiel."1416 teaches: "Laissez Claude dériver le message du diff. Il correspond au style de commit existant de votre dépôt.",

1417 prompt: "faites un commit de ces modifications avec un message qui résume ce que j'ai fait"

1263 },1418 },

1264 "open-a-pull-request": {1419 "open-a-pull-request": {

1265 title: "Ouvrir une demande de tirage à partir d'un ticket",1420 title: "Ouvrir une pull request à partir d'un ticket",

1266 teaches: "Ignorez le changement de contexte entre le suivi, l'éditeur et GitHub. Un prompt lit la spécification, effectue la modification et ouvre la PR."1421 teaches: "Ignorez le changement de contexte entre le suivi, l'éditeur et GitHub. Un prompt lit la spécification, effectue la modification et ouvre la PR.",

1422 prompt: "trouvez le ticket {tracker} concernant {topic} et ouvrez une PR qui l'implémente",

1423 slots: {

1424 tracker: "Linear",

1425 topic: "le délai d'expiration de connexion"

1426 }

1267 },1427 },

1268 "draft-release-notes-from": {1428 "draft-release-notes-from": {

1269 title: "Rédiger les notes de sortie à partir de l'historique git",1429 title: "Rédiger les notes de sortie à partir de l'historique git",

1270 teaches: "Donnez deux points de référence et la structure que vous voulez. Claude lit le journal des commits entre eux et rédige un changelog que vous pouvez modifier.",1430 teaches: "Donnez deux points de référence et la structure que vous voulez. Claude lit le log des commits entre eux et rédige un changelog que vous pouvez modifier.",

1271 next: "Enregistrez ceci en tant que compétence `/changelog`"1431 next: "Enregistrez ceci en tant que skill `/changelog`",

1432 prompt: "comparez {from} à {to} et rédigez des notes de sortie regroupées par fonctionnalité, correctif et changement non rétrocompatible",

1433 slots: {

1434 from: "v2.3.0",

1435 to: "v2.4.0"

1436 }

1272 },1437 },

1273 "write-a-ci-workflow": {1438 "write-a-ci-workflow": {

1274 title: "Écrire un flux de travail CI",1439 title: "Écrire un workflow CI",

1275 teaches: "Décrivez quand il doit s'exécuter et ce qu'il doit faire ; le YAML est généré pour vous, adapté aux commandes de construction et de test de votre projet."1440 teaches: "Décrivez quand il doit s'exécuter et ce qu'il doit faire ; le YAML est généré pour vous, adapté aux commandes de build et de test de votre projet.",

1441 prompt: "écrivez un workflow GitHub Actions qui {steps} à chaque push sur {branch}",

1442 slots: {

1443 steps: "exécute les tests et déploie en staging",

1444 branch: "main"

1445 }

1276 },1446 },

1277 "find-and-fix-a": {1447 "find-and-fix-a": {

1278 title: "Trouver et corriger un test défaillant",1448 title: "Trouver et corriger un test défaillant",

1279 teaches: "Décrivez le symptôme ; vous n'avez pas besoin de savoir quel fichier est cassé. Claude exécute le test pour voir l'échec, le trace dans la source et le corrige."1449 teaches: "Décrivez le symptôme ; vous n'avez pas besoin de savoir quel fichier est cassé. Claude exécute le test pour voir l'échec, le trace dans la source et le corrige.",

1450 prompt: "le test {test} échoue, trouvez pourquoi et corrigez-le",

1451 slots: {

1452 test: "UserAuth"

1453 }

1280 },1454 },

1281 "investigate-a-reported-error": {1455 "investigate-a-reported-error": {

1282 title: "Enquêter sur une erreur signalée",1456 title: "Enquêter sur une erreur signalée",

1283 teaches: "Décrivez le symptôme et l'emplacement ; Claude lit le chemin de code pertinent et trace les causes probables. Collez les traces de pile ou les journaux si vous les avez.",1457 teaches: "Décrivez le symptôme et l'emplacement ; Claude lit le chemin de code pertinent et trace les causes probables. Collez les traces de pile ou les journaux si vous les avez.",

1284 next: "Mettez un lien profond dans votre runbook qui ouvre Claude avec ce prompt pré-rempli"1458 next: "Mettez un lien profond dans votre runbook qui ouvre Claude avec ce prompt pré-rempli",

1459 prompt: "les utilisateurs rencontrent des {symptom} sur {where}. enquêtez et dites-moi ce qui se passe",

1460 slots: {

1461 symptom: "erreurs 500",

1462 where: "/api/settings"

1463 }

1285 },1464 },

1286 "fix-a-build-error": {1465 "fix-a-build-error": {

1287 title: "Corriger une erreur de construction à la racine",1466 title: "Corriger une erreur de build à la racine",

1288 teaches: "Demander la cause racine et la vérification empêche les correctifs de surface qui suppriment l'erreur sans la corriger."1467 teaches: "Demander la cause racine et la vérification empêche les correctifs de surface qui suppriment l'erreur sans la corriger.",

1468 prompt: "voici une erreur de build. corrigez la cause racine et vérifiez que le build réussit"

1289 },1469 },

1290 "investigate-a-production-incident": {1470 "investigate-a-production-incident": {

1291 title: "Enquêter sur un incident de production",1471 title: "Enquêter sur un incident de production",

1292 teaches: "Énumérez les sources de preuves à corréler, pas les étapes à suivre. Claude lit les journaux, l'historique git et la configuration ensemble pour réduire la cause.",1472 teaches: "Énumérez les sources de preuves à corréler, pas les étapes à suivre. Claude lit les journaux, l'historique git et la configuration ensemble pour réduire la cause.",

1293 next: "Connectez Sentry ou votre magasin de journaux via MCP"1473 next: "Connectez Sentry ou votre magasin de journaux via MCP",

1474 prompt: "{symptom}. vérifiez les logs, les déploiements récents et les changements de configuration, puis dites-moi la cause la plus probable",

1475 slots: {

1476 symptom: "l'endpoint de checkout a commencé à renvoyer des erreurs 500 il y a une heure"

1477 }

1294 },1478 },

1295 "query-logs-in-plain": {1479 "query-logs-in-plain": {

1296 title: "Interroger les journaux en anglais simple",1480 title: "Interroger les journaux en langage naturel",

1297 teaches: "Posez la question au lieu d'écrire le SQL. Claude construit la requête, l'exécute contre vos journaux connectés et affiche à la fois la requête et le résultat afin que vous puissiez vérifier ce qui a été exécuté."1481 teaches: "Posez la question au lieu d'écrire le SQL. Claude construit la requête, l'exécute contre vos journaux connectés et affiche à la fois la requête et le résultat afin que vous puissiez vérifier ce qui a été exécuté.",

1482 prompt: "montrez-moi tous les {events} pour {scope} sur {timeframe}. écrivez la requête, exécutez-la et dites-moi ce qui ressort",

1483 slots: {

1484 events: "échecs de connexion",

1485 scope: "le service d'authentification",

1486 timeframe: "les dernières 24 heures"

1487 }

1298 },1488 },

1299 "diagnose-from-a-console": {1489 "diagnose-from-a-console": {

1300 title: "Diagnostiquer à partir d'une capture d'écran de console",1490 title: "Diagnostiquer à partir d'une capture d'écran de console",

1301 teaches: "Les consoles cloud vous montrent le problème mais pas les commandes pour le corriger. Claude lit la capture d'écran et traduit le tableau de bord en commandes kubectl, gcloud ou aws à exécuter."1491 teaches: "Les consoles cloud vous montrent le problème mais pas les commandes pour le corriger. Claude lit la capture d'écran et traduit le tableau de bord en commandes kubectl, gcloud ou aws à exécuter.",

1492 prompt: "voici une capture d'écran de {console}. expliquez-moi pourquoi {resource} échoue et donnez-moi les commandes exactes pour le corriger",

1493 slots: {

1494 console: "le tableau de bord Kubernetes de GCP",

1495 resource: "ce pod"

1496 }

1302 },1497 },

1303 "analyze-a-data-file": {1498 "analyze-a-data-file": {

1304 title: "Analyser un fichier de données",1499 title: "Analyser un fichier de données",

1305 teaches: "Une question ponctuelle n'a pas besoin d'un script ponctuel. Pointez un fichier dans votre dossier de projet et Claude le lit directement, trouve les modèles et écrit la sortie où vous le demandez.",1500 teaches: "Une question ponctuelle n'a pas besoin d'un script ponctuel. Pointez un fichier dans votre dossier de projet et Claude le lit directement, trouve les modèles et écrit la sortie où vous le demandez.",

1306 next: "Connectez la source de données via MCP au lieu d'exporter des fichiers"1501 next: "Connectez la source de données via MCP au lieu d'exporter des fichiers",

1502 prompt: "lisez {file}, résumez les principales tendances et écrivez les résultats dans {output}",

1503 slots: {

1504 file: "@reports/q1-signups.csv",

1505 output: "une page HTML avec des graphiques, puis ouvrez-la dans mon navigateur"

1506 }

1307 },1507 },

1308 "generate-variations-from-performance": {1508 "generate-variations-from-performance": {

1309 title: "Générer des variations à partir de données de performance",1509 title: "Générer des variations à partir de données de performance",

1310 teaches: "Énoncez la contrainte au début afin que la génération reste dans la limite. Claude lit les métriques, choisit ce qu'il faut remplacer et produit des alternatives qui correspondent.",1510 teaches: "Énoncez la contrainte au début afin que la génération reste dans la limite. Claude lit les métriques, choisit ce qu'il faut remplacer et produit des alternatives qui correspondent.",

1311 next: "Connectez la plateforme publicitaire via MCP au lieu d'exporter un fichier"1511 next: "Connectez la plateforme publicitaire via MCP au lieu d'exporter un fichier",

1512 prompt: "lisez {file}, trouvez les {items} les moins performants et générez {n} nouvelles variantes de moins de {limit} caractères",

1513 slots: {

1514 file: "@ads-performance.csv",

1515 items: "titres",

1516 n: "20",

1517 limit: "90"

1518 }

1312 },1519 },

1313 "turn-a-recurring-task": {1520 "turn-a-recurring-task": {

1314 title: "Transformer une tâche récurrente en compétence",1521 title: "Transformer une tâche récurrente en skill",

1315 teaches: "Nommez les étapes une fois ; réutilisez-les en tant que commande. Claude écrit une [compétence](/docs/fr/skills) que n'importe qui dans votre équipe peut exécuter."1522 teaches: "Nommez les étapes une fois ; réutilisez-les en tant que commande. Claude écrit un [skill](/docs/fr/skills) que n'importe qui dans votre équipe peut exécuter.",

1523 prompt: "créez un skill /{name} pour ce projet qui {steps}",

1524 slots: {

1525 name: "ship",

1526 steps: "exécute le linter et les tests, puis rédige un message de commit"

1527 }

1316 },1528 },

1317 "add-a-hook-for": {1529 "add-a-hook-for": {

1318 title: "Ajouter un hook pour un comportement répété",1530 title: "Ajouter un hook pour un comportement répété",

1319 teaches: "Les hooks rendent un comportement automatique au lieu de quelque chose que vous devez vous souvenir de demander. Décrivez le déclencheur et l'action et Claude écrit la configuration du [hook](/docs/fr/hooks)."1531 teaches: "Les hooks rendent un comportement automatique au lieu de quelque chose que vous devez vous souvenir de demander. Décrivez le déclencheur et l'action et Claude écrit la configuration du [hook](/docs/fr/hooks).",

1532 prompt: "écrivez un hook qui {action} après chaque {event}",

1533 slots: {

1534 action: "exécute prettier",

1535 event: "modification d'un fichier .ts ou .tsx"

1536 }

1320 },1537 },

1321 "connect-a-tool-with": {1538 "connect-a-tool-with": {

1322 title: "Connecter un outil avec MCP",1539 title: "Connecter un outil avec MCP",

1323 teaches: "Connectez la source une fois au lieu de coller les données à chaque session. Après la configuration [MCP](/docs/fr/mcp), Claude lit directement à partir de l'outil quand vous lui en parlez."1540 teaches: "Connectez la source une fois au lieu de coller les données à chaque session. Après la configuration [MCP](/docs/fr/mcp), Claude lit directement à partir de l'outil quand vous lui en parlez.",

1541 prompt: "configurez le serveur MCP {server} afin de pouvoir lire directement mes {data}",

1542 slots: {

1543 server: "Sentry",

1544 data: "rapports d'erreurs"

1545 }

1324 },1546 },

1325 "capture-what-to-remember": {1547 "capture-what-to-remember": {

1326 title: "Capturer ce qu'il faut retenir pour la prochaine fois",1548 title: "Capturer ce qu'il faut retenir pour la prochaine fois",

1327 teaches: "Demandez avant d'oublier. Claude sait ce qu'il a dû comprendre cette session et propose des entrées [CLAUDE.md](/docs/fr/memory) afin que la session suivante commence avec ce contexte."1549 teaches: "Demandez avant d'oublier. Claude sait ce qu'il a dû comprendre cette session et propose des entrées [CLAUDE.md](/docs/fr/memory) afin que la session suivante commence avec ce contexte.",

1550 prompt: "résumez ce que nous avons fait pendant cette session et suggérez ce qu'il faut ajouter à CLAUDE.md"

1328 }1551 }

1329};1552};

1330 1553 

remote-control.md +31 −17

Details

220 220 

221Ces commandes fonctionnent pendant environ quatre heures après l'arrêt du serveur. Après cela, exécutez `claude remote-control` pour démarrer une nouvelle session. Si vous avez archivé une session entre-temps, `--continue` et `--session-id` la désarchive sur Claude Code v2.1.228 ou version ultérieure.221Ces commandes fonctionnent pendant environ quatre heures après l'arrêt du serveur. Après cela, exécutez `claude remote-control` pour démarrer une nouvelle session. Si vous avez archivé une session entre-temps, `--continue` et `--session-id` la désarchive sur Claude Code v2.1.228 ou version ultérieure.

222 222 

223Pour ramener une session que vous avez démarrée avec `claude --remote-control` ou `/remote-control`, reprenez la conversation avec `claude --continue` ou `claude --resume`. Si Remote Control ne se reconnecte pas, voir [Couldn't reconnect to your Remote Control session](#couldnt-reconnect-to-your-remote-control-session).223Pour ramener une session que vous avez démarrée avec `claude --remote-control` ou `/remote-control`, reprenez la conversation avec `claude --continue` ou `claude --resume`. Pour le mode de permission dans lequel démarre la conversation reprise, voir [mode de permission lors de la reprise](/docs/fr/sessions#permission-mode-on-resume). Si Remote Control ne se reconnecte pas, voir [Couldn't reconnect to your Remote Control session](#couldnt-reconnect-to-your-remote-control-session).

224 224 

225Si vous reprenez la conversation dans un deuxième terminal tandis que le premier a toujours Remote Control activé, Claude Code affiche un avis `Remote Control not started here` dans le deuxième terminal et laisse Remote Control désactivé à la place de prendre la session au premier. Exécutez `/remote-control` dans le deuxième terminal pour déplacer Remote Control vers celui-ci.225Si vous reprenez la conversation dans un deuxième terminal tandis que le premier a toujours Remote Control activé, Claude Code affiche un avis `Remote Control not started here` dans le deuxième terminal et laisse Remote Control désactivé à la place de prendre la session au premier. Exécutez `/remote-control` dans le deuxième terminal pour déplacer Remote Control vers celui-ci.

226 226 


257 257 

258Les vérifications biométriques s'exécutent sur l'appareil via le système d'exploitation ou le navigateur, le même mécanisme que la connexion par clé d'accès. Anthropic ne reçoit ni ne stocke jamais les empreintes digitales, les données faciales ou toute autre information biométrique. Seule la clé publique de l'appareil et les métadonnées de base telles que le nom d'affichage, la plateforme et l'heure d'inscription sont stockées.258Les vérifications biométriques s'exécutent sur l'appareil via le système d'exploitation ou le navigateur, le même mécanisme que la connexion par clé d'accès. Anthropic ne reçoit ni ne stocke jamais les empreintes digitales, les données faciales ou toute autre information biométrique. Seule la clé publique de l'appareil et les métadonnées de base telles que le nom d'affichage, la plateforme et l'heure d'inscription sont stockées.

259 259 

260Le paramètre s'applique uniquement à Remote Control. Le chat Claude régulier, Claude Code dans le terminal et l'utilisation de l'API ne sont pas affectés.260Le paramètre s'applique à Remote Control dans Claude Code et dans [Cowork](https://claude.com/docs/cowork/overview). Cette page couvre la partie Claude Code. Le chat Claude régulier, Claude Code dans le terminal et l'utilisation de l'API ne sont pas affectés.

261 261 

262<h3 id="enable-trusted-devices-for-your-organization">262<h3 id="enable-trusted-devices-for-your-organization">

263 Activer Trusted Devices pour une organisation Team ou Enterprise263 Activer Trusted Devices pour une organisation Team ou Enterprise


367* **Panne réseau prolongée** : si votre machine est allumée mais ne peut pas accéder au réseau, ce que vous faites ensuite dépend du mode :367* **Panne réseau prolongée** : si votre machine est allumée mais ne peut pas accéder au réseau, ce que vous faites ensuite dépend du mode :

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

369 * **Session interactive** : continuez à travailler localement. Claude Code réessaie aussi longtemps que la panne dure et se reconnecte automatiquement lorsque le réseau revient.369 * **Session interactive** : continuez à travailler localement. Claude Code réessaie aussi longtemps que la panne dure et se reconnecte automatiquement lorsque le réseau revient.

370* **Échec des pulsations de présence** : 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.370* **Pièces jointes non téléchargées** : si un fichier que vous joignez depuis votre téléphone ou votre navigateur ne peut pas être téléchargé sur votre machine, Claude reçoit tout de même votre message et les fichiers qui ont été téléchargés. À la place des fichiers manquants, Claude Code ajoute au message une note telle que `[1 of 3 attachments did not arrive]`.

371* **Échec des pulsations de présence** : 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.

371* **Les dialogues transférés expirent** : Claude Code garde 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 choix 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 version ultérieure.372* **Les dialogues transférés expirent** : Claude Code garde 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 choix 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 version ultérieure.

372* **L'invite de consentement des crédits d'utilisation Fable n'est pas transférée** : Claude Code affiche l'invite de consentement des crédits d'utilisation [Fable](/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 [The prompt to confirm went unanswered](/docs/fr/errors#the-prompt-to-confirm-went-unanswered).373* **L'invite de consentement des crédits d'utilisation Fable n'est pas transférée** : Claude Code affiche l'[invite de consentement des crédits d'utilisation Fable](/docs/fr/model-config#fable-and-usage-credits) en milieu de session uniquement là 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 requête ; voir [The prompt to confirm went unanswered](/docs/fr/errors#the-prompt-to-confirm-went-unanswered).

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 éléments suivants fonctionnent à partir d'appareils mobiles et du web :374* **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. `/claude-api` est également indisponible lorsque vous la saisissez depuis un appareil mobile ou le web. Claude peut tout de même y [charger ce skill de lui-même](/docs/fr/skills#work-on-claude-api-projects). Les éléments suivants fonctionnent à partir d'appareils mobiles et du web :

374 * Commandes de sortie textuelle : `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/usage-credits`, `/recap`, et `/reload-plugins`. `/usage-credits` imprime 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.375 * Commandes de sortie textuelle : `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/usage-credits`, `/recap`, et `/reload-plugins`. `/usage-credits` imprime 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.

375 * `/model`, `/effort`, `/fast`, `/color`, et `/rename` : transmettez la valeur en tant qu'argument, par exemple `/model sonnet` ou `/effort high`. À partir d'appareils mobiles et du web, `/model` et `/effort` prennent l'argument à la place du sélecteur de terminal ou du curseur.376 * `/model`, `/effort`, `/fast`, `/color`, et `/rename` : transmettez la valeur en tant qu'argument, par exemple `/model sonnet` ou `/effort high`. À partir d'appareils mobiles et du web, `/model` et `/effort` prennent l'argument à la place du sélecteur de terminal ou du curseur.

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](/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.377 * `/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. `/mcp reconnect` sans nom de serveur réessaie de connecter tous les serveurs qui ont échoué ou nécessitent une authentification.

377 * `/config` : à 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 plutôt la section Claude Code de vos paramètres et ignore le texte après la commande.378 * `/config` : à 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 plutôt la section Claude Code de vos paramètres et ignore le texte après la commande.

378 * Sur Team et Enterprise, `/usage-credits` à partir d'appareils mobiles ou du web n'envoie pas une [demande de crédits d'utilisation à 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.379 * Sur Team et Enterprise, `/usage-credits` à partir d'appareils mobiles ou du web n'envoie pas une [demande de crédits d'utilisation à 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.

379 * `/autocompact`, à partir de v2.1.221 : transmettez la taille de la fenêtre en tant qu'argument, par exemple `/autocompact 500k`. Sans argument, il imprime la taille actuelle de la fenêtre sous forme de texte au lieu d'ouvrir le dialogue que la commande affiche dans une session de terminal.380 * `/autocompact`, à partir de v2.1.221 : transmettez la taille de la fenêtre en tant qu'argument, par exemple `/autocompact 500k`. Sans argument, il imprime la taille actuelle de la fenêtre sous forme de texte au lieu d'ouvrir le dialogue que la commande affiche dans une session de terminal.


389 « Remote Control requires a claude.ai subscription »390 « Remote Control requires a claude.ai subscription »

390</h3>391</h3>

391 392 

392Vous n'êtes pas connecté avec un compte claude.ai, ou une autre credential prend la priorité sur votre connexion. Le message prend l'une de ces formes :393Vous n'êtes pas connecté avec un compte claude.ai, ou d'autres identifiants ont priorité sur votre connexion. Le message prend l'une de ces formes :

393 394 

394* Déconnecté, depuis `/remote-control` ou `--remote-control` : « Remote Control requires a claude.ai subscription. » ou « /remote-control requires a claude.ai subscription. »395* Déconnecté, depuis `/remote-control` ou `--remote-control` : « Remote Control requires a claude.ai subscription. » ou « /remote-control requires a claude.ai subscription. »

395* Déconnecté, depuis `claude remote-control` : « You must be logged in to use Remote Control. Remote Control is only available with claude.ai subscriptions. »396* Déconnecté, depuis `claude remote-control` : « You must be logged in to use Remote Control. Remote Control is only available with claude.ai subscriptions. »

396* Connecté, mais une clé API ou un token est en cours d'utilisation : « Remote Control requires claude.ai subscription auth. » suivi de la credential 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.397* Connecté, mais une clé API ou un jeton est en cours d'utilisation : « Remote Control requires claude.ai subscription auth. » suivi des identifiants 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.

397 398 

398Exé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.399Exé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.

399 400 


401 « Remote Control requires a full-scope login token »402 « Remote Control requires a full-scope login token »

402</h3>403</h3>

403 404 

404Vous êtes authentifié avec un token de longue durée depuis `claude setup-token` ou la variable d'environnement `CLAUDE_CODE_OAUTH_TOKEN`. Ces tokens ne peuvent faire que des demandes de modèle, ils ne peuvent donc pas établir de sessions Remote Control. Exécutez `claude auth login` pour vous authentifier avec un token de session à portée complète à la place.405Vous êtes authentifié avec un jeton de longue durée depuis `claude setup-token` ou la variable d'environnement `CLAUDE_CODE_OAUTH_TOKEN`. Ces jetons ne peuvent faire que des requêtes de modèle, ils ne peuvent donc pas établir de sessions Remote Control. Exécutez `claude auth login` pour vous authentifier avec un jeton de session à portée complète à la place.

405 406 

406<h3 id="unable-to-determine-your-organization-for-remote-control-eligibility">407<h3 id="unable-to-determine-your-organization-for-remote-control-eligibility">

407 « Unable to determine your organization for Remote Control eligibility »408 « Unable to determine your organization for Remote Control eligibility »


415 416 

416Claude Code a vérifié la disponibilité de Remote Control pour le compte auquel vous êtes connecté et la vérification a indiqué que c'était désactivé. La cause habituelle est des droits en cache qui sont obsolètes après un changement de plan. Exécutez `claude auth logout` puis `claude auth login` pour les actualiser, et mettez à jour Claude Code si vous utilisez une ancienne version.417Claude Code a vérifié la disponibilité de Remote Control pour le compte auquel vous êtes connecté et la vérification a indiqué que c'était désactivé. La cause habituelle est des droits en cache qui sont obsolètes après un changement de plan. Exécutez `claude auth logout` puis `claude auth login` pour les actualiser, et mettez à jour Claude Code si vous utilisez une ancienne version.

417 418 

418Exécutez `claude doctor` pour voir quelle vérification d'éligibilité individuelle a échoué. Les conflits de variables d'environnement, les vérifications inaccessibles et le paramètre Remote Control de votre organisation produisent chacun leur propre message, donc cette erreur signifie que la vérification au niveau du compte elle-même.419Exécutez `claude doctor` pour voir quelle vérification d'éligibilité individuelle a échoué. Les conflits de variables d'environnement, les vérifications inaccessibles et le paramètre Remote Control de votre organisation produisent chacun leur propre message, donc cette erreur désigne la vérification au niveau du compte elle-même.

419 420 

420Avant la v2.1.239, ce message disait « Remote Control is not yet enabled for your account ».421Avant la v2.1.239, ce message disait « Remote Control is not yet enabled for your account ».

421 422 


423 « Couldn't verify Remote Control eligibility »424 « Couldn't verify Remote Control eligibility »

424</h3>425</h3>

425 426 

426Claude Code n'a pas pu atteindre le service de feature-flag pour vérifier si Remote Control est activé pour votre compte, généralement parce que vous êtes hors ligne ou qu'un proxy bloque la demande. Réessayez une fois que vous avez accès au réseau, ou exécutez `claude doctor` pour plus de détails. Le message associé « Couldn't verify your organization's Remote Control policy » signifie que Claude Code a rencontré une erreur lors de la lecture de cette politique, et a le même correctif.427Claude Code n'a pas pu atteindre le service de feature-flag pour vérifier si Remote Control est activé pour votre compte, généralement parce que vous êtes hors ligne ou qu'un proxy bloque la requête. Réessayez une fois que vous avez accès au réseau, ou exécutez `claude doctor` pour plus de détails. Le message associé « Couldn't verify your organization's Remote Control policy » signifie que Claude Code a rencontré une erreur lors de la lecture de cette politique, et a le même correctif.

427 428 

428<h3 id="remote-control-requires-feature-flag-evaluation">429<h3 id="remote-control-requires-feature-flag-evaluation">

429 « Remote Control requires feature-flag evaluation »430 « Remote Control requires feature-flag evaluation »


442 443 

443Le message nomme ce qui a acheminé la session loin de l'API Anthropic, comme `CLAUDE_CODE_USE_BEDROCK` ou un `ANTHROPIC_BASE_URL` personnalisé. Si vous avez une connexion claude.ai éligible, désactivez la variable nommée, supprimez-la de la clé `env` dans [paramètres](/docs/fr/settings) si vous l'avez définie là, et redémarrez la session.444Le message nomme ce qui a acheminé la session loin de l'API Anthropic, comme `CLAUDE_CODE_USE_BEDROCK` ou un `ANTHROPIC_BASE_URL` personnalisé. Si vous avez une connexion claude.ai éligible, désactivez la variable nommée, supprimez-la de la clé `env` dans [paramètres](/docs/fr/settings) si vous l'avez définie là, et redémarrez la session.

444 445 

445<h3 id="remote-control-is-disabled-by-your-organization’s-policy">446<h3 id="remote-control-is-disabled-by-your-organizations-policy">

446 « Remote Control is disabled by your organization's policy »447 « Remote Control is disabled by your organization's policy »

447</h3>448</h3>

448 449 


455 456 

456Avant la v2.1.281, ce message apparaissait également lorsque Claude Code n'avait pas chargé la politique de votre organisation sur cette machine, par exemple après un démarrage hors ligne. Les versions ultérieures signalent cet état comme [`Couldn't verify your organization's policy for remote control`](#couldnt-verify-your-organizations-policy-for-remote-control) à la place.457Avant la v2.1.281, ce message apparaissait également lorsque Claude Code n'avait pas chargé la politique de votre organisation sur cette machine, par exemple après un démarrage hors ligne. Les versions ultérieures signalent cet état comme [`Couldn't verify your organization's policy for remote control`](#couldnt-verify-your-organizations-policy-for-remote-control) à la place.

457 458 

459<h3 id="remote-control-was-turned-off-by-your-organizations-policy">

460 « Remote Control was turned off by your organization's policy »

461</h3>

462 

463La politique de votre organisation a cessé d'autoriser Remote Control alors qu'une session était connectée, Claude Code l'a donc déconnectée. Ce qui arrive à la session dépend de la façon dont vous avez démarré Remote Control :

464 

465* **Avec `/remote-control`, `claude --remote-control` ou [auto-connect](#enable-remote-control-for-all-sessions)** : la session continue de s'exécuter sans Remote Control, et Claude Code l'archive sur claude.ai

466* **Avec `claude remote-control`** : le serveur s'arrête et archive les sessions qu'il servait, puis se ferme

467 

468Vous pouvez toujours retrouver une session archivée en [filtrant les sessions archivées](/docs/fr/claude-code-on-the-web#archive-sessions).

469 

470Remote Control ne se reconnecte pas de lui-même. Pour le réactiver une fois que votre organisation l'autorise à nouveau, exécutez `/remote-control` dans la session ou `claude remote-control` dans votre shell. L'une ou l'autre commande échoue avec [`Remote Control is disabled by your organization's policy`](#remote-control-is-disabled-by-your-organizations-policy) jusqu'à ce que Claude Code sur cette machine ait récupéré la politique modifiée. Une session ouverte la récupère environ une fois par heure. Pour savoir ce qui bloque Remote Control, comparez le texte complet affiché par la commande avec cette entrée.

471 

458<h3 id="couldnt-verify-your-organizations-policy-for-remote-control">472<h3 id="couldnt-verify-your-organizations-policy-for-remote-control">

459 « Couldn't verify your organization's policy for remote control »473 « Couldn't verify your organization's policy for remote control »

460</h3>474</h3>

461 475 

462Claude Code n'a pas pu récupérer la politique de votre organisation et n'a pas de copie enregistrée sur cette machine à utiliser à la place, il garde donc Remote Control désactivé jusqu'à ce qu'il puisse confirmer que votre organisation l'autorise. Cela se produit généralement lorsque vous démarrez Claude Code hors ligne ou avant qu'un VPN se connecte, ou lorsqu'un proxy interfère avec la demande. Sur une connexion lente, cela peut également apparaître pendant que la première demande est encore en cours.476Claude Code n'a pas pu récupérer la politique de votre organisation et n'a pas de copie enregistrée sur cette machine à utiliser à la place, il garde donc Remote Control désactivé jusqu'à ce qu'il puisse confirmer que votre organisation l'autorise. Cela se produit généralement lorsque vous démarrez Claude Code hors ligne ou avant qu'un VPN se connecte, ou lorsqu'un proxy interfère avec la requête. Sur une connexion lente, cela peut également apparaître pendant que la première requête est encore en cours.

463 477 

464Le message prend l'une de ces formes :478Le message prend l'une de ces formes :

465 479 


474 « Remote credentials fetch failed »488 « Remote credentials fetch failed »

475</h3>489</h3>

476 490 

477Claude Code n'a pas pu obtenir une credential de courte durée de l'API Anthropic pour établir la connexion. Réexécutez avec `--verbose` pour voir l'erreur complète :491Claude Code n'a pas pu obtenir des identifiants de courte durée de l'API Anthropic pour établir la connexion. Réexécutez avec `--verbose` pour voir l'erreur complète :

478 492 

479```bash theme={null}493```bash theme={null}

480claude remote-control --verbose494claude remote-control --verbose


483Causes courantes :497Causes courantes :

484 498 

485* Non connecté : exécutez `claude` et utilisez `/login` pour vous authentifier avec votre compte claude.ai. L'authentification par clé API n'est pas prise en charge pour Remote Control.499* Non connecté : exécutez `claude` et utilisez `/login` pour vous authentifier avec votre compte claude.ai. L'authentification par clé API n'est pas prise en charge pour Remote Control.

486* Problème de réseau ou de proxy : un pare-feu ou un proxy peut bloquer la demande HTTPS sortante. Remote Control nécessite l'accès à l'API Anthropic sur le port 443.500* Problème de réseau ou de proxy : un pare-feu ou un proxy peut bloquer la requête HTTPS sortante. Remote Control nécessite l'accès à l'API Anthropic sur le port 443.

487* Échec de la création de session : si vous voyez également « Session creation failed — see debug log », l'échec s'est produit plus tôt dans la configuration. Vérifiez que votre abonnement est actif.501* Échec de la création de session : si vous voyez également « Session creation failed — see debug log », l'échec s'est produit plus tôt dans la configuration. Vérifiez que votre abonnement est actif.

488 502 

489<h3 id="couldnt-reconnect-to-your-remote-control-session">503<h3 id="couldnt-reconnect-to-your-remote-control-session">


498 « Previous session is unavailable — run /remote-control to start a new one »512 « Previous session is unavailable — run /remote-control to start a new one »

499</h3>513</h3>

500 514 

501Claude Code n'a pas pu restaurer la session Remote Control précédente et s'est arrêté au lieu de démarrer une nouvelle de lui-même. Vous pouvez voir ce message après avoir repris une conversation avec `claude --resume` ou `claude --continue`, ou après que Claude Code [se reconnecte de lui-même suite à une déconnexion](/docs/fr/errors#remote-control-couldnt-refresh-your-login).515Claude Code n'a pas pu restaurer la session Remote Control précédente et s'est arrêté au lieu d'en démarrer une nouvelle de lui-même. Vous pouvez voir ce message après avoir repris une conversation avec `claude --resume` ou `claude --continue`, ou après que Claude Code [se reconnecte de lui-même suite à une déconnexion](/docs/fr/errors#remote-control-couldnt-refresh-your-login).

502 516 

503Exécutez `/remote-control` pour démarrer une nouvelle session Remote Control sous la connexion actuelle ; votre session locale continue de s'exécuter sans Remote Control en attendant. Le message associé « Remote Control could not verify the signed-in account — run /remote-control to reconnect » a le même correctif. Si vous exécutez `/remote-control` après « Previous session is unavailable » sans redémarrer Claude Code d'abord, Claude Code laisse les messages antérieurs de la conversation en dehors de la nouvelle session.517Exécutez `/remote-control` pour démarrer une nouvelle session Remote Control sous la connexion actuelle ; votre session locale continue de s'exécuter sans Remote Control en attendant. Le message associé « Remote Control could not verify the signed-in account — run /remote-control to reconnect » a le même correctif. Si vous exécutez `/remote-control` après « Previous session is unavailable » sans redémarrer Claude Code d'abord, Claude Code laisse les messages antérieurs de la conversation en dehors de la nouvelle session.

504 518 


506 « Remote Control got an unexpected server response »520 « Remote Control got an unexpected server response »

507</h3>521</h3>

508 522 

509Le serveur Remote Control a accepté une demande mais a répondu d'une manière que cette version de Claude Code ne pouvait pas lire, lors de la création de la session distante ou de la récupération de ses credentials. Réessayer sur la même version échoue de la même manière. Exécutez `claude update`, puis exécutez `/remote-control` pour vous reconnecter.523Le serveur Remote Control a accepté une requête mais a répondu d'une manière que cette version de Claude Code ne pouvait pas lire, lors de la création de la session distante ou de la récupération de ses identifiants. Réessayer sur la même version échoue de la même manière. Exécutez `claude update`, puis exécutez `/remote-control` pour vous reconnecter.

510 524 

511<h3 id="your-organization-requires-trusted-devices-for-remote-control-but-this-device-is-not-enrolled">525<h3 id="your-organization-requires-trusted-devices-for-remote-control-but-this-device-is-not-enrolled">

512 « Your organization requires Trusted Devices for Remote Control, but this device is not enrolled »526 « Your organization requires Trusted Devices for Remote Control, but this device is not enrolled »

routines.md +1 −5

Details

365 365 

366Chaque référentiel que vous ajoutez est cloné à chaque exécution. Claude commence à partir de la branche par défaut du référentiel sauf si votre invite spécifie le contraire.366Chaque référentiel que vous ajoutez est cloné à chaque exécution. Claude commence à partir de la branche par défaut du référentiel sauf si votre invite spécifie le contraire.

367 367 

368Claude pousse son travail vers des branches préfixées par `claude/`, qui sont toujours acceptées. Lorsque votre invite dirige Claude à pousser vers une autre branche, Claude Code vérifie d'abord la poussée et la rejette si l'une des conditions suivantes est vraie :368Claude pousse son travail vers une branche préfixée par `claude/`, sauf si votre prompt lui demande de pousser vers une autre branche. Pour contrôler les branches vers lesquelles une exécution peut pousser, utilisez des règles de protection de branche ou des rulesets sur GitHub. Pour les exécutions sur l'infrastructure gérée par Anthropic, ainsi que pour les exécutions auto-hébergées qui poussent via le [proxy git d'Anthropic](/docs/fr/self-hosted-environments-deploy#use-the-anthropic-git-proxy), GitHub les applique à l'accès GitHub que vous avez connecté, de sorte qu'une règle que cet accès peut contourner ne bloque pas la poussée d'une exécution. Une exécution auto-hébergée qui pousse avec les identifiants git fournis par votre déploiement est plutôt vérifiée par rapport à ceux-ci. Consultez [Configurer git](/docs/fr/self-hosted-environments-deploy#configure-git).

369 

370* La branche est protégée sur GitHub

371* Quelqu'un d'autre a une demande de tirage ouverte à partir de cette branche

372* La branche contient des commits créés par quelqu'un d'autre que vous

373 369 

374<h3 id="connectors">370<h3 id="connectors">

375 Connecteurs371 Connecteurs

Details

91 Runtime sandbox91 Runtime sandbox

92</h2>92</h2>

93 93 

94Le package [`@anthropic-ai/sandbox-runtime`](https://github.com/anthropic-experimental/sandbox-runtime) enveloppe un processus entier dans la même isolation Seatbelt ou bubblewrap que le sandbox Bash intégré utilise. Exécuter Claude Code à travers le runtime contraint chaque outil, hook et serveur MCP dans la session, pas seulement les commandes shell. Le runtime est un aperçu de recherche bêta, et son format de configuration peut changer à mesure que le package évolue.94Le package [`@anthropic-ai/sandbox-runtime`](https://github.com/anthropics/sandbox-runtime) enveloppe un processus entier dans la même isolation Seatbelt ou bubblewrap que le sandbox Bash intégré utilise. Exécuter Claude Code à travers le runtime contraint les outils, les hooks et les serveurs MCP de la session, ainsi que les commandes shell. Le runtime est en research preview bêta, et son format de configuration peut changer à mesure que le package évolue.

95 95 

96Cette section couvre ce que vous configurez et ce que le runtime applique de lui-même. Pour déployer le runtime dans les applications Agent SDK, consultez le [guide de déploiement sécurisé](/docs/fr/agent-sdk/secure-deployment#sandbox-runtime).96Cette section couvre ce que vous configurez et ce que le runtime applique de lui-même. Pour déployer le runtime dans les applications Agent SDK, consultez le [guide de déploiement sécurisé](/docs/fr/agent-sdk/secure-deployment#sandbox-runtime).

97 97 


101 101 

102Sur Linux et WSL2, le runtime dépend des mêmes packages `bubblewrap` et `socat` que le sandbox intégré, plus `ripgrep`, que Claude Code regroupe mais que le runtime autonome résout à partir de votre PATH. Installez `bubblewrap` et `socat` comme décrit dans [Configurer Linux et WSL2](/docs/fr/sandboxing#set-up-linux-and-wsl2), et `ripgrep` à partir du gestionnaire de packages de votre distribution. Sur macOS, vous n'avez besoin d'aucun package supplémentaire. Le runtime utilise le sandbox Seatbelt intégré là-bas.102Sur Linux et WSL2, le runtime dépend des mêmes packages `bubblewrap` et `socat` que le sandbox intégré, plus `ripgrep`, que Claude Code regroupe mais que le runtime autonome résout à partir de votre PATH. Installez `bubblewrap` et `socat` comme décrit dans [Configurer Linux et WSL2](/docs/fr/sandboxing#set-up-linux-and-wsl2), et `ripgrep` à partir du gestionnaire de packages de votre distribution. Sur macOS, vous n'avez besoin d'aucun package supplémentaire. Le runtime utilise le sandbox Seatbelt intégré là-bas.

103 103 

104Par défaut, le runtime refuse l'accès réseau et confine les écritures à un petit ensemble de chemins runtime intégrés, donc configurez-le avant de lancer Claude Code à travers lui. Mettez votre configuration dans `~/.srt-settings.json`, ou dans un fichier que vous passez avec `--settings`. Le [README](https://github.com/anthropic-experimental/sandbox-runtime) du package documente le schéma de configuration complet.104Par défaut, le runtime refuse l'accès réseau et confine les écritures à un petit ensemble de chemins runtime intégrés, donc configurez-le avant de lancer Claude Code à travers lui. Mettez votre configuration dans `~/.srt-settings.json`, ou dans un fichier que vous passez avec `--settings`. Le [README](https://github.com/anthropics/sandbox-runtime) du package documente le schéma de configuration.

105 105 

106Autorisez l'accès en écriture à au moins :106Autorisez l'accès en écriture à au moins :

107 107 

108* Votre répertoire de projet.108* Votre répertoire de projet.

109* Les chemins de configuration de Claude Code `~/.claude` et `~/.claude.json`.109* Les chemins de configuration de Claude Code `~/.claude` et `~/.claude.json`.

110* `/tmp`, où Claude Code écrit les fichiers runtime.110* Le répertoire où Claude Code écrit les fichiers runtime. Sauf si vous définissez [`CLAUDE_CODE_TMPDIR`](/docs/fr/env-vars), ce répertoire est :

111 * **Linux et WSL2** : `/tmp`

112 * **macOS** : `/private/tmp`. `/tmp` est un lien symbolique vers ce répertoire, et Seatbelt vérifie le chemin résolu.

111 113 

112Autorisez les domaines réseau dont votre session a besoin :114Autorisez les domaines réseau dont votre session a besoin :

113 115 

114* `api.anthropic.com`, ou le point de terminaison de votre fournisseur configuré. Sur un fournisseur tiers, conservez également `api.anthropic.com` : la vérification de sécurité du domaine WebFetch l'appelle toujours par défaut sauf si vous définissez `skipWebFetchPreflight: true`.116* `api.anthropic.com`, ou l'endpoint de votre fournisseur configuré. Sur un fournisseur tiers, conservez également `api.anthropic.com` : la vérification de sécurité du domaine WebFetch l'appelle toujours par défaut sauf si vous définissez `skipWebFetchPreflight: true`.

115* `claude.ai` et `platform.claude.com`, que [la connexion OAuth et l'actualisation des tokens](/docs/fr/network-config#network-access-requirements) nécessitent. Les exécutions authentifiées avec une clé API peuvent abandonner ces deux.117* `claude.ai` et `platform.claude.com`, que [la connexion OAuth et l'actualisation des tokens](/docs/fr/network-config#network-access-requirements) nécessitent. Les exécutions authentifiées avec une clé API peuvent abandonner ces deux.

116 118 

117Sur Linux et WSL2, le runtime applique les autorisations d'écriture uniquement aux chemins qui existent déjà. Dans un environnement vierge, créez les chemins de configuration de Claude Code avant le premier lancement :119Sur Linux et WSL2, le runtime applique les autorisations d'écriture uniquement aux chemins qui existent déjà. Dans un environnement vierge, créez les chemins de configuration de Claude Code avant le premier lancement :


134 136 

135Le runtime bloque les écritures à plus haut risque sans aucune configuration de votre part :137Le runtime bloque les écritures à plus haut risque sans aucune configuration de votre part :

136 138 

137* `denyWrite` prend précédence sur `allowWrite`.139* `denyWrite` a priorité sur `allowWrite`.

138* À la racine du projet, le runtime refuse `.git/hooks`, refuse `.git/config` sauf si vous définissez `filesystem.allowGitConfig: true`, et refuse `.mcp.json`, `.claude/commands`, `.claude/agents`, et les fichiers de démarrage du shell.140* À la racine du projet, le runtime refuse `.git/hooks`, refuse `.git/config` sauf si vous définissez `filesystem.allowGitConfig: true`, et refuse `.mcp.json`, `.claude/commands`, `.claude/agents`, et les fichiers de démarrage du shell.

139* Sur macOS, ces refus sont vérifiés quand une écriture se produit, donc ils couvrent également les fichiers imbriqués et les référentiels créés pendant la session.141* Sur macOS, ces refus sont vérifiés quand une écriture se produit, donc ils couvrent également les fichiers imbriqués et les dépôts créés pendant la session.

140* Sur Linux et WSL2, le runtime construit la liste de refus une fois au lancement. Il couvre de manière fiable la racine du projet, effectue une analyse superficielle de meilleur effort pour les copies imbriquées qui existent à ce moment, et ne couvre rien que la session crée plus tard, comme `git init`, `git clone`, ou l'échafaudage. La section `mandatoryDenySearchDepth` du README décrit la sémantique exacte de l'analyse.142* Sur Linux et WSL2, le runtime construit la liste de refus une fois au lancement. Il couvre de manière fiable la racine du projet, effectue une analyse superficielle de meilleur effort pour les copies imbriquées qui existent à ce moment, et ne couvre rien que la session crée plus tard, comme `git init`, `git clone`, ou l'échafaudage. La section `mandatoryDenySearchDepth` du README décrit la sémantique exacte de l'analyse.

141* Si `~/.srt-settings.json` n'existe pas et que vous ne passez pas `--settings`, le runtime démarre quand même. Il bloque l'accès réseau et confine les écritures aux chemins runtime intégrés tels que `/tmp/claude`, `~/.npm/_logs`, et `~/.claude/debug`. Ne prenez pas un démarrage propre comme preuve que vos paramètres ont été chargés.143* Si `~/.srt-settings.json` n'existe pas et que vous ne passez pas `--settings`, le runtime démarre quand même. Il bloque l'accès réseau et confine les écritures aux chemins runtime intégrés tels que `/tmp/claude`, `~/.npm/_logs`, et `~/.claude/debug`. Ne prenez pas un démarrage propre comme preuve que vos paramètres ont été chargés.

142* Si le fichier de paramètres existe mais est vide, illisible ou invalide, le runtime refuse de démarrer, qu'il s'agisse de `~/.srt-settings.json` ou d'un fichier que vous passez avec `--settings`. Il refuse également de démarrer si le fichier `--settings` n'existe pas.144* Si le fichier de paramètres existe mais est vide, illisible ou invalide, le runtime refuse de démarrer, qu'il s'agisse de `~/.srt-settings.json` ou d'un fichier que vous passez avec `--settings`. Il refuse également de démarrer si le fichier `--settings` n'existe pas.


165 167 

166Plusieurs services de sandbox gérés et d'exécution à distance peuvent héberger le conteneur pour vous. La même liste de contrôle s'applique que pour n'importe quel conteneur que vous exploitez : examinez ce qui est monté en écriture, quelles credentials et tokens sont accessibles à l'intérieur, et ce que la politique d'egress réseau permet.168Plusieurs services de sandbox gérés et d'exécution à distance peuvent héberger le conteneur pour vous. La même liste de contrôle s'applique que pour n'importe quel conteneur que vous exploitez : examinez ce qui est monté en écriture, quelles credentials et tokens sont accessibles à l'intérieur, et ce que la politique d'egress réseau permet.

167 169 

168Vous pouvez superposer le sandbox Bash intégré à l'intérieur du conteneur pour les restrictions par commande. Les conteneurs non privilégiés ont besoin du paramètre nested-sandbox décrit dans [Dépannage du sandboxing](/docs/fr/sandboxing#troubleshooting).170Vous pouvez superposer le sandbox Bash intégré à l'intérieur du conteneur pour les restrictions par commande. Les conteneurs non privilégiés ont besoin de `enableWeakerNestedSandbox`, décrit dans [Bubblewrap ne parvient pas à démarrer à l'intérieur d'un conteneur](/docs/fr/sandboxing#bubblewrap-fails-to-start-inside-a-container).

169 171 

170<h2 id="virtual-machine">172<h2 id="virtual-machine">

171 Machine virtuelle173 Machine virtuelle

sandboxing.md +587 −288

Details

4 4 

5# Configurer l'outil Bash en sandbox5# Configurer l'outil Bash en sandbox

6 6 

7> Découvrez comment l'outil Bash en sandbox de Claude Code fournit une isolation du système de fichiers et du réseau pour une exécution d'agent plus sûre et plus autonome.7> Restreignez les fichiers et les hôtes réseau auxquels les commandes shell de Claude Code peuvent accéder grâce au sandbox intégré. Activez-le, définissez ses limites et corrigez ce qu'il empêche de fonctionner.

8 8 

9Le sandbox Bash permet à Claude d'exécuter la plupart des commandes shell sans s'arrêter pour demander une permission. Au lieu d'approuver chaque commande, vous définissez quels fichiers et domaines réseau les commandes peuvent toucher, et le système d'exploitation applique cette limite pour chaque commande Bash, PowerShell ou Monitor et ses processus enfants.9Le sandbox Bash est une frontière que le système d'exploitation impose autour des commandes shell que Claude exécute sur votre machine. Vous définissez les fichiers et les domaines réseau auxquels ces commandes peuvent accéder, et les restrictions s'appliquent aux commandes Bash, PowerShell et Monitor ainsi qu'aux processus qu'elles lancent. Comme le système d'exploitation applique ces restrictions pendant l'exécution d'une commande, Claude Code peut [exécuter des commandes en sandbox sans vous demander](#sandbox-modes) d'approuver chacune d'elles.

10 

11Le sandbox couvre uniquement les commandes shell. Les outils de fichiers de Claude, les serveurs MCP et les hooks [s'exécutent en dehors de celui-ci](#what-runs-outside-the-sandbox).

12 

13Le sandbox fonctionne sur macOS, Linux et WSL2. Sous Windows natif, Claude Code exécute les commandes sans sandbox. Pour utiliser le sandbox sur une machine Windows, exécutez Claude Code dans une distribution WSL2.

10 14 

11<Note>15<Note>

12 Pour comparer d'autres approches d'isolation telles que les dev containers, les conteneurs personnalisés et les machines virtuelles, consultez [Environnements sandbox](/docs/fr/sandbox-environments). Pour réduire les invites de permission pour les outils autres que Bash, consultez [modes de permission](/docs/fr/permission-modes).16 Cette page traite du sandbox qui entoure les commandes shell sur votre propre machine. D'autres pages abordent des questions connexes :

17 

18 * Pour savoir comment une session cloud est isolée, consultez [Sécurité et isolation](/docs/fr/claude-code-on-the-web#security-and-isolation)

19 * Pour comparer d'autres approches d'isolation telles que les dev containers, les conteneurs personnalisés et les machines virtuelles, consultez [Environnements sandbox](/docs/fr/sandbox-environments)

20 * Pour réduire les demandes de permission pour les outils autres que Bash, consultez [modes de permission](/docs/fr/permission-modes)

13</Note>21</Note>

14 22 

23<h2 id="what-the-sandbox-restricts">

24 Ce que le sandbox restreint

25</h2>

26 

27Lorsque le sandbox est activé, les commandes shell que Claude exécute démarrent à l'intérieur de ses limites, tout comme les processus qu'elles lancent. Le sandbox est désactivé par défaut. Pour l'activer, exécutez `/sandbox` dans une session, comme le montre [Démarrer](#get-started), ou définissez [`sandbox.enabled`](/docs/fr/settings-reference#sandbox-enabled) sur `true` dans un [fichier de paramètres](/docs/fr/settings) tel que `~/.claude/settings.json`.

28 

29Le tableau indique ce à quoi une commande exécutée dans le sandbox peut accéder par défaut, ainsi que les paramètres qui modifient chaque valeur par défaut.

30 

31| Accès | Par défaut | Modifier avec |

32| :- | :- | :- |

33| Écritures | Le répertoire de travail, un répertoire temporaire propre à chaque utilisateur et les [répertoires que vous avez ajoutés](/docs/fr/permissions#additional-directories-grant-file-access-not-configuration). Les [chemins protégés](#protected-paths) restent interdits en écriture | [`filesystem.allowWrite`](/docs/fr/settings-reference#sandbox-filesystem-allowwrite), [`filesystem.denyWrite`](/docs/fr/settings-reference#sandbox-filesystem-denywrite) |

34| Lectures | La majeure partie de la machine, y compris les fichiers d'identifiants tels que `~/.ssh` et `~/.aws/credentials` | [`filesystem.denyRead`](/docs/fr/settings-reference#sandbox-filesystem-denyread), [`credentials`](#protect-credentials) |

35| Réseau | Aucune route directe vers l'extérieur. Les connexions passent par un proxy sur votre machine qui vérifie chaque hôte par rapport à vos domaines autorisés, dont la liste est vide au départ. Votre mode de permission détermine [ce qu'il advient des autres hôtes](#hosts-outside-your-allowed-domains) | [`network.allowedDomains`](/docs/fr/settings-reference#sandbox-network-alloweddomains), [`network.deniedDomains`](/docs/fr/settings-reference#sandbox-network-denieddomains) |

36| Variables d'environnement | Héritées de Claude Code, y compris les éventuels secrets présents dans son environnement | [`credentials`](#protect-credentials), [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/fr/env-vars) |

37 

38Claude Code s'appuie, pour le sandbox, sur le package open source [`@anthropic-ai/sandbox-runtime`](https://github.com/anthropics/sandbox-runtime).

39 

40<h3 id="what-runs-outside-the-sandbox">

41 Ce qui s'exécute en dehors du sandbox

42</h3>

43 

44Le sandbox encapsule les commandes shell. Les outils et processus suivants s'exécutent en dehors de celui-ci :

45 

46* **Outils intégrés de fichiers et web** : les outils tels que Read, Edit, Write, WebFetch et WebSearch suivent plutôt les [règles de permission](/docs/fr/permissions). Une entrée `denyRead` n'empêche pas l'outil Read, et `allowedDomains` ne limite pas WebFetch

47* **Autres processus lancés par Claude Code** : les [hooks](/docs/fr/hooks) de commande, les [serveurs MCP](/docs/fr/mcp) locaux, les [moniteurs de plugins](/docs/fr/plugins/components#monitors), les [serveurs LSP](/docs/fr/tools-reference#lsp-tool-behavior) et les commandes auxiliaires telles que votre commande de [barre de statut](/docs/fr/statusline) et `apiKeyHelper` s'exécutent avec votre accès complet

48 

49Certaines commandes shell s'exécutent également en dehors du sandbox, selon vos paramètres :

50 

51* **Commandes que vous saisissez vous-même** : une commande que vous saisissez à l'[invite du mode shell `!`](/docs/fr/interactive-mode#shell-mode-with-prefix) s'exécute hors du sandbox dans la plupart des sessions. Le [mode sandbox strict](#turn-off-the-retry-with-strict-sandbox-mode) répertorie les sessions dans lesquelles une commande que vous saisissez s'exécute dans le sandbox

52* **Commandes exclues** : les commandes qui correspondent à [`excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands) s'exécutent hors du sandbox

53* **Nouvelles tentatives hors sandbox** : Claude peut [demander à exécuter une commande hors du sandbox](#the-unsandboxed-retry-escape-hatch), généralement après son échec dans le sandbox

54 

55Pour placer les outils, processus et commandes de cette section derrière une seule limite, exécutez le processus Claude Code lui-même dans un [conteneur, une machine virtuelle ou le runtime du sandbox](/docs/fr/sandbox-environments).

56 

15<h2 id="get-started">57<h2 id="get-started">

16 Démarrage58 Démarrer

17</h2>59</h2>

18 60 

19Le sandbox est intégré à Claude Code et s'exécute sur macOS, Linux et WSL2. Windows natif n'est pas supporté. Sur Windows, exécutez Claude Code à l'intérieur d'une distribution WSL2.61Le sandbox est intégré à Claude Code. Ce que vous installez dépend de votre plateforme :

20 62 

21Sur macOS, il n'y a rien à installer : le sandboxing utilise le framework Seatbelt intégré. Sur Linux et WSL2, le sandbox dépend de deux packages, couverts dans [Configurer Linux et WSL2](#set-up-linux-and-wsl2). Même si vous ne les avez pas encore installés, vous pouvez commencer avec `/sandbox`, car son panneau montre si quelque chose manque.63* **macOS** : le sandboxing utilise le framework Seatbelt intégré, vous pouvez donc passer directement aux étapes

64* **Linux et WSL2** : le sandbox s'appuie sur `bubblewrap` et `socat`, décrits dans [Configurer Linux et WSL2](#set-up-linux-and-wsl2). Même si vous ne les avez pas encore installés, vous pouvez commencer avec `/sandbox`, car son panneau indique s'il manque quelque chose

22 65 

23<Steps>66<Steps>

24 <Step title="Exécuter /sandbox">67 <Step title="Exécuter /sandbox">


28 /sandbox71 /sandbox

29 ```72 ```

30 73 

31 Cela ouvre le panneau sandbox avec trois onglets, plus un onglet Dependencies sur Linux lorsque le filtre seccomp optionnel manque :74 Cela ouvre le panneau du sandbox avec trois onglets, plus un onglet Dependencies sous Linux lorsque le filtre seccomp facultatif est absent :

32 75 

33 * **Mode** : choisissez comment les commandes sandboxées sont approuvées, couvert à l'étape suivante76 * **Mode** : choisissez comment les commandes en sandbox sont approuvées, comme décrit à l'étape suivante

34 * **Overrides** : choisissez si les commandes qui échouent sous le sandbox peuvent revenir à une exécution non sandboxée. C'est le paramètre [`allowUnsandboxedCommands`](/docs/fr/settings-reference#sandbox-allowunsandboxedcommands)77 * **Overrides** : choisissez si les commandes qui échouent dans le sandbox peuvent se rabattre sur une exécution hors sandbox. Il s'agit du paramètre [`allowUnsandboxedCommands`](/docs/fr/settings-reference#sandbox-allowunsandboxedcommands)

35 * **Config** : affichage les paramètres de sandbox résolus78 * **Config** : affichez les paramètres du sandbox résolus

36 79 

37 Si le panneau affiche uniquement un onglet Dependencies, un package requis manque. Installez-le comme décrit dans [Configurer Linux et WSL2](#set-up-linux-and-wsl2), redémarrez Claude Code et exécutez `/sandbox` à nouveau.80 Si le panneau n'affiche qu'un onglet Dependencies, un paquet requis est manquant. Installez-le comme décrit dans [Configurer Linux et WSL2](#set-up-linux-and-wsl2), redémarrez Claude Code, puis exécutez à nouveau `/sandbox`.

38 </Step>81 </Step>

39 82 

40 <Step title="Choisir un mode">83 <Step title="Choisir un mode">

41 Sur l'onglet Mode, sélectionnez auto-allow ou permissions régulières. Auto-allow exécute les commandes sandboxées sans invite, et les permissions régulières conservent les invites de permission régulières même lorsque les commandes sont sandboxées. Consultez [Modes sandbox](#sandbox-modes) pour voir quelles commandes invitent toujours en mode auto-allow.84 Dans l'onglet Mode, sélectionnez l'approbation automatique ou les permissions standard. L'approbation automatique exécute les commandes en sandbox sans demande, tandis que les permissions standard conservent les demandes de permission habituelles même lorsque les commandes sont en sandbox. Consultez [Modes du sandbox](#sandbox-modes) pour savoir quelles commandes déclenchent encore une demande en mode d'approbation automatique.

42 </Step>85 </Step>

43 86 

44 <Step title="Exécuter une commande Bash">87 <Step title="Exécuter une commande Bash">

45 Demandez à Claude d'exécuter une commande, comme une compilation ou une suite de tests. Par défaut, les commandes à l'intérieur du sandbox peuvent écrire dans le répertoire de travail, un [répertoire temporaire par utilisateur](/docs/fr/env-vars), et tout [répertoire que vous avez ajouté](/docs/fr/permissions#additional-directories-grant-file-access-not-configuration) avec `--add-dir`, `/add-dir` ou `permissions.additionalDirectories`.88 Demandez à Claude d'exécuter une commande, comme un build ou une suite de tests. Par défaut, les commandes dans le sandbox peuvent écrire dans le répertoire de travail, dans un [répertoire temporaire propre à l'utilisateur](/docs/fr/env-vars) et dans tous les [répertoires que vous avez ajoutés](/docs/fr/permissions#additional-directories-grant-file-access-not-configuration) avec `--add-dir`, `/add-dir` ou `permissions.additionalDirectories`.

46 89 

47 La première fois qu'une commande a besoin d'un nouveau domaine réseau, Claude Code demande une approbation ; en [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode), Claude nomme plutôt les hôtes dont une commande a besoin [sur la commande elle-même](#per-command-allowed-domains-in-auto-mode) pour que le classificateur les examine avec elle.90 La première fois qu'une commande a besoin d'un nouveau domaine réseau, Claude Code vous demande votre approbation ; en [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode), Claude indique plutôt les hôtes dont une commande a besoin [sur la commande elle-même](#per-command-allowed-domains-in-auto-mode), afin que le classifieur les examine avec elle.

48 91 

49 Les commandes qui ne peuvent pas s'exécuter sandboxées reviennent au flux de permission régulier. Claude Code intitule leur invite de permission « Bash command (unsandboxed) » au lieu de « Bash command », afin que vous puissiez voir quelles commandes se sont exécutées en dehors du sandbox. Pour élargir ou réduire ce que le sandbox autorise, consultez [Configurer le sandboxing](#configure-sandboxing).92 Pour élargir ou restreindre ce que le sandbox autorise, consultez [Configurer le sandboxing](#configure-sandboxing).

50 93 

51 Si les commandes sandboxées échouent avec `Operation not permitted` à l'intérieur d'un conteneur, consultez l'entrée Bubblewrap sous [Dépannage](#troubleshooting).94 Si des commandes en sandbox échouent avec `Operation not permitted` dans un conteneur, consultez [Bubblewrap ne parvient pas à démarrer dans un conteneur](#bubblewrap-fails-to-start-inside-a-container).

52 </Step>95 </Step>

53</Steps>96</Steps>

54 97 

55Lorsque 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).98Lorsque vous sélectionnez un mode dans le panneau, Claude Code l'enregistre dans les paramètres locaux de votre projet, dans `.claude/settings.local.json`, qui s'appliquent au projet en cours. 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, dans `~/.claude/settings.json`. Pour imposer le sandboxing à tous les développeurs d'une organisation, utilisez les [paramètres gérés](#enforce-sandboxing-with-managed-settings).

56 99 

57Pour 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 :100Pour modifier le sandbox le temps d'une 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 en sandbox dans laquelle Claude ne peut pas réessayer une commande bloquée en dehors du sandbox :

58 101 

59```bash theme={null}102```bash theme={null}

60claude --settings '{"sandbox": {"enabled": true, "allowUnsandboxedCommands": false}}'103claude --settings '{"sandbox": {"enabled": true, "allowUnsandboxedCommands": false}}'

61```104```

62 105 

63<Warning>106<Warning>

64 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é.107 Par défaut, si le sandbox ne peut pas démarrer parce qu'une dépendance est manquante ou que la plateforme n'est pas prise en charge, Claude Code exécute les commandes sans sandboxing. Pour que Claude Code s'arrête plutôt au démarrage, définissez [`sandbox.failIfUnavailable`](/docs/fr/settings-reference#sandbox-failifunavailable) sur `true`. Les déploiements gérés qui exigent le sandboxing comme barrière de sécurité peuvent utiliser ce paramètre.

65</Warning>108</Warning>

66 109 

110<h3 id="confirm-commands-run-inside-the-sandbox">

111 Vérifier que les commandes s'exécutent dans le sandbox

112</h3>

113 

114Pour vérifier que le sandbox fonctionne, demandez à Claude d'exécuter chaque ligne du tableau. Ce que vous saisissez à l'[invite `!`](#what-runs-outside-the-sandbox) s'exécute généralement en dehors du sandbox ; saisir une ligne vous-même ne permet donc pas de le tester.

115 

116| Commande | Résultat dans le sandbox |

117| :- | :- |

118| `touch ~/sandbox-probe` | Échoue avec `Operation not permitted` sous macOS, ou `Read-only file system` sous Linux et WSL2 |

119| `curl --noproxy '*' https://example.com` | Échoue avec `Could not resolve host`, car la commande n'a aucun moyen de contourner le proxy du sandbox |

120 

121Si Claude demande à réessayer une commande ayant échoué en dehors du sandbox, refusez la nouvelle tentative. Si `touch` réussit et que votre répertoire personnel ne fait pas partie des répertoires dans lesquels le sandbox autorise les commandes à écrire, supprimez `~/sandbox-probe`. Exécutez ensuite `/sandbox` pour vérifier que le sandbox est activé et que ses dépendances sont installées.

122 

67<h3 id="set-up-linux-and-wsl2">123<h3 id="set-up-linux-and-wsl2">

68 Configurer Linux et WSL2124 Configurer Linux et WSL2

69</h3>125</h3>

70 126 

71Sur Linux et WSL2, le sandbox dépend de deux packages :127Sous Linux et WSL2, le sandbox s'appuie sur ces paquets :

72 128 

73* [`bubblewrap`](https://github.com/containers/bubblewrap) : l'outil de sandboxing sans privilèges qui applique l'isolation du système de fichiers129* [`bubblewrap`](https://github.com/containers/bubblewrap) : l'outil de sandboxing non privilégié qui applique l'isolation du système de fichiers

74* [`socat`](http://www.dest-unreach.org/socat/) : le relais utilisé pour acheminer le trafic réseau via le proxy sandbox130* [`socat`](http://www.dest-unreach.org/socat/) : le relais utilisé pour acheminer le trafic réseau via le proxy du sandbox

75 131 

76Installez-les avec le gestionnaire de packages de votre distribution :132Installez-les avec le gestionnaire de paquets de votre distribution :

77 133 

78<Tabs>134<Tabs>

79 <Tab title="Ubuntu/Debian">135 <Tab title="Ubuntu/Debian">


89 </Tab>145 </Tab>

90</Tabs>146</Tabs>

91 147 

92Lorsqu'une dépendance manque, l'onglet Dependencies dans `/sandbox` liste lequel de `ripgrep`, `bubblewrap`, `socat` et le filtre seccomp votre plateforme manque. Si vous ne voyez pas l'onglet après l'installation et le redémarrage de Claude Code, toutes les dépendances sont présentes.148Lorsqu'une dépendance est manquante, l'onglet Dependencies de `/sandbox` indique lesquels parmi `ripgrep`, `bubblewrap`, `socat` et le filtre seccomp manquent sur votre plateforme. Si vous ne voyez pas cet onglet après l'installation et le redémarrage de Claude Code, toutes les dépendances sont présentes.

93 149 

94Ripgrep est fourni avec le binaire natif Claude Code. Le filtre seccomp est optionnel et ajoute le blocage des sockets de domaine Unix. Installez-le avec `npm install -g @anthropic-ai/sandbox-runtime` s'il manque.150Ripgrep est fourni avec le binaire natif de Claude Code. Le filtre seccomp est facultatif et ajoute le blocage des sockets de domaine Unix. Installez-le avec `npm install -g @anthropic-ai/sandbox-runtime` s'il est absent.

95 151 

96Lorsqu'une dépendance requise manque, l'onglet Dependencies est le seul onglet affiché jusqu'à ce que vous l'installiez. Lorsque seul le filtre seccomp optionnel manque, l'onglet Dependencies apparaît aux côtés des autres onglets. La vérification des dépendances s'exécute au démarrage, donc redémarrez Claude Code après l'installation des packages pour que `/sandbox` les détecte.152Lorsqu'une dépendance requise est manquante, l'onglet Dependencies est le seul onglet affiché jusqu'à ce que vous l'installiez. Lorsque seul le filtre seccomp facultatif est absent, l'onglet Dependencies apparaît à côté des autres onglets. La vérification des dépendances s'exécute au démarrage ; redémarrez donc Claude Code après avoir installé des paquets pour que `/sandbox` les détecte.

97 153 

98<AccordionGroup>154<AccordionGroup>

99 <Accordion title="Ubuntu 24.04 et versions ultérieures : autoriser bubblewrap à créer des espaces de noms utilisateur">155 <Accordion title="Ubuntu 24.04 et versions ultérieures : autoriser bubblewrap à créer des espaces de noms utilisateur">

100 Sur Ubuntu 24.04 et versions ultérieures, la politique AppArmor par défaut empêche bubblewrap de créer les espaces de noms utilisateur dont il a besoin pour l'isolation.156 Sous Ubuntu 24.04 et versions ultérieures, la politique AppArmor par défaut empêche bubblewrap de créer les espaces de noms utilisateur dont il a besoin pour l'isolation.

101 157 

102 Pour vérifier si votre environnement applique cette restriction, y compris à l'intérieur de WSL2, exécutez `sysctl kernel.apparmor_restrict_unprivileged_userns`. Si la commande retourne `0`, ignorez cette étape. Si elle affiche une erreur `No such file or directory`, la clé n'existe pas et vous pouvez ignorer cette étape. Si elle retourne `1`, ajoutez un profil AppArmor qui accorde à `bwrap` cette capacité :158 Pour vérifier si votre environnement applique cette restriction, y compris dans WSL2, exécutez `sysctl kernel.apparmor_restrict_unprivileged_userns`. Si la commande renvoie `0`, ignorez cette étape. Si elle affiche une erreur `No such file or directory`, la clé n'existe pas et vous pouvez ignorer cette étape. Si elle renvoie `1`, ajoutez un profil AppArmor qui accorde cette capacité à `bwrap` :

103 159 

104 ```bash theme={null}160 ```bash theme={null}

105 sudo tee /etc/apparmor.d/bwrap > /dev/null <<'EOF'161 sudo tee /etc/apparmor.d/bwrap > /dev/null <<'EOF'


113 EOF169 EOF

114 ```170 ```

115 171 

116 Le profil s'applique uniquement à `bwrap` lui-même, pas aux commandes qu'il exécute à l'intérieur du sandbox. Rechargez AppArmor pour l'appliquer :172 Le profil s'applique uniquement à `bwrap` lui-même, et non aux commandes qu'il exécute dans le sandbox. Rechargez AppArmor pour l'appliquer :

117 173 

118 ```bash theme={null}174 ```bash theme={null}

119 sudo systemctl reload apparmor175 sudo systemctl reload apparmor

120 ```176 ```

121 </Accordion>177 </Accordion>

122 178 

123 <Accordion title="Notes WSL2">179 <Accordion title="Remarques sur WSL2">

124 Vérifiez votre version WSL avec `wsl -l -v` à partir de PowerShell. Si vous voyez `Sandboxing requires WSL2`, votre distribution exécute WSL1. Mettez-la à niveau vers WSL2 ou exécutez Claude Code sans sandboxing.180 Vérifiez votre version de WSL avec `wsl -l -v` depuis PowerShell. Si vous voyez `Sandboxing requires WSL2`, votre distribution s'exécute sous WSL1. Passez-la à WSL2 ou exécutez Claude Code sans sandboxing.

125 181 

126 Sur WSL2, WSL transmet le lancement d'un binaire Windows tel que `cmd.exe`, `powershell.exe` ou quoi que ce soit sous `/mnt/c/` à l'hôte Windows via un socket Unix, donc le fait qu'une commande sandboxée puisse en lancer un suit les [paramètres Unix-socket](/docs/fr/settings-reference#sandbox-network-allowunixsockets) du sandbox : le filtre seccomp optionnel doit être installé pour bloquer le socket en premier lieu. Pour autoriser ces lancements, définissez `allowAllUnixSockets` ; pour les garder en dehors du sandbox entièrement, ajoutez la commande à [`excludedCommands`](/docs/fr/settings-reference#sandbox-excludedcommands).182 Sous WSL2, WSL transmet le lancement d'un binaire Windows tel que `cmd.exe`, `powershell.exe` ou tout élément situé sous `/mnt/c/` à l'hôte Windows via un socket Unix ; la possibilité pour une commande en sandbox d'en lancer un dépend donc des [paramètres de socket Unix](/docs/fr/settings-reference#sandbox-network-allowunixsockets) du sandbox : le filtre seccomp facultatif doit être installé pour que le socket puisse être bloqué. Pour autoriser ces lancements, définissez `allowAllUnixSockets`, qui ouvre tous les sockets Unix aux commandes en sandbox.

127 </Accordion>183 </Accordion>

128</AccordionGroup>184</AccordionGroup>

129 185 

130<h3 id="sandbox-modes">186<h3 id="sandbox-modes">

131 Modes sandbox187 Modes du sandbox

132</h3>188</h3>

133 189 

134Claude Code offre deux modes sandbox. Dans les deux, le sandbox applique les mêmes restrictions de système de fichiers et de réseau ; la différence réside uniquement dans le fait que les commandes sandboxées sont auto-approuvées ou nécessitent une permission explicite.190Claude Code propose deux modes de sandbox. Dans les deux cas, le sandbox applique les mêmes restrictions sur le système de fichiers et le réseau ; la seule différence réside dans le fait que les commandes en sandbox sont approuvées automatiquement ou nécessitent une permission explicite.

135 191 

136<h4 id="auto-allow-mode">192<h4 id="auto-allow-mode">

137 Mode auto-allow193 Mode d'approbation automatique

138</h4>194</h4>

139 195 

140Lorsqu'une commande peut être sandboxée, Claude Code l'exécute à l'intérieur du sandbox et l'approuve automatiquement, sans vous demander votre permission. Les commandes qui ne peuvent pas être sandboxées, comme celles nécessitant un accès réseau à des hôtes non autorisés, reviennent au flux de permission régulier, où Claude Code vérifie vos [règles de permission](/docs/fr/permissions) et bloque toute commande que ces règles n'autorisent pas déjà, avec une invite en mode Manuel.196Claude Code approuve automatiquement une commande, sans demande, lorsqu'elle s'exécute dans le sandbox. Une commande passe par le [flux de permission](/docs/fr/permissions) standard lorsqu'elle s'exécute en dehors du sandbox, parce qu'elle correspond à [`excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands) ou parce que Claude [la réessaie hors sandbox](#the-unsandboxed-retry-escape-hatch).

197 

198Une commande en sandbox qui se connecte à un hôte que vous n'avez pas autorisé reste dans le sandbox. [Hôtes en dehors de vos domaines autorisés](#hosts-outside-your-allowed-domains) explique qui décide si la connexion aboutit.

141 199 

142Même en mode auto-allow, les éléments suivants s'appliquent toujours :200Même en mode d'approbation automatique, les éléments suivants s'appliquent toujours :

143 201 

144* Les [règles de refus](/docs/fr/permissions) explicites sont toujours respectées202* Les [règles de refus](/docs/fr/permissions) explicites sont toujours respectées

145* Les commandes `rm` ou `rmdir` qui ciblent un [chemin critique](/docs/fr/permission-modes#critical-paths) passent toujours par le flux de permission régulier203* Les commandes `rm` ou `rmdir` qui ciblent un [chemin critique](/docs/fr/permission-modes#critical-paths) passent toujours par le flux de permission standard

146* Les [règles ask](/docs/fr/permissions) délimitées par le contenu comme `Bash(git push *)` forcent toujours une invite même pour les commandes sandboxées204* Les [règles de demande](/docs/fr/permissions) ciblant un contenu, comme `Bash(git push *)`, imposent toujours une demande, même pour les commandes en sandbox

147* Une règle ask `Bash` simple, ou la forme équivalente `Bash(*)`, est ignorée pour les commandes qui s'exécutent sandboxées ; elle s'applique toujours aux commandes qui reviennent au flux de permission régulier. En [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode), la règle n'est pas ignorée : elle invite pour les commandes sandboxées aussi, y compris les commandes en lecture seule. Avant v2.1.212, l'ignorance s'appliquait aussi en mode plan205* Une règle de demande `Bash` seule, ou sa forme équivalente `Bash(*)`, est ignorée pour les commandes exécutées en sandbox ; elle s'applique toujours aux commandes qui se rabattent sur le flux de permission standard. En [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode), la règle n'est pas ignorée : elle déclenche aussi une demande pour les commandes en sandbox, y compris celles en lecture seule

148 206 

149<Info>207<Info>

150 Le mode auto-allow fonctionne indépendamment de votre paramètre de mode de permission, sauf en [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode), pour une commande auto mode qui porte des [domaines autorisés par commande](#per-command-allowed-domains-in-auto-mode), et pour l'[examen du classificateur côté serveur](/docs/fr/permission-modes#how-the-classifier-evaluates-actions) des commandes sandboxées en mode auto. Même si vous n'êtes pas en mode « accepter les modifications », les commandes Bash sandboxées s'exécutent automatiquement lorsque l'auto-allow est activé. Cela signifie que les commandes Bash qui modifient les fichiers dans les limites du sandbox s'exécutent sans invite, même en mode Manuel, où les outils de modification de fichiers inviteraient.208 Le mode d'approbation automatique fonctionne indépendamment de votre paramètre de mode de permission, à trois exceptions près : le [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode), une commande en mode auto qui comporte des [domaines autorisés par commande](#per-command-allowed-domains-in-auto-mode), et l'[examen par le classifieur côté serveur](/docs/fr/permission-modes#how-the-classifier-evaluates-actions) des commandes en sandbox en mode auto. Même si vous n'êtes pas en mode « accept edits », les commandes Bash en sandbox s'exécutent automatiquement lorsque l'approbation automatique est activée. Cela signifie que les commandes Bash qui modifient des fichiers dans les limites du sandbox s'exécutent sans demande, même en mode Manual, où les outils de modification de fichiers déclencheraient une demande.

151 209 

152 En mode plan, l'auto-allow n'élargit pas les approbations ; consultez [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode) pour voir comment Claude Code bloque les commandes pendant que vous planifiez. Avant v2.1.212, l'auto-allow exécutait les commandes sandboxées sans invite en mode plan aussi.210 En mode plan, l'approbation automatique n'élargit pas les approbations ; consultez [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode) pour savoir comment Claude Code contrôle les commandes pendant que vous planifiez.

153</Info>211</Info>

154 212 

155<h4 id="regular-permissions-mode">213<h4 id="regular-permissions-mode">

156 Mode permissions régulières214 Mode de permissions standard

157</h4>215</h4>

158 216 

159Toutes les commandes Bash passent par le flux de permission régulier, même lorsqu'elles sont sandboxées. Cela offre plus de contrôle mais nécessite plus d'approbations.217Toutes les commandes Bash passent par le flux de permission standard, même lorsqu'elles sont en sandbox. Cela offre davantage de contrôle, mais nécessite plus d'approbations.

160 218 

161<h4 id="the-unsandboxed-retry-escape-hatch">219<h4 id="the-unsandboxed-retry-escape-hatch">

162 La trappe d'échappement de réessai non sandboxé220 L'échappatoire de la nouvelle tentative hors sandbox

221</h4>

222 

223La nouvelle tentative hors sandbox est une échappatoire pour les commandes qui échouent dans le sandbox, comme les outils incompatibles avec celui-ci. Lorsque le sandbox bloque une connexion réseau, Claude Code indique l'hôte refusé dans le résultat de la commande, afin que Claude voie ce qui a été bloqué. Claude analyse l'échec et peut réessayer la commande avec le paramètre `dangerouslyDisableSandbox`.

224 

225La commande réessayée s'exécute hors sandbox. Dans une session de terminal interactive, la personne ou l'élément qui l'approuve dépend de votre mode de permission :

226 

227* **Mode `bypassPermissions`** : la nouvelle tentative s'exécute sans demande

228* **Mode Manual et mode `acceptEdits`** : vous recevez une demande intitulée « Bash command (unsandboxed) »

229* **[Mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode)** : un modèle classifieur distinct évalue la commande sous-jacente

230* **Mode `dontAsk`** : Claude Code refuse la nouvelle tentative

231* **Mode plan** : consultez [comment Claude Code contrôle les commandes pendant que vous planifiez](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode)

232 

233Ces règles et paramètres modifient qui approuve la nouvelle tentative :

234 

235* **Une règle d'autorisation correspondante** : si une règle d'autorisation telle que `Bash(curl *)` correspond à la commande, elle approuve également la nouvelle tentative ; la commande s'exécute donc en dehors du sandbox sans demande

236* **Une règle de demande pour le paramètre** : ajoutez une [règle de demande](/docs/fr/permissions#match-by-input-parameter) pour `Bash(dangerouslyDisableSandbox:true)` afin de recevoir une demande lors des nouvelles tentatives Bash. Vous recevez la demande en mode auto et en mode `bypassPermissions` également, et la règle a priorité sur une règle d'autorisation correspondante

237* **[`permissions.blockReadsOutsideWorkingDirectories`](/docs/fr/settings-reference#permissions-blockreadsoutsideworkingdirectories)** : [Actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves) décrit les nouvelles tentatives qui déclenchent une demande lorsque ce paramètre est activé

238 

239<h4 id="turn-off-the-retry-with-strict-sandbox-mode">

240 Désactiver la nouvelle tentative avec le mode sandbox strict

163</h4>241</h4>

164 242 

165Certaines commandes ne peuvent pas s'exécuter à l'intérieur du sandbox du tout, comme les outils qui sont incompatibles avec lui ou qui ont besoin d'un hôte que vous n'avez pas autorisé. Claude Code signale les violations du sandbox dans le résultat de la commande bloquée, en nommant le chemin ou l'hôte que le sandbox a refusé, afin que Claude voie ce que le sandbox a bloqué. Plutôt que d'échouer la tâche ou de vous demander d'éteindre le sandboxing, Claude Code inclut une trappe d'échappement : Claude analyse la violation et peut réessayer la commande avec le paramètre `dangerouslyDisableSandbox`.243Vous pouvez désactiver la nouvelle tentative hors sandbox en définissant `"allowUnsandboxedCommands": false` dans vos [paramètres du sandbox](/docs/fr/settings-reference#sandbox-settings). Lorsque la nouvelle tentative est désactivée, Claude Code ignore le paramètre `dangerouslyDisableSandbox`. Tant que le sandbox fonctionne, les commandes exécutées par Claude sont alors en sandbox, sauf si elles correspondent à une entrée `excludedCommands`. Pour empêcher Claude Code d'exécuter des commandes hors sandbox lorsque le sandbox ne peut pas démarrer, définissez également [`failIfUnavailable`](/docs/fr/settings-reference#sandbox-failifunavailable). L'onglet **Overrides** de `/sandbox` affiche ce paramètre sous le nom **Strict sandbox mode**.

166 244 

167La commande réessayée s'exécute en dehors du sandbox, elle passe donc par le flux de permission régulier. En mode Manuel vous obtenez une invite de confirmation. En [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode), le classificateur évalue la commande sous-jacente. Pendant que [`permissions.blockReadsOutsideWorkingDirectories`](/docs/fr/settings-reference#permissions-blockreadsoutsideworkingdirectories) est activé, un réessai qui a besoin d'approbation pour s'exécuter en dehors du sandbox vous invite à la place. Pour être invité à chaque réessai non sandboxé même en mode auto, ajoutez une [règle ask](/docs/fr/permissions#match-by-input-parameter) pour `Bash(dangerouslyDisableSandbox:true)`.245Une valeur `false` dans vos paramètres utilisateur, dans `--settings` ou dans les paramètres gérés s'applique même lorsque les paramètres d'un projet définissent `true`. Une valeur `false` dans vos paramètres utilisateur ne rend pas le sandbox imposé par l'administrateur ; les autres paramètres du sandbox d'un projet s'appliquent donc toujours. Avant la v2.1.285, une valeur `true` d'un projet remplaçait une valeur `false` de vos paramètres utilisateur.

168 246 

169Vous pouvez désactiver cette trappe d'échappement en définissant `"allowUnsandboxedCommands": false` dans vos [paramètres de sandbox](/docs/fr/settings-reference#sandbox-settings). Avec la trappe d'échappement désactivée, Claude Code ignore le paramètre `dangerouslyDisableSandbox`, et chaque commande que Claude exécute doit s'exécuter sandboxée à moins que vous l'ayez listée dans `excludedCommands`. L'onglet **Overrides** de `/sandbox` affiche ce paramètre comme **Mode sandbox strict**.247Si vous ou votre administrateur désactivez la nouvelle tentative dans les paramètres gérés ou avec le flag `--settings`, le sandbox devient imposé par l'administrateur. Claude Code ignore alors les paramètres des fichiers d'un dépôt qui assouplissent le sandbox, y compris les entrées `excludedCommands`. [Paramètres du dépôt avec un sandbox imposé par l'administrateur](#repository-settings-under-an-admin-required-sandbox) les répertorie.

170 248 

171Le mode sandbox strict s'applique aux commandes que Claude exécute. Les commandes que vous tapez vous-même à l'[invite shell-mode `!`](/docs/fr/interactive-mode#shell-mode-with-prefix) s'exécutent en dehors du sandbox à moins que la session soit l'une de celles-ci :249Le mode sandbox strict s'applique aux commandes exécutées par Claude. Les commandes que vous saisissez vous-même à l'[invite du mode shell `!`](/docs/fr/interactive-mode#shell-mode-with-prefix) s'exécutent en dehors du sandbox, sauf si la session fait partie des cas suivants :

172 250 

173* **Une [session en arrière-plan](/docs/fr/agent-view)** : le mode sandbox strict couvre aussi les commandes shell-mode251* **Une [session en arrière-plan](/docs/fr/agent-view)** : le mode sandbox strict couvre également les commandes du mode shell

174* **Une session Linux avec [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/fr/env-vars#variables) défini** : chaque commande s'exécute sandboxée, commandes shell-mode incluses252* **Une session Linux avec [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/fr/env-vars#variables) défini** : toutes les commandes s'exécutent en sandbox, y compris les commandes du mode shell

175 253 

176Avant v2.1.260, le mode sandbox strict sandboxait les commandes shell-mode dans chaque session.254Avant la v2.1.260, le mode sandbox strict plaçait en sandbox les commandes du mode shell dans toutes les sessions.

177 255 

178<h4 id="temporary-directories">256<h4 id="temporary-directories">

179 Répertoires temporaires257 Répertoires temporaires

180</h4>258</h4>

181 259 

182Le répertoire temporaire de la session est inscriptible à l'intérieur du sandbox par défaut, aux côtés du répertoire de travail. À moins que vous [désactiviez l'isolation du système de fichiers](#disable-filesystem-isolation), Claude Code définit `$TMPDIR` sur ce répertoire pour les commandes sandboxées, de sorte que les outils qui écrivent des fichiers temporaires fonctionnent sans configuration supplémentaire.260Un répertoire temporaire propre à l'utilisateur est accessible en écriture dans le sandbox par défaut, en plus du répertoire de travail. Sauf si vous [désactivez l'isolation du système de fichiers](#disable-filesystem-isolation), Claude Code définit `$TMPDIR` sur ce répertoire pour les commandes en sandbox, afin que les outils qui écrivent des fichiers temporaires fonctionnent sans configuration supplémentaire.

183 261 

184Les commandes non sandboxées héritent de votre `$TMPDIR` shell lorsqu'il est défini, donc pendant que l'isolation du système de fichiers est activée, les commandes sandboxées et non sandboxées résolvent `$TMPDIR` à des répertoires différents. Si votre shell laisse `$TMPDIR` indéfini ou vide, une commande non sandboxée qui référence `$TMPDIR` reçoit votre remplacement [`CLAUDE_CODE_TMPDIR`](/docs/fr/env-vars) ou le répertoire temporaire du système d'exploitation lorsque vous n'en avez pas défini un ou que le remplacement est un chemin long, de sorte que la variable ne se développe pas en une chaîne vide. Pour transmettre des fichiers temporaires entre les deux, écrivez-les plutôt sous le répertoire de travail.262Les commandes hors sandbox héritent du `$TMPDIR` de votre shell lorsqu'il est défini ; ainsi, tant que l'isolation du système de fichiers est activée, les commandes en sandbox et hors sandbox résolvent `$TMPDIR` vers des répertoires différents. Si votre shell laisse `$TMPDIR` non défini ou vide, une commande hors sandbox qui fait référence à `$TMPDIR` reçoit votre valeur de remplacement [`CLAUDE_CODE_TMPDIR`](/docs/fr/env-vars), ou le répertoire temporaire du système d'exploitation si vous n'en avez pas défini ou si la valeur de remplacement est un chemin long, de sorte que la variable ne se développe pas en chaîne vide. Pour échanger des fichiers temporaires entre les deux, écrivez-les plutôt dans le répertoire de travail.

185 263 

186<h2 id="configure-sandboxing">264<h2 id="configure-sandboxing">

187 Configurer le sandboxing265 Configurer le sandboxing

188</h2>266</h2>

189 267 

190Personnalisez le comportement du sandbox via votre fichier `settings.json`. Consultez [Paramètres](/docs/fr/settings-reference#sandbox-settings) pour la référence de configuration complète.268Personnalisez le comportement du sandbox via votre fichier `settings.json`. Consultez [Paramètres](/docs/fr/settings-reference#sandbox-settings) pour la référence complète de configuration.

191 269 

192Par défaut, les commandes sandboxées peuvent écrire dans le répertoire de travail actuel, le répertoire temporaire de la session, et tous les [répertoires que vous avez ajoutés](/docs/fr/permissions#additional-directories-grant-file-access-not-configuration) avec `--add-dir`, `/add-dir`, ou `permissions.additionalDirectories`. Si les commandes de sous-processus comme `kubectl`, `terraform` ou `npm` doivent écrire en dehors de ces répertoires, utilisez `sandbox.filesystem.allowWrite` pour accorder l'accès à des chemins spécifiques :270Par défaut, les commandes en sandbox peuvent écrire dans le répertoire de travail actuel, dans le répertoire temporaire propre à l'utilisateur et dans tous les [répertoires que vous avez ajoutés](/docs/fr/permissions#additional-directories-grant-file-access-not-configuration) avec `--add-dir`, `/add-dir` ou `permissions.additionalDirectories`. Si des commandes de sous-processus comme `kubectl`, `terraform` ou `npm` doivent écrire en dehors de ces répertoires, utilisez `sandbox.filesystem.allowWrite` pour accorder l'accès à des chemins spécifiques :

193 271 

194```json theme={null}272```json theme={null}

195{273{


202}280}

203```281```

204 282 

205Ces chemins sont appliqués au niveau du système d'exploitation, donc toutes les commandes s'exécutant à l'intérieur du sandbox, y compris leurs processus enfants, les respectent. C'est l'approche recommandée lorsqu'un outil a besoin d'un accès en écriture à un emplacement spécifique, plutôt que d'exclure complètement l'outil du sandbox avec `excludedCommands`.283Ces chemins sont appliqués au niveau du système d'exploitation, de sorte que toutes les commandes exécutées dans le sandbox, y compris leurs processus enfants, les respectent. C'est l'approche recommandée lorsqu'un outil a besoin d'un accès en écriture à un emplacement spécifique, plutôt que d'exclure entièrement l'outil du sandbox avec `excludedCommands`.

206 284 

207Lorsque vous définissez le même tableau de système de fichiers dans plusieurs [portées de paramètres](/docs/fr/settings#settings-precedence), Claude Code les fusionne, combinant les chemins de chaque portée plutôt que de remplacer le tableau d'une portée par celui d'une autre.285Lorsque vous définissez le même tableau de système de fichiers dans plusieurs [portées de paramètres](/docs/fr/settings#settings-precedence), Claude Code les fusionne, en combinant les chemins de chaque portée plutôt qu'en remplaçant le tableau d'une portée par celui d'une autre.

208 286 

209Si vous excluez une source avec [`--setting-sources`](/docs/fr/cli-reference) sur la CLI ou [`settingSources`](/docs/fr/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources) dans l'Agent SDK, Claude Code ignore ses entrées `sandbox.filesystem`, ses règles de permission `Edit`, et ses règles de refus `Read` lors de la construction de la configuration du sandbox. Nécessite Claude Code v2.1.246 ou ultérieur.287Si vous excluez une source avec [`--setting-sources`](/docs/fr/cli-reference) dans la CLI ou [`settingSources`](/docs/fr/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources) dans l'Agent SDK, Claude Code ignore ses entrées `sandbox.filesystem`, ses règles de permission `Edit` et ses règles de refus `Read` lors de la construction de la configuration du sandbox. Nécessite Claude Code v2.1.246 ou une version ultérieure.

210 288 

211Lorsque vous modifiez ces listes de système de fichiers pendant une session, Claude Code [applique la modification à la session en cours d'exécution](/docs/fr/settings#when-edits-take-effect), donc la prochaine commande sandboxée s'exécute sous les nouveaux chemins.289Lorsque vous modifiez ces listes de système de fichiers au cours d'une session, Claude Code [applique la modification à la session en cours](/docs/fr/settings#when-edits-take-effect), de sorte que la prochaine commande en sandbox s'exécute avec les nouveaux chemins.

212 290 

213Les préfixes de chemin contrôlent la façon dont les chemins sont résolus :291Les chemins de système de fichiers du sandbox suivent les conventions standard : `/tmp/build` est absolu et `~/.kube` est relatif à votre répertoire personnel. Cette syntaxe diffère de celle des [règles de permission Read et Edit](/docs/fr/permissions#read-and-edit), qui utilisent `//path` pour les chemins absolus et `/path` pour les chemins relatifs au projet. Pour les chemins relatifs, les barres obliques finales et les caractères génériques, consultez [Préfixes de chemin du sandbox](/docs/fr/settings-reference#sandbox-path-prefixes).

214 292 

215| Préfixe | Signification | Exemple |293Vous pouvez également refuser l'accès en écriture ou en lecture à l'aide de `sandbox.filesystem.denyWrite` et `sandbox.filesystem.denyRead`, et réautoriser des chemins spécifiques au sein d'une zone refusée à l'aide de `sandbox.filesystem.allowRead`. Lorsque des règles de lecture se chevauchent, c'est la règle au chemin le plus restreint qui s'applique :

216| :- | :- | :- |

217| `/` | Chemin absolu à partir de la racine du système de fichiers | `/tmp/build` reste `/tmp/build` |

218| `~/` | Relatif au répertoire personnel | `~/.kube` devient `$HOME/.kube` |

219| `./` ou pas de préfixe | Relatif à la racine du projet pour les paramètres du projet, ou à `~/.claude` pour les paramètres utilisateur | `./output` dans `.claude/settings.json` se résout en `<project-root>/output` |

220 

221Cette syntaxe diffère des [règles de permission Read et Edit](/docs/fr/permissions#read-and-edit), qui utilisent `//path` pour absolu et `/path` pour relatif au projet. Les chemins du système de fichiers du sandbox utilisent les conventions standard : `/tmp/build` est absolu. Pour savoir comment Claude Code traite une barre oblique finale ou un caractère générique dans ces chemins, consultez [Préfixes de chemin du sandbox](/docs/fr/settings-reference#sandbox-path-prefixes).

222 294 

223Vous pouvez également refuser l'accès en écriture ou en lecture en utilisant `sandbox.filesystem.denyWrite` et `sandbox.filesystem.denyRead`, et réautoriser des chemins spécifiques dans une région refusée en utilisant `sandbox.filesystem.allowRead`. Lorsque les règles de lecture se chevauchent, le chemin le plus spécifique gagne :295| Exemples de règles | Résultat |

224 

225| Règles d'exemple | Résultat |

226| :- | :- |296| :- | :- |

227| `"denyRead": ["~/"]` avec `"allowRead": ["~/projects"]` | `~/projects` est lisible et le reste du répertoire personnel reste bloqué. L'autorisation plus étroite réouvre cette partie de la région refusée |297| `"denyRead": ["~/"]` avec `"allowRead": ["~/projects"]` | `~/projects` est lisible et le reste du répertoire personnel reste bloqué. L'autorisation plus restreinte rouvre cette partie de la zone refusée |

228| `"allowRead": ["~/"]` avec `"denyRead": ["~/.env"]` | `~/.env` reste bloqué et le reste du répertoire personnel est lisible. Le refus tient à l'intérieur d'une autorisation plus large, donc une autorisation large ne peut pas réexposer silencieusement un secret |298| `"allowRead": ["~/"]` avec `"denyRead": ["~/.env"]` | `~/.env` reste bloqué et le reste du répertoire personnel est lisible. Le refus tient à l'intérieur d'une autorisation plus large, de sorte qu'une autorisation large ne peut pas réexposer silencieusement un secret |

229| `"allowRead": ["~/"]` avec `"denyRead": ["~/**/.env"]` | Chaque `.env` sous le répertoire personnel reste bloqué et le reste est lisible. Un [refus avec caractère générique](/docs/fr/settings-reference#sandbox-path-prefixes) tient à l'intérieur d'une autorisation plus large de la même façon qu'un chemin exact |299| `"allowRead": ["~/"]` avec `"denyRead": ["~/**/.env"]` | Chaque fichier `.env` situé sous le répertoire personnel reste bloqué et le reste est lisible. Un [refus avec caractère générique](/docs/fr/settings-reference#sandbox-path-prefixes) tient à l'intérieur d'une autorisation plus large de la même manière qu'un chemin exact |

230 300 

231L'exemple ci-dessous bloque la lecture de l'ensemble du répertoire personnel tout en autorisant toujours les lectures du projet actuel. Placez-le dans le `.claude/settings.json` de votre projet, car le chemin relatif `.` se résout à la racine du projet uniquement lorsque la configuration se trouve dans les paramètres du projet :301L'exemple ci-dessous bloque la lecture de l'ensemble du répertoire personnel tout en autorisant la lecture du projet actuel. Placez-le dans le fichier `.claude/settings.json` de votre projet, car le chemin relatif `.` ne se résout à la racine du projet que lorsque la configuration se trouve dans les paramètres de projet :

232 302 

233```json theme={null}303```json theme={null}

234{304{


242}312}

243```313```

244 314 

245Si vous aviez placé la même configuration dans `~/.claude/settings.json`, `.` se résoudrait à `~/.claude` à la place, et les fichiers du projet resteraient bloqués par la règle `denyRead`.315Si vous placiez la même configuration dans `~/.claude/settings.json`, `.` se résoudrait plutôt en `~/.claude`, et les fichiers du projet resteraient bloqués par la règle `denyRead`.

316 

317Pour refuser aux commandes en sandbox l'accès en lecture aux répertoires personnels et aux volumes montés tout en gardant les répertoires de travail lisibles, définissez [`permissions.blockReadsOutsideWorkingDirectories`](/docs/fr/settings-reference#permissions-blockreadsoutsideworkingdirectories) au lieu d'écrire des règles de chemin.

318 

319<h3 id="run-commands-outside-the-sandbox-with-excludedcommands">

320 Exécuter des commandes en dehors du sandbox avec `excludedCommands`

321</h3>

322 

323Indiquez un motif de commande dans [`sandbox.excludedCommands`](/docs/fr/settings-reference#sandbox-excludedcommands) pour exécuter les commandes correspondantes en dehors du sandbox, c'est-à-dire sans restrictions de système de fichiers ni proxy réseau. Utilisez-le pour un outil qui ne peut pas fonctionner dans le sandbox et auquel vous faites confiance avec votre accès complet. Un outil qui a besoin d'un répertoire ou d'un hôte supplémentaire peut fonctionner avec `allowWrite` ou `allowedDomains`, qui maintiennent la commande dans le sandbox.

324 

325Cet exemple sort les commandes `docker compose` du sandbox. Enregistrez-le dans `~/.claude/settings.json` pour l'appliquer à tous vos projets :

326 

327```json theme={null}

328{

329 "sandbox": {

330 "enabled": true,

331 "excludedCommands": ["docker compose *"]

332 }

333}

334```

335 

336Claude Code compare vos entrées à chaque appel Bash et Monitor. Un appel correspond à la ligne de commande complète envoyée par Claude, qui peut enchaîner plusieurs commandes. Les règles suivantes déterminent si un appel sort du sandbox :

337 

338* **Terminez le motif par ` *`** : les entrées utilisent la même syntaxe qu'une [règle de permission](/docs/fr/permissions#permission-rule-syntax) `Bash(...)`, où un motif sans caractère générique correspond exactement. `docker` ne correspond qu'à `docker` sans arguments. `docker *` correspond à `docker` avec ou sans arguments

339* **Chaque commande de l'appel doit correspondre** : `npm ci && docker compose build` reste dans le sandbox, sauf si une autre entrée couvre `npm ci`

340* **Claude Code compare le texte de l'appel** : un script ou une cible `make` qui appelle `docker` en interne ne correspond pas, pas plus que `/usr/local/bin/docker`

341* **Certains appels restent dans le sandbox** : une redirection vers un fichier, un `cd` ou une substitution de commande comme `$(...)` maintient l'appel entier dans le sandbox. L'[entrée de référence](/docs/fr/settings-reference#sandbox-excludedcommands) liste d'autres appels qui restent dans le sandbox

342* **L'endroit où vous enregistrez l'entrée peut compter** : tant que le sandbox est [exigé par l'administrateur](#repository-settings-under-an-admin-required-sandbox), Claude Code ignore les entrées de `.claude/settings.json` et `.claude/settings.local.json`

343 

344Une commande exclue passe par le flux de permissions habituel :

246 345 

247Pour refuser aux commandes sandboxées l'accès en lecture aux répertoires personnels et aux volumes montés tout en gardant les répertoires de travail lisibles, définissez [`permissions.blockReadsOutsideWorkingDirectories`](/docs/fr/settings-reference#permissions-blockreadsoutsideworkingdirectories) à la place d'écrire des règles de chemin.346* Les [commandes en lecture seule](/docs/fr/permissions#read-only-commands) et les commandes couvertes par vos règles d'autorisation s'exécutent sans demande de permission

347* En mode auto, le classifieur examine les autres commandes exclues

348* En mode `bypassPermissions`, une commande exclue s'exécute sans demande de permission, sauf si une règle de demande lui correspond

349 

350Pour confirmer qu'une entrée correspond, passez en mode Manual et demandez à Claude d'exécuter une commande correspondante qui modifie quelque chose, comme `docker compose up -d`. La demande de permission s'intitule « Bash command (unsandboxed) ».

351 

352<Warning>

353 Une commande exclue s'exécute avec votre accès complet. Une entrée large comme `docker *` couvre tout ce que cet outil peut faire. Si vous écrivez un motif qui couvre un interpréteur, un script situé dans votre répertoire de travail ou un outil qui agit sur un fichier qui s'y trouve, comme le fait `docker compose` avec son fichier compose, Claude peut écrire ce fichier puis l'exécuter en dehors du sandbox. Un motif plus restreint limite ce que Claude peut exécuter en dehors du sandbox.

354</Warning>

248 355 

249<h3 id="disable-filesystem-isolation">356<h3 id="disable-filesystem-isolation">

250 Désactiver l'isolation du système de fichiers357 Désactiver l'isolation du système de fichiers

251</h3>358</h3>

252 359 

253Définissez `sandbox.filesystem.disabled` à `true` pour ignorer l'isolation du système de fichiers tout en conservant l'isolation réseau. L'exemple ci-dessous désactive l'isolation du système de fichiers tout en conservant une liste d'autorisation de domaines réseau :360Définissez `sandbox.filesystem.disabled` sur `true` pour ignorer l'isolation du système de fichiers tout en conservant l'isolation réseau. L'exemple ci-dessous désactive l'isolation du système de fichiers tout en conservant une liste d'autorisation de domaines réseau :

254 361 

255```json theme={null}362```json theme={null}

256{363{


266}373}

267```374```

268 375 

269Le sandbox a deux couches indépendantes : [l'isolation du système de fichiers](#filesystem-isolation) contrôle les chemins que les commandes sandboxées peuvent lire et écrire, et [l'isolation réseau](#network-isolation) contrôle les domaines qu'elles peuvent atteindre. Avec la couche du système de fichiers désactivée, les commandes sandboxées obtiennent un accès en lecture et écriture sans restriction au système de fichiers hôte, tandis que leur sortie réseau reste limitée à vos domaines autorisés. Désactivez la couche lorsque vous sandboxez pour contrôler où les commandes se connectent plutôt que ce qu'elles écrivent.376Le sandbox comporte deux couches indépendantes : l'[isolation du système de fichiers](#filesystem-isolation) contrôle les chemins que les commandes en sandbox peuvent lire et écrire, et l'[isolation réseau](#network-isolation) contrôle les domaines qu'elles peuvent atteindre. Lorsque la couche système de fichiers est désactivée, les commandes en sandbox obtiennent un accès illimité en lecture et en écriture au système de fichiers de l'hôte, tandis que leur trafic réseau sortant reste limité à vos domaines autorisés. Désactivez cette couche lorsque vous utilisez le sandbox pour contrôler où les commandes se connectent plutôt que ce qu'elles écrivent.

270 377 

271Le paramètre est désactivé par défaut et s'applique sur les plateformes où le sandbox s'exécute : macOS, Linux et WSL2. Nécessite Claude Code v2.1.216 ou ultérieur.378`sandbox.filesystem.disabled` a `false` comme valeur par défaut. Nécessite Claude Code v2.1.216 ou une version ultérieure.

272 379 

273<Warning>380<Warning>

274 Avec l'isolation du système de fichiers désactivée et les commandes auto-autorisées, une commande sandboxée peut écrire des fichiers que les commandes ultérieures exécutent ou lisent, comme les fichiers de démarrage du shell, les exécutables sur `$PATH`, ou `~/.claude/settings.json`, et les utiliser pour élargir son propre accès à la prochaine exécution. Définissez `filesystem.disabled` à `true` uniquement pour les charges de travail auxquelles vous faites confiance pour ne pas escalader leur propre accès. Verrouiller les domaines réseau avec [`allowManagedDomainsOnly`](#keep-developers-from-widening-the-policy) réduit le risque mais ne l'élimine pas, car ce verrouillage s'applique uniquement aux commandes s'exécutant à l'intérieur du sandbox.381 Lorsque l'isolation du système de fichiers est désactivée et que les commandes sont autorisées automatiquement, une commande en sandbox peut écrire des fichiers que des commandes ultérieures exécutent ou lisent, comme les fichiers de démarrage du shell, les exécutables présents dans `$PATH` ou `~/.claude/settings.json`, et s'en servir pour élargir son propre accès lors de l'exécution suivante. Définissez `filesystem.disabled` sur `true` uniquement pour des charges de travail dont vous êtes certain qu'elles n'élargiront pas leur propre accès. Verrouiller les domaines réseau avec [`allowManagedDomainsOnly`](#keep-developers-from-widening-the-policy) réduit le risque sans le supprimer, car ce verrou ne s'applique qu'aux commandes exécutées dans le sandbox.

275</Warning>382</Warning>

276 383 

277<h4 id="which-settings-can-disable-it">384<h4 id="which-settings-can-disable-it">

278 Quels paramètres peuvent le désactiver385 Quels paramètres peuvent la désactiver

279</h4>386</h4>

280 387 

281Parce que désactiver l'isolation du système de fichiers élargit ce que les commandes sandboxées peuvent faire, Claude Code honore `filesystem.disabled` uniquement à partir de ces sources de paramètres :388Comme la désactivation de l'isolation du système de fichiers élargit ce que les commandes en sandbox peuvent faire, Claude Code ne prend en compte `filesystem.disabled` qu'à partir des sources de paramètres suivantes :

282 389 

283* Les paramètres utilisateur, les paramètres gérés et l'indicateur CLI `--settings` peuvent le définir. Les paramètres du projet dans `.claude/settings.json` et `.claude/settings.local.json` ne peuvent pas, donc un projet extrait ne peut pas désactiver l'isolation du système de fichiers.390* Les paramètres utilisateur, les paramètres gérés et le flag CLI `--settings` peuvent le définir. Les paramètres de projet dans `.claude/settings.json` et `.claude/settings.local.json` ne le peuvent pas, de sorte qu'un projet récupéré ne peut pas désactiver l'isolation du système de fichiers.

284* Lorsque les paramètres gérés configurent `sandbox.filesystem` du tout, ou listent une entrée `sandbox.credentials.files` avec `"mode": "deny"`, seuls les paramètres gérés peuvent définir la clé. Cela maintient les restrictions du système de fichiers déployées par l'administrateur en vigueur ; pour assouplir un tel déploiement, définissez `"disabled": true` dans les paramètres gérés.391* Lorsque les paramètres gérés configurent `sandbox.filesystem` de quelque manière que ce soit, ou listent une entrée `sandbox.credentials.files` avec `"mode": "deny"`, seuls les paramètres gérés peuvent définir la clé. Cela maintient en vigueur les restrictions de système de fichiers déployées par l'administrateur ; pour assouplir un tel déploiement, définissez `"disabled": true` dans les paramètres gérés.

285* Lorsque [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/fr/env-vars) est défini, Claude Code ignore `filesystem.disabled` de chaque source, y compris les paramètres gérés, et maintient l'isolation du système de fichiers activée.392* Lorsque [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/fr/env-vars) est défini, Claude Code ignore `filesystem.disabled` quelle que soit la source, y compris les paramètres gérés, et maintient l'isolation du système de fichiers activée.

286 393 

287Qu'une entrée `credentials.files` gérée épingle `filesystem.disabled`, verrouillant la clé aux paramètres gérés pour que les développeurs ne puissent pas désactiver l'isolation du système de fichiers, dépend du `mode` de l'entrée et de ce qui se passe à l'entrée lorsque le sandbox démarre :394Une entrée `mask` [valide](/docs/fr/settings-reference#invalid-credential-entries-in-managed-settings) ne verrouille pas la clé, même lorsque Claude Code [se rabat sur `deny`](#mask-credential-files) pour cette entrée au démarrage. Indiquez un chemin qui ne peut pas être masqué, comme un répertoire d'identifiants, sous forme d'entrée `deny` explicite dans les paramètres gérés, ce qui verrouille la clé.

288 

289| Entrée gérée | Épingle `filesystem.disabled` | Ce qui protège le fichier lorsque l'isolation est désactivée |

290| - | - | - |

291| `"mode": "deny"` | Oui | Rien : le bloc de lecture fait partie de la couche du système de fichiers |

292| `"mode": "mask"`, appliqué comme un masque | Non | Le masquage lui-même : la [copie sentinelle et le proxy](#mask-credential-files) sur Linux et WSL2, les propres règles de lecture du sandbox sur macOS |

293| `"mode": "mask"`, [revenu à `deny`](#mask-credential-files) à la configuration | Non | Rien, comme `deny`. Listez un chemin qui ne peut pas être masqué, comme un répertoire, comme une entrée `deny` explicite, qui épingle la clé |

294| `"mode": "mask"`, [dégradé à `deny` par validation](/docs/fr/managed-settings#invalid-entries-in-managed-settings) | Oui, comme un `deny` explicite | Rien, comme `deny` |

295 

296Un retour se produit lorsque le sandbox démarre, après que Claude Code ait déjà lu les paramètres sur lesquels la vérification de l'épingle s'exécute, donc une entrée revenue n'épingle jamais. La validation réécrit une entrée invalide en `deny` pendant le chargement des paramètres, donc une entrée dégradée épingle comme celle que vous avez écrite en `deny`.

297 395 

298<h4 id="what-changes-when-filesystem-isolation-is-off">396<h4 id="what-changes-when-filesystem-isolation-is-off">

299 Ce qui change lorsque l'isolation du système de fichiers est désactivée397 Ce qui change lorsque l'isolation du système de fichiers est désactivée

300</h4>398</h4>

301 399 

302Définir `filesystem.disabled` lève les protections que la couche du système de fichiers elle-même applique. Les protections que d'autres couches appliquent continuent de s'appliquer :400Définir `filesystem.disabled` lève les protections que la couche système de fichiers applique elle-même. Les protections appliquées par d'autres couches restent en vigueur :

303 401 

304| Protection | Avec l'isolation du système de fichiers désactivée |402| Protection | Avec l'isolation du système de fichiers désactivée |

305| - | - |403| - | - |

306| `filesystem.denyRead` et [`credentials.files`](#protect-credentials) blocs de lecture `deny` | Non appliqué. La couche du système de fichiers applique les deux |404| Blocages en lecture `filesystem.denyRead` et `deny` de [`credentials.files`](#protect-credentials) | Non appliqués. La couche système de fichiers applique les deux |

307| `credentials.envVars` entrées `deny` et `mask` | Appliqué. Le nettoyage des variables d'environnement est indépendant de la couche du système de fichiers |405| Entrées `deny` et `mask` de `credentials.envVars` | Appliquées. Le nettoyage des variables d'environnement est indépendant de la couche système de fichiers |

308| [`credentials.files` entrées `mask`](#mask-credential-files) appliquées comme des masques | Appliqué : le masquage est indépendant de la couche du système de fichiers. Une entrée qui [est revenue à `deny`](#mask-credential-files) n'est pas appliquée, comme n'importe quelle entrée `deny` |406| [Entrées `mask` de `credentials.files`](#mask-credential-files) appliquées comme masques | Appliquées : le masquage est indépendant de la couche système de fichiers. Une entrée [rabattue sur `deny`](#mask-credential-files) n'est pas appliquée, comme toute entrée `deny` |

309 407 

310Deux autres choses changent :408Deux autres éléments changent :

311 409 

312* Les commandes sandboxées héritent du `$TMPDIR` de votre shell au lieu du répertoire temporaire de la session, car chaque répertoire temporaire est inscriptible et Claude Code ne redirige plus les commandes vers celui de la session.410* Les commandes en sandbox héritent du `$TMPDIR` de votre shell au lieu du répertoire temporaire propre à l'utilisateur, car tous les répertoires temporaires sont accessibles en écriture et Claude Code ne redirige plus les commandes vers celui propre à l'utilisateur.

313 411 

314 Sur Linux, la variable est souvent non définie dans le shell parent. Le guide de l'outil Bash indique à Claude de créer des répertoires de travail avec `mktemp -d` au lieu de compter sur `$TMPDIR`.412 Sous Linux, cette variable n'est souvent pas définie dans le shell parent. Les consignes de l'outil Bash indiquent à Claude de créer des répertoires de travail temporaires avec `mktemp -d` plutôt que de s'appuyer sur `$TMPDIR`.

315* [`autoAllowBashIfSandboxed`](/docs/fr/settings-reference#sandbox-autoallowbashifsandboxed) continue de défaut à `true`, donc les commandes sandboxées continuent de s'exécuter sans invites. Définissez-le à `false` pour inviter les commandes sandboxées.413* [`autoAllowBashIfSandboxed`](/docs/fr/settings-reference#sandbox-autoallowbashifsandboxed) a toujours `true` comme valeur par défaut, de sorte que les commandes en sandbox continuent de s'exécuter sans demande de permission. Définissez-le sur `false` pour obtenir une demande de permission pour les commandes en sandbox.

316 414 

317<h3 id="protect-credentials">415<h3 id="protect-credentials">

318 Protéger les identifiants416 Protéger les identifiants

319</h3>417</h3>

320 418 

321Le paramètre `sandbox.credentials` déclare les fichiers d'identifiants et les variables d'environnement à protéger des commandes sandboxées. Chaque entrée nomme un chemin de fichier ou une variable d'environnement et un `mode`. Le bloc `credentials` dédié maintient les règles d'identifiants groupées ensemble et séparées des règles générales du système de fichiers.419Le paramètre `sandbox.credentials` déclare les fichiers d'identifiants et les variables d'environnement à protéger des commandes en sandbox. Chaque entrée désigne un chemin de fichier ou une variable d'environnement ainsi qu'un `mode`. Le bloc dédié `credentials` regroupe les règles relatives aux identifiants et les maintient séparées des règles générales de système de fichiers.

322 420 

323Pour les entrées avec `"mode": "deny"`, les chemins de fichiers sont refusés pour les lectures à l'intérieur du sandbox, la même restriction que celle appliquée par `filesystem.denyRead`, et les variables d'environnement sont supprimées avant chaque exécution de commande sandboxée. La protection des fichiers fait partie de la couche du système de fichiers, donc elle ne s'applique pas si vous [désactivez l'isolation du système de fichiers](#disable-filesystem-isolation) ; la protection des variables d'environnement continue de s'appliquer.421Pour les entrées avec `"mode": "deny"`, la lecture des chemins de fichiers est refusée dans le sandbox, soit la même restriction que celle appliquée par `filesystem.denyRead`, et les variables d'environnement sont supprimées avant l'exécution de chaque commande en sandbox. La protection des fichiers fait partie de la couche système de fichiers, elle ne s'applique donc pas si vous [désactivez l'isolation du système de fichiers](#disable-filesystem-isolation) ; la protection des variables d'environnement, elle, continue de s'appliquer.

324 422 

325L'exemple ci-dessous bloque les lectures du fichier d'identifiants AWS et du répertoire SSH et supprime `GITHUB_TOKEN` et `NPM_TOKEN` de l'environnement des commandes sandboxées :423L'exemple ci-dessous bloque la lecture du fichier d'identifiants AWS et du répertoire SSH, et supprime `GITHUB_TOKEN` et `NPM_TOKEN` de l'environnement des commandes en sandbox :

326 424 

327```json theme={null}425```json theme={null}

328{426{


342}440}

343```441```

344 442 

345Les entrées de variables d'environnement et les entrées de fichiers acceptent également `"mode": "mask"`, décrit sous [Masquer les identifiants](#mask-credentials).443Les entrées de variables d'environnement et les entrées de fichiers acceptent également `"mode": "mask"`, décrit dans [Masquer les identifiants](#mask-credentials).

346 444 

347Les chemins de fichiers suivent les mêmes [règles de préfixe](/docs/fr/settings-reference#sandbox-path-prefixes) que les paramètres `sandbox.filesystem.*`.445Les chemins de fichiers suivent les mêmes [règles de préfixe](/docs/fr/settings-reference#sandbox-path-prefixes) que les paramètres `sandbox.filesystem.*`.

348 446 

349Claude Code fusionne les entrées `deny` de chaque [portée de paramètres](/docs/fr/settings#settings-precedence) que la session charge. Une entrée `deny` ne fait que réduire l'accès, donc n'importe quelle portée peut en ajouter une, mais aucune portée ne peut en supprimer une qu'une autre portée a ajoutée.447Claude Code fusionne les entrées `deny` de chaque [portée de paramètres](/docs/fr/settings#settings-precedence) chargée par la session. Une entrée `deny` ne fait jamais que restreindre l'accès, donc toute portée peut en ajouter une, mais aucune portée ne peut en supprimer une ajoutée par une autre portée.

350 448 

351Lorsque vous [excluez une source de paramètres](#configure-sandboxing) :449Lorsque vous [excluez une source de paramètres](#configure-sandboxing) :

352 450 

353* **Paramètres du projet ou locaux** : Claude Code n'applique aucune de leurs entrées `credentials`. Nécessite Claude Code v2.1.246 ou ultérieur.451* **Paramètres de projet ou locaux** : Claude Code n'applique aucune de leurs entrées `credentials`. Nécessite Claude Code v2.1.246 ou une version ultérieure.

354* **Paramètres utilisateur** : Claude Code applique toujours les entrées `deny` dans `~/.claude/settings.json` et maintient ses [entrées `mask` de fichier](#mask-credential-files) comme des restrictions, mais supprime ses [entrées `mask` de variable d'environnement](#mask-environment-variables).452* **Paramètres utilisateur** : Claude Code applique toujours les entrées `deny` de `~/.claude/settings.json` et conserve ses [entrées `mask` de fichiers](#mask-credential-files) comme restrictions qui n'autorisent plus le proxy à substituer la valeur réelle, mais abandonne ses [entrées `mask` de variables d'environnement](#mask-environment-variables).

355 453 

356Il n'y a pas de liste de refus d'identifiants intégrée, donc seuls les fichiers et les variables que vous listez sont restreints.454Il n'existe aucune liste de refus d'identifiants intégrée : seuls les fichiers et variables que vous listez sont restreints.

357 455 

358`sandbox.credentials` affecte uniquement les commandes Bash sandboxées. Pour supprimer les identifiants de tous les sous-processus indépendamment du sandboxing, définissez [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/fr/env-vars).456`sandbox.credentials` n'affecte que les commandes Bash en sandbox. Pour retirer les identifiants de tous les sous-processus, qu'ils soient en sandbox ou non, définissez [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/fr/env-vars).

359 457 

360<h3 id="mask-credentials">458<h3 id="mask-credentials">

361 Masquer les identifiants459 Masquer les identifiants

362</h3>460</h3>

363 461 

364Le masquage va plus loin qu'une entrée `deny` sous [Protéger les identifiants](#protect-credentials). Au lieu de bloquer un identifiant, Claude Code montre aux commandes sandboxées un espace réservé, la sentinelle, et le [proxy sandbox](#network-isolation) échange la vraie valeur sur les requêtes sortantes vers les hôtes que vous autorisez. Pour les fichiers, la substitution est le comportement de Linux et WSL2 ; [macOS bloque le fichier à la place](#mask-credential-files).462Lorsque vous masquez un identifiant, Claude Code présente aux commandes en sandbox une valeur de substitution propre à la session, appelée la sentinelle, et le [proxy du sandbox](#network-isolation) substitue la valeur réelle dans les requêtes sortantes vers les hôtes que vous autorisez. Une entrée `deny` décrite dans [Protéger les identifiants](#protect-credentials) bloque plutôt l'identifiant. Pour les fichiers sous macOS, Claude Code [bloque plutôt le fichier](#mask-credential-files) au lieu de le masquer.

365 

366<h4 id="mask-environment-variables">

367 Masquer les variables d'environnement

368</h4>

369 

370`"mode": "mask"` protège un identifiant tout en gardant les outils qui s'authentifient avec lui fonctionnels. `deny` supprime complètement la variable, ce qui casse également les outils qui en ont besoin, comme `gh` ou `npm`. Nécessite Claude Code v2.1.199 ou ultérieur.

371 463 

372Avec `mask`, la commande sandboxée voit une valeur sentinelle par session au lieu de la vraie. Chaque entrée `mask` peut lister `injectHosts`, les hôtes auxquels la vraie valeur est autorisée à atteindre. Lorsqu'une requête quitte le sandbox pour l'un d'eux, le [proxy sandbox](#network-isolation) remplace la sentinelle par la vraie valeur. La commande et tout ce qu'elle enregistre ne détiennent jamais l'identifiant réel, mais ses requêtes s'authentifient toujours.464Le masquage des variables d'environnement nécessite Claude Code v2.1.199 ou une version ultérieure. La référence [`sandbox.credentials`](/docs/fr/settings-reference#sandbox-credentials) liste tous les champs.

373 465 

374Le proxy substitue l'identifiant à l'intérieur du contenu des requêtes, donc il doit les voir. Définissez [`network.tlsTerminate`](/docs/fr/settings-reference#sandbox-network-tlsterminate) pour que le proxy termine TLS lui-même.466Le masquage nécessite les éléments suivants :

375 467 

376Sans cela, le masquage échoue fermé : la commande voit toujours seulement la sentinelle, mais la sentinelle atteint le serveur inchangée et l'authentification échoue. Claude Code signale cette mauvaise configuration au démarrage.468* **La terminaison TLS** : le proxy substitue la valeur réelle dans le contenu des requêtes, il doit donc pouvoir le voir. Définissez [`network.tlsTerminate`](/docs/fr/settings-reference#sandbox-network-tlsterminate) pour que le proxy termine lui-même le TLS. Sans cela, le masquage échoue sans rien exposer : la commande ne voit toujours que la sentinelle, mais celle-ci atteint le serveur sans modification et l'authentification échoue. Claude Code signale cette erreur de configuration au démarrage.

469* **Une destination autorisée** : chaque entrée `mask` peut lister des `injectHosts`, les hôtes que la valeur réelle est autorisée à atteindre. Le proxy n'injecte que sur les connexions admises par la [liste d'autorisation de domaines](#network-isolation), de sorte que chaque hôte `injectHosts` doit également être accessible via `network.allowedDomains`. Pour une entrée `mask` sans `injectHosts`, le proxy substitue la valeur réelle dans les requêtes vers tous les hôtes de `network.allowedDomains`.

470* **Une portée de paramètres de confiance** : le masquage autorise le proxy à envoyer votre identifiant réel quelque part ; Claude Code ne prend donc en compte les entrées `mask`, `network.tlsTerminate`, [`credentials.allowPlaintextInject`](/docs/fr/settings-reference#sandbox-credentials-allowplaintextinject), `awsPairs` et `sigv4` qu'à partir des paramètres utilisateur, des paramètres gérés et du flag `--settings`. Il les ignore dans le fichier `.claude/settings.json` ou `.claude/settings.local.json` d'un dépôt. Lorsque votre administrateur fournit des entrées `mask`, `network.tlsTerminate` ou `credentials.allowPlaintextInject` via des paramètres gérés par le serveur, ceux-ci comptent parmi les [paramètres nécessitant une approbation](/docs/fr/server-managed-settings#security-approval-dialogs).

377 471 

378La substitution couvre les en-têtes et les corps de requête. Les requêtes qui s'authentifient avec une signature dérivée de l'identifiant, plutôt que l'identifiant lui-même, ont besoin d'une re-signature au proxy ; [Re-signer les requêtes AWS](#re-sign-aws-requests) couvre comment cela fonctionne pour AWS.472<h4 id="mask-environment-variables">

473 Masquer les variables d'environnement

474</h4>

379 475 

380Le proxy injecte uniquement sur les connexions que la [liste d'autorisation de domaines](#network-isolation) admet, donc chaque destination `injectHosts` doit également être accessible via `network.allowedDomains`.476Pour masquer une variable d'environnement, définissez `"mode": "mask"` sur son entrée `credentials.envVars`. La commande et tout ce qu'elle journalise ne détiennent jamais l'identifiant réel, mais ses requêtes s'authentifient quand même. Lorsque la même variable est listée avec `deny` dans une portée quelconque, `deny` est prioritaire.

381 477 

382L'exemple ci-dessous masque deux tokens. `GH_TOKEN` est substitué uniquement sur les requêtes à `api.github.com`, tandis que `NPM_TOKEN` n'a pas de `injectHosts` et est substitué sur les requêtes à chaque hôte dans `network.allowedDomains`.478Cet exemple masque deux jetons. `GH_TOKEN` n'est substitué que dans les requêtes vers `api.github.com`, tandis que `NPM_TOKEN` n'a pas d'`injectHosts` et est substitué dans les requêtes vers tous les hôtes de `network.allowedDomains` :

383 479 

384```json theme={null}480```json theme={null}

385{481{


399}495}

400```496```

401 497 

402<span id="ipv6-destinations-in-injecthosts" />Épellez une destination IPv6 différemment dans les deux listes, car chaque liste a son propre matcher :498Par défaut, le masquage remplace la valeur entière. Pour une valeur structurée, comme une chaîne de connexion `DATABASE_URL` ou un JWT, utilisez les [champs `extract`, `decode`, `maskClaims` et `onExtractNoMatch`](/docs/fr/settings-reference#sandbox-credentials-envvars) afin que les outils qui analysent la valeur continuent de fonctionner.

403 

404* **`network.allowedDomains`** : la [forme entre crochets que les listes de domaines utilisent](#ipv6-addresses-in-domain-lists), comme `"[::1]"`. Le proxy vérifie cette liste pour admettre la connexion.

405* **`injectHosts`** : l'adresse nue dans sa forme canonique compressée, comme `"::1"` ou `"2001:db8::1"`. Le proxy compare chaque entrée à l'adresse de destination nue de la connexion, en ignorant les ports, donc une épellation entre crochets, avec ID de zone, ou compressée différemment ne correspond jamais et le proxy n'injecte jamais l'identifiant là.

406 

407`claude doctor` signale les entrées `injectHosts` qui ne peuvent jamais correspondre avec l'avertissement `Sandbox credential injectHosts entries can never match their destination`. Cette vérification nécessite Claude Code v2.1.229 ou ultérieur.

408 

409Contrairement à `deny`, le masquage autorise le proxy à envoyer votre identifiant réel aux hôtes listés, donc Claude Code l'honore uniquement à partir des paramètres que vous ou votre administrateur contrôlez : les paramètres utilisateur, les paramètres gérés et l'indicateur CLI `--settings`. Claude Code ignore les entrées `mask` dans le `.claude/settings.json` ou `.claude/settings.local.json` d'un référentiel. Dans ces fichiers, il ignore également `network.tlsTerminate` et [`credentials.allowPlaintextInject`](/docs/fr/settings-reference#sandbox-credentials-allowplaintextinject), le paramètre qui permet au proxy d'injecter des identifiants dans les requêtes non chiffrées. Si vous [excluez les paramètres utilisateur](#configure-sandboxing), Claude Code supprime également les entrées `mask` de variable d'environnement dans `~/.claude/settings.json`.

410 

411Lorsque votre administrateur fournit des entrées `mask`, `network.tlsTerminate`, ou `credentials.allowPlaintextInject` via les paramètres gérés par le serveur, ils comptent comme [paramètres qui nécessitent une approbation](/docs/fr/server-managed-settings#security-approval-dialogs).

412 

413Lorsque la même variable est listée avec `deny` dans n'importe quelle portée, `deny` prend la priorité.

414 499 

415Le masquage remplace la valeur entière de la variable par défaut, ce qui convient à un token nu. Les champs d'entrée optionnels, qui nécessitent Claude Code v2.1.224 ou ultérieur, gèrent les valeurs avec structure :500<span id="ipv6-destinations-in-injecthosts" />Pour une destination IPv6, écrivez l'adresse différemment dans les deux listes :

416 501 

417* `extract` : une expression régulière que Claude Code applique sur la valeur, en remplaçant uniquement le texte capturé par le groupe 1 de chaque correspondance, donc un outil qui analyse la valeur, comme une chaîne de connexion `DATABASE_URL`, continue de fonctionner à l'intérieur du sandbox. Le motif doit contenir au moins un groupe de capture.502* **`network.allowedDomains`** : la forme entre crochets, comme `"[::1]"`

418* `onExtractNoMatch` contrôle ce qui se passe lorsque le motif ne correspond à rien :503* **`injectHosts`** : l'adresse nue dans sa forme canonique compressée, comme `"::1"`

419 * `warn`, la valeur par défaut, avertit et transmet la variable sans masque

420 * `deny` désactive la variable à l'intérieur du sandbox

421 * `error` arrête la configuration du sandbox jusqu'à ce que vous corrigiez la configuration

422* `decode: "jwt"` : pour une variable contenant un JSON Web Token (JWT). Claude Code vérifie que la valeur est un JWT et la remplace par un faux token structurellement valide, donc le code à l'intérieur du sandbox qui décode le token continue de fonctionner. Ajoutez `maskClaims` pour lister les revendications de charge utile de haut niveau à masquer individuellement au lieu de remplacer le token entier ; les autres revendications restent lisibles. Lorsque la valeur ne se vérifie pas comme un JWT, ou qu'aucune revendication listée ne correspond, Claude Code transmet la variable sans masque avec un avertissement. `decode` ne peut pas être combiné avec `extract`.

423 504 

424Consultez les [lignes `credentials.envVars[]` dans la référence des paramètres](/docs/fr/settings-reference#sandbox-settings) pour la liste complète des champs.505Le proxy compare chaque entrée `injectHosts` à l'adresse de destination nue de la connexion, en ignorant les ports, de sorte qu'une écriture entre crochets, avec identifiant de zone ou compressée différemment ne correspond jamais. `claude doctor` signale les entrées qui ne peuvent jamais correspondre avec l'avertissement `Sandbox credential injectHosts entries can never match their destination`. Cette vérification nécessite Claude Code v2.1.229 ou une version ultérieure.

425 506 

426<h4 id="re-sign-aws-requests">507<h4 id="re-sign-aws-requests">

427 Re-signer les requêtes AWS508 Signer à nouveau les requêtes AWS

428</h4>509</h4>

429 510 

430Les requêtes AWS portent des signatures SigV4 sur le contenu de la requête, donc masquez `AWS_ACCESS_KEY_ID` et `AWS_SECRET_ACCESS_KEY` ensemble. Le proxy détecte une requête SigV4 par la sentinelle de la clé d'accès et la re-signe après substitution des vraies valeurs. Masquer uniquement le secret laisse les requêtes signées avec l'espace réservé, que le proxy ne peut pas détecter, donc elles échouent à AWS ; Claude Code avertit à ce sujet au démarrage, mais pas lorsque seul l'ID de clé d'accès est masqué. Une requête détectée que le proxy ne peut pas re-signer, comme une requête manquant son en-tête `x-amz-date`, échoue avec une erreur de proxy au lieu d'atteindre le serveur avec une signature cassée.511Les requêtes AWS portent des signatures SigV4 calculées sur le contenu de la requête ; masquez donc `AWS_ACCESS_KEY_ID` et `AWS_SECRET_ACCESS_KEY` ensemble. Le proxy détecte une requête SigV4 grâce à la [sentinelle](#mask-credentials) de la clé d'accès et signe à nouveau la requête avec les valeurs réelles, ce qui nécessite Claude Code v2.1.221 ou une version ultérieure. Si vous masquez uniquement le secret, les requêtes sont signées avec une valeur de substitution que le proxy ne peut pas détecter, de sorte qu'elles échouent côté AWS.

431 512 

432Claude Code lie les variables conventionnelles `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` et `AWS_SESSION_TOKEN` en un identifiant automatiquement lorsque vous masquez leurs valeurs entières. Si votre identifiant AWS se trouve dans des variables avec d'autres noms, groupez-les vous-même avec [`credentials.awsPairs`](/docs/fr/settings-reference#sandbox-credentials-awspairs), qui nécessite Claude Code v2.1.224 ou ultérieur. Cet exemple ajoute l'appairage à une configuration qui masque déjà `MY_KEY_ID`, `MY_SECRET_KEY` et `MY_SESSION_TOKEN` en valeur entière, comme dans la [configuration de masquage ci-dessus](#mask-environment-variables) :513Claude Code associe automatiquement les variables conventionnelles `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` et `AWS_SESSION_TOKEN` en un seul identifiant lorsque vous masquez leurs valeurs entières. Si vos identifiants AWS se trouvent dans des variables portant d'autres noms, regroupez-les avec [`credentials.awsPairs`](/docs/fr/settings-reference#sandbox-credentials-awspairs), qui nécessite Claude Code v2.1.224 ou une version ultérieure.

433 514 

434```json theme={null}515Les téléversements en streaming, les URL présignées et les requêtes SigV4A portent des signatures que le proxy ne peut pas recalculer. Lorsqu'une de ces requêtes est signée avec la valeur de substitution d'une paire masquée, le proxy la fait échouer plutôt que de transmettre une signature invalide. Les requêtes signées avec des identifiants non masqués ne sont pas concernées. Utilisez [`credentials.sigv4`](/docs/fr/settings-reference#sandbox-credentials-sigv4), qui nécessite Claude Code v2.1.224 ou une version ultérieure, pour transmettre plutôt l'une de ces formes de requêtes. AWS rejette tout de même la requête, de sorte que l'outil appelant reçoit la réponse de rejet d'AWS elle-même au lieu d'une erreur du proxy.

435{

436 "sandbox": {

437 "credentials": {

438 "awsPairs": [

439 {

440 "accessKeyIdVar": "MY_KEY_ID",

441 "secretAccessKeyVar": "MY_SECRET_KEY",

442 "sessionTokenVar": "MY_SESSION_TOKEN"

443 }

444 ]

445 }

446 }

447}

448```

449 

450Chaque entrée suit ces règles :

451 

452* `accessKeyIdVar` et `secretAccessKeyVar` nomment les entrées `envVars` masquées contenant l'ID de clé d'accès et la clé secrète. Le `sessionTokenVar` optionnel nomme l'entrée contenant le token de session pour les identifiants temporaires ; lorsqu'il est défini, le proxy envoie le vrai token comme `x-amz-security-token` sur les requêtes re-signées.

453* Chaque variable nommée doit être une entrée `mask` qui masque sa valeur entière, sans `extract` ou `decode`.

454* Le proxy re-signe les requêtes sur les hôtes listés dans `injectHosts` de l'entrée d'ID de clé d'accès.

455* Nommer l'une des variables conventionnelles dans une paire remplace l'appairage automatique.

456 

457Comme les entrées `mask`, `awsPairs` est honoré uniquement à partir des paramètres utilisateur, des paramètres gérés et de l'indicateur CLI `--settings`.

458 

459Trois formes de requête AWS portent des signatures que le proxy ne peut pas recalculer. Lorsqu'une telle requête est signée avec l'espace réservé d'une paire masquée, le proxy l'échoue plutôt que de transférer une signature cassée ; les requêtes signées avec des identifiants non masqués ne sont jamais affectées. Le paramètre [`credentials.sigv4`](/docs/fr/settings-reference#sandbox-credentials-sigv4), qui nécessite Claude Code v2.1.224 ou ultérieur, assouplit cela par forme : définir la clé d'une forme à `passthrough` transfère la requête avec sa signature dérivée de l'espace réservé, donc l'outil appelant reçoit la propre réponse de rejet d'AWS au lieu d'une erreur de proxy. Comme `awsPairs`, `sigv4` est honoré uniquement à partir des paramètres utilisateur, des paramètres gérés et de l'indicateur CLI `--settings`.

460 

461| Forme de requête | Clé `sigv4` | Pourquoi le proxy ne peut pas la re-signer |

462| :- | :- | :- |

463| Téléchargements de streaming aws-chunked | `streaming` | Les signatures par chunk s'enchaînent à partir de la signature de départ, donc la re-signature nécessiterait de réécrire le corps |

464| URLs pré-signées | `presigned` | La signature se trouve dans l'URL elle-même, sans en-tête `Authorization` |

465| Signatures asymétriques SigV4A | `sigv4a` | Il n'y a pas de HMAC à clé partagée à recalculer |

466 516 

467<h4 id="mask-credential-files">517<h4 id="mask-credential-files">

468 Masquer les fichiers d'identifiants518 Masquer les fichiers d'identifiants

469</h4>519</h4>

470 520 

471Les entrées de fichiers acceptent également `"mode": "mask"`, qui nécessite Claude Code v2.1.221 ou ultérieur. Ce qu'une commande sandboxée voit dépend de la plateforme :521Pour masquer un fichier d'identifiants, définissez `"mode": "mask"` sur son entrée `credentials.files`. Le masquage des fichiers nécessite Claude Code v2.1.221 ou une version ultérieure. Ce que voit une commande en sandbox dépend de la plateforme :

472 

473* **Linux et WSL2** : les commandes sandboxées lisent une copie sentinelle du fichier, un substitut dont le secret est remplacé par une valeur d'espace réservé, et le [proxy sandbox](#network-isolation) substitue la vraie valeur à la sortie.

474* **macOS** : les commandes sandboxées ne peuvent pas lire le fichier listé du tout. Claude Code ne construit pas de copie sentinelle et ne substitue rien à la sortie, donc les outils qui s'authentifient avec le fichier ne fonctionnent pas à l'intérieur du sandbox, le même effet que `deny`. Contrairement à une entrée `deny`, le bloc de lecture tient même lorsque vous [désactivez l'isolation du système de fichiers](#disable-filesystem-isolation).

475 522 

476Sur chaque plateforme, Claude Code applique le besoin [`network.tlsTerminate`](/docs/fr/settings-reference#sandbox-network-tlsterminate) et `injectHosts` de la même façon que pour les [variables d'environnement masquées](#mask-environment-variables), et ignore les paramètres du référentiel de la même façon. Si vous [excluez les paramètres utilisateur](#configure-sandboxing), Claude Code maintient les entrées `mask` de fichier dans `~/.claude/settings.json` comme des restrictions, mais les entrées n'autorisent plus le proxy à substituer la vraie valeur.523* **Linux et WSL2** : les commandes en sandbox lisent une copie [sentinelle](#mask-credentials) du fichier, et le proxy substitue la valeur réelle dans les requêtes sortantes.

524* **macOS** : les commandes en sandbox ne peuvent pas du tout lire le fichier. Claude Code ne crée aucune copie sentinelle, de sorte que les outils qui s'authentifient avec le fichier ne fonctionnent pas dans le sandbox, avec le même effet que `deny`. Le blocage en lecture tient même lorsque vous [désactivez l'isolation du système de fichiers](#disable-filesystem-isolation).

477 525 

478L'exemple ci-dessous masque un token GitHub stocké dans `~/.config/gh/hosts.yml` ; le motif `extract`, couvert ci-dessous, indique à Claude Code quelle partie du fichier est le secret. Sur Linux et WSL2, les commandes sandboxées qui lisent le fichier obtiennent une sentinelle à la place du token, et le proxy substitue le vrai token sur les requêtes à `api.github.com` :526Cet exemple masque un jeton GitHub stocké dans `~/.config/gh/hosts.yml`. Le motif `extract` indique quelle partie du fichier constitue le secret, de sorte que sous Linux et WSL2, `gh` analyse toujours le reste de sa configuration :

479 527 

480```json theme={null}528```json theme={null}

481{529{


499}547}

500```548```

501 549 

502Pour confirmer que le masque est actif, demandez à Claude d'exécuter `cat ~/.config/gh/hosts.yml` dans une commande sandboxée : sur Linux et WSL2, la sortie montre une valeur sentinelle à la place du token, et sur macOS, la lecture échoue à la place.550Pour confirmer que le masque est actif, demandez à Claude d'exécuter `cat ~/.config/gh/hosts.yml` dans une commande en sandbox. Sous Linux et WSL2, la sortie affiche une sentinelle à la place du jeton, et sous macOS, la lecture échoue.

503 

504Sur Linux et WSL2, le motif `extract` est ce qui garde le reste de `hosts.yml` lisible. Claude Code applique l'expression régulière sur le fichier entier et remplace uniquement le texte capturé par le groupe 1 de chaque correspondance, donc `gh` analyse toujours sa configuration et seul le token est un espace réservé. Utilisez `extract` pour tout fichier structuré que les outils analysent, comme `.netrc`, JSON ou YAML ; le motif doit contenir au moins un groupe de capture. Sans `extract`, Claude Code remplace le contenu entier du fichier par une valeur sentinelle, ce qui convient à un fichier qui contient un seul secret nu et rien d'autre.

505 

506Pour un fichier qui contient un JSON Web Token (JWT), définissez `decode: "jwt"` à la place de, ou ensemble avec, `extract`. `decode` nécessite Claude Code v2.1.224 ou ultérieur. Claude Code trouve les candidats JWT avec un motif intégré, ou avec votre motif `extract` lorsqu'il est défini, vérifie que chaque candidat est un JWT, et le remplace par un faux token structurellement valide, donc le code qui décode le token à l'intérieur du sandbox continue de fonctionner. Ajoutez `maskClaims` pour masquer uniquement les revendications de charge utile de haut niveau nommées à l'intérieur de chaque token vérifié et laissez les autres revendications lisibles. Lorsqu'aucun candidat ne se vérifie, ou qu'aucune revendication nommée ne correspond, le champ `onExtractNoMatch` ci-dessous gouverne le résultat, comme il le fait pour un motif qui ne correspond à rien.

507 551 

508Deux champs optionnels affinent le comportement de la correspondance. Les deux s'appliquent uniquement lorsque `mode` est `mask` et que `extract` ou `decode` est défini. Sur macOS, Claude Code applique les entrées `mask` comme `deny` avant que le motif s'exécute chaque fois que l'isolation du système de fichiers est activée, donc ces champs, et les résultats de non-correspondance ci-dessous, prennent effet là uniquement lorsque [l'isolation du système de fichiers est désactivée](#disable-filesystem-isolation) :552Sans `extract` ni `decode`, Claude Code remplace l'intégralité du fichier par une seule sentinelle, ce qui convient à un fichier ne contenant qu'un seul secret nu. Utilisez les [champs `extract`, `decode`, `maskClaims`, `onExtractNoMatch` et `maskDuplicates`](/docs/fr/settings-reference#sandbox-credentials-files) pour contrôler le masquage partiel et ce qui se passe lorsque le motif ne correspond à rien.

509 553 

510* `onExtractNoMatch` contrôle ce qui se passe lorsque la correspondance ne trouve rien à masquer dans le fichier :554<Warning>

511 555 Lorsque la correspondance ne trouve rien à masquer, la valeur par défaut de `onExtractNoMatch`, `warn`, ignore l'entrée, de sorte que les commandes en sandbox peuvent lire le fichier réel sans masquage. Sous macOS, Claude Code applique les entrées `mask` comme `deny` avant l'exécution du motif dès que l'isolation du système de fichiers est activée ; les résultats en cas d'absence de correspondance n'y prennent donc effet que lorsque [l'isolation du système de fichiers est désactivée](#disable-filesystem-isolation). La valeur par défaut convient aux identifiants qui peuvent légitimement être absents. Si le secret peut être présent mais que le motif risque de le manquer, utilisez [`deny`](/docs/fr/settings-reference#mask-fields-for-files).

512 * `warn`, la valeur par défaut, avertit et ignore l'entrée, donc les commandes sandboxées peuvent lire le fichier réel sans masque. La valeur par défaut convient aux identifiants qui peuvent être légitimement absents ; si le secret pourrait être présent mais le motif pourrait le manquer, utilisez `deny`556</Warning>

513 * `deny` rend le fichier illisible à la place

514 * `error` arrête la configuration du sandbox jusqu'à ce que vous corrigiez la configuration

515 

516 Claude Code traite `deny` comme `error` chaque fois que le bloc de lecture ne serait pas appliqué : lorsque vous [désactivez l'isolation du système de fichiers](#disable-filesystem-isolation), et lorsqu'une entrée `filesystem.allowRead` de n'importe quelle source de paramètres réouvre le chemin du fichier.

517* `maskDuplicates` remplace également les copies verbatim de chaque valeur d'identifiant masqué, une capture `extract` ou un token vérifié `decode`, trouvé en dehors des portées correspondantes, pour un secret répété où la correspondance ne s'étend pas. Il correspond à des sous-chaînes brutes, donc une valeur courte ou commune serait remplacée partout où elle apparaît ; réservez-la aux secrets longs et à haute entropie. Valeur par défaut : false.

518 557 

519`mask` s'applique à un seul fichier, donc listez chaque fichier d'identifiant individuellement. Claude Code revient à `deny` pour une entrée `mask` qu'il ne peut pas masquer en toute sécurité : un chemin de répertoire, un motif glob, un fichier plus grand que 8 MiB, ou un fichier qui n'est pas du texte UTF-8. Écrivez les répertoires comme des entrées `deny` explicites à la place ; le tableau sous [Quels paramètres peuvent le désactiver](#which-settings-can-disable-it) couvre si chaque forme épingle `filesystem.disabled` et comment elle se comporte avec l'isolation du système de fichiers désactivée.558`mask` s'applique à un seul fichier ; listez donc chaque fichier d'identifiants individuellement. Claude Code se rabat sur `deny` pour une entrée `mask` qu'il ne peut pas masquer en toute sécurité : un chemin de répertoire, un motif glob, un fichier de plus de 8 Mio ou un fichier qui n'est pas du texte UTF-8.

520 559 

521<h2 id="how-sandboxing-works">560<h2 id="how-sandboxing-works">

522 Comment fonctionne le sandboxing561 Fonctionnement du sandboxing

523</h2>562</h2>

524 563 

525<h3 id="filesystem-isolation">564<h3 id="filesystem-isolation">


528 567 

529L'outil Bash en sandbox restreint l'accès au système de fichiers à des répertoires spécifiques :568L'outil Bash en sandbox restreint l'accès au système de fichiers à des répertoires spécifiques :

530 569 

531* **Comportement d'écriture par défaut** : accès en lecture et écriture au répertoire de travail actuel et à ses sous-répertoires, tous les répertoires que vous avez ajoutés avec `--add-dir`, `/add-dir`, ou [`permissions.additionalDirectories`](/docs/fr/settings-reference#permissions-additionaldirectories), plus le répertoire temporaire de session vers lequel `$TMPDIR` pointe570* **Comportement d'écriture par défaut** : accès en lecture et en écriture au répertoire de travail actuel et à ses sous-répertoires, à tous les répertoires que vous avez ajoutés avec `--add-dir`, `/add-dir` ou [`permissions.additionalDirectories`](/docs/fr/settings-reference#permissions-additionaldirectories), ainsi qu'au répertoire temporaire propre à l'utilisateur vers lequel pointe `$TMPDIR`

532* **Comportement de lecture par défaut** : accès en lecture à l'ensemble de l'ordinateur, sauf certains répertoires refusés. Notez que ce comportement par défaut permet toujours de lire les fichiers d'identifiants tels que `~/.aws/credentials` et `~/.ssh/`. Utilisez [`sandbox.credentials`](#protect-credentials) pour bloquer les lectures de ces fichiers et désactiver les variables d'environnement secrètes, ou ajoutez les chemins à `denyRead`.571* **Comportement de lecture par défaut** : accès en lecture à l'ensemble de l'ordinateur, à l'exception de certains répertoires refusés. Ce comportement par défaut permet toujours de lire les fichiers d'identifiants ; [protégez donc les identifiants](#protect-credentials) que vous ne souhaitez pas voir lus par les commandes.

533* **Blocage de lecture** : avec [`permissions.blockReadsOutsideWorkingDirectories`](/docs/fr/settings-reference#permissions-blockreadsoutsideworkingdirectories) activé, les commandes en sandbox perdent également l'accès en lecture à votre répertoire personnel et aux autres répertoires qui contiennent les fichiers utilisateur, à l'exception des chemins que [Commandes en sandbox sous le blocage](/docs/fr/settings-reference#sandboxed-commands-under-the-block) répertorie. Cette section indique également quand cette partie du blocage ne s'applique pas.572* **Blocage en lecture** : lorsque [`permissions.blockReadsOutsideWorkingDirectories`](/docs/fr/settings-reference#permissions-blockreadsoutsideworkingdirectories) est activé, les commandes en sandbox perdent également l'accès en lecture à votre répertoire personnel et aux autres répertoires contenant des fichiers utilisateur, à l'exception des chemins répertoriés dans [Commandes en sandbox sous le blocage](/docs/fr/settings-reference#sandboxed-commands-under-the-block). Cette section indique également quand cette partie du blocage ne s'applique pas.

534* **Accès bloqué** : impossible de modifier les fichiers en dehors du répertoire de travail, des répertoires ajoutés et du répertoire temporaire de session sans permission explicite, y compris les fichiers de configuration shell tels que `~/.bashrc` et les binaires système dans `/bin/`573* **Worktrees Git** : lorsque le répertoire de travail est un [worktree git lié](/docs/fr/worktrees), le sandbox autorise également les écritures dans le répertoire `.git` partagé du dépôt principal, afin que des commandes telles que `git commit` puissent mettre à jour les refs et l'index. Les écritures dans `hooks/` et `config` au sein de ce répertoire restent refusées.

535* **Git worktrees** : lorsque le répertoire de travail est un [linked git worktree](/docs/fr/worktrees), le sandbox permet également les écritures dans le répertoire `.git` partagé du référentiel principal afin que les commandes telles que `git commit` puissent mettre à jour les références et l'index. Les écritures dans `hooks/` et `config` à l'intérieur de ce répertoire restent refusées.

536* **Configurable** : définissez des chemins autorisés et refusés personnalisés via les paramètres

537 574 

538Pour ignorer complètement l'isolation du système de fichiers tout en conservant l'isolation réseau, définissez [`sandbox.filesystem.disabled`](#disable-filesystem-isolation).575Pour ignorer entièrement l'isolation du système de fichiers tout en conservant l'isolation réseau, définissez [`sandbox.filesystem.disabled`](#disable-filesystem-isolation).

539 576 

540<h3 id="protected-paths">577<h3 id="protected-paths">

541 Chemins protégés578 Chemins protégés

542</h3>579</h3>

543 580 

544À l'intérieur des répertoires dans lesquels les commandes en sandbox peuvent écrire, le sandbox refuse toujours les écritures dans les fichiers à partir desquels Claude Code charge la configuration et le code. Une commande qui pourrait modifier ces fichiers pourrait s'accorder des permissions, ou ajouter un hook ou un serveur MCP que Claude Code exécute en dehors du sandbox. Le système de permissions a ses propres [chemins protégés](/docs/fr/permission-modes#protected-paths), qui contrôlent ce que Claude Code approuve avant qu'un outil ne s'exécute ; la liste du sandbox s'applique à une commande qui est déjà en cours d'exécution. Elle couvre quatre groupes de chemins :581Dans les répertoires où les commandes en sandbox peuvent écrire, le sandbox refuse toujours les écritures dans les fichiers à partir desquels Claude Code charge sa configuration et son code. Une commande capable de modifier ces fichiers pourrait s'accorder des permissions, ou ajouter un hook ou un serveur MCP que Claude Code exécute en dehors du sandbox. Le système de permissions possède ses propres [chemins protégés](/docs/fr/permission-modes#protected-paths), qui contrôlent ce que Claude Code approuve avant l'exécution d'un outil ; la liste du sandbox s'applique à une commande déjà en cours d'exécution. Elle couvre quatre groupes de chemins :

545 582 

546* **Dans votre répertoire de travail et les répertoires au-dessus** : les fichiers de paramètres `.claude`, les répertoires `.claude/skills`, `.claude/agents`, `.claude/commands`, et `.claude/hooks`, `.mcp.json`, et les fichiers que Claude Code exécute de lui-même, tels que `.claude/workflows` et `.claude/scheduled_tasks.json`583* **Dans votre répertoire de travail et les répertoires parents** : les fichiers de paramètres `.claude`, les répertoires `.claude/skills`, `.claude/agents`, `.claude/commands` et `.claude/hooks`, `.mcp.json`, ainsi que les fichiers que Claude Code exécute de lui-même, tels que `.claude/workflows` et `.claude/scheduled_tasks.json`

547* **Dans votre répertoire de travail uniquement** : les fichiers de démarrage shell tels que `.bashrc` et `.zshrc`, `.gitconfig`, les répertoires `.vscode` et `.idea`, et `hooks` et `config` à l'intérieur de `.git`584* **Dans votre répertoire de travail uniquement** : les fichiers de démarrage du shell tels que `.bashrc` et `.zshrc`, `.gitconfig`, les répertoires `.vscode` et `.idea`, ainsi que `hooks` et `config` dans `.git`

548* **Les fichiers qui transformeraient votre répertoire de travail en référentiel git nu** : `HEAD`, `objects`, et `refs` au niveau supérieur, plus `config` et `hooks` là-bas quand un `HEAD` les accompagne. Un fichier nommé `config` est refusé même sans `HEAD`. Sur Linux et WSL2, le sandbox supprime un fichier `HEAD` de niveau supérieur ou un répertoire `objects` ou `refs` qui apparaît pendant qu'une commande en sandbox s'exécute585* **Les fichiers qui transformeraient votre répertoire de travail en dépôt git bare** : `HEAD`, `objects` et `refs` au niveau racine, ainsi que les entrées `config` et `hooks` existantes à cet endroit lorsqu'un `HEAD` se trouve à côté. Un fichier nommé `config` est refusé même en l'absence de `HEAD`. Sous Linux et WSL2, le sandbox supprime un fichier `HEAD` ou un répertoire `objects` ou `refs` de niveau racine qui apparaît pendant l'exécution d'une commande en sandbox

549* **Dans `~/.claude`, ou le répertoire vers lequel `CLAUDE_CONFIG_DIR` pointe** : la plupart de son contenu, plus `~/.claude.json` et le magasin d'identifiants `.credentials.json`586* **Dans `~/.claude`, ou le répertoire vers lequel pointe `CLAUDE_CONFIG_DIR`** : la majeure partie de son contenu, ainsi que `~/.claude.json` et le magasin d'identifiants `.credentials.json`

550 587 

551Si un lien symbolique apparaît au chemin d'un fichier de paramètres protégés pendant la session, le sandbox refuse également les écritures dans le fichier vers lequel il pointe, à partir de la commande suivante.588Si un lien symbolique apparaît au chemin d'un fichier de paramètres protégé pendant la session, le sandbox refuse également les écritures dans le fichier vers lequel il pointe, à partir de la commande suivante.

552 589 

553Il n'y a aucun moyen d'exempter l'un de ces chemins : une entrée `allowWrite` ou une règle d'autorisation `Edit` qui couvre le chemin ne lève pas la protection. La seule façon de désactiver la protection est [`filesystem.disabled`](#disable-filesystem-isolation), qui désactive l'isolation du système de fichiers pour chaque chemin. Pour voir la plupart de ces chemins résolus pour votre machine, exécutez `/sandbox` et ouvrez l'onglet **Config**, qui les répertorie sous **Denied within allowed**, mélangés avec vos propres entrées `denyWrite`.590Il n'existe aucun moyen d'exempter l'un de ces chemins : une entrée `allowWrite` ou une règle d'autorisation `Edit` couvrant le chemin ne lève pas la protection. La seule façon de désactiver la protection est [`filesystem.disabled`](#disable-filesystem-isolation), qui désactive l'isolation du système de fichiers pour tous les chemins. Pour voir la plupart de ces chemins résolus pour votre machine, exécutez `/sandbox` et ouvrez l'onglet **Config**, qui les répertorie sous **Denied within allowed**, mêlés à vos propres entrées `denyWrite`.

554 591 

555Si `git merge` ou `git checkout` échoue avec `unable to unlink old` sur l'un de ces chemins, consultez [Troubleshooting](#troubleshooting).592Si `git merge` ou `git checkout` échoue avec `unable to unlink old` sur l'un de ces chemins, consultez [Une commande git échoue avec `unable to unlink old`](#a-git-command-fails-with-unable-to-unlink-old).

556 593 

557<h3 id="network-isolation">594<h3 id="network-isolation">

558 Isolation réseau595 Isolation réseau

559</h3>596</h3>

560 597 

561L'accès réseau est contrôlé via un serveur proxy s'exécutant en dehors du sandbox :598Une commande en sandbox ne dispose d'aucun accès direct au réseau :

599 

600* **Linux et WSL2** : la commande s'exécute dans un espace de noms réseau distinct, sans connexion à votre réseau

601* **macOS** : le framework de sandbox Seatbelt bloque par défaut les connexions autres que celle vers le proxy du sandbox

602 

603Claude Code exécute le proxy du sandbox sur votre machine, en dehors du sandbox, et y redirige les commandes via `HTTP_PROXY`, `HTTPS_PROXY`, `ALL_PROXY` et les variables d'environnement associées. Le proxy vérifie le nom d'hôte de chaque connexion par rapport à vos domaines autorisés et refusés.

604 

605Ce qu'un outil peut atteindre dépend de son utilisation ou non du proxy :

562 606 

563* **Restrictions de domaine** : Claude Code ne pré-autorise aucun domaine par défaut. La première fois qu'une commande a besoin d'un nouveau domaine, Claude Code demande une approbation ; en [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode), Claude nomme plutôt les hôtes qu'une commande nécessite sur la commande elle-même, selon [Domaines autorisés par commande](#per-command-allowed-domains-in-auto-mode).607* **Les outils qui lisent les variables de proxy** : `curl`, `npm`, `git` via HTTPS et les outils similaires se connectent dès que leur hôte est autorisé. Une entrée `allowedDomains` sans port autorise tous les ports de cet hôte

564* **Choix d'approbation** : si vous choisissez Oui quand vous êtes invité, Claude Code autorise l'hôte pour le reste de la session actuelle et ne demande plus pour les connexions ultérieures au même hôte. Si vous choisissez « Oui, et ne me demander plus », Claude Code enregistre une règle d'autorisation `WebFetch(domain:...)` dans vos [paramètres locaux](/docs/fr/permissions#permission-system), afin que l'hôte reste autorisé dans les sessions futures.608* **Les outils qui ignorent les variables de proxy** : `ssh` seul, la plupart des pilotes de base de données et les outils similaires ne peuvent pas se connecter, même à un hôte autorisé. Consultez [Un client de base de données ou un autre outil non HTTP ne parvient pas à atteindre un hôte autorisé](#a-database-client-or-other-non-http-tool-fails-to-reach-an-allowed-host)

565* **Domaines pré-autorisés** : pré-autorisez les domaines avec [`allowedDomains`](/docs/fr/settings-reference#sandbox-network-alloweddomains) pour éviter complètement l'invite. Claude Code pré-autorise également les domaines à partir des règles d'autorisation `WebFetch(domain:...)`, comme décrit dans [Règles de permissions](#permission-rules).609* **Tout ce qui n'est pas TCP** : UDP, HTTP/3 sur QUIC et les outils ICMP tels que `ping` ne peuvent pas sortir du sandbox

566* **Liste d'autorisation stricte** : si vous définissez [`strictAllowlist`](/docs/fr/settings-reference#sandbox-network-strictallowlist) à `true` dans les paramètres utilisateur, gérés ou CLI `--settings`, Claude Code refuse aux commandes en sandbox l'accès à tout hôte en dehors de la liste d'autorisation au lieu de demander. La liste d'autorisation est la même contre laquelle le sandbox demande autrement : `allowedDomains` plus les domaines des règles d'autorisation `WebFetch(domain:...)`, ou uniquement les entrées de paramètres gérés quand `allowManagedDomainsOnly` est défini. Claude Code applique cela uniquement aux commandes en sandbox ; les outils en processus tels que `WebFetch` suivent toujours leurs [règles de permissions](#permission-rules). Le définir dans le `.claude/settings.json` ou `.claude/settings.local.json` d'un référentiel n'a aucun effet. Nécessite Claude Code v2.1.219 ou ultérieur.

567* **Verrouillage géré** : si [`allowManagedDomainsOnly`](/docs/fr/settings-reference#sandbox-network-allowmanageddomainsonly) est défini dans les paramètres gérés, les domaines non autorisés sont bloqués automatiquement au lieu de demander, et seuls `allowedDomains` et les règles d'autorisation `WebFetch(domain:...)` des paramètres gérés sont honorés.

568* **Proxy d'entreprise** : quand votre réseau nécessite que le trafic sortant passe par un proxy d'entreprise, définissez `HTTPS_PROXY`, `HTTP_PROXY`, et `NO_PROXY` comme [configuration de proxy](/docs/fr/network-config#proxy-configuration) le décrit, dans le bloc `env` de vos paramètres afin que les [agents en arrière-plan](/docs/fr/network-config#set-network-variables-in-settings-not-the-shell) les obtiennent aussi, ou dans l'environnement à partir duquel vous lancez Claude Code. Claude Code applique la liste d'autorisation de domaine et tunnelise ensuite les connexions autorisées via ce proxy en amont.

569* **Support de proxy personnalisé** : les utilisateurs avancés peuvent implémenter des règles personnalisées sur le trafic sortant

570* **Couverture complète** : les restrictions s'appliquent à tous les scripts, programmes et sous-processus générés par les commandes

571 610 

572Dans une règle `WebFetch(domain:...)`, le sandbox honore deux formes de caractères génériques : un `*.` initial, tel que `*.example.com`, et un `*` nu. La forme `*` nu nécessite Claude Code v2.1.186 ou ultérieur. Un caractère générique dans toute autre position, tel que `WebFetch(domain:example.*)`, correspond toujours aux récupérations mais n'a aucun effet sur les commandes en sandbox.611Les paramètres et comportements suivants contrôlent les hôtes autorisés par le proxy :

612 

613* **Restrictions de domaine** : vos domaines autorisés sont initialement vides. [Hôtes en dehors de vos domaines autorisés](#hosts-outside-your-allowed-domains) décrit ce qui se passe la première fois qu'une commande a besoin d'un nouveau domaine.

614* **Choix d'approbation** : si vous choisissez Yes lorsque cela vous est demandé, Claude Code autorise l'hôte pour le reste de la session en cours. Si vous choisissez « Yes, and don't ask again », Claude Code enregistre une règle d'autorisation `WebFetch(domain:...)` dans vos [paramètres locaux](/docs/fr/permissions#permission-system), de sorte que l'hôte reste autorisé lors des sessions futures. Lorsque le sandbox est [exigé par l'administrateur](#repository-settings-under-an-admin-required-sandbox), Claude Code enregistre la règle dans vos paramètres utilisateur, où elle s'applique à tous les projets.

615* **Domaines pré-autorisés** : pré-autorisez des domaines avec [`allowedDomains`](/docs/fr/settings-reference#sandbox-network-alloweddomains) pour éviter entièrement la demande. Claude Code pré-autorise également les domaines issus des règles d'autorisation `WebFetch(domain:...)`, comme décrit dans [Règles de permission](#permission-rules).

616* **Liste d'autorisation stricte** : si vous définissez [`strictAllowlist`](/docs/fr/settings-reference#sandbox-network-strictallowlist) sur `true` dans les paramètres utilisateur, gérés ou `--settings` de la CLI, Claude Code refuse aux commandes en sandbox l'accès à tout hôte en dehors de la liste d'autorisation au lieu de vous le demander. La liste d'autorisation se compose de `allowedDomains` et des domaines issus des règles d'autorisation `WebFetch(domain:...)`, ou uniquement des entrées des paramètres gérés lorsque `allowManagedDomainsOnly` est défini. [Verrous qui s'appliquent sans sandbox exigé par l'administrateur](#locks-that-apply-without-an-admin-required-sandbox) traite des entrées d'un dépôt. Claude Code applique cela uniquement aux commandes en sandbox ; les outils intégrés au processus tels que `WebFetch` suivent toujours leurs [règles de permission](#permission-rules). Le définir dans le fichier `.claude/settings.json` ou `.claude/settings.local.json` d'un dépôt n'a aucun effet. Nécessite Claude Code v2.1.219 ou version ultérieure.

617* **Verrouillage géré** : si [`allowManagedDomainsOnly`](/docs/fr/settings-reference#sandbox-network-allowmanageddomainsonly) est défini dans les paramètres gérés, les domaines non autorisés sont automatiquement bloqués au lieu de faire l'objet d'une demande, et seules les règles d'autorisation `allowedDomains` et `WebFetch(domain:...)` issues des paramètres gérés sont prises en compte.

618* **Proxy d'entreprise** : lorsque votre réseau exige que le trafic sortant passe par un proxy d'entreprise, définissez `HTTPS_PROXY`, `HTTP_PROXY` et `NO_PROXY` comme décrit dans [configuration du proxy](/docs/fr/network-config#proxy-configuration), dans le bloc `env` de vos paramètres afin que les [agents en arrière-plan](/docs/fr/network-config#set-network-variables-in-settings-not-the-shell) les reçoivent également, ou dans l'environnement à partir duquel vous lancez Claude Code. Claude Code applique la liste d'autorisation des domaines, puis fait transiter les connexions autorisées par ce proxy en amont. Les URL de proxy `http://` et `https://` fonctionnent, avec une authentification basique dans l'URL si nécessaire.

619 

620Dans une règle `WebFetch(domain:...)`, le sandbox prend en charge deux formes de caractères génériques : un `*.` en préfixe, comme `*.example.com`, et un `*` seul. La forme `*` seule nécessite Claude Code v2.1.186 ou version ultérieure. Un caractère générique à toute autre position, comme `WebFetch(domain:example.*)`, correspond toujours aux récupérations mais n'a aucun effet sur les commandes en sandbox.

573 621 

574<Note>622<Note>

575 Le proxy intégré applique la liste d'autorisation en fonction du nom d'hôte demandé et, par défaut, ne termine pas ou n'inspecte pas le trafic TLS. Le paramètre expérimental [`network.tlsTerminate`](/docs/fr/settings-reference#sandbox-network-tlsterminate), disponible dans Claude Code v2.1.199 et ultérieur, fait que le proxy intégré termine lui-même TLS, ce que les entrées d'identifiants [`mask`](#mask-credentials) nécessitent. Consultez [Limitations de sécurité](#security-limitations) pour les implications de la conception par défaut, et [Configuration de proxy personnalisée](#custom-proxy-configuration) si votre modèle de menace nécessite l'inspection TLS.623 Le proxy intégré applique la liste d'autorisation en fonction du nom d'hôte demandé et, par défaut, ne termine ni n'inspecte le trafic TLS. Le paramètre expérimental [`network.tlsTerminate`](/docs/fr/settings-reference#sandbox-network-tlsterminate), disponible dans Claude Code v2.1.199 et versions ultérieures, permet au proxy intégré de terminer lui-même le TLS, ce qu'exigent les [entrées d'identifiants `mask`](#mask-credentials). Consultez [Limites de sécurité](#security-limitations) pour connaître les implications du comportement par défaut, et [Configuration de proxy personnalisé](#custom-proxy-configuration) si votre modèle de menace nécessite une inspection TLS.

576</Note>624</Note>

577 625 

626<h4 id="hosts-outside-your-allowed-domains">

627 Hôtes en dehors de vos domaines autorisés

628</h4>

629 

630Lorsqu'une commande en sandbox se connecte à un hôte qui ne figure pas dans vos domaines autorisés, la commande reste dans le sandbox et attend une décision. Dans une session de terminal interactive, la décision dépend de votre mode de permission :

631 

632| Mode de permission | Ce qu'il advient de la connexion |

633| :- | :- |

634| Mode `bypassPermissions`, et mode plan avec [contournement des permissions disponible](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) | Autorisée sans demande |

635| Mode manuel, mode `acceptEdits` et mode plan dans les autres cas | Une demande vous est présentée |

636| Mode auto | Refusée, sauf si la commande [a répertorié l'hôte](#per-command-allowed-domains-in-auto-mode) et que le classifieur a approuvé la liste |

637| Mode `dontAsk` | Refusée |

638 

639Lorsque [`strictAllowlist`](/docs/fr/settings-reference#sandbox-network-strictallowlist) ou [`allowManagedDomainsOnly`](/docs/fr/settings-reference#sandbox-network-allowmanageddomainsonly) est activé, le proxy intégré du sandbox refuse la connexion dans tous les modes de permission. En mode `bypassPermissions`, les hôtes en dehors de vos domaines autorisés sont autorisés, sauf si l'un de ces paramètres est activé. [L'échappatoire de la nouvelle tentative hors sandbox](#the-unsandboxed-retry-escape-hatch) explique quand une commande peut sortir du sandbox dans ce mode. Une connexion à un hôte figurant dans [`deniedDomains`](/docs/fr/settings-reference#sandbox-network-denieddomains) est également refusée dans tous les modes de permission.

640 

641<h4 id="hostnames-that-resolve-to-local-addresses">

642 Noms d'hôte résolus en adresses locales

643</h4>

644 

645Une fois qu'un nom d'hôte a passé la liste d'autorisation, le proxy du sandbox le résout et refuse la connexion lorsque le nom ne se résout qu'en adresses locales. Les adresses locales incluent les adresses de loopback telles que `127.0.0.1`, les adresses link-local telles que l'endpoint de métadonnées cloud `169.254.169.254`, et les adresses attribuées à votre propre machine. Les noms `localhost` et `*.localhost` sont autorisés à se résoudre en loopback.

646 

647Un nom d'hôte intranet autorisé qui se résout dans une plage privée telle que `10.0.0.0/8` se connecte. Pour permettre à un nom de se résoudre en une adresse refusée, ajoutez cette adresse IP à `allowedDomains`, par exemple `"127.0.0.1:8080"`.

648 

649La vérification s'applique aux noms d'hôte. Vos domaines autorisés et votre mode de permission déterminent le sort d'une connexion à une adresse IP. Le proxy ignore également la vérification pour les connexions qu'il fait transiter par un proxy d'entreprise en amont, car c'est ce proxy qui résout le nom.

650 

578<h4 id="per-command-allowed-domains-in-auto-mode">651<h4 id="per-command-allowed-domains-in-auto-mode">

579 Domaines autorisés par commande en mode auto652 Domaines autorisés par commande en mode auto

580</h4>653</h4>

581 654 

582En [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) avec sandboxing activé, Claude nomme les hôtes qu'une commande nécessite sur la commande elle-même au lieu de déclencher une approbation réseau pour chaque connexion. Chaque commande Bash, PowerShell, ou [Monitor](/docs/fr/tools-reference#monitor-tool) qui s'exécute dans le sandbox peut porter une liste d'hôtes au-delà de la liste d'autorisation du sandbox : un domaine tel que `registry.npmjs.org`, un caractère générique tel que `*.pythonhosted.org`, ou une adresse IP, chacun avec un `:port` optionnel. Le classificateur examine les hôtes ensemble avec la commande. Nécessite Claude Code v2.1.271 ou ultérieur.655En [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) avec le sandboxing activé, Claude indique sur la commande elle-même les hôtes dont elle a besoin, au lieu de déclencher une approbation réseau pour chaque connexion. Chaque commande Bash, PowerShell ou [Monitor](/docs/fr/tools-reference#monitor-tool) exécutée dans le sandbox peut comporter une liste d'hôtes au-delà de la liste d'autorisation du sandbox : un domaine tel que `registry.npmjs.org`, un caractère générique tel que `*.pythonhosted.org` ou une adresse IP, chacun avec un `:port` facultatif. Le classifieur examine les hôtes en même temps que la commande. Nécessite Claude Code v2.1.271 ou version ultérieure.

583 656 

584Une liste approuvée ouvre ces hôtes pour cette seule commande, aussi longtemps qu'elle s'exécute. Rien n'est ajouté aux hôtes autorisés de votre session ou à vos paramètres ; la commande suivante nomme ses propres hôtes.657Une liste approuvée ouvre ces hôtes pour cette seule commande, pendant toute la durée de son exécution. Rien n'est ajouté aux hôtes autorisés de votre session ni à vos paramètres ; la commande suivante indique ses propres hôtes.

585 658 

586Une commande qui porte des hôtes va au classificateur au lieu d'être approuvée par une règle de permission ou le [mode auto-autorisation](#sandbox-modes) du sandbox. Si une [règle ask](/docs/fr/permissions#manage-permissions) force une invite pour la commande, la boîte de dialogue de permission dans votre terminal répertorie les hôtes à côté, et approuver là couvre les deux.659Une commande comportant des hôtes est transmise au classifieur au lieu d'être approuvée par une règle de permission ou par le [mode d'autorisation automatique](#sandbox-modes) du sandbox. Si une [règle ask](/docs/fr/permissions#manage-permissions) impose une demande pour la commande, la boîte de dialogue de permission de votre terminal affiche les hôtes à côté, et l'approbation à cet endroit couvre les deux.

587 660 

588Une liste par commande élargit uniquement ce que le sandbox refuse par défaut. Les entrées [`deniedDomains`](/docs/fr/settings-reference#sandbox-network-denieddomains) bloquent toujours. Quand [`strictAllowlist`](/docs/fr/settings-reference#sandbox-network-strictallowlist) ou [`allowManagedDomainsOnly`](/docs/fr/settings-reference#sandbox-network-allowmanageddomainsonly) verrouille la liste d'autorisation, Claude Code refuse les listes par commande.661Une liste par commande élargit uniquement ce que le sandbox refuse par défaut. Les entrées [`deniedDomains`](/docs/fr/settings-reference#sandbox-network-denieddomains) continuent de bloquer. Lorsque [`strictAllowlist`](/docs/fr/settings-reference#sandbox-network-strictallowlist) ou [`allowManagedDomainsOnly`](/docs/fr/settings-reference#sandbox-network-allowmanageddomainsonly) verrouille la liste d'autorisation, Claude Code refuse les listes par commande.

589 662 

590Pendant que les listes par commande s'appliquent, Claude Code refuse une connexion à un hôte qu'aucune commande approuvée n'a répertorié, sans invite ou vérification du classificateur. Le refus nomme l'hôte dans le résultat de la commande, et Claude réexécute la commande avec l'hôte ajouté.663Tant que les listes par commande s'appliquent, Claude Code refuse une connexion à un hôte qu'aucune commande approuvée n'a répertorié, sans demande ni vérification par le classifieur. Le refus indique l'hôte dans le résultat de la commande, et Claude réexécute la commande en ajoutant l'hôte.

591 664 

592<h4 id="ipv6-addresses-in-domain-lists">665<h4 id="ipv6-addresses-in-domain-lists">

593 Adresses IPv6 dans les listes de domaines666 Adresses IPv6 dans les listes de domaines

594</h4>667</h4>

595 668 

596Les listes de domaines du sandbox sont `allowedDomains`, `deniedDomains`, et les règles `WebFetch(domain:...)` qui les alimentent. Pour correspondre à une adresse IPv6 dans l'une d'elles, écrivez le littéral entre crochets : `"[::1]"` correspond à cette adresse sur chaque port, et `"[::1]:443"` la correspond sur le port 443 uniquement. Écrivez le port comme un nombre de 1 à 65535 sans zéros non significatifs. La forme entre crochets nécessite Claude Code v2.1.229 ou ultérieur. Avant v2.1.229, quand le texte après le dernier deux-points d'une entrée non entre crochets était un numéro de port, Claude Code le lisait comme tel, donc `::1:443` nommait l'adresse `::1` sur le port 443.669Pour faire correspondre une adresse IPv6 dans `allowedDomains`, `deniedDomains` ou une règle `WebFetch(domain:...)`, écrivez l'adresse entre crochets : `"[::1]"` correspond à cette adresse sur tous les ports, et `"[::1]:443"` uniquement sur le port 443. La forme entre crochets nécessite Claude Code v2.1.229 ou version ultérieure.

597 670 

598Quand vous choisissez « Oui, et ne me demander plus » à l'invite d'approbation réseau pour une adresse IPv6, Claude Code enregistre la règle `WebFetch(domain:...)` avec l'adresse entre crochets, afin que la règle continue de correspondre à l'adresse dans les sessions futures.671Une entrée sans crochets telle que `::1:443` est ambiguë, car elle peut désigner une adresse ou une adresse suivie d'un port :

599 672 

600Une entrée non entre crochets avec deux deux-points ou plus est ambiguë : `::1:443` est à la fois une adresse IPv6 complète et une adresse suivie d'un port. Claude Code applique les orthographes ambiguës de manière conservatrice au lieu de deviner quelle lecture vous aviez l'intention :673* **Listes de refus** : Claude Code refuse chaque interprétation possible de l'entrée, de sorte que l'interprétation que vous vouliez est bloquée quelle qu'elle soit. Pour une entrée sans interprétation analysable, Claude Code ne bloque rien

674* **Listes d'autorisation** : Claude Code n'autorise jamais plus que ce que vous avez écrit. Il réécrit une entrée ambiguë selon son interprétation hôte-et-port lorsque celle-ci s'analyse correctement, et peut supprimer entièrement l'entrée plutôt que d'élargir la liste d'autorisation

601 675 

602* **Listes de refus** : Claude Code refuse chaque lecture que l'entrée analyse, donc quelle que soit la lecture que vous aviez l'intention, elle est bloquée. Pour une entrée sans lecture analysable, Claude Code ne bloque rien.676Pour trouver les entrées ambiguës, exécutez `claude doctor` dans votre terminal et recherchez l'avertissement `Sandbox network domain entries have unreliable spellings`. Réécrivez chaque entrée ambiguë sous la forme entre crochets.

603* **Listes d'autorisation** : Claude Code n'autorise jamais plus que ce que vous avez écrit. Il réécrit une entrée ambiguë à sa lecture hôte-et-port quand cette lecture analyse proprement, et peut supprimer l'entrée entièrement plutôt que d'élargir la liste d'autorisation.

604 

605Exécutez `claude doctor` dans votre terminal pour trouver les entrées affectées : l'avertissement `Sandbox network domain entries have unreliable spellings` nomme jusqu'à trois d'entre elles et compte le reste. Réécrivez chacune dans la forme entre crochets pour effacer l'avertissement. L'avertissement nomme également les entrées dont l'orthographe est peu fiable pour d'autres raisons, telles que `@`, les caractères de chemin ou de requête, ou les caractères génériques à l'intérieur des crochets.

606 677 

607<h3 id="os-level-enforcement">678<h3 id="os-level-enforcement">

608 Application au niveau du système d'exploitation679 Application au niveau du système d'exploitation


614* **Linux** : utilise [bubblewrap](https://github.com/containers/bubblewrap) pour l'isolation685* **Linux** : utilise [bubblewrap](https://github.com/containers/bubblewrap) pour l'isolation

615* **WSL2** : utilise bubblewrap, comme Linux686* **WSL2** : utilise bubblewrap, comme Linux

616 687 

617WSL1 n'est pas supporté car bubblewrap nécessite des fonctionnalités du noyau uniquement disponibles dans WSL2.688Vous pouvez également exécuter le package [`@anthropic-ai/sandbox-runtime`](https://github.com/anthropics/sandbox-runtime) seul pour encapsuler le processus Claude Code. Consultez [Sandbox runtime](/docs/fr/sandbox-environments#sandbox-runtime).

618 

619Ces mêmes primitives sont disponibles en tant que package autonome [`@anthropic-ai/sandbox-runtime`](https://github.com/anthropic-experimental/sandbox-runtime), que la page [Environnements sandbox](/docs/fr/sandbox-environments#sandbox-runtime) couvre comme une approche distincte pour envelopper l'ensemble du processus Claude Code.

620 689 

621<h2 id="how-sandboxing-relates-to-permissions-and-permission-modes">690<h2 id="how-sandboxing-relates-to-permissions-and-permission-modes">

622 Comment le sandboxing se rapporte aux permissions et aux modes de permission691 Comment le sandboxing se rapporte aux permissions et aux modes de permission


679 748 

680Pour exiger le sandbox pour chaque développeur, livrez les clés `sandbox` via [paramètres gérés](/docs/fr/managed-settings#delivery-mechanisms), soit en tant que fichier géré par votre MDM, soit via [paramètres gérés par serveur](/docs/fr/server-managed-settings) sur claude.ai.749Pour exiger le sandbox pour chaque développeur, livrez les clés `sandbox` via [paramètres gérés](/docs/fr/managed-settings#delivery-mechanisms), soit en tant que fichier géré par votre MDM, soit via [paramètres gérés par serveur](/docs/fr/server-managed-settings) sur claude.ai.

681 750 

682La configuration de paramètres gérés suivante active le sandbox, refuse de démarrer Claude Code si le sandbox ne peut pas s'initialiser et empêche le modèle de réessayer les commandes en dehors du sandbox :751La configuration de paramètres gérés suivante active le sandbox, refuse de démarrer Claude Code lorsque la plateforme n'est pas prise en charge ou qu'une dépendance est manquante, et empêche le modèle de réessayer les commandes en dehors du sandbox :

683 752 

684```json theme={null}753```json theme={null}

685{754{


693 762 

694Les deux clés au-delà de `enabled` contrôlent ce qui se passe lorsque le sandbox ne peut pas exécuter une commande :763Les deux clés au-delà de `enabled` contrôlent ce qui se passe lorsque le sandbox ne peut pas exécuter une commande :

695 764 

696* **`failIfUnavailable`** : une dépendance manquante telle que bubblewrap sur Linux empêche Claude Code de démarrer plutôt que d'afficher un avertissement et de revenir à une exécution non sandboxée765* **`failIfUnavailable`** : une dépendance manquante telle que bubblewrap sur Linux empêche Claude Code de démarrer plutôt que de revenir à une exécution non sandboxée

697* **`allowUnsandboxedCommands: false`** : Claude Code ignore la trappe d'échappement `dangerouslyDisableSandbox`, donc lorsqu'une commande échoue sous le sandbox, Claude ne peut pas la réessayer en dehors du sandbox766* **`allowUnsandboxedCommands: false`** : Claude Code ignore la trappe d'échappement `dangerouslyDisableSandbox`, donc lorsqu'une commande échoue sous le sandbox, Claude ne peut pas la réessayer en dehors du sandbox

698 767 

699Deux ajouts valent la peine d'être envisagés aux côtés d'eux. Ajoutez `excludedCommands` pour tous les outils approuvés par l'organisation qui doivent s'exécuter sans isolation. Ajoutez des entrées [`sandbox.credentials`](#protect-credentials) pour les répertoires d'identifiants tels que `~/.aws` et `~/.ssh` et pour les variables d'environnement secrètes, car la politique de lecture par défaut les autorise toujours.768Envisagez ces ajouts en complément :

700 769 

701Cette configuration sandboxe les commandes que Claude exécute. Un développeur peut toujours taper une commande à l'[invite shell-mode `!`](/docs/fr/interactive-mode#shell-mode-with-prefix) et l'exécuter en dehors du sandbox, avec le même accès qu'il a déjà dans n'importe quel terminal en dehors de Claude Code. Consultez [La trappe d'échappement de réessai non sandboxé](#the-unsandboxed-retry-escape-hatch) pour les sessions où les commandes tapées s'exécutent en sandboxé.770* Ajoutez `excludedCommands` pour tous les outils approuvés par l'organisation qui doivent s'exécuter sans isolation, car cette configuration [empêche les paramètres d'un dépôt de sortir des commandes du sandbox](#repository-settings-under-an-admin-required-sandbox)

771* Ajoutez des entrées [`sandbox.credentials`](#protect-credentials) pour les répertoires d'identifiants tels que `~/.aws` et `~/.ssh` et pour les variables d'environnement secrètes, car la politique de lecture par défaut les autorise toujours

702 772 

703Le sandbox ne s'exécute pas sur Windows natif, donc si votre flotte inclut des hôtes Windows, limitez cette configuration à macOS et Linux ou demandez à ces utilisateurs d'exécuter Claude Code à l'intérieur de WSL2 ou d'un conteneur.773Cette configuration sandboxe les commandes que Claude exécute. Un développeur peut toujours taper une commande à l'[invite shell-mode `!`](/docs/fr/interactive-mode#shell-mode-with-prefix) et l'exécuter en dehors du sandbox, avec le même accès qu'il a déjà dans n'importe quel terminal en dehors de Claude Code. Consultez [le mode sandbox strict](#turn-off-the-retry-with-strict-sandbox-mode) pour les sessions où les commandes tapées s'exécutent en sandboxé.

774 

775Le sandbox ne s'exécute pas sur Windows natif, donc avec `failIfUnavailable` défini, Claude Code se ferme au démarrage sur ces machines. Si votre flotte inclut des hôtes Windows, vous pouvez :

776 

777* **Livrer la configuration par système d'exploitation** : déployez-la via votre MDM ou en tant que [fichier de paramètres gérés](/docs/fr/managed-settings#delivery-mechanisms) uniquement sur les machines macOS et Linux. Les [paramètres gérés par serveur](/docs/fr/server-managed-settings#current-limitations) s'appliquent à tous les utilisateurs de l'organisation

778* **Déplacer les utilisateurs Windows vers un environnement pris en charge** : demandez-leur d'exécuter Claude Code à l'intérieur de WSL2 ou d'un conteneur

704 779 

705<h3 id="keep-developers-from-widening-the-policy">780<h3 id="keep-developers-from-widening-the-policy">

706 Empêcher les développeurs d'élargir la politique781 Empêcher les développeurs d'élargir la politique

707</h3>782</h3>

708 783 

709Pour les clés booléennes telles que `enabled` et `failIfUnavailable`, Claude Code utilise la valeur gérée et ignore tout ce qu'un développeur définit localement. Pour les clés de tableau telles que `excludedCommands` et `allowRead`, Claude Code fusionne les entrées de chaque portée que la session charge, un développeur peut donc ajouter des entrées qui élargissent la politique.784Lorsque les paramètres gérés définissent une clé booléenne telle que `enabled` ou `failIfUnavailable`, Claude Code utilise la valeur gérée et ignore tout ce qu'un développeur définit localement. Pour les clés de tableau telles que `allowRead`, Claude Code fusionne les entrées des portées que la session charge, un développeur peut donc ajouter des entrées qui élargissent la politique, sauf si un verrou couvre cette clé.

785 

786Sauf si les paramètres gérés les définissent, les paramètres utilisateur d'un développeur ou `--settings` peuvent activer les clés suivantes. Le `.claude/settings.json` d'un dépôt le peut aussi, sauf si le sandbox est [exigé par l'administrateur](#repository-settings-under-an-admin-required-sandbox). Chacune affaiblit le sandbox, définissez-la donc sur `false` dans les paramètres gérés si vous ne voulez pas qu'elle soit utilisée :

787 

788* [`enableWeakerNestedSandbox`](/docs/fr/settings-reference#sandbox-enableweakernestedsandbox)

789* [`enableWeakerNetworkIsolation`](/docs/fr/settings-reference#sandbox-enableweakernetworkisolation)

790* [`network.allowAllUnixSockets`](/docs/fr/settings-reference#sandbox-network-allowallunixsockets)

791* [`network.allowLocalBinding`](/docs/fr/settings-reference#sandbox-network-allowlocalbinding)

792* [`allowAppleEvents`](/docs/fr/settings-reference#sandbox-allowappleevents), qu'un dépôt ne peut pas activer

710 793 

711Définissez `allowManagedReadPathsOnly` sur `true` dans les paramètres gérés pour que seules les entrées `allowRead` des paramètres gérés soient honorées. Cela empêche les développeurs d'élargir l'accès en lecture au-delà des chemins approuvés par l'organisation. Pour verrouiller les domaines réseau aux valeurs gérées de la même manière, définissez [`allowManagedDomainsOnly`](/docs/fr/settings-reference#sandbox-network-allowmanageddomainsonly).794Définissez `allowManagedReadPathsOnly` sur `true` dans les paramètres gérés pour que seules les entrées `allowRead` des paramètres gérés soient honorées. Cela empêche les développeurs d'élargir l'accès en lecture au-delà des chemins approuvés par l'organisation.

712 795 

713Lorsque les paramètres gérés configurent `sandbox.filesystem` ou listent une entrée `sandbox.credentials.files` avec `"mode": "deny"`, seuls les paramètres gérés peuvent définir [`filesystem.disabled`](#disable-filesystem-isolation), les développeurs ne peuvent donc pas désactiver les restrictions de filesystem déployées par l'administrateur. Le fait qu'une entrée `mask` épingle la clé dépend de la façon dont elle se résout ; le tableau sous [Quels paramètres peuvent le désactiver](#which-settings-can-disable-it) couvre les quatre cas.796Pour verrouiller les domaines réseau aux valeurs gérées de la même manière, définissez [`allowManagedDomainsOnly`](/docs/fr/settings-reference#sandbox-network-allowmanageddomainsonly). Avec ce verrou activé, seuls les paramètres gérés peuvent définir un [port de proxy](#custom-proxy-configuration).

714 797 

715`excludedCommands` n'a pas d'équivalent de verrouillage géré uniquement, un développeur peut donc toujours ajouter des entrées qui exécutent des commandes supplémentaires en dehors du sandbox. Gardez la liste gérée étroite.798Lorsque les paramètres gérés configurent `sandbox.filesystem` ou listent une entrée `sandbox.credentials.files` avec `"mode": "deny"`, seuls les paramètres gérés peuvent définir [`filesystem.disabled`](#disable-filesystem-isolation), les développeurs ne peuvent donc pas désactiver les restrictions de filesystem déployées par l'administrateur. Une entrée `mask` [valide](/docs/fr/settings-reference#invalid-credential-entries-in-managed-settings) ne verrouille pas la clé. Consultez [Quels paramètres peuvent le désactiver](#which-settings-can-disable-it).

799 

800<h4 id="repository-settings-under-an-admin-required-sandbox">

801 Paramètres de dépôt sous un sandbox exigé par l'administrateur

802</h4>

803 

804Le sandbox est exigé par l'administrateur tant que l'un de ces paramètres est en vigueur :

805 

806* [`allowUnsandboxedCommands`](/docs/fr/settings-reference#sandbox-allowunsandboxedcommands) défini sur `false` dans les paramètres gérés, ou avec le flag `--settings` sauf si les paramètres gérés le définissent sur `true`

807* [`allowManagedDomainsOnly`](/docs/fr/settings-reference#sandbox-network-allowmanageddomainsonly) défini sur `true` dans les paramètres gérés

808 

809Ces paramètres n'activent pas le sandbox, définissez donc également `enabled`.

810 

811Tant que le sandbox est exigé par l'administrateur, Claude Code ne prend les paramètres qui l'assouplissent que dans les paramètres gérés, le flag `--settings` et le `~/.claude/settings.json` de chaque développeur. Il ignore ces paramètres dans le `.claude/settings.json` et le `.claude/settings.local.json` d'un dépôt :

812 

813| Paramètre de dépôt | Ce que Claude Code ignore |

814| :- | :- |

815| `excludedCommands`, `ignoreViolations`, `network.allowedDomains`, `network.allowUnixSockets`, `network.allowMachLookup`, `network.httpProxyPort`, `network.socksProxyPort` | Chaque entrée |

816| `filesystem.allowWrite`, règles d'autorisation `Edit(...)`, `permissions.additionalDirectories` | L'accès en écriture que chaque entrée donne aux commandes sandboxées. Les outils de fichiers de Claude suivent toujours les règles `Edit(...)` et les répertoires supplémentaires |

817| Règles d'autorisation `WebFetch(domain:...)` | L'hôte que chaque règle ajoute à la liste d'autorisation du sandbox. L'outil WebFetch suit toujours la règle |

818| `enableWeakerNestedSandbox`, `enableWeakerNetworkIsolation`, `network.allowAllUnixSockets`, `network.allowLocalBinding` | `true`. Un `false` s'applique toujours |

819| `enabled`, `failIfUnavailable` | `false`, lorsque le `~/.claude/settings.json` du développeur définit `true` |

820| `filesystem.allowRead` | Une entrée au niveau ou en dessous d'un chemin dont les paramètres gérés, `--settings` ou les paramètres utilisateur refusent la lecture, ou un glob qui pourrait correspondre à un tel chemin |

821 

822Ces paramètres s'appliquent toujours tant que le sandbox est exigé par l'administrateur :

823 

824* **Dans les fichiers d'un dépôt** : les entrées de refus et la valeur `autoAllowBashIfSandboxed`. Définissez la clé dans les paramètres gérés pour empêcher un dépôt de la modifier

825* **Dans les propres paramètres d'un développeur** : les paramètres du tableau s'appliquent toujours depuis `~/.claude/settings.json` ou `--settings`, sauf si un verrou géré uniquement tel que `allowManagedDomainsOnly` les couvre. La plupart d'entre eux, comme `excludedCommands` et `filesystem.allowWrite`, n'ont pas de verrou géré uniquement

826 

827La configuration sous [Appliquer le sandboxing avec les paramètres gérés](#enforce-sandboxing-with-managed-settings) rend le sandbox exigé par l'administrateur. Ajoutez aux paramètres gérés les entrées `excludedCommands`, `allowWrite` et de sockets dont vos outils approuvés ont besoin, car un dépôt ne peut pas les fournir.

828 

829Nécessite Claude Code v2.1.285 ou ultérieur. De la v2.1.282 à la v2.1.284, les mêmes paramètres faisaient ignorer à Claude Code les entrées `excludedCommands` d'un dépôt.

830 

831<h4 id="locks-that-apply-without-an-admin-required-sandbox">

832 Verrous qui s'appliquent sans sandbox exigé par l'administrateur

833</h4>

834 

835Certains paramètres font ignorer à Claude Code les clés de dépôt qui remplacent directement une restriction, même lorsque le sandbox n'est pas exigé par l'administrateur. Chacun n'a cet effet que lorsque vous le définissez dans un fichier nommé dans sa ligne, et les autres paramètres de sandbox du dépôt s'appliquent toujours. Nécessite Claude Code v2.1.285 ou ultérieur.

836 

837| Paramètre | Où le définir | Ce que Claude Code ignore dans les paramètres d'un dépôt |

838| :- | :- | :- |

839| `network.deniedDomains` ou une règle de refus `WebFetch(domain:...)` | Paramètres gérés, `--settings` | `httpProxyPort` et `socksProxyPort` |

840| `network.strictAllowlist` | Paramètres gérés, `--settings`, paramètres utilisateur | Les ports de proxy, `allowedDomains` et les règles d'autorisation `WebFetch(domain:...)` |

841| `filesystem.denyRead`, une règle de refus `Read(...)` ou une entrée `credentials.files` | Paramètres gérés, `--settings` | Une entrée `allowRead`, `allowWrite`, d'autorisation `Edit(...)` ou `additionalDirectories` au niveau ou en dessous d'un chemin dont les paramètres gérés, `--settings` ou les paramètres utilisateur refusent la lecture, ou un glob qui pourrait correspondre à un tel chemin |

842 

843Ces verrous modifient ce que les commandes sandboxées peuvent atteindre. L'outil WebFetch et les outils de fichiers de Claude suivent toujours les règles et les répertoires supplémentaires d'un dépôt.

716 844 

717<h3 id="custom-proxy-configuration">845<h3 id="custom-proxy-configuration">

718 Configuration de proxy personnalisée846 Configuration de proxy personnalisée

719</h3>847</h3>

720 848 

721Pour les organisations nécessitant une sécurité réseau avancée, vous pouvez implémenter un proxy personnalisé pour :849Pour inspecter, filtrer ou journaliser le trafic sandbox avec vos propres outils, remplacez le proxy intégré du sandbox par un proxy que vous exécutez sur la même machine.

722 850 

723* Déchiffrer et inspecter le trafic HTTPS851Pour acheminer le trafic sandbox via un proxy d'entreprise situé ailleurs sur votre réseau, définissez plutôt `HTTPS_PROXY`, comme le décrit l'entrée **Proxy d'entreprise** sous [Isolation réseau](#network-isolation). Ainsi, la liste d'autorisation de Claude Code s'applique toujours.

724* Appliquer des règles de filtrage personnalisées

725* Enregistrer toutes les demandes réseau

726* Intégrer avec l'infrastructure de sécurité existante

727 852 

728Pour pointer Claude Code vers votre proxy, définissez les ports proxy dans [paramètres de sandbox](/docs/fr/settings-reference#sandbox-settings) :853Pour diriger les commandes sandboxées vers votre proxy, définissez les ports localhost sur lesquels il écoute dans les [paramètres de sandbox](/docs/fr/settings-reference#sandbox-settings) :

729 854 

730```json theme={null}855```json theme={null}

731{856{


738}863}

739```864```

740 865 

866Si vous définissez un port et définissez également `HTTPS_PROXY` ou `HTTP_PROXY`, Claude Code ne transmet pas ce que les commandes sandboxées envoient à votre proxy vers le proxy nommé par ces variables. Pour atteindre un proxy d'entreprise, configurez votre propre proxy pour qu'il y transfère le trafic.

867 

868Les fichiers pouvant définir un port dépendent de vos autres paramètres de sandbox :

869 

870* **`allowManagedDomainsOnly` est activé** : paramètres gérés uniquement

871* **Le sandbox est [exigé par l'administrateur](#repository-settings-under-an-admin-required-sandbox), ou un [verrou réseau plus restreint](#locks-that-apply-without-an-admin-required-sandbox) s'applique** : paramètres gérés, `--settings` et paramètres utilisateur

872* **Sinon** : n'importe quel fichier de paramètres

873 

874Claude Code ignore un port défini ailleurs. Avant la v2.1.285, n'importe quel fichier de paramètres pouvait définir un port.

875 

876<Warning>

877 Dès que l'un ou l'autre port s'applique, votre proxy est responsable du filtrage de tout ce qui lui est envoyé. Les contrôles réseau propres à Claude Code, tels que `allowedDomains`, `deniedDomains`, `strictAllowlist`, les demandes d'approbation et la [vérification des adresses locales](#hostnames-that-resolve-to-local-addresses), cessent de s'appliquer à ce trafic. Une commande sandboxée peut se connecter à l'un ou l'autre proxy, donc si vous ne définissez qu'un seul port, les listes de domaines de Claude Code sur l'autre proxy ne limitent pas ce que la commande atteint via le vôtre.

878</Warning>

879 

741<h2 id="troubleshooting">880<h2 id="troubleshooting">

742 Dépannage881 Dépannage

743</h2>882</h2>

744 883 

745Certaines commandes échouent à l'intérieur du sandbox même si elles fonctionnent en dehors. Les correctifs ci-dessous couvrent les cas les plus courants.884Certaines commandes échouent à l'intérieur du sandbox même si elles fonctionnent en dehors. Trouvez le titre qui correspond à votre symptôme ou à votre message d'erreur.

885 

886Si le sandbox de votre organisation est [imposé par l'administrateur](#repository-settings-under-an-admin-required-sandbox), Claude Code ignore les paramètres cités par ces correctifs dans les fichiers de paramètres d'un projet. Enregistrez-les donc dans `~/.claude/settings.json`, où ils s'appliquent à tous les projets. Si un correctif reste sans effet, il se peut que les paramètres gérés de votre organisation définissent cette clé.

887 

888Un correctif qui ajoute un motif `excludedCommands` retire du sandbox les commandes correspondant à ce motif. Consultez [ce qu'une commande exclue peut faire](#run-commands-outside-the-sandbox-with-excludedcommands).

746 889 

747* **Les commandes échouent avec une erreur host-not-allowed** : de nombreux outils CLI doivent atteindre des hôtes spécifiques. Accorder la permission lorsque vous y êtes invité ajoute l'hôte à votre liste autorisée pour que l'outil s'exécute à l'intérieur du sandbox à l'avenir.890<h3 id="commands-fail-with-a-host-not-allowed-error">

748* **`jest` se bloque ou échoue** : `watchman` est incompatible avec le sandbox. Exécutez `jest --no-watchman` à la place.891 Les commandes échouent avec une erreur host-not-allowed

749* **Les CLI basés sur Go échouent la vérification TLS sur macOS** : les outils tels que `gh`, `gcloud` et `terraform` peuvent échouer la vérification TLS sous Seatbelt. Listez ces outils dans [`excludedCommands`](/docs/fr/settings-reference#sandbox-excludedcommands). Si vous utilisez `httpProxyPort` avec un proxy MITM et une CA personnalisée, définissez [`enableWeakerNetworkIsolation`](/docs/fr/settings-reference#sandbox-enableweakernetworkisolation) sur `true` à la place.892</h3>

750* **Les commandes `open`, `osascript` ou les flux d'authentification basés sur un navigateur échouent avec l'erreur `-600` sur macOS** : le sandbox bloque les Apple Events par défaut. Définissez [`allowAppleEvents`](/docs/fr/settings-reference#sandbox-allowappleevents) sur `true` dans vos paramètres utilisateur, gérés ou CLI pour les autoriser. Les paramètres du projet sont ignorés pour cette clé. L'activation supprime l'isolation de l'exécution du code, car les commandes sandboxées peuvent alors lancer d'autres applications non sandboxées sans invite utilisateur et envoyer des commandes AppleScript aux applications en cours d'exécution, sous réserve de l'invite de consentement à l'automatisation macOS (TCC). Vous pouvez également ajouter la commande à [`excludedCommands`](/docs/fr/settings-reference#sandbox-excludedcommands).893 

751* **Les commandes `docker` échouent** : `docker` est incompatible avec le sandbox. Ajoutez `docker *` à [`excludedCommands`](/docs/fr/settings-reference#sandbox-excludedcommands).894De nombreux outils CLI doivent atteindre des hôtes spécifiques. Approuvez l'hôte lorsque cela vous est demandé, ou ajoutez-le à [`allowedDomains`](/docs/fr/settings-reference#sandbox-network-alloweddomains). Si votre organisation verrouille la liste d'autorisation avec `allowManagedDomainsOnly`, aucune demande n'apparaît : demandez alors à votre administrateur d'ajouter l'hôte.

752* **`pbcopy`, `xclip` ou `wl-copy` ne met pas à jour le presse-papiers** : ces utilitaires de presse-papiers peuvent échouer à atteindre le presse-papiers système de l'intérieur du sandbox, auquel cas le texte qui leur est envoyé par pipe n'arrive pas.

753 895 

754 Pour mettre la sortie de Claude sur votre presse-papiers, demandez à Claude de l'imprimer dans sa réponse, puis exécutez [`/copy`](/docs/fr/commands). `/copy` écrit dans le presse-papiers à partir du processus Claude Code plutôt qu'à partir d'une commande sandboxée.896<h3 id="jest-hangs-or-fails">

897 `jest` se bloque ou échoue

898</h3>

755 899 

756 Lorsque Claude envoie du texte par pipe à l'un de ces outils, ajouter l'outil à [`excludedCommands`](/docs/fr/settings-reference#sandbox-excludedcommands) ne retire pas cet appel du sandbox en soi.900`watchman` est incompatible avec le sandbox. Exécutez `jest --no-watchman` à la place.

757* **Une commande git échoue avec `unable to unlink old`** : `git merge`, `git checkout` et les commandes similaires échouent de cette façon lorsqu'elles doivent remplacer un fichier auquel le sandbox refuse les écritures, que ce fichier soit sous un [chemin protégé](#protected-paths) tel que `.claude/skills`, sous l'une de vos entrées `denyWrite` ou en dehors des répertoires dans lesquels le sandbox permet aux commandes d'écrire. Sur Linux et WSL2, l'erreur se termine par `Read-only file system`.

758 901 

759 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).902<h3 id="go-based-clis-fail-tls-verification-on-macos">

760* **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.903 Les CLI basés sur Go échouent la vérification TLS sur macOS

761* **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.904</h3>

905 

906Les outils tels que `gh`, `gcloud` et `terraform` peuvent échouer la vérification TLS sous [Seatbelt](#os-level-enforcement). Pour exécuter ces outils en dehors du sandbox, ajoutez un motif pour chaque outil, tel que `gh *`, à [`excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands). L'outil s'exécute alors avec votre accès complet et ses identifiants enregistrés. Si vous utilisez `httpProxyPort` avec un proxy MITM et une CA personnalisée, définissez [`enableWeakerNetworkIsolation`](/docs/fr/settings-reference#sandbox-enableweakernetworkisolation) sur `true` à la place.

907 

908<h3 id="open-osascript-or-browser-based-auth-flows-fail-with-error-600-on-macos">

909 Les commandes `open`, `osascript` ou les flux d'authentification basés sur un navigateur échouent avec l'erreur `-600` sur macOS

910</h3>

911 

912Le sandbox bloque les Apple Events par défaut. Définissez [`allowAppleEvents`](/docs/fr/settings-reference#sandbox-allowappleevents) sur `true` dans vos paramètres utilisateur, gérés ou CLI pour les autoriser. Claude Code ignore cette clé dans les paramètres du projet.

913 

914L'activation de `allowAppleEvents` supprime l'isolation de l'exécution du code, car les commandes sandboxées peuvent alors lancer d'autres applications non sandboxées sans invite utilisateur et envoyer des commandes AppleScript aux applications en cours d'exécution, sous réserve de l'invite de consentement à l'automatisation macOS (TCC). Vous pouvez également ajouter un motif tel que `open *` à [`excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands). Chaque appel à `open` passe alors par le flux de permission, et `open` peut lancer n'importe quel fichier ou application, y compris un fichier écrit par Claude.

915 

916<h3 id="docker-commands-fail">

917 Les commandes `docker` échouent

918</h3>

762 919 

763 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.920`docker` est incompatible avec le sandbox. Retirez du sandbox les commandes `docker` dont vous avez besoin avec un motif `excludedCommands` tel que `docker compose *`. [Exécuter des commandes en dehors du sandbox avec `excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands) explique ce qu'une commande `docker` exclue peut atteindre. Un motif plus restreint retire moins de commandes du sandbox.

764* **`--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.921 

922<h3 id="pbcopy-xclip-or-wl-copy-doesn’t-update-the-clipboard">

923 `pbcopy`, `xclip` ou `wl-copy` ne met pas à jour le presse-papiers

924</h3>

925 

926Les utilitaires de presse-papiers `pbcopy`, `xclip` et `wl-copy` peuvent échouer à atteindre le presse-papiers système de l'intérieur du sandbox, auquel cas le texte qui leur est envoyé par pipe n'arrive pas.

927 

928Pour mettre la sortie de Claude sur votre presse-papiers, demandez à Claude de l'imprimer dans sa réponse, puis exécutez [`/copy`](/docs/fr/commands). `/copy` écrit dans le presse-papiers à partir du processus Claude Code plutôt qu'à partir d'une commande sandboxée.

929 

930Lorsque Claude envoie du texte par pipe à l'un de ces outils, ajouter l'outil à [`excludedCommands`](/docs/fr/settings-reference#sandbox-excludedcommands) ne retire pas cet appel du sandbox en soi.

931 

932<h3 id="a-git-command-fails-with-unable-to-unlink-old">

933 Une commande git échoue avec `unable to unlink old`

934</h3>

935 

936`git merge`, `git checkout` et les commandes similaires échouent avec `unable to unlink old` lorsqu'elles doivent remplacer un fichier auquel le sandbox refuse les écritures. Sur Linux et WSL2, l'erreur se termine par `Read-only file system`. Le fichier peut se trouver à l'un de ces emplacements :

937 

938* Sous un [chemin protégé](#protected-paths) tel que `.claude/skills`

939* Sous l'une de vos entrées `denyWrite`

940* En dehors des répertoires dans lesquels le sandbox permet aux commandes d'écrire

941 

942Aprè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.

943 

944<h3 id="bubblewrap-fails-to-start-inside-a-container">

945 Bubblewrap échoue à démarrer à l'intérieur d'un conteneur

946</h3>

947 

948Dans un conteneur sans privilèges, [bubblewrap](#os-level-enforcement) 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 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 aux commandes sandboxées des informations de processus qu'un montage `/proc` frais cacherait.

949 

950<h3 id="0-byte-read-only-files-appear-at-claude-settings-paths-and-yes-and-don’t-ask-again-doesn’t-save">

951 Des fichiers en lecture seule de 0 octet apparaissent aux chemins des paramètres `.claude`, et « Oui, et ne pas demander à nouveau » ne sauvegarde pas

952</h3>

953 

954Sur 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 à cet emplacement pendant qu'une commande sandboxée s'exécute. Le sandbox supprime l'espace réservé ensuite. 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 à nouveau en lecture seule à chaque démarrage, donc une écriture de paramètres telle que l'enregistrement d'un choix de permission échoue à un chemin où un espace réservé subsiste.

955 

956Exécutez `claude doctor` dans votre terminal 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) en nomme certains 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.

957 

958<h3 id="git-over-ssh-fails-with-the-sandbox-on">

959 `git` via SSH échoue lorsque le sandbox est activé

960</h3>

961 

962Sur macOS, `git fetch`, `git pull` et `git push` vers un dépôt distant SSH échouent à l'intérieur du sandbox même lorsque l'hôte est autorisé. Sur Linux et WSL2, ils fonctionnent dès que l'hôte est autorisé. Claude Code fait transiter la connexion SSH de git par un tunnel via le [proxy du sandbox](#network-isolation), et le tunnel macOS ne peut pas s'authentifier auprès de ce proxy.

963 

964Sur Linux et WSL2, vérifiez les points suivants si la connexion échoue toujours :

965 

966* **L'hôte est autorisé sur le port 22** : une entrée `allowedDomains` sans port, telle que `"git.example.com"`, le couvre

967* **Votre proxy d'entreprise autorise le port 22** : si votre réseau exige un proxy en amont, le tunnel passe également par celui-ci

968* **La clé est lisible en tant que fichier** : le sandbox peut bloquer le socket `ssh-agent`, et une entrée `denyRead` ou `credentials` pour `~/.ssh` masque vos fichiers de clé

969 

970Sur macOS, basculez le dépôt distant vers HTTPS, ce qui nécessite des identifiants HTTPS tels qu'un jeton d'accès personnel :

971 

972```bash theme={null}

973git remote set-url origin https://git.example.com/example-org/example-repo.git

974```

975 

976Si vous devez conserver le dépôt distant SSH, retirez les commandes réseau de git du sandbox avec [`excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands) :

977 

978```json theme={null}

979{

980 "sandbox": {

981 "excludedCommands": ["git fetch *", "git pull *", "git push *"]

982 }

983}

984```

985 

986Ces entrées correspondent à `git push origin main`. Un appel qui ajoute un `cd`, utilise `git -C` ou contient une substitution de commande reste sandboxé. Les commandes git exclues peuvent atteindre n'importe quel hôte, et pas seulement ceux figurant dans `allowedDomains`.

987 

988Les commandes `ssh`, `scp` et `rsync` simples via SSH échouent pour la raison indiquée dans [l'entrée sur les clients de base de données](#a-database-client-or-other-non-http-tool-fails-to-reach-an-allowed-host).

989 

990<h3 id="a-database-client-or-other-non-http-tool-fails-to-reach-an-allowed-host">

991 Un client de base de données ou un autre outil non HTTP ne parvient pas à atteindre un hôte autorisé

992</h3>

993 

994Un outil qui ignore les variables d'environnement du proxy ne peut pas se connecter depuis l'intérieur du sandbox, même à un hôte figurant dans `allowedDomains`. Une commande sandboxée n'a [aucune route directe vers le réseau](#network-isolation), donc un outil qui ouvre sa propre connexion échoue. La plupart des pilotes de base de données, `ssh` simple et les outils qui utilisent UDP se comportent ainsi.

995 

996L'échec se présente comme une erreur réseau ou de résolution de nom :

997 

998* **macOS** : `Operation not permitted`, ou une erreur de résolution de nom telle que `Could not resolve host`

999* **Linux et WSL2** : `Network is unreachable`, ou une erreur de résolution de nom telle que `Temporary failure in name resolution`

1000 

1001Un outil qui utilise le proxy échoue différemment lorsque son hôte n'est pas autorisé. Vous recevez une demande de permission réseau, ou l'outil reçoit une réponse `403` du proxy.

1002 

1003Pour permettre à l'outil de se connecter, exécutez la commande qui en a besoin en dehors du sandbox avec [`excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands). Cet exemple exclut un script et ajoute une [règle ask](/docs/fr/permissions) afin que vous approuviez chaque exécution :

1004 

1005```json theme={null}

1006{

1007 "sandbox": {

1008 "excludedCommands": ["python scripts/load_orders.py *"]

1009 },

1010 "permissions": {

1011 "ask": ["Bash(python scripts/load_orders.py *)"]

1012 }

1013}

1014```

1015 

1016Le script s'exécute avec votre accès complet, et Claude peut modifier un script situé dans votre répertoire de travail : examinez-le donc lorsque la demande apparaît.

1017 

1018<h3 id="a-command-fails-to-reach-a-server-on-localhost">

1019 Une commande ne parvient pas à atteindre un serveur sur localhost

1020</h3>

1021 

1022Par défaut, une commande sandboxée ne peut pas se connecter directement à un serveur qui s'exécute sur votre machine en dehors du sandbox, comme un serveur de développement ou une base de données dans un conteneur. Ce que vous pouvez modifier dépend de votre plateforme :

1023 

1024* **macOS** : définissez [`network.allowLocalBinding`](/docs/fr/settings-reference#sandbox-network-allowlocalbinding) sur `true`. Les commandes sandboxées peuvent alors écouter sur des ports réseau et se connecter à n'importe quel port sur localhost, ce qui inclut tous les autres services qui y écoutent. Un service localhost qui n'exige pas d'authentification, comme un débogueur, peut alors agir pour le compte de la commande en dehors du sandbox, et une commande qui écoute sur une adresse autre que loopback accepte les connexions d'autres machines

1025* **Linux et WSL2** : le `localhost` d'une commande sandboxée est privé à cette commande. La commande peut écouter sur un port et atteindre les serveurs qu'elle a elle-même démarrés. Une connexion directe à `localhost` ou `127.0.0.1` n'atteint pas les serveurs de l'hôte, et `allowLocalBinding` n'a aucun effet. Exécutez la commande qui a besoin du serveur de l'hôte en dehors du sandbox avec [`excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands), où elle n'a aucune limite de système de fichiers ni de réseau. Pour les connexions qui passent par le proxy du sandbox, consultez [Noms d'hôte qui se résolvent en adresses locales](#hostnames-that-resolve-to-local-addresses)

1026 

1027Cet exemple active le paramètre pour macOS :

1028 

1029```json theme={null}

1030{

1031 "sandbox": {

1032 "network": {

1033 "allowLocalBinding": true

1034 }

1035 }

1036}

1037```

1038 

1039Une entrée `allowedDomains` pour `localhost` s'applique aux connexions qui passent par le proxy, elle ne modifie donc pas une connexion directe. Claude Code définit `NO_PROXY` pour les commandes sandboxées afin qu'elles se connectent à `localhost` directement plutôt que via le proxy. L'entrée expose également tous les ports du localhost de votre machine à une commande qui utilise le proxy. Pour un nom d'hôte de développement qui pointe vers `127.0.0.1`, consultez [Un nom d'hôte autorisé est refusé avec `resolved to a loopback address`](#an-allowed-hostname-is-refused-with-resolved-to-a-loopback-address).

1040 

1041<h3 id="an-allowed-hostname-is-refused-with-resolved-to-a-loopback-address">

1042 Un nom d'hôte autorisé est refusé avec `resolved to a loopback address`

1043</h3>

1044 

1045Le proxy du sandbox refuse un nom d'hôte autorisé qui [se résout en une adresse locale](#hostnames-that-resolve-to-local-addresses), ce qui affecte les noms de développement tels que `myapp.test` qui pointent vers `127.0.0.1`. La commande reçoit une réponse `403` dont le corps indique le type d'adresse, par exemple `Connection to myapp.test blocked: resolved to a loopback address`.

1046 

1047Ajoutez l'adresse IP en laquelle le nom se résout à côté du nom d'hôte dans `allowedDomains`, chacun avec le port sur lequel votre serveur écoute :

1048 

1049```json theme={null}

1050{

1051 "sandbox": {

1052 "network": {

1053 "allowedDomains": ["myapp.test:3000", "127.0.0.1:3000"]

1054 }

1055 }

1056}

1057```

1058 

1059Une entrée d'adresse IP sans port permet aux commandes sandboxées d'atteindre tous les services qui écoutent sur cette adresse.

1060 

1061Avant v2.1.284, le proxy se connectait à l'adresse en laquelle se résolvait un nom d'hôte autorisé, quelle qu'elle soit.

1062 

1063<h3 id="/sandbox-fails-with-sandbox-settings-are-overridden-by-a-higher-priority-configuration">

1064 `/sandbox` échoue avec `Sandbox settings are overridden by a higher-priority configuration`

1065</h3>

1066 

1067`/sandbox` affiche `Error: Sandbox settings are overridden by a higher-priority configuration and cannot be changed locally.` au lieu d'ouvrir son panneau lorsqu'un [niveau de paramètres](/docs/fr/settings#settings-precedence) supérieur définit `sandbox.enabled`, `sandbox.autoAllowBashIfSandboxed` ou `sandbox.allowUnsandboxedCommands`. Le panneau enregistre vos choix dans `.claude/settings.local.json`, et une valeur enregistrée à cet endroit ne peut pas remplacer ces niveaux.

1068 

1069Les paramètres gérés et `--settings` ont priorité sur les paramètres locaux. Pour voir lesquels ont été chargés dans cette session, exécutez `/status` et lisez la ligne `Setting sources` :

1070 

1071* **`Command line arguments`** : si vous avez démarré Claude Code avec [`--settings`](/docs/fr/settings#change-a-setting-for-one-session), vérifiez si le fichier ou le JSON que vous avez transmis définit l'une de ces clés. Si c'est le cas, modifiez la valeur à cet endroit, ou redémarrez Claude Code sans ces clés.

1072* **`Enterprise managed settings`** : les paramètres gérés de votre organisation sont chargés. S'ils définissent l'une de ces clés, vous ne pouvez pas modifier cette clé depuis `/sandbox` ni depuis aucun fichier de paramètres que vous contrôlez : adressez-vous donc à votre administrateur.

765 1073 

766<h2 id="limitations">1074<h2 id="limitations">

767 Limitations1075 Limitations


773 Limitations de sécurité1081 Limitations de sécurité

774</h3>1082</h3>

775 1083 

776* **Filtrage réseau** : le sandbox restreint les domaines auxquels les processus peuvent se connecter. Par défaut, le proxy intégré ne termine pas ou n'inspecte pas TLS sur le trafic sortant, le contenu des connexions chiffrées n'est donc pas examiné. Le paramètre expérimental [`network.tlsTerminate`](/docs/fr/settings-reference#sandbox-network-tlsterminate) termine TLS au proxy pour la [substitution de credentials `mask`](#mask-credentials) mais n'ajoute pas de filtrage de contenu. Vous êtes responsable de vous assurer que seuls les domaines de confiance sont autorisés dans votre politique.1084* **Filtrage réseau** : le sandbox restreint les domaines auxquels les processus peuvent se connecter. Par défaut, le proxy intégré ne termine pas ou n'inspecte pas TLS sur le trafic sortant, le contenu des connexions chiffrées n'est donc pas examiné. Le paramètre expérimental [`network.tlsTerminate`](/docs/fr/settings-reference#sandbox-network-tlsterminate) termine TLS au proxy pour la [substitution d'identifiants `mask`](#mask-credentials) mais n'ajoute pas de filtrage de contenu. Vous êtes responsable de vous assurer que seuls les domaines de confiance sont autorisés dans votre politique.

777 1085 

778<Warning>1086<Warning>

779 Autoriser des domaines larges tels que `github.com` peut créer des chemins pour l'exfiltration de données. Parce que le proxy prend sa décision d'autorisation à partir du nom d'hôte fourni par le client sans inspecter TLS, le code s'exécutant à l'intérieur du sandbox peut potentiellement utiliser [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting) ou des techniques similaires pour atteindre des hôtes en dehors de la liste d'autorisation. Si votre modèle de menace nécessite des garanties plus fortes, configurez un [proxy personnalisé](#custom-proxy-configuration) qui termine TLS et inspecte le trafic, et installez son certificat CA à l'intérieur du sandbox. L'isolation réseau plus forte consciente de TLS est un domaine actif de développement.1087 Autoriser des domaines larges tels que `github.com` peut créer des chemins pour l'exfiltration de données. Parce que le proxy prend sa décision d'autorisation à partir du nom d'hôte fourni par le client sans inspecter TLS, le code s'exécutant à l'intérieur du sandbox peut potentiellement utiliser [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting) ou des techniques similaires pour atteindre des hôtes en dehors de la liste d'autorisation. Si votre modèle de menace nécessite des garanties plus fortes, configurez un [proxy personnalisé](#custom-proxy-configuration) qui termine TLS et inspecte le trafic, et installez son certificat CA à l'intérieur du sandbox. L'isolation réseau plus forte consciente de TLS est un domaine actif de développement.

780</Warning>1088</Warning>

781 1089 

782* **Escalade de privilèges via les sockets de domaine Unix** : la configuration `allowUnixSockets` peut accorder involontairement l'accès à des services système qui pourraient entraîner des contournements du sandbox. Par exemple, autoriser l'accès à `/var/run/docker.sock` accorde effectivement l'accès au système hôte via le socket Docker. Considérez attentivement tous les sockets Unix que vous autorisez via le sandbox.1090* **Escalade de privilèges via les sockets Unix** : la configuration `allowUnixSockets` peut accorder involontairement l'accès à des services système qui pourraient entraîner des contournements du sandbox. Par exemple, autoriser l'accès à `/var/run/docker.sock` accorde effectivement l'accès au système hôte via le socket Docker. Considérez attentivement tous les sockets Unix que vous autorisez via le sandbox.

783* **Escalade de permissions du système de fichiers** : les permissions d'écriture du système de fichiers trop larges peuvent permettre des attaques d'escalade de privilèges. Autoriser les écritures dans les répertoires contenant des exécutables dans `$PATH`, les répertoires de configuration système ou les fichiers de configuration shell utilisateur tels que `.bashrc` ou `.zshrc` peut entraîner l'exécution de code dans différents contextes de sécurité lorsque d'autres utilisateurs ou processus système accèdent à ces fichiers.1091* **Escalade de permissions du système de fichiers** : les permissions d'écriture du système de fichiers trop larges peuvent permettre des attaques d'escalade de privilèges. Autoriser les écritures dans les répertoires contenant des exécutables dans `$PATH`, les répertoires de configuration système ou les fichiers de configuration shell utilisateur tels que `.bashrc` ou `.zshrc` peut entraîner l'exécution de code dans différents contextes de sécurité lorsque d'autres utilisateurs ou processus système accèdent à ces fichiers.

784* **Force du sandbox Linux** : l'implémentation Linux fournit une isolation forte du système de fichiers et du réseau mais inclut un mode `enableWeakerNestedSandbox` qui lui permet de fonctionner à l'intérieur des environnements Docker sans espaces de noms privilégiés, ou sur les hôtes Linux où les espaces de noms utilisateur sans privilèges sont désactivés par sysctl. Cette option affaiblit considérablement la sécurité et ne doit être utilisée que lorsqu'une isolation supplémentaire est autrement appliquée.1092* **Force du sandbox Linux** : l'implémentation Linux fournit une isolation forte du système de fichiers et du réseau mais inclut un mode `enableWeakerNestedSandbox` qui lui permet de fonctionner à l'intérieur des environnements Docker sans espaces de noms privilégiés. Cette option affaiblit considérablement la sécurité et ne doit être utilisée que lorsqu'une isolation supplémentaire est autrement appliquée.

785* **Apple Events sur macOS** : le sandbox macOS bloque les Apple Events par défaut. Le paramètre `allowAppleEvents` lève cette restriction afin que les outils tels que `open` et `osascript` fonctionnent, mais il supprime l'isolation de l'exécution du code : les commandes sandboxées peuvent lancer d'autres applications sans sandbox sans invite utilisateur, et peuvent envoyer des commandes AppleScript aux applications en cours d'exécution, sous réserve de l'invite de consentement à l'automatisation macOS par application (TCC). Il n'est honoré que par les paramètres utilisateur, gérés ou CLI. Les paramètres de projet ne peuvent pas l'activer.1093* **Apple Events sur macOS** : le sandbox macOS bloque les Apple Events par défaut. Le paramètre `allowAppleEvents` lève cette restriction afin que les outils tels que `open` et `osascript` fonctionnent, mais il supprime l'isolation de l'exécution du code : les commandes sandboxées peuvent lancer d'autres applications sans sandbox sans invite utilisateur, et peuvent envoyer des commandes AppleScript aux applications en cours d'exécution, sous réserve de l'invite de consentement à l'automatisation macOS par application (TCC). Il n'est honoré que par les paramètres utilisateur, gérés ou CLI. Les paramètres de projet ne peuvent pas l'activer.

786 1094 

787<h3 id="platform-and-tool-compatibility">

788 Compatibilité de plateforme et d'outil

789</h3>

790 

791* **Support de plateforme** : supporte macOS, Linux et WSL2. WSL1 et Windows natif ne sont pas supportés.

792* **Surcharge de performance** : minimale, mais certaines opérations du système de fichiers peuvent être légèrement plus lentes.

793* **Compatibilité d'outil** : certains outils qui nécessitent des modèles d'accès système spécifiques peuvent nécessiter des ajustements de configuration, ou peuvent avoir besoin d'être exécutés en dehors du sandbox.

794 

795<h3 id="scope">1095<h3 id="scope">

796 Portée1096 Portée

797</h3>1097</h3>

798 1098 

799Le sandbox isole les sous-processus Bash. Les autres outils fonctionnent sous des limites différentes :1099Le sandbox isole les commandes shell et leurs processus enfants. [Ce qui s'exécute en dehors du sandbox](#what-runs-outside-the-sandbox) répertorie les outils et processus auxiliaires qu'il ne couvre pas. L'utilisation de l'ordinateur et les sous-agents se rapportent au sandbox comme suit :

800 1100 

801* **Outils de fichiers intégrés** : Read, Edit et Write utilisent le système de permissions directement plutôt que de s'exécuter via le sandbox. Consultez [permissions](/docs/fr/permissions).

802* **Utilisation de l'ordinateur** : lorsque Claude ouvre des applications et contrôle votre écran, il s'exécute sur votre bureau réel plutôt que dans un environnement isolé. Les invites de permission par application contrôlent chaque application. Consultez [utilisation de l'ordinateur dans la CLI](/docs/fr/computer-use) ou [utilisation de l'ordinateur dans Desktop](/docs/fr/desktop#let-claude-use-your-computer).1101* **Utilisation de l'ordinateur** : lorsque Claude ouvre des applications et contrôle votre écran, il s'exécute sur votre bureau réel plutôt que dans un environnement isolé. Les invites de permission par application contrôlent chaque application. Consultez [utilisation de l'ordinateur dans la CLI](/docs/fr/computer-use) ou [utilisation de l'ordinateur dans Desktop](/docs/fr/desktop#let-claude-use-your-computer).

803* **Variables d'environnement** : les commandes Bash sandboxées héritent de l'environnement du processus parent par défaut, y compris les identifiants définis là-bas. Utilisez [`sandbox.credentials`](#protect-credentials) pour supprimer ou masquer les variables spécifiques pour les commandes sandboxées, ou définissez [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/fr/env-vars) pour supprimer les identifiants de tous les sous-processus.

804* **Sous-agents** : les [sous-agents](/docs/fr/sub-agents) s'exécutent dans le même processus que la session parent et utilisent la même configuration de sandbox. Les commandes Bash à l'intérieur d'un sous-agent sont sandboxées lorsque le sandboxing est activé dans la session parent.1102* **Sous-agents** : les [sous-agents](/docs/fr/sub-agents) s'exécutent dans le même processus que la session parent et utilisent la même configuration de sandbox. Les commandes Bash à l'intérieur d'un sous-agent sont sandboxées lorsque le sandboxing est activé dans la session parent.

1103* **Mods** : un [mod](/docs/fr/plugins/mods/overview) est un plugin qui exécute son propre code à l'intérieur de Claude Code, et un processus lancé par un mod s'exécute en dehors du sandbox. Consultez [Ce qu'un mod peut atteindre](/docs/fr/plugins/mods/overview#what-a-mod-can-reach).

805 1104 

806<Warning>1105<Warning>

807 Un sandboxing efficace nécessite à la fois l'isolation du système de fichiers et du réseau. Sans isolation réseau, un agent compromis pourrait exfiltrer des fichiers sensibles comme les clés SSH. Sans isolation du système de fichiers, qu'elle provienne d'une politique permissive ou de la [désactivation de la couche système de fichiers](#disable-filesystem-isolation), un agent compromis pourrait installer une porte dérobée sur les ressources système pour accéder au réseau. Lorsque vous élargissez les valeurs par défaut, vérifiez qu'un chemin `allowWrite`, une entrée `allowedDomains` large ou une exception `excludedCommands` ne défait pas une restriction de l'autre côté.1106 Un sandboxing efficace nécessite à la fois l'isolation du système de fichiers et du réseau. Sans isolation réseau, un agent compromis pourrait exfiltrer des fichiers sensibles comme les clés SSH. Sans isolation du système de fichiers, qu'elle provienne d'une politique permissive ou de la [désactivation de la couche système de fichiers](#disable-filesystem-isolation), un agent compromis pourrait installer une porte dérobée sur les ressources système pour accéder au réseau. Lorsque vous élargissez les valeurs par défaut, vérifiez qu'un chemin `allowWrite`, une entrée `allowedDomains` large ou une exception `excludedCommands` ne défait pas une restriction de l'autre côté.

security.md +15 −19

Details

20 Architecture basée sur les permissions20 Architecture basée sur les permissions

21</h3>21</h3>

22 22 

23En mode Manuel, Claude Code démarre avec des permissions en lecture seule. Lorsque Claude Code a besoin de modifier des fichiers, d'exécuter des tests ou d'exécuter des commandes, il vous le demande d'abord, et vous choisissez d'approuver l'action une seule fois ou de l'autoriser à partir de ce moment.23Le mode de permission d'une session détermine les actions que Claude peut effectuer sans vous demander au préalable. Le mode auto est le mode de permission de départ intégré pour les sessions interactives dans le terminal et VS Code. [Dans quel mode une session démarre](/docs/fr/permission-modes#which-mode-a-session-starts-in) couvre les versions antérieures, les autres surfaces et les paramètres qui modifient le mode de permission de départ.

24 24 

25En mode Manuel, Claude Code demande également avant d'exécuter les commandes Bash qui peuvent modifier votre système. Il exécute un ensemble intégré de [commandes en lecture seule](/docs/fr/permissions#read-only-commands) telles que `ls`, `cat` et `git status` sans demander. Vous et votre organisation configurez ces permissions directement.25* **Mode auto** : Un modèle classifieur distinct examine les actions à votre place et bloque celles qu'il juge non sécurisées. [Comment le classifieur évalue les actions](/docs/fr/permission-modes#how-the-classifier-evaluates-actions) énumère les actions que Claude Code approuve directement, celles qu'il envoie au classifieur et celles pour lesquelles Claude Code vous demande toujours. Vos règles explicites de demande et de refus s'appliquent toujours, et votre organisation peut [désactiver le mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode)

26* **Mode Manuel** : Claude Code démarre avec des permissions en lecture seule. Lorsqu'il a besoin de modifier des fichiers, d'exécuter des tests ou d'exécuter des commandes, il vous le demande d'abord, et vous choisissez d'approuver l'action une seule fois ou de l'autoriser à partir de ce moment. Il exécute un ensemble intégré de [commandes en lecture seule](/docs/fr/permissions#read-only-commands) telles que `ls`, `cat` et `git status` sans demander

26 27 

27En [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode), un modèle de classificateur distinct examine les actions à votre place et bloque celles qu'il juge non sécurisées. [Comment le classificateur évalue les actions](/docs/fr/permission-modes#how-the-classifier-evaluates-actions) énumère les actions que Claude Code approuve directement, celles qu'il envoie au classificateur et celles pour lesquelles Claude Code vous demande toujours. Vos règles d'approbation et de refus explicites s'appliquent toujours, et votre organisation peut [désactiver le mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode).28Vous et votre organisation configurez ces permissions directement. Pour une configuration détaillée des permissions, consultez [Permissions](/docs/fr/permissions).

28 

29Le mode de permission dans lequel une session démarre dépend de votre plan, de la surface à partir de laquelle vous la démarrez, et de vos paramètres et de ceux de votre organisation ; voir [Modes de permission](/docs/fr/permission-modes#which-mode-a-session-starts-in).

30 

31Pour une configuration détaillée des permissions, consultez [Permissions](/docs/fr/permissions).

32 29 

33<h3 id="built-in-protections">30<h3 id="built-in-protections">

34 Protections intégrées31 Protections intégrées


37Pour atténuer les risques dans les systèmes agentiques :34Pour atténuer les risques dans les systèmes agentiques :

38 35 

39* **Outil bash en sandbox** : [Sandbox](/docs/fr/sandboxing) les commandes bash avec isolation du système de fichiers et du réseau, réduisant les invites de permission tout en maintenant la sécurité. Configurez avec `/sandbox` pour définir les limites où Claude Code peut travailler de manière autonome36* **Outil bash en sandbox** : [Sandbox](/docs/fr/sandboxing) les commandes bash avec isolation du système de fichiers et du réseau, réduisant les invites de permission tout en maintenant la sécurité. Configurez avec `/sandbox` pour définir les limites où Claude Code peut travailler de manière autonome

40* **Limite du répertoire de travail** : En mode Manuel, Claude Code ne peut écrire que dans le dossier où il a été démarré et ses sous-dossiers, et ne peut pas modifier les fichiers dans les répertoires parents sans permission explicite. En mode Manuel, Claude Code vous demande également avant de lire les chemins en dehors de cette limite avec les outils Read, Grep et Glob. Étendez la limite avec des [répertoires supplémentaires](/docs/fr/permissions#working-directories) pour ignorer l'invite, ou restreignez l'accès en lecture plus large disponible pour les commandes Bash en lecture seule avec les [règles `denyRead` du sandbox](/docs/fr/sandboxing#filesystem-isolation), qui s'appliquent uniquement lorsque le sandboxing est activé37* **Limite du répertoire de travail** : En mode Manuel, Claude Code vous demande avant que ses outils de fichiers ne lisent ou n'écrivent en dehors du dossier où il a été démarré et de ses sous-dossiers. Cette limite est une demande de permission : une commande Bash que vous approuvez peut donc toujours écrire partout où votre compte utilisateur le peut

38 * Pour lire un dossier sans la demande, ajoutez-le comme [répertoire supplémentaire](/docs/fr/permissions#working-directories)

39 * Pour restreindre les commandes Bash au niveau du système d'exploitation, activez le [sandboxing](/docs/fr/sandboxing#filesystem-isolation)

41* **Atténuation de la fatigue des invites** : Support pour la liste blanche des commandes sûres fréquemment utilisées par utilisateur, par base de code ou par organisation40* **Atténuation de la fatigue des invites** : Support pour la liste blanche des commandes sûres fréquemment utilisées par utilisateur, par base de code ou par organisation

42* **Mode Accepter les modifications** : Accepte automatiquement les modifications de fichiers et un ensemble fixe de commandes Bash du système de fichiers comme `mkdir`, `touch`, `rm`, `mv`, `cp` et `sed` pour les chemins du répertoire de travail. Les autres commandes Bash et les chemins hors de la portée continuent à afficher des invites41* **Mode Accepter les modifications** : Accepte automatiquement les modifications de fichiers et un ensemble fixe de commandes Bash du système de fichiers comme `mkdir`, `touch`, `rm`, `mv`, `cp` et `sed` pour les chemins du répertoire de travail. Les autres commandes Bash et les chemins hors de la portée continuent à afficher des invites

43 42 


45 Responsabilité de l'utilisateur44 Responsabilité de l'utilisateur

46</h3>45</h3>

47 46 

48Claude Code n'a que les permissions que vous lui accordez. Vous êtes responsable de l'examen du code et des commandes proposés pour la sécurité avant approbation.47Vous êtes responsable de l'examen du code et des commandes proposés pour la sécurité avant approbation.

49 48 

50<h2 id="protect-against-prompt-injection">49<h2 id="protect-against-prompt-injection">

51 Protégez-vous contre l'injection de prompt50 Protégez-vous contre l'injection de prompt


58</h3>57</h3>

59 58 

60* **Système de permissions** : En mode Manuel, les opérations sensibles nécessitent une approbation explicite59* **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ète

62* **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 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)60* **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 61 

65<h3 id="privacy-safeguards">62<h3 id="privacy-safeguards">


79</h3>76</h3>

80 77 

81* **Approbation des demandes réseau** : En mode Manuel, la plupart des outils qui effectuent des demandes réseau nécessitent une approbation utilisateur par défaut78* **Approbation des demandes réseau** : En mode Manuel, la plupart des outils qui effectuent des demandes réseau nécessitent une approbation utilisateur par défaut

82* **Fenêtres de contexte isolées** : Web fetch utilise une fenêtre de contexte séparée pour éviter d'injecter des prompts potentiellement malveillants79* **Résumés de pages web** : Pour la plupart des récupérations, WebFetch exécute un appel de modèle distinct sur la page, et Claude reçoit la réponse de cet appel au lieu de la page brute. Consultez [Comportement de l'outil WebFetch](/docs/fr/tools-reference#webfetch-tool-behavior)

83* **Vérification de confiance** : Les premières exécutions de base de code et les nouveaux serveurs MCP nécessitent une vérification de confiance80* **Vérification de confiance** : Dans une session interactive, Claude Code affiche la boîte de dialogue de confiance de l'espace de travail lorsque vous le démarrez dans un dossier auquel vous n'avez pas encore fait confiance. Les serveurs définis dans le fichier `.mcp.json` d'un projet ont leur propre demande d'approbation, et [Portée projet](/docs/fr/mcp#project-scope) liste les sessions qui l'ignorent

84 * Remarque : La vérification de confiance est désactivée lors de l'exécution non-interactive avec le drapeau `-p`81 * Remarque : Une session `-p` n'affiche aucune de ces deux demandes. [Ce qui s'exécute avant que vous fassiez confiance à un dossier](/docs/fr/permissions#what-runs-before-you-trust-a-folder) liste ce que les fichiers d'un dépôt peuvent y exécuter

85 * Remarque : Lorsque vous démarrez Claude Code directement dans votre répertoire personnel, l'acceptation de la confiance est conservée pour la session actuelle uniquement et n'est pas écrite sur le disque, donc l'invite réapparaît à chaque lancement. Il n'y a aucun paramètre pour la conserver. Démarrez Claude Code à partir d'un sous-répertoire de projet à la place, où l'acceptation de la confiance est enregistrée par répertoire82 * Remarque : Lorsque vous démarrez Claude Code directement dans votre répertoire personnel, l'acceptation de la confiance est conservée pour la session actuelle uniquement et n'est pas écrite sur le disque, donc l'invite réapparaît à chaque lancement. Il n'y a aucun paramètre pour la conserver. Démarrez Claude Code à partir d'un sous-répertoire de projet à la place, où l'acceptation de la confiance est enregistrée par répertoire

86* **Détection d'injection de commande** : En mode Manuel, les commandes bash suspectes nécessitent une approbation manuelle même si elles ont été précédemment autorisées83* **Détection d'injection de commande** : En mode Manuel, Claude Code demande avant d'exécuter une commande Bash qu'il ne peut pas analyser entièrement. Une règle d'autorisation pour une partie d'une commande, telle que `Bash(git *)`, ne permet pas d'ignorer cette demande. Les [commandes exécutées en sandbox](/docs/fr/permissions#how-permissions-interact-with-sandboxing) peuvent s'exécuter sans elle

87* **Correspondance en cas d'échec fermé** : En mode Manuel, les commandes non appariées nécessitent une approbation par défaut84* **Correspondance en cas d'échec fermé** : En mode Manuel, les commandes non appariées nécessitent une approbation par défaut

88* **Descriptions en langage naturel** : Les commandes bash complexes incluent des explications pour la compréhension de l'utilisateur85* **Stockage sécurisé des identifiants** : Les clés API et les tokens sont stockés dans le Keychain macOS lorsqu'il est disponible. Sur Linux, ils sont stockés dans un fichier avec le mode `0600`, et sur Windows dans un fichier qui hérite des contrôles d'accès du répertoire de votre profil utilisateur. Consultez [Gestion des identifiants](/docs/fr/authentication#credential-management)

89* **Stockage sécurisé des identifiants** : Les clés API et les tokens sont stockés dans le Keychain macOS lorsqu'il est disponible, et protégés par les permissions de fichiers sur Windows et Linux. Consultez [Gestion des identifiants](/docs/fr/authentication#credential-management)

90 86 

91<Warning>87<Warning>

92 **Risque de sécurité WebDAV Windows** : Lors de l'exécution de Claude Code sur Windows, nous recommandons de ne pas activer WebDAV ou de permettre à Claude Code d'accéder à des chemins tels que `\\*` qui peuvent contenir des sous-répertoires WebDAV. [WebDAV a été déprécié par Microsoft](https://learn.microsoft.com/en-us/windows/whats-new/deprecated-features#:~:text=The%20Webclient%20\(WebDAV\)%20service%20is%20deprecated) en raison de risques de sécurité. L'activation de WebDAV peut permettre à Claude Code de déclencher des demandes réseau vers des hôtes distants, contournant le système de permissions.88 **Risque de sécurité WebDAV Windows** : Lors de l'exécution de Claude Code sur Windows, nous recommandons de ne pas activer WebDAV ou de permettre à Claude Code d'accéder à des chemins tels que `\\*` qui peuvent contenir des sous-répertoires WebDAV. [WebDAV a été déprécié par Microsoft](https://learn.microsoft.com/en-us/windows/whats-new/deprecated-features#:~:text=The%20Webclient%20\(WebDAV\)%20service%20is%20deprecated) en raison de risques de sécurité. L'activation de WebDAV peut permettre à Claude Code de déclencher des demandes réseau vers des hôtes distants, contournant le système de permissions.


110 Sécurité MCP106 Sécurité MCP

111</h2>107</h2>

112 108 

113Claude Code permet aux utilisateurs de configurer les serveurs Model Context Protocol (MCP). La liste des serveurs MCP autorisés est configurée dans votre code source, dans le cadre des paramètres Claude Code que les ingénieurs enregistrent dans le contrôle de source.109Vous pouvez connecter Claude Code à des serveurs Model Context Protocol (MCP). Les serveurs de portée projet sont définis dans `.mcp.json`, que vous pouvez enregistrer dans le contrôle de source. Les serveurs d'[autres portées](/docs/fr/mcp#mcp-installation-scopes) et les [connecteurs claude.ai](/docs/fr/mcp#how-connectors-reach-claude-code) sont configurés en dehors du dépôt, et les plugins peuvent également ajouter des serveurs. L'examen de `.mcp.json` ne montre donc pas tous les serveurs qu'une session peut charger. Pour restreindre les serveurs exécutés dans votre organisation, consultez [Configuration MCP gérée](/docs/fr/managed-mcp).

114 110 

115Nous vous encourageons à écrire vos propres serveurs MCP ou à utiliser des serveurs MCP de fournisseurs en qui vous avez confiance. Vous pouvez configurer les permissions Claude Code pour les serveurs MCP. Anthropic examine les connecteurs par rapport à ses [critères d'examen](https://claude.com/docs/connectors/building/review-criteria) avant de les ajouter au [Répertoire Anthropic](https://claude.ai/directory), mais n'effectue pas d'audit de sécurité ni ne gère aucun serveur MCP.111Nous vous encourageons à écrire vos propres serveurs MCP ou à utiliser des serveurs MCP de fournisseurs en qui vous avez confiance. Vous pouvez configurer les permissions Claude Code pour les serveurs MCP. Anthropic examine les connecteurs par rapport à ses [critères d'examen](https://claude.com/docs/connectors/building/review-criteria) avant de les ajouter au [Répertoire Anthropic](https://claude.ai/directory), mais n'effectue pas d'audit de sécurité ni ne gère aucun serveur MCP.

116 112 


129* **Machines virtuelles isolées** : Chaque session cloud s'exécute dans une VM isolée gérée par Anthropic125* **Machines virtuelles isolées** : Chaque session cloud s'exécute dans une VM isolée gérée par Anthropic

130* **Contrôles d'accès réseau** : L'accès réseau est limité par défaut et peut être configuré pour être désactivé ou autoriser uniquement des domaines spécifiques126* **Contrôles d'accès réseau** : L'accès réseau est limité par défaut et peut être configuré pour être désactivé ou autoriser uniquement des domaines spécifiques

131* **Protection des identifiants** : Les identifiants GitHub sont stockés chiffrés sur les serveurs d'Anthropic et n'entrent jamais dans la VM de session. La VM détient un identifiant de courte durée limité à cette session, et le trafic GitHub transite par un [proxy Anthropic](/docs/fr/cloud-environments#github-proxy) qui attache l'identifiant GitHub côté serveur. Consultez [Options d'authentification GitHub](/docs/fr/claude-code-on-the-web#github-authentication-options) pour savoir comment vous accordez l'accès127* **Protection des identifiants** : Les identifiants GitHub sont stockés chiffrés sur les serveurs d'Anthropic et n'entrent jamais dans la VM de session. La VM détient un identifiant de courte durée limité à cette session, et le trafic GitHub transite par un [proxy Anthropic](/docs/fr/cloud-environments#github-proxy) qui attache l'identifiant GitHub côté serveur. Consultez [Options d'authentification GitHub](/docs/fr/claude-code-on-the-web#github-authentication-options) pour savoir comment vous accordez l'accès

132* **Restrictions de branche** : Les opérations de push Git sont limitées à la branche de travail actuelle128* **Restrictions de push** : Le [proxy GitHub](/docs/fr/cloud-environments#github-proxy) rejette les suppressions de branches et les pushs de tout élément autre qu'une branche, comme un tag. GitHub détermine quelles branches une session peut mettre à jour en appliquant les règles de protection de branche et les ensembles de règles de votre dépôt à l'accès GitHub que vous avez connecté. Une règle que cet accès peut contourner ne bloque pas le push d'une session

133* **Journalisation d'audit** : Toutes les opérations dans les sessions cloud sont enregistrées à des fins de conformité et d'audit129* **Journalisation d'audit** : Toutes les opérations dans les sessions cloud sont enregistrées à des fins de conformité et d'audit

134* **Nettoyage automatique** : Les VMs de session sont récupérées après une période d'inactivité130* **Nettoyage automatique** : Les VMs de session sont récupérées après une période d'inactivité

135* **Suppression** : Vous pouvez [supprimer une session](/docs/fr/claude-code-on-the-web#delete-sessions) à tout moment. Consultez [Flux de données d'exécution cloud](/docs/fr/data-usage#cloud-execution-data-flow-and-dependencies) pour savoir ce qu'Anthropic stocke pour une session cloud131* **Suppression** : Vous pouvez [supprimer une session](/docs/fr/claude-code-on-the-web#delete-sessions) à tout moment. Consultez [Flux de données d'exécution cloud](/docs/fr/data-usage#cloud-execution-data-flow-and-dependencies) pour savoir ce qu'Anthropic stocke pour une session cloud

Details

1001. Un runner avec une capacité libre réclame la session et maintient un bail sur celle-ci.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.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.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.1034. Si le runner cesse d'interroger, son bail expire après environ 60 secondes, et le serveur remet la session en file d'attente pour un autre runner en quelques minutes.

104 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.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 106 


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 :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 119 

1201. Le runner cesse de prendre du nouveau travail.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 :1212. Le runner libère chaque session active via le même chemin de libération que le flag [`--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.122 * Le runner libère une session qui est en plein tour une fois ce tour terminé. Il attend d'abord que le processus de la session signale la fin du tour à Anthropic, pendant au plus [`SELF_HOSTED_RUNNER_POST_TURN_SETTLE_MS`](/docs/fr/self-hosted-environments-reference#environment-variable-only-settings). Avant la v2.1.280, le runner libérait la session dès que le tour se terminait.

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.123 * Quand un tour se termine et laisse des tâches en arrière-plan 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.1243. Le runner se termine 0 une fois que toutes ses sessions sont libérées.

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

Details

30 30 

31| Variable | Description |31| Variable | Description |

32| :- | :- |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). |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 quand la surface de création l'a enregistré. 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. |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. |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. |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. |


61 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.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 63 

64<h3 id="pass-the-system-prompt-flags-through">

65 Transmettre les flags de prompt système

66</h3>

67 

68Le prompt système et le prompt système ajouté que le plan de contrôle d'Anthropic envoie pour une session parviennent à votre wrapper sous forme de chemins de fichiers, et non de texte en ligne. Le runner écrit chaque prompt dans un fichier du répertoire de configuration de la session, `CLAUDE_CONFIG_DIR`, et transmet son chemin dans les arguments que reçoit votre wrapper, sous la forme [`--system-prompt-file <path>` ou `--append-system-prompt-file <path>`](/docs/fr/cli-reference#system-prompt-flags).

69 

70Les runners sur Claude Code v2.1.281 ou ultérieur livrent les prompts sous forme de fichiers. Avant la v2.1.281, le runner les transmettait sous la forme `--system-prompt <text>` et `--append-system-prompt <text>`.

71 

72Dans votre script wrapper ou votre [hook `command`](#command), gérez ces flags comme suit :

73 

74* **Transmettez-les** : terminez le wrapper avec `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"`, qui transmet les flags de fichier avec tous les autres arguments. Ne les supprimez pas et ne les réécrivez pas. Si une session perd un flag de fichier de prompt, elle s'exécute sans les instructions que le plan de contrôle lui a envoyées.

75* **Sur un runner en v2.1.281 ou ultérieur, un flag de fichier que vous ajoutez remplace celui du serveur, sans jamais s'y ajouter** : chaque flag de fichier de prompt n'accepte qu'une seule valeur et Claude Code conserve la dernière occurrence, donc si vous ajoutez `--append-system-prompt-file <path>` après `"$@"`, le contenu de votre fichier remplace les instructions ajoutées par le serveur. Pour ajouter des instructions en plus de celles du serveur, placez-les dans le `CLAUDE.md` de l'image du runner, que le runner [injecte dans la configuration de niveau utilisateur de chaque session](#how-each-session’s-config-is-assembled).

76 

64<h3 id="provision-credentials-scoped-to-the-session-creator">77<h3 id="provision-credentials-scoped-to-the-session-creator">

65 Provisionner les identifiants limités au créateur de la session78 Provisionner les identifiants limités au créateur de la session

66</h3>79</h3>


81exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"94exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"

82```95```

83 96 

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).97Utilisez `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 de l'email à la place, lisez `.act.email` et gérez son absence : le token ne le porte que quand la surface de création l'a enregistré, et une [session envoyée par CLI](/docs/fr/self-hosted-environments-testing#run-the-test-loop) peut ne pas l'avoir. 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 98 

86<h2 id="lifecycle-hooks">99<h2 id="lifecycle-hooks">

87 Hooks de cycle de vie100 Hooks de cycle de vie


95 checkout108 checkout

96</h3>109</h3>

97 110 

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 :111S'exécute une fois par dépôt, à 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 ces variables, et peut définir d'autres variables `CLAUDE_RUNNER_` que le tableau ne répertorie pas :

99 112 

100| Variable | Description |113| Variable | Description |

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


107| `CLAUDE_RUNNER_API_BASE_URL` | URL de base de l'API Anthropic pour les appels limités à la session |120| `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. |121| `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 |122| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Le token d'accès de session, pour les appels API limités à la session |

123| `GIT_CONFIG_COUNT`, `GIT_CONFIG_KEY_n`, `GIT_CONFIG_VALUE_n` | Paramètres git que le runner fixe pour le git que votre hook exécute. [Configuration git dans les hooks de cycle de vie](#git-configuration-inside-lifecycle-hooks) les décrit. Nécessite Claude Code v2.1.280 ou ultérieur. |

110 124 

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).125Le 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 126 


139| `CLAUDE_RUNNER_API_BASE_URL` | URL de base de l'API Anthropic pour les appels limités à la session |153| `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. |154| `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 |155| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Le token d'accès de session, pour les appels API limités à la session |

156| `GIT_CONFIG_COUNT`, `GIT_CONFIG_KEY_n`, `GIT_CONFIG_VALUE_n` | Paramètres git que le runner fixe pour le git que votre hook exécute. [Configuration git dans les hooks de cycle de vie](#git-configuration-inside-lifecycle-hooks) les décrit. Nécessite Claude Code v2.1.280 ou ultérieur. |

142 157 

143`CLAUDE_RUNNER_EXIT_REASON` prend l'une des quatre valeurs :158`CLAUDE_RUNNER_EXIT_REASON` prend l'une des quatre valeurs :

144 159 


155#!/usr/bin/env bash170#!/usr/bin/env bash

156set -u171set -u

157IFS=':'172IFS=':'

158# Épinglez la configuration que la session aurait pu planter dans le .git/config du checkout :173# Les remplacements -c l'emportent sur les paramètres locaux au dépôt, empêchant la configuration

159# -c les remplacements battent les paramètres au niveau du référentiel, bloquant la session écrite fsmonitor,174# fsmonitor, hook-path et gpg-program écrite par la session d'exécuter du code avec les

160# hook-path et gpg-program config de l'exécution de code avec les privilèges du hook.175# privilèges du hook. -c commit.gpgsign=false laisse aussi ces commits de secours

161# Repo-local credential.helper, core.sshCommand et pushurl176# non signés sous --configure-git.

162# s'appliquent toujours ; si le hook détient des identifiants que la session n'avait pas, épinglez le177# credential.helper et pushurl locaux au dépôt s'appliquent toujours, ainsi que

163# push URL et helper aussi (voir la note ci-dessous le script).178# core.sshCommand sur un runner antérieur à v2.1.280 ; si le hook détient des identifiants

179# que la session n'avait pas, voir la note sous le script.

164g() { git -c core.fsmonitor=false -c core.hooksPath=/dev/null \180g() { git -c core.fsmonitor=false -c core.hooksPath=/dev/null \

165 -c commit.gpgsign=false "$@"; }181 -c commit.gpgsign=false "$@"; }

166for ws in $CLAUDE_RUNNER_WORKSPACE_PATHS; do182for ws in $CLAUDE_RUNNER_WORKSPACE_PATHS; do


172done188done

173```189```

174 190 

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é.191Le hook envoie avec les identifiants git disponibles dans son propre environnement sur l'hôte du 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 générez des identifiants de push de courte durée à l'intérieur du hook avant d'envoyer : échangez le jeton de session que le hook reçoit dans `CLAUDE_CODE_SESSION_ACCESS_TOKEN` avec votre propre service de jetons, 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 des identifiants que la session n'avait pas, remplacez `origin` par une URL fournie par l'opérateur et passez `-c credential.helper=` plus votre propre helper. [Configuration git dans les hooks de cycle de vie](#git-configuration-inside-lifecycle-hooks) décrit ce que la configuration écrite par la session peut encore affecter.

176 192 

177<h4 id="hook-timing-when-the-runner-releases-a-session">193<h4 id="hook-timing-when-the-runner-releases-a-session">

178 Timing du hook quand le runner libère une session194 Timing du hook quand le runner libère une session


187 203 

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).204Pendant 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 205 

206<h3 id="git-configuration-inside-lifecycle-hooks">

207 Configuration git dans les hooks de cycle de vie

208</h3>

209 

210Les hooks `checkout` et `post-session` s'exécutent avec le jeton d'accès de la session dans leur environnement, et le git qu'ils exécutent lit des fichiers de configuration que les sessions peuvent écrire, comme `~/.gitconfig` et le `.git/config` d'un checkout. Avant l'exécution de l'un ou l'autre hook, le runner définit des paramètres git dans l'environnement du hook, dont ceux ci-dessous, sous forme de paires `GIT_CONFIG_COUNT`/`GIT_CONFIG_KEY_n`/`GIT_CONFIG_VALUE_n` et de variables d'environnement git. Git les classe au-dessus de tout fichier de configuration, et ils s'appliquent uniquement au git que vos hooks exécutent, pas au git de la session elle-même. Au démarrage, le runner affiche une ligne `[runner:git] lifecycle hooks:` qui indique le chemin des hooks, les protocoles autorisés, les programmes gpg et le mode de signature en vigueur. Nécessite Claude Code v2.1.280 ou ultérieur.

211 

212* **Hooks git** : sauf si vous fournissez une valeur, `core.hooksPath` vaut `/dev/null`, donc git ignore les hooks du `.git/hooks` d'un dépôt et tout répertoire de hooks que `~/.gitconfig` désigne. Pour en fournir une, exportez `core.hooksPath` sous forme de paire `GIT_CONFIG_KEY_n`/`GIT_CONFIG_VALUE_n` dans l'environnement du runner. Le runner lit aussi `core.hooksPath` depuis la configuration git système, et ne l'utilise que lorsque l'utilisateur du runner ne peut écrire ni ce fichier, ni le répertoire qu'il désigne, ni les fichiers de hooks qu'il contient. Quand le runner ignore une valeur, une ligne `[runner:warn]` au démarrage indique la valeur et la raison.

213* **Moniteur du système de fichiers** : `core.fsmonitor` est vide, donc git dans votre hook n'exécute pas de programme de surveillance désigné par un fichier de configuration.

214* **Protocoles distants** : `GIT_ALLOW_PROTOCOL` vaut `https:http:ssh`. Un clone, un fetch ou un push qui utilise un chemin local, une URL `file://` ou une URL `git://` échoue avec `fatal: transport 'file' not allowed` ou `fatal: transport 'git' not allowed`.

215* **Commande SSH et demande d'identifiants** : git dans votre hook ignore `core.sshCommand` et `core.askPass` provenant des fichiers de configuration. Pour utiliser votre propre commande SSH, définissez `GIT_SSH_COMMAND` dans l'environnement du runner. Pour utiliser un programme de demande d'identifiants, définissez-y `GIT_ASKPASS`. Les sessions héritent de l'environnement du runner, donc les deux variables atteignent aussi le git de la session elle-même. N'y placez aucun identifiant.

216* **Programmes gpg** : `gpg.program`, `gpg.openpgp.program`, `gpg.x509.program` et `gpg.ssh.program` sont des chemins que le runner définit, jamais des valeurs provenant d'un fichier de configuration.

217* **Signature des commits** : avec [`--configure-git`](/docs/fr/self-hosted-environments-deploy#let-the-runner-configure-git), les commits que vous créez depuis un hook sont signés au nom de la session. Sans ce flag, `commit.gpgsign` et `tag.gpgsign` valent `false`.

218 

219Pour modifier l'un de ces paramètres, utilisez l'environnement du runner ou une option `git -c` à l'intérieur du hook :

220 

221* **Paires de configuration** : une paire `GIT_CONFIG_KEY_n`/`GIT_CONFIG_VALUE_n` que vous exportez dans l'environnement du runner remplace la valeur du runner pour la même clé. Numérotez vos paires à partir de `0` et définissez `GIT_CONFIG_COUNT` sur leur nombre. Quand la dernière paire annoncée par le compteur est manquante, le runner ignore toutes vos paires et consigne une ligne `[runner:warn]` au démarrage.

222* **Variables d'environnement git** : le runner laisse `GIT_ALLOW_PROTOCOL`, `GIT_SSH_COMMAND` et `GIT_ASKPASS` tels que vous les avez définis dans son environnement.

223* **Options `git -c`** : une option `git -c` à l'intérieur du hook remplace une paire `GIT_CONFIG_KEY_n`, celle du runner ou la vôtre. Elle ne modifie pas `GIT_ALLOW_PROTOCOL`, `GIT_SSH_COMMAND` ni `GIT_ASKPASS`, que git lit avant toute configuration.

224 

225Git dans votre hook lit toujours chaque paramètre que le runner ne définit pas, comme les helpers d'identifiants, les réécritures `url.*.insteadOf` et les filter drivers, depuis chaque fichier de configuration, y compris ceux que les sessions peuvent écrire. Un helper d'identifiants ou un filter driver désigné dans l'un de ces fichiers s'exécute comme un programme avec les privilèges de votre hook, et la configuration de ces fichiers peut encore modifier la destination d'un push depuis votre hook, y compris un push vers une URL que vous passez sur la ligne de commande.

226 

227Avant v2.1.280, le runner ne définissait aucun de ces paramètres, et sous `--configure-git` un commit créé depuis un hook échouait à moins que le hook ne passe `-c commit.gpgsign=false`.

228 

190<h3 id="command">229<h3 id="command">

191 command230 command

192</h3>231</h3>


454* **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.493* **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.

455* **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.494* **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.

456 495 

496En dehors des sessions [Claude Tag](https://claude.com/docs/claude-tag/overview), une session dans un environnement auto-hébergé s'exécute avec la [mémoire automatique](/docs/fr/memory#auto-memory) désactivée par défaut. Pour les instructions qui doivent persister d'une session à l'autre, utilisez le `CLAUDE.md` de votre image runner ou du dépôt.

497 

498L'instantané du `~/.claude/` de l'hôte pris par le runner exclut le répertoire `projects/`. L'emplacement de stockage par défaut de la mémoire automatique se trouve sous ce répertoire. Si vous y placez des fichiers de mémoire, le runner ne les sème pas dans les sessions, et ils n'activent pas la mémoire automatique.

499 

457<h3 id="repository-committed-permission-rules">500<h3 id="repository-committed-permission-rules">

458 Règles de permission validées dans le référentiel501 Règles de permission validées dans le référentiel

459</h3>502</h3>

Details

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

143Sur un runner en v2.1.280 ou plus récent, les commits que vous créez depuis un hook de cycle de vie `checkout` ou `post-session` sont également signés au nom de la session, sans la remorque `Co-authored-by:`. [Configuration git dans les hooks de cycle de vie](/docs/fr/self-hosted-environments-configuration#git-configuration-inside-lifecycle-hooks) décrit les paramètres git que le runner impose dans ces hooks.

144 

143<h3 id="ship-git-config-in-your-image">145<h3 id="ship-git-config-in-your-image">

144 Livrer la configuration git dans votre image146 Livrer la configuration git dans votre image

145</h3>147</h3>


435 437 

436Donnez à 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.438Donnez à 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.

437 439 

438Si 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.440Si 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 en quelques minutes. 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.

439 441 

440<h3 id="what-reaches-a-running-post-session-hook">442<h3 id="what-reaches-a-running-post-session-hook">

441 Ce qui atteint un hook post-session en cours d'exécution443 Ce qui atteint un hook post-session en cours d'exécution


543 Limitations supplémentaires545 Limitations supplémentaires

544</h3>546</h3>

545 547 

546* **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.548* **Les sessions reprises perdent le travail non poussé** : un nouveau runner clone à nouveau le dépôt à partir de sa branche de démarrage, donc le travail que la session n'avait pas poussé est perdu.

547* **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.549 * **Pour conserver le travail commité** : définissez [`--push-outcome-on-release`](/docs/fr/self-hosted-environments-reference#runner-cli-flags). Le runner effectue alors, dans la mesure du possible, un push des branches de résultat de la session avant de la libérer, et la session reprise démarre à partir de ces commits. Les modifications non commitées sont toujours perdues.

550 * **Avant d'activer le flag** : limitez qui peut pousser vers les refs `claude/*` sur le dépôt distant source. À la reprise, le runner récupère la branche précédemment poussée sans vérifier qui l'a poussée.

551* **Le clonage d'un dépôt ajouté en milieu de session peut échouer** : Claude le clone avec `git clone` via HTTPS. Sur un runner sans [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), le clonage échoue avec une erreur d'authentification git si rien sur l'hôte ne peut lire le dépôt. Dans la mesure du possible, sélectionnez chaque dépôt dont la session a besoin quand vous la créez.

548* **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é.552* **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é.

549 553 

550<h3 id="report-an-issue">554<h3 id="report-an-issue">

Details

187 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.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 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>` :190Cette commande extrait l'identité du créateur, en préférant l'adresse e-mail, puis le sujet `act.sub` du créateur, `user:<id>` ou `agent:<id>` :

191 191 

192```bash theme={null}192```bash theme={null}

193"$CLAUDE_RUNNER_CLAUDE_BIN" self-hosted-runner decode-token | jq -re '.act.attested_by.sub // .act.email // .act.sub'193"$CLAUDE_RUNNER_CLAUDE_BIN" self-hosted-runner decode-token | jq -re '.act.email // .act.sub'

194```194```

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


201 Référence des claims201 Référence des claims

202</h2>202</h2>

203 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.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 identifiants de la requête 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 205 

206| Claim | Type | Description |206| Claim | Type | Description |

207| :- | :- | :- |207| :- | :- | :- |


231| :- | :- |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. |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`. |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. |234| `act.attested_by` | Réservé à l'attestation du fournisseur d'identité en amont pour l'utilisateur créateur. Attendez-vous à ce qu'il soit absent et n'en dépendez pas. Basez-vous sur `act.sub`. Si vous avez besoin d'une adresse, lisez `act.email` quand il est présent. |

235| `act.act` | Le runner qui a généré la session. `act.act.sub` est `ccr:runner:<runner_id>`. |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>`. |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. |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. |

Details

189 "Read(./secrets/**)"189 "Read(./secrets/**)"

190 ]190 ]

191 },191 },

192 // Avant chaque commande Bash, exécutez un script dans le référentiel qui peut la bloquer192 // Avant chaque commande Bash, exécutez un script dans le dépôt qui peut la bloquer

193 "hooks": {193 "hooks": {

194 "PreToolUse": [194 "PreToolUse": [

195 {195 {


203 }203 }

204 ]204 ]

205 },205 },

206 // Enregistrez le marketplace de plugins de l'équipe à chaque clone206 // Enregistrez la marketplace de plugins de l'équipe à chaque clone

207 "extraKnownMarketplaces": {207 "extraKnownMarketplaces": {

208 "acme-tools": {208 "acme-tools": {

209 "source": {209 "source": {


212 }212 }

213 }213 }

214 },214 },

215 // 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 personne215 // Activez un plugin de cette marketplace ; un plugin d'une source externe comme un dépôt GitHub doit toujours être installé une fois par chaque personne

216 "enabledPlugins": {216 "enabledPlugins": {

217 "code-formatter@acme-tools": true217 "code-formatter@acme-tools": true

218 },218 },

219 // Commandes sandbox : répertoire de construction inscriptible ; npm et example.com pré-autorisés, les autres hôtes demandent toujours219 // Commandes sandbox : répertoire de build inscriptible ; npm et example.com pré-autorisés

220 "sandbox": {220 "sandbox": {

221 "enabled": true,221 "enabled": true,

222 "filesystem": {222 "filesystem": {


231 ]231 ]

232 }232 }

233 },233 },

234 // Gardez les fichiers de plan à l'intérieur du référentiel234 // Gardez les fichiers de plan à l'intérieur du dépôt

235 "plansDirectory": "./plans"235 "plansDirectory": "./plans"

236 }236 }

237 ```237 ```


250* [`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'appliquent250* [`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

251* `allowedMcpServers` épingle le serveur MCP par URL251* `allowedMcpServers` épingle le serveur MCP par URL

252* `strictKnownMarketplaces` autorise un marketplace de plugins252* `strictKnownMarketplaces` autorise un marketplace de plugins

253* `sandbox` bac à sable les commandes avec une liste d'autorisation réseau fixe et pas de nouvelle tentative non bac à sable253* `sandbox` exécute les commandes dans le sandbox avec une liste d'autorisation réseau fixe et sans nouvelle tentative hors du sandbox. Sa clé `failIfUnavailable` [empêche Claude Code de démarrer là où le sandbox ne peut pas s'exécuter](/docs/fr/sandboxing#enforce-sandboxing-with-managed-settings)

254* `requiredMinimumVersion` définit une version minimale de Claude Code254* `requiredMinimumVersion` définit une version minimale de Claude Code

255* `cleanupPeriodDays` raccourcit la rétention des transcriptions de session et autres données locales à sept jours255* `cleanupPeriodDays` raccourcit la rétention des transcriptions de session et autres données locales à sept jours

256* `companyAnnouncements` affiche un message au démarrage256* `companyAnnouncements` affiche un message au démarrage

settings-reference.md +205 −172

Details

592| Key | Description | Topic | Scope |592| Key | Description | Topic | Scope |

593| :- | :- | :- | :- |593| :- | :- | :- | :- |

594| [`advisorModel`](#advisormodel) | Choisissez quel modèle répond quand Claude demande l'[outil conseiller](/docs/fr/advisor) | Model and responses | Any file |594| [`advisorModel`](#advisormodel) | Choisissez quel modèle répond quand Claude demande l'[outil conseiller](/docs/fr/advisor) | Model and responses | Any file |

595| [`agent`](#agent) | Commencez chaque session en tant que [sous-agent](/docs/fr/sub-agents) nommé avec son invite, ses outils et son modèle | Agents, sessions, and worktrees | Any file |595| [`agent`](#agent) | Commencez chaque session en tant que [sous-agent](/docs/fr/sub-agents) nommé avec son prompt, ses outils et son modèle | Agents, sessions, and worktrees | Any file |

596| [`agentPushNotifEnabled`](#agentpushnotifenabled) | Laissez Claude envoyer une [notification push à votre téléphone](/docs/fr/remote-control#mobile-push-notifications) quand il le décide | Remote, desktop, and notifications | Any file |596| [`agentPushNotifEnabled`](#agentpushnotifenabled) | Laissez Claude envoyer une [notification push à votre téléphone](/docs/fr/remote-control#mobile-push-notifications) quand il le décide | Remote, desktop, and notifications | Any file |

597| [`allowAllClaudeAiMcps`](#allowallclaudeaimcps) | Chargez les [connecteurs claude.ai](/docs/fr/mcp) que Claude Code récupère lui-même aux côtés d'un [`managed-mcp.json`](/docs/fr/managed-mcp#exclusive-control-with-managed-mcp-json) déployé | MCP | Managed |597| [`allowAllClaudeAiMcps`](#allowallclaudeaimcps) | Chargez les [connecteurs claude.ai](/docs/fr/mcp) que Claude Code récupère lui-même aux côtés d'un [`managed-mcp.json`](/docs/fr/managed-mcp#exclusive-control-with-managed-mcp-json) déployé | MCP | Managed |

598| [`allowClaudeInChromeWithManagedMcp`](#allowclaudeinchromewithmanagedmcp) | Laissez le serveur [Claude in Chrome](/docs/fr/chrome) intégré s'exécuter aux côtés d'un [`managed-mcp.json`](/docs/fr/managed-mcp#exclusive-control-with-managed-mcp-json) déployé | MCP | Managed |598| [`allowClaudeInChromeWithManagedMcp`](#allowclaudeinchromewithmanagedmcp) | Laissez le serveur [Claude in Chrome](/docs/fr/chrome) intégré s'exécuter aux côtés d'un [`managed-mcp.json`](/docs/fr/managed-mcp#exclusive-control-with-managed-mcp-json) déployé | MCP | Managed |


607| [`apiKeyHelper`](#apikeyhelper) | Générez les [identifiants API](/docs/fr/authentication#credential-management) avec votre propre commande | Authentication and providers | Any file |607| [`apiKeyHelper`](#apikeyhelper) | Générez les [identifiants API](/docs/fr/authentication#credential-management) avec votre propre commande | Authentication and providers | Any file |

608| [`askUserQuestionTimeout`](#askuserquestiontimeout) | Laissez une question sans réponse [continuer automatiquement](/docs/fr/tools-reference#question-auto-continue-timeout) après un temps d'inactivité | Interface and terminal | User or managed |608| [`askUserQuestionTimeout`](#askuserquestiontimeout) | Laissez une question sans réponse [continuer automatiquement](/docs/fr/tools-reference#question-auto-continue-timeout) après un temps d'inactivité | Interface and terminal | User or managed |

609| [`appendPlugins`](#appendplugins) | Exécutez les [mods](/docs/fr/plugins/mods/admin) de votre organisation après chaque mod qu'un utilisateur installe | Plugins and skills | User or managed |609| [`appendPlugins`](#appendplugins) | Exécutez les [mods](/docs/fr/plugins/mods/admin) de votre organisation après chaque mod qu'un utilisateur installe | Plugins and skills | User or managed |

610| [`attribution`](#attribution) | Personnalisez l'attribution que Claude Code ajoute aux commits et aux demandes de tirage | Git and attribution | Any file |610| [`attribution`](#attribution) | Personnalisez l'attribution que Claude Code ajoute aux commits et aux pull requests | Git and attribution | Any file |

611| [`attribution.commit`](#attribution-commit) | Modifiez ou masquez la bande-annonce que Claude Code ajoute aux commits | Git and attribution | Any file |611| [`attribution.commit`](#attribution-commit) | Modifiez ou masquez le trailer que Claude Code ajoute aux commits | Git and attribution | Any file |

612| [`attribution.pr`](#attribution-pr) | Modifiez ou masquez la ligne d'attribution dans les descriptions des demandes de tirage | Git and attribution | Any file |612| [`attribution.pr`](#attribution-pr) | Modifiez ou masquez la ligne d'attribution dans les descriptions des pull requests | Git and attribution | Any file |

613| [`attribution.sessionUrl`](#attribution-sessionurl) | Omettez le lien de session claude.ai des commits [cloud](/docs/fr/claude-code-on-the-web) et [Remote Control](/docs/fr/remote-control) | Git and attribution | Any file |613| [`attribution.sessionUrl`](#attribution-sessionurl) | Omettez le lien de session claude.ai des commits [cloud](/docs/fr/claude-code-on-the-web) et [Remote Control](/docs/fr/remote-control) | Git and attribution | Any file |

614| [`autoCompactEnabled`](#autocompactenabled) | Désactivez ou activez la [compaction automatique](/docs/fr/context-window) | Memory and context | Any file |614| [`autoCompactEnabled`](#autocompactenabled) | Désactivez ou activez la [compaction automatique](/docs/fr/context-window) | Memory and context | Any file |

615| [`autoCompactWindow`](#autocompactwindow) | Définissez le remplissage du contexte avant que Claude Code [compacte](/docs/fr/context-window) | Memory and context | Any file |615| [`autoCompactWindow`](#autocompactwindow) | Définissez le remplissage du contexte avant que Claude Code [compacte](/docs/fr/context-window) | Memory and context | Any file |


618| [`autoInstallIdeExtension`](#autoinstallideextension) | Désactivez l'installation automatique de l'[extension IDE](/docs/fr/vs-code#install-the-extension) à partir d'un terminal VS Code | Global config settings | Global config |618| [`autoInstallIdeExtension`](#autoinstallideextension) | Désactivez l'installation automatique de l'[extension IDE](/docs/fr/vs-code#install-the-extension) à partir d'un terminal VS Code | Global config settings | Global config |

619| [`autoMemoryDirectory`](#automemorydirectory) | Stockez la [mémoire automatique](/docs/fr/memory#auto-memory) dans un répertoire de votre choix | Memory and context | Any file |619| [`autoMemoryDirectory`](#automemorydirectory) | Stockez la [mémoire automatique](/docs/fr/memory#auto-memory) dans un répertoire de votre choix | Memory and context | Any file |

620| [`autoMemoryEnabled`](#automemoryenabled) | Désactivez ou activez la [mémoire automatique](/docs/fr/memory#auto-memory) | Memory and context | Any file |620| [`autoMemoryEnabled`](#automemoryenabled) | Désactivez ou activez la [mémoire automatique](/docs/fr/memory#auto-memory) | Memory and context | Any file |

621| [`autoMode`](#automode) | Ajoutez vos propres règles d'autorisation et de refus au classificateur du [mode automatique](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) | Permission settings | User or managed |621| [`autoMode`](#automode) | Ajoutez vos propres règles d'autorisation et de refus au classifieur du [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) | Permission settings | User or managed |

622| [`autoMode.classifyAllShell`](#automode-classifyallshell) | Envoyez chaque commande shell via le [classificateur du mode automatique](/docs/fr/permission-modes#what-the-classifier-blocks-by-default), même celles qu'une règle d'autorisation étroite correspond | Permission settings | User or managed |622| [`autoMode.classifyAllShell`](#automode-classifyallshell) | Envoyez chaque commande shell via le [classifieur du mode auto](/docs/fr/permission-modes#what-the-classifier-blocks-by-default), même celles auxquelles correspond une règle d'autorisation étroite | Permission settings | User or managed |

623| [`autoScrollEnabled`](#autoscrollenabled) | [Suivez la nouvelle sortie](/docs/fr/fullscreen#auto-follow) jusqu'au bas du rendu en plein écran | Interface and terminal | Any file |623| [`autoScrollEnabled`](#autoscrollenabled) | [Suivez la nouvelle sortie](/docs/fr/fullscreen#auto-follow) jusqu'au bas du rendu en plein écran | Interface and terminal | Any file |

624| [`autoUpdatesChannel`](#autoupdateschannel) | Suivez le [canal de version](/docs/fr/setup#configure-release-channel) stable au lieu du dernier | Updates and versioning | Any file |624| [`autoUpdatesChannel`](#autoupdateschannel) | Suivez le [canal de version](/docs/fr/setup#configure-release-channel) stable au lieu du dernier | Updates and versioning | Any file |

625| [`availableModels`](#availablemodels) | [Limitez les modèles](/docs/fr/model-config#restrict-model-selection) que les gens peuvent choisir | Model and responses | Any file |625| [`availableModels`](#availablemodels) | [Limitez les modèles](/docs/fr/model-config#restrict-model-selection) que les gens peuvent choisir | Model and responses | Any file |


630| [`axScreenReader`](#axscreenreader) | Rendez la [sortie accessible aux lecteurs d'écran](/docs/fr/accessibility) | Interface and terminal | Any file |630| [`axScreenReader`](#axscreenreader) | Rendez la [sortie accessible aux lecteurs d'écran](/docs/fr/accessibility) | Interface and terminal | Any file |

631| [`bashEditDiffEnabled`](#basheditdiffenabled) | Enregistrez les [fichiers qui ont changé pendant l'exécution d'une commande Bash](/docs/fr/hooks#bash) dans chaque mode de permission | Interface and terminal | User or managed |631| [`bashEditDiffEnabled`](#basheditdiffenabled) | Enregistrez les [fichiers qui ont changé pendant l'exécution d'une commande Bash](/docs/fr/hooks#bash) dans chaque mode de permission | Interface and terminal | User or managed |

632| [`bashOutputMaxChars`](#bashoutputmaxchars) | Définissez la quantité de [sortie](/docs/fr/tools-reference#output-limits) d'une commande réussie que Claude reçoit en ligne | Memory and context | Any file |632| [`bashOutputMaxChars`](#bashoutputmaxchars) | Définissez la quantité de [sortie](/docs/fr/tools-reference#output-limits) d'une commande réussie que Claude reçoit en ligne | Memory and context | Any file |

633| [`blockedMarketplaces`](#blockedmarketplaces) | Bloquez les sources du [marché de plugins](/docs/fr/plugins/overview) pour votre organisation | Plugins and skills | Managed |633| [`blockedMarketplaces`](#blockedmarketplaces) | Bloquez les sources de [marketplaces de plugins](/docs/fr/plugins/overview) pour votre organisation | Plugins and skills | Managed |

634| [`browserExternalPageTools`](#browserexternalpagetools) | Gardez les outils de Claude hors des pages externes dans le volet [Bureau](/docs/fr/desktop) Browser | Tools | Managed |634| [`browserExternalPageTools`](#browserexternalpagetools) | Gardez les outils de Claude hors des pages externes dans le volet [Bureau](/docs/fr/desktop) Browser | Tools | Managed |

635| [`channelsEnabled`](#channelsenabled) | Autorisez les [canaux](/docs/fr/channels#enable-channels-for-your-organization) pour votre organisation | Plugins and skills | Managed |635| [`channelsEnabled`](#channelsenabled) | Autorisez les [canaux](/docs/fr/channels#enable-channels-for-your-organization) pour votre organisation | Plugins and skills | Managed |

636| [`claudeInChromeDefaultEnabled`](#claudeinchromedefaultenabled) | Activez l'[intégration Chrome](/docs/fr/chrome) dans chaque session CLI interactive sans passer `--chrome` | Global config settings | Global config |636| [`claudeInChromeDefaultEnabled`](#claudeinchromedefaultenabled) | Activez l'[intégration Chrome](/docs/fr/chrome) dans chaque session CLI interactive sans passer `--chrome` | Global config settings | Global config |


649| [`dialogExpiry`](#dialogexpiry) | Définissez le temps que Claude Code attend pour que [Remote Control](/docs/fr/remote-control) ou un hôte SDK réponde à une boîte de dialogue transférée avant de l'annuler | Interface and terminal | User or managed |649| [`dialogExpiry`](#dialogexpiry) | Définissez le temps que Claude Code attend pour que [Remote Control](/docs/fr/remote-control) ou un hôte SDK réponde à une boîte de dialogue transférée avant de l'annuler | Interface and terminal | User or managed |

650| [`diffTool`](#difftool) | Choisissez si les modifications de fichiers proposées par Claude s'ouvrent dans le visualiseur de diff [VS Code](/docs/fr/vs-code) ou [JetBrains](/docs/fr/jetbrains#features) ou restent dans le terminal | Global config settings | Global config |650| [`diffTool`](#difftool) | Choisissez si les modifications de fichiers proposées par Claude s'ouvrent dans le visualiseur de diff [VS Code](/docs/fr/vs-code) ou [JetBrains](/docs/fr/jetbrains#features) ou restent dans le terminal | Global config settings | Global config |

651| [`disableAgentView`](#disableagentview) | Désactivez les agents d'arrière-plan et la [vue agent](/docs/fr/agent-view) | Agents, sessions, and worktrees | Any file |651| [`disableAgentView`](#disableagentview) | Désactivez les agents d'arrière-plan et la [vue agent](/docs/fr/agent-view) | Agents, sessions, and worktrees | Any file |

652| [`disableAllHooks`](#disableallhooks) | Désactivez les [hooks](/docs/fr/hooks), une [ligne d'état](/docs/fr/statusline) personnalisée, et une commande [`@`](/docs/fr/interactive-mode#quick-commands) de suggestion de fichier personnalisée à la fois | Hooks and automation | Any file |652| [`disableAllHooks`](#disableallhooks) | Désactivez les [hooks](/docs/fr/hooks), une [barre de statut](/docs/fr/statusline) personnalisée, et une commande [`@`](/docs/fr/interactive-mode#quick-commands) de suggestion de fichier personnalisée à la fois | Hooks and automation | Any file |

653| [`disableArtifact`](#disableartifact) | Obsolète ; utilisez `enableArtifact` pour désactiver l'[outil Artifact](/docs/fr/artifacts) | Remote, desktop, and notifications | Any file |653| [`disableArtifact`](#disableartifact) | Déprécié ; utilisez `enableArtifact` pour désactiver l'[outil Artifact](/docs/fr/artifacts) | Remote, desktop, and notifications | Any file |

654| [`disableAutoMode`](#disableautomode) | Supprimez le [mode automatique](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) du cycle du mode de permission | Permission settings | Any file |654| [`disableAutoMode`](#disableautomode) | Supprimez le [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) du cycle du mode de permission | Permission settings | Any file |

655| [`disableBrowserExternalNavigation`](#disablebrowserexternalnavigation) | Limitez le volet [Bureau](/docs/fr/desktop) Browser à localhost pour les personnes et Claude | Tools | Managed |655| [`disableBrowserExternalNavigation`](#disablebrowserexternalnavigation) | Limitez le volet [Bureau](/docs/fr/desktop) Browser à localhost pour les personnes et Claude | Tools | Managed |

656| [`disableBundledSkills`](#disablebundledskills) | Désactivez les [compétences](/docs/fr/skills#bundled-skills) et les [flux de travail](/docs/fr/workflows) inclus avec Claude Code | Plugins and skills | Any file |656| [`disableBundledSkills`](#disablebundledskills) | Désactivez les [skills](/docs/fr/skills#bundled-skills) et les [workflows](/docs/fr/workflows) inclus avec Claude Code | Plugins and skills | Any file |

657| [`disableClaudeAiConnectors`](#disableclaudeaiconnectors) | Désactivez les [connecteurs claude.ai](/docs/fr/mcp#disable-claude-ai-connectors) pour que Claude Code ne les récupère pas | MCP | Any file |657| [`disableClaudeAiConnectors`](#disableclaudeaiconnectors) | Désactivez les [connecteurs claude.ai](/docs/fr/mcp#disable-claude-ai-connectors) pour que Claude Code ne les récupère pas | MCP | Any file |

658| [`disableCommandPluginSources`](#disablecommandpluginsources) | Bloquez les [plugins](/docs/fr/plugins/overview) qui s'installent en exécutant une commande déclarée par le marché | Plugins and skills | Managed |658| [`disableCommandPluginSources`](#disablecommandpluginsources) | Bloquez les [plugins](/docs/fr/plugins/overview) qui s'installent en exécutant une commande déclarée par la marketplace | Plugins and skills | Managed |

659| [`disableDeepLinkRegistration`](#disabledeeplinkregistration) | Empêchez Claude Code d'enregistrer le gestionnaire [`claude-cli://`](/docs/fr/deep-links) | Remote, desktop, and notifications | Any file |659| [`disableDeepLinkRegistration`](#disabledeeplinkregistration) | Empêchez Claude Code d'enregistrer le gestionnaire [`claude-cli://`](/docs/fr/deep-links) | Remote, desktop, and notifications | Any file |

660| [`disableDesktopLocalSessions`](#disabledesktoplocalsessions) | Désactivez les [sessions Desktop Code](/docs/fr/desktop#local-sessions-on-managed-devices) qui s'exécutent sur l'appareil, en laissant SSH à d'autres hôtes et au cloud | Remote, desktop, and notifications | Managed |660| [`disableDesktopLocalSessions`](#disabledesktoplocalsessions) | Désactivez les [sessions Desktop Code](/docs/fr/desktop#local-sessions-on-managed-devices) qui s'exécutent sur l'appareil, en laissant SSH à d'autres hôtes et au cloud | Remote, desktop, and notifications | Managed |

661| [`disabledMcpjsonServers`](#disabledmcpjsonservers) | Rejetez les serveurs spécifiques du [`.mcp.json`](/docs/fr/mcp#project-scope) d'un projet | MCP | Any file |661| [`disabledMcpjsonServers`](#disabledmcpjsonservers) | Rejetez les serveurs spécifiques du [`.mcp.json`](/docs/fr/mcp#project-scope) d'un projet | MCP | Any file |

662| [`disableMobileSimulatorTools`](#disablemobilesimulatortools) | Bloquez les outils de Claude dans le volet [Bureau](/docs/fr/desktop) iOS Simulator | Tools | Managed |662| [`disableMobileSimulatorTools`](#disablemobilesimulatortools) | Bloquez les outils de Claude dans le volet [Bureau](/docs/fr/desktop) iOS Simulator | Tools | Managed |

663| [`disableRemoteControl`](#disableremotecontrol) | Désactivez [Remote Control](/docs/fr/remote-control) partout où il peut démarrer | Remote, desktop, and notifications | Any file |663| [`disableRemoteControl`](#disableremotecontrol) | Désactivez [Remote Control](/docs/fr/remote-control) partout où il peut démarrer | Remote, desktop, and notifications | Any file |

664| [`disableSideloadFlags`](#disablesideloadflags) | Rejetez les drapeaux CLI qui chargent les [plugins](/docs/fr/plugins/overview), les [sous-agents](/docs/fr/sub-agents), et les [serveurs MCP](/docs/fr/mcp) | Enterprise and managed settings | Managed |664| [`disableSideloadFlags`](#disablesideloadflags) | Rejetez les flags CLI qui chargent les [plugins](/docs/fr/plugins/overview), les [sous-agents](/docs/fr/sub-agents), et les [serveurs MCP](/docs/fr/mcp) | Enterprise and managed settings | Managed |

665| [`disableSkillShellExecution`](#disableskillshellexecution) | Empêchez les [compétences](/docs/fr/skills) et les commandes personnalisées d'exécuter le shell en ligne | Plugins and skills | Any file |665| [`disableSkillShellExecution`](#disableskillshellexecution) | Empêchez les [skills](/docs/fr/skills) et les commandes personnalisées d'exécuter le shell en ligne | Plugins and skills | Any file |

666| [`disableWorkflows`](#disableworkflows) | Désactivez les [flux de travail dynamiques](/docs/fr/workflows) pour tout le monde ; utilisez `enableWorkflows` pour vous-même | Hooks and automation | Any file |666| [`disableWorkflows`](#disableworkflows) | Désactivez les [workflows dynamiques](/docs/fr/workflows) pour tout le monde ; utilisez `enableWorkflows` pour vous-même | Hooks and automation | Any file |

667| [`editorMode`](#editormode) | Utilisez les [liaisons de touches vim](/docs/fr/interactive-mode#vim-editor-mode) dans l'invite d'entrée | Interface and terminal | Any file |667| [`editorMode`](#editormode) | Utilisez les [liaisons de touches vim](/docs/fr/interactive-mode#vim-editor-mode) dans la zone de saisie du prompt | Interface and terminal | Any file |

668| [`effortLevel`](#effortlevel) | Définissez un [niveau d'effort](/docs/fr/model-config#adjust-effort-level) par défaut pour les modèles sans niveau enregistré | Model and responses | Any file |668| [`effortLevel`](#effortlevel) | Définissez un [niveau d'effort](/docs/fr/model-config#adjust-effort-level) par défaut pour les modèles sans niveau enregistré | Model and responses | Any file |

669| [`emojiCompletionEnabled`](#emojicompletionenabled) | Désactivez les [suggestions et remplacements d'emoji `:shortcode:`](/docs/fr/interactive-mode#emoji-shortcodes) dans l'entrée d'invite | Interface and terminal | Any file |669| [`emojiCompletionEnabled`](#emojicompletionenabled) | Désactivez les [suggestions et remplacements d'emoji `:shortcode:`](/docs/fr/interactive-mode#emoji-shortcodes) dans la zone de saisie du prompt | Interface and terminal | Any file |

670| [`enableAllProjectMcpServers`](#enableallprojectmcpservers) | Approuvez chaque serveur dans les fichiers [`.mcp.json`](/docs/fr/mcp#project-server-approvals-and-workspace-trust) du projet sans invite | MCP | Any file |670| [`enableAllProjectMcpServers`](#enableallprojectmcpservers) | Approuvez chaque serveur dans les fichiers [`.mcp.json`](/docs/fr/mcp#project-server-approvals-and-workspace-trust) du projet sans demande | MCP | Any file |

671| [`enableArtifact`](#enableartifact) | Désactivez l'[outil Artifact](/docs/fr/artifacts) avec un `false` dans n'importe quel fichier ; aucun fichier ne peut le réactiver | Remote, desktop, and notifications | Any file |671| [`enableArtifact`](#enableartifact) | Désactivez l'[outil Artifact](/docs/fr/artifacts) avec un `false` dans n'importe quel fichier ; aucun fichier ne peut le réactiver | Remote, desktop, and notifications | Any file |

672| [`enabledMcpjsonServers`](#enabledmcpjsonservers) | Approuvez les serveurs spécifiques du [`.mcp.json`](/docs/fr/mcp#project-server-approvals-and-workspace-trust) d'un projet | MCP | Any file |672| [`enabledMcpjsonServers`](#enabledmcpjsonservers) | Approuvez les serveurs spécifiques du [`.mcp.json`](/docs/fr/mcp#project-server-approvals-and-workspace-trust) d'un projet | MCP | Any file |

673| [`enabledPlugins`](#enabledplugins) | Activez ou désactivez les [plugins](/docs/fr/plugins/overview) individuels par portée | Plugins and skills | Any file |673| [`enabledPlugins`](#enabledplugins) | Activez ou désactivez les [plugins](/docs/fr/plugins/overview) individuels par portée | Plugins and skills | Any file |

674| [`enableWorkflows`](#enableworkflows) | Activez ou désactivez les [flux de travail dynamiques](/docs/fr/workflows) par rapport à la valeur par défaut de votre plan | Hooks and automation | Any file |674| [`enableWorkflows`](#enableworkflows) | Activez ou désactivez les [workflows dynamiques](/docs/fr/workflows) par rapport à la valeur par défaut de votre plan | Hooks and automation | Any file |

675| [`enforceAvailableModels`](#enforceavailablemodels) | Gardez le [choix par défaut `/model`](/docs/fr/model-config#enforce-the-allowlist-for-the-default-model) dans votre liste d'autorisation `availableModels` | Model and responses | Any file |675| [`enforceAvailableModels`](#enforceavailablemodels) | Gardez le [choix par défaut `/model`](/docs/fr/model-config#enforce-the-allowlist-for-the-default-model) dans votre liste d'autorisation `availableModels` | Model and responses | Any file |

676| [`env`](#env) | Définissez les [variables d'environnement](/docs/fr/env-vars#in-settings-files) pour chaque session et ses sous-processus | Memory and context | Any file |676| [`env`](#env) | Définissez les [variables d'environnement](/docs/fr/env-vars#in-settings-files) pour chaque session et ses sous-processus | Memory and context | Any file |

677| [`externalEditorContext`](#externaleditorcontext) | Affichez la dernière réponse de Claude en tant que commentaires quand vous appuyez sur [Ctrl+G](/docs/fr/interactive-mode#general-controls) pour éditer | Global config settings | Global config |677| [`externalEditorContext`](#externaleditorcontext) | Affichez la dernière réponse de Claude en tant que commentaires quand vous appuyez sur [Ctrl+G](/docs/fr/interactive-mode#general-controls) pour éditer | Global config settings | Global config |

678| [`extraKnownMarketplaces`](#extraknownmarketplaces) | Enregistrez les [marchés](/docs/fr/plugins/overview) pour un référentiel ou une organisation | Plugins and skills | Any file |678| [`extraKnownMarketplaces`](#extraknownmarketplaces) | Enregistrez les [marketplaces](/docs/fr/plugins/overview) pour un dépôt ou une organisation | Plugins and skills | Any file |

679| [`fallbackModel`](#fallbackmodel) | Nommez les [modèles de secours](/docs/fr/model-config#fallback-model-chains) pour quand le principal est surchargé | Model and responses | Any file |679| [`fallbackModel`](#fallbackmodel) | Nommez les [modèles de secours](/docs/fr/model-config#fallback-model-chains) pour quand le principal est surchargé | Model and responses | Any file |

680| [`fastMode`](#fastmode) | Activez le [mode rapide](/docs/fr/fast-mode) pour les sessions où il est disponible | Model and responses | Any file |680| [`fastMode`](#fastmode) | Activez le [mode rapide](/docs/fr/fast-mode) pour les sessions où il est disponible | Model and responses | Any file |

681| [`fastModePerSessionOptIn`](#fastmodepersessionoptin) | Exigez que les gens activent le [mode rapide](/docs/fr/fast-mode) à chaque session | Model and responses | Any file |681| [`fastModePerSessionOptIn`](#fastmodepersessionoptin) | Exigez que les gens activent le [mode rapide](/docs/fr/fast-mode) à chaque session | Model and responses | Any file |


683| [`feedbackSurveyRate`](#feedbacksurveyrate) | Modifiez la fréquence d'apparition de l'[enquête de qualité de session](/docs/fr/data-usage#session-quality-surveys) | Privacy and telemetry | Any file |683| [`feedbackSurveyRate`](#feedbacksurveyrate) | Modifiez la fréquence d'apparition de l'[enquête de qualité de session](/docs/fr/data-usage#session-quality-surveys) | Privacy and telemetry | Any file |

684| [`fileCheckpointingEnabled`](#filecheckpointingenabled) | Désactivez ou activez les instantanés de fichiers que [`/rewind`](/docs/fr/checkpointing) restaure | Memory and context | Any file |684| [`fileCheckpointingEnabled`](#filecheckpointingenabled) | Désactivez ou activez les instantanés de fichiers que [`/rewind`](/docs/fr/checkpointing) restaure | Memory and context | Any file |

685| [`fileSuggestion`](#filesuggestion) | Fournissez l'[autocomplétion de fichier `@`](/docs/fr/interactive-mode#quick-commands) à partir de votre propre commande | Interface and terminal | Any file |685| [`fileSuggestion`](#filesuggestion) | Fournissez l'[autocomplétion de fichier `@`](/docs/fr/interactive-mode#quick-commands) à partir de votre propre commande | Interface and terminal | Any file |

686| [`footerLinksRegexes`](#footerlinksregexes) | Transformez les ID de problème ou d'examen en sortie en [liens cliquables](/docs/fr/statusline#clickable-links) sous la zone d'entrée | Interface and terminal | User or managed |686| [`footerLinksRegexes`](#footerlinksregexes) | Transformez les ID d'issue ou de revue en sortie en [liens cliquables](/docs/fr/statusline#clickable-links) sous la zone de saisie | Interface and terminal | User or managed |

687| [`forceLoginGatewayUrl`](#forcelogingatewayurl) | Définissez l'[URL de passerelle](/docs/fr/claude-apps-gateway#set-the-gateway-url) à laquelle l'écran de connexion se connecte | Authentication and providers | Managed |687| [`forceLoginGatewayUrl`](#forcelogingatewayurl) | Définissez l'[URL de passerelle](/docs/fr/claude-apps-gateway#set-the-gateway-url) à laquelle l'écran de connexion se connecte | Authentication and providers | Managed |

688| [`forceLoginMethod`](#forceloginmethod) | [Limitez la connexion](/docs/fr/authentication#restrict-login-to-your-organization) à claude.ai, Claude Console, ou une [passerelle cloud](/docs/fr/claude-apps-gateway) | Authentication and providers | Any file |688| [`forceLoginMethod`](#forceloginmethod) | [Limitez la connexion](/docs/fr/authentication#restrict-login-to-your-organization) à claude.ai, Claude Console, ou une [passerelle cloud](/docs/fr/claude-apps-gateway) | Authentication and providers | Any file |

689| [`forceLoginOrgUUID`](#forceloginorguuid) | [Épinglez les connexions claude.ai à votre organisation](/docs/fr/authentication#restrict-login-to-your-organization) ; seule une source gérée l'applique | Authentication and providers | Any file |689| [`forceLoginOrgUUID`](#forceloginorguuid) | [Épinglez les connexions claude.ai à votre organisation](/docs/fr/authentication#restrict-login-to-your-organization) ; seule une source gérée l'applique | Authentication and providers | Any file |


692| [`gcpAuthRefresh`](#gcpauthrefresh) | Actualisez les [identifiants Google Cloud](/docs/fr/google-vertex-ai#advanced-credential-configuration) avec votre propre commande | Authentication and providers | Any file |692| [`gcpAuthRefresh`](#gcpauthrefresh) | Actualisez les [identifiants Google Cloud](/docs/fr/google-vertex-ai#advanced-credential-configuration) avec votre propre commande | Authentication and providers | Any file |

693| [`hooks`](#hooks) | Exécutez vos propres commandes en tant que [hooks](/docs/fr/hooks) à des points du cycle de vie de Claude Code | Hooks and automation | Any file |693| [`hooks`](#hooks) | Exécutez vos propres commandes en tant que [hooks](/docs/fr/hooks) à des points du cycle de vie de Claude Code | Hooks and automation | Any file |

694| [`httpHookAllowedEnvVars`](#httphookallowedenvvars) | Limitez les variables d'environnement que les [hooks HTTP](/docs/fr/hooks) peuvent mettre dans les en-têtes | Hooks and automation | Any file |694| [`httpHookAllowedEnvVars`](#httphookallowedenvvars) | Limitez les variables d'environnement que les [hooks HTTP](/docs/fr/hooks) peuvent mettre dans les en-têtes | Hooks and automation | Any file |

695| [`includeCoAuthoredBy`](#includecoauthoredby) | Obsolète ; utilisez `attribution` pour masquer ou modifier l'attribution de commit et de PR | Git and attribution | Any file |695| [`includeCoAuthoredBy`](#includecoauthoredby) | Déprécié ; utilisez `attribution` pour masquer ou modifier l'attribution de commit et de PR | Git and attribution | Any file |

696| [`includeGitInstructions`](#includegitinstructions) | Supprimez les instructions de commit et de PR intégrées du contexte de Claude | Git and attribution | Any file |696| [`includeGitInstructions`](#includegitinstructions) | Supprimez les instructions de commit et de PR intégrées du contexte de Claude | Git and attribution | Any file |

697| [`inputNeededNotifEnabled`](#inputneedednotifenabled) | Recevez une [notification push](/docs/fr/remote-control#mobile-push-notifications) quand Claude vous attend | Remote, desktop, and notifications | Any file |697| [`inputNeededNotifEnabled`](#inputneedednotifenabled) | Recevez une [notification push](/docs/fr/remote-control#mobile-push-notifications) quand Claude vous attend | Remote, desktop, and notifications | Any file |

698| [`isolatePeerMachines`](#isolatepeermachines) | Demandez-vous avant que Claude [envoie un message à l'une de vos sessions sur une autre machine](/docs/fr/cross-session-messaging#require-approval-for-cross-machine-messages) | Agents, sessions, and worktrees | Any file |698| [`isolatePeerMachines`](#isolatepeermachines) | Demandez-vous avant que Claude [envoie un message à l'une de vos sessions sur une autre machine](/docs/fr/cross-session-messaging#require-approval-for-cross-machine-messages) | Agents, sessions, and worktrees | Any file |

699| [`keybindingFlavor`](#keybindingflavor) | Obsolète et sans effet ; les raccourcis d'édition de mots suivent toujours les [conventions readline](/docs/fr/interactive-mode#make-ctrl-w-delete-back-to-whitespace) | Interface and terminal | Any file |699| [`keybindingFlavor`](#keybindingflavor) | Déprécié et sans effet ; les raccourcis d'édition de mots suivent toujours les [conventions readline](/docs/fr/interactive-mode#make-ctrl-w-delete-back-to-whitespace) | Interface and terminal | Any file |

700| [`language`](#language) | Faites répondre Claude dans une langue autre que l'anglais | Model and responses | Any file |700| [`language`](#language) | Faites répondre Claude dans une langue autre que l'anglais | Model and responses | Any file |

701| [`leftArrowOpensAgents`](#leftarrowopensagents) | Désactivez le raccourci `←` qui [met la session en arrière-plan et ouvre la vue agent](/docs/fr/agent-view#switch-sessions-without-leaving-the-terminal) | Global config settings | Global config |701| [`leftArrowOpensAgents`](#leftarrowopensagents) | Désactivez le raccourci `←` qui [met la session en arrière-plan et ouvre la vue agent](/docs/fr/agent-view#switch-sessions-without-leaving-the-terminal) | Global config settings | Global config |

702| [`managedMcpServers`](#managedmcpservers) | Fournissez les [serveurs MCP](/docs/fr/managed-mcp#provide-servers-through-managed-settings) distants à chaque utilisateur aux côtés de ceux qu'ils ajoutent | MCP | Managed |702| [`managedMcpServers`](#managedmcpservers) | Fournissez les [serveurs MCP](/docs/fr/managed-mcp#provide-servers-through-managed-settings) distants à chaque utilisateur aux côtés de ceux qu'ils ajoutent | MCP | Managed |


712| [`otelHeadersHelper`](#otelheadershelper) | Générez les en-têtes [OpenTelemetry](/docs/fr/monitoring-usage#dynamic-headers) rotatifs avec votre propre commande | Authentication and providers | Any file |712| [`otelHeadersHelper`](#otelheadershelper) | Générez les en-têtes [OpenTelemetry](/docs/fr/monitoring-usage#dynamic-headers) rotatifs avec votre propre commande | Authentication and providers | Any file |

713| [`outputStyle`](#outputstyle) | Modifiez le rôle, le ton et le format de sortie de Claude avec un [style de sortie](/docs/fr/output-styles) | Model and responses | Any file |713| [`outputStyle`](#outputstyle) | Modifiez le rôle, le ton et le format de sortie de Claude avec un [style de sortie](/docs/fr/output-styles) | Model and responses | Any file |

714| [`parentSettingsBehavior`](#parentsettingsbehavior) | Appliquez ou supprimez les restrictions qu'un [hôte SDK ou IDE](/docs/fr/managed-settings#let-an-embedding-host-add-policy) transmet quand vous déployez les [paramètres gérés](/docs/fr/managed-settings) | Enterprise and managed settings | Managed |714| [`parentSettingsBehavior`](#parentsettingsbehavior) | Appliquez ou supprimez les restrictions qu'un [hôte SDK ou IDE](/docs/fr/managed-settings#let-an-embedding-host-add-policy) transmet quand vous déployez les [paramètres gérés](/docs/fr/managed-settings) | Enterprise and managed settings | Managed |

715| [`permissionExplainerEnabled`](#permissionexplainerenabled) | Supprimé dans v2.1.257, ainsi que l'explication de la commande `Ctrl+E` sur les invites de permission shell | Global config settings | Global config |715| [`permissionExplainerEnabled`](#permissionexplainerenabled) | Supprimé dans v2.1.257, ainsi que l'explication de la commande `Ctrl+E` sur les demandes de permission shell | Global config settings | Global config |

716| [`permissions`](#permissions) | Définissez les règles d'autorisation, de demande et de refus et le [mode de permission](/docs/fr/permission-modes) de démarrage | Permission settings | Any file |716| [`permissions`](#permissions) | Définissez les règles d'autorisation, de demande et de refus et le [mode de permission](/docs/fr/permission-modes) de démarrage | Permission settings | Any file |

717| [`permissions.additionalDirectories`](#permissions-additionaldirectories) | Donnez à Claude l'accès aux fichiers des [répertoires en dehors du répertoire actuel](/docs/fr/permissions#working-directories) | Permission settings | Any file |717| [`permissions.additionalDirectories`](#permissions-additionaldirectories) | Donnez à Claude l'accès aux fichiers des [répertoires en dehors du répertoire actuel](/docs/fr/permissions#working-directories) | Permission settings | Any file |

718| [`permissions.allow`](#permissions-allow) | Approuvez les [utilisations d'outils](/docs/fr/permissions#permission-rule-syntax) listées sans invite | Permission settings | Any file |718| [`permissions.allow`](#permissions-allow) | Approuvez les [utilisations d'outils](/docs/fr/permissions#permission-rule-syntax) listées sans demande | Permission settings | Any file |

719| [`permissions.ask`](#permissions-ask) | Invitez toujours avant les [utilisations d'outils](/docs/fr/permissions#permission-rule-syntax) listées | Permission settings | Any file |719| [`permissions.ask`](#permissions-ask) | Demandez toujours avant les [utilisations d'outils](/docs/fr/permissions#permission-rule-syntax) listées | Permission settings | Any file |

720| [`permissions.blockReadsOutsideWorkingDirectories`](#permissions-blockreadsoutsideworkingdirectories) | Faites refuser les lectures des outils de fichier en dehors des [répertoires de travail](/docs/fr/permissions#working-directories) dans chaque mode de permission | Permission settings | Any file |720| [`permissions.blockReadsOutsideWorkingDirectories`](#permissions-blockreadsoutsideworkingdirectories) | Faites refuser les lectures des outils de fichier en dehors des [répertoires de travail](/docs/fr/permissions#working-directories) dans chaque mode de permission | Permission settings | Any file |

721| [`permissions.defaultMode`](#permissions-defaultmode) | Définissez le [mode de permission](/docs/fr/permission-modes#which-mode-a-session-starts-in) dans lequel les nouvelles sessions commencent | Permission settings | Any file |721| [`permissions.defaultMode`](#permissions-defaultmode) | Définissez le [mode de permission](/docs/fr/permission-modes#which-mode-a-session-starts-in) dans lequel les nouvelles sessions commencent | Permission settings | Any file |

722| [`permissions.deny`](#permissions-deny) | Bloquez les [utilisations d'outils](/docs/fr/permissions#permission-rule-syntax) listées, y compris les lectures de fichiers qui contiennent des secrets | Permission settings | Any file |722| [`permissions.deny`](#permissions-deny) | Bloquez les [utilisations d'outils](/docs/fr/permissions#permission-rule-syntax) listées, y compris les lectures de fichiers qui contiennent des secrets | Permission settings | Any file |

723| [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode) | Empêchez quiconque d'entrer dans le [mode bypassPermissions](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) | Permission settings | Any file |723| [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode) | Empêchez quiconque d'entrer dans le [mode bypassPermissions](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) | Permission settings | Any file |

724| [`plansDirectory`](#plansdirectory) | Choisissez où le [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode) écrit les fichiers de plan | Memory and context | Any file |724| [`plansDirectory`](#plansdirectory) | Choisissez où le [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode) écrit les fichiers de plan | Memory and context | Any file |

725| [`pluginConfigs`](#pluginconfigs) | Stockez les réponses que vous avez données à la boîte de dialogue de configuration d'un [plugin](/docs/fr/plugins/overview) | Plugins and skills | User or managed |725| [`pluginConfigs`](#pluginconfigs) | Stockez les réponses que vous avez données à la boîte de dialogue de configuration d'un [plugin](/docs/fr/plugins/overview) | Plugins and skills | User or managed |

726| [`pluginSuggestionMarketplaces`](#pluginsuggestionmarketplaces) | Choisissez les [marchés](/docs/fr/plugins/org#restrict-what-users-can-install) qui peuvent afficher les suggestions d'installation de plugins dans `/plugin` | Plugins and skills | Managed |726| [`pluginSuggestionMarketplaces`](#pluginsuggestionmarketplaces) | Choisissez les [marketplaces](/docs/fr/plugins/org#restrict-what-users-can-install) qui peuvent afficher les suggestions d'installation de plugins dans `/plugin` | Plugins and skills | Managed |

727| [`pluginTrustMessage`](#plugintrustmessage) | Ajoutez votre propre texte à l'avertissement de confiance du [plugin](/docs/fr/plugins/overview) | Plugins and skills | Managed |727| [`pluginTrustMessage`](#plugintrustmessage) | Ajoutez votre propre texte à l'avertissement de confiance du [plugin](/docs/fr/plugins/overview) | Plugins and skills | Managed |

728| [`policyHelper`](#policyhelper) | Exécutez un exécutable qui calcule les [paramètres gérés](/docs/fr/managed-settings#compute-the-policy-with-a-helper-program) au démarrage | Enterprise and managed settings | Managed |728| [`policyHelper`](#policyhelper) | Exécutez un exécutable qui calcule les [paramètres gérés](/docs/fr/managed-settings#compute-the-policy-with-a-helper-program) au démarrage | Enterprise and managed settings | Managed |

729| [`policyHelper.path`](#policyhelper-path) | Nommez l'[exécutable d'aide](/docs/fr/managed-settings#compute-the-policy-with-a-helper-program) que Claude Code exécute | Enterprise and managed settings | Managed |729| [`policyHelper.path`](#policyhelper-path) | Nommez l'[exécutable d'aide](/docs/fr/managed-settings#compute-the-policy-with-a-helper-program) que Claude Code exécute | Enterprise and managed settings | Managed |


733| [`prefersReducedMotion`](#prefersreducedmotion) | [Réduisez ou désactivez](/docs/fr/accessibility#accessibility-settings) les animations de spinner, shimmer et flash | Interface and terminal | Any file |733| [`prefersReducedMotion`](#prefersreducedmotion) | [Réduisez ou désactivez](/docs/fr/accessibility#accessibility-settings) les animations de spinner, shimmer et flash | Interface and terminal | Any file |

734| [`prependPlugins`](#prependplugins) | Exécutez les [mods](/docs/fr/plugins/mods/admin) de votre organisation avant chaque mod qu'un utilisateur installe | Plugins and skills | User or managed |734| [`prependPlugins`](#prependplugins) | Exécutez les [mods](/docs/fr/plugins/mods/admin) de votre organisation avant chaque mod qu'un utilisateur installe | Plugins and skills | User or managed |

735| [`processWrapper`](#processwrapper) | Exécutez les processus d'arrière-plan de Claude Code via un [lanceur d'entreprise](/docs/fr/corporate-launcher) sur macOS et Linux | Agents, sessions, and worktrees | User or managed |735| [`processWrapper`](#processwrapper) | Exécutez les processus d'arrière-plan de Claude Code via un [lanceur d'entreprise](/docs/fr/corporate-launcher) sur macOS et Linux | Agents, sessions, and worktrees | User or managed |

736| [`promptCacheTtl`](#promptcachettl) | Choisissez la [durée de vie du cache d'invite](/docs/fr/prompt-caching#cache-lifetime) pour la conversation principale | Model and responses | Any file |736| [`promptCacheTtl`](#promptcachettl) | Choisissez la [durée de vie du cache de prompt](/docs/fr/prompt-caching#cache-lifetime) pour la conversation principale | Model and responses | Any file |

737| [`promptSuggestionEnabled`](#promptsuggestionenabled) | Masquez les [suggestions d'invite](/docs/fr/interactive-mode#prompt-suggestions) grisées dans la zone d'entrée | Interface and terminal | Any file |737| [`promptSuggestionEnabled`](#promptsuggestionenabled) | Masquez les [suggestions de prompt](/docs/fr/interactive-mode#prompt-suggestions) grisées dans la zone de saisie | Interface and terminal | Any file |

738| [`prStatusFooterEnabled`](#prstatusfooterenabled) | Désactivez le badge [statut d'examen PR](/docs/fr/interactive-mode#pr-review-status) du pied de page d'invite et la vérification de demande de tirage derrière lui | Global config settings | Global config |738| [`prStatusFooterEnabled`](#prstatusfooterenabled) | Désactivez le badge [statut de revue PR](/docs/fr/interactive-mode#pr-review-status) du pied de page du prompt et la vérification de pull request derrière lui | Global config settings | Global config |

739| [`prUrlTemplate`](#prurltemplate) | Pointez les liens PR vers un outil d'examen de code interne au lieu de github.com | Git and attribution | Any file |739| [`prUrlTemplate`](#prurltemplate) | Pointez les liens PR vers un outil de revue de code interne au lieu de github.com | Git and attribution | Any file |

740| [`remote.defaultEnvironmentId`](#remote-defaultenvironmentid) | Choisissez l'[environnement cloud](/docs/fr/cloud-environments) par défaut pour `claude --cloud` ; un ID `ccpool_` auto-hébergé est en lecture seule à partir des paramètres utilisateur et gérés et `--settings` | Remote, desktop, and notifications | Any file |740| [`remote.defaultEnvironmentId`](#remote-defaultenvironmentid) | Choisissez l'[environnement cloud](/docs/fr/cloud-environments) par défaut pour `claude --cloud` ; un ID `ccpool_` auto-hébergé n'est lu qu'à partir des paramètres utilisateur et gérés et de `--settings` | Remote, desktop, and notifications | Any file |

741| [`remoteControlAtStartup`](#remotecontrolatstartup) | Connectez [Remote Control](/docs/fr/remote-control#enable-remote-control-for-all-sessions) automatiquement quand une session démarre | Remote, desktop, and notifications | Any file |741| [`remoteControlAtStartup`](#remotecontrolatstartup) | Connectez [Remote Control](/docs/fr/remote-control#enable-remote-control-for-all-sessions) automatiquement quand une session démarre | Remote, desktop, and notifications | Any file |

742| [`requiredMaximumVersion`](#requiredmaximumversion) | [Refusez de démarrer](/docs/fr/setup#pin-a-minimum-version) sur une version plus récente que celle que votre organisation autorise | Updates and versioning | Managed |742| [`requiredMaximumVersion`](#requiredmaximumversion) | [Refusez de démarrer](/docs/fr/setup#pin-a-minimum-version) sur une version plus récente que celle que votre organisation autorise | Updates and versioning | Managed |

743| [`requiredMinimumVersion`](#requiredminimumversion) | [Refusez de démarrer](/docs/fr/setup#pin-a-minimum-version) sur une version plus ancienne que celle que votre organisation exige | Updates and versioning | Managed |743| [`requiredMinimumVersion`](#requiredminimumversion) | [Refusez de démarrer](/docs/fr/setup#pin-a-minimum-version) sur une version plus ancienne que celle que votre organisation exige | Updates and versioning | Managed |


746| [`sandbox`](#sandbox) | [Isolez les commandes Bash](/docs/fr/sandboxing) de votre système de fichiers et réseau sur macOS, Linux et WSL2 | Sandbox settings | Any file |746| [`sandbox`](#sandbox) | [Isolez les commandes Bash](/docs/fr/sandboxing) de votre système de fichiers et réseau sur macOS, Linux et WSL2 | Sandbox settings | Any file |

747| [`sandbox.allowAppleEvents`](#sandbox-allowappleevents) | Laissez les [commandes en sandbox](/docs/fr/sandboxing) envoyer des Apple Events sur macOS | Sandbox settings | User or managed |747| [`sandbox.allowAppleEvents`](#sandbox-allowappleevents) | Laissez les [commandes en sandbox](/docs/fr/sandboxing) envoyer des Apple Events sur macOS | Sandbox settings | User or managed |

748| [`sandbox.allowUnsandboxedCommands`](#sandbox-allowunsandboxedcommands) | Laissez Claude réessayer une commande bloquée en dehors du [sandbox](/docs/fr/sandboxing#the-unsandboxed-retry-escape-hatch), ou l'interdire | Sandbox settings | Any file |748| [`sandbox.allowUnsandboxedCommands`](#sandbox-allowunsandboxedcommands) | Laissez Claude réessayer une commande bloquée en dehors du [sandbox](/docs/fr/sandboxing#the-unsandboxed-retry-escape-hatch), ou l'interdire | Sandbox settings | Any file |

749| [`sandbox.autoAllowBashIfSandboxed`](#sandbox-autoallowbashifsandboxed) | Exécutez les [commandes en sandbox](/docs/fr/sandboxing#auto-allow-mode) sans invite de permission | Sandbox settings | Any file |749| [`sandbox.autoAllowBashIfSandboxed`](#sandbox-autoallowbashifsandboxed) | Exécutez les [commandes en sandbox](/docs/fr/sandboxing#auto-allow-mode) sans demande de permission | Sandbox settings | Any file |

750| [`sandbox.bwrapPath`](#sandbox-bwrappath) | Pointez le [sandbox](/docs/fr/sandboxing) vers un binaire bubblewrap en dehors de `PATH` | Sandbox settings | Managed |750| [`sandbox.bwrapPath`](#sandbox-bwrappath) | Pointez le [sandbox](/docs/fr/sandboxing) vers un binaire bubblewrap en dehors de `PATH` | Sandbox settings | Managed |

751| [`sandbox.credentials`](#sandbox-credentials) | Masquez ou masquez les fichiers et variables d'identifiants à l'intérieur du [sandbox](/docs/fr/sandboxing#protect-credentials) | Sandbox settings | Any file |751| [`sandbox.credentials`](#sandbox-credentials) | Cachez ou masquez les fichiers et variables d'identifiants à l'intérieur du [sandbox](/docs/fr/sandboxing#protect-credentials) | Sandbox settings | Any file |

752| [`sandbox.credentials.allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) | Laissez les [identifiants masqués](/docs/fr/sandboxing#mask-credentials) atteindre les services HTTP simples sur les réseaux de test de confiance | Sandbox settings | User or managed |752| [`sandbox.credentials.allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) | Laissez les [identifiants masqués](/docs/fr/sandboxing#mask-credentials) atteindre les services HTTP simples sur les réseaux de test de confiance | Sandbox settings | User or managed |

753| [`sandbox.credentials.awsPairs`](#sandbox-credentials-awspairs) | Liez les variables de clé AWS nommées personnalisées en un identifiant pour la [re-signature](/docs/fr/sandboxing#re-sign-aws-requests) | Sandbox settings | User or managed |753| [`sandbox.credentials.awsPairs`](#sandbox-credentials-awspairs) | Liez les variables de clé AWS nommées personnalisées en un identifiant pour la [re-signature](/docs/fr/sandboxing#re-sign-aws-requests) | Sandbox settings | User or managed |

754| [`sandbox.credentials.envVars`](#sandbox-credentials-envvars) | Désactivez ou masquez une variable d'environnement à l'intérieur du [sandbox](/docs/fr/sandboxing#mask-environment-variables) | Sandbox settings | Any file |754| [`sandbox.credentials.envVars`](#sandbox-credentials-envvars) | Désactivez ou masquez une variable d'environnement à l'intérieur du [sandbox](/docs/fr/sandboxing#mask-environment-variables) | Sandbox settings | Any file |

755| [`sandbox.credentials.files`](#sandbox-credentials-files) | Bloquez ou masquez les lectures d'un fichier d'identifiants à l'intérieur du [sandbox](/docs/fr/sandboxing#mask-credential-files) | Sandbox settings | Any file |755| [`sandbox.credentials.files`](#sandbox-credentials-files) | Bloquez ou masquez les lectures d'un fichier d'identifiants à l'intérieur du [sandbox](/docs/fr/sandboxing#mask-credential-files) | Sandbox settings | Any file |

756| [`sandbox.credentials.sigv4`](#sandbox-credentials-sigv4) | Choisissez si le streaming, les demandes présignées ou [les demandes AWS SigV4A](/docs/fr/sandboxing#re-sign-aws-requests) échouent ou passent | Sandbox settings | User or managed |756| [`sandbox.credentials.sigv4`](#sandbox-credentials-sigv4) | Choisissez si les requêtes AWS en streaming, présignées ou [SigV4A](/docs/fr/sandboxing#re-sign-aws-requests) échouent ou passent | Sandbox settings | User or managed |

757| [`sandbox.enabled`](#sandbox-enabled) | Activez le [sandboxing Bash](/docs/fr/sandboxing#get-started) sur macOS, Linux et WSL2 | Sandbox settings | Any file |757| [`sandbox.enabled`](#sandbox-enabled) | Activez le [sandboxing Bash](/docs/fr/sandboxing#get-started) sur macOS, Linux et WSL2 | Sandbox settings | Any file |

758| [`sandbox.enableWeakerNestedSandbox`](#sandbox-enableweakernestedsandbox) | Exécutez le [sandbox](/docs/fr/sandboxing) Linux à l'intérieur d'un conteneur sans privilèges | Sandbox settings | Any file |758| [`sandbox.enableWeakerNestedSandbox`](#sandbox-enableweakernestedsandbox) | Exécutez le [sandbox](/docs/fr/sandboxing) Linux à l'intérieur d'un conteneur sans privilèges | Sandbox settings | Any file |

759| [`sandbox.enableWeakerNetworkIsolation`](#sandbox-enableweakernetworkisolation) | Laissez `gh`, `gcloud` et `terraform` vérifier TLS derrière un proxy MITM à l'intérieur du [sandbox](/docs/fr/sandboxing#troubleshooting) sur macOS | Sandbox settings | Any file |759| [`sandbox.enableWeakerNetworkIsolation`](#sandbox-enableweakernetworkisolation) | Laissez `gh`, `gcloud` et `terraform` vérifier TLS derrière un proxy MITM à l'intérieur du [sandbox](/docs/fr/sandboxing#go-based-clis-fail-tls-verification-on-macos) sur macOS | Sandbox settings | Any file |

760| [`sandbox.excludedCommands`](#sandbox-excludedcommands) | Nommez les commandes que Claude Code peut exécuter en dehors du [sandbox](/docs/fr/sandboxing) | Sandbox settings | Any file |760| [`sandbox.excludedCommands`](#sandbox-excludedcommands) | Nommez les commandes que Claude Code peut exécuter en dehors du [sandbox](/docs/fr/sandboxing) | Sandbox settings | Any file |

761| [`sandbox.failIfUnavailable`](#sandbox-failifunavailable) | Refusez de démarrer quand le [sandbox](/docs/fr/sandboxing) ne peut pas, au lieu de s'exécuter sans sandbox | Sandbox settings | Any file |761| [`sandbox.failIfUnavailable`](#sandbox-failifunavailable) | Refusez de démarrer quand le [sandbox](/docs/fr/sandboxing) ne peut pas, au lieu de s'exécuter sans sandbox | Sandbox settings | Any file |

762| [`sandbox.filesystem`](#sandbox-filesystem) | Contrôlez les chemins que les [commandes en sandbox](/docs/fr/sandboxing#filesystem-isolation) peuvent lire et écrire | Sandbox settings | Any file |762| [`sandbox.filesystem`](#sandbox-filesystem) | Contrôlez les chemins que les [commandes en sandbox](/docs/fr/sandboxing#filesystem-isolation) peuvent lire et écrire | Sandbox settings | Any file |


766| [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread) | Bloquez les [commandes en sandbox](/docs/fr/sandboxing) de lire des chemins spécifiques | Sandbox settings | Any file |766| [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread) | Bloquez les [commandes en sandbox](/docs/fr/sandboxing) de lire des chemins spécifiques | Sandbox settings | Any file |

767| [`sandbox.filesystem.denyWrite`](#sandbox-filesystem-denywrite) | Bloquez les [commandes en sandbox](/docs/fr/sandboxing) d'écrire dans des chemins spécifiques | Sandbox settings | Any file |767| [`sandbox.filesystem.denyWrite`](#sandbox-filesystem-denywrite) | Bloquez les [commandes en sandbox](/docs/fr/sandboxing) d'écrire dans des chemins spécifiques | Sandbox settings | Any file |

768| [`sandbox.filesystem.disabled`](#sandbox-filesystem-disabled) | [Désactivez l'isolation du système de fichiers](/docs/fr/sandboxing#disable-filesystem-isolation) tout en conservant l'isolation du réseau | Sandbox settings | User or managed |768| [`sandbox.filesystem.disabled`](#sandbox-filesystem-disabled) | [Désactivez l'isolation du système de fichiers](/docs/fr/sandboxing#disable-filesystem-isolation) tout en conservant l'isolation du réseau | Sandbox settings | User or managed |

769| [`sandbox.ignoreViolations`](#sandbox-ignoreviolations) | Silence les rapports de violation pour les chemins qu'une commande est censée sonder | Sandbox settings | Any file |769| [`sandbox.ignoreViolations`](#sandbox-ignoreviolations) | Faites taire les rapports de violation pour les chemins qu'une commande est censée sonder | Sandbox settings | Any file |

770| [`sandbox.network`](#sandbox-network) | Contrôlez les hôtes, ports et sockets que les [commandes en sandbox](/docs/fr/sandboxing#network-isolation) atteignent | Sandbox settings | Any file |770| [`sandbox.network`](#sandbox-network) | Contrôlez les hôtes, ports et sockets que les [commandes en sandbox](/docs/fr/sandboxing#network-isolation) atteignent | Sandbox settings | Any file |

771| [`sandbox.network.allowAllUnixSockets`](#sandbox-network-allowallunixsockets) | Laissez les [commandes en sandbox](/docs/fr/sandboxing) se connecter à chaque socket Unix | Sandbox settings | Any file |771| [`sandbox.network.allowAllUnixSockets`](#sandbox-network-allowallunixsockets) | Laissez les [commandes en sandbox](/docs/fr/sandboxing) se connecter à chaque socket Unix | Sandbox settings | Any file |

772| [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) | Pré-autorisez les domaines pour que les [commandes en sandbox](/docs/fr/sandboxing) ne les demandent pas | Sandbox settings | Any file |772| [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) | Pré-autorisez les domaines pour que les [commandes en sandbox](/docs/fr/sandboxing) ne demandent pas de permission pour eux | Sandbox settings | Any file |

773| [`sandbox.network.allowLocalBinding`](#sandbox-network-allowlocalbinding) | Laissez les [commandes en sandbox](/docs/fr/sandboxing) se lier aux ports localhost sur macOS | Sandbox settings | Any file |773| [`sandbox.network.allowLocalBinding`](#sandbox-network-allowlocalbinding) | Laissez les [commandes en sandbox](/docs/fr/sandboxing) écouter sur des ports réseau et se connecter à localhost sur macOS | Sandbox settings | Any file |

774| [`sandbox.network.allowMachLookup`](#sandbox-network-allowmachlookup) | Laissez les outils macOS [en sandbox](/docs/fr/sandboxing) comme le simulateur iOS ou Playwright atteindre leurs services XPC | Sandbox settings | Any file |774| [`sandbox.network.allowMachLookup`](#sandbox-network-allowmachlookup) | Laissez les outils macOS [en sandbox](/docs/fr/sandboxing) comme le simulateur iOS ou Playwright atteindre leurs services XPC | Sandbox settings | Any file |

775| [`sandbox.network.allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) | Verrouillez la liste d'autorisation du réseau aux [paramètres gérés](/docs/fr/sandboxing#keep-developers-from-widening-the-policy) | Sandbox settings | Managed |775| [`sandbox.network.allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) | Verrouillez la liste d'autorisation du réseau aux [paramètres gérés](/docs/fr/sandboxing#keep-developers-from-widening-the-policy) | Sandbox settings | Managed |

776| [`sandbox.network.allowUnixSockets`](#sandbox-network-allowunixsockets) | Listez les chemins de socket Unix que les [commandes en sandbox](/docs/fr/sandboxing) peuvent utiliser sur macOS | Sandbox settings | Any file |776| [`sandbox.network.allowUnixSockets`](#sandbox-network-allowunixsockets) | Listez les chemins de socket Unix que les [commandes en sandbox](/docs/fr/sandboxing) peuvent utiliser sur macOS | Sandbox settings | Any file |


778| [`sandbox.network.httpProxyPort`](#sandbox-network-httpproxyport) | Routez le trafic HTTP du [sandbox](/docs/fr/sandboxing#custom-proxy-configuration) via votre propre proxy | Sandbox settings | Any file |778| [`sandbox.network.httpProxyPort`](#sandbox-network-httpproxyport) | Routez le trafic HTTP du [sandbox](/docs/fr/sandboxing#custom-proxy-configuration) via votre propre proxy | Sandbox settings | Any file |

779| [`sandbox.network.socksProxyPort`](#sandbox-network-socksproxyport) | Routez le trafic SOCKS du [sandbox](/docs/fr/sandboxing#custom-proxy-configuration) via votre propre proxy | Sandbox settings | Any file |779| [`sandbox.network.socksProxyPort`](#sandbox-network-socksproxyport) | Routez le trafic SOCKS du [sandbox](/docs/fr/sandboxing#custom-proxy-configuration) via votre propre proxy | Sandbox settings | Any file |

780| [`sandbox.network.strictAllowlist`](#sandbox-network-strictallowlist) | Refusez les hôtes en dehors de la [liste d'autorisation](/docs/fr/sandboxing#network-isolation) au lieu de demander | Sandbox settings | User or managed |780| [`sandbox.network.strictAllowlist`](#sandbox-network-strictallowlist) | Refusez les hôtes en dehors de la [liste d'autorisation](/docs/fr/sandboxing#network-isolation) au lieu de demander | Sandbox settings | User or managed |

781| [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate) | Faites en sorte que le [sandbox](/docs/fr/sandboxing#network-isolation) proxy termine TLS pour qu'il puisse lire les demandes HTTPS | Sandbox settings | User or managed |781| [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate) | Faites en sorte que le proxy du [sandbox](/docs/fr/sandboxing#network-isolation) termine TLS pour qu'il puisse lire les requêtes HTTPS | Sandbox settings | User or managed |

782| [`sandbox.ripgrep`](#sandbox-ripgrep) | Utilisez votre propre binaire ripgrep à l'intérieur du [sandbox](/docs/fr/sandboxing) | Sandbox settings | User or managed |782| [`sandbox.ripgrep`](#sandbox-ripgrep) | Utilisez votre propre binaire ripgrep à l'intérieur du [sandbox](/docs/fr/sandboxing) | Sandbox settings | User or managed |

783| [`sandbox.socatPath`](#sandbox-socatpath) | Pointez le proxy du [sandbox](/docs/fr/sandboxing) vers un binaire `socat` en dehors de `PATH` | Sandbox settings | Managed |783| [`sandbox.socatPath`](#sandbox-socatpath) | Pointez le proxy du [sandbox](/docs/fr/sandboxing) vers un binaire `socat` en dehors de `PATH` | Sandbox settings | Managed |

784| [`showClearContextOnPlanAccept`](#showclearcontextonplanaccept) | Affichez une option « effacer le contexte » sur l'[écran d'acceptation du plan](/docs/fr/permission-modes#review-and-approve-a-plan) | Interface and terminal | Any file |784| [`showClearContextOnPlanAccept`](#showclearcontextonplanaccept) | Affichez une option « effacer le contexte » sur l'[écran d'acceptation du plan](/docs/fr/permission-modes#review-and-approve-a-plan) | Interface and terminal | Any file |

785| [`showThinkingSummaries`](#showthinkingsummaries) | Consultez les résumés de la [réflexion](/docs/fr/model-config#extended-thinking) de Claude au lieu d'un stub réduit | Model and responses | Any file |785| [`showThinkingSummaries`](#showthinkingsummaries) | Consultez les résumés de la [réflexion](/docs/fr/model-config#extended-thinking) de Claude au lieu d'un stub réduit | Model and responses | Any file |

786| [`showTurnDuration`](#showturnduration) | Masquez la durée « Cooked for » après chaque réponse | Interface and terminal | Any file |786| [`showTurnDuration`](#showturnduration) | Masquez la durée « Cooked for » après chaque réponse | Interface and terminal | Any file |

787| [`skillListingBudgetFraction`](#skilllistingbudgetfraction) | Réservez plus ou moins de contexte pour l'[énumération des compétences](/docs/fr/skills#skill-descriptions-are-cut-short) | Memory and context | Any file |787| [`skillListingBudgetFraction`](#skilllistingbudgetfraction) | Réservez plus ou moins de contexte pour la [liste des skills](/docs/fr/skills#skill-descriptions-are-cut-short) | Memory and context | Any file |

788| [`skillListingMaxDescChars`](#skilllistingmaxdescchars) | Limitez la longueur de la description de chaque compétence dans l'[énumération des compétences](/docs/fr/skills#skill-descriptions-are-cut-short) | Memory and context | Any file |788| [`skillListingMaxDescChars`](#skilllistingmaxdescchars) | Limitez la longueur de la description de chaque skill dans la [liste des skills](/docs/fr/skills#skill-descriptions-are-cut-short) | Memory and context | Any file |

789| [`skillOverrides`](#skilloverrides) | [Masquez ou réduisez une compétence](/docs/fr/skills#override-skill-visibility-from-settings) sans éditer son SKILL.md | Plugins and skills | Any file |789| [`skillOverrides`](#skilloverrides) | [Masquez ou réduisez un skill](/docs/fr/skills#override-skill-visibility-from-settings) sans éditer son SKILL.md | Plugins and skills | Any file |

790| [`skipAutoPermissionPrompt`](#skipautopermissionprompt) | Ignorez l'avis unique que Claude Code affiche quand vous entrez d'abord dans le [mode automatique](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) vous-même plutôt que via la valeur par défaut intégrée | Permission settings | User or managed |790| [`skipAutoPermissionPrompt`](#skipautopermissionprompt) | Ignorez l'avis unique que Claude Code affiche quand vous entrez d'abord dans le [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) vous-même plutôt que via la valeur par défaut intégrée | Permission settings | User or managed |

791| [`skipDangerousModePermissionPrompt`](#skipdangerousmodepermissionprompt) | Ignorez la boîte de dialogue de confirmation avant le [mode bypassPermissions](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) | Permission settings | User, local, or managed |791| [`skipDangerousModePermissionPrompt`](#skipdangerousmodepermissionprompt) | Ignorez la boîte de dialogue de confirmation avant le [mode bypassPermissions](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) | Permission settings | User, local, or managed |

792| [`skipWebFetchPreflight`](#skipwebfetchpreflight) | Ignorez la [vérification du nom d'hôte WebFetch](/docs/fr/tools-reference#webfetch-tool-behavior) quand Anthropic est inaccessible | Privacy and telemetry | Any file |792| [`skipWebFetchPreflight`](#skipwebfetchpreflight) | Ignorez la [vérification du nom d'hôte WebFetch](/docs/fr/tools-reference#webfetch-tool-behavior) quand Anthropic est inaccessible | Privacy and telemetry | Any file |

793| [`spellcheck`](#spellcheck) | Soulignez les mots mal orthographiés dans l'entrée d'invite avec un [vérificateur d'orthographe](/docs/fr/interactive-mode#check-spelling-as-you-type) que vous installez | Interface and terminal | User or managed |793| [`spellcheck`](#spellcheck) | Soulignez les mots mal orthographiés dans la zone de saisie du prompt avec un [vérificateur d'orthographe](/docs/fr/interactive-mode#check-spelling-as-you-type) que vous installez | Interface and terminal | User or managed |

794| [`spinnerTipsEnabled`](#spinnertipsenabled) | Masquez les conseils dans le spinner pendant que Claude travaille | Interface and terminal | Any file |794| [`spinnerTipsEnabled`](#spinnertipsenabled) | Masquez les conseils dans le spinner pendant que Claude travaille | Interface and terminal | Any file |

795| [`spinnerTipsOverride`](#spinnertipsoverride) | Ajoutez vos propres conseils à la rotation du spinner, ou remplacez les conseils intégrés | Interface and terminal | Any file |795| [`spinnerTipsOverride`](#spinnertipsoverride) | Ajoutez vos propres conseils à la rotation du spinner, ou remplacez les conseils intégrés | Interface and terminal | Any file |

796| [`spinnerVerbs`](#spinnerverbs) | Ajoutez ou remplacez les verbes affichés pendant l'exécution d'un tour | Interface and terminal | Any file |796| [`spinnerVerbs`](#spinnerverbs) | Ajoutez ou remplacez les verbes affichés pendant l'exécution d'un tour | Interface and terminal | Any file |

797| [`sshConfigs`](#sshconfigs) | Ajoutez les [connexions SSH](/docs/fr/desktop#pre-configure-ssh-connections-for-your-team) à la liste déroulante de l'environnement Bureau | Remote, desktop, and notifications | User or managed |797| [`sshConfigs`](#sshconfigs) | Ajoutez les [connexions SSH](/docs/fr/desktop#pre-configure-ssh-connections-for-your-team) à la liste déroulante de l'environnement Bureau | Remote, desktop, and notifications | User or managed |

798| [`sshHostAllowlist`](#sshhostallowlist) | Limitez les hôtes que les [sessions SSH Bureau](/docs/fr/desktop#restrict-which-ssh-hosts-users-can-connect-to) peuvent atteindre | Remote, desktop, and notifications | Managed |798| [`sshHostAllowlist`](#sshhostallowlist) | Limitez les hôtes que les [sessions SSH Bureau](/docs/fr/desktop#restrict-which-ssh-hosts-users-can-connect-to) peuvent atteindre | Remote, desktop, and notifications | Managed |

799| [`statusLine`](#statusline) | Exécutez votre propre commande pour rendre une [ligne d'état](/docs/fr/statusline) sous l'invite | Interface and terminal | Any file |799| [`statusLine`](#statusline) | Exécutez votre propre commande pour rendre une [barre de statut](/docs/fr/statusline) sous le prompt | Interface and terminal | Any file |

800| [`strictKnownMarketplaces`](#strictknownmarketplaces) | Liste d'autorisation des sources du [marché](/docs/fr/plugins/overview) que les utilisateurs peuvent ajouter et installer | Plugins and skills | Managed |800| [`strictKnownMarketplaces`](#strictknownmarketplaces) | Liste d'autorisation des sources de [marketplace](/docs/fr/plugins/overview) que les utilisateurs peuvent ajouter et depuis lesquelles ils peuvent installer | Plugins and skills | Managed |

801| [`strictPluginOnlyCustomization`](#strictpluginonlycustomization) | Bloquez les [compétences](/docs/fr/skills), les [agents](/docs/fr/sub-agents), les [hooks](/docs/fr/hooks) et les [serveurs MCP](/docs/fr/mcp) des sources utilisateur et projet | Plugins and skills | Managed |801| [`strictPluginOnlyCustomization`](#strictpluginonlycustomization) | Bloquez les [skills](/docs/fr/skills), les [agents](/docs/fr/sub-agents), les [hooks](/docs/fr/hooks) et les [serveurs MCP](/docs/fr/mcp) des sources utilisateur et projet | Plugins and skills | Managed |

802| [`strictPluginOnlyCustomization.agents`](#strictpluginonlycustomization-agents) | Verrouillez les [agents](/docs/fr/sub-agents) aux sources de plugin et gérées | Plugins and skills | Managed |802| [`strictPluginOnlyCustomization.agents`](#strictpluginonlycustomization-agents) | Verrouillez les [agents](/docs/fr/sub-agents) aux sources de plugin et gérées | Plugins and skills | Managed |

803| [`strictPluginOnlyCustomization.hooks`](#strictpluginonlycustomization-hooks) | Verrouillez les [hooks](/docs/fr/hooks) aux sources de plugin et gérées | Plugins and skills | Managed |803| [`strictPluginOnlyCustomization.hooks`](#strictpluginonlycustomization-hooks) | Verrouillez les [hooks](/docs/fr/hooks) aux sources de plugin et gérées | Plugins and skills | Managed |

804| [`strictPluginOnlyCustomization.mcp`](#strictpluginonlycustomization-mcp) | Verrouillez les [serveurs MCP](/docs/fr/mcp) aux sources de plugin et gérées | Plugins and skills | Managed |804| [`strictPluginOnlyCustomization.mcp`](#strictpluginonlycustomization-mcp) | Verrouillez les [serveurs MCP](/docs/fr/mcp) aux sources de plugin et gérées | Plugins and skills | Managed |

805| [`strictPluginOnlyCustomization.skills`](#strictpluginonlycustomization-skills) | Verrouillez les [compétences](/docs/fr/skills) aux sources de plugin et gérées | Plugins and skills | Managed |805| [`strictPluginOnlyCustomization.skills`](#strictpluginonlycustomization-skills) | Verrouillez les [skills](/docs/fr/skills) aux sources de plugin et gérées | Plugins and skills | Managed |

806| [`subagentPromptCacheTtl`](#subagentpromptcachettl) | Choisissez la [durée de vie du cache d'invite](/docs/fr/prompt-caching#cache-lifetime) pour les sous-agents et autres demandes en dehors de la conversation principale | Model and responses | Any file |806| [`subagentPromptCacheTtl`](#subagentpromptcachettl) | Choisissez la [durée de vie du cache de prompt](/docs/fr/prompt-caching#cache-lifetime) pour les sous-agents et autres requêtes en dehors de la conversation principale | Model and responses | Any file |

807| [`subagentStatusLine`](#subagentstatusline) | Réécrivez les lignes dans l'[affichage des tâches du sous-agent](/docs/fr/sub-agents) avec votre propre commande | Interface and terminal | Any file |807| [`subagentStatusLine`](#subagentstatusline) | Réécrivez les lignes dans l'[affichage des tâches du sous-agent](/docs/fr/sub-agents) avec votre propre commande | Interface and terminal | Any file |

808| [`switchModelsOnFlag`](#switchmodelsonflag) | Changez les modèles automatiquement ou mettez en pause quand un [classificateur de sécurité](/docs/fr/model-config#ask-before-switching) signale une demande | Model and responses | Any file |808| [`switchModelsOnFlag`](#switchmodelsonflag) | Changez les modèles automatiquement ou mettez en pause quand un [classifieur de sécurité](/docs/fr/model-config#ask-before-switching) signale une requête | Model and responses | Any file |

809| [`syncClaudeAiPlugins`](#syncclaudeaiplugins) | Arrêtez de charger les [plugins activés sur votre compte claude.ai](/docs/fr/plugins/loading#synced-plugins) et arrêtez de télécharger les nouveaux | Plugins and skills | User, local, or managed |809| [`syncClaudeAiPlugins`](#syncclaudeaiplugins) | Arrêtez de charger les [plugins activés sur votre compte claude.ai](/docs/fr/plugins/loading#synced-plugins) et arrêtez de télécharger les nouveaux | Plugins and skills | User, local, or managed |

810| [`syncClaudeAiSkills`](#syncclaudeaiskills) | Arrêtez de charger les [compétences activées sur votre compte claude.ai](/docs/fr/skills#how-synced-skills-behave) et arrêtez de télécharger les nouvelles | Plugins and skills | User, local, or managed |810| [`syncClaudeAiSkills`](#syncclaudeaiskills) | Arrêtez de charger les [skills activés sur votre compte claude.ai](/docs/fr/skills#how-synced-skills-behave) et arrêtez de télécharger les nouveaux | Plugins and skills | User, local, or managed |

811| [`syntaxHighlightingDisabled`](#syntaxhighlightingdisabled) | Désactivez la coloration syntaxique dans les diffs et les blocs de code | Interface and terminal | Any file |811| [`syntaxHighlightingDisabled`](#syntaxhighlightingdisabled) | Désactivez la coloration syntaxique dans les diffs et les blocs de code | Interface and terminal | Any file |

812| [`taskOutputMaxChars`](#taskoutputmaxchars) | Supprimé dans v2.1.277, ainsi que l'outil `TaskOutput` qu'il dimensionnait | Memory and context | Any file |812| [`taskOutputMaxChars`](#taskoutputmaxchars) | Supprimé dans v2.1.277, ainsi que l'outil `TaskOutput` qu'il dimensionnait | Memory and context | Any file |

813| [`teammateDefaultModel`](#teammatedefaultmodel) | Supprimé dans v2.1.234 ; voir [Spécifier les coéquipiers et les modèles](/docs/fr/agent-teams#specify-teammates-and-models) pour savoir comment Claude Code choisit le modèle d'un coéquipier | Global config settings | Global config |813| [`teammateDefaultModel`](#teammatedefaultmodel) | Supprimé dans v2.1.234 ; voir [Spécifier les coéquipiers et les modèles](/docs/fr/agent-teams#specify-teammates-and-models) pour savoir comment Claude Code choisit le modèle d'un coéquipier | Global config settings | Global config |

814| [`teammateMode`](#teammatemode) | Choisissez comment les [coéquipiers de l'équipe agent affichent](/docs/fr/agent-teams#choose-a-display-mode) | Agents, sessions, and worktrees | Any file |814| [`teammateMode`](#teammatemode) | Choisissez comment [s'affichent les coéquipiers de l'équipe d'agents](/docs/fr/agent-teams#choose-a-display-mode) | Agents, sessions, and worktrees | Any file |

815| [`terminalProgressBarEnabled`](#terminalprogressbarenabled) | Masquez la barre de progression du terminal dans les terminaux qui la supportent | Interface and terminal | Any file |815| [`terminalProgressBarEnabled`](#terminalprogressbarenabled) | Masquez la barre de progression du terminal dans les terminaux qui la supportent | Interface and terminal | Any file |

816| [`terminalTitleFromRename`](#terminaltitlefromrename) | Arrêtez [`/rename`](/docs/fr/sessions#name-your-sessions) et `--name` de modifier le titre de l'onglet du terminal | Interface and terminal | Any file |816| [`terminalTitleFromRename`](#terminaltitlefromrename) | Arrêtez [`/rename`](/docs/fr/sessions#name-your-sessions) et `--name` de modifier le titre de l'onglet du terminal | Interface and terminal | Any file |

817| [`theme`](#theme) | Choisissez le [thème de couleur](/docs/fr/terminal-config#match-the-color-theme) de l'interface, intégré ou personnalisé | Interface and terminal | Any file |817| [`theme`](#theme) | Choisissez le [thème de couleur](/docs/fr/terminal-config#match-the-color-theme) de l'interface, intégré ou personnalisé | Interface and terminal | Any file |

818| [`timeFormat`](#timeformat) | Affichez les heures dans l'interface sur une horloge 12 heures ou 24 heures, en UTC, ou avec un motif strftime | Interface and terminal | Any file |818| [`timeFormat`](#timeformat) | Affichez les heures dans l'interface sur une horloge 12 heures ou 24 heures, en UTC, ou avec un motif strftime | Interface and terminal | Any file |

819| [`timeZone`](#timezone) | Affichez les heures dans l'interface dans un fuseau horaire autre que celui de votre système | Interface and terminal | Any file |819| [`timeZone`](#timezone) | Affichez les heures dans l'interface dans un fuseau horaire autre que celui de votre système | Interface and terminal | Any file |

820| [`tui`](#tui) | Choisissez le rendu [plein écran](/docs/fr/fullscreen) ou terminal classique | Interface and terminal | Any file |820| [`tui`](#tui) | Choisissez le rendu [plein écran](/docs/fr/fullscreen) ou terminal classique | Interface and terminal | Any file |

821| [`ultracode`](#ultracode) | Faites en sorte que Claude planifie un [flux de travail](/docs/fr/workflows#let-claude-decide-with-ultracode) pour chaque tâche substantielle sans être demandé | Model and responses | Any file |821| [`ultracode`](#ultracode) | Faites en sorte que Claude planifie un [workflow](/docs/fr/workflows#let-claude-decide-with-ultracode) pour chaque tâche substantielle sans qu'on le lui demande | Model and responses | Any file |

822| [`useAutoModeDuringPlan`](#useautomodeduringplan) | Laissez le classificateur du [mode automatique](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) examiner les commandes shell en [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode) ; définissez `false` pour obtenir des invites à la place | Permission settings | User, local, or managed |822| [`useAutoModeDuringPlan`](#useautomodeduringplan) | Laissez le classifieur du [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) examiner les commandes shell en [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode) ; définissez `false` pour obtenir des demandes de permission à la place | Permission settings | User, local, or managed |

823| [`verbose`](#verbose) | Affichez la [sortie complète de l'outil](/docs/fr/cli-reference#cli-flags) au lieu des résumés tronqués ; `viewMode` prend la priorité quand les deux sont définis | Interface and terminal | Any file |823| [`verbose`](#verbose) | Affichez la [sortie complète de l'outil](/docs/fr/cli-reference#cli-flags) au lieu des résumés tronqués ; `viewMode` a priorité quand les deux sont définis | Interface and terminal | Any file |

824| [`viewMode`](#viewmode) | Commencez chaque session dans la [vue par défaut, détaillée ou focus](/docs/fr/cli-reference#cli-flags) | Interface and terminal | Any file |824| [`viewMode`](#viewmode) | Commencez chaque session dans la [vue par défaut, détaillée ou focus](/docs/fr/cli-reference#cli-flags) | Interface and terminal | Any file |

825| [`vimInsertModeRemaps`](#viminsertmoderemaps) | Mappez une [séquence en mode INSERT](/docs/fr/interactive-mode#remap-insert-mode-key-sequences) à deux touches comme `jj` à Échap | Interface and terminal | User or managed |825| [`vimInsertModeRemaps`](#viminsertmoderemaps) | Mappez une [séquence en mode INSERT](/docs/fr/interactive-mode#remap-insert-mode-key-sequences) à deux touches comme `jj` à Échap | Interface and terminal | User or managed |

826| [`voice`](#voice) | Activez la [dictée vocale](/docs/fr/voice-dictation) et choisissez le mode maintien ou appui | Interface and terminal | Any file |826| [`voice`](#voice) | Activez la [dictée vocale](/docs/fr/voice-dictation) et choisissez le mode maintien ou appui | Interface and terminal | Any file |

827| [`voiceEnabled`](#voiceenabled) | Activez la [dictée vocale](/docs/fr/voice-dictation) avec la forme à clé unique plus ancienne | Interface and terminal | Any file |827| [`voiceEnabled`](#voiceenabled) | Activez la [dictée vocale](/docs/fr/voice-dictation) avec la forme à clé unique plus ancienne | Interface and terminal | Any file |

828| [`wheelScrollAccelerationEnabled`](#wheelscrollaccelerationenabled) | Désactivez l'[accélération de la molette de la souris](/docs/fr/fullscreen#mouse-wheel-scrolling) dans le rendu en plein écran | Interface and terminal | Any file |828| [`wheelScrollAccelerationEnabled`](#wheelscrollaccelerationenabled) | Désactivez l'[accélération de la molette de la souris](/docs/fr/fullscreen#mouse-wheel-scrolling) dans le rendu en plein écran | Interface and terminal | Any file |

829| [`workflowKeywordTriggerEnabled`](#workflowkeywordtriggerenabled) | Laissez le mot `ultracode` dans une invite démarrer un [flux de travail](/docs/fr/workflows) ; définissez `false` pour le taper sans en démarrer un | Hooks and automation | Any file |829| [`workflowKeywordTriggerEnabled`](#workflowkeywordtriggerenabled) | Laissez le mot `ultracode` dans un prompt démarrer un [workflow](/docs/fr/workflows) ; définissez `false` pour le taper sans en démarrer un | Hooks and automation | Any file |

830| [`workflowSizeGuideline`](#workflowsizeguideline) | Définissez le nombre d'agents que Claude vise dans les [flux de travail dynamiques](/docs/fr/workflows) | Hooks and automation | Any file |830| [`workflowSizeGuideline`](#workflowsizeguideline) | Définissez le nombre d'agents que Claude vise dans les [workflows dynamiques](/docs/fr/workflows) | Hooks and automation | Any file |

831| [`worktree`](#worktree) | Configurez la façon dont Claude Code crée les [worktrees](/docs/fr/worktrees) git | Agents, sessions, and worktrees | Any file |831| [`worktree`](#worktree) | Configurez la façon dont Claude Code crée les [worktrees](/docs/fr/worktrees) git | Agents, sessions, and worktrees | Any file |

832| [`worktree.baseRef`](#worktree-baseref) | Branchement des nouveaux [worktrees](/docs/fr/worktrees) à partir de la branche par défaut distante ou de votre HEAD local | Agents, sessions, and worktrees | Any file |832| [`worktree.baseRef`](#worktree-baseref) | Créez les branches des nouveaux [worktrees](/docs/fr/worktrees) à partir de la branche par défaut distante ou de votre HEAD local | Agents, sessions, and worktrees | Any file |

833| [`worktree.bgIsolation`](#worktree-bgisolation) | Laissez les sessions d'arrière-plan éditer la copie de travail sans [worktree](/docs/fr/worktrees) | Agents, sessions, and worktrees | Any file |833| [`worktree.bgIsolation`](#worktree-bgisolation) | Laissez les sessions d'arrière-plan éditer la copie de travail sans [worktree](/docs/fr/worktrees) | Agents, sessions, and worktrees | Any file |

834| [`worktree.sparsePaths`](#worktree-sparsepaths) | Vérifiez uniquement les répertoires dont vous avez besoin dans chaque [worktree](/docs/fr/worktrees) | Agents, sessions, and worktrees | Any file |834| [`worktree.sparsePaths`](#worktree-sparsepaths) | Extrayez uniquement les répertoires dont vous avez besoin dans chaque [worktree](/docs/fr/worktrees) | Agents, sessions, and worktrees | Any file |

835| [`worktree.symlinkDirectories`](#worktree-symlinkdirectories) | Créez des liens symboliques vers les grands répertoires dans chaque [worktree](/docs/fr/worktrees) au lieu de les dupliquer | Agents, sessions, and worktrees | Any file |835| [`worktree.symlinkDirectories`](#worktree-symlinkdirectories) | Créez des liens symboliques vers les grands répertoires dans chaque [worktree](/docs/fr/worktrees) au lieu de les dupliquer | Agents, sessions, and worktrees | Any file |

836| [`wslInheritsWindowsSettings`](#wslinheritswindowssettings) | Faites en sorte que WSL lise les [paramètres gérés](/docs/fr/managed-settings) à partir de la chaîne de politique Windows | Enterprise and managed settings | Managed |836| [`wslInheritsWindowsSettings`](#wslinheritswindowssettings) | Faites en sorte que WSL lise les [paramètres gérés](/docs/fr/managed-settings) à partir de la chaîne de politique Windows | Enterprise and managed settings | Managed |

837 837 


1447 1447 

1448Pour ce qu'un motif `!` dans une règle `--disallowedTools` ou de session peut découper, consultez [Règles Read et Edit](/docs/fr/permissions#read-and-edit).1448Pour ce qu'un motif `!` dans une règle `--disallowedTools` ou de session peut découper, consultez [Règles Read et Edit](/docs/fr/permissions#read-and-edit).

1449 1449 

1450Quand vous définissez cette clé, Claude Code v2.1.282 ou ultérieur ignore aussi le frontmatter [`allowed-tools`](/docs/fr/skills#pre-approve-tools-for-a-skill) dans les skills et les fichiers `.claude/commands/` provenant de ces sources :

1451 

1452* Le répertoire `.claude/` d'un dépôt

1453* Vos répertoires `~/.claude/skills/` et `~/.claude/commands/`, y compris les [skills synchronisés depuis claude.ai](/docs/fr/skills#where-synced-skills-load)

1454* Un répertoire `--add-dir`

1455* Les [plugins déclarés avec un manifeste `.claude-plugin`](/docs/fr/plugins/loading#plugins-shared-through-a-repository) dans `~/.claude/skills/` ou dans le `.claude/skills/` du projet

1456 

1457Les skills des paramètres gérés et les skills fournis conservent leur `allowed-tools`. Le `disallowed-tools` d'un skill s'applique toujours. Pour ce qu'un développeur voit quand Claude Code ignore le champ, consultez [Quand seules les règles de permission gérées s'appliquent](/docs/fr/skills#when-only-managed-permission-rules-apply).

1458 

1450* **Portée** : [`Managed`](#scopes)1459* **Portée** : [`Managed`](#scopes)

1451* **Type** : Booléen1460* **Type** : Booléen

1452 * `true` : les paramètres gérés deviennent la seule source de règles de permission1461 * `true` : les paramètres gérés deviennent la seule source de règles de permission


1544}1553}

1545```1554```

1546 1555 

1547Les trois tableaux de règles partagent une syntaxe ; consultez [Syntaxe des règles de permission](#permission-rule-syntax) sous `permissions.allow`. Pour comment les règles de permission de différents fichiers se combinent, consultez [comment les règles de permission fusionnent entre les portées](/docs/fr/permissions#settings-precedence) ; pour comment les clés de paramètres en général se combinent, consultez [Précédence des paramètres](/docs/fr/settings#settings-precedence) sur le guide des paramètres.1556Les trois tableaux de règles partagent une syntaxe ; consultez [Syntaxe des règles de permission](#permission-rule-syntax) sous `permissions.allow`. Pour comment les règles de permission de différents fichiers se combinent, consultez [comment les règles de permission fusionnent entre les portées](/docs/fr/permissions#settings-precedence) ; pour comment les clés de paramètres en général se combinent, consultez [Priorité des paramètres](/docs/fr/settings#settings-precedence) sur le guide des paramètres.

1548 1557 

1549<h3 id="useautomodeduringplan">1558<h3 id="useautomodeduringplan">

1550 `useAutoModeDuringPlan`1559 `useAutoModeDuringPlan`


1637* **Défaut** : non défini1646* **Défaut** : non défini

1638* **Remplacements par session** : `--disallowedTools` ajoute des règles de blocage pour une session à côté de cette clé1647* **Remplacements par session** : `--disallowedTools` ajoute des règles de blocage pour une session à côté de cette clé

1639 1648 

1640Cet exemple refuse les lectures des fichiers `.env`, du répertoire `secrets` et d'un fichier de credentials, et bloque les commandes `curl` :1649Cet exemple refuse les lectures des fichiers `.env`, du répertoire `secrets` et d'un fichier d'identifiants, et bloque les commandes `curl` :

1641 1650 

1642```json settings.json theme={null}1651```json settings.json theme={null}

1643{1652{


1661 1670 

1662Donnez à Claude l'accès aux fichiers des répertoires en dehors de celui dans lequel vous avez commencé, comme [répertoires de travail](/docs/fr/permissions#working-directories) supplémentaires. La plupart de la configuration `.claude/` n'est [pas découverte](/docs/fr/permissions#additional-directories-grant-file-access-not-configuration) de ces répertoires.1671Donnez à Claude l'accès aux fichiers des répertoires en dehors de celui dans lequel vous avez commencé, comme [répertoires de travail](/docs/fr/permissions#working-directories) supplémentaires. La plupart de la configuration `.claude/` n'est [pas découverte](/docs/fr/permissions#additional-directories-grant-file-access-not-configuration) de ces répertoires.

1663 1672 

1664* **Portée** : [`Any file`](#scopes)1673* **Portée** : [`Any file`](#scopes), avec des [limites sur l'accès en écriture du sandbox](/docs/fr/sandboxing#repository-settings-under-an-admin-required-sandbox) que confèrent les entrées de projet et locales

1665* **Type** : tableau de chemins de répertoires1674* **Type** : tableau de chemins de répertoires

1666* **Défaut** : non défini1675* **Défaut** : non défini

1667* **Remplacements par session** : `--add-dir` et `/add-dir` ajoutent des répertoires pour une session à côté de cette clé1676* **Remplacements par session** : `--add-dir` et `/add-dir` ajoutent des répertoires pour une session à côté de cette clé


1707 1716 

1708Les répertoires que vous ajoutez avec `--add-dir`, `/add-dir` ou `additionalDirectories` dans vos paramètres utilisateur ou gérés comptent comme répertoires de travail pour le blocage. Les répertoires ajoutés uniquement dans les paramètres du dépôt ne comptent pas : ceux dans `.claude/settings.json`, et ceux dans `.claude/settings.local.json` sauf si git signale ce fichier comme non suivi. Dans un répertoire qui n'est pas un dépôt git, ou quand git suit le fichier, Claude Code traite `.claude/settings.local.json` comme des paramètres fournis par le dépôt, donc mettez les répertoires que vous voulez garder lisibles dans vos paramètres utilisateur à la place.1717Les répertoires que vous ajoutez avec `--add-dir`, `/add-dir` ou `additionalDirectories` dans vos paramètres utilisateur ou gérés comptent comme répertoires de travail pour le blocage. Les répertoires ajoutés uniquement dans les paramètres du dépôt ne comptent pas : ceux dans `.claude/settings.json`, et ceux dans `.claude/settings.local.json` sauf si git signale ce fichier comme non suivi. Dans un répertoire qui n'est pas un dépôt git, ou quand git suit le fichier, Claude Code traite `.claude/settings.local.json` comme des paramètres fournis par le dépôt, donc mettez les répertoires que vous voulez garder lisibles dans vos paramètres utilisateur à la place.

1709 1718 

1710Quand [`autoMemoryDirectory`](#automemorydirectory) provient du `.claude/settings.json` du projet, ou d'un `.claude/settings.local.json` [traité comme fourni par le dépôt](/docs/fr/permissions#when-your-local-settings-file-needs-trust), Claude Code ne charge aucune [mémoire auto](/docs/fr/memory#storage-location) de ce répertoire et n'en enregistre aucune.1719Quand [`autoMemoryDirectory`](#automemorydirectory) provient du `.claude/settings.json` du projet, ou d'un `.claude/settings.local.json` [traité comme fourni par le dépôt](/docs/fr/permissions#when-your-local-settings-file-needs-trust), Claude Code ne charge aucune [mémoire automatique](/docs/fr/memory#storage-location) de ce répertoire et n'en enregistre aucune.

1711 1720 

1712Pour lever le blocage, supprimez la clé de chaque fichier de paramètres qui la définit, puis démarrez une nouvelle session.1721Pour lever le blocage, supprimez la clé de chaque fichier de paramètres qui la définit, puis démarrez une nouvelle session.

1713 1722 


1735 1744 

1736Sur Linux et WSL2, un fichier de configuration qui est un lien symbolique peut rester illisible à son propre chemin, et `git` s'exécute alors sans lui. `~/.git-credentials` et `$XDG_CONFIG_HOME/git/credentials` restent bloqués.1745Sur Linux et WSL2, un fichier de configuration qui est un lien symbolique peut rester illisible à son propre chemin, et `git` s'exécute alors sans lui. `~/.git-credentials` et `$XDG_CONFIG_HOME/git/credentials` restent bloqués.

1737 1746 

1738Si un fichier réouvert contient un secret, comme un jeton `http.extraHeader`, ajoutez son chemin à [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread). Une entrée `denyRead` qui couvre un fichier prend toujours précédence sur cette réouverture.1747Si un fichier réouvert contient un secret, comme un jeton `http.extraHeader`, ajoutez son chemin à [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread). Une entrée `denyRead` qui couvre un fichier a toujours priorité sur cette réouverture.

1739 1748 

1740<h3 id="permissions-defaultmode">1749<h3 id="permissions-defaultmode">

1741 `permissions.defaultMode`1750 `permissions.defaultMode`


1748 * `"default"` : Claude Code exécute uniquement les lectures sans demander1757 * `"default"` : Claude Code exécute uniquement les lectures sans demander

1749 * `"acceptEdits"` : Claude Code exécute aussi les éditions de fichiers et les commandes courantes du système de fichiers comme `mkdir` et `mv` sans demander1758 * `"acceptEdits"` : Claude Code exécute aussi les éditions de fichiers et les commandes courantes du système de fichiers comme `mkdir` et `mv` sans demander

1750 * `"plan"` : Claude Code lit et planifie mais bloque les éditions jusqu'à ce que vous approuviez un plan1759 * `"plan"` : Claude Code lit et planifie mais bloque les éditions jusqu'à ce que vous approuviez un plan

1751 * `"auto"` : Claude Code exécute sans invites de routine ; avant que les actions telles que les commandes shell et les demandes réseau s'exécutent, un classificateur en arrière-plan vérifie qu'elles s'alignent avec votre demande1760 * `"auto"` : Claude Code exécute sans invites de routine ; avant que les actions telles que les commandes shell et les requêtes réseau s'exécutent, un classificateur en arrière-plan vérifie qu'elles s'alignent avec votre demande

1752 * `"dontAsk"` : Claude Code refuse automatiquement chaque appel qui inviterait autrement ; les lectures, les autres actions qui ne nécessitent pas d'approbation, et les outils pré-approuvés s'exécutent toujours1761 * `"dontAsk"` : Claude Code refuse automatiquement chaque appel qui inviterait autrement ; les lectures, les autres actions qui ne nécessitent pas d'approbation, et les outils pré-approuvés s'exécutent toujours

1753 * `"bypassPermissions"` : Claude Code exécute tout sans demander1762 * `"bypassPermissions"` : Claude Code exécute tout sans demander

1754 * `"manual"` : un alias pour `"default"`, dans Claude Code v2.1.200 ou ultérieur1763 * `"manual"` : un alias pour `"default"`, dans Claude Code v2.1.200 ou ultérieur

1755* **Défaut** : non défini1764* **Défaut** : non défini

1756* **Remplacements par session** : `--permission-mode`, et son équivalent `--dangerously-skip-permissions` pour `bypassPermissions`, prennent précédence sur cette clé pour une session1765* **Remplacements par session** : `--permission-mode`, et son équivalent `--dangerously-skip-permissions` pour `bypassPermissions`, ont priorité sur cette clé pour une session

1757 1766 

1758```json settings.json theme={null}1767```json settings.json theme={null}

1759{1768{


1769 `permissions.disableBypassPermissionsMode`1778 `permissions.disableBypassPermissionsMode`

1770</h3>1779</h3>

1771 1780 

1772Empêchez quiconque d'entrer en mode `bypassPermissions`. Claude Code rejette alors l'indicateur `--dangerously-skip-permissions`, et ignore une [définition d'agent](/docs/fr/sub-agents#permission-modes) `permissionMode: bypassPermissions`, donc le sous-agent s'exécute avec le mode de permission de la session parent.1781Empêchez quiconque d'entrer en mode `bypassPermissions`. Claude Code rejette alors le flag `--dangerously-skip-permissions`, et ignore le `permissionMode: bypassPermissions` d'une [définition d'agent](/docs/fr/sub-agents#permission-modes), donc le sous-agent s'exécute avec le mode de permission de la session parent.

1773 1782 

1774* **Portée** : [`Any file`](#scopes). Généralement défini dans [les paramètres gérés](/docs/fr/managed-settings) pour appliquer la politique organisationnelle.1783* **Portée** : [`Any file`](#scopes). Généralement défini dans [les paramètres gérés](/docs/fr/managed-settings) pour appliquer la politique organisationnelle.

1775* **Type** : la chaîne `"disable"`1784* **Type** : la chaîne `"disable"`

1776* **Défaut** : non défini1785* **Défaut** : non défini

1777* **Remplacements par session** : cette clé prend précédence sur `--dangerously-skip-permissions`, que Claude Code rejette pendant que la clé est définie1786* **Remplacements par session** : cette clé a priorité sur `--dangerously-skip-permissions`, que Claude Code rejette pendant que la clé est définie

1778 1787 

1779```json settings.json theme={null}1788```json settings.json theme={null}

1780{1789{


1838* **Type** : objet avec `enabled`, `failIfUnavailable`, `autoAllowBashIfSandboxed`, `excludedCommands`, `allowUnsandboxedCommands`, `enableWeakerNestedSandbox`, `enableWeakerNetworkIsolation`, `allowAppleEvents`, `bwrapPath`, `socatPath`, `ignoreViolations` et `ripgrep`, plus les objets `filesystem`, `network` et `credentials`1847* **Type** : objet avec `enabled`, `failIfUnavailable`, `autoAllowBashIfSandboxed`, `excludedCommands`, `allowUnsandboxedCommands`, `enableWeakerNestedSandbox`, `enableWeakerNetworkIsolation`, `allowAppleEvents`, `bwrapPath`, `socatPath`, `ignoreViolations` et `ripgrep`, plus les objets `filesystem`, `network` et `credentials`

1839* **Default** : non défini, donc Claude Code exécute les commandes sans sandbox1848* **Default** : non défini, donc Claude Code exécute les commandes sans sandbox

1840 1849 

1841Ceci active le sandbox, ignore les invites de permission pour les commandes en sandbox, exécute `docker` en dehors du sandbox, ouvre deux chemins d'écriture supplémentaires, masque votre fichier d'identifiants AWS et pré-autorise GitHub et npm :1850Ceci active le sandbox, ignore les demandes de permission pour les commandes en sandbox, exécute `docker` en dehors du sandbox, ouvre deux chemins d'écriture supplémentaires, masque votre fichier d'identifiants AWS et pré-autorise GitHub et npm :

1842 1851 

1843```json settings.json theme={null}1852```json settings.json theme={null}

1844{1853{


1857}1866}

1858```1867```

1859 1868 

1860Claude Code prend la valeur d'une clé booléenne à partir de la portée de paramètres la plus prioritaire qui la définit, donc un `enabled` ou `failIfUnavailable` géré remplace tout ce qu'un développeur définit. Il fusionne les clés de tableau dans chaque portée de paramètres que la session charge, donc un développeur peut ajouter des entrées ; consultez [Keep developers from widening the policy](/docs/fr/sandboxing#keep-developers-from-widening-the-policy) pour les verrous réservés aux paramètres gérés. Pour exiger le sandbox pour une organisation, consultez [Enforce sandboxing with managed settings](/docs/fr/sandboxing#enforce-sandboxing-with-managed-settings).1869Lorsque les paramètres gérés définissent une clé booléenne telle que `enabled` ou `failIfUnavailable`, cette valeur remplace tout ce qu'un développeur définit. Claude Code fusionne les clés de tableau dans les portées de paramètres que la session charge, donc un développeur peut ajouter des entrées ; consultez [Keep developers from widening the policy](/docs/fr/sandboxing#keep-developers-from-widening-the-policy) pour les verrous réservés aux paramètres gérés. Pour exiger le sandbox pour une organisation, consultez [Enforce sandboxing with managed settings](/docs/fr/sandboxing#enforce-sandboxing-with-managed-settings).

1861 1870 

1862<h3 id="sandbox-enabled">1871<h3 id="sandbox-enabled">

1863 `sandbox.enabled`1872 `sandbox.enabled`


1865 1874 

1866Activez [sandboxing](/docs/fr/sandboxing) pour les commandes Bash. Lorsque vous choisissez un mode dans le panneau `/sandbox`, Claude Code écrit cette clé dans `.claude/settings.local.json` pour le projet actuel ; définissez-la dans `~/.claude/settings.json` pour mettre en sandbox chaque projet.1875Activez [sandboxing](/docs/fr/sandboxing) pour les commandes Bash. Lorsque vous choisissez un mode dans le panneau `/sandbox`, Claude Code écrit cette clé dans `.claude/settings.local.json` pour le projet actuel ; définissez-la dans `~/.claude/settings.json` pour mettre en sandbox chaque projet.

1867 1876 

1868* **Scope** : [`Any file`](#scopes)1877* **Scope** : [`Any file`](#scopes), avec des [limites sur les paramètres de projet et locaux](/docs/fr/sandboxing#repository-settings-under-an-admin-required-sandbox)

1869* **Type** : Booléen1878* **Type** : Booléen

1870 * `true` : Claude Code met en sandbox les commandes Bash1879 * `true` : Claude Code met en sandbox les commandes Bash

1871 * `false` : les commandes Bash s'exécutent sans sandbox1880 * `false` : les commandes Bash s'exécutent sans sandbox


1879}1888}

1880```1889```

1881 1890 

1882Sur Linux et WSL2, le sandbox a besoin de `bubblewrap` et `socat` ; consultez [Set up Linux and WSL2](/docs/fr/sandboxing#set-up-linux-and-wsl2). Lorsque le sandbox ne peut pas démarrer, Claude Code affiche un avertissement et exécute les commandes sans sandbox sauf si vous définissez également [`failIfUnavailable`](#sandbox-failifunavailable).1891Sur Linux et WSL2, le sandbox a besoin de `bubblewrap` et `socat` ; consultez [Set up Linux and WSL2](/docs/fr/sandboxing#set-up-linux-and-wsl2). Lorsque le sandbox ne peut pas démarrer, Claude Code exécute les commandes sans sandbox sauf si vous définissez également [`failIfUnavailable`](#sandbox-failifunavailable).

1883 1892 

1884<h3 id="sandbox-failifunavailable">1893<h3 id="sandbox-failifunavailable">

1885 `sandbox.failIfUnavailable`1894 `sandbox.failIfUnavailable`

1886</h3>1895</h3>

1887 1896 

1888Faites en sorte que Claude Code se termine avec une erreur au démarrage lorsque `sandbox.enabled` est `true` mais que le sandbox ne peut pas démarrer, car une dépendance est manquante ou la plateforme n'est pas supportée. Sans cela, Claude Code affiche un avertissement et exécute les commandes sans sandbox. Utilisez-le dans les paramètres gérés lorsque votre organisation exige le sandboxing comme une barrière stricte.1897Faites en sorte que Claude Code se termine avec une erreur au démarrage lorsque `sandbox.enabled` est `true` mais que le sandbox ne peut pas démarrer, car une dépendance est manquante ou la plateforme n'est pas supportée. Sans cette clé, Claude Code exécute les commandes sans sandbox. Les déploiements gérés qui exigent le sandboxing comme barrière de sécurité peuvent utiliser ce paramètre.

1889 1898 

1890* **Scope** : [`Any file`](#scopes)1899Sur une plateforme que le sandbox ne supporte pas, Claude Code ne démarre pas lorsque cette clé est activée. Consultez [Enforce sandboxing with managed settings](/docs/fr/sandboxing#enforce-sandboxing-with-managed-settings).

1900 

1901* **Scope** : [`Any file`](#scopes), avec des [limites sur les paramètres de projet et locaux](/docs/fr/sandboxing#repository-settings-under-an-admin-required-sandbox)

1891* **Type** : Booléen1902* **Type** : Booléen

1892 * `true` : Claude Code se termine avec une erreur au démarrage lorsque `sandbox.enabled` est `true` mais que le sandbox ne peut pas démarrer1903 * `true` : Claude Code se termine avec une erreur au démarrage lorsque `sandbox.enabled` est `true` mais que le sandbox ne peut pas démarrer

1893 * `false` : Claude Code affiche un avertissement et exécute les commandes sans sandbox1904 * `false` : Claude Code exécute les commandes sans sandbox lorsque le sandbox ne peut pas démarrer

1894* **Default** : `false`1905* **Default** : `false`

1895 1906 

1896Ceci fait en sorte que chaque machine gérée mette en sandbox les commandes ou refuse de démarrer :1907Ceci fait en sorte que chaque machine gérée mette en sandbox les commandes ou refuse de démarrer :


1910 `sandbox.autoAllowBashIfSandboxed`1921 `sandbox.autoAllowBashIfSandboxed`

1911</h3>1922</h3>

1912 1923 

1913Laissez Claude Code exécuter les commandes Bash en sandbox sans invite de permission. Les commandes qui ne peuvent pas s'exécuter dans le sandbox passent toujours par le flux de permission régulier, et les règles `deny` et les règles `ask` limitées au contenu telles que `Bash(git push *)` s'appliquent toujours ; une règle `ask` Bash simple est ignorée pour les commandes en sandbox. Définissez-la sur `false` pour envoyer également les commandes en sandbox par le flux de permission régulier, que l'onglet **Mode** de `/sandbox` appelle mode de permissions régulier.1924Laissez Claude Code exécuter les commandes Bash en sandbox sans demande de permission. Les commandes qui ne peuvent pas s'exécuter dans le sandbox passent toujours par le flux de permission régulier, et les règles `deny` et les règles `ask` limitées au contenu telles que `Bash(git push *)` s'appliquent toujours ; une règle `ask` Bash simple est ignorée pour les commandes en sandbox. Définissez-la sur `false` pour envoyer également les commandes en sandbox par le flux de permission régulier, que l'onglet **Mode** de `/sandbox` appelle mode de permissions régulier.

1914 1925 

1915* **Scope** : [`Any file`](#scopes)1926* **Scope** : [`Any file`](#scopes)

1916* **Type** : Booléen1927* **Type** : Booléen

1917 * `true` : Claude Code exécute les commandes Bash en sandbox sans invite de permission, sous réserve des règles `deny` et des règles `ask` limitées au contenu ; `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` désactive l'auto-allow1928 * `true` : Claude Code exécute les commandes Bash en sandbox sans demande de permission, sous réserve des règles `deny` et des règles `ask` limitées au contenu ; `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` désactive l'auto-allow

1918 * `false` : les commandes en sandbox passent par le flux de permission régulier, donc vos règles d'autorisation et le mode de permission décident. L'onglet **Mode** de `/sandbox` appelle ceci mode de permissions régulier1929 * `false` : les commandes en sandbox passent par le flux de permission régulier, donc vos règles d'autorisation et le mode de permission décident. L'onglet **Mode** de `/sandbox` appelle ceci mode de permissions régulier

1919* **Default** : `true`1930* **Default** : `true`

1920 1931 


1935 `sandbox.excludedCommands`1946 `sandbox.excludedCommands`

1936</h3>1947</h3>

1937 1948 

1938Nommez les commandes que Claude Code exécute en dehors du sandbox, comme les outils qui ne fonctionnent pas sous celui-ci. Chaque entrée utilise la même syntaxe que le contenu d'une [règle de permission](/docs/fr/permissions#permission-rule-syntax) `Bash(...)` : une commande exacte, un préfixe tel que `docker *`, ou un motif avec caractères génériques.1949Nommez les commandes que Claude Code exécute en dehors du sandbox, comme les outils qui ne fonctionnent pas sous celui-ci. Chaque entrée utilise la même syntaxe que le contenu d'une [règle de permission](/docs/fr/permissions#permission-rule-syntax) `Bash(...)` : une commande exacte, un préfixe tel que `docker *`, ou un motif avec caractères génériques. Un motif sans caractère générique est une correspondance exacte, donc `docker` ne correspond qu'à `docker` sans arguments.

1939 1950 

1940Vos entrées sortent un appel Bash du sandbox uniquement lorsqu'elles couvrent chaque commande dedans, et certaines formes d'appel restent en sandbox même dans ce cas. Une entrée `docker *` seule ne sort pas `npm ci && docker build .` du sandbox.1951Vos entrées sortent un appel Bash du sandbox uniquement lorsqu'elles couvrent chaque commande dedans, et certaines formes d'appel restent en sandbox même dans ce cas. Une entrée `docker *` seule ne sort pas `npm ci && docker build .` du sandbox.

1941 1952 

1942* **Scope** : [`Any file`](#scopes)1953* **Scope** : [`Any file`](#scopes), avec des [limites sur les paramètres de projet et locaux](/docs/fr/sandboxing#repository-settings-under-an-admin-required-sandbox)

1943* **Type** : tableau de motifs de commande1954* **Type** : tableau de motifs de commande

1944* **Default** : non défini, donc aucune commande n'est exclue1955* **Default** : non défini, donc aucune commande n'est exclue

1945 1956 


1958* Une substitution de commande, un sous-shell ou un bloc de contrôle de flux tel que `if` ou `for`1969* Une substitution de commande, un sous-shell ou un bloc de contrôle de flux tel que `if` ou `for`

1959* Une redirection, comme `docker build . > build.log`, autre qu'une qui duplique uniquement un descripteur de fichier, comme `2>&1` le fait1970* Une redirection, comme `docker build . > build.log`, autre qu'une qui duplique uniquement un descripteur de fichier, comme `2>&1` le fait

1960* Un nom de commande qui provient d'une variable1971* Un nom de commande qui provient d'une variable

1972* Un `git clone`, `git init`, `git worktree add`, `git worktree move` ou `git bundle create` avec un argument de chemin qui est absolu, commence par `~` ou contient un segment `..`

1961 1973 

1962Par exemple, `cd build && docker compose up` reste en sandbox sous une entrée `docker *`, et ajouter une entrée `cd` ne change pas cela.1974Par exemple, `cd build && docker compose up` reste en sandbox sous une entrée `docker *`, et ajouter une entrée `cd` ne change pas cela. Sous une entrée `git *`, `git clone <url> vendor/lib` s'exécute en dehors du sandbox, mais `git clone <url> ~/tools` reste en sandbox. Un clone écrit toute une arborescence de fichiers, éventuellement exécutables, à l'endroit où pointe son chemin de destination.

1963 1975 

1964Les commandes exclues passent toujours par le flux de permission régulier. L'exclusion est une commodité, pas une limite de sécurité : préférez [`filesystem.allowWrite`](#sandbox-filesystem-allowwrite) lorsqu'un outil ne doit écrire que quelque part de spécifique. Claude Code fusionne les entrées dans chaque portée de paramètres que la session charge, et il n'y a pas de verrou réservé aux paramètres gérés pour cette liste, donc gardez une liste gérée étroite.1976Les commandes exclues passent toujours par le flux de permission régulier. L'exclusion est une commodité, pas une limite de sécurité : lorsqu'un outil ne doit écrire que quelque part de spécifique, [`filesystem.allowWrite`](#sandbox-filesystem-allowwrite) le garde en sandbox.

1977 

1978Les entrées des portées de paramètres que la session charge se combinent en une seule liste, sauf si le sandbox est [exigé par l'administrateur](/docs/fr/sandboxing#repository-settings-under-an-admin-required-sandbox). Dans ce cas, Claude Code ignore les entrées de `.claude/settings.json` et `.claude/settings.local.json`, afin qu'un dépôt cloné ne puisse pas sortir des commandes du sandbox. Les entrées des paramètres gérés, de `--settings` et de votre `~/.claude/settings.json` s'appliquent toujours, et aucun verrou réservé aux paramètres gérés ne couvre cette liste.

1965 1979 

1966<h3 id="sandbox-allowunsandboxedcommands">1980<h3 id="sandbox-allowunsandboxedcommands">

1967 `sandbox.allowUnsandboxedCommands`1981 `sandbox.allowUnsandboxedCommands`

1968</h3>1982</h3>

1969 1983 

1970Laissez Claude réessayer une commande en dehors du sandbox avec le paramètre `dangerouslyDisableSandbox` après que le sandbox l'ait bloquée. Définissez-la sur `false` pour que Claude Code ignore complètement ce paramètre et que chaque commande que Claude exécute soit en sandbox ou apparaisse dans [`excludedCommands`](#sandbox-excludedcommands). L'onglet **Overrides** de `/sandbox` affiche cet état comme **Strict sandbox mode**. Utilisez `false` dans les paramètres gérés pour les politiques qui exigent un sandboxing strict.1984Laissez Claude réessayer une commande en dehors du sandbox avec le paramètre `dangerouslyDisableSandbox` après que le sandbox l'ait bloquée. Lorsqu'elle vaut `false`, Claude Code ignore ce paramètre. Tant que le sandbox est en cours d'exécution, les commandes que Claude exécute sont alors en sandbox, sauf si elles correspondent à une entrée [`excludedCommands`](#sandbox-excludedcommands). L'onglet **Overrides** de `/sandbox` affiche cet état comme **Strict sandbox mode**. Un `false` dans les paramètres gérés active le mode sandbox strict pour les développeurs qu'ils couvrent.

1971 1985 

1972* **Scope** : [`Any file`](#scopes)1986* **Scope** : [`Any file`](#scopes), avec une [limite sur les paramètres de projet et locaux](/docs/fr/sandboxing#turn-off-the-retry-with-strict-sandbox-mode)

1973* **Type** : Booléen1987* **Type** : Booléen

1974 * `true` : Claude peut réessayer une commande en dehors du sandbox avec le paramètre `dangerouslyDisableSandbox` après que le sandbox l'ait bloquée1988 * `true` : Claude peut réessayer une commande en dehors du sandbox avec le paramètre `dangerouslyDisableSandbox` après que le sandbox l'ait bloquée

1975 * `false` : Claude Code ignore ce paramètre, donc chaque commande que Claude exécute est en sandbox ou apparaît dans `excludedCommands`1989 * `false` : Claude Code ignore ce paramètre, donc tant que le sandbox est en cours d'exécution, les commandes que Claude exécute sont en sandbox, sauf si elles correspondent à une entrée `excludedCommands`

1976* **Default** : `true`1990* **Default** : `true`

1977 1991 

1978Ceci applique le mode sandbox strict pour tous les utilisateurs couverts par les paramètres gérés :1992Ceci applique le mode sandbox strict pour tous les utilisateurs couverts par les paramètres gérés :


1986}2000}

1987```2001```

1988 2002 

1989Une tentative sans sandbox passe par le flux de permission régulier, avec une invite en mode Manuel. Consultez [The unsandboxed retry escape hatch](/docs/fr/sandboxing#the-unsandboxed-retry-escape-hatch).2003Un `false` provenant des paramètres gérés ou de `--settings` rend également le sandbox [exigé par l'administrateur](/docs/fr/sandboxing#repository-settings-under-an-admin-required-sandbox). Un `false` dans vos paramètres utilisateur prévaut sur le `true` d'un projet, mais ne rend pas le sandbox exigé par l'administrateur. Prévaloir sur la valeur d'un projet nécessite Claude Code v2.1.285 ou ultérieur.

1990 2004 

1991Pour voir quand les commandes que vous tapez vous-même à l'[invite shell-mode avec préfixe `!`](/docs/fr/interactive-mode#shell-mode-with-prefix) s'exécutent en sandbox, consultez [strict sandbox mode](/docs/fr/sandboxing#the-unsandboxed-retry-escape-hatch).2005Qui approuve une nouvelle tentative sans sandbox dépend de votre mode de permission et de vos règles d'autorisation. Consultez [The unsandboxed retry escape hatch](/docs/fr/sandboxing#the-unsandboxed-retry-escape-hatch).

2006 

2007Pour voir quand les commandes que vous tapez vous-même à l'[invite de commandes du mode shell `!`](/docs/fr/interactive-mode#shell-mode-with-prefix) s'exécutent en sandbox, consultez [strict sandbox mode](/docs/fr/sandboxing#turn-off-the-retry-with-strict-sandbox-mode).

1992 2008 

1993<h3 id="sandbox-filesystem">2009<h3 id="sandbox-filesystem">

1994 `sandbox.filesystem`2010 `sandbox.filesystem`

1995</h3>2011</h3>

1996 2012 

1997Contrôlez les chemins que les commandes en sandbox peuvent lire et écrire. Par défaut, elles peuvent écrire dans le répertoire de travail, le répertoire temporaire de la session et les répertoires que vous ajoutez avec `--add-dir`, `/add-dir` ou `permissions.additionalDirectories`, et peuvent lire le reste du système de fichiers, y compris les fichiers d'identifiants. Élargissez ou réduisez cela avec les quatre listes de chemins, ou désactivez la couche du système de fichiers avec `disabled`. Consultez [Filesystem isolation](/docs/fr/sandboxing#filesystem-isolation) pour les limites par défaut.2013Contrôlez les chemins que les commandes en sandbox peuvent lire et écrire. Par défaut, elles peuvent écrire dans le répertoire de travail, le répertoire temporaire propre à l'utilisateur et les répertoires que vous ajoutez avec `--add-dir`, `/add-dir` ou `permissions.additionalDirectories`, et peuvent lire le reste du système de fichiers, y compris les fichiers d'identifiants. Élargissez ou réduisez cela avec les quatre listes de chemins, ou désactivez la couche du système de fichiers avec `disabled`. Consultez [Filesystem isolation](/docs/fr/sandboxing#filesystem-isolation) pour les limites par défaut.

1998 2014 

1999* **Scope** : [`Any file`](#scopes)2015* **Scope** : [`Any file`](#scopes)

2000* **Type** : objet avec les tableaux `allowWrite`, `denyWrite`, `denyRead` et `allowRead`, plus les booléens `allowManagedReadPathsOnly` et `disabled`2016* **Type** : objet avec les tableaux `allowWrite`, `denyWrite`, `denyRead` et `allowRead`, plus les booléens `allowManagedReadPathsOnly` et `disabled`


2015 2031 

2016Claude Code applique ces listes à la limite du sandbox du système d'exploitation, donc elles s'appliquent à chaque sous-processus qu'une commande en sandbox démarre, comme `kubectl`, `terraform` ou `npm`. Claude Code ajoute vos [règles de permission](/docs/fr/sandboxing#permission-rules) aux mêmes listes : les règles `Edit` allow et deny à `allowWrite` et `denyWrite`, les règles `Read` deny à `denyRead`, et les règles `WebFetch(domain:...)` allow et deny aux listes de domaines [`network`](#sandbox-network).2032Claude Code applique ces listes à la limite du sandbox du système d'exploitation, donc elles s'appliquent à chaque sous-processus qu'une commande en sandbox démarre, comme `kubectl`, `terraform` ou `npm`. Claude Code ajoute vos [règles de permission](/docs/fr/sandboxing#permission-rules) aux mêmes listes : les règles `Edit` allow et deny à `allowWrite` et `denyWrite`, les règles `Read` deny à `denyRead`, et les règles `WebFetch(domain:...)` allow et deny aux listes de domaines [`network`](#sandbox-network).

2017 2033 

2018Sauf si un verrou réservé aux paramètres gérés est défini, Claude Code fusionne chaque liste dans les fichiers de paramètres que la session charge. [`allowManagedReadPathsOnly`](#sandbox-filesystem-allowmanagedreadpathsonly) limite `allowRead` aux entrées des paramètres gérés, et [`allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) fait la même chose pour les domaines autorisés.2034Sauf si un verrou s'applique, Claude Code fusionne ces listes dans les fichiers de paramètres que la session charge. [`allowManagedReadPathsOnly`](#sandbox-filesystem-allowmanagedreadpathsonly) limite `allowRead` aux entrées des paramètres gérés, et [`allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) fait la même chose pour les domaines autorisés. Les [verrous de dépôt](/docs/fr/sandboxing#repository-settings-under-an-admin-required-sandbox) laissent de côté les entrées des fichiers de paramètres d'un dépôt.

2019 2035 

2020[Configure sandboxing](/docs/fr/sandboxing#configure-sandboxing) couvre les sources que vous excluez avec `--setting-sources`. Lorsque vous modifiez une liste pendant une session, Claude Code [applique la modification à la session en cours d'exécution](/docs/fr/settings#when-edits-take-effect).2036[Configure sandboxing](/docs/fr/sandboxing#configure-sandboxing) couvre les sources que vous excluez avec `--setting-sources`. Lorsque vous modifiez une liste pendant une session, Claude Code [applique la modification à la session en cours d'exécution](/docs/fr/settings#when-edits-take-effect).

2021 2037 


2044 `sandbox.filesystem.allowWrite`2060 `sandbox.filesystem.allowWrite`

2045</h3>2061</h3>

2046 2062 

2047Ajoutez des chemins où les commandes en sandbox peuvent écrire, au-delà du répertoire de travail, du répertoire temporaire de la session et des répertoires que vous avez ajoutés avec `--add-dir`, `/add-dir` ou `permissions.additionalDirectories`. Utilisez-le lorsqu'un sous-processus tel que `kubectl` ou un outil de build doit écrire en dehors du projet.2063Ajoutez des chemins où les commandes en sandbox peuvent écrire, au-delà du répertoire de travail, du répertoire temporaire propre à l'utilisateur et des répertoires que vous avez ajoutés avec `--add-dir`, `/add-dir` ou `permissions.additionalDirectories`. Utilisez-le lorsqu'un sous-processus tel que `kubectl` ou un outil de build doit écrire en dehors du projet.

2048 2064 

2049* **Scope** : [`Any file`](#scopes)2065* **Scope** : [`Any file`](#scopes), avec des [limites sur les paramètres de projet et locaux](/docs/fr/sandboxing#repository-settings-under-an-admin-required-sandbox)

2050* **Type** : tableau de chaînes de chemin, utilisant les [préfixes de chemin du sandbox](#sandbox-path-prefixes)2066* **Type** : tableau de chaînes de chemin, utilisant les [préfixes de chemin du sandbox](#sandbox-path-prefixes)

2051* **Default** : non défini, donc les commandes en sandbox peuvent écrire dans le répertoire de travail, le répertoire temporaire de la session, les répertoires que vous avez ajoutés avec `--add-dir` ou `/add-dir`, et les répertoires dans [`permissions.additionalDirectories`](#permissions-additionaldirectories)2067* **Default** : non défini, donc les commandes en sandbox peuvent écrire dans le répertoire de travail, le répertoire temporaire propre à l'utilisateur, les répertoires que vous avez ajoutés avec `--add-dir` ou `/add-dir`, et les répertoires dans [`permissions.additionalDirectories`](#permissions-additionaldirectories)

2052 2068 

2053Ceci permet à un build d'écrire sous `/tmp/build` et permet à `kubectl` de mettre à jour votre kubeconfig :2069Ceci permet à un build d'écrire sous `/tmp/build` et permet à `kubectl` de mettre à jour votre kubeconfig :

2054 2070 


2062}2078}

2063```2079```

2064 2080 

2065Claude Code fusionne les entrées `allowWrite` et les chemins de vos règles de permission `Edit(...)` allow dans chaque portée de paramètres que la session charge, en laissant de côté ceux des paramètres du référentiel tandis que [`permissions.blockReadsOutsideWorkingDirectories`](#sandboxed-commands-under-the-block) est activé. Une entrée `allowWrite` ne peut pas lever un [chemin protégé](/docs/fr/sandboxing#protected-paths).2081Claude Code fusionne les entrées `allowWrite` et les chemins de vos règles de permission `Edit(...)` allow dans les portées de paramètres que la session charge, en laissant de côté ceux des paramètres du dépôt tant que [`permissions.blockReadsOutsideWorkingDirectories`](#sandboxed-commands-under-the-block) est activé. Les [verrous de dépôt](/docs/fr/sandboxing#repository-settings-under-an-admin-required-sandbox) peuvent également laisser de côté les entrées d'un dépôt. Une entrée `allowWrite` ne peut pas lever un [chemin protégé](/docs/fr/sandboxing#protected-paths).

2066 2082 

2067<h3 id="sandbox-filesystem-denywrite">2083<h3 id="sandbox-filesystem-denywrite">

2068 `sandbox.filesystem.denyWrite`2084 `sandbox.filesystem.denyWrite`


2116 2132 

2117Rouvrez la lecture pour des chemins spécifiques à l'intérieur d'une région que [`denyRead`](#sandbox-filesystem-denyread) bloque, pour construire un accès en lecture réservé à l'espace de travail. Une entrée `denyRead` exacte ou avec caractères génériques reste bloquée à l'intérieur d'une `allowRead` plus large, comme le montre le [tableau de chevauchement](/docs/fr/sandboxing#configure-sandboxing). Lorsqu'une entrée `denyRead` avec caractères génériques telle que `~/**/.env` correspond à un répertoire, Claude Code bloque également les lectures de son contenu. Avant v2.1.236 sur macOS, Claude Code rouvrait les chemins qu'une entrée `denyRead` avec caractères génériques correspondait partout où une entrée `allowRead` plus large les couvrait, et laissait le contenu d'un répertoire correspondant lisible.2133Rouvrez la lecture pour des chemins spécifiques à l'intérieur d'une région que [`denyRead`](#sandbox-filesystem-denyread) bloque, pour construire un accès en lecture réservé à l'espace de travail. Une entrée `denyRead` exacte ou avec caractères génériques reste bloquée à l'intérieur d'une `allowRead` plus large, comme le montre le [tableau de chevauchement](/docs/fr/sandboxing#configure-sandboxing). Lorsqu'une entrée `denyRead` avec caractères génériques telle que `~/**/.env` correspond à un répertoire, Claude Code bloque également les lectures de son contenu. Avant v2.1.236 sur macOS, Claude Code rouvrait les chemins qu'une entrée `denyRead` avec caractères génériques correspondait partout où une entrée `allowRead` plus large les couvrait, et laissait le contenu d'un répertoire correspondant lisible.

2118 2134 

2119* **Scope** : [`Any file`](#scopes)2135* **Scope** : [`Any file`](#scopes), avec des [limites sur les paramètres de projet et locaux](/docs/fr/sandboxing#repository-settings-under-an-admin-required-sandbox)

2120* **Type** : tableau de chaînes de chemin, utilisant les [préfixes de chemin du sandbox](#sandbox-path-prefixes)2136* **Type** : tableau de chaînes de chemin, utilisant les [préfixes de chemin du sandbox](#sandbox-path-prefixes)

2121* **Default** : non défini2137* **Default** : non défini

2122 2138 


2133}2149}

2134```2150```

2135 2151 

2136Claude Code résout une entrée `.` à la racine du projet dans les paramètres du projet et à `~/.claude` dans les paramètres utilisateur. Claude Code fusionne les entrées dans chaque fichier de paramètres que la session charge sauf si [`allowManagedReadPathsOnly`](#sandbox-filesystem-allowmanagedreadpathsonly) est défini, et laisse de côté les entrées des paramètres du référentiel tandis que [`permissions.blockReadsOutsideWorkingDirectories`](#sandboxed-commands-under-the-block) est activé.2152Claude Code résout une entrée `.` à la racine du projet dans les paramètres du projet et à `~/.claude` dans les paramètres utilisateur. Claude Code fusionne les entrées dans les fichiers de paramètres que la session charge sauf si [`allowManagedReadPathsOnly`](#sandbox-filesystem-allowmanagedreadpathsonly) est défini, et laisse de côté les entrées des paramètres du dépôt tant que [`permissions.blockReadsOutsideWorkingDirectories`](#sandboxed-commands-under-the-block) est activé. Les [verrous de dépôt](/docs/fr/sandboxing#repository-settings-under-an-admin-required-sandbox) peuvent également laisser de côté les entrées d'un dépôt.

2137 2153 

2138<h3 id="sandbox-filesystem-allowmanagedreadpathsonly">2154<h3 id="sandbox-filesystem-allowmanagedreadpathsonly">

2139 `sandbox.filesystem.allowManagedReadPathsOnly`2155 `sandbox.filesystem.allowManagedReadPathsOnly`


2144* **Scope** : [`Managed`](#scopes)2160* **Scope** : [`Managed`](#scopes)

2145* **Type** : Booléen2161* **Type** : Booléen

2146 * `true` : Claude Code honore uniquement les entrées `allowRead` des paramètres gérés2162 * `true` : Claude Code honore uniquement les entrées `allowRead` des paramètres gérés

2147 * `false` : les entrées `allowRead` fusionnent de chaque portée de paramètres que la session charge2163 * `false` : les entrées `allowRead` d'autres fichiers de paramètres peuvent être fusionnées

2148* **Default** : `false`2164* **Default** : `false`

2149 2165 

2150Ceci bloque les lectures du répertoire personnel, rouvre `~/work`, et empêche les développeurs de rouvrir autre chose :2166Ceci bloque les lectures du répertoire personnel, rouvre `~/work`, et empêche les développeurs de rouvrir autre chose :


2199 2215 

2200Silence les rapports de violation du sandbox pour les chemins qu'une commande est censée sonder et se voir refuser, comme un outil qui vérifie `/etc/hosts` au démarrage, afin que ces refus ne s'affichent pas comme des violations ou dans ce que Claude voit. Le sandbox bloque toujours l'accès ; seul le rapport est supprimé. Les clés sont des sous-chaînes à faire correspondre avec la commande, avec `*` correspondant à chaque commande, et les valeurs sont des sous-chaînes de la violation à ignorer pour cette commande, comme un chemin du système de fichiers.2216Silence les rapports de violation du sandbox pour les chemins qu'une commande est censée sonder et se voir refuser, comme un outil qui vérifie `/etc/hosts` au démarrage, afin que ces refus ne s'affichent pas comme des violations ou dans ce que Claude voit. Le sandbox bloque toujours l'accès ; seul le rapport est supprimé. Les clés sont des sous-chaînes à faire correspondre avec la commande, avec `*` correspondant à chaque commande, et les valeurs sont des sous-chaînes de la violation à ignorer pour cette commande, comme un chemin du système de fichiers.

2201 2217 

2202* **Scope** : [`Any file`](#scopes)2218* **Scope** : [`Any file`](#scopes), avec des [limites sur les paramètres de projet et locaux](/docs/fr/sandboxing#repository-settings-under-an-admin-required-sandbox)

2203* **Type** : objet mappant une sous-chaîne de commande à un tableau de sous-chaînes de violation, généralement des chemins2219* **Type** : objet mappant une sous-chaîne de commande à un tableau de sous-chaînes de violation, généralement des chemins

2204* **Default** : non défini, donc chaque violation est signalée2220* **Default** : non défini, donc chaque violation est signalée

2205 2221 


2219 2235 

2220Exécutez le sandbox Linux à l'intérieur d'un conteneur Docker sans privilèges, où bubblewrap ne peut pas monter un `/proc` frais. À la place, le sandbox interne lie-monte le `/proc` existant du conteneur, ce qui expose les informations de processus qu'un montage frais cacherait. Ceci réduit la sécurité ; utilisez-le uniquement lorsque le conteneur externe fournit déjà l'isolation dont vous avez besoin.2236Exécutez le sandbox Linux à l'intérieur d'un conteneur Docker sans privilèges, où bubblewrap ne peut pas monter un `/proc` frais. À la place, le sandbox interne lie-monte le `/proc` existant du conteneur, ce qui expose les informations de processus qu'un montage frais cacherait. Ceci réduit la sécurité ; utilisez-le uniquement lorsque le conteneur externe fournit déjà l'isolation dont vous avez besoin.

2221 2237 

2222* **Scope** : [`Any file`](#scopes)2238* **Scope** : [`Any file`](#scopes), avec des [limites sur les paramètres de projet et locaux](/docs/fr/sandboxing#repository-settings-under-an-admin-required-sandbox)

2223* **Type** : Booléen2239* **Type** : Booléen

2224 * `true` : le sandbox interne lie-monte le `/proc` existant du conteneur au lieu de monter un frais2240 * `true` : le sandbox interne lie-monte le `/proc` existant du conteneur au lieu de monter un frais

2225 * `false` : le sandbox monte un `/proc` frais, ce qui ne fonctionne pas dans un conteneur Docker sans privilèges2241 * `false` : le sandbox monte un `/proc` frais, ce qui ne fonctionne pas dans un conteneur Docker sans privilèges


2234}2250}

2235```2251```

2236 2252 

2237Linux et WSL2 uniquement. Consultez [Bubblewrap fails to start inside a container](/docs/fr/sandboxing#troubleshooting).2253Linux et WSL2 uniquement. Consultez [Bubblewrap fails to start inside a container](/docs/fr/sandboxing#bubblewrap-fails-to-start-inside-a-container).

2238 2254 

2239<h3 id="sandbox-enableweakernetworkisolation">2255<h3 id="sandbox-enableweakernetworkisolation">

2240 `sandbox.enableWeakerNetworkIsolation`2256 `sandbox.enableWeakerNetworkIsolation`


2242 2258 

2243Laissez les commandes en sandbox sur macOS atteindre le service de confiance TLS système, `com.apple.trustd.agent`. Les outils basés sur Go tels que `gh`, `gcloud` et `terraform` en ont besoin pour vérifier les certificats TLS lorsque vous utilisez [`network.httpProxyPort`](#sandbox-network-httpproxyport) avec un proxy MITM et une CA personnalisée. Ceci réduit la sécurité en ouvrant un chemin potentiel d'exfiltration de données via le service de confiance.2259Laissez les commandes en sandbox sur macOS atteindre le service de confiance TLS système, `com.apple.trustd.agent`. Les outils basés sur Go tels que `gh`, `gcloud` et `terraform` en ont besoin pour vérifier les certificats TLS lorsque vous utilisez [`network.httpProxyPort`](#sandbox-network-httpproxyport) avec un proxy MITM et une CA personnalisée. Ceci réduit la sécurité en ouvrant un chemin potentiel d'exfiltration de données via le service de confiance.

2244 2260 

2245* **Scope** : [`Any file`](#scopes)2261* **Scope** : [`Any file`](#scopes), avec des [limites sur les paramètres de projet et locaux](/docs/fr/sandboxing#repository-settings-under-an-admin-required-sandbox)

2246* **Type** : Booléen2262* **Type** : Booléen

2247 * `true` : les commandes en sandbox sur macOS peuvent atteindre `com.apple.trustd.agent`2263 * `true` : les commandes en sandbox sur macOS peuvent atteindre `com.apple.trustd.agent`

2248 * `false` : les commandes en sandbox sur macOS ne peuvent pas atteindre le service de confiance TLS système2264 * `false` : les commandes en sandbox sur macOS ne peuvent pas atteindre le service de confiance TLS système


2257}2273}

2258```2274```

2259 2275 

2260Si vous n'utilisez pas de proxy MITM, listez plutôt les outils défaillants dans [`excludedCommands`](#sandbox-excludedcommands) ; consultez [Go-based CLIs fail TLS verification on macOS](/docs/fr/sandboxing#troubleshooting).2276Si vous n'utilisez pas de proxy MITM, listez plutôt les outils défaillants dans [`excludedCommands`](#sandbox-excludedcommands) ; consultez [Go-based CLIs fail TLS verification on macOS](/docs/fr/sandboxing#go-based-clis-fail-tls-verification-on-macos).

2261 2277 

2262<h3 id="sandbox-allowappleevents">2278<h3 id="sandbox-allowappleevents">

2263 `sandbox.allowAppleEvents`2279 `sandbox.allowAppleEvents`

2264</h3>2280</h3>

2265 2281 

2266Laissez les commandes en sandbox sur macOS envoyer des Apple Events, que `open`, `osascript` et les outils qui ouvrent des URL dans un navigateur nécessitent ; sans cela, ils échouent avec l'erreur `-600`. Ceci supprime l'isolation de l'exécution du code : les commandes en sandbox peuvent lancer d'autres applications sans sandbox sans invite utilisateur, et peuvent envoyer des commandes AppleScript aux applications en cours d'exécution telles que Terminal, sous réserve de l'invite de consentement d'automatisation macOS par application (TCC).2282Laissez les commandes en sandbox sur macOS envoyer des Apple Events, que `open`, `osascript` et les outils qui ouvrent des URL dans un navigateur nécessitent ; sans cela, ils échouent avec l'erreur `-600`. Ceci supprime l'isolation de l'exécution du code : les commandes en sandbox peuvent lancer d'autres applications sans sandbox sans demande à l'utilisateur, et peuvent envoyer des commandes AppleScript aux applications en cours d'exécution telles que Terminal, sous réserve de l'invite de consentement d'automatisation macOS par application (TCC).

2267 2283 

2268* **Scope** : [`User or managed`](#scopes)2284* **Scope** : [`User or managed`](#scopes)

2269* **Type** : Booléen2285* **Type** : Booléen


2348 `sandbox.credentials`2364 `sandbox.credentials`

2349</h3>2365</h3>

2350 2366 

2351Déclarez les fichiers d'identifiants et les variables d'environnement à [protéger des commandes en sandbox](/docs/fr/sandboxing#protect-credentials). Chaque entrée nomme un fichier `path` ou une variable `name` et un `mode` : `deny` masque l'identifiant à l'intérieur du sandbox, et `mask` affiche aux commandes en sandbox un espace réservé tandis que le [proxy du sandbox](/docs/fr/sandboxing#mask-credentials) substitue la valeur réelle sur les demandes sortantes. Claude Code protège uniquement les entrées que vous listez ; il n'y a pas de liste de refus d'identifiants intégrée.2367Déclarez les fichiers d'identifiants et les variables d'environnement à [protéger des commandes en sandbox](/docs/fr/sandboxing#protect-credentials). Chaque entrée nomme un fichier `path` ou une variable `name` et un `mode` : `deny` masque l'identifiant à l'intérieur du sandbox, et `mask` affiche aux commandes en sandbox un espace réservé tandis que le [proxy du sandbox](/docs/fr/sandboxing#mask-credentials) substitue la valeur réelle sur les requêtes sortantes. Claude Code protège uniquement les entrées que vous listez ; il n'y a pas de liste de refus d'identifiants intégrée.

2352 2368 

2353* **Scope** : [`Any file`](#scopes). Claude Code honore les entrées `mask`, `allowPlaintextInject`, `awsPairs` et `sigv4` uniquement à partir des paramètres utilisateur, gérés et de l'indicateur `--settings`.2369* **Scope** : [`Any file`](#scopes). Claude Code honore les entrées `mask`, `allowPlaintextInject`, `awsPairs` et `sigv4` uniquement à partir des paramètres utilisateur, gérés et du flag `--settings`.

2354* **Type** : objet avec `files`, `envVars`, `allowPlaintextInject`, `awsPairs` et `sigv4`2370* **Type** : objet avec `files`, `envVars`, `allowPlaintextInject`, `awsPairs` et `sigv4`

2355* **Default** : non défini, donc aucun identifiant n'est protégé2371* **Default** : non défini, donc aucun identifiant n'est protégé

2356 2372 


2385 `sandbox.credentials.files`2401 `sandbox.credentials.files`

2386</h3>2402</h3>

2387 2403 

2388Protégez les fichiers ou répertoires d'identifiants des commandes en sandbox. Avec `"mode": "deny"`, Claude Code bloque les lectures du chemin à l'intérieur du sandbox, le même bloc de lecture que [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread). Avec `"mode": "mask"`, les commandes en sandbox sur Linux et WSL2 lisent une copie sentinelle du fichier, et le proxy du sandbox substitue la valeur réelle sur les demandes sortantes à `injectHosts` de cette entrée ; sur macOS le fichier est illisible à l'intérieur du sandbox à la place. `"mode": "mask"` nécessite Claude Code v2.1.221 ou ultérieur.2404Protégez les fichiers ou répertoires d'identifiants des commandes en sandbox. Avec `"mode": "deny"`, Claude Code bloque les lectures du chemin à l'intérieur du sandbox, le même bloc de lecture que [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread). Avec `"mode": "mask"`, les commandes en sandbox sur Linux et WSL2 lisent une copie sentinelle du fichier, et le proxy du sandbox substitue la valeur réelle sur les requêtes sortantes vers les `injectHosts` de cette entrée ; sur macOS le fichier est illisible à l'intérieur du sandbox à la place. `"mode": "mask"` nécessite Claude Code v2.1.221 ou ultérieur.

2389 2405 

2390* **Scope** : [`Any file`](#scopes). Claude Code abandonne les entrées `mask` de `.claude/settings.json` du projet et de `.claude/settings.local.json` local.2406* **Scope** : [`Any file`](#scopes). Claude Code abandonne les entrées `mask` de `.claude/settings.json` du projet et de `.claude/settings.local.json` local.

2391* **Type** : tableau d'objets, chacun avec `path` et un `mode` de `"deny"` ou `"mask"`, plus les [champs mask optionnels pour les fichiers](#mask-fields-for-files)2407* **Type** : tableau d'objets, chacun avec `path` et un `mode` de `"deny"` ou `"mask"`, plus les [champs mask optionnels pour les fichiers](#mask-fields-for-files)

2392* **Default** : non défini, donc aucun fichier d'identifiants n'est protégé2408* **Default** : non défini, donc aucun fichier d'identifiants n'est protégé

2393 2409 

2394Ceci masque votre fichier d'identifiants AWS et masque le fichier hosts `gh`, en substituant la valeur réelle uniquement sur les demandes à `api.github.com` :2410Ceci masque votre fichier d'identifiants AWS et masque le fichier hosts `gh`, en substituant la valeur réelle uniquement sur les requêtes vers `api.github.com` :

2395 2411 

2396```json settings.json theme={null}2412```json settings.json theme={null}

2397{2413{


2406}2422}

2407```2423```

2408 2424 

2409Les chemins utilisent les mêmes [préfixes](#sandbox-path-prefixes) que les paramètres `sandbox.filesystem.*`, et Claude Code fusionne les tableaux de chaque portée de paramètres que la session charge. [Protect credentials](/docs/fr/sandboxing#protect-credentials) couvre ce qui s'applique toujours à partir des sources que vous excluez avec `--setting-sources`. `mask` entrées nécessitent Claude Code v2.1.221 ou ultérieur.2425Les chemins utilisent les mêmes [préfixes](#sandbox-path-prefixes) que les paramètres `sandbox.filesystem.*`, et Claude Code fusionne les tableaux de chaque portée de paramètres que la session charge. [Protect credentials](/docs/fr/sandboxing#protect-credentials) couvre ce qui s'applique toujours à partir des sources que vous excluez avec `--setting-sources`. Les entrées `mask` nécessitent Claude Code v2.1.221 ou ultérieur.

2410 2426 

2411La substitution `mask` s'exécute uniquement via le proxy du sandbox, donc définissez [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), ou [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) pour les réseaux de test HTTP simple. `mask` s'applique à un seul fichier, donc listez chaque fichier d'identifiants individuellement. Claude Code accepte mais ignore les champs `mask` sur une entrée `deny`. [Mask credential files](/docs/fr/sandboxing#mask-credential-files) couvre quelles sources de paramètres sont honorées et quand une entrée revient à `deny`.2427La substitution `mask` s'exécute uniquement via le proxy du sandbox, donc définissez [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), ou [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) pour les réseaux de test HTTP simple. `mask` s'applique à un seul fichier, donc listez chaque fichier d'identifiants individuellement. Claude Code accepte mais ignore les champs `mask` sur une entrée `deny`. [Mask credentials](/docs/fr/sandboxing#mask-credentials) couvre quelles sources de paramètres sont honorées, et [Mask credential files](/docs/fr/sandboxing#mask-credential-files) couvre quand une entrée revient à `deny`.

2412 2428 

2413<span id="sandbox-credentials-files-extract" />2429<span id="sandbox-credentials-files-extract" />

2414 2430 


2435| `decode` | la chaîne `"jwt"` | Trouvez les JSON Web Tokens (JWTs) dans le fichier, avec un motif intégré ou avec `extract` lorsqu'il est défini, vérifiez chaque candidat, et remplacez-le par un faux token structurellement valide, afin que le code à l'intérieur du sandbox qui décode le token continue de fonctionner. Lorsqu'aucun candidat ne se vérifie, `onExtractNoMatch` gouverne le résultat. Nécessite v2.1.224 ou ultérieur |2451| `decode` | la chaîne `"jwt"` | Trouvez les JSON Web Tokens (JWTs) dans le fichier, avec un motif intégré ou avec `extract` lorsqu'il est défini, vérifiez chaque candidat, et remplacez-le par un faux token structurellement valide, afin que le code à l'intérieur du sandbox qui décode le token continue de fonctionner. Lorsqu'aucun candidat ne se vérifie, `onExtractNoMatch` gouverne le résultat. Nécessite v2.1.224 ou ultérieur |

2436| `maskClaims` | tableau de chaînes, au moins un nom de claim ; nécessite `decode` | Masquez uniquement les claims de charge utile de niveau supérieur nommés à l'intérieur de chaque JWT vérifié et reconstruisez le token autour de la charge utile modifiée, afin que les autres claims restent lisibles. Lorsqu'aucun claim nommé ne correspond, `onExtractNoMatch` gouverne le résultat. Nécessite v2.1.224 ou ultérieur |2452| `maskClaims` | tableau de chaînes, au moins un nom de claim ; nécessite `decode` | Masquez uniquement les claims de charge utile de niveau supérieur nommés à l'intérieur de chaque JWT vérifié et reconstruisez le token autour de la charge utile modifiée, afin que les autres claims restent lisibles. Lorsqu'aucun claim nommé ne correspond, `onExtractNoMatch` gouverne le résultat. Nécessite v2.1.224 ou ultérieur |

2437| `maskDuplicates` | Booléen, par défaut `false` | Remplacez également les copies verbatim de chaque valeur masquée ailleurs dans le fichier, comme un secret collé dans un commentaire. Claude Code correspond aux sous-chaînes brutes, donc réservez-le aux secrets longs et à haute entropie. Consulté uniquement lorsque `extract` ou `decode` est défini. Nécessite v2.1.221 ou ultérieur |2453| `maskDuplicates` | Booléen, par défaut `false` | Remplacez également les copies verbatim de chaque valeur masquée ailleurs dans le fichier, comme un secret collé dans un commentaire. Claude Code correspond aux sous-chaînes brutes, donc réservez-le aux secrets longs et à haute entropie. Consulté uniquement lorsque `extract` ou `decode` est défini. Nécessite v2.1.221 ou ultérieur |

2438| `injectHosts` | tableau de chaînes, chacun un hôte que [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) admet également | Réduisez les hôtes où le proxy du sandbox substitue la valeur réelle. Lorsqu'il n'est pas défini, le proxy la substitue sur les demandes à chaque hôte dans `sandbox.network.allowedDomains`. Nécessite v2.1.221 ou ultérieur |2454| `injectHosts` | tableau de chaînes, chacun un hôte que [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) admet également | Réduisez les hôtes où le proxy du sandbox substitue la valeur réelle. Lorsqu'il n'est pas défini, le proxy la substitue sur les requêtes vers chaque hôte dans `sandbox.network.allowedDomains`. Nécessite v2.1.221 ou ultérieur |

2439 2455 

2440Ceci masque uniquement la valeur `oauth_token` dans le fichier hosts `gh`, remplace chaque autre copie de celle-ci dans le fichier, rend le fichier illisible si le motif ne correspond à rien, et substitue le token réel uniquement sur les demandes à `api.github.com` :2456Ceci masque uniquement la valeur `oauth_token` dans le fichier hosts `gh`, remplace chaque autre copie de celle-ci dans le fichier, rend le fichier illisible si le motif ne correspond à rien, et substitue le token réel uniquement sur les requêtes vers `api.github.com` :

2441 2457 

2442```json settings.json theme={null}2458```json settings.json theme={null}

2443{2459{


2462 `sandbox.credentials.envVars`2478 `sandbox.credentials.envVars`

2463</h3>2479</h3>

2464 2480 

2465Protégez les variables d'environnement des commandes en sandbox. Avec `"mode": "deny"`, Claude Code supprime la variable de l'environnement des commandes en sandbox. Avec `"mode": "mask"`, les commandes en sandbox voient une valeur sentinelle par session, et le proxy du sandbox substitue la valeur réelle sur les demandes sortantes à `injectHosts` de cette entrée, afin que les outils tels que `gh` et `npm` continuent de s'authentifier sans jamais tenir l'identifiant réel. `"mode": "mask"` nécessite Claude Code v2.1.199 ou ultérieur.2481Protégez les variables d'environnement des commandes en sandbox. Avec `"mode": "deny"`, Claude Code supprime la variable de l'environnement des commandes en sandbox. Avec `"mode": "mask"`, les commandes en sandbox voient une valeur sentinelle par session, et le proxy du sandbox substitue la valeur réelle sur les requêtes sortantes vers les `injectHosts` de cette entrée, afin que les outils tels que `gh` et `npm` continuent de s'authentifier sans jamais détenir l'identifiant réel. `"mode": "mask"` nécessite Claude Code v2.1.199 ou ultérieur.

2466 2482 

2467* **Scope** : [`Any file`](#scopes). Claude Code abandonne les entrées `mask` de `.claude/settings.json` du projet et de `.claude/settings.local.json` local.2483* **Scope** : [`Any file`](#scopes). Claude Code abandonne les entrées `mask` de `.claude/settings.json` du projet et de `.claude/settings.local.json` local.

2468* **Type** : tableau d'objets, chacun avec `name` et un `mode` de `"deny"` ou `"mask"`, plus les [champs mask optionnels pour les variables d'environnement](#mask-fields-for-environment-variables)2484* **Type** : tableau d'objets, chacun avec `name` et un `mode` de `"deny"` ou `"mask"`, plus les [champs mask optionnels pour les variables d'environnement](#mask-fields-for-environment-variables)

2469* **Default** : non défini, donc aucune variable d'environnement n'est protégée2485* **Default** : non défini, donc aucune variable d'environnement n'est protégée

2470 2486 

2471Ceci supprime `NPM_TOKEN` des commandes en sandbox et masque `GITHUB_TOKEN`, en substituant la valeur réelle uniquement sur les demandes à `api.github.com` :2487Ceci supprime `NPM_TOKEN` des commandes en sandbox et masque `GITHUB_TOKEN`, en substituant la valeur réelle uniquement sur les requêtes vers `api.github.com` :

2472 2488 

2473```json settings.json theme={null}2489```json settings.json theme={null}

2474{2490{


2483}2499}

2484```2500```

2485 2501 

2486Le `name` doit commencer par une lettre ou un trait de soulignement et contenir uniquement des lettres, des chiffres et des traits de soulignement. Claude Code fusionne les tableaux de chaque portée de paramètres que la session charge, et applique `deny` lorsque la même variable apparaît avec les deux modes. [Protect credentials](/docs/fr/sandboxing#protect-credentials) couvre ce qui s'applique toujours à partir des sources que vous excluez avec `--setting-sources`. `mask` entrées nécessitent Claude Code v2.1.199 ou ultérieur.2502Le `name` doit commencer par une lettre ou un trait de soulignement et contenir uniquement des lettres, des chiffres et des traits de soulignement. Claude Code fusionne les tableaux de chaque portée de paramètres que la session charge, et applique `deny` lorsque la même variable apparaît avec les deux modes. [Protect credentials](/docs/fr/sandboxing#protect-credentials) couvre ce qui s'applique toujours à partir des sources que vous excluez avec `--setting-sources`. Les entrées `mask` nécessitent Claude Code v2.1.199 ou ultérieur.

2487 2503 

2488La substitution `mask` s'exécute uniquement via le proxy du sandbox, donc définissez [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), ou [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) pour les réseaux de test HTTP simple ; consultez [Mask environment variables](/docs/fr/sandboxing#mask-environment-variables). Claude Code accepte mais ignore les champs `mask` sur une entrée `deny`.2504La substitution `mask` s'exécute uniquement via le proxy du sandbox, donc définissez [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), ou [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) pour les réseaux de test HTTP simple ; consultez [Mask credentials](/docs/fr/sandboxing#mask-credentials). Claude Code accepte mais ignore les champs `mask` sur une entrée `deny`.

2489 2505 

2490<span id="sandbox-credentials-envvars-extract" />2506<span id="sandbox-credentials-envvars-extract" />

2491 2507 


2509| `onExtractNoMatch` | `"warn"`, `"deny"` ou `"error"` ; par défaut `"warn"`. Sur une entrée avec `decode`, seul `"warn"` est accepté | Ce qui se passe lorsque `extract` ne correspond à rien. `warn` transmet la variable sans masque, `deny` la désactive à l'intérieur du sandbox, et `error` arrête la configuration du sandbox jusqu'à ce que vous corrigiez la configuration. Nécessite v2.1.224 ou ultérieur |2525| `onExtractNoMatch` | `"warn"`, `"deny"` ou `"error"` ; par défaut `"warn"`. Sur une entrée avec `decode`, seul `"warn"` est accepté | Ce qui se passe lorsque `extract` ne correspond à rien. `warn` transmet la variable sans masque, `deny` la désactive à l'intérieur du sandbox, et `error` arrête la configuration du sandbox jusqu'à ce que vous corrigiez la configuration. Nécessite v2.1.224 ou ultérieur |

2510| `decode` | la chaîne `"jwt"` | Vérifiez que la valeur entière est un JWT et remplacez-la par un faux token structurellement valide, afin que le code à l'intérieur du sandbox qui décode le token continue de fonctionner ; le proxy substitue le token réel entier à la sortie. Une valeur qui ne se vérifie pas passe sans masque avec un avertissement. Nécessite v2.1.224 ou ultérieur |2526| `decode` | la chaîne `"jwt"` | Vérifiez que la valeur entière est un JWT et remplacez-la par un faux token structurellement valide, afin que le code à l'intérieur du sandbox qui décode le token continue de fonctionner ; le proxy substitue le token réel entier à la sortie. Une valeur qui ne se vérifie pas passe sans masque avec un avertissement. Nécessite v2.1.224 ou ultérieur |

2511| `maskClaims` | tableau de chaînes, au moins un nom de claim ; nécessite `decode` | Masquez uniquement les claims de charge utile de niveau supérieur nommés à l'intérieur du JWT décodé et reconstruisez le token autour de la charge utile modifiée, afin que les autres claims restent lisibles. Lorsqu'aucun claim nommé ne correspond, la variable passe sans masque avec un avertissement. Nécessite v2.1.224 ou ultérieur |2527| `maskClaims` | tableau de chaînes, au moins un nom de claim ; nécessite `decode` | Masquez uniquement les claims de charge utile de niveau supérieur nommés à l'intérieur du JWT décodé et reconstruisez le token autour de la charge utile modifiée, afin que les autres claims restent lisibles. Lorsqu'aucun claim nommé ne correspond, la variable passe sans masque avec un avertissement. Nécessite v2.1.224 ou ultérieur |

2512| `injectHosts` | tableau de chaînes, chacun un hôte que [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) admet également | Réduisez les hôtes où le proxy du sandbox substitue la valeur réelle. Lorsqu'il n'est pas défini, le proxy la substitue sur les demandes à chaque hôte dans `sandbox.network.allowedDomains`. Écrivez une destination IPv6 comme l'adresse compressée nue, comme `"::1"`, pas la forme entre crochets ; consultez [IPv6 destinations in `injectHosts`](/docs/fr/sandboxing#ipv6-destinations-in-injecthosts). Nécessite v2.1.199 ou ultérieur |2528| `injectHosts` | tableau de chaînes, chacun un hôte que [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) admet également | Réduisez les hôtes où le proxy du sandbox substitue la valeur réelle. Lorsqu'il n'est pas défini, le proxy la substitue sur les requêtes vers chaque hôte dans `sandbox.network.allowedDomains`. Écrivez une destination IPv6 comme l'adresse compressée nue, comme `"::1"`, pas la forme entre crochets ; consultez [IPv6 destinations in `injectHosts`](/docs/fr/sandboxing#ipv6-destinations-in-injecthosts). Nécessite v2.1.199 ou ultérieur |

2513 2529 

2514Ceci masque uniquement le mot de passe à l'intérieur de `DATABASE_URL`, désactive la variable si le motif ne correspond à rien, et masque un JWT dans `SERVICE_JWT` tout en laissant chaque claim sauf `api_key` lisible :2530Ceci masque uniquement le mot de passe à l'intérieur de `DATABASE_URL`, désactive la variable si le motif ne correspond à rien, et masque un JWT dans `SERVICE_JWT` tout en laissant chaque claim sauf `api_key` lisible :

2515 2531 


2540 `sandbox.credentials.allowPlaintextInject`2556 `sandbox.credentials.allowPlaintextInject`

2541</h3>2557</h3>

2542 2558 

2543Autorisez la substitution `mask` sur les demandes HTTP simples ainsi que sur HTTPS terminé par TLS. Sur HTTP simple, l'identité en amont n'est pas vérifiée et l'identifiant voyage en clair, donc laissez ceci désactivé en dehors des réseaux de test de confiance. Nécessite Claude Code v2.1.199 ou ultérieur.2559Autorisez la substitution `mask` sur les requêtes HTTP simples ainsi que sur HTTPS terminé par TLS. Sur HTTP simple, l'identité en amont n'est pas vérifiée et l'identifiant voyage en clair, donc laissez ceci désactivé en dehors des réseaux de test de confiance. Nécessite Claude Code v2.1.199 ou ultérieur.

2544 2560 

2545* **Scope** : [`User or managed`](#scopes)2561* **Scope** : [`User or managed`](#scopes)

2546* **Type** : Booléen2562* **Type** : Booléen

2547 * `true` : Claude Code autorise la substitution `mask` sur les demandes HTTP simples ainsi que sur HTTPS terminé par TLS2563 * `true` : Claude Code autorise la substitution `mask` sur les requêtes HTTP simples ainsi que sur HTTPS terminé par TLS

2548 * `false` : Claude Code autorise la substitution `mask` uniquement sur HTTPS terminé par TLS2564 * `false` : Claude Code autorise la substitution `mask` uniquement sur HTTPS terminé par TLS

2549* **Default** : `false`2565* **Default** : `false`

2550 2566 


2564 `sandbox.credentials.awsPairs`2580 `sandbox.credentials.awsPairs`

2565</h3>2581</h3>

2566 2582 

2567Groupez les variables d'environnement masquées qui forment un identifiant AWS pour [re-signing SigV4](/docs/fr/sandboxing#re-sign-aws-requests) lorsque votre identifiant vit dans des variables avec des noms non standard. Claude Code lie automatiquement le trio conventionnel `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` et `AWS_SESSION_TOKEN` lorsque vous masquez leurs valeurs entières, donc vous n'avez besoin de cette clé que pour d'autres noms. Nécessite Claude Code v2.1.224 ou ultérieur.2583Groupez les variables d'environnement masquées qui forment un identifiant AWS pour le [re-signing SigV4](/docs/fr/sandboxing#re-sign-aws-requests) lorsque votre identifiant vit dans des variables avec des noms non standard. Claude Code lie automatiquement le trio conventionnel `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` et `AWS_SESSION_TOKEN` lorsque vous masquez leurs valeurs entières, donc vous n'avez besoin de cette clé que pour d'autres noms. Nécessite Claude Code v2.1.224 ou ultérieur.

2568 2584 

2569* **Scope** : [`User or managed`](#scopes)2585* **Scope** : [`User or managed`](#scopes)

2570* **Type** : tableau d'objets, chacun avec `accessKeyIdVar`, `secretAccessKeyVar` et optionnellement `sessionTokenVar`, nommant les entrées `sandbox.credentials.envVars`2586* **Type** : tableau d'objets, chacun avec `accessKeyIdVar`, `secretAccessKeyVar` et optionnellement `sessionTokenVar`, nommant les entrées `sandbox.credentials.envVars`


2588}2604}

2589```2605```

2590 2606 

2591Chaque variable nommée doit être une entrée `mask` de valeur entière dans [`sandbox.credentials.envVars`](#sandbox-credentials-envvars), sans `extract` ou `decode`, et ne peut remplir qu'un seul rôle dans toutes les paires.2607Chaque variable nommée doit être une entrée `mask` de valeur entière dans [`sandbox.credentials.envVars`](#sandbox-credentials-envvars), sans `extract` ou `decode`, et ne peut remplir qu'un seul rôle dans toutes les paires. Ces règles s'appliquent également :

2608 

2609* Le proxy re-signe les requêtes sur les hôtes listés dans les `injectHosts` de l'entrée de l'ID de clé d'accès

2610* Lorsque `sessionTokenVar` est défini, le proxy envoie le jeton réel comme `x-amz-security-token` sur les requêtes re-signées

2611* Nommer l'une des variables conventionnelles dans une paire remplace l'appairage automatique

2592 2612 

2593<h3 id="sandbox-credentials-sigv4">2613<h3 id="sandbox-credentials-sigv4">

2594 `sandbox.credentials.sigv4`2614 `sandbox.credentials.sigv4`

2595</h3>2615</h3>

2596 2616 

2597Choisissez ce que le proxy du sandbox fait avec les formes de demande AWS qu'il [ne peut pas re-signer](/docs/fr/sandboxing#re-sign-aws-requests) : `streaming` pour les téléchargements de streaming aws-chunked, `presigned` pour les URLs présignées, et `sigv4a` pour les signatures asymétriques SigV4A. Ceci s'applique uniquement aux demandes signées avec l'ID de clé d'accès espace réservé d'une paire masquée. Nécessite Claude Code v2.1.224 ou ultérieur.2617Choisissez ce que le proxy du sandbox fait avec les formes de requête AWS qu'il [ne peut pas re-signer](/docs/fr/sandboxing#re-sign-aws-requests) : `streaming` pour les téléchargements en streaming aws-chunked, `presigned` pour les URLs présignées, et `sigv4a` pour les signatures asymétriques SigV4A. Ceci s'applique uniquement aux requêtes signées avec l'ID de clé d'accès espace réservé d'une paire masquée. Nécessite Claude Code v2.1.224 ou ultérieur.

2598 2618 

2599* **Scope** : [`User or managed`](#scopes)2619* **Scope** : [`User or managed`](#scopes)

2600* **Type** : objet avec `streaming`, `presigned` et `sigv4a`, chacun l'un de :2620* **Type** : objet avec `streaming`, `presigned` et `sigv4a`, chacun l'un de :

2601 * `"deny"` : le proxy échoue la demande2621 * `"deny"` : le proxy fait échouer la requête

2602 * `"passthrough"` : le proxy transmet la demande signée avec l'espace réservé masqué, afin que l'outil reçoive le propre rejet d'AWS2622 * `"passthrough"` : le proxy transmet la requête signée avec l'espace réservé masqué, afin que l'outil reçoive le propre rejet d'AWS

2603* **Default** : non défini, donc chaque forme est `"deny"`2623* **Default** : non défini, donc chaque forme est `"deny"`

2604 2624 

2605Ceci transmet les téléchargements de streaming au lieu de les échouer au proxy :2625Ceci transmet les téléchargements en streaming au lieu de les faire échouer au niveau du proxy :

2606 2626 

2607```json settings.json theme={null}2627```json settings.json theme={null}

2608{2628{


2616}2636}

2617```2637```

2618 2638 

2619Avec `deny`, le proxy échoue la demande. Avec `passthrough`, le proxy transmet la demande avec sa signature calculée à partir de l'espace réservé masqué, afin qu'AWS la rejette et que l'outil appelant reçoive la propre réponse d'AWS au lieu d'une erreur de proxy.2639Avec `deny`, le proxy fait échouer la requête. Avec `passthrough`, le proxy transmet la requête avec sa signature calculée à partir de l'espace réservé masqué, afin qu'AWS la rejette et que l'outil appelant reçoive la propre réponse d'AWS au lieu d'une erreur de proxy.

2620 2640 

2621<h3 id="sandbox-network">2641<h3 id="sandbox-network">

2622 `sandbox.network`2642 `sandbox.network`


2626 2646 

2627* **Scope** : [`Any file`](#scopes). `strictAllowlist`, `allowManagedDomainsOnly` et `tlsTerminate` sont lus à partir de moins de sources, comme leurs entrées le disent.2647* **Scope** : [`Any file`](#scopes). `strictAllowlist`, `allowManagedDomainsOnly` et `tlsTerminate` sont lus à partir de moins de sources, comme leurs entrées le disent.

2628* **Type** : objet avec les sous-clés ci-dessous2648* **Type** : objet avec les sous-clés ci-dessous

2629* **Default** : non défini, donc aucun domaine n'est pré-autorisé et le sandbox demande pour chaque nouvel hôte2649* **Default** : non défini, donc aucun domaine n'est pré-autorisé et votre mode de permission décide [ce qu'il advient de chaque nouvel hôte](/docs/fr/sandboxing#hosts-outside-your-allowed-domains)

2630 2650 

2631Ceci pré-autorise GitHub et npm, bloque `uploads.github.com`, et permet aux commandes de se lier à localhost :2651Ceci pré-autorise GitHub et npm, bloque `uploads.github.com`, et permet aux commandes de se lier à localhost :

2632 2652 


2642}2662}

2643```2663```

2644 2664 

2645Claude Code fusionne les sous-clés de tableau dans les portées de paramètres et les déduplique, donc un projet peut ajouter des domaines à votre liste utilisateur. Les [règles de permission](/docs/fr/sandboxing#permission-rules) `WebFetch(domain:...)` allow et deny alimentent les mêmes listes allow et deny.2665Claude Code fusionne les sous-clés de tableau dans les portées de paramètres, donc un projet peut ajouter des domaines à votre liste utilisateur, sauf si un [verrou de dépôt](/docs/fr/sandboxing#repository-settings-under-an-admin-required-sandbox) s'applique. Les [règles de permission](/docs/fr/sandboxing#permission-rules) `WebFetch(domain:...)` allow et deny alimentent les mêmes listes allow et deny.

2646 2666 

2647<h3 id="sandbox-network-allowunixsockets">2667<h3 id="sandbox-network-allowunixsockets">

2648 `sandbox.network.allowUnixSockets`2668 `sandbox.network.allowUnixSockets`

2649</h3>2669</h3>

2650 2670 

2651Listez les chemins de socket Unix que les commandes en sandbox peuvent se connecter sur macOS. Claude Code ignore cette liste sur Linux et WSL2, où le filtre seccomp ne peut pas inspecter les chemins de socket ; utilisez [`allowAllUnixSockets`](#sandbox-network-allowallunixsockets) à la place.2671Listez les chemins de socket Unix auxquels les commandes en sandbox peuvent se connecter sur macOS. Claude Code ignore cette liste sur Linux et WSL2, où le filtre seccomp ne peut pas inspecter les chemins de socket ; utilisez [`allowAllUnixSockets`](#sandbox-network-allowallunixsockets) à la place.

2652 2672 

2653* **Scope** : [`Any file`](#scopes)2673* **Scope** : [`Any file`](#scopes), avec des [limites sur les paramètres de projet et locaux](/docs/fr/sandboxing#repository-settings-under-an-admin-required-sandbox)

2654* **Type** : tableau de chaînes, chacun un chemin de socket2674* **Type** : tableau de chaînes, chacun un chemin de socket

2655* **Default** : non défini, donc le sandbox macOS bloque chaque socket Unix2675* **Default** : non défini, donc le sandbox macOS bloque chaque socket Unix

2656 2676 


2672 2692 

2673Laissez les commandes en sandbox se connecter à chaque socket Unix. Sur Linux et WSL2, le [filtre seccomp](/docs/fr/sandboxing#set-up-linux-and-wsl2) du sandbox bloque les appels `socket(AF_UNIX, ...)`, donc c'est le seul moyen de permettre les sockets Unix là. Lorsque le filtre est manquant, que `/sandbox` rapporte sur son onglet Dependencies, le sandbox ne bloque pas les appels de socket Unix. Consultez [Set up Linux and WSL2](/docs/fr/sandboxing#set-up-linux-and-wsl2) pour savoir d'où vient le filtre.2693Laissez les commandes en sandbox se connecter à chaque socket Unix. Sur Linux et WSL2, le [filtre seccomp](/docs/fr/sandboxing#set-up-linux-and-wsl2) du sandbox bloque les appels `socket(AF_UNIX, ...)`, donc c'est le seul moyen de permettre les sockets Unix là. Lorsque le filtre est manquant, que `/sandbox` rapporte sur son onglet Dependencies, le sandbox ne bloque pas les appels de socket Unix. Consultez [Set up Linux and WSL2](/docs/fr/sandboxing#set-up-linux-and-wsl2) pour savoir d'où vient le filtre.

2674 2694 

2675* **Scope** : [`Any file`](#scopes)2695* **Scope** : [`Any file`](#scopes), avec des [limites sur les paramètres de projet et locaux](/docs/fr/sandboxing#repository-settings-under-an-admin-required-sandbox)

2676* **Type** : Booléen2696* **Type** : Booléen

2677 * `true` : les commandes en sandbox peuvent se connecter à chaque socket Unix2697 * `true` : les commandes en sandbox peuvent se connecter à chaque socket Unix

2678 * `false` : le sandbox bloque les connexions de socket Unix : sur macOS sauf les chemins dans `allowUnixSockets`, et sur Linux et WSL2 via le filtre seccomp lorsqu'il est présent2698 * `false` : le sandbox bloque les connexions de socket Unix : sur macOS sauf les chemins dans `allowUnixSockets`, et sur Linux et WSL2 via le filtre seccomp lorsqu'il est présent


2694 `sandbox.network.allowLocalBinding`2714 `sandbox.network.allowLocalBinding`

2695</h3>2715</h3>

2696 2716 

2697Laissez les commandes en sandbox se lier aux ports localhost sur macOS, par exemple pour démarrer un serveur de développement.2717Laissez les commandes en sandbox sur macOS écouter sur des ports réseau, par exemple pour démarrer un serveur de développement, et se connecter à n'importe quel port sur localhost. Une commande qui écoute sur une adresse autre que loopback accepte les connexions provenant d'autres machines. La clé n'a aucun effet sur Linux et WSL2, où chaque commande en sandbox possède sa propre interface loopback. Pour atteindre un serveur sur l'hôte depuis Linux ou WSL2, consultez [A command fails to reach a server on localhost](/docs/fr/sandboxing#a-command-fails-to-reach-a-server-on-localhost).

2698 2718 

2699* **Scope** : [`Any file`](#scopes)2719* **Scope** : [`Any file`](#scopes), avec des [limites sur les paramètres de projet et locaux](/docs/fr/sandboxing#repository-settings-under-an-admin-required-sandbox)

2700* **Type** : Booléen2720* **Type** : Booléen

2701 * `true` : les commandes en sandbox peuvent se lier aux ports localhost sur macOS2721 * `true` : les commandes en sandbox sur macOS peuvent écouter sur n'importe quelle adresse locale et se connecter à n'importe quel port sur localhost

2702 * `false` : les commandes en sandbox sur macOS ne peuvent pas se lier aux ports localhost2722 * `false` : les commandes en sandbox sur macOS ne peuvent pas écouter sur un port ni se connecter directement aux serveurs sur localhost

2703* **Default** : `false`2723* **Default** : `false`

2704 2724 

2705```json settings.json theme={null}2725```json settings.json theme={null}


2718 2738 

2719Listez les noms de service XPC et Mach supplémentaires que le sandbox macOS peut rechercher. Les outils qui communiquent via XPC, comme le simulateur iOS ou Playwright, ont besoin de leurs services listés ici.2739Listez les noms de service XPC et Mach supplémentaires que le sandbox macOS peut rechercher. Les outils qui communiquent via XPC, comme le simulateur iOS ou Playwright, ont besoin de leurs services listés ici.

2720 2740 

2721* **Scope** : [`Any file`](#scopes)2741* **Scope** : [`Any file`](#scopes), avec des [limites sur les paramètres de projet et locaux](/docs/fr/sandboxing#repository-settings-under-an-admin-required-sandbox)

2722* **Type** : tableau de chaînes, chacun un nom de service ; un seul `*` final correspond à un préfixe, et `"*"` seul correspond à chaque service2742* **Type** : tableau de chaînes, chacun un nom de service ; un seul `*` final correspond à un préfixe, et `"*"` seul correspond à chaque service

2723* **Default** : non défini2743* **Default** : non défini

2724 2744 


2740 2760 

2741Pré-autorisez les domaines pour le trafic sortant des commandes en sandbox, afin que le sandbox ne demande pas pour eux. Les caractères génériques tels que `*.example.com` correspondent aux sous-domaines, et un suffixe `:port` optionnel limite une entrée à un port ; une entrée sans port correspond à chaque port.2761Pré-autorisez les domaines pour le trafic sortant des commandes en sandbox, afin que le sandbox ne demande pas pour eux. Les caractères génériques tels que `*.example.com` correspondent aux sous-domaines, et un suffixe `:port` optionnel limite une entrée à un port ; une entrée sans port correspond à chaque port.

2742 2762 

2743* **Scope** : [`Any file`](#scopes). Uniquement les paramètres gérés lorsque [`allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) est défini.2763* **Scope** : [`Any file`](#scopes), avec des [limites sur les paramètres de projet et locaux](/docs/fr/sandboxing#repository-settings-under-an-admin-required-sandbox). Uniquement les paramètres gérés lorsque [`allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) est défini.

2744* **Type** : tableau de chaînes, chacun un domaine, motif avec caractères génériques ou littéral IP, avec un suffixe `:port` optionnel2764* **Type** : tableau de chaînes, chacun un domaine, motif avec caractères génériques ou littéral IP, avec un suffixe `:port` optionnel

2745* **Default** : non défini, donc le sandbox demande la première fois qu'une commande atteint un nouvel hôte2765* **Default** : non défini, donc votre mode de permission décide [ce qu'il advient de chaque nouvel hôte](/docs/fr/sandboxing#hosts-outside-your-allowed-domains)

2746 2766 

2747Ceci pré-autorise GitHub sur chaque port, chaque sous-domaine npm, et un hôte API sur le port 443 uniquement :2767Ceci pré-autorise GitHub sur chaque port, chaque sous-domaine npm, et un hôte API sur le port 443 uniquement :

2748 2768 


2786 `sandbox.network.strictAllowlist`2806 `sandbox.network.strictAllowlist`

2787</h3>2807</h3>

2788 2808 

2789Refusez aux commandes en sandbox l'accès aux hôtes en dehors de la liste d'autorisation au lieu de demander l'approbation. La liste d'autorisation est [`allowedDomains`](#sandbox-network-alloweddomains) plus les domaines des règles allow `WebFetch(domain:...)`, ou uniquement les entrées des paramètres gérés lorsque [`allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) est défini. Nécessite Claude Code v2.1.219 ou ultérieur.2809Refusez aux commandes en sandbox l'accès aux hôtes en dehors de la liste d'autorisation au lieu de demander l'approbation. La liste d'autorisation est [`allowedDomains`](#sandbox-network-alloweddomains) plus les domaines des règles allow `WebFetch(domain:...)`, ou uniquement les entrées des paramètres gérés lorsque [`allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) est défini. [Locks that apply without an admin-required sandbox](/docs/fr/sandboxing#locks-that-apply-without-an-admin-required-sandbox) couvre les entrées d'un dépôt. Nécessite Claude Code v2.1.219 ou ultérieur.

2790 2810 

2791* **Scope** : [`User or managed`](#scopes). Un référentiel ne peut pas l'activer ou le désactiver.2811* **Scope** : [`User or managed`](#scopes). Un dépôt ne peut pas l'activer ou le désactiver.

2792* **Type** : Booléen2812* **Type** : Booléen

2793 * `true` : Claude Code refuse aux commandes en sandbox l'accès aux hôtes en dehors de la liste d'autorisation2813 * `true` : Claude Code refuse aux commandes en sandbox l'accès aux hôtes en dehors de la liste d'autorisation

2794 * `false` : sauf si un autre fichier de paramètres de confiance définit `true`, Claude Code décide un hôte en dehors de la liste d'autorisation par mode de permission au lieu de le refuser directement : en mode auto il vérifie l'hôte par rapport aux [domaines autorisés par commande](/docs/fr/sandboxing#per-command-allowed-domains-in-auto-mode), en mode `dontAsk` il refuse, en mode `bypassPermissions` et en sessions plan-mode de terminal interactif où le bypass est disponible il autorise, et sinon il vous demande2814 * `false` : sauf si un autre fichier de paramètres de confiance définit `true`, Claude Code décide un hôte en dehors de la liste d'autorisation par mode de permission au lieu de le refuser directement : en mode auto il vérifie l'hôte par rapport aux [domaines autorisés par commande](/docs/fr/sandboxing#per-command-allowed-domains-in-auto-mode), en mode `dontAsk` il refuse, en mode `bypassPermissions` et en sessions en mode plan de terminal interactif où le bypass est disponible il autorise, et sinon il vous demande

2795* **Default** : `false`2815* **Default** : `false`

2796 2816 

2797```json settings.json theme={null}2817```json settings.json theme={null}


2815* **Scope** : [`Managed`](#scopes)2835* **Scope** : [`Managed`](#scopes)

2816* **Type** : Booléen2836* **Type** : Booléen

2817 * `true` : Claude Code honore uniquement `allowedDomains` et les règles allow `WebFetch(domain:...)` des paramètres gérés et bloque un domaine non autorisé au lieu de demander2837 * `true` : Claude Code honore uniquement `allowedDomains` et les règles allow `WebFetch(domain:...)` des paramètres gérés et bloque un domaine non autorisé au lieu de demander

2818 * `false` : les domaines des paramètres utilisateur, projet, local et `--settings` fusionnent dans la liste d'autorisation2838 * `false` : les domaines d'autres fichiers de paramètres peuvent être fusionnés dans la liste d'autorisation

2819* **Default** : `false`2839* **Default** : `false`

2820 2840 

2821Ceci verrouille la liste d'autorisation à GitHub et npm et ignore tous les domaines que les développeurs ajoutent :2841Ceci verrouille la liste d'autorisation à GitHub et npm et ignore tous les domaines que les développeurs ajoutent :


2831}2851}

2832```2852```

2833 2853 

2854Tant que la clé vaut `true`, le sandbox est [exigé par l'administrateur](/docs/fr/sandboxing#repository-settings-under-an-admin-required-sandbox), et seuls les paramètres gérés peuvent définir un [port de proxy](#sandbox-network-httpproxyport).

2855 

2834Les domaines refusés fusionnent toujours de chaque source que la session charge. Consultez [Keep developers from widening the policy](/docs/fr/sandboxing#keep-developers-from-widening-the-policy).2856Les domaines refusés fusionnent toujours de chaque source que la session charge. Consultez [Keep developers from widening the policy](/docs/fr/sandboxing#keep-developers-from-widening-the-policy).

2835 2857 

2836<h3 id="sandbox-network-httpproxyport">2858<h3 id="sandbox-network-httpproxyport">

2837 `sandbox.network.httpProxyPort`2859 `sandbox.network.httpProxyPort`

2838</h3>2860</h3>

2839 2861 

2840Pointez le sandbox vers votre propre proxy HTTP au lieu de celui que Claude Code exécute. Les organisations font cela pour inspecter le trafic HTTPS, appliquer leurs propres règles de filtrage ou enregistrer chaque demande. Lorsqu'il n'est pas défini, Claude Code démarre son propre proxy pour le trafic HTTP.2862Pointez le sandbox vers votre propre proxy HTTP au lieu de celui que Claude Code exécute. Les organisations font cela pour inspecter le trafic HTTPS, appliquer leurs propres règles de filtrage ou journaliser les requêtes. Votre proxy prend en charge le filtrage, et Claude Code cesse d'appliquer ses listes de domaines et ses demandes réseau au trafic qui y est envoyé. Lorsqu'il n'est pas défini, Claude Code démarre son propre proxy pour le trafic HTTP.

2841 2863 

2842* **Scope** : [`Any file`](#scopes)2864* **Scope** : [`Any file`](#scopes), sauf si [d'autres paramètres du sandbox limitent les fichiers pouvant définir un port](/docs/fr/sandboxing#custom-proxy-configuration)

2843* **Type** : nombre, un port TCP local2865* **Type** : nombre, un port TCP local

2844* **Default** : non défini, donc Claude Code exécute son propre proxy2866* **Default** : non défini, donc Claude Code exécute son propre proxy

2845 2867 


2859 `sandbox.network.socksProxyPort`2881 `sandbox.network.socksProxyPort`

2860</h3>2882</h3>

2861 2883 

2862Pointez le sandbox vers votre propre proxy SOCKS5 au lieu de celui que Claude Code exécute. Lorsqu'il n'est pas défini, Claude Code démarre son propre proxy pour le trafic SOCKS.2884Pointez le sandbox vers votre propre proxy SOCKS5 au lieu de celui que Claude Code exécute. Votre proxy prend en charge le filtrage, et Claude Code cesse d'appliquer ses listes de domaines et ses demandes réseau au trafic qui y est envoyé. Lorsqu'il n'est pas défini, Claude Code démarre son propre proxy pour le trafic SOCKS.

2863 2885 

2864* **Scope** : [`Any file`](#scopes)2886* **Scope** : [`Any file`](#scopes), sauf si [d'autres paramètres du sandbox limitent les fichiers pouvant définir un port](/docs/fr/sandboxing#custom-proxy-configuration)

2865* **Type** : nombre, un port TCP local2887* **Type** : nombre, un port TCP local

2866* **Default** : non défini, donc Claude Code exécute son propre proxy2888* **Default** : non défini, donc Claude Code exécute son propre proxy

2867 2889 


2881 `sandbox.network.tlsTerminate`2903 `sandbox.network.tlsTerminate`

2882</h3>2904</h3>

2883 2905 

2884Faites en sorte que le proxy du sandbox termine TLS afin qu'il puisse lire le contenu des demandes HTTPS. Ceci est expérimental, et la [substitution d'identifiants](/docs/fr/sandboxing#mask-credentials) `mask` l'exige. Définissez `{}` pour générer une autorité de certification éphémère pour la session, ou définissez `caCertPath` et `caKeyPath` pour utiliser la vôtre.2906Faites en sorte que le proxy du sandbox termine TLS afin qu'il puisse lire le contenu des requêtes HTTPS. Ceci est expérimental, et la [substitution d'identifiants](/docs/fr/sandboxing#mask-credentials) `mask` l'exige. Définissez `{}` pour générer une autorité de certification éphémère pour la session, ou définissez `caCertPath` et `caKeyPath` pour utiliser la vôtre.

2885 2907 

2886* **Scope** : [`User or managed`](#scopes). Un référentiel ne peut pas l'activer ou fournir une autorité de certification.2908* **Scope** : [`User or managed`](#scopes). Un dépôt ne peut pas l'activer ou fournir une autorité de certification.

2887* **Type** : objet avec les chaînes optionnelles `caCertPath` et `caKeyPath`, chacun un chemin de fichier2909* **Type** : objet avec les chaînes optionnelles `caCertPath` et `caKeyPath`, chacune un chemin de fichier

2888* **Default** : non défini, donc le proxy ne termine pas ou n'inspecte pas TLS2910* **Default** : non défini, donc le proxy ne termine pas ou n'inspecte pas TLS

2889 2911 

2890```json settings.json theme={null}2912```json settings.json theme={null}


2897}2919}

2898```2920```

2899 2921 

2900Lorsque plus d'une source honorée la définit, Claude Code utilise la valeur de la source la plus prioritaire : paramètres gérés, puis l'indicateur `--settings`, puis paramètres utilisateur. Nécessite Claude Code v2.1.199 ou ultérieur.2922Lorsque plus d'une source honorée la définit, Claude Code utilise la valeur de la source la plus prioritaire : paramètres gérés, puis le flag `--settings`, puis paramètres utilisateur. Nécessite Claude Code v2.1.199 ou ultérieur.

2901 2923 

2902<span id="context-and-memory" />2924<span id="context-and-memory" />

2903 2925 


4312* **Tout le reste est bloqué** : les hooks utilisateur, projet et local, les hooks et mods d'autres plugins installés, et les hooks déclarés dans le frontmatter de l'agent. Les [mods intégrés à Claude Code](/docs/fr/plugins/mods/overview#mods-built-into-claude-code) continuent de s'exécuter. Pour bloquer uniquement les mods des utilisateurs, définissez [`allowManagedModsOnly`](/docs/fr/plugins/mods/admin#set-options-on-the-built-in-guard) à la place.4334* **Tout le reste est bloqué** : les hooks utilisateur, projet et local, les hooks et mods d'autres plugins installés, et les hooks déclarés dans le frontmatter de l'agent. Les [mods intégrés à Claude Code](/docs/fr/plugins/mods/overview#mods-built-into-claude-code) continuent de s'exécuter. Pour bloquer uniquement les mods des utilisateurs, définissez [`allowManagedModsOnly`](/docs/fr/plugins/mods/admin#set-options-on-the-built-in-guard) à la place.

4313* **Les plugins sourced par commande sont désactivés** : Claude Code désactive également les plugins avec une [`command` source](/docs/fr/plugins/marketplace-reference#command-plugin-source), y compris les plugins force-enabled dans les `enabledPlugins` gérés, sauf si vous définissez [`disableCommandPluginSources`](#disablecommandpluginsources) explicitement à `false`4335* **Les plugins sourced par commande sont désactivés** : Claude Code désactive également les plugins avec une [`command` source](/docs/fr/plugins/marketplace-reference#command-plugin-source), y compris les plugins force-enabled dans les `enabledPlugins` gérés, sauf si vous définissez [`disableCommandPluginSources`](#disablecommandpluginsources) explicitement à `false`

4314* **Les commandes `headersHelper` de la marketplace sont bloquées** : Claude Code bloque également les commandes [`headersHelper`](/docs/fr/plugins/host-marketplace#authenticate-archive-downloads) de la marketplace sauf si [`disableCommandPluginSources`](#disablecommandpluginsources) est explicitement défini à `false`, sauf pour une marketplace que les paramètres gérés eux-mêmes déclarent. Nécessite Claude Code v2.1.238 ou ultérieur4336* **Les commandes `headersHelper` de la marketplace sont bloquées** : Claude Code bloque également les commandes [`headersHelper`](/docs/fr/plugins/host-marketplace#authenticate-archive-downloads) de la marketplace sauf si [`disableCommandPluginSources`](#disablecommandpluginsources) est explicitement défini à `false`, sauf pour une marketplace que les paramètres gérés eux-mêmes déclarent. Nécessite Claude Code v2.1.238 ou ultérieur

4315* **La ligne d'état et la suggestion de fichier se limitent aux paramètres gérés** : Claude Code lit [`statusLine`](/docs/fr/statusline), [`fileSuggestion`](#filesuggestion) et [`subagentStatusLine`](/docs/fr/statusline#subagent-status-lines) uniquement à partir des paramètres gérés, en suivant les [portes de ligne d'état et de suggestion de fichier](#status-line-and-file-suggestion-gates)4337* **La barre de statut et la suggestion de fichier se limitent aux paramètres gérés** : Claude Code lit [`statusLine`](/docs/fr/statusline), [`fileSuggestion`](#filesuggestion) et [`subagentStatusLine`](/docs/fr/statusline#subagent-status-lines) uniquement à partir des paramètres gérés, en suivant les [portes de barre de statut et de suggestion de fichier](#status-line-and-file-suggestion-gates)

4316 4338 

4317La commande [`/goal`](/docs/fr/goal) ne peut pas s'exécuter tant que cette clé est définie, car elle dépend des hooks.4339La commande [`/goal`](/docs/fr/goal) ne peut pas s'exécuter tant que cette clé est définie, car elle dépend des hooks.

4318 4340 


4320 `disableAllHooks`4342 `disableAllHooks`

4321</h3>4343</h3>

4322 4344 

4323Désactivez les [hooks](/docs/fr/hooks#disable-or-remove-hooks), toute [ligne d'état](/docs/fr/statusline) personnalisée et toute commande [suggestion de fichier](#filesuggestion) personnalisée. Utilisez-la pour désactiver tous ces éléments temporairement sans les supprimer de vos paramètres.4345Désactivez les [hooks](/docs/fr/hooks#disable-or-remove-hooks), toute [barre de statut](/docs/fr/statusline) personnalisée et toute commande [suggestion de fichier](#filesuggestion) personnalisée. Utilisez-la pour désactiver tous ces éléments temporairement sans les supprimer de vos paramètres.

4324 4346 

4325* **Portée** : [`Any file`](#scopes). Seuls les paramètres gérés peuvent désactiver les hooks gérés.4347* **Portée** : [`Any file`](#scopes). Seuls les paramètres gérés peuvent désactiver les hooks gérés.

4326* **Type** : Booléen4348* **Type** : Booléen

4327 * `true` : Claude Code désactive les hooks, toute ligne d'état personnalisée et toute commande de suggestion de fichier personnalisée4349 * `true` : Claude Code désactive les hooks, toute barre de statut personnalisée et toute commande de suggestion de fichier personnalisée

4328 * `false` : les hooks, la ligne d'état et la commande de suggestion de fichier s'exécutent4350 * `false` : les hooks, la barre de statut et la commande de suggestion de fichier s'exécutent

4329* **Valeur par défaut** : non défini, donc les hooks s'exécutent4351* **Valeur par défaut** : non défini, donc les hooks s'exécutent

4330 4352 

4331```json settings.json theme={null}4353```json settings.json theme={null}


4339* **Dans les paramètres gérés** : Claude Code désactive tous les hooks configurés, y compris les hooks gérés, et continue d'exécuter les hooks que l'[Agent SDK](/docs/fr/agent-sdk/overview) enregistre en processus4361* **Dans les paramètres gérés** : Claude Code désactive tous les hooks configurés, y compris les hooks gérés, et continue d'exécuter les hooks que l'[Agent SDK](/docs/fr/agent-sdk/overview) enregistre en processus

4340* **Dans tout autre fichier de paramètres** : Claude Code désactive les hooks utilisateur, projet, local et plugin ; les hooks gérés, les hooks Agent SDK et les hooks des plugins force-enabled dans les [`enabledPlugins`](#enabledplugins) gérés continuent de s'exécuter4362* **Dans tout autre fichier de paramètres** : Claude Code désactive les hooks utilisateur, projet, local et plugin ; les hooks gérés, les hooks Agent SDK et les hooks des plugins force-enabled dans les [`enabledPlugins`](#enabledplugins) gérés continuent de s'exécuter

4341 4363 

4364La clé arrête également les [mods](/docs/fr/plugins/mods/overview), qui sont des plugins dont le code enregistre des hooks :

4365 

4366* **Dans les paramètres gérés** : les mods de chaque plugin installé s'arrêtent, y compris ceux de votre organisation

4367* **Dans tout autre fichier de paramètres** : les mods que vous avez installés s'arrêtent, et [les mods de votre organisation](/docs/fr/plugins/mods/admin#install-your-organizations-mods) continuent de s'exécuter

4368 

4369Les mods intégrés à Claude Code continuent de s'exécuter dans les deux cas. Chacun dispose de [son propre interrupteur](/docs/fr/plugins/mods/overview#mods-built-into-claude-code).

4370 

4342Garder les hooks Agent SDK en cours d'exécution lorsque les paramètres gérés définissent cette clé nécessite Claude Code v2.1.242 ou ultérieur.4371Garder les hooks Agent SDK en cours d'exécution lorsque les paramètres gérés définissent cette clé nécessite Claude Code v2.1.242 ou ultérieur.

4343 4372 

4344La commande [`/goal`](/docs/fr/goal) ne peut pas s'exécuter tant que les hooks sont désactivés, et le menu `/hooks` affiche un avis au lieu de vos hooks.4373La commande [`/goal`](/docs/fr/goal) ne peut pas s'exécuter tant que les hooks sont désactivés, et le menu `/hooks` affiche un avis au lieu de vos hooks.

4345 4374 

4346<h4 id="status-line-and-file-suggestion-gates">4375<h4 id="status-line-and-file-suggestion-gates">

4347 Portes de ligne d'état et de suggestion de fichier4376 Portes de barre de statut et de suggestion de fichier

4348</h4>4377</h4>

4349 4378 

4350Claude Code prend deux décisions pour `statusLine`, `fileSuggestion` et `subagentStatusLine`, dans cet ordre :4379Claude Code prend deux décisions pour `statusLine`, `fileSuggestion` et `subagentStatusLine`, dans cet ordre :

4351 4380 

4352* **Désactivé entièrement** : lorsque les paramètres gérés définissent `disableAllHooks`, ou lorsque le dossier n'est pas approuvé selon la même [règle de confiance d'espace de travail que les hooks dans les fichiers de paramètres](/docs/fr/permissions#what-runs-before-you-trust-a-folder)4381* **Désactivé entièrement** : lorsque les paramètres gérés définissent `disableAllHooks`, ou lorsque le dossier n'est pas approuvé selon la même [règle de confiance d'espace de travail que les hooks dans les fichiers de paramètres](/docs/fr/permissions#what-runs-before-you-trust-a-folder)

4353* **Limité aux paramètres gérés** : lorsque [`allowManagedHooksOnly`](#allowmanagedhooksonly) est défini, lorsque `disableAllHooks` est `true` en dehors des paramètres gérés après l'application de la [précédence des paramètres](/docs/fr/hooks#disable-or-remove-hooks), ou lorsque vous démarrez Claude Code avec `--safe-mode`4382* **Limité aux paramètres gérés** : lorsque [`allowManagedHooksOnly`](#allowmanagedhooksonly) est défini, lorsque `disableAllHooks` est `true` en dehors des paramètres gérés après l'application de la [priorité des paramètres](/docs/fr/hooks#disable-or-remove-hooks), ou lorsque vous démarrez Claude Code avec `--safe-mode`

4354 4383 

4355Sous limitation, Claude Code exécute une valeur gérée si une est déployée. Sinon, il ignore votre valeur sans avertissement : la ligne d'état est désactivée et l'autocomplétion `@` revient à la suggestion de fichier intégrée.4384Sous limitation, Claude Code exécute une valeur gérée si une est déployée. Sinon, il ignore votre valeur sans avertissement : la barre de statut est désactivée et l'autocomplétion `@` revient à la suggestion de fichier intégrée.

4356 4385 

4357<h3 id="disableworkflows">4386<h3 id="disableworkflows">

4358 `disableWorkflows`4387 `disableWorkflows`


4398 `hooks`4427 `hooks`

4399</h3>4428</h3>

4400 4429 

4401Exécutez vos propres commandes, invites, agents, requêtes HTTP ou outils MCP en tant que [hooks](/docs/fr/hooks) à des points du cycle de vie de Claude Code, comme avant un appel d'outil ou au démarrage d'une session ; la [référence des hooks](/docs/fr/hooks#hook-events) répertorie tous les événements, leur charge utile et leurs codes de sortie. Chaque événement correspond à une liste de groupes de correspondance, et chaque groupe répertorie les gestionnaires à exécuter lorsque la correspondance s'applique.4430Exécutez vos propres commandes, prompts, agents, requêtes HTTP ou outils MCP en tant que [hooks](/docs/fr/hooks) à des points du cycle de vie de Claude Code, comme avant un appel d'outil ou au démarrage d'une session ; la [référence des hooks](/docs/fr/hooks#hook-events) répertorie tous les événements, leur charge utile et leurs codes de sortie. Chaque événement correspond à une liste de groupes de matchers, et chaque groupe répertorie les gestionnaires à exécuter lorsque le matcher s'applique.

4402 4431 

4403* **Portée** : [`Any file`](#scopes). Les hooks fusionnent dans les fichiers plutôt que de se remplacer les uns les autres, et les hooks des paramètres gérés ne peuvent pas être supprimés d'autres fichiers.4432* **Portée** : [`Any file`](#scopes). Les hooks fusionnent dans les fichiers plutôt que de se remplacer les uns les autres, et les hooks des paramètres gérés ne peuvent pas être supprimés d'autres fichiers.

4404* **Type** : objet indexé par [événement hook](/docs/fr/hooks#hook-events) ; chaque valeur est un tableau de groupes `{ "matcher", "hooks" }` dont les entrées `hooks` ont un `type` de `"command"`, `"prompt"`, `"agent"`, `"http"` ou `"mcp_tool"`4433* **Type** : objet indexé par [événement hook](/docs/fr/hooks#hook-events) ; chaque valeur est un tableau de groupes `{ "matcher", "hooks" }` dont les entrées `hooks` ont un `type` de `"command"`, `"prompt"`, `"agent"`, `"http"` ou `"mcp_tool"`


4421}4450}

4422```4451```

4423 4452 

4424Pour chaque événement, modèle de correspondance et champ de gestionnaire, consultez la [référence des hooks](/docs/fr/hooks#configuration). Pour désactiver les hooks, consultez [`disableAllHooks`](#disableallhooks) ; pour limiter les hooks à ceux que votre organisation déploie, consultez [`allowManagedHooksOnly`](#allowmanagedhooksonly).4453Pour chaque événement, modèle de matcher et champ de gestionnaire, consultez la [référence des hooks](/docs/fr/hooks#configuration). Pour désactiver les hooks, consultez [`disableAllHooks`](#disableallhooks) ; pour limiter les hooks à ceux que votre organisation déploie, consultez [`allowManagedHooksOnly`](#allowmanagedhooksonly).

4425 4454 

4426<h3 id="httphookallowedenvvars">4455<h3 id="httphookallowedenvvars">

4427 `httpHookAllowedEnvVars`4456 `httpHookAllowedEnvVars`


4447 `workflowKeywordTriggerEnabled`4476 `workflowKeywordTriggerEnabled`

4448</h3>4477</h3>

4449 4478 

4450Choisissez si taper le mot-clé `ultracode` dans une invite déclenche un [workflow dynamique](/docs/fr/workflows#ask-for-a-workflow-in-your-prompt). Définissez-le à `false` pour taper le mot sans en déclencher un.4479Choisissez si taper le mot-clé `ultracode` dans un prompt déclenche un [workflow dynamique](/docs/fr/workflows#ask-for-a-workflow-in-your-prompt). Définissez-le à `false` pour taper le mot sans en déclencher un.

4451 4480 

4452* **Portée** : [`Any file`](#scopes). Apparaît dans `/config` comme **Ultracode keyword trigger**.4481* **Portée** : [`Any file`](#scopes). Apparaît dans `/config` comme **Ultracode keyword trigger**.

4453* **Type** : Booléen4482* **Type** : Booléen

4454 * `true` : taper `ultracode` dans une invite déclenche un workflow dynamique4483 * `true` : taper `ultracode` dans un prompt déclenche un workflow dynamique

4455 * `false` : vous pouvez taper le mot sans en déclencher un4484 * `false` : vous pouvez taper le mot sans en déclencher un

4456* **Valeur par défaut** : `true`4485* **Valeur par défaut** : `true`

4457 4486 


5938 * `"vertex"` : [Agent Platform de Google Cloud](/docs/fr/google-vertex-ai), anciennement Vertex AI5967 * `"vertex"` : [Agent Platform de Google Cloud](/docs/fr/google-vertex-ai), anciennement Vertex AI

5939 * `"foundry"` : [Microsoft Foundry](/docs/fr/microsoft-foundry)5968 * `"foundry"` : [Microsoft Foundry](/docs/fr/microsoft-foundry)

5940 * `"anthropicAws"` : [Claude Platform sur AWS](/docs/fr/claude-platform-on-aws)5969 * `"anthropicAws"` : [Claude Platform sur AWS](/docs/fr/claude-platform-on-aws)

5941 * `"mantle"` : le point de terminaison Amazon Bedrock [Mantle](/docs/fr/amazon-bedrock#use-the-mantle-endpoint). Une session qui [exécute Mantle aux côtés de l'API Invoke](/docs/fr/amazon-bedrock#run-mantle-alongside-the-invoke-api) utilise les deux fournisseurs, donc listez `"bedrock"` et `"mantle"` ensemble pour cela5970 * `"mantle"` : l'[endpoint Mantle](/docs/fr/amazon-bedrock#use-the-mantle-endpoint) d'Amazon Bedrock. Une session qui [exécute Mantle aux côtés de l'API Invoke](/docs/fr/amazon-bedrock#run-mantle-alongside-the-invoke-api) utilise les deux fournisseurs, donc listez `"bedrock"` et `"mantle"` ensemble pour cela

5942 * `"customEndpoint"` : l'API Anthropic ou l'API d'un fournisseur cloud envoyée à un autre serveur, tel qu'une [passerelle LLM](/docs/fr/llm-gateway) nommée par `ANTHROPIC_BASE_URL`, une variable `ANTHROPIC_*_BASE_URL` du fournisseur, ou une valeur `ANTHROPIC_FOUNDRY_RESOURCE` qui n'est pas un nom de ressource nu. Claude Code l'admet uniquement pour la valeur exacte qu'un bloc [`env`](#env) géré épingle5971 * `"customEndpoint"` : l'API Anthropic ou l'API d'un fournisseur cloud envoyée à un autre serveur, tel qu'une [passerelle LLM](/docs/fr/llm-gateway) nommée par `ANTHROPIC_BASE_URL`, une variable `ANTHROPIC_*_BASE_URL` du fournisseur, ou une valeur `ANTHROPIC_FOUNDRY_RESOURCE` qui n'est pas un nom de ressource nu. Claude Code l'admet uniquement pour la valeur exacte qu'un bloc [`env`](#env) géré épingle

5943 * `"gateway"` : une connexion [passerelle Cloud](/docs/fr/claude-apps-gateway)5972 * `"gateway"` : une connexion [passerelle Cloud](/docs/fr/claude-apps-gateway)

5944* **Défaut** : non défini, donc n'importe quel fournisseur peut être utilisé5973* **Défaut** : non défini, donc n'importe quel fournisseur peut être utilisé


5949}5978}

5950```5979```

5951 5980 

5952L'entrée de chaque fournisseur cloud signifie le propre service de ce fournisseur, y compris ses points de terminaison régionaux, FIPS et privés.5981L'entrée de chaque fournisseur cloud signifie le propre service de ce fournisseur, y compris ses endpoints régionaux, FIPS et privés.

5953 5982 

5954Une entrée que Claude Code ne reconnaît pas comme un nom de fournisseur est supprimée et signalée, et le reste de la liste reste appliqué. Avec une liste vide, ou une dont chaque entrée n'est pas reconnue, Claude Code refuse chaque fournisseur et ne démarre pas sur la machine.5983Une entrée que Claude Code ne reconnaît pas comme un nom de fournisseur est supprimée et signalée, et le reste de la liste reste appliqué. Avec une liste vide, ou une dont chaque entrée n'est pas reconnue, Claude Code refuse chaque fournisseur et ne démarre pas sur la machine.

5955 5984 

5956<h4 id="endpoints-that-need-a-pin-in-managed-env">5985<h4 id="endpoints-that-need-a-pin-in-managed-env">

5957 Points de terminaison qui nécessitent une épingle dans `env` géré5986 Endpoints qui nécessitent une épingle dans `env` géré

5958</h4>5987</h4>

5959 5988 

5960Une épingle est la valeur d'une variable de point de terminaison définie dans un bloc [`env`](#env) géré. Lorsqu'une session envoie le trafic d'un fournisseur ailleurs que vers le propre service de ce fournisseur, Claude Code l'admet uniquement si la valeur de la session est la même que l'épingle. Ces points de terminaison en ont besoin :5989Une épingle est la valeur d'une variable d'endpoint définie dans un bloc [`env`](#env) géré. Lorsqu'une session envoie le trafic d'un fournisseur ailleurs que vers le propre service de ce fournisseur, Claude Code l'admet uniquement si la valeur de la session est la même que l'épingle. Ces endpoints en ont besoin :

5961 5990 

5962* **Sessions `"customEndpoint"`** : la variable qui nomme l'hôte, telle que `ANTHROPIC_BASE_URL`5991* **Sessions `"customEndpoint"`** : la variable qui nomme l'hôte, telle que `ANTHROPIC_BASE_URL`

5963* **Amazon Bedrock** : les variables `AWS_ENDPOINT_URL`, `AWS_ENDPOINT_URL_BEDROCK` et `AWS_ENDPOINT_URL_BEDROCK_RUNTIME` du SDK AWS lorsqu'elles pointent en dehors du propre service de Bedrock. La session reste sous `"bedrock"` plutôt que sous `"customEndpoint"`5992* **Amazon Bedrock** : les variables `AWS_ENDPOINT_URL`, `AWS_ENDPOINT_URL_BEDROCK` et `AWS_ENDPOINT_URL_BEDROCK_RUNTIME` du SDK AWS lorsqu'elles pointent en dehors du propre service de Bedrock. La session reste sous `"bedrock"` plutôt que sous `"customEndpoint"`


5968* **Une source d'administrateur sur la machine définit une liste** : seuls les blocs `env` des sources d'administrateur de la machine comptent5997* **Une source d'administrateur sur la machine définit une liste** : seuls les blocs `env` des sources d'administrateur de la machine comptent

5969* **Seuls les paramètres gérés par le serveur définissent une liste** : une valeur `env` dans ces paramètres gérés par le serveur compte également5998* **Seuls les paramètres gérés par le serveur définissent une liste** : une valeur `env` dans ces paramètres gérés par le serveur compte également

5970 5999 

5971La liste ne juge pas les variables de credential et de tenancy d'un fournisseur cloud ou le chemin réseau, tels que `HTTPS_PROXY` et les paramètres de certificat. Définissez-les pour la flotte dans le bloc `env` géré.6000La liste ne juge pas les variables d'identifiants et de tenancy d'un fournisseur cloud ou le chemin réseau, tels que `HTTPS_PROXY` et les paramètres de certificat. Définissez-les pour la flotte dans le bloc `env` géré.

5972 6001 

5973<h3 id="apikeyhelper">6002<h3 id="apikeyhelper">

5974 `apiKeyHelper`6003 `apiKeyHelper`

5975</h3>6004</h3>

5976 6005 

5977Exécutez votre propre commande pour produire l'identifiant que Claude Code envoie avec les demandes de modèle. Claude Code exécute la commande via le shell système, `/bin/sh` sur macOS et Linux et `cmd` sur Windows, et envoie sa sortie comme en-têtes `X-Api-Key` et `Authorization: Bearer`. Utilisez-la pour les identifiants dynamiques ou rotatifs, tels que les jetons de courte durée récupérés d'un coffre.6006Exécutez votre propre commande pour produire l'identifiant que Claude Code envoie avec les requêtes de modèle. Claude Code exécute la commande via le shell système, `/bin/sh` sur macOS et Linux et `cmd` sur Windows, et envoie sa sortie comme en-têtes `X-Api-Key` et `Authorization: Bearer`. Utilisez-la pour les identifiants dynamiques ou rotatifs, tels que les jetons de courte durée récupérés d'un coffre.

5978 6007 

5979* **Portée** : [`Any file`](#scopes)6008* **Portée** : [`Any file`](#scopes)

5980* **Type** : chaîne, une ligne de commande shell6009* **Type** : chaîne, une ligne de commande shell


5989Claude Code met en cache la valeur et réexécute la commande dans ces cas :6018Claude Code met en cache la valeur et réexécute la commande dans ces cas :

5990 6019 

5991* Après la durée de vie du cache, cinq minutes par défaut ou l'intervalle que vous définissez avec [`CLAUDE_CODE_API_KEY_HELPER_TTL_MS`](/docs/fr/env-vars).6020* Après la durée de vie du cache, cinq minutes par défaut ou l'intervalle que vous définissez avec [`CLAUDE_CODE_API_KEY_HELPER_TTL_MS`](/docs/fr/env-vars).

5992* Lorsqu'une demande à l'API Anthropic, directement ou via une [passerelle LLM](/docs/fr/llm-gateway), échoue avec `401` ou `403`.6021* Lorsqu'une requête à l'API Anthropic, directement ou via une [passerelle LLM](/docs/fr/llm-gateway), échoue avec `401` ou `403`.

5993* Avant d'envoyer une demande à l'API Anthropic, directement ou via une passerelle LLM, lorsque la sortie mise en cache est un JWT qui a expiré après que l'aide l'ait produit. Nécessite Claude Code v2.1.246 ou ultérieur.6022* Avant d'envoyer une requête à l'API Anthropic, directement ou via une passerelle LLM, lorsque la sortie mise en cache est un JWT qui a expiré après que l'aide l'a produit. Nécessite Claude Code v2.1.246 ou ultérieur.

5994 6023 

5995Les deux derniers cas s'appliquent uniquement lorsque la sortie de l'aide est l'identifiant que Claude Code envoie et que `ANTHROPIC_AUTH_TOKEN` n'est pas défini.6024Les deux derniers cas s'appliquent uniquement lorsque la sortie de l'aide est l'identifiant que Claude Code envoie et que `ANTHROPIC_AUTH_TOKEN` n'est pas défini.

5996 6025 


6002 6031 

6003Exécutez votre propre commande, telle que `aws sso login`, pour actualiser les identifiants dans votre répertoire `.aws` lorsque ceux que Claude Code a pour [Amazon Bedrock](/docs/fr/amazon-bedrock) cessent de fonctionner. Claude Code vérifie d'abord les identifiants actuels par rapport à STS et n'exécute la commande que lorsque cette vérification échoue, puis lit le répertoire `.aws` actualisé.6032Exécutez votre propre commande, telle que `aws sso login`, pour actualiser les identifiants dans votre répertoire `.aws` lorsque ceux que Claude Code a pour [Amazon Bedrock](/docs/fr/amazon-bedrock) cessent de fonctionner. Claude Code vérifie d'abord les identifiants actuels par rapport à STS et n'exécute la commande que lorsque cette vérification échoue, puis lit le répertoire `.aws` actualisé.

6004 6033 

6034Lorsque la vérification échoue au même moment dans plusieurs processus Claude Code qui utilisent la même commande et les mêmes identifiants, tels que des terminaux ou des fenêtres d'IDE distincts, un seul processus exécute la commande et les autres attendent cette exécution au lieu de lancer la leur. Un processus qui a attendu 60 secondes avec une requête en attente exécute lui-même la commande. Pour désactiver ce comportement, définissez [`CLAUDE_CODE_DISABLE_AUTH_REFRESH_LOCK`](/docs/fr/env-vars) sur `1`.

6035 

6005* **Portée** : [`Any file`](#scopes)6036* **Portée** : [`Any file`](#scopes)

6006* **Type** : chaîne, une ligne de commande shell6037* **Type** : chaîne, une ligne de commande shell

6007* **Défaut** : non défini, donc Claude Code n'actualise pas les identifiants AWS pour vous6038* **Défaut** : non défini, donc Claude Code n'actualise pas les identifiants AWS pour vous


6061 6092 

6062Définissez l'URL de la passerelle à laquelle l'écran `/login` Cloud gateway se connecte, afin que les gens atteignent votre [passerelle cloud](/docs/fr/claude-apps-gateway) sans taper son adresse. L'écran n'a pas de champ URL : avec cette clé définie, il affiche l'URL de votre passerelle et se connecte lorsque la personne appuie sur Entrée ; sans elle, il leur dit de contacter leur administrateur IT.6093Définissez l'URL de la passerelle à laquelle l'écran `/login` Cloud gateway se connecte, afin que les gens atteignent votre [passerelle cloud](/docs/fr/claude-apps-gateway) sans taper son adresse. L'écran n'a pas de champ URL : avec cette clé définie, il affiche l'URL de votre passerelle et se connecte lorsque la personne appuie sur Entrée ; sans elle, il leur dit de contacter leur administrateur IT.

6063 6094 

6064L'une ou l'autre de ces clés ou `forceLoginMethod: "gateway"` rend la machine réservée à la passerelle, sauf pour les sessions qui sélectionnent un fournisseur cloud avec `CLAUDE_CODE_USE_*`. `/login` s'ouvre alors sur l'écran Cloud gateway sans sélecteur de méthode de connexion. Voir [La politique de l'administrateur nécessite une connexion à la passerelle Cloud](/docs/fr/errors#administrator-policy-requires-a-cloud-gateway-sign-in) pour ce qui se passe avec une connexion propriétaire restante ou une clé API. Définissez les deux clés afin que l'écran se connecte au lieu d'afficher une erreur.6095Cette clé ou `forceLoginMethod: "gateway"` rend la machine réservée à la passerelle, sauf pour les sessions qui sélectionnent un fournisseur cloud avec `CLAUDE_CODE_USE_*`. `/login` s'ouvre alors sur l'écran Cloud gateway sans sélecteur de méthode de connexion. Voir [La politique de l'administrateur nécessite une connexion à la passerelle Cloud](/docs/fr/errors#administrator-policy-requires-a-cloud-gateway-sign-in) pour ce qui se passe avec une connexion propriétaire restante ou une clé API. Définissez les deux clés afin que l'écran se connecte au lieu d'afficher une erreur.

6065 6096 

6066* **Portée** : [`Managed`](#scopes). Lisez uniquement à partir d'une source sur la machine : `managed-settings.json`, le plist macOS ou le registre HKLM Windows, ou un aide de politique. Claude Code l'ignore dans les paramètres HKCU et gérés par le serveur.6097* **Portée** : [`Managed`](#scopes). Lu uniquement à partir d'une source sur la machine : `managed-settings.json`, le plist macOS ou le registre HKLM Windows, ou un aide de politique. Claude Code l'ignore dans les paramètres HKCU et gérés par le serveur.

6067* **Type** : chaîne, une URL complète incluant le schéma6098* **Type** : chaîne, une URL complète incluant le schéma

6068* **Défaut** : non défini, donc l'écran Cloud gateway affiche une erreur indiquant aux gens de contacter leur administrateur IT6099* **Défaut** : non défini, donc l'écran Cloud gateway affiche une erreur indiquant aux gens de contacter leur administrateur IT

6069 6100 


6105 6136 

6106Sans cette clé, `/login` se connecte à n'importe quelle passerelle sur une adresse privée et rien d'autre. Avec elle, `/login` accepte également une passerelle à l'intérieur d'un bloc listé, sur une connexion directe uniquement. L'adresse propre de la machine sur cette connexion doit également être à l'intérieur du même bloc.6137Sans cette clé, `/login` se connecte à n'importe quelle passerelle sur une adresse privée et rien d'autre. Avec elle, `/login` accepte également une passerelle à l'intérieur d'un bloc listé, sur une connexion directe uniquement. L'adresse propre de la machine sur cette connexion doit également être à l'intérieur du même bloc.

6107 6138 

6108* **Portée** : [`Managed`](#scopes). Lisez uniquement à partir d'une source sur la machine : `managed-settings.json`, le plist macOS ou le registre HKLM Windows, ou un aide de politique. Claude Code l'ignore dans les paramètres HKCU et gérés par le serveur.6139* **Portée** : [`Managed`](#scopes). Lu uniquement à partir d'une source sur la machine : `managed-settings.json`, le plist macOS ou le registre HKLM Windows, ou un aide de politique. Claude Code l'ignore dans les paramètres HKCU et gérés par le serveur.

6109* **Type** : tableau de chaînes, au maximum quatre blocs IPv4 CIDR, chacun `/8` à `/32`, ne se chevauchant pas les uns les autres, et aucun ne chevauchant l'espace privé.6140* **Type** : tableau de chaînes, au maximum quatre blocs IPv4 CIDR, chacun `/8` à `/32`, ne se chevauchant pas les uns les autres, et aucun ne chevauchant l'espace privé.

6110* **Défaut** : non défini, donc `/login` accepte uniquement les passerelles sur des adresses privées6141* **Défaut** : non défini, donc `/login` accepte uniquement les passerelles sur des adresses privées

6111 6142 


6117 6148 

6118Remplacez la plage de documentation dans l'exemple par votre propre bloc. Claude Code refuse les plages de documentation, les plages que les clients VPN et NAT64 utilisent localement, et l'espace réservé à partir duquel aucun réseau n'est numéroté, tel que la multidiffusion.6149Remplacez la plage de documentation dans l'exemple par votre propre bloc. Claude Code refuse les plages de documentation, les plages que les clients VPN et NAT64 utilisent localement, et l'espace réservé à partir duquel aucun réseau n'est numéroté, tel que la multidiffusion.

6119 6150 

6120Si une entrée est invalide, ou la valeur n'est pas une liste de chaînes, `/login` nomme le problème et refuse chaque nouvelle connexion à la passerelle cloud sur la machine jusqu'à ce que vous corrigiez la valeur. Les connexions existantes continuent de fonctionner. Voir [Autoriser une passerelle sur l'espace d'adresses publiques que vous possédez](/docs/fr/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) pour les règles complètes et ce que les développeurs voient.6151Si une entrée est invalide, ou la valeur n'est pas une liste de chaînes, `/login` nomme le problème et refuse chaque nouvelle connexion à la passerelle sur la machine jusqu'à ce que vous corrigiez la valeur. Les connexions existantes continuent de fonctionner. Voir [Autoriser une passerelle sur l'espace d'adresses publiques que vous possédez](/docs/fr/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) pour les règles complètes et ce que les développeurs voient.

6121 6152 

6122<h3 id="gcpauthrefresh">6153<h3 id="gcpauthrefresh">

6123 `gcpAuthRefresh`6154 `gcpAuthRefresh`

6124</h3>6155</h3>

6125 6156 

6126Exécutez votre propre commande pour actualiser les identifiants Google Cloud Application Default lorsque Claude Code découvre qu'ils ont expiré ou ne peuvent pas être chargés, afin que les demandes [Agent Platform de Google Cloud](/docs/fr/google-vertex-ai) continuent de fonctionner sans que vous vous réauthentifiiez à la main.6157Exécutez votre propre commande pour actualiser les identifiants Google Cloud Application Default lorsque Claude Code découvre qu'ils ont expiré ou ne peuvent pas être chargés, afin que les requêtes [Agent Platform de Google Cloud](/docs/fr/google-vertex-ai) continuent de fonctionner sans que vous vous réauthentifiiez à la main.

6158 

6159Lorsque plusieurs processus Claude Code qui utilisent la même commande et les mêmes identifiants, tels que des terminaux ou des fenêtres d'IDE distincts, constatent au même moment que ceux-ci ont expiré, un seul processus exécute la commande et les autres attendent cette exécution au lieu de lancer la leur. Un processus qui a attendu 60 secondes avec une requête en attente exécute lui-même la commande. Pour désactiver ce comportement, définissez [`CLAUDE_CODE_DISABLE_AUTH_REFRESH_LOCK`](/docs/fr/env-vars) sur `1`.

6127 6160 

6128* **Portée** : [`Any file`](#scopes)6161* **Portée** : [`Any file`](#scopes)

6129* **Type** : chaîne, une ligne de commande shell6162* **Type** : chaîne, une ligne de commande shell

setup.md +16 −1

Details

316 Options d'installation avancées316 Options d'installation avancées

317</h2>317</h2>

318 318 

319Ces options sont destinées à l'épinglage de version, aux gestionnaires de paquets Linux, à npm et à la vérification de l'intégrité des binaires.319Ces options sont destinées à l'épinglage de version, aux gestionnaires de paquets Linux, à npm, au stockage réseau et à la vérification de l'intégrité des binaires.

320 320 

321<h3 id="install-a-specific-version">321<h3 id="install-a-specific-version">

322 Installer une version spécifique322 Installer une version spécifique


512 N'utilisez PAS `sudo npm install -g` car cela peut entraîner des problèmes de permissions et des risques de sécurité. Si vous rencontrez des erreurs de permissions, consultez le [dépannage des erreurs de permissions](/docs/fr/troubleshoot-install#permission-errors-during-installation).512 N'utilisez PAS `sudo npm install -g` car cela peut entraîner des problèmes de permissions et des risques de sécurité. Si vous rencontrez des erreurs de permissions, consultez le [dépannage des erreurs de permissions](/docs/fr/troubleshoot-install#permission-errors-during-installation).

513</Warning>513</Warning>

514 514 

515<h3 id="install-on-network-storage">

516 Installer sur un stockage réseau

517</h3>

518 

519Une session en cours lit des parties de l'exécutable Claude Code depuis le disque pendant qu'elle travaille, et pas seulement au démarrage. Si le fichier devient illisible en cours de session, par exemple parce qu'il a été tronqué ou supprimé sur le stockage réseau, la session plante. Sous Linux, votre shell signale cela comme une `Bus error`.

520 

521Lorsque les répertoires personnels se trouvent sur un stockage réseau, comme un répertoire personnel NFS monté sur plusieurs machines, organisez les installations de sorte que l'exécutable de chaque session reste lisible jusqu'à la fin de la session :

522 

523* **Installer sur le disque local** : placez le binaire sur le système de fichiers local de chaque machine, par exemple avec un [gestionnaire de paquets Linux](#install-with-linux-package-managers) ou vos propres outils de déploiement. Un préfixe npm par utilisateur et le répertoire par défaut `~/.local/share/claude/versions/` de l'installateur natif se trouvent tous deux dans le répertoire personnel.

524* **Conserver chaque version dans son propre répertoire** : mettre à niveau une installation npm sur place avec `npm install -g` supprime le binaire précédent. Sur un stockage partagé par plusieurs machines, cela supprime le fichier que les sessions des autres machines exécutent encore. Installez chaque nouvelle version à côté des anciennes et faites-y basculer les utilisateurs.

525* **Supprimer une ancienne version uniquement lorsqu'aucune machine ne peut encore l'exécuter** : une machine ne peut pas voir les processus en cours d'exécution sur d'autres machines, donc vérifier les processus en cours avant de supprimer ne suffit pas.

526* **Désactiver les mises à jour propres à Claude Code** : définissez [`DISABLE_UPDATES`](/docs/fr/env-vars) et installez les nouvelles versions avec vos propres outils. Sinon, une mise à jour automatique d'une installation npm sur une machine exécute la même mise à niveau sur place et supprime le binaire que les sessions des autres machines exécutent. Définir `DISABLE_AUTOUPDATER` seul ne suffit pas, car les utilisateurs peuvent toujours exécuter `claude update` et `claude install`. Consultez [Désactiver les mises à jour automatiques](#disable-auto-updates).

527 

528L'installateur natif supprime de lui-même les anciennes versions de `~/.local/share/claude/versions/`, ce qui importe lorsque ce répertoire se trouve sur un stockage partagé. Outre la version vers laquelle pointe le lanceur et toute version qu'une session sur la même machine exécute, il conserve les deux versions les plus récentes et supprime les autres. Une session sur une autre machine qui exécute une version supprimée perd son binaire. Avec un [lanceur personnalisé](#auto-updates), Claude Code conserve chaque version installée et vous laisse le soin du nettoyage.

529 

515<h3 id="binary-integrity-and-code-signing">530<h3 id="binary-integrity-and-code-signing">

516 Intégrité des binaires et signature du code531 Intégrité des binaires et signature du code

517</h3>532</h3>

skills.md +23 −5

Details

56 56 

57Claude modifie le fichier enregistré uniquement lorsqu'il a mal dirigé une exécution, comme une commande qui a échoué ou une étape manquante, afin que vous puissiez valider le fichier sans diffs par session. Avant v2.1.205, la compétence groupée a dit à Claude de plier tout ce qu'une exécution a appris, ce qui a causé des conflits de fusion fréquents.57Claude modifie le fichier enregistré uniquement lorsqu'il a mal dirigé une exécution, comme une commande qui a échoué ou une étape manquante, afin que vous puissiez valider le fichier sans diffs par session. Avant v2.1.205, la compétence groupée a dit à Claude de plier tout ce qu'une exécution a appris, ce qui a causé des conflits de fusion fréquents.

58 58 

59<h3 id="run-your-checks-before-each-commit">

60 Exécuter vos vérifications avant chaque commit

61</h3>

62 

63Lorsqu'une session démarre avec un skill nommé `verify` ou `simplify` en place, les instructions de commit de Claude Code demandent à Claude de l'exécuter juste avant chaque commit, sauf pour les modifications de documentation ou de tests. Cela nécessite Claude Code v2.1.286 ou version ultérieure. Claude reçoit cette instruction lorsque ces conditions sont réunies au démarrage de la session :

64 

65* **Emplacement** : le skill est chargé depuis l'[emplacement](#where-skills-live) entreprise, personnel, projet ou répertoire supplémentaire, ou depuis un fichier `.claude/commands/` portant ce nom. La recette que `/verify` enregistre à la racine de votre référentiel est un skill de projet, elle compte donc. Les `/verify` et `/simplify` fournis, les skills de plugin et les skills de votre compte claude.ai ne comptent pas.

66* **Invocation** : Claude peut invoquer le skill. Si vous avez [empêché Claude de l'invoquer](#control-who-invokes-a-skill), par exemple avec `disable-model-invocation: true`, Claude ne reçoit pas l'instruction.

67* **Instructions Git** : vous n'avez pas désactivé [`includeGitInstructions`](/docs/fr/settings-reference#includegitinstructions). Le désactiver supprime cette instruction ainsi que le reste des instructions intégrées de commit et de PR.

68 

59<h3 id="work-on-claude-api-projects">69<h3 id="work-on-claude-api-projects">

60 Travailler sur les projets Claude API70 Travailler sur les projets Claude API

61</h3>71</h3>


290 300 

291Claude Code applique deux règles au frontmatter d'une skill synchronisée :301Claude Code applique deux règles au frontmatter d'une skill synchronisée :

292 302 

293* 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.303* Le frontmatter s'applique dans chaque type de session, donc une autorisation `allowed-tools` passe par le [flux de permission](/docs/fr/permissions) normal. Si votre organisation définit `allowManagedPermissionRulesOnly`, l'autorisation [ne s'applique pas](#when-only-managed-permission-rules-apply).

294* 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.304* 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.

295 305 

296<h4 id="how-claude-code-handles-the-body-of-a-synced-skill">306<h4 id="how-claude-code-handles-the-body-of-a-synced-skill">


603 613 

604Le champ `allowed-tools` accorde la permission pour les outils listés lors du tour qui invoque la compétence, afin que Claude puisse les utiliser sans vous demander l'approbation. La subvention s'efface lorsque vous envoyez votre message suivant, même si le contenu de la compétence [reste en contexte](#skill-content-lifecycle) ; invoquer la compétence à nouveau réapplique pour ce tour. Il ne restreint pas les outils disponibles : chaque outil reste appelable, et vos [paramètres de permission](/docs/fr/permissions) gouvernent toujours les outils qui ne sont pas listés. Pour pré-approuver les outils pour la session entière plutôt qu'un seul tour, ajoutez plutôt des règles d'autorisation à ces paramètres de permission.614Le champ `allowed-tools` accorde la permission pour les outils listés lors du tour qui invoque la compétence, afin que Claude puisse les utiliser sans vous demander l'approbation. La subvention s'efface lorsque vous envoyez votre message suivant, même si le contenu de la compétence [reste en contexte](#skill-content-lifecycle) ; invoquer la compétence à nouveau réapplique pour ce tour. Il ne restreint pas les outils disponibles : chaque outil reste appelable, et vos [paramètres de permission](/docs/fr/permissions) gouvernent toujours les outils qui ne sont pas listés. Pour pré-approuver les outils pour la session entière plutôt qu'un seul tour, ajoutez plutôt des règles d'autorisation à ces paramètres de permission.

605 615 

606La confiance de l'espace de travail ne contrôle pas ce champ. Claude Code applique l'`allowed-tools` d'une compétence de projet chaque fois que vous ou Claude invoquez la compétence, y compris dans une exécution `-p` dans un dossier que vous n'avez jamais approuvé. Une compétence peut se donner un accès aux outils très large, donc examinez l'`allowed-tools` des compétences archivées dans un référentiel avant d'exécuter Claude Code là.616La confiance de l'espace de travail ne conditionne pas ce champ. Claude Code applique l'`allowed-tools` d'un skill de projet même dans une exécution `-p` dans un dossier que vous n'avez jamais approuvé. Un skill peut s'octroyer un accès très large aux outils, donc examinez l'`allowed-tools` des skills versionnés dans un dépôt avant d'y exécuter Claude Code. Pour ignorer ce champ dans les skills de dépôt à l'échelle de votre organisation, voir [Quand seules les règles de permission gérées s'appliquent](#when-only-managed-permission-rules-apply).

607 617 

608Cette compétence permet à Claude d'exécuter les commandes git sans approbation par utilisation chaque fois que vous l'invoquez :618Cette compétence permet à Claude d'exécuter les commandes git sans approbation par utilisation chaque fois que vous l'invoquez :

609 619 


618 628 

619Pour supprimer les outils du pool disponible de Claude tandis qu'une compétence est active, listez-les dans `disallowed-tools` dans le frontmatter de la compétence. 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. Pour bloquer les outils à travers toutes les compétences et invites, ajoutez des règles de refus dans vos [paramètres de permission](/docs/fr/permissions).629Pour supprimer les outils du pool disponible de Claude tandis qu'une compétence est active, listez-les dans `disallowed-tools` dans le frontmatter de la compétence. 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. Pour bloquer les outils à travers toutes les compétences et invites, ajoutez des règles de refus dans vos [paramètres de permission](/docs/fr/permissions).

620 630 

631<h4 id="when-only-managed-permission-rules-apply">

632 Quand seules les règles de permission gérées s'appliquent

633</h4>

634 

635Lorsque votre organisation définit `allowManagedPermissionRulesOnly` dans les paramètres gérés, Claude Code ignore `allowed-tools` dans les skills de projet et personnels ainsi que dans les [autres sources listées dans l'entrée de ce paramètre](/docs/fr/settings-reference#allowmanagedpermissionrulesonly). Cela nécessite Claude Code v2.1.282 ou ultérieur.

636 

637Les outils listés par un skill concerné passent plutôt par les règles gérées de votre organisation et la demande de permission habituelle. Exécutez `/status` pour lister chaque skill dont Claude Code a ignoré l'`allowed-tools` jusqu'ici dans la session. Une commande injectée dans le skill qu'aucune règle gérée n'autorise suit les [Vérifications de permission sur les commandes injectées](#permission-checks-on-injected-commands).

638 

621<h3 id="pass-arguments-to-skills">639<h3 id="pass-arguments-to-skills">

622 Passer des arguments aux compétences640 Passer des arguments aux compétences

623</h3>641</h3>


766 784 

767Les commandes injectées ne demandent jamais la permission pendant que la compétence s'affiche. Claude Code vérifie chacune d'elles par rapport à vos [règles de permission](/docs/fr/permissions) en premier. Une commande qu'une règle de refus correspond abandonne l'invocation avec `Shell command permission check failed for pattern "..."`.785Les commandes injectées ne demandent jamais la permission pendant que la compétence s'affiche. Claude Code vérifie chacune d'elles par rapport à vos [règles de permission](/docs/fr/permissions) en premier. Une commande qu'une règle de refus correspond abandonne l'invocation avec `Shell command permission check failed for pattern "..."`.

768 786 

769En dehors du [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode), lorsque la vérification des permissions d'une commande retourne autre chose que l'autorisation, Claude Code abandonne l'invocation avec la même erreur. Cela inclut une règle qui vous demanderait normalement. Pour empêcher une commande non appariée d'abandonner ici, pré-approuvez-la avec [`allowed-tools`](#pre-approve-tools-for-a-skill). Les règles de refus et d'ask remplacent toujours `allowed-tools`. Voir [Manage permissions](/docs/fr/permissions#manage-permissions).787En dehors du [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode), lorsque la vérification des permissions d'une commande retourne autre chose qu'une autorisation, Claude Code abandonne l'invocation avec la même erreur. Cela inclut une règle qui vous demanderait normalement. Pour empêcher une commande non appariée d'abandonner ici, pré-approuvez-la avec [`allowed-tools`](#pre-approve-tools-for-a-skill). Si votre organisation restreint les règles de permission aux paramètres gérés, voir [When only managed permission rules apply](#when-only-managed-permission-rules-apply). Les règles de refus et d'ask remplacent toujours `allowed-tools`. Voir [Manage permissions](/docs/fr/permissions#manage-permissions).

770 788 

771En mode auto, une commande qui aurait autrement besoin de votre approbation n'abandonne pas l'invocation. La compétence se charge avec une instruction indiquant à Claude d'exécuter d'abord la commande, et l'appel propre de Claude passe ensuite par les [vérifications habituelles du mode auto](/docs/fr/permission-modes#how-the-classifier-evaluates-actions). L'invocation abandonne toujours dans une [compétence forkée](#run-skills-in-a-subagent) qui définit `agent`, et dans une session où Claude n'a pas l'[outil shell qui exécute les commandes injectées](#how-injected-commands-run).789En mode auto, une commande qui aurait autrement besoin de votre approbation n'abandonne pas l'invocation. La compétence se charge avec une instruction indiquant à Claude d'exécuter d'abord la commande, et l'appel propre de Claude passe ensuite par les [vérifications habituelles du mode auto](/docs/fr/permission-modes#how-the-classifier-evaluates-actions). L'invocation abandonne toujours dans une [compétence forkée](#run-skills-in-a-subagent) qui définit `agent`, et dans une session où Claude n'a pas l'[outil shell qui exécute les commandes injectées](#how-injected-commands-run).

772 790 


840 Restreindre l'accès aux compétences de Claude858 Restreindre l'accès aux compétences de Claude

841</h3>859</h3>

842 860 

843Par défaut, Claude peut invoquer n'importe quelle compétence qui n'a pas `disable-model-invocation: true` défini. Les compétences qui définissent `allowed-tools` accordent à Claude l'accès à ces outils sans approbation par utilisation pendant le tour qui invoque la compétence ; l'octroi s'efface lorsque vous envoyez votre message suivant. Vos [paramètres de permission](/docs/fr/permissions) régissent toujours le comportement d'approbation de base pour tous les autres outils. Quelques commandes intégrées sont également disponibles via l'outil Skill, notamment `/init` et `/security-review`. D'autres commandes intégrées telles que `/compact` ne le sont pas.861Par défaut, Claude peut invoquer n'importe quel skill qui n'a pas `disable-model-invocation: true` défini. Les skills qui définissent [`allowed-tools`](#pre-approve-tools-for-a-skill) accordent à Claude l'accès à ces outils sans approbation par utilisation pendant le tour qui invoque le skill ; l'octroi s'efface lorsque vous envoyez votre message suivant. Vos [paramètres de permission](/docs/fr/permissions) régissent toujours le comportement d'approbation de base pour tous les autres outils. Quelques commandes intégrées sont également disponibles via l'outil Skill, notamment `/init` et `/security-review`. D'autres commandes intégrées telles que `/compact` ne le sont pas.

844 862 

845Trois façons de contrôler les compétences que Claude peut invoquer :863Trois façons de contrôler les compétences que Claude peut invoquer :

846 864 


953 Exécuter des évaluations avec skill-creator971 Exécuter des évaluations avec skill-creator

954</h3>972</h3>

955 973 

956Le [plugin `skill-creator`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/skill-creator) automatise la boucle de comparaison à l'intérieur de Claude Code. Installez-le depuis la marketplace officielle :974Le [plugin `skill-creator`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/skill-creator) automatise la boucle de comparaison à l'intérieur de Claude Code. Dans l'extension VS Code ou l'application de bureau, installez-le depuis la marketplace officielle en suivant [Installer un plugin](/docs/fr/plugins/install#install-a-plugin). Dans un terminal, démarrez Claude Code en exécutant `claude`, puis saisissez ceci à son invite :

957 975 

958```text theme={null}976```text theme={null}

959/plugin install skill-creator@claude-plugins-official977/plugin install skill-creator@claude-plugins-official

sub-agents.md +66 −59

Details

38 <Tab title="Explore">38 <Tab title="Explore">

39 Un agent rapide et en lecture seule optimisé pour la recherche et l'analyse de bases de code.39 Un agent rapide et en lecture seule optimisé pour la recherche et l'analyse de bases de code.

40 40 

41 * **Modèle** : hérité de la conversation principale, limité à Opus sur l'API Claude, donc Explore ne s'exécute jamais sur un modèle plus coûteux que celui que vous avez déjà choisi pour la session, sauf si vous définissez `CLAUDE_CODE_SUBAGENT_MODEL` et [le forcez sur chaque sous-agent](#run-every-subagent-on-one-model)41 * **Modèle** : le modèle de la conversation principale. Lorsque la conversation principale s'exécute sur Fable, le modèle d'Explore dépend de votre mode de connexion :

42 * Avec un abonnement Claude, un compte Anthropic Console ou une [passerelle LLM](/docs/fr/llm-gateway) atteinte via `ANTHROPIC_BASE_URL`, Explore s'exécute sur le modèle Opus vers lequel l'[alias `opus`](/docs/fr/model-config#model-aliases) est résolu.

43 * Sur Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, [Claude Platform on AWS](/docs/fr/claude-platform-on-aws) ou une [passerelle Claude apps](/docs/fr/claude-apps-gateway), Explore reste sur le modèle de la conversation principale.

42 * **Outils** : outils en lecture seule ; Write et Edit sont refusés44 * **Outils** : outils en lecture seule ; Write et Edit sont refusés

43 * **Objectif** : découverte de fichiers, recherche de code, exploration de base de code45 * **Objectif** : découverte de fichiers, recherche de code, exploration de base de code

44 46 

45 À partir de la v2.1.198, Explore hérite du modèle de la conversation principale au lieu de toujours s'exécuter sur Haiku. Sur l'API Claude, le modèle hérité est limité à Opus : une conversation principale sur un niveau supérieur exécute Explore sur Opus, et une conversation principale sur Sonnet ou Haiku exécute Explore sur ce même modèle. Sur tout autre fournisseur, tel que [Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, ou Claude Platform on AWS](/docs/fr/third-party-integrations), Explore hérite directement du modèle de la conversation principale.47 Un [sous-agent utilisateur ou projet](#choose-the-subagent-scope) nommé `Explore` remplace le sous-agent intégré et conserve son propre champ `model`, donc définissez-en un avec `model: haiku` pour exécuter l'exploration sur un modèle moins coûteux. Pour forcer un seul modèle sur chaque sous-agent, Explore compris, consultez [Exécuter chaque sous-agent sur un modèle](#run-every-subagent-on-one-model).

46 

47 Un [sous-agent utilisateur ou projet](#choose-the-subagent-scope) nommé `Explore` remplace le sous-agent intégré et conserve son propre champ `model`, donc définissez-en un avec `model: haiku` pour maintenir l'exploration sur un modèle moins coûteux.

48 48 

49 Claude délègue à Explore lorsqu'il doit rechercher ou comprendre une base de code sans apporter de modifications. Cela garde les résultats d'exploration en dehors du contexte de votre conversation principale.49 Claude délègue à Explore lorsqu'il doit rechercher ou comprendre une base de code sans apporter de modifications. Cela garde les résultats d'exploration en dehors du contexte de votre conversation principale.

50 50 


171| Emplacement | Portée | Priorité | Comment créer |171| Emplacement | Portée | Priorité | Comment créer |

172| :- | :- | :- | :- |172| :- | :- | :- | :- |

173| Paramètres gérés | À l'échelle de l'organisation | 1 (la plus élevée) | Déployé via [paramètres gérés](/docs/fr/settings) |173| Paramètres gérés | À l'échelle de l'organisation | 1 (la plus élevée) | Déployé via [paramètres gérés](/docs/fr/settings) |

174| Drapeau CLI `--agents` | Session actuelle | 2 | Passer JSON lors du lancement de Claude Code |174| Flag CLI `--agents` | Session actuelle | 2 | Passer JSON lors du lancement de Claude Code |

175| `.claude/agents/` | Projet actuel | 3 | Demander à Claude, ou créer le fichier manuellement |175| `.claude/agents/` | Projet actuel | 3 | Demander à Claude, ou créer le fichier manuellement |

176| `~/.claude/agents/` | Tous vos projets | 4 | Demander à Claude, ou créer le fichier manuellement |176| `~/.claude/agents/` | Tous vos projets | 4 | Demander à Claude, ou créer le fichier manuellement |

177| Répertoire `agents/` du plugin | Où le plugin est activé | 5 (la plus basse) | Installé avec les [plugins](/docs/fr/plugins/overview) |177| Répertoire `agents/` du plugin | Où le plugin est activé | 5 (la plus basse) | Installé avec les [plugins](/docs/fr/plugins/overview) |

178 178 

179**Les sous-agents de projet** (`.claude/agents/`) sont idéaux pour les sous-agents spécifiques à une base de code. Enregistrez-les dans le contrôle de version pour que votre équipe puisse les utiliser et les améliorer de manière collaborative.179**Les sous-agents de projet** (`.claude/agents/`) sont idéaux pour les sous-agents spécifiques à une base de code. Enregistrez-les dans le contrôle de version pour que votre équipe puisse les utiliser et les améliorer de manière collaborative.

180 180 

181Les sous-agents de projet sont découverts en remontant à partir du répertoire de travail actuel, donc chaque `.claude/agents/` entre celui-ci et la racine du référentiel est analysé. Lorsque plusieurs de ces répertoires imbriqués définissent le même `name`, Claude Code utilise la définition la plus proche du répertoire de travail.181Les sous-agents de projet sont découverts en remontant à partir du répertoire de travail actuel, donc chaque `.claude/agents/` entre celui-ci et la racine du dépôt est analysé. Lorsque plusieurs de ces répertoires imbriqués définissent le même `name`, Claude Code utilise la définition la plus proche du répertoire de travail.

182 182 

183Lorsque vous ajoutez un répertoire avec `--add-dir` ou `/add-dir`, Claude Code charge également son dossier `.claude/agents/`, aux côtés de vos sous-agents de projet. Consultez [Répertoires supplémentaires](/docs/fr/permissions#additional-directories-grant-file-access-not-configuration) pour voir quels autres types de configuration se chargent à partir de `--add-dir`. Pour partager les sous-agents entre les projets sans `--add-dir`, utilisez `~/.claude/agents/` ou un [plugin](/docs/fr/plugins/overview).183Lorsque vous ajoutez un répertoire avec `--add-dir` ou `/add-dir`, Claude Code charge également son dossier `.claude/agents/`, aux côtés de vos sous-agents de projet. Consultez [Répertoires supplémentaires](/docs/fr/permissions#additional-directories-grant-file-access-not-configuration) pour voir quels autres types de configuration se chargent à partir de `--add-dir`. Pour partager les sous-agents entre les projets sans `--add-dir`, utilisez `~/.claude/agents/` ou un [plugin](/docs/fr/plugins/overview).

184 184 


186 186 

187Claude Code analyse `.claude/agents/` et `~/.claude/agents/` de manière récursive, vous pouvez donc organiser les définitions dans des sous-dossiers tels que `agents/review/` ou `agents/research/`. Le chemin du sous-répertoire n'affecte pas la façon dont un sous-agent est identifié ou invoqué, car l'identité provient uniquement du champ frontmatter `name`.187Claude Code analyse `.claude/agents/` et `~/.claude/agents/` de manière récursive, vous pouvez donc organiser les définitions dans des sous-dossiers tels que `agents/review/` ou `agents/research/`. Le chemin du sous-répertoire n'affecte pas la façon dont un sous-agent est identifié ou invoqué, car l'identité provient uniquement du champ frontmatter `name`.

188 188 

189Gardez les valeurs `name` uniques dans tout l'arborescence : si deux fichiers dans le même répertoire `.claude/agents/`, y compris ses sous-dossiers, déclarent le même nom, Claude Code en charge un seul, choisi par l'ordre de lecture du système de fichiers plutôt que par une précédence documentée. Entre les répertoires de projet imbriqués, la définition la plus proche du répertoire de travail gagne, comme décrit ci-dessus. La vérification de configuration [`/doctor`](/docs/fr/commands#all-commands) signale les fichiers dans le même répertoire qui partagent un nom et propose de renommer ou de supprimer tous sauf un. Avant la v2.1.205, `/doctor` ouvrait un écran de diagnostics qui listait les doublons et montrait quelle définition était active.189Gardez les valeurs `name` uniques dans toute l'arborescence : si deux fichiers dans le même répertoire `.claude/agents/`, y compris ses sous-dossiers, déclarent le même nom, Claude Code en charge un seul, choisi par l'ordre de lecture du système de fichiers plutôt que par une priorité documentée. Entre les répertoires de projet imbriqués, la définition la plus proche du répertoire de travail l'emporte, comme décrit ci-dessus. La vérification de configuration [`/doctor`](/docs/fr/commands#all-commands) signale les fichiers dans le même répertoire qui partagent un nom et propose de renommer ou de supprimer tous sauf un. Avant la v2.1.205, `/doctor` ouvrait un écran de diagnostics qui listait les doublons et montrait quelle définition était active.

190 190 

191Les répertoires `agents/` des plugins sont également analysés de manière récursive. Contrairement aux portées de projet et utilisateur, un sous-dossier à l'intérieur du répertoire `agents/` d'un plugin devient partie de l'[identifiant limité](#invoke-subagents-explicitly) : un fichier à `agents/review/security.md` dans le plugin `my-plugin` s'enregistre comme `my-plugin:review:security`.191Les répertoires `agents/` des plugins sont également analysés de manière récursive. Contrairement aux portées de projet et utilisateur, un sous-dossier à l'intérieur du répertoire `agents/` d'un plugin devient partie de l'[identifiant limité](#invoke-subagents-explicitly) : un fichier à `agents/review/security.md` dans le plugin `my-plugin` s'enregistre comme `my-plugin:review:security`.

192 192 


234 234 

235Chaque clé de niveau supérieur dans le JSON est le nom d'un agent, et sa valeur est la définition de cet agent. Ne commencez pas un nom par `-`. Une définition prend ces champs :235Chaque clé de niveau supérieur dans le JSON est le nom d'un agent, et sa valeur est la définition de cet agent. Ne commencez pas un nom par `-`. Une définition prend ces champs :

236 236 

237* **`prompt`** : l'invite système de l'agent, équivalente au corps markdown dans les sous-agents basés sur fichier. `prompt` peut être vide. Si vous sélectionnez un agent avec un `prompt` vide et aucun champ `memory` comme agent de la session avec `--agent`, l'invite système de la session reste inchangée. Un `prompt` vide nécessite Claude Code v2.1.281 ou ultérieur.237* **`prompt`** : le prompt système de l'agent, équivalent au corps markdown dans les sous-agents basés sur fichier. `prompt` peut être vide. Si vous sélectionnez un agent avec un `prompt` vide et aucun champ `memory` comme agent de la session avec `--agent`, le prompt système de la session reste inchangé. Un `prompt` vide nécessite Claude Code v2.1.281 ou ultérieur.

238* **[Champs de frontmatter](#supported-frontmatter-fields)** : `description`, `tools`, `disallowedTools`, `model`, `permissionMode`, `mcpServers`, `hooks`, `maxTurns`, `skills`, `initialPrompt`, `memory`, `effort`, `background`, `omitClaudeMd` et `isolation`.238* **[Champs de frontmatter](#supported-frontmatter-fields)** : `description`, `tools`, `disallowedTools`, `model`, `permissionMode`, `mcpServers`, `hooks`, `maxTurns`, `skills`, `initialPrompt`, `memory`, `effort`, `background`, `omitClaudeMd` et `isolation`.

239* **Champs ignorés** : `color` et `experimental` ne sont pas acceptés ici et sont ignorés plutôt que rejetés.239* **Champs ignorés** : `color` et `experimental` ne sont pas acceptés ici et sont ignorés plutôt que rejetés.

240 240 

241Pour savoir ce que Claude Code fait avec une valeur qu'il ne peut pas charger, et les drapeaux et variables d'environnement qui ignorent cette vérification, consultez [`Invalid --agents configuration`](/docs/fr/errors#invalid-agents-configuration).241Pour savoir ce que Claude Code fait avec une valeur qu'il ne peut pas charger, et les flags et variables d'environnement qui ignorent cette vérification, consultez [`Invalid --agents configuration`](/docs/fr/errors#invalid-agents-configuration).

242 242 

243**Les sous-agents gérés** sont déployés par les administrateurs de l'organisation. Placez les fichiers markdown dans `.claude/agents/` à l'intérieur du [répertoire des paramètres gérés](/docs/fr/managed-settings#delivery-mechanisms), en utilisant le même format de frontmatter que les sous-agents de projet et utilisateur. Les définitions gérées prennent précédence sur les sous-agents de projet et utilisateur portant le même nom.243**Les sous-agents gérés** sont déployés par les administrateurs de l'organisation. Placez les fichiers markdown dans `.claude/agents/` à l'intérieur du [répertoire des paramètres gérés](/docs/fr/managed-settings#delivery-mechanisms), en utilisant le même format de frontmatter que les sous-agents de projet et utilisateur. Les définitions gérées ont priorité sur les sous-agents de projet et utilisateur portant le même nom.

244 244 

245**Les sous-agents de plugin** proviennent des [plugins](/docs/fr/plugins/overview) que vous avez installés. Ils se chargent automatiquement aux côtés de vos sous-agents personnalisés et apparaissent dans la saisie semi-automatique @-mention sous leur nom limité. Consultez la [référence des composants de plugin](/docs/fr/plugins/components#agents) pour plus de détails sur la création de sous-agents de plugin.245**Les sous-agents de plugin** proviennent des [plugins](/docs/fr/plugins/overview) que vous avez installés. Ils se chargent automatiquement aux côtés de vos sous-agents personnalisés et apparaissent dans la saisie semi-automatique @-mention sous leur nom limité. Consultez la [référence des composants de plugin](/docs/fr/plugins/components#agents) pour plus de détails sur la création de sous-agents de plugin.

246 246 

247<Note>247<Note>

248 Pour des raisons de sécurité, les sous-agents de plugin ne prennent pas en charge les champs frontmatter `hooks`, `mcpServers` ou `permissionMode`. Ces champs sont ignorés lors du chargement des agents à partir d'un plugin. Si vous en avez besoin, copiez le fichier d'agent dans `.claude/agents/` ou `~/.claude/agents/`. Vous pouvez également ajouter des règles à [`permissions.allow`](/docs/fr/settings-reference#permissions-allow) dans `settings.json` ou `settings.local.json`, mais ces règles s'appliquent à l'ensemble de la session, pas seulement au sous-agent du plugin.248 Pour des raisons de sécurité, les sous-agents de plugin ne prennent pas en charge les champs frontmatter `hooks`, `mcpServers` ou `permissionMode`. Ces champs sont ignorés lors du chargement des agents à partir d'un plugin. Si vous en avez besoin, copiez le fichier d'agent dans `.claude/agents/` ou `~/.claude/agents/`. Vous pouvez également ajouter des règles à [`permissions.allow`](/docs/fr/settings-reference#permissions-allow) dans `settings.json` ou `settings.local.json`, mais ces règles s'appliquent à l'ensemble de la session, pas seulement au sous-agent du plugin.

249 

250 Si vous êtes l'auteur du plugin, fournissez plutôt les hooks dans le fichier [`hooks/hooks.json`](/docs/fr/plugins/components#hooks) du plugin et les serveurs MCP dans son [`.mcp.json`](/docs/fr/plugins/components#mcp-servers). Ils s'appliquent dès que le plugin est activé, et pas seulement à l'intérieur du sous-agent.

249</Note>251</Note>

250 252 

251Les définitions de sous-agent de l'une de ces portées sont également disponibles pour les [équipes d'agents](/docs/fr/agent-teams#use-subagent-definitions-for-teammates) : lors du lancement d'un coéquipier, vous pouvez référencer un type de sous-agent, et Claude Code applique des parties de cette définition au coéquipier. Consultez [équipes d'agents](/docs/fr/agent-teams#use-subagent-definitions-for-teammates) pour voir quelles parties s'appliquent dans chaque mode d'affichage.253Les définitions de sous-agent de l'une de ces portées sont également disponibles pour les [équipes d'agents](/docs/fr/agent-teams#use-subagent-definitions-for-teammates) : lors du lancement d'un coéquipier, vous pouvez référencer un type de sous-agent, et Claude Code applique des parties de cette définition au coéquipier. Consultez [équipes d'agents](/docs/fr/agent-teams#use-subagent-definitions-for-teammates) pour voir quelles parties s'appliquent dans chaque mode d'affichage.


254 Écrire des fichiers de sous-agent256 Écrire des fichiers de sous-agent

255</h3>257</h3>

256 258 

257Les fichiers de sous-agent utilisent du frontmatter YAML pour la configuration, suivi de l'invite système en Markdown :259Les fichiers de sous-agent utilisent du frontmatter YAML pour la configuration, suivi du prompt système en Markdown :

258 260 

259<Note>261<Note>

260 Claude Code surveille `~/.claude/agents/` et `.claude/agents/`. Lorsque vous ajoutez ou modifiez un fichier de sous-agent sur le disque, ou demandez à Claude d'en écrire un pour vous, Claude Code détecte le changement en quelques secondes et la prochaine délégation utilise la définition mise à jour, sans redémarrage nécessaire.262 Claude Code surveille `~/.claude/agents/` et `.claude/agents/`. Lorsque vous ajoutez ou modifiez un fichier de sous-agent sur le disque, ou demandez à Claude d'en écrire un pour vous, Claude Code détecte le changement en quelques secondes et la prochaine délégation utilise la définition mise à jour, sans redémarrage nécessaire.


278specific, actionable feedback on quality, security, and best practices.280specific, actionable feedback on quality, security, and best practices.

279```281```

280 282 

281Le frontmatter définit les métadonnées et la configuration du sous-agent. Le corps devient l'invite système qui guide le comportement du sous-agent. Les sous-agents reçoivent uniquement cette invite système plus les détails d'environnement de base comme le répertoire de travail, pas l'invite système de Claude Code.283Le frontmatter définit les métadonnées et la configuration du sous-agent. Le corps devient le prompt système qui guide le comportement du sous-agent. Les sous-agents reçoivent uniquement ce prompt système plus les détails d'environnement de base comme le répertoire de travail, pas le prompt système de Claude Code.

282 284 

283En [mode non interactif](/docs/fr/headless), passez [`--append-subagent-system-prompt`](/docs/fr/cli-reference#cli-flags) pour ajouter votre texte à la fin de l'invite système de chaque sous-agent, y compris les sous-agents imbriqués, à l'exception d'un [sous-agent forké](#fork-the-current-conversation), qui réutilise l'invite de la conversation. Nécessite Claude Code v2.1.205 ou ultérieur. Si votre texte est trop long pour être passé sur la ligne de commande, enregistrez-le dans un fichier et passez le chemin avec `--append-subagent-system-prompt-file` à la place. Le drapeau de fichier nécessite Claude Code v2.1.261 ou ultérieur.285En [mode non interactif](/docs/fr/headless), passez [`--append-subagent-system-prompt`](/docs/fr/cli-reference#cli-flags) pour ajouter votre texte à la fin du prompt système de chaque sous-agent, y compris les sous-agents imbriqués, à l'exception d'un [sous-agent forké](#fork-the-current-conversation), qui réutilise le prompt de la conversation. Nécessite Claude Code v2.1.205 ou ultérieur. Si votre texte est trop long pour être passé sur la ligne de commande, enregistrez-le dans un fichier et passez le chemin avec `--append-subagent-system-prompt-file` à la place. Le flag de fichier nécessite Claude Code v2.1.261 ou ultérieur.

284 286 

285Un sous-agent démarre dans le répertoire de travail actuel de la conversation principale. Au sein d'un sous-agent, les commandes `cd` ne persistent pas entre les appels d'outils Bash ou PowerShell et n'affectent pas le répertoire de travail de la conversation principale. Pour donner au sous-agent une copie isolée du référentiel à la place, définissez [`isolation: worktree`](#supported-frontmatter-fields).287Un sous-agent démarre dans le répertoire de travail actuel de la conversation principale. Au sein d'un sous-agent, les commandes `cd` ne persistent pas entre les appels d'outils Bash ou PowerShell et n'affectent pas le répertoire de travail de la conversation principale. Pour donner au sous-agent une copie isolée du dépôt à la place, définissez [`isolation: worktree`](#supported-frontmatter-fields).

286 288 

287Un sous-agent avec `isolation: worktree` exécute ses commandes Bash et PowerShell à l'intérieur de son worktree. Une commande dont le répertoire de travail se résout à votre extraction principale à la place, par exemple parce que le répertoire worktree a été supprimé pendant que le sous-agent s'exécutait, échoue avec une erreur. Avant la v2.1.203, une telle commande pouvait s'exécuter dans l'extraction principale.289Un sous-agent avec `isolation: worktree` exécute ses commandes Bash et PowerShell à l'intérieur de son worktree. Une commande dont le répertoire de travail se résout à votre extraction principale à la place, par exemple parce que le répertoire worktree a été supprimé pendant que le sous-agent s'exécutait, échoue avec une erreur. Avant la v2.1.203, une telle commande pouvait s'exécuter dans l'extraction principale.

288 290 

289Cette vérification du répertoire de travail couvre l'ensemble du référentiel contenant le répertoire à partir duquel vous avez lancé Claude Code. Lorsque votre session s'exécute dans un [worktree](/docs/fr/worktrees) lié de son propre chef, la vérification couvre également l'extraction principale à partir de laquelle ce worktree est lié. Avant la v2.1.210, la vérification couvrait uniquement le répertoire de lancement lui-même. Une commande dont le répertoire de travail se résout ailleurs dans le même référentiel, comme la racine du référentiel lorsque vous avez lancé Claude Code à partir d'un sous-répertoire monorepo, s'y exécutait à la place d'échouer.291Cette vérification du répertoire de travail couvre l'ensemble du dépôt contenant le répertoire à partir duquel vous avez lancé Claude Code. Lorsque votre session s'exécute dans son propre [worktree](/docs/fr/worktrees) lié, la vérification couvre également l'extraction principale à partir de laquelle ce worktree est lié. Avant la v2.1.210, la vérification couvrait uniquement le répertoire de lancement lui-même. Une commande dont le répertoire de travail se résolvait ailleurs dans le même dépôt, comme la racine du dépôt lorsque vous avez lancé Claude Code à partir d'un sous-répertoire monorepo, s'y exécutait au lieu d'échouer.

290 292 

291Pour les commandes Bash, Claude Code vérifie également la commande elle-même de deux façons :293Pour les commandes Bash, Claude Code vérifie également la commande elle-même de deux façons :

292 294 


303 Référence de frontmatter305 Référence de frontmatter

304</h3>306</h3>

305 307 

306Configurez un sous-agent avec du [frontmatter](/docs/fr/glossary#frontmatter) YAML entre les marqueurs `---` en haut de son fichier, et écrivez son invite système en Markdown après le `---` de fermeture. Seuls `name` et `description` sont obligatoires.308Configurez un sous-agent avec du [frontmatter](/docs/fr/glossary#frontmatter) YAML entre les marqueurs `---` en haut de son fichier, et écrivez son prompt système en Markdown après le `---` de fermeture. Seuls `name` et `description` sont obligatoires.

307 309 

308Les noms de champs multi-mots utilisent camelCase, tels que `maxTurns` et `disallowedTools`, et doivent correspondre exactement au tableau : Claude Code ignore un champ qu'il ne reconnaît pas sans signaler une erreur. Pour savoir pourquoi un fichier de sous-agent ne s'est pas chargé, consultez [Fichiers de sous-agent que Claude Code ignore](#subagent-files-claude-code-skips).310Les noms de champs multi-mots utilisent camelCase, tels que `maxTurns` et `disallowedTools`, et doivent correspondre exactement au tableau : Claude Code ignore un champ qu'il ne reconnaît pas sans signaler une erreur. Pour savoir pourquoi un fichier de sous-agent ne s'est pas chargé, consultez [Fichiers de sous-agent que Claude Code ignore](#subagent-files-claude-code-skips).

309 311 

310| Champ | Obligatoire | Description |312| Champ | Obligatoire | Description |

311| :- | :- | :- |313| :- | :- | :- |

312| `name` | Oui | Identifiant unique, tel que `code-reviewer` ou `reviewer-v2`. Les [Hooks](/docs/fr/hooks#subagentstart) reçoivent cette valeur comme `agent_type`. Le nom du fichier n'a pas besoin de correspondre. Les noms ne peuvent pas contenir `:`, qui est réservé aux [identifiants limités au plugin](/docs/fr/plugins/overview) tels que `my-plugin:reviewer`. Claude Code ne charge pas un fichier dont le nom en contient un et enregistre une erreur dans le journal de débogage. Avant la v2.1.218, de tels noms étaient acceptés |314| `name` | Oui | Identifiant unique, tel que `code-reviewer` ou `reviewer-v2`. Les [hooks](/docs/fr/hooks#subagentstart) reçoivent cette valeur comme `agent_type`. Le nom du fichier n'a pas besoin de correspondre. Les noms ne peuvent pas contenir `:`, qui est réservé aux [identifiants limités au plugin](/docs/fr/plugins/overview) tels que `my-plugin:reviewer`. Claude Code ne charge pas un fichier dont le nom en contient un et enregistre une erreur dans le journal de débogage. Avant la v2.1.218, de tels noms étaient acceptés |

313| `description` | Oui | Quand Claude doit déléguer à ce sous-agent |315| `description` | Oui | Quand Claude doit déléguer à ce sous-agent |

314| `tools` | Non | [Outils](#available-tools) que le sous-agent peut utiliser, sous forme de chaîne séparée par des virgules telle que `Read, Grep, Bash` ou une liste YAML. Hérite de tous les outils disponibles pour les sous-agents s'il est omis. Si aucune entrée de la liste ne se résout en un outil, le sous-agent échoue généralement au [lancement](/docs/fr/errors#agent-would-be-spawned-with-zero-tools) avec une erreur nommant les entrées. Pour précharger les Skills dans le contexte, utilisez le champ `skills` plutôt que de lister `Skill` ici |316| `tools` | Non | [Outils](#available-tools) que le sous-agent peut utiliser, sous forme de chaîne séparée par des virgules telle que `Read, Grep, Bash` ou une liste YAML. Hérite de tous les outils disponibles pour les sous-agents s'il est omis. Si aucune entrée de la liste ne se résout en un outil, le sous-agent échoue généralement au [lancement](/docs/fr/errors#agent-would-be-spawned-with-zero-tools) avec une erreur nommant les entrées. Pour précharger les Skills dans le contexte, utilisez le champ `skills` plutôt que de lister `Skill` ici |

315| `disallowedTools` | Non | Outils à refuser, supprimés de la liste héritée ou spécifiée. Même format que `tools`. Une entrée avec un spécificateur, tel que `Bash(git push *)`, supprime toujours l'[outil entier](#available-tools) |317| `disallowedTools` | Non | Outils à refuser, supprimés de la liste héritée ou spécifiée. Même format que `tools`. Une entrée avec un spécificateur, tel que `Bash(git push *)`, supprime toujours l'[outil entier](#available-tools) |

316| `model` | Non | [Modèle](#choose-a-model) à utiliser : `sonnet`, `opus`, `haiku`, `fable`, un ID de modèle complet tel que `claude-opus-5-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) |318| `model` | Non | [Modèle](#choose-a-model) à utiliser : `sonnet`, `opus`, `haiku`, `fable`, un ID de modèle complet tel que `claude-opus-5-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) |

317| `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) |319| `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) |

318| `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 |320| `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 |

319| `skills` | Non | [Skills](/docs/fr/skills) à précharger dans le contexte du sous-agent au démarrage. Le contenu complet de la skill est injecté, pas seulement la description. Les sous-agents peuvent toujours invoquer les skills de projet, utilisateur et plugin non listées via l'outil Skill |321| `skills` | Non | [Skills](/docs/fr/skills) à précharger dans le contexte du sous-agent au démarrage. Le contenu complet du skill est injecté, pas seulement la description. Les sous-agents peuvent toujours invoquer les skills de projet, utilisateur et plugin non listés via l'outil Skill |

320| `mcpServers` | Non | [Serveurs MCP](/docs/fr/mcp) disponibles pour ce sous-agent. Chaque entrée est soit un nom de serveur référençant un serveur déjà configuré (par exemple, `"slack"`) soit une définition en ligne avec le nom du serveur comme clé et une [configuration de serveur MCP](/docs/fr/mcp#installing-mcp-servers) complète comme valeur. Ignoré pour les [sous-agents de plugin](#choose-the-subagent-scope) |322| `mcpServers` | Non | [Serveurs MCP](/docs/fr/mcp) disponibles pour ce sous-agent. Chaque entrée est soit un nom de serveur référençant un serveur déjà configuré (par exemple, `"slack"`) soit une définition en ligne avec le nom du serveur comme clé et une [configuration de serveur MCP](/docs/fr/mcp#installing-mcp-servers) complète comme valeur. Ignoré pour les [sous-agents de plugin](#choose-the-subagent-scope) |

321| `hooks` | Non | [Hooks de cycle de vie](#define-hooks-for-subagents) limités à ce sous-agent. Ignoré pour les [sous-agents de plugin](#choose-the-subagent-scope) |323| `hooks` | Non | [Hooks de cycle de vie](#define-hooks-for-subagents) limités à ce sous-agent. Ignoré pour les [sous-agents de plugin](#choose-the-subagent-scope) |

322| `memory` | Non | [Portée de la mémoire persistante](#enable-persistent-memory) : `user`, `project` ou `local`. Active l'apprentissage entre sessions |324| `memory` | Non | [Portée de la mémoire persistante](#enable-persistent-memory) : `user`, `project` ou `local`. Active l'apprentissage entre sessions |

323| `background` | Non | Définir sur `true` pour garder ce sous-agent en arrière-plan même lorsque Claude demande de l'exécuter au premier plan. Lorsque le [mode fork](#turn-fork-mode-on-or-off) est activé, Claude Code exécute déjà les sous-agents que Claude génère [en arrière-plan](#run-subagents-in-foreground-or-background) |325| `background` | Non | Définir sur `true` pour garder ce sous-agent en arrière-plan même lorsque Claude demande de l'exécuter au premier plan. Lorsque le [mode fork](#turn-fork-mode-on-or-off) est activé, Claude Code exécute déjà les sous-agents que Claude génère [en arrière-plan](#run-subagents-in-foreground-or-background) |

324| `omitClaudeMd` | Non | Définir sur `true` pour lancer ce sous-agent sans les fichiers CLAUDE.md utilisateur, projet et local ; les [fichiers de politique gérée](/docs/fr/memory#how-claude-md-files-load) se chargent toujours, sauf pour les [sous-agents gérés](#choose-the-subagent-scope). Utilisez-le pour les sous-agents qui prennent tout ce dont ils ont besoin de l'[invite de délégation](#what-loads-at-startup). Ignoré lorsque l'agent s'exécute en tant qu'agent de session principal via `--agent` ou le paramètre `agent`. Nécessite Claude Code v2.1.271 ou ultérieur |326| `omitClaudeMd` | Non | Définir sur `true` pour lancer ce sous-agent sans les fichiers CLAUDE.md utilisateur, projet et local ; les [fichiers de politique gérée](/docs/fr/memory#how-claude-md-files-load) se chargent toujours, sauf pour les [sous-agents gérés](#choose-the-subagent-scope). Utilisez-le pour les sous-agents qui prennent tout ce dont ils ont besoin du [prompt de délégation](#what-loads-at-startup). Ignoré lorsque l'agent s'exécute en tant qu'agent de session principal via `--agent` ou le paramètre `agent`. Nécessite Claude Code v2.1.271 ou ultérieur |

325| `effort` | Non | Niveau d'effort lorsque ce sous-agent est actif. Remplace le niveau d'effort de la session. Par défaut : hérite de la session. Options : `low`, `medium`, `high`, `xhigh`, `max` ; les niveaux disponibles dépendent du modèle |327| `effort` | Non | Niveau d'effort lorsque ce sous-agent est actif. Remplace le niveau d'effort de la session. Par défaut : hérite de la session. Options : `low`, `medium`, `high`, `xhigh`, `max` ; les niveaux disponibles dépendent du modèle |

326| `isolation` | Non | Définir sur `worktree` pour exécuter le sous-agent dans un [git worktree](/docs/fr/worktrees) temporaire, ce qui lui donne une copie isolée du référentiel branchée par défaut à partir de votre [branche par défaut](/docs/fr/worktrees#choose-the-base-branch) plutôt que du `HEAD` de la session parent. Le worktree est automatiquement nettoyé si le sous-agent n'apporte aucune modification |328| `isolation` | Non | Définir sur `worktree` pour exécuter le sous-agent dans un [git worktree](/docs/fr/worktrees) temporaire, ce qui lui donne une copie isolée du dépôt dont la branche est créée par défaut à partir de votre [branche par défaut](/docs/fr/worktrees#choose-the-base-branch) plutôt que du `HEAD` de la session parent. Le worktree est automatiquement nettoyé si le sous-agent n'apporte aucune modification |

327| `color` | Non | Couleur d'affichage pour le sous-agent dans la liste des tâches et la transcription. Accepte `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink` ou `cyan` |329| `color` | Non | Couleur d'affichage pour le sous-agent dans la liste des tâches et la transcription. Accepte `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink` ou `cyan` |

328| `initialPrompt` | Non | Auto-soumis comme le premier tour utilisateur lorsque cet agent s'exécute en tant qu'agent de session principal (via `--agent` ou le paramètre `agent`). Les [commandes](/docs/fr/commands) et les [skills](/docs/fr/skills) sont traitées. Préfixé à tout invite fourni par l'utilisateur. Ignoré pour les [sous-agents de plugin](#choose-the-subagent-scope) |330| `initialPrompt` | Non | Auto-soumis comme le premier tour utilisateur lorsque cet agent s'exécute en tant qu'agent de session principal (via `--agent` ou le paramètre `agent`). Les [commandes](/docs/fr/commands) et les [skills](/docs/fr/skills) sont traités. Préfixé à tout prompt fourni par l'utilisateur. Ignoré pour les [sous-agents de plugin](#choose-the-subagent-scope) |

329| `experimental` | Non | Carte des options expérimentales. Définissez sa clé `cacheTtl` sur `5m` ou `1h` pour choisir la [durée de vie du cache d'invite](/docs/fr/prompt-caching#choose-the-ttl-yourself) pour les demandes de ce sous-agent, à la place du frontmatter dans la [précédence de la durée de vie du cache](/docs/fr/prompt-caching#choose-the-ttl-yourself). Claude Code ignore toute autre valeur, ignore `1h` tandis que votre abonnement Claude utilise des crédits d'utilisation, et lit le champ uniquement à partir des fichiers de sous-agent. Nécessite Claude Code v2.1.248 ou ultérieur |331| `experimental` | Non | Carte des options expérimentales. Définissez sa clé `cacheTtl` sur `5m` ou `1h` pour choisir la [durée de vie du cache de prompt](/docs/fr/prompt-caching#choose-the-ttl-yourself) pour les requêtes de ce sous-agent, à la place du frontmatter dans la [priorité de la durée de vie du cache](/docs/fr/prompt-caching#choose-the-ttl-yourself). Claude Code ignore toute autre valeur, ignore `1h` tandis que votre abonnement Claude utilise des crédits d'utilisation, et lit le champ uniquement à partir des fichiers de sous-agent. Nécessite Claude Code v2.1.248 ou ultérieur |

330 332 

331Écrivez `cacheTtl` à l'intérieur de la carte `experimental`, pas au niveau supérieur du frontmatter.333Écrivez `cacheTtl` à l'intérieur de la carte `experimental`, pas au niveau supérieur du frontmatter.

332 334 


368Le champ `model` contrôle quel modèle le sous-agent utilise :370Le champ `model` contrôle quel modèle le sous-agent utilise :

369 371 

370* **Alias de modèle** : utilisez l'un des alias disponibles : `sonnet`, `opus`, `haiku` ou `fable`372* **Alias de modèle** : utilisez l'un des alias disponibles : `sonnet`, `opus`, `haiku` ou `fable`

371* **ID de modèle complet** : utilisez un ID de modèle complet tel que `claude-opus-5-5` ou `claude-sonnet-5`. Accepte les mêmes valeurs que le drapeau `--model`373* **ID de modèle complet** : utilisez un ID de modèle complet tel que `claude-opus-5-5` ou `claude-sonnet-5`. Accepte les mêmes valeurs que le flag `--model`

372* **inherit** : utilisez le même modèle que la conversation principale374* **inherit** : utilisez le même modèle que la conversation principale

373 375 

374Lorsque Claude invoque un sous-agent, il peut également passer un paramètre `model` pour cette invocation spécifique. Claude Code résout le modèle du sous-agent dans cet ordre :376Lorsque Claude invoque un sous-agent, il peut également passer un paramètre `model` pour cette invocation spécifique. Claude Code résout le modèle du sous-agent dans cet ordre :


381Dans deux cas, un alias de famille tel que `opus` dans le paramètre par invocation ou le frontmatter se résout au modèle de la conversation principale au lieu de la [version vers laquelle l'alias pointe](/docs/fr/model-config#model-aliases) :383Dans deux cas, un alias de famille tel que `opus` dans le paramètre par invocation ou le frontmatter se résout au modèle de la conversation principale au lieu de la [version vers laquelle l'alias pointe](/docs/fr/model-config#model-aliases) :

382 384 

383* **Le modèle de la conversation principale appartient à cette famille** : le sous-agent s'exécute sur le modèle exact de la conversation principale, y compris tout suffixe `[1m]`, donc il obtient la même fenêtre de [contexte étendu](/docs/fr/model-config#extended-context) que la conversation principale.385* **Le modèle de la conversation principale appartient à cette famille** : le sous-agent s'exécute sur le modèle exact de la conversation principale, y compris tout suffixe `[1m]`, donc il obtient la même fenêtre de [contexte étendu](/docs/fr/model-config#extended-context) que la conversation principale.

384* **Claude Code ne peut pas dire la famille du modèle de la conversation principale, sur [un fournisseur autre que l'API Anthropic](/docs/fr/third-party-integrations)** : cela peut se produire avec un [ARN de profil d'inférence d'application](/docs/fr/amazon-bedrock#iam-configuration) sur Amazon Bedrock que Claude Code n'a pas résolu à un modèle de support. Ce cas couvre uniquement l'alias `opus`, et ne s'applique pas lorsque vous définissez [`ANTHROPIC_DEFAULT_OPUS_MODEL`](/docs/fr/model-config#environment-variables), puisque `opus` se résout alors au modèle que vous définissez.386* **Claude Code ne peut pas déterminer la famille du modèle de la conversation principale, sur [un fournisseur autre que l'API Anthropic](/docs/fr/third-party-integrations)** : cela peut se produire avec un [ARN de profil d'inférence d'application](/docs/fr/amazon-bedrock#iam-configuration) sur Amazon Bedrock que Claude Code n'a pas résolu à un modèle de support. Ce cas couvre uniquement l'alias `opus`, et ne s'applique pas lorsque vous définissez [`ANTHROPIC_DEFAULT_OPUS_MODEL`](/docs/fr/model-config#environment-variables), puisque `opus` se résout alors au modèle que vous définissez.

385 387 

386Un alias dans `CLAUDE_CODE_SUBAGENT_MODEL` se résout toujours à la version vers laquelle l'alias pointe, même lorsqu'il nomme la famille de la conversation principale.388Un alias dans `CLAUDE_CODE_SUBAGENT_MODEL` se résout toujours à la version vers laquelle l'alias pointe, même lorsqu'il nomme la famille de la conversation principale.

387 389 


391 393 

392Définir la variable sur `inherit` est identique à la laisser non définie. Avant la v2.1.196, cette valeur forçait les sous-agents sur le modèle de la conversation principale et ignorait les autres sources.394Définir la variable sur `inherit` est identique à la laisser non définie. Avant la v2.1.196, cette valeur forçait les sous-agents sur le modèle de la conversation principale et ignorait les autres sources.

393 395 

394Claude Code vérifie le paramètre par invocation, le frontmatter et les valeurs de la variable d'environnement par rapport à la liste blanche [`availableModels`](/docs/fr/model-config#restrict-model-selection) de votre organisation. Pour une valeur bloquée, il substitue un autre modèle :396Claude Code vérifie le paramètre par invocation, le frontmatter et les valeurs de la variable d'environnement par rapport à la liste d'autorisation [`availableModels`](/docs/fr/model-config#restrict-model-selection) de votre organisation. Pour une valeur bloquée, il substitue un autre modèle :

395 397 

396* Lorsque la valeur bloquée est un alias de famille tel que `opus`, Claude Code exécute le sous-agent sur la version la plus récente de cette famille que la liste blanche permet, en suivant les mêmes [règles de substitution et portée du fournisseur](/docs/fr/model-config#restrict-model-selection) que `/model`. Avant la v2.1.222, Claude Code exécutait le sous-agent sur le modèle hérité pour un alias de famille bloqué également.398* Lorsque la valeur bloquée est un alias de famille tel que `opus`, Claude Code exécute le sous-agent sur la version la plus récente de cette famille que la liste d'autorisation permet, en suivant les mêmes [règles de substitution et portée du fournisseur](/docs/fr/model-config#restrict-model-selection) que `/model`. Avant la v2.1.222, Claude Code exécutait le sous-agent sur le modèle hérité pour un alias de famille bloqué également.

397* Pour toute autre valeur bloquée, sur les fournisseurs où cette substitution ne fonctionne pas, ou lorsque la liste blanche ne permet aucune version de la famille, Claude Code exécute le sous-agent sur le modèle hérité à la place. Si vous définissez `CLAUDE_CODE_SUBAGENT_MODEL`, Claude Code essaie d'abord ce modèle, selon les mêmes règles.399* Pour toute autre valeur bloquée, sur les fournisseurs où cette substitution ne fonctionne pas, ou lorsque la liste d'autorisation ne permet aucune version de la famille, Claude Code exécute le sous-agent sur le modèle hérité à la place. Si vous définissez `CLAUDE_CODE_SUBAGENT_MODEL`, Claude Code essaie d'abord ce modèle, selon les mêmes règles.

398 400 

399Dans les sessions interactives, Claude Code affiche un avertissement nommant le modèle demandé et le modèle sur lequel le sous-agent s'exécute, pour l'une ou l'autre substitution.401Dans les sessions interactives, Claude Code affiche un avertissement nommant le modèle demandé et le modèle sur lequel le sous-agent s'exécute, pour l'une ou l'autre substitution.

400 402 

401Pour vérifier sur quel modèle un sous-agent s'exécute, exécutez [`/tasks`](/docs/fr/commands). Claude Code nomme le modèle sur la ligne du sous-agent, et ajoute le [niveau d'effort](/docs/fr/model-config#adjust-effort-level) lorsque la définition du sous-agent, ou la skill dont il a forké, définit [`effort`](#supported-frontmatter-fields). Nécessite Claude Code v2.1.242 ou ultérieur.403Pour vérifier sur quel modèle un sous-agent s'exécute, exécutez [`/tasks`](/docs/fr/commands). Claude Code nomme le modèle sur la ligne du sous-agent, et ajoute le [niveau d'effort](/docs/fr/model-config#adjust-effort-level) lorsque la définition du sous-agent, ou le skill dont il a forké, définit [`effort`](#supported-frontmatter-fields). Nécessite Claude Code v2.1.242 ou ultérieur.

402 404 

403Un paramètre `model` par invocation s'applique également lorsque le sous-agent est [repris ou reçoit un message de suivi](#resume-subagents), donc le sous-agent reste sur ce modèle. Avant la v2.1.211, la reprise supprimait la valeur par invocation et le sous-agent revenait au champ `model` de sa définition ou, sans un, au modèle de la conversation principale.405Un paramètre `model` par invocation s'applique également lorsque le sous-agent est [repris ou reçoit un message de suivi](#resume-subagents), donc le sous-agent reste sur ce modèle. Avant la v2.1.211, la reprise supprimait la valeur par invocation et le sous-agent revenait au champ `model` de sa définition ou, sans un, au modèle de la conversation principale.

404 406 

405À partir de la v2.1.198, les sous-agents héritent également de la configuration [extended thinking](/docs/fr/model-config#extended-thinking) de la conversation principale : si la réflexion est activée dans votre session, elle est activée pour le sous-agent, et si elle est désactivée, elle reste désactivée. Il n'y a pas de paramètre de réflexion par sous-agent. Avant la v2.1.198, les sous-agents s'exécutaient avec la réflexion étendue désactivée indépendamment du paramètre de la conversation principale.407À partir de la v2.1.198, les sous-agents héritent également de la configuration de [réflexion étendue](/docs/fr/model-config#extended-thinking) de la conversation principale : si la réflexion est activée dans votre session, elle est activée pour le sous-agent, et si elle est désactivée, elle reste désactivée. Il n'y a pas de paramètre de réflexion par sous-agent. Avant la v2.1.198, les sous-agents s'exécutaient avec la réflexion étendue désactivée indépendamment du paramètre de la conversation principale.

406 408 

407<h4 id="run-every-subagent-on-one-model">409<h4 id="run-every-subagent-on-one-model">

408 Exécuter chaque sous-agent sur un modèle410 Exécuter chaque sous-agent sur un modèle

409</h4>411</h4>

410 412 

411`CLAUDE_CODE_SUBAGENT_MODEL` est une valeur par défaut, donc la définition d'un sous-agent ou un modèle que Claude passe prend toujours précédence sur elle. Pour appliquer un modèle à chaque sous-agent, [coéquipier](/docs/fr/agent-teams#specify-teammates-and-models) et [agent de flux de travail](/docs/fr/workflows), définissez également `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` sur `1`. Nécessite Claude Code v2.1.257 ou ultérieur.413`CLAUDE_CODE_SUBAGENT_MODEL` est une valeur par défaut, donc la définition d'un sous-agent ou un modèle que Claude passe a toujours priorité sur elle. Pour appliquer un modèle à chaque sous-agent, [coéquipier](/docs/fr/agent-teams#specify-teammates-and-models) et [agent de workflow](/docs/fr/workflows), définissez également `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` sur `1`. Nécessite Claude Code v2.1.257 ou ultérieur.

412 414 

413* Si vous définissez les deux variables, les sous-agents s'exécutent sur le modèle dans `CLAUDE_CODE_SUBAGENT_MODEL`.415* Si vous définissez les deux variables, les sous-agents s'exécutent sur le modèle dans `CLAUDE_CODE_SUBAGENT_MODEL`.

414* Si vous définissez uniquement `CLAUDE_CODE_SUBAGENT_MODEL_FORCE`, les sous-agents s'exécutent sur le modèle de la conversation principale.416* Si vous définissez uniquement `CLAUDE_CODE_SUBAGENT_MODEL_FORCE`, les sous-agents s'exécutent sur le modèle de la conversation principale, à ceci près que le sous-agent Explore intégré s'exécute sur le [modèle indiqué pour lui sous Sous-agents intégrés](#built-in-subagents).

415 417 

416Par exemple, pour exécuter chaque sous-agent sur Haiku, définissez les deux variables dans le bloc `env` d'un [fichier de paramètres](/docs/fr/settings) :418Par exemple, pour exécuter chaque sous-agent sur Haiku, définissez les deux variables dans le bloc `env` d'un [fichier de paramètres](/docs/fr/settings) :

417 419 


426 428 

427Pour vérifier que le paramètre a pris effet, exécutez [`/tasks`](/docs/fr/commands) pendant qu'un sous-agent s'exécute. La ligne du sous-agent affiche le modèle sur lequel il s'exécute.429Pour vérifier que le paramètre a pris effet, exécutez [`/tasks`](/docs/fr/commands) pendant qu'un sous-agent s'exécute. La ligne du sous-agent affiche le modèle sur lequel il s'exécute.

428 430 

429Tandis que `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` est [activé](/docs/fr/env-vars), Claude Code ignore le champ `model` de chaque définition de sous-agent, y compris les sous-agents Explore et Plan intégrés, et Claude ne peut pas passer un modèle lorsqu'il démarre un sous-agent. Deux types de sous-agent s'exécutent toujours sur le modèle de la conversation principale :431Tandis que `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` est [activé](/docs/fr/env-vars), Claude Code ignore le champ `model` dans les définitions de sous-agent, et Claude ne peut pas passer un modèle lorsqu'il démarre un sous-agent. Ces sous-agents s'exécutent toujours sur le modèle de la conversation principale :

430 432 

431* Un [fork](#fork-the-current-conversation)433* Un [fork](#fork-the-current-conversation)

432* Une [skill qui s'exécute dans un sous-agent](/docs/fr/skills#run-skills-in-a-subagent) avec `model: inherit`434* Un [skill qui s'exécute dans un sous-agent](/docs/fr/skills#run-skills-in-a-subagent) avec `model: inherit`

433 

434Lorsque vous définissez uniquement `CLAUDE_CODE_SUBAGENT_MODEL_FORCE`, le sous-agent Explore intégré conserve son [plafond de modèle](#built-in-subagents).

435 435 

436<h3 id="control-subagent-capabilities">436<h3 id="control-subagent-capabilities">

437 Contrôler les capacités des sous-agents437 Contrôler les capacités des sous-agents


443 Outils disponibles443 Outils disponibles

444</h4>444</h4>

445 445 

446Les 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` :446Les 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` :

447 447 

448* `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érer448* `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 au lieu de générer

449* `AskUserQuestion`449* `AskUserQuestion`

450* `EndConversation`, qui ne peut terminer que la conversation principale ; consultez [Comportement de l'outil EndConversation](/docs/fr/tools-reference#endconversation-tool-behavior)450* `EndConversation`, qui ne peut terminer que la conversation principale ; consultez [Comportement de l'outil EndConversation](/docs/fr/tools-reference#endconversation-tool-behavior)

451* `EnterPlanMode`451* `EnterPlanMode`


464 464 

465Dans une [session sans les outils Task](/docs/fr/tools-reference#task-tool-availability), Claude Code ne fournit pas les outils de tâche aux sous-agents non plus, même lorsque le sous-agent exécute un modèle différent. Un coéquipier 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.465Dans une [session sans les outils Task](/docs/fr/tools-reference#task-tool-availability), Claude Code ne fournit pas les outils de tâche aux sous-agents non plus, même lorsque le sous-agent exécute un modèle différent. Un coéquipier 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.

466 466 

467Pour restreindre les outils, utilisez le champ `tools` comme liste blanche ou le champ `disallowedTools` comme liste noire. Cet exemple utilise `tools` pour autoriser uniquement Read, Grep, Glob et Bash. Le sous-agent ne peut pas modifier les fichiers, écrire des fichiers ou utiliser des outils MCP :467Pour restreindre les outils, utilisez le champ `tools` comme liste d'autorisation ou le champ `disallowedTools` comme liste de refus. Cet exemple utilise `tools` pour autoriser uniquement Read, Grep, Glob et Bash. Le sous-agent ne peut pas modifier les fichiers, écrire des fichiers ou utiliser des outils MCP :

468 468 

469```yaml theme={null}469```yaml theme={null}

470---470---


516---516---

517```517```

518 518 

519C'est une liste blanche : seuls les sous-agents `worker` et `researcher` peuvent être générés. Si l'agent essaie de générer un autre type, la demande échoue et l'agent ne voit que les types autorisés dans son invite. Pour bloquer des agents spécifiques tout en autorisant tous les autres, utilisez plutôt [`permissions.deny`](#disable-specific-subagents).519C'est une liste d'autorisation : seuls les sous-agents `worker` et `researcher` peuvent être générés. Si l'agent essaie de générer un autre type, la demande échoue et l'agent ne voit que les types autorisés dans son prompt. Pour bloquer des agents spécifiques tout en autorisant tous les autres, utilisez plutôt [`permissions.deny`](#disable-specific-subagents).

520 520 

521Pour autoriser la génération de n'importe quel sous-agent sans restrictions, utilisez `Agent` sans parenthèses :521Pour autoriser la génération de n'importe quel sous-agent sans restrictions, utilisez `Agent` sans parenthèses :

522 522 


526 526 

527Si vous omettez complètement `Agent` de la liste `tools`, l'agent ne peut générer aucun sous-agent avec l'outil Agent.527Si vous omettez complètement `Agent` de la liste `tools`, l'agent ne peut générer aucun sous-agent avec l'outil Agent.

528 528 

529La syntaxe de liste blanche `Agent(agent_type)` s'applique uniquement à un agent s'exécutant en tant que thread principal avec `claude --agent`. Dans une définition de sous-agent, lister `Agent` dans `tools` permet à ce sous-agent de générer des sous-agents de son propre chef tandis que la [limite de profondeur](#let-subagents-spawn-their-own-subagents) le permet, mais toute liste de types à l'intérieur des parenthèses est ignorée.529La syntaxe de liste d'autorisation `Agent(agent_type)` s'applique uniquement à un agent s'exécutant en tant que thread principal avec `claude --agent`. Dans une définition de sous-agent, lister `Agent` dans `tools` permet à ce sous-agent de générer ses propres sous-agents tant que la [limite de profondeur](#let-subagents-spawn-their-own-subagents) le permet, mais toute liste de types à l'intérieur des parenthèses est ignorée.

530 530 

531<h4 id="scope-mcp-servers-to-a-subagent">531<h4 id="scope-mcp-servers-to-a-subagent">

532 Limiter les serveurs MCP à un sous-agent532 Limiter les serveurs MCP à un sous-agent


540 * En tant que sous-agent, généré via l'outil Agent ou une @-mention540 * En tant que sous-agent, généré via l'outil Agent ou une @-mention

541 * En tant que session principale, lancée avec [`--agent`](#invoke-subagents-explicitly) ou le paramètre `agent`541 * En tant que session principale, lancée avec [`--agent`](#invoke-subagents-explicitly) ou le paramètre `agent`

542 542 

543 Lorsque l'agent est la session principale, les définitions de serveur en ligne se connectent au démarrage aux côtés des serveurs de [`.mcp.json`](/docs/fr/mcp) et des fichiers de paramètres, selon la même [règle de confiance pour le dossier du fichier d'agent](#inline-server-trust). Dans `/mcp`, un serveur distant (HTTP ou SSE) que vous avez utilisé auparavant peut afficher le statut [`cached`](/docs/fr/mcp#managing-your-servers) à la place ; Claude Code le connecte lorsque Claude appelle d'abord l'un de ses outils.543 Lorsque l'agent est la session principale, les définitions de serveur en ligne se connectent au démarrage aux côtés des serveurs de [`.mcp.json`](/docs/fr/mcp) et des fichiers de paramètres, selon la même [règle de confiance pour le dossier du fichier d'agent](#inline-server-trust). Dans `/mcp`, un serveur distant (HTTP ou SSE) que vous avez utilisé auparavant peut afficher le statut [`cached`](/docs/fr/mcp#managing-your-servers) à la place ; Claude Code le connecte lorsque Claude appelle pour la première fois l'un de ses outils.

544</Note>544</Note>

545 545 

546Chaque entrée de la liste est soit une définition de serveur en ligne, soit une chaîne référençant un serveur MCP déjà configuré dans votre session :546Chaque entrée de la liste est soit une définition de serveur en ligne, soit une chaîne référençant un serveur MCP déjà configuré dans votre session :


570 570 

571* **La confiance qui ne compte pas** : la confiance d'un dossier parent, et la confiance automatique qu'une session `-p` ou SDK obtient pour les [hooks dans les fichiers de paramètres](/docs/fr/permissions#what-runs-before-you-trust-a-folder)571* **La confiance qui ne compte pas** : la confiance d'un dossier parent, et la confiance automatique qu'une session `-p` ou SDK obtient pour les [hooks dans les fichiers de paramètres](/docs/fr/permissions#what-runs-before-you-trust-a-folder)

572* **Jusqu'à ce moment** : Claude Code ignore tous les serveurs en ligne dans ce fichier d'agent et écrit la clé exacte `projects["<path>"].hasTrustDialogAccepted` pour `~/.claude.json` dans le journal de débogage572* **Jusqu'à ce moment** : Claude Code ignore tous les serveurs en ligne dans ce fichier d'agent et écrit la clé exacte `projects["<path>"].hasTrustDialogAccepted` pour `~/.claude.json` dans le journal de débogage

573* **Répertoires `--add-dir`** : un répertoire en dehors du référentiel de l'espace de travail de confiance de votre organisation a besoin de sa propre entrée de confiance, car ses fichiers `.claude/agents/` n'héritent pas de la confiance de votre espace de travail573* **Répertoires `--add-dir`** : un répertoire en dehors du dépôt de votre espace de travail de confiance a besoin de sa propre entrée de confiance, car ses fichiers `.claude/agents/` n'héritent pas de la confiance de votre espace de travail

574 574 

575Claude Code charge deux types de serveur sans vérifier la confiance pour le dossier d'où provient le fichier d'agent :575Claude Code charge deux types de serveur sans vérifier la confiance pour le dossier d'où provient le fichier d'agent :

576 576 


595 595 

596Le mode de permission de la conversation principale décide si Claude Code utilise la valeur que vous définissez :596Le mode de permission de la conversation principale décide si Claude Code utilise la valeur que vous définissez :

597 597 

598* 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. Lorsque le sous-agent se termine, le classificateur examine également son travail et son rapport final avant que le rapport soit livré, comme [Comment le mode auto gère les sous-agents](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) le décrit.598* 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 classifieur évalue les appels d'outils du sous-agent avec les règles de blocage et d'autorisation de la conversation principale. Lorsque le sous-agent se termine, le classifieur examine également son travail et son rapport final avant que le rapport soit livré, comme [Comment le mode auto gère les sous-agents](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) le décrit.

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

600 600 

601`permissionMode` accepte ces valeurs, et `manual` comme alias pour `default` :601`permissionMode` accepte ces valeurs, et `manual` comme alias pour `default` :


604| :- | :- |604| :- | :- |

605| `default` | Mode Manuel : demande la permission |605| `default` | Mode Manuel : demande la permission |

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

607| `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é |607| `auto` | [Mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) : un classifieur en arrière-plan examine les commandes et les écritures de répertoire protégé |

608| `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 |608| `dontAsk` | Auto-refuser les demandes 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 |

609| `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 |609| `bypassPermissions` | [Ignorer les demandes 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 |

610| `plan` | Mode plan (exploration en lecture seule) |610| `plan` | Mode plan (exploration en lecture seule) |

611 611 

612<h4 id="preload-skills-into-subagents">612<h4 id="preload-skills-into-subagents">

613 Précharger les skills dans les sous-agents613 Précharger les skills dans les sous-agents

614</h4>614</h4>

615 615 

616Utilisez le champ `skills` pour injecter le contenu de la skill dans le contexte du sous-agent au démarrage. Cela donne au sous-agent des connaissances de domaine sans qu'il ait besoin de découvrir et charger les skills pendant l'exécution.616Utilisez le champ `skills` pour injecter le contenu du skill dans le contexte du sous-agent au démarrage. Cela donne au sous-agent des connaissances de domaine sans qu'il ait besoin de découvrir et charger les skills pendant l'exécution.

617 617 

618```yaml theme={null}618```yaml theme={null}

619---619---


627Implement API endpoints. Follow the conventions and patterns from the preloaded skills.627Implement API endpoints. Follow the conventions and patterns from the preloaded skills.

628```628```

629 629 

630Le contenu complet de chaque skill listée est injecté dans le contexte du sous-agent au démarrage. Ce champ contrôle quelles skills sont préchargées, pas quelles skills le sous-agent peut accéder : sans lui, le sous-agent peut toujours découvrir et invoquer les skills de projet, utilisateur et plugin via l'outil Skill pendant l'exécution. Pour empêcher un sous-agent d'invoquer les skills entièrement, omettez `Skill` de la liste [`tools`](#available-tools) ou ajoutez-le à `disallowedTools`.630Le contenu complet de chaque skill listé est injecté dans le contexte du sous-agent au démarrage. Ce champ contrôle quels skills sont préchargés, pas à quels skills le sous-agent peut accéder : sans lui, le sous-agent peut toujours découvrir et invoquer les skills de projet, utilisateur et plugin via l'outil Skill pendant l'exécution. Pour empêcher complètement un sous-agent d'invoquer des skills, omettez `Skill` de la liste [`tools`](#available-tools) ou ajoutez-le à `disallowedTools`.

631 631 

632Vous ne pouvez pas précharger les skills qui définissent [`disable-model-invocation: true`](/docs/fr/skills#control-who-invokes-a-skill), car le préchargement provient du même ensemble de skills que Claude peut invoquer. Cela inclut la skill `/verify` groupée : seul vous pouvez l'exécuter, donc elle ne peut pas être préchargée non plus.632Vous ne pouvez pas précharger les skills qui définissent [`disable-model-invocation: true`](/docs/fr/skills#control-who-invokes-a-skill), car le préchargement puise dans le même ensemble de skills que Claude peut invoquer. Cela inclut le skill `/verify` fourni : vous seul pouvez l'exécuter, donc il ne peut pas être préchargé non plus.

633 633 

634Si 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.634Si un skill listé est manquant ou désactivé, par exemple par la politique de votre organisation, Claude Code le saute et enregistre un avertissement dans le journal de débogage.

635 635 

636<Note>636<Note>

637 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.637 C'est l'inverse de [l'exécution d'un skill dans un sous-agent](/docs/fr/skills#run-skills-in-a-subagent). Avec `skills` dans un sous-agent, le sous-agent contrôle le prompt système et charge le contenu du skill. Avec `context: fork` dans un skill, le contenu du skill est injecté dans l'agent que vous spécifiez. Dans les deux cas, le sous-agent démarre sans votre historique de conversation.

638</Note>638</Note>

639 639 

640<h4 id="enable-persistent-memory">640<h4 id="enable-persistent-memory">


666 666 

667Lorsque la mémoire est activée :667Lorsque la mémoire est activée :

668 668 

669* L'invite système du sous-agent inclut des instructions pour lire et écrire dans le répertoire de mémoire.669* Le prompt système du sous-agent inclut des instructions pour lire et écrire dans le répertoire de mémoire.

670* L'invite système du sous-agent inclut également les 200 premières lignes ou 25 KB de `MEMORY.md` dans le répertoire de mémoire, selon la première limite atteinte, avec des instructions pour organiser `MEMORY.md` s'il dépasse cette limite.670* Le prompt système du sous-agent inclut également les 200 premières lignes ou 25 KB de `MEMORY.md` dans le répertoire de mémoire, selon la première limite atteinte, avec des instructions pour organiser `MEMORY.md` s'il dépasse cette limite.

671* Les outils Read, Write et Edit sont automatiquement activés pour que le sous-agent puisse gérer ses fichiers de mémoire.671* Les outils Read, Write et Edit sont automatiquement activés pour que le sous-agent puisse gérer ses fichiers de mémoire.

672 672 

673<h5 id="persistent-memory-tips">673<h5 id="persistent-memory-tips">


690 Règles conditionnelles avec hooks690 Règles conditionnelles avec hooks

691</h4>691</h4>

692 692 

693Pour un contrôle plus dynamique de l'utilisation des outils, utilisez les hooks `PreToolUse` pour valider les opérations avant leur exécution. C'est utile lorsque vous devez autoriser certaines opérations d'un outil tout en en bloquer d'autres.693Pour un contrôle plus dynamique de l'utilisation des outils, utilisez les hooks `PreToolUse` pour valider les opérations avant leur exécution. C'est utile lorsque vous devez autoriser certaines opérations d'un outil tout en bloquant d'autres.

694 694 

695Cet exemple crée un sous-agent qui n'autorise que les requêtes de base de données en lecture seule. Le hook `PreToolUse` exécute le script spécifié dans `command` avant chaque commande Bash :695Cet exemple crée un sous-agent qui n'autorise que les requêtes de base de données en lecture seule. Le hook `PreToolUse` exécute le script spécifié dans `command` avant chaque commande Bash :

696 696 


734 734 

735Pour tester la règle, demandez au sous-agent d'exécuter une instruction `UPDATE` : le script quitte avec le code 2, Claude Code bloque la commande, et le sous-agent voit le message `Blocked: Only SELECT queries are allowed`.735Pour tester la règle, demandez au sous-agent d'exécuter une instruction `UPDATE` : le script quitte avec le code 2, Claude Code bloque la commande, et le sous-agent voit le message `Blocked: Only SELECT queries are allowed`.

736 736 

737Consultez [Hook input](/docs/fr/hooks#pretooluse-input) pour le schéma d'entrée complet et [exit codes](/docs/fr/hooks#exit-code-output) pour savoir comment les codes de sortie affectent le comportement. Sur Windows, écrivez les scripts de hook en PowerShell et ajoutez `shell: powershell` à l'entrée du hook comme indiqué dans [exécution de hooks en PowerShell](/docs/fr/hooks#windows-powershell-tool).737Consultez [Entrée du hook](/docs/fr/hooks#pretooluse-input) pour le schéma d'entrée complet et [codes de sortie](/docs/fr/hooks#exit-code-output) pour savoir comment les codes de sortie affectent le comportement. Sur Windows, écrivez les scripts de hook en PowerShell et ajoutez `shell: powershell` à l'entrée du hook comme indiqué dans [exécution de hooks en PowerShell](/docs/fr/hooks#windows-powershell-tool).

738 738 

739<h4 id="disable-specific-subagents">739<h4 id="disable-specific-subagents">

740 Désactiver des sous-agents spécifiques740 Désactiver des sous-agents spécifiques


750}750}

751```751```

752 752 

753Cela fonctionne pour les sous-agents intégrés et personnalisés. Vous pouvez également utiliser le drapeau CLI `--disallowedTools` :753Cela fonctionne pour les sous-agents intégrés et personnalisés. Vous pouvez également utiliser le flag CLI `--disallowedTools` :

754 754 

755```bash theme={null}755```bash theme={null}

756claude --disallowedTools "Agent(Explore)"756claude --disallowedTools "Agent(Explore)"


764 764 

765Les sous-agents peuvent définir des [hooks](/docs/fr/hooks) qui s'exécutent pendant le cycle de vie du sous-agent. Il y a deux façons de configurer les hooks :765Les sous-agents peuvent définir des [hooks](/docs/fr/hooks) qui s'exécutent pendant le cycle de vie du sous-agent. Il y a deux façons de configurer les hooks :

766 766 

767* **Dans le frontmatter du sous-agent** : définir les hooks qui s'exécutent uniquement pendant que ce sous-agent spécifique est actif767* **Dans le frontmatter du sous-agent** : définir les hooks qui s'exécutent uniquement pendant que ce sous-agent est actif

768* **Dans `settings.json`** : définir les hooks au niveau de la session qui se déclenchent également à l'intérieur des sous-agents. Les événements d'outils tels que `PreToolUse` et `PostToolUse` se déclenchent pour les appels d'outils du sous-agent de la même manière qu'ils le font dans la conversation principale, et `SubagentStart` et `SubagentStop` se déclenchent lorsqu'un sous-agent démarre ou se termine768* **Dans `settings.json`** : définir les hooks au niveau de la session qui se déclenchent également à l'intérieur des sous-agents. Les événements d'outils tels que `PreToolUse` et `PostToolUse` se déclenchent pour les appels d'outils du sous-agent de la même manière qu'ils le font dans la conversation principale, et `SubagentStart` et `SubagentStop` se déclenchent lorsqu'un sous-agent démarre ou se termine

769 769 

770Les hooks des [fichiers de paramètres, des paramètres de politique gérée et des plugins](/docs/fr/hooks#hook-locations) s'appliquent tous à l'intérieur des sous-agents, donc un hook `PreToolUse` dans `settings.json` s'exécute également avant chaque outil qu'un sous-agent utilise.770Les hooks des [fichiers de paramètres, des paramètres de politique gérée et des plugins](/docs/fr/hooks#hook-locations) s'appliquent tous à l'intérieur des sous-agents, donc un hook `PreToolUse` dans `settings.json` s'exécute également avant chaque outil qu'un sous-agent utilise.


779 Les hooks de frontmatter se déclenchent lorsque l'agent est généré en tant que sous-agent via l'outil Agent ou une @-mention, et lorsque l'agent s'exécute en tant que session principale via [`--agent`](#invoke-subagents-explicitly) ou le paramètre `agent`. Dans le cas de la session principale, ils s'exécutent aux côtés de tous les hooks définis dans [`settings.json`](/docs/fr/hooks).779 Les hooks de frontmatter se déclenchent lorsque l'agent est généré en tant que sous-agent via l'outil Agent ou une @-mention, et lorsque l'agent s'exécute en tant que session principale via [`--agent`](#invoke-subagents-explicitly) ou le paramètre `agent`. Dans le cas de la session principale, ils s'exécutent aux côtés de tous les hooks définis dans [`settings.json`](/docs/fr/hooks).

780</Note>780</Note>

781 781 

782Pour que les hooks de frontmatter d'un sous-agent au niveau du projet s'exécutent, acceptez la [boîte de dialogue de confiance de l'espace de travail](/docs/fr/permissions#project-allow-rules-and-workspace-trust) pour le dossier qui contient le fichier d'agent. Les hooks des sous-agents au niveau utilisateur dans `~/.claude/agents/` et des définitions que vous passez avec `--agents` s'exécutent sans cette étape. Si vous avez ajouté un dossier avec `--add-dir` en dehors du référentiel de l'espace de travail de confiance de votre organisation, faites confiance à ce dossier séparément : ses hooks `.claude/agents/` n'héritent pas de la confiance de votre espace de travail. Jusqu'à ce que vous fassiez confiance au dossier, le sous-agent s'exécute toujours, mais Claude Code ignore ses hooks de frontmatter et enregistre une erreur dans le journal de débogage expliquant comment faire confiance au dossier. C'est une règle plus stricte que celle pour les hooks dans les fichiers de paramètres : faire confiance à un dossier parent ne suffit pas, et une session `-p` ne compte pas comme de confiance. [What runs before you trust a folder](/docs/fr/permissions#what-runs-before-you-trust-a-folder) compare les deux. Avant la v2.1.218, les hooks de frontmatter pouvaient s'exécuter à partir de dossiers que vous n'aviez pas de confiance, y compris dans les sessions non interactives.782Pour que les hooks de frontmatter d'un sous-agent au niveau du projet s'exécutent, acceptez la [boîte de dialogue de confiance de l'espace de travail](/docs/fr/permissions#project-allow-rules-and-workspace-trust) pour le dossier qui contient le fichier d'agent. Les hooks des sous-agents au niveau utilisateur dans `~/.claude/agents/` et des définitions que vous passez avec `--agents` s'exécutent sans cette étape. Si vous avez ajouté un dossier avec `--add-dir` en dehors du dépôt de votre espace de travail de confiance, faites confiance à ce dossier séparément : ses hooks `.claude/agents/` n'héritent pas de la confiance de l'espace de travail.

783 

784Jusqu'à ce que vous fassiez confiance au dossier, le sous-agent s'exécute toujours, mais Claude Code ignore ses hooks de frontmatter et enregistre une erreur dans le journal de débogage expliquant comment faire confiance au dossier. C'est une règle plus stricte que celle pour les hooks dans les fichiers de paramètres : faire confiance à un dossier parent ne suffit pas, et une session `-p` ne compte pas comme de confiance. [Ce qui s'exécute avant que vous fassiez confiance à un dossier](/docs/fr/permissions#what-runs-before-you-trust-a-folder) compare les deux. Avant la v2.1.218, les hooks de frontmatter pouvaient s'exécuter à partir de dossiers auxquels vous n'aviez pas fait confiance, y compris dans les sessions non interactives.

783 785 

784Tous les [événements de hook](/docs/fr/hooks#hook-events) sont pris en charge. Les événements les plus courants pour les sous-agents sont :786Tous les [événements de hook](/docs/fr/hooks#hook-events) sont pris en charge. Les événements les plus courants pour les sous-agents sont :

785 787 


1253| `x` | Arrêter le fork sélectionné s'il est en cours d'exécution, ou ignorer sa ligne s'il n'est plus en cours d'exécution. Sur la ligne de la session principale, ou sur la ligne du fork dont vous avez ouvert la transcription avec `Entrée`, `x` tape dans l'invite à la place |1255| `x` | Arrêter le fork sélectionné s'il est en cours d'exécution, ou ignorer sa ligne s'il n'est plus en cours d'exécution. Sur la ligne de la session principale, ou sur la ligne du fork dont vous avez ouvert la transcription avec `Entrée`, `x` tape dans l'invite à la place |

1254| `Échap` | Retourner le focus à l'entrée d'invite |1256| `Échap` | Retourner le focus à l'entrée d'invite |

1255 1257 

1256Avec la transcription d'un fork ou d'un sous-agent ouverte, les messages de suivi et les [skills](/docs/fr/skills) vont à cet agent, mais les commandes intégrées s'exécutent toujours dans votre conversation principale. À partir de v2.1.199, taper `/model` ou `/fast` dans cette vue affiche un avis indiquant que cela change le modèle ou le mode rapide de la conversation principale, et non celui de l'agent visualisé, au lieu de l'exécuter silencieusement.1258Avec la transcription d'un fork ou d'un sous-agent ouverte, les messages de suivi et les [skills](/docs/fr/skills) vont à cet agent, et les commandes intégrées vont à votre conversation principale, avec ces garde-fous :

1259 

1260* `/compact`, `/clear` et `/rewind` agissent sur la conversation principale, donc Claude Code vous demande de confirmer avant d'exécuter l'une d'elles depuis cette vue.

1261* `/model` et `/fast` définissent le modèle et le mode rapide de la conversation principale, et non ceux de l'agent visualisé, donc elles ne s'exécutent pas depuis cette vue. Un avis vous en indique la raison.

1262 

1263Pour que l'agent visualisé lise votre message avant que le travail qu'il attend ne se termine, envoyez-le avec [`Ctrl+Enter` ou `Ctrl+X Ctrl+S`](/docs/fr/keybindings#chat-actions). Toute commande shell ou tout sous-agent que l'agent attend et qui peut passer en [arrière-plan](/docs/fr/tools-reference#background-commands) y passe et continue de s'exécuter. Lorsque l'agent rédige une réponse, ou attend un travail qui ne peut pas passer en arrière-plan, il continue et lit votre message une fois ce travail terminé. Nécessite Claude Code v2.1.286 ou version ultérieure.

1257 1264 

1258<h3 id="how-forks-differ-from-other-subagents">1265<h3 id="how-forks-differ-from-other-subagents">

1259 Comment les forks diffèrent des autres sous-agents1266 Comment les forks diffèrent des autres sous-agents

Details

231 231 

232Quand une commande au premier plan atteint son délai d'expiration 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`. La [limite de temps](#time-limit-for-background-commands) d'une commande déplacée est comptée à partir du déplacement, et la commande déplacée d'un sous-agent au premier plan s'arrête toujours quand l'exécution de ce sous-agent se termine.232Quand une commande au premier plan atteint son délai d'expiration 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`. La [limite de temps](#time-limit-for-background-commands) d'une commande déplacée est comptée à partir du déplacement, et la commande déplacée d'un sous-agent au premier plan s'arrête toujours quand l'exécution de ce sous-agent se termine.

233 233 

234Définir [`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.234Définir [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1`](/docs/fr/env-vars#variables) ou exécuter en [mode bare](/docs/fr/headless#start-faster-with-bare-mode) désactive la mise en arrière-plan automatique ainsi que le reste de la fonctionnalité de tâche en arrière-plan, de sorte qu'une commande qui atteint son délai d'expiration s'arrête à la place.

235 235 

236Le résultat d'une commande déplacée en arrière-plan indique ce qui s'est passé :236Le résultat d'une commande déplacée en arrière-plan indique ce qui s'est passé :

237 237 


661 661 

662Une règle `WebFetch(domain:...)` explicite dans `deny`, `ask`, ou `allow` prend précédence sur l'ensemble préapprouvé, vous pouvez donc bloquer un domaine préapprouvé ou exiger une invite pour celui-ci.662Une règle `WebFetch(domain:...)` explicite dans `deny`, `ask`, ou `allow` prend précédence sur l'ensemble préapprouvé, vous pouvez donc bloquer un domaine préapprouvé ou exiger une invite pour celui-ci.

663 663 

664Lorsque l'URL est un lien d'[artefact](/docs/fr/artifacts) claude.ai, Claude Code peut également demander l'approbation pour lire l'artefact lui-même. Pour les cas où il le demande, consultez [Lire un artefact partagé avec vous](/docs/fr/artifacts#read-an-artifact-shared-with-you).

665 

664WebFetch définit un en-tête `User-Agent` commençant par `Claude-User`, et un en-tête `Accept` qui préfère Markdown à HTML afin que les serveurs qui supportent la négociation de contenu puissent retourner Markdown directement.666WebFetch définit un en-tête `User-Agent` commençant par `Claude-User`, et un en-tête `Accept` qui préfère Markdown à HTML afin que les serveurs qui supportent la négociation de contenu puissent retourner Markdown directement.

665 667 

666Les commandes en sandbox n'héritent pas de l'ensemble intégré de domaines de documentation préapprouvés de WebFetch. Pour permettre à une commande en sandbox d'atteindre un domaine sans invite, ajoutez le domaine à [`allowedDomains`](/docs/fr/settings-reference#sandbox-network-alloweddomains) ou autorisez-le avec une règle `WebFetch(domain:...)`, que le [sandbox honore également](/docs/fr/sandboxing#network-isolation). WebFetch ne lit jamais la liste d'autorisation du sandbox en retour, donc ajouter un domaine à un sandbox ou à une liste d'autorisation du réseau de l'organisation n'empêche pas WebFetch de demander pour celui-ci.668Les commandes en sandbox n'héritent pas de l'ensemble intégré de domaines de documentation préapprouvés de WebFetch. Pour permettre à une commande en sandbox d'atteindre un domaine sans invite, ajoutez le domaine à [`allowedDomains`](/docs/fr/settings-reference#sandbox-network-alloweddomains) ou autorisez-le avec une règle `WebFetch(domain:...)`, que le [sandbox honore également](/docs/fr/sandboxing#network-isolation). WebFetch ne lit jamais la liste d'autorisation du sandbox en retour, donc ajouter un domaine à un sandbox ou à une liste d'autorisation du réseau de l'organisation n'empêche pas WebFetch de demander pour celui-ci.

Details

22| `curl: (23)` ou `curl: (56) Failure writing output to destination` | [Vérifiez la connectivité ou utilisez un programme d'installation alternatif](#curl-56-failure-writing-output-to-destination) |22| `curl: (23)` ou `curl: (56) Failure writing output to destination` | [Vérifiez la connectivité ou utilisez un programme d'installation alternatif](#curl-56-failure-writing-output-to-destination) |

23| `Killed` pendant l'installation sur Linux, ou `Installation was killed before it could finish (exit code 137)` | [Libérez de la mémoire ou ajoutez de l'espace d'échange](#install-killed-on-low-memory-linux-servers) |23| `Killed` pendant l'installation sur Linux, ou `Installation was killed before it could finish (exit code 137)` | [Libérez de la mémoire ou ajoutez de l'espace d'échange](#install-killed-on-low-memory-linux-servers) |

24| `Raw mode is not supported` pendant l'installation | [Réexécutez le programme d'installation](#raw-mode-is-not-supported-during-install) |24| `Raw mode is not supported` pendant l'installation | [Réexécutez le programme d'installation](#raw-mode-is-not-supported-during-install) |

25| `EACCES: permission denied` pendant l'installation | [Corrigez les permissions du répertoire d'installation](#permission-errors-during-installation) |

25| `TLS connect error` ou `SSL/TLS secure channel` | [Mettez à jour les certificats CA](#tls-or-ssl-connection-errors) |26| `TLS connect error` ou `SSL/TLS secure channel` | [Mettez à jour les certificats CA](#tls-or-ssl-connection-errors) |

26| `Failed to fetch version` ou impossible d'atteindre le serveur de téléchargement | [Vérifiez les paramètres réseau et proxy](#check-network-connectivity) |27| `Failed to fetch version` ou impossible d'atteindre le serveur de téléchargement | [Vérifiez les paramètres réseau et proxy](#check-network-connectivity) |

27| `irm is not recognized` ou `The token '&&' is not a valid statement separator` | [Utilisez la bonne commande pour votre shell](#wrong-install-command-on-windows) |28| `irm is not recognized` ou `The token '&&' is not a valid statement separator` | [Utilisez la bonne commande pour votre shell](#wrong-install-command-on-windows) |


34| `Error loading shared library` | [Mauvaise variante binaire pour votre système](#linux-musl-or-glibc-binary-mismatch) |35| `Error loading shared library` | [Mauvaise variante binaire pour votre système](#linux-musl-or-glibc-binary-mismatch) |

35| `Illegal instruction` | [Incompatibilité d'architecture ou d'ensemble d'instructions CPU](#illegal-instruction) |36| `Illegal instruction` | [Incompatibilité d'architecture ou d'ensemble d'instructions CPU](#illegal-instruction) |

36| `cannot execute binary file: Exec format error` dans WSL | [Régression binaire native WSL1](#exec-format-error-on-wsl1) |37| `cannot execute binary file: Exec format error` dans WSL | [Régression binaire native WSL1](#exec-format-error-on-wsl1) |

38| `Bus error` ou `oh no: Bun has crashed` pendant qu'une session est en cours | [Gardez l'exécutable lisible](#bus-error-while-a-session-is-running) |

37| Le programme d'installation PowerShell se termine mais `claude` n'est pas trouvé ou affiche une ancienne version | [Ajoutez le répertoire d'installation à votre PATH](#verify-your-path), puis ouvrez un nouveau terminal |39| Le programme d'installation PowerShell se termine mais `claude` n'est pas trouvé ou affiche une ancienne version | [Ajoutez le répertoire d'installation à votre PATH](#verify-your-path), puis ouvrez un nouveau terminal |

38| `dyld: Symbol not found`, `dyld: cannot load`, ou `Abort trap` sur macOS | [Incompatibilité binaire](#dyld-cannot-load-on-macos) |40| `dyld: Symbol not found`, `dyld: cannot load`, ou `Abort trap` sur macOS | [Incompatibilité binaire](#dyld-cannot-load-on-macos) |

39| `claude update` se bloque après `Checking for updates`, ou `claude doctor` se bloque sans sortie | [Déplacez le répertoire à un chemin de configuration shell](#claude-update-or-claude-doctor-hangs) |41| `claude update` se bloque après `Checking for updates`, ou `claude doctor` se bloque sans sortie | [Déplacez le répertoire à un chemin de configuration shell](#claude-update-or-claude-doctor-hangs) |


295 Vérifiez les permissions des répertoires297 Vérifiez les permissions des répertoires

296</h3>298</h3>

297 299 

298Le programme d'installation a besoin d'accès en écriture à `~/.local/bin/` et `~/.claude/` sur macOS et Linux. Sur Windows, l'emplacement d'installation est sous `%USERPROFILE%`, qui est accessible en écriture par votre utilisateur par défaut, donc cette section s'applique rarement là.300Une installation qui échoue en raison des permissions indique le chemin qu'elle n'a pas pu créer ou dans lequel elle n'a pas pu écrire. Sur Windows, l'installation écrit sous `%USERPROFILE%`, qui est accessible en écriture par votre utilisateur par défaut, donc cette section s'applique rarement là.

301 

302Sur macOS et Linux, l'installation écrit dans ces emplacements :

303 

304* `~/.claude/downloads/` : où la commande d'installation place le binaire téléchargé

305* `~/.local/bin/` : le lanceur `claude`

306* `~/.local/share/claude/` : chaque version qu'elle télécharge

307* `~/.local/state/claude/` : ses fichiers de verrouillage

308* `~/.cache/claude/` : les téléchargements intermédiaires

309* [`~/.claude.json`](/docs/fr/claude-directory) : votre fichier de configuration globale, où le programme d'installation enregistre la méthode d'installation

310 

311Si vous définissez `XDG_DATA_HOME`, `XDG_STATE_HOME` ou `XDG_CACHE_HOME`, l'installation les utilise à la place de `~/.local/share`, `~/.local/state` et `~/.cache`. Si vous définissez [`CLAUDE_CONFIG_DIR`](/docs/fr/env-vars), le fichier de configuration globale se trouve dans ce répertoire au lieu de votre répertoire personnel.

299 312 

300Vérifiez si les répertoires sont accessibles en écriture :313Vérifiez si les répertoires sont accessibles en écriture :

301 314 


847 860 

8482. **Mettez à jour macOS** si vous êtes sur une version plus ancienne. Le binaire utilise des commandes de chargement et des bibliothèques système que les versions macOS plus anciennes ne prennent pas en charge. Les méthodes d'installation alternatives comme Homebrew téléchargent le même binaire et ne résoudront pas cette erreur.8612. **Mettez à jour macOS** si vous êtes sur une version plus ancienne. Le binaire utilise des commandes de chargement et des bibliothèques système que les versions macOS plus anciennes ne prennent pas en charge. Les méthodes d'installation alternatives comme Homebrew téléchargent le même binaire et ne résoudront pas cette erreur.

849 862 

863<h3 id="bus-error-while-a-session-is-running">

864 `Bus error` pendant l'exécution d'une session

865</h3>

866 

867Si une session en cours se termine et que votre shell affiche `Bus error`, l'une des causes possibles est que Claude Code ne pouvait plus lire son propre fichier exécutable sur le disque. Par exemple, le fichier a été tronqué, ou supprimé sur un stockage réseau, pendant l'exécution de la session.

868 

869Avant le message du shell, le runtime de Claude Code peut afficher un rapport de plantage qui inclut `panic(main thread): Bus error at address` et `oh no: Bun has crashed. This indicates a bug in Bun, not your code.` Lorsque l'exécutable est devenu illisible, le plantage provient du fichier illisible, et non d'un bug dans Bun. Le rapport peut également être absent, si le runtime n'a pas non plus pu lire le code qui l'affiche.

870 

871Démarrez une nouvelle session pour continuer. Si Claude Code est installé sur un stockage réseau, suivez [Installer sur un stockage réseau](/docs/fr/setup#install-on-network-storage) afin que les mises à niveau ne suppriment pas un binaire dont les sessions en cours ont encore besoin.

872 

850<h3 id="exec-format-error-on-wsl1">873<h3 id="exec-format-error-on-wsl1">

851 `Exec format error` sur WSL1874 `Exec format error` sur WSL1

852</h3>875</h3>


1026 1049 

1027* **Utilisateurs Claude Pro/Max** : vérifiez que votre abonnement est actif sur [claude.ai/settings](https://claude.ai/settings)1050* **Utilisateurs Claude Pro/Max** : vérifiez que votre abonnement est actif sur [claude.ai/settings](https://claude.ai/settings)

1028* **Utilisateurs Anthropic Console** : confirmez que votre compte a le rôle « Claude Code » ou « Developer ». Les administrateurs l'attribuent dans la console Anthropic sous Paramètres → Membres.1051* **Utilisateurs Anthropic Console** : confirmez que votre compte a le rôle « Claude Code » ou « Developer ». Les administrateurs l'attribuent dans la console Anthropic sous Paramètres → Membres.

1029* **Derrière un proxy** : les proxies d'entreprise peuvent interférer avec les demandes API. Consultez [configuration réseau](/docs/fr/network-config) pour la configuration du proxy.1052* **Derrière un proxy** : les proxys d'entreprise peuvent interférer avec les requêtes API. Consultez [configuration réseau](/docs/fr/network-config) pour la configuration du proxy.

1030 1053 

1031<h3 id="claude-code-access-has-not-been-granted-for-this-account">1054<h3 id="claude-code-access-has-not-been-granted-for-this-account">

1032 L'accès à Claude Code n'a pas été accordé pour ce compte1055 L'accès à Claude Code n'a pas été accordé pour ce compte


1043 Cette organisation a été désactivée avec un abonnement actif1066 Cette organisation a été désactivée avec un abonnement actif

1044</h3>1067</h3>

1045 1068 

1046Si vous voyez `API Error: 400 ... "This organization has been disabled"` malgré un abonnement Claude actif, une variable d'environnement `ANTHROPIC_API_KEY` remplace vos identifiants OAuth d'abonnement. Cela se produit couramment lorsqu'une ancienne clé API d'un employeur ou d'un projet précédent est toujours définie dans votre profil shell.1069Si vous voyez `API Error: 400 ... "This organization has been disabled"` malgré un abonnement Claude actif, une variable d'environnement `ANTHROPIC_API_KEY` remplace votre abonnement. Cela se produit couramment lorsqu'une ancienne clé API d'un employeur ou d'un projet précédent est toujours définie dans votre profil shell.

1047 1070 

1048Lorsque `ANTHROPIC_API_KEY` est présente et que vous l'avez approuvée, Claude Code utilise cette clé au lieu des identifiants OAuth de votre abonnement. En mode non interactif avec le drapeau `-p`, la clé est toujours utilisée lorsqu'elle est présente. Consultez [précédence d'authentification](/docs/fr/authentication#authentication-precedence) pour l'ordre de résolution complet.1071Lorsque `ANTHROPIC_API_KEY` est présente et que vous l'avez approuvée, Claude Code utilise cette clé au lieu des identifiants OAuth de votre abonnement. En mode non interactif avec le flag `-p`, la clé est toujours utilisée lorsqu'elle est présente. Consultez [priorité d'authentification](/docs/fr/authentication#authentication-precedence) pour l'ordre de résolution complet.

1049 1072 

1050Pour utiliser votre abonnement à la place, défiez la variable d'environnement et supprimez-la de votre profil shell :1073Pour utiliser votre abonnement à la place, supprimez la définition de la variable d'environnement et retirez-la de votre profil shell :

1051 1074 

1052<Tabs>1075<Tabs>

1053 <Tab title="macOS/Linux">1076 <Tab title="macOS/Linux">


1088claude auth login1111claude auth login

1089```1112```

1090 1113 

1091Ce secours s'applique également sur Windows natif ou tout terminal où coller le code dans l'invite interactive échoue.1114Cette solution de repli s'applique également sur Windows natif ou tout terminal où coller le code dans l'invite interactive échoue.

1092 1115 

1093<h3 id="not-logged-in-or-token-expired">1116<h3 id="not-logged-in-or-token-expired">

1094 Non connecté ou jeton expiré1117 Non connecté ou jeton expiré


1098 1121 

1099Exécutez `/login` pour vous ré-authentifier. Si cela se produit fréquemment, vérifiez que votre horloge système est exacte, car la validation du jeton dépend des horodatages corrects.1122Exécutez `/login` pour vous ré-authentifier. Si cela se produit fréquemment, vérifiez que votre horloge système est exacte, car la validation du jeton dépend des horodatages corrects.

1100 1123 

1101Les sessions parallèles sur une machine partagent une connexion enregistrée et coordonnent son renouvellement afin qu'un seul processus actualise le jeton à la fois. Avant la v2.1.211, le réveil de la machine du sommeil pouvait faire que deux sessions se renouvellent avec le même jeton, ce qui révoquait la connexion enregistrée et invitait chaque session ouverte à se connecter à nouveau à la fois.1124Les sessions parallèles sur une machine partagent une connexion enregistrée et coordonnent son renouvellement afin qu'un seul processus actualise le jeton à la fois. Pour savoir ce que font les autres sessions après que vous vous êtes reconnecté dans l'une d'elles, consultez [Non connecté](/docs/fr/errors#not-logged-in).

1125 

1126Avant la v2.1.211, le réveil de la machine du sommeil pouvait faire que deux sessions se renouvellent avec le même jeton, ce qui révoquait la connexion enregistrée et invitait chaque session ouverte à se connecter à nouveau à la fois.

1102 1127 

1103Sur macOS, Claude Code enregistre les identifiants dans le Keychain de connexion. Lorsque le Keychain rejette l'écriture, par exemple lorsqu'il est verrouillé dans une session SSH ou que son mot de passe est désynchronisé avec votre mot de passe de compte, Claude Code enregistre votre connexion dans le fichier en texte brut `~/.claude/.credentials.json` à la place. Une connexion Console qui crée une clé API échoue jusqu'à ce que le Keychain soit à nouveau accessible en écriture.1128Sur macOS, Claude Code enregistre les identifiants dans le Keychain de connexion. Lorsque le Keychain rejette l'écriture, par exemple lorsqu'il est verrouillé dans une session SSH ou que son mot de passe est désynchronisé avec votre mot de passe de compte, Claude Code enregistre votre connexion dans le fichier en texte brut `~/.claude/.credentials.json` à la place. Une connexion Console qui crée une clé API échoue jusqu'à ce que le Keychain soit à nouveau accessible en écriture.

1104 1129 

Details

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

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

82 82 

83Si l'erreur revient après un `/clear`, exécutez [`/context`](/docs/fr/debug-your-config) et comparez la ligne `Messages` aux lignes situées au-dessus :

84 

85* **`Messages` est la ligne la plus grande** : un fichier ou une sortie d'outil dans la nouvelle conversation remplit à nouveau la fenêtre, reprenez donc les étapes 1 à 3

86* **Les autres lignes réunies sont plus grandes** : ce qui se charge au démarrage de la session laisse trop peu de place pour travailler, [réduisez donc ce qui se charge au démarrage](/docs/fr/errors#prompt-is-too-long)

87 

83<h3 id="command-hangs-or-freezes">88<h3 id="command-hangs-or-freezes">

84 Les commandes se figent ou se gèlent89 Les commandes se figent ou se gèlent

85</h3>90</h3>

ultrareview.md +7 −7

Details

30/code-review ultra30/code-review ultra

31```31```

32 32 

33Sans arguments, ultrareview examine la différence entre votre branche actuelle et la branche par défaut, y compris les modifications non validées et les modifications en attente. Pour les modifications non validées de fichiers nommés comme des identifiants ou des clés, tels que les fichiers `.env` et `*.tfvars`, Claude Code suit les règles pour [charger un référentiel local vers une session cloud](/docs/fr/claude-code-on-the-web#send-local-repositories-without-github).33Sans arguments, ultrareview examine le diff entre votre branche actuelle et la branche par défaut, y compris les modifications non commitées et les modifications indexées.

34 34 

35Pour une revue de branche, Claude Code regroupe l'état du référentiel et le charge dans un sandbox cloud ; lorsque vous [examinez une demande de tirage](#review-a-pull-request), Claude Code ne charge rien de votre machine.35Pour une revue de branche, Claude Code regroupe l'état du dépôt et le charge dans un sandbox cloud selon les règles pour [charger un dépôt local vers une session cloud](/docs/fr/claude-code-on-the-web#send-local-repositories-without-github), qui couvrent les limites de taille, les exigences du checkout et ce qu'il advient des modifications non commitées dans les fichiers nommés comme des identifiants ou des clés, tels que les fichiers `.env` et `*.tfvars`. Lorsque vous [examinez une pull request](#review-a-pull-request), Claude Code ne charge rien depuis votre machine.

36 36 

37Avant le lancement, Claude Code affiche une boîte de dialogue de confirmation avec l'étendue de la revue, vos exécutions gratuites restantes et le coût estimé ; pour une revue de branche, l'étendue inclut le nombre de fichiers et de lignes. Après confirmation, la revue continue en arrière-plan pendant que vous continuez à utiliser votre session.37Avant le lancement, Claude Code affiche une boîte de dialogue de confirmation avec l'étendue de la revue, vos exécutions gratuites restantes et le coût estimé ; pour une revue de branche, l'étendue inclut le nombre de fichiers et de lignes. Après confirmation, la revue continue en arrière-plan pendant que vous continuez à utiliser votre session.

38 38 


153 Suivre une révision en cours153 Suivre une révision en cours

154</h2>154</h2>

155 155 

156Une révision prend généralement 5 à 10 minutes. La révision s'exécute en tant que tâche en arrière-plan, de sorte que vous pouvez continuer à travailler dans votre session, démarrer d'autres commandes ou fermer complètement le terminal. Si vous avez choisi de [publier les constatations sur la demande de tirage](#post-findings-to-the-pull-request), gardez la session ouverte jusqu'à ce que la révision se termine ; si la session se termine en premier, Claude Code ne publie rien.156Une révision prend généralement 5 à 10 minutes. La révision s'exécute en tant que tâche en arrière-plan, de sorte que vous pouvez continuer à travailler dans votre session ou démarrer d'autres commandes. Si vous avez choisi de [publier les constatations sur la pull request](#post-findings-to-the-pull-request), gardez la session ouverte jusqu'à ce que la révision se termine ; si la session se termine en premier, Claude Code ne publie rien.

157 157 

158Utilisez `/tasks` pour voir les révisions en cours et terminées, ouvrir la vue détaillée d'une révision ou arrêter une révision en cours. Si vous arrêtez une révision, Claude Code archive la session cloud et ne retourne pas les constatations partielles.158Utilisez `/tasks` pour voir les révisions en cours et terminées, ouvrir la vue détaillée d'une révision ou arrêter une révision en cours. Si vous arrêtez une révision, Claude Code archive la session cloud et ne retourne pas les constatations partielles.

159 159 


181 181 

182Vous consentez au repli sur l'ensemble du référentiel et à l'invite de facturation et de conditions lorsque vous exécutez la sous-commande, de sorte que l'exécution démarre sans attendre d'entrée. L'exécution vous-même est ce qui compte comme consentement. Lorsque Claude exécute la sous-commande pour vous à la place, par exemple via l'outil Bash, Claude Code refuse la révision de l'ensemble du référentiel.182Vous consentez au repli sur l'ensemble du référentiel et à l'invite de facturation et de conditions lorsque vous exécutez la sous-commande, de sorte que l'exécution démarre sans attendre d'entrée. L'exécution vous-même est ce qui compte comme consentement. Lorsque Claude exécute la sous-commande pour vous à la place, par exemple via l'outil Bash, Claude Code refuse la révision de l'ensemble du référentiel.

183 183 

184Sur Claude Code v2.1.218 ou ultérieur, vous pouvez également démarrer la révision cloud en exécutant `/code-review ultra` dans une session non-interactive, par exemple `claude -p '/code-review ultra'`. Claude Code lance la révision et imprime un lien de suivi sans attendre les constatations, contrairement à `claude ultrareview`, qui bloque jusqu'à leur arrivée. Lorsque la révision facturerait des crédits d'utilisation, Claude Code s'arrête avant de lancer et vous oriente vers `claude ultrareview`, car la confirmation de facturation nécessite une session interactive. Avant v2.1.218, `/code-review ultra` dans une session non-interactive exécutait une révision locale.184`claude -p '/code-review ultra'` ne vous fournit pas les constatations, utilisez donc `claude ultrareview` dans les scripts. L'exécution `-p` lance la revue cloud et se termine sans l'attendre. Lorsque la revue facturerait des crédits d'utilisation, l'exécution `-p` s'arrête sans la lancer. Avant v2.1.218, `/code-review ultra` dans une session non-interactive exécutait une revue locale.

185 185 

186Les messages de progression et l'URL de session en direct vont vers stderr afin que stdout reste analysable. Utilisez ces drapeaux pour contrôler la sortie, le délai d'expiration et si les constatations doivent être publiées :186`claude ultrareview` écrit ses messages de progression sur stderr afin que stdout reste analysable. Utilisez ces flags pour contrôler sa sortie, le délai d'expiration et la publication ou non des constatations :

187 187 

188| Drapeau | Description |188| Drapeau | Description |

189| - | - |189| - | - |


200* **1** : la révision n'a pas pu se lancer ou a été arrêtée avant sa fin, la session cloud a généré une erreur, ou le délai d'expiration s'est écoulé200* **1** : la révision n'a pas pu se lancer ou a été arrêtée avant sa fin, la session cloud a généré une erreur, ou le délai d'expiration s'est écoulé

201* **130** : vous avez interrompu la sous-commande avec Ctrl-C201* **130** : vous avez interrompu la sous-commande avec Ctrl-C

202 202 

203Si vous interrompez la sous-commande, la révision distante continue de s'exécuter ; suivez l'URL de session imprimée sur stderr pour la regarder dans le navigateur.203Si la sous-commande se termine avant l'arrivée des constatations, celles-ci n'atteignent jamais votre terminal. La revue peut toujours être en cours d'exécution dans le cloud. Relancer la sous-commande démarre une nouvelle revue au lieu de reprendre celle-ci, et la nouvelle revue [utilise une exécution gratuite ou est facturée en crédits d'utilisation](#pricing-and-free-runs).

204 204 

205Avec `--post`, la sous-commande démarre la publication immédiatement après avoir imprimé les constatations, et imprime le lien sur stderr.205Avec `--post`, la sous-commande démarre la publication immédiatement après avoir imprimé les constatations, et imprime le lien sur stderr.

206 206 

207* Si l'exécution échoue, est arrêtée ou expire, ou si vous l'interrompez, la sous-commande ne publie rien.207* Si l'exécution échoue, est arrêtée ou expire, la sous-commande ne publie rien.

208* Si la révision se termine mais que le commentaire n'est pas publié, Claude Code imprime la raison sur stderr, et les constatations restent sur stdout afin que vous puissiez les publier manuellement.208* Si la révision se termine mais que le commentaire n'est pas publié, Claude Code imprime la raison sur stderr, et les constatations restent sur stdout afin que vous puissiez les publier manuellement.

209 209 

210Pour les révisions automatiques sur les demandes de fusion GitHub, [Code Review](/docs/fr/code-review) s'intègre directement à votre référentiel et publie les constatations sous forme de commentaires PR en ligne sans étape CLI.210Pour les révisions automatiques sur les demandes de fusion GitHub, [Code Review](/docs/fr/code-review) s'intègre directement à votre référentiel et publie les constatations sous forme de commentaires PR en ligne sans étape CLI.

vs-code.md +45 −19

Details

221* **Session titles** : les nouvelles sessions reçoivent des titres générés par l'IA en fonction de votre premier message.221* **Session titles** : les nouvelles sessions reçoivent des titres générés par l'IA en fonction de votre premier message.

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

223 223 

224Si la conversation est ouverte dans un autre processus Claude Code, tel que `claude` dans un terminal ou une autre fenêtre VS Code, un avis apparaît à la place de la boîte de saisie : `This conversation is still open somewhere else. Using it in two places at once can mix up its messages.` Pour continuer ici, fermez la conversation à l'autre endroit, puis cliquez sur **Open here anyway**. Si vous cliquez sans la fermer, la conversation est ouverte aux deux endroits. Lorsque [`claudeProcessWrapper`](#extension-settings) est défini, l'extension ignore cette vérification et ouvre directement la conversation.

225 

224Par 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**.226Par 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**.

225 227 

226Pour restaurer une session archivée, développez **Archived sessions** et cliquez sur **Unarchive session**. Pour restaurer chaque session archivée à la fois, survolez l'en-tête **Archived sessions** dans la liste des sessions dans la barre d'activité et cliquez sur son icône de désarchivage, ce qui nécessite Claude Code v2.1.277 ou version ultérieure. Avant 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.228Pour restaurer une session archivée, développez **Archived sessions** et cliquez sur **Unarchive session**. Pour restaurer chaque session archivée à la fois, survolez l'en-tête **Archived sessions** dans la liste des sessions dans la barre d'activité et cliquez sur son icône de désarchivage, ce qui nécessite Claude Code v2.1.277 ou version ultérieure. Avant 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.


299 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.301 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.

300</Tip>302</Tip>

301 303 

304<h3 id="continue-conversations-after-a-reload">

305 Poursuivez les conversations après un rechargement

306</h3>

307 

302Aprè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 :308Aprè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 :

303 309 

304* **Onglet d'éditeur** : la conversation revient avec son onglet.310* **Onglet d'éditeur** : la conversation revient avec son onglet.

305* **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).311* **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).

306 312 

313Si un autre processus Claude Code a encore la conversation ouverte, une confirmation vous est demandée avant qu'elle ne s'ouvre ici, avec le même avis **Open here anyway** que lorsque vous [la reprenez depuis l'historique des sessions](#resume-past-conversations).

314 

307Si le rechargement a interrompu Claude au milieu d'une étape, Claude continue cette étape lorsque la conversation revient, et un avis dans le chat marque la continuation. Nécessite Claude Code v2.1.274 ou version ultérieure. Si l'étape a été interrompue il y a plus d'une heure ou si la session est ouverte ailleurs, la conversation revient inactive à la place.315Si le rechargement a interrompu Claude au milieu d'une étape, Claude continue cette étape lorsque la conversation revient, et un avis dans le chat marque la continuation. Nécessite Claude Code v2.1.274 ou version ultérieure. Si l'étape a été interrompue il y a plus d'une heure ou si la session est ouverte ailleurs, la conversation revient inactive à la place.

308 316 

309Pour désactiver la continuation, ouvrez le [paramètre Continue After Reload](vscode://settings/claudeCode.continueAfterReload) et décochez-le.317Pour désactiver la continuation, ouvrez le [paramètre Continue After Reload](vscode://settings/claudeCode.continueAfterReload) et décochez-le. Définir [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/fr/env-vars#variables) ou toute autre variable `CLAUDE_CODE_RESUME_` dans l'environnement de VS Code ou dans le [paramètre `environmentVariables`](#extension-settings) n'a aucun effet dans le panneau, car l'extension supprime ces variables avant de démarrer les sessions du panneau.

310 318 

311<h3 id="run-multiple-conversations">319<h3 id="run-multiple-conversations">

312 Exécutez plusieurs conversations320 Exécutez plusieurs conversations


364 372 

365* Les **plugins installés** apparaissent en haut avec des commutateurs pour les activer ou les désactiver.373* Les **plugins installés** apparaissent en haut avec des commutateurs pour les activer ou les désactiver.

366 * Si vous désactivez un plugin que le fichier `.claude/settings.json` partagé de votre projet active, l'extension vous demande d'abord : **Désactiver pour moi** le désactive uniquement pour vous, tandis que **Désactiver pour tout le monde** modifie le fichier partagé.374 * Si vous désactivez un plugin que le fichier `.claude/settings.json` partagé de votre projet active, l'extension vous demande d'abord : **Désactiver pour moi** le désactive uniquement pour vous, tandis que **Désactiver pour tout le monde** modifie le fichier partagé.

375 * Un plugin dont le chargement a échoué affiche une brève raison sur sa ligne. Cliquez sur la raison pour voir ce que vous pouvez faire, notamment copier le message d'erreur complet pour le rechercher dans [Dépanner les plugins](/docs/fr/plugins/troubleshooting).

367* Les **plugins disponibles** de vos marketplaces configurées apparaissent ci-dessous376* Les **plugins disponibles** de vos marketplaces configurées apparaissent ci-dessous

368* Recherchez pour filtrer les plugins par nom ou description377* Recherchez pour filtrer les plugins par nom ou description

369* Cliquez sur **Installer** sur n'importe quel plugin disponible378* Cliquez sur **Installer** sur n'importe quel plugin disponible

370 379 

371Lorsque vous installez un plugin, choisissez l'étendue de l'installation :380Lorsque vous installez un plugin, choisissez la portée de l'installation :

372 381 

373* **Installer pour vous** : disponible dans tous vos projets (étendue utilisateur)382* **Installer pour vous** : disponible dans tous vos projets (portée utilisateur)

374* **Installer pour ce projet** : partagé avec les collaborateurs du projet (étendue du projet)383* **Installer pour ce projet** : partagé avec les collaborateurs du projet (portée projet)

375* **Installer localement** : uniquement pour vous, uniquement dans ce référentiel (étendue locale)384* **Installer localement** : uniquement pour vous, uniquement dans ce dépôt (portée locale)

376 385 

377Une fois l'installation terminée, un formulaire vous demande les [options de configuration](/docs/fr/plugins/components#user-configuration) du plugin qui ne sont pas encore définies. Pour examiner ou modifier les options ultérieurement, cliquez sur l'icône d'engrenage sur la ligne du plugin.386Une fois l'installation terminée, un formulaire vous demande les [options de configuration](/docs/fr/plugins/components#user-configuration) du plugin qui ne sont pas encore définies. Pour examiner ou modifier les options ultérieurement, cliquez sur l'icône d'engrenage sur la ligne du plugin.

378 387 


384 Désinstaller les plugins393 Désinstaller les plugins

385</h3>394</h3>

386 395 

387Chaque ligne installée indique l'[étendue](/docs/fr/plugins/install#choose-an-install-scope) à laquelle elle est installée. Pour désinstaller cette installation, cliquez sur l'icône de corbeille de la ligne. Une icône de corbeille estompée marque une ligne que vous ne pouvez pas désinstaller de cet espace de travail, comme un plugin que votre organisation gère ou un plugin installé pour un autre projet.396Chaque ligne installée indique la [portée](/docs/fr/plugins/install#choose-an-install-scope) à laquelle elle est installée. Pour désinstaller cette installation, cliquez sur l'icône de corbeille de la ligne. Une icône de corbeille estompée marque une ligne que vous ne pouvez pas désinstaller de cet espace de travail, comme un plugin que votre organisation gère ou un plugin installé pour un autre projet.

388 397 

389L'extension vous demande d'abord dans deux cas :398L'extension vous demande d'abord dans deux cas :

390 399 


395 Partager un lien d'installation de plugin404 Partager un lien d'installation de plugin

396</h3>405</h3>

397 406 

398Pour 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.407Pour 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 de portée de ce plugin. Rien ne s'installe jusqu'à ce que la personne choisisse une portée. 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.

399 408 

400```text theme={null}409```text theme={null}

401vscode://anthropic.claude-code/install-plugin?plugin=code-review&marketplace=anthropics/claude-plugins-official410vscode://anthropic.claude-code/install-plugin?plugin=code-review&marketplace=anthropics/claude-plugins-official


406| Paramètre | Description |415| Paramètre | Description |

407| - | - |416| - | - |

408| `plugin` | Le nom du plugin tel que sa marketplace le répertorie. Obligatoire. |417| `plugin` | Le nom du plugin tel que sa marketplace le répertorie. Obligatoire. |

409| `marketplace` | D'où provient le plugin : un `owner/repo` GitHub, une URL `https://`, ou une URL git SSH telle que `git@github.com:owner/repo.git`. Par défaut `anthropics/claude-plugins-official` lorsqu'il est omis. |418| `marketplace` | La [source](/docs/fr/plugins/install#add-a-marketplace) de la marketplace : un `owner/repo` GitHub, une URL `https://`, ou une adresse git SSH telle que `git@github.com:owner/repo.git`. Par défaut `anthropics/claude-plugins-official` lorsqu'il est omis. |

419 

420L'extension vérifie les deux valeurs avant d'ouvrir quoi que ce soit :

421 

422* **Nom du plugin** : 100 caractères au maximum, commençant par une lettre ou un chiffre ASCII et n'utilisant par ailleurs que des lettres ASCII, des chiffres, `.`, `_` et `-`.

423* **Source de la marketplace** : uniquement les formes que le paramètre `marketplace` répertorie, donc ni un chemin local, ni une adresse `http://`, ni le nom de la marketplace, comme `claude-plugins-official`. Une URL `https://` ne peut pas contenir de nom d'utilisateur, de mot de passe ni de chaîne de requête.

424* **Référence Git** : pour épingler la marketplace à une branche ou à un tag, ajoutez la référence à la source après `%23`, la forme encodée de `#`, comme dans `marketplace=owner/repo%23v1.0`. Un lien avec un `#` non encodé échoue. Les marketplaces de l'organisation GitHub `anthropics` ne peuvent pas être épinglées dans un lien.

410 425 

411Certaines valeurs que l'[onglet Marketplaces](#manage-marketplaces) accepte ne fonctionnent pas dans un lien, comme un chemin local ou une adresse `http://`. Pour celles-ci, VS Code affiche un message d'erreur et la boîte de dialogue ne s'ouvre pas.426Une personne qui ouvre un lien qui enfreint ces règles voit une erreur commençant par `Invalid plugin installation URL`. Le panneau Claude Code et la boîte de dialogue ne s'ouvrent pas, et rien ne s'installe. Si le nom ou la marketplace de votre plugin ne peut pas figurer dans un lien, indiquez aux utilisateurs d'ajouter la marketplace dans l'onglet **Marketplaces**, puis d'installer le plugin depuis l'onglet **Plugins**.

412 427 

413Deux cas se terminent par un message dans la boîte de dialogue au lieu du choix d'étendue :428Ces cas se terminent par un message dans la boîte de dialogue au lieu du choix de portée :

414 429 

415* **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.430* **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.

416* **Le plugin est déjà installé** : la boîte de dialogue l'indique, et rien ne change.431* **Le plugin est déjà installé** : la boîte de dialogue l'indique, et rien ne change.

432* **Une autre marketplace portant le même nom est déjà ajoutée** : la boîte de dialogue indique que la marketplace du lien n'a pas été ajoutée, et rien ne s'installe.

417 433 

418Les 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://`.434Les 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://`.

419 435 


423 439 

424Basculez vers l'onglet **Marketplaces** pour ajouter ou supprimer des sources de plugins :440Basculez vers l'onglet **Marketplaces** pour ajouter ou supprimer des sources de plugins :

425 441 

426* Entrez un référentiel GitHub, une URL ou un chemin local pour ajouter une nouvelle marketplace442* Entrez un dépôt GitHub, une URL ou un chemin local pour ajouter une nouvelle marketplace

427* Cliquez sur l'icône d'actualisation pour mettre à jour la liste des plugins d'une marketplace443* Cliquez sur l'icône d'actualisation pour mettre à jour la liste des plugins d'une marketplace

428* Cliquez sur l'icône de corbeille pour supprimer une marketplace. La supprimer [désinstalle tous les plugins que vous avez installés à partir de celle-ci](/docs/fr/plugins/install#manage-marketplaces), donc une confirmation nomme d'abord ces plugins444* Cliquez sur l'icône de corbeille pour supprimer une marketplace. La supprimer [désinstalle tous les plugins que vous avez installés à partir de celle-ci](/docs/fr/plugins/install#manage-marketplaces), donc une confirmation nomme d'abord ces plugins

429 445 


572| `enableNewConversationShortcut` | `false` | Activez Cmd/Ctrl+N pour démarrer une nouvelle conversation |588| `enableNewConversationShortcut` | `false` | Activez Cmd/Ctrl+N pour démarrer une nouvelle conversation |

573| `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. |589| `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. |

574| `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 |590| `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 |

575| `continueAfterReload` | `true` | Après un rechargement de fenêtre, Claude [continue l'étape qui a été interrompue](#choose-where-claude-lives) dans la session restaurée. Nécessite Claude Code v2.1.274 ou ultérieur |591| `continueAfterReload` | `true` | Après un rechargement de fenêtre, Claude [continue l'étape qui a été interrompue](#continue-conversations-after-a-reload) dans la session restaurée. Nécessite Claude Code v2.1.274 ou ultérieur |

576| `hideOnboarding` | `false` | Masquez la liste de contrôle d'intégration (icône de chapeau de graduation) |592| `hideOnboarding` | `false` | Masquez la liste de contrôle d'intégration (icône de chapeau de graduation) |

577| `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 |593| `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 |

578| `respectGitIgnore` | `true` | Excluez les modèles .gitignore des recherches de fichiers et de [contexte de sélection](#reference-files-and-folders) |594| `respectGitIgnore` | `true` | Excluez les modèles .gitignore des recherches de fichiers et de [contexte de sélection](#reference-files-and-folders) |


629| Commandes et skills | [Toutes](/docs/fr/commands) | Sous-ensemble (tapez `/` pour voir les disponibles) |645| Commandes et skills | [Toutes](/docs/fr/commands) | Sous-ensemble (tapez `/` pour voir les disponibles) |

630| 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) |646| 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) |

631| Checkpoints | Oui | Oui |647| Checkpoints | Oui | Oui |

632| Raccourci bash `!` | Oui | Non |648| Raccourci Bash `!` | Oui | Non |

633| Complément de tabulation | Oui | Non |649| Complément de tabulation | Oui | Non |

634 650 

635<h3 id="rewind-with-checkpoints">651<h3 id="rewind-with-checkpoints">


648 Exécuter la CLI dans VS Code664 Exécuter la CLI dans VS Code

649</h3>665</h3>

650 666 

651Pour utiliser la CLI tout en restant dans VS Code, ouvrez le terminal intégré (`` Ctrl+` `` sur Windows/Linux ou `` Cmd+` `` sur Mac) et exécutez `claude`. La CLI s'intègre automatiquement à votre IDE pour des fonctionnalités comme l'affichage des différences et le partage des diagnostics.667Pour utiliser la CLI tout en restant dans VS Code, ouvrez le terminal intégré (`` Ctrl+` `` sur Windows/Linux ou `` Cmd+` `` sur Mac) et exécutez `claude`. La CLI s'intègre automatiquement à votre IDE pour des fonctionnalités comme l'affichage des diffs et le partage des diagnostics.

652 668 

653L'installation de l'extension ne met pas `claude` sur votre PATH shell. L'extension regroupe une copie privée de la CLI pour son panneau de chat, mais taper `claude` dans un terminal nécessite l'[installation CLI autonome](/docs/fr/setup). Exécutez l'installation une fois et les commandes de cette page, y compris `claude mcp add` et `claude --resume`, fonctionnent dans n'importe quel terminal. Si `claude` n'est toujours pas trouvé après l'installation, [vérifiez votre PATH](/docs/fr/troubleshoot-install#verify-your-path).669L'installation de l'extension ne met pas `claude` sur votre PATH shell. L'extension regroupe une copie privée de la CLI pour son panneau de chat, mais taper `claude` dans un terminal nécessite l'[installation CLI autonome](/docs/fr/setup). Exécutez l'installation une fois et les commandes de cette page, y compris `claude mcp add` et `claude --resume`, fonctionnent dans n'importe quel terminal. Si `claude` n'est toujours pas trouvé après l'installation, [vérifiez votre PATH](/docs/fr/troubleshoot-install#verify-your-path).

654 670 


661L'extension et la CLI partagent le même historique de conversation. Pour continuer une conversation d'extension dans la CLI, exécutez `claude --resume` dans le terminal. Cela ouvre un sélecteur interactif où vous pouvez rechercher et sélectionner votre conversation.677L'extension et la CLI partagent le même historique de conversation. Pour continuer une conversation d'extension dans la CLI, exécutez `claude --resume` dans le terminal. Cela ouvre un sélecteur interactif où vous pouvez rechercher et sélectionner votre conversation.

662 678 

663<h3 id="include-terminal-output-in-prompts">679<h3 id="include-terminal-output-in-prompts">

664 Inclure la sortie du terminal dans les invites680 Inclure la sortie du terminal dans les prompts

665</h3>681</h3>

666 682 

667Référencez la sortie du terminal dans vos invites en utilisant `@terminal:name` où `name` est le titre du terminal. Cela permet à Claude de voir la sortie des commandes, les messages d'erreur ou les journaux sans copier-coller.683Référencez la sortie du terminal dans vos prompts en utilisant `@terminal:name` où `name` est le titre du terminal. Cela permet à Claude de voir la sortie des commandes, les messages d'erreur ou les logs sans copier-coller.

684 

685<h3 id="move-a-running-command-or-subagent-to-the-background">

686 Déplacer une commande ou un sous-agent en cours d'exécution en arrière-plan

687</h3>

688 

689Lorsque Claude attend une commande ou un [sous-agent](/docs/fr/sub-agents) qui prend plus de temps que vous ne le souhaitez, cliquez sur **Run in background** sous son appel d'outil dans la conversation. L'action apparaît une fois qu'une commande s'exécute depuis environ deux secondes, ou dès qu'un sous-agent démarre. Claude cesse d'attendre et poursuit le tour, tandis que la commande ou le sous-agent continue de s'exécuter en tant que [tâche en arrière-plan](/docs/fr/tools-reference#background-commands) qui notifie Claude lorsqu'elle se termine. Nécessite Claude Code v2.1.287 ou version ultérieure.

690 

691Pour vérifier la tâche ou l'arrêter entre-temps, tapez `/tasks` dans la zone de saisie du prompt pour ouvrir la [carte des agents](#use-the-prompt-box). Un sous-agent y conserve sa place dans l'arborescence des agents, et une commande est répertoriée sous les agents avec sa [dernière sortie sur sa carte](#monitor-background-processes). Une commande que vous déplacez en arrière-plan de cette façon est soumise à la [limite de temps des commandes en arrière-plan](/docs/fr/tools-reference#time-limit-for-background-commands).

668 692 

669<h3 id="monitor-background-processes">693<h3 id="monitor-background-processes">

670 Surveiller les processus en arrière-plan694 Surveiller les processus en arrière-plan

671</h3>695</h3>

672 696 

673Tapez `/tasks` dans la zone de saisie d'invite pour ouvrir la [carte des agents](#use-the-prompt-box), qui répertorie les tâches en arrière-plan de la session, comme un serveur de développement que Claude a laissé s'exécuter en tant que commande shell en arrière-plan. Cliquez sur une tâche pour ouvrir sa carte et l'arrêter là. Nécessite Claude Code v2.1.277 ou version ultérieure.697Tapez `/tasks` dans la zone de saisie du prompt pour ouvrir la [carte des agents](#use-the-prompt-box), qui répertorie les tâches en arrière-plan de la session, comme un serveur de développement que Claude a laissé s'exécuter en tant que commande shell en arrière-plan. Cliquez sur une tâche pour ouvrir sa carte et l'arrêter là. Nécessite Claude Code v2.1.277 ou version ultérieure.

698 

699Pour une commande shell en arrière-plan, ou un [moniteur](/docs/fr/tools-reference#monitor-tool) qui exécute une commande, la carte affiche également la dernière sortie de la commande et l'actualise pendant que la commande s'exécute.

674 700 

675<h3 id="connect-to-external-tools-with-mcp">701<h3 id="connect-to-external-tools-with-mcp">

676 Connecter à des outils externes avec MCP702 Connecter à des outils externes avec MCP

677</h3>703</h3>

678 704 

679MCP (Model Context Protocol) les serveurs donnent à Claude accès à des outils externes, des bases de données et des API.705Les serveurs MCP (Model Context Protocol) donnent à Claude accès à des outils externes, des bases de données et des API.

680 706 

681Pour 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.707Pour 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 à la [portée](/docs/fr/mcp#mcp-installation-scopes) locale, utilisateur ou projet, 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.

682 708 

683Vous 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 :709Vous 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 :

684 710 

Details

75 75 

76 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 Claude GitHub](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 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 Claude GitHub](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.

77 77 

78 Lorsque vous vous connectez, Claude associe également les comptes GitHub dont vous êtes propriétaire à votre organisation Claude, si l'application Claude GitHub y est installée. Sur les plans Team et Enterprise, les administrateurs voient ces comptes dans la [liste des comptes GitHub connectés](/docs/fr/admin-setup#connected-github-accounts).

79 

78 Si l'intégration vous invite à installer l'application Claude GitHub à ce stade et que vous préférez le faire plus tard, cliquez sur **Ignorer**.80 Si l'intégration vous invite à installer l'application Claude GitHub à ce stade et que vous préférez le faire plus tard, cliquez sur **Ignorer**.

79 </Step>81 </Step>

80 82 

worktrees.md +5 −1

Details

131 131 

132Les worktrees des subagents utilisent la même [branche de base](#choose-the-base-branch) que `--worktree`, donc ils se ramifient à partir de la branche par défaut de votre dépôt sauf si `worktree.baseRef` est défini sur `"head"`.132Les worktrees des subagents utilisent la même [branche de base](#choose-the-base-branch) que `--worktree`, donc ils se ramifient à partir de la branche par défaut de votre dépôt sauf si `worktree.baseRef` est défini sur `"head"`.

133 133 

134Un sous-agent dans son propre worktree reprend les fichiers d'instructions avec lesquels il [démarre](/docs/fr/sub-agents#what-loads-at-startup) depuis votre conversation principale, et non depuis son worktree. Lorsque ce worktree se trouve à l'emplacement par défaut sous `.claude/worktrees/`, le sous-agent ne charge pas non plus le fichier `CLAUDE.md` ni le répertoire `.claude/rules/` situés à la racine du worktree lorsqu'il y lit des fichiers, même si ceux-ci diffèrent sur la branche du worktree.

135 

134<h3 id="clean-up-subagent-and-background-session-worktrees">136<h3 id="clean-up-subagent-and-background-session-worktrees">

135 Nettoyer les worktrees des subagents et des sessions en arrière-plan137 Nettoyer les worktrees des subagents et des sessions en arrière-plan

136</h3>138</h3>


170 172 

171Vous ne pouvez pas définir `worktree.baseRef` sur un nom de branche. Pour démarrer un worktree à partir d'une branche existante spécifique, [créez-le avec git directement](#manage-worktrees-manually).173Vous ne pouvez pas définir `worktree.baseRef` sur un nom de branche. Pour démarrer un worktree à partir d'une branche existante spécifique, [créez-le avec git directement](#manage-worktrees-manually).

172 174 

173Pour une base `"fresh"`, Claude Code garde `origin/HEAD` à jour : quand le dépôt n'a pas été récupéré au cours des 24 dernières heures, il récupère la branche par défaut, limité à cinq secondes, et utilise la ref mise en cache localement si la récupération échoue. Si aucune télécommande n'est configurée, ou si `origin/HEAD` n'est pas mis en cache localement et ne peut pas être récupéré, le worktree revient à votre `HEAD` local actuel. Avant la v2.1.208, un worktree frais utilisait tout ce qui était déjà mis en cache localement pour `origin/HEAD`.175Pour une base `"fresh"`, Claude Code garde `origin/HEAD` à jour : quand le dépôt n'a pas été récupéré au cours des 24 dernières heures, il récupère la branche par défaut, limité à cinq secondes, et utilise la ref mise en cache localement si la récupération échoue. La récupération n'attend jamais de saisie dans votre terminal, elle est donc également considérée comme échouée lorsque git ou ssh demanderait un mot de passe, une phrase secrète de clé ou la confirmation d'un nouvel hôte SSH. Si aucun dépôt distant n'est configuré, ou si `origin/HEAD` n'est pas mis en cache localement et ne peut pas être récupéré, le worktree revient à votre `HEAD` local actuel. Avant la v2.1.208, un worktree frais utilisait tout ce qui était déjà mis en cache localement pour `origin/HEAD`.

174 176 

175Cet exemple fait que chaque nouveau worktree se ramifie à partir de votre travail actuel :177Cet exemple fait que chaque nouveau worktree se ramifie à partir de votre travail actuel :

176 178 


198* **gitlab.com** : récupère `merge-requests/<number>/head`200* **gitlab.com** : récupère `merge-requests/<number>/head`

199* **GitHub Enterprise, GitLab auto-hébergé, ou tout autre hôte** : essaie d'abord `pull/<number>/head`, puis `merge-requests/<number>/head`201* **GitHub Enterprise, GitLab auto-hébergé, ou tout autre hôte** : essaie d'abord `pull/<number>/head`, puis `merge-requests/<number>/head`

200 202 

203Cette récupération n'attend jamais de saisie dans votre terminal. Si git ou ssh demanderait un mot de passe, une phrase secrète de clé ou la confirmation d'un nouvel hôte SSH, la récupération échoue à la place et Claude Code se termine avec un message `Error creating worktree: Failed to fetch PR/MR #<number>`. Une clé détenue par `ssh-agent` fonctionne toujours : chargez donc votre clé dans celui-ci et exécutez `git fetch` une fois manuellement pour enregistrer un nouvel hôte avant de commencer.

204 

201Avant la v2.1.233, Claude Code acceptait uniquement `#<number>` et les URL de demande de tirage de style GitHub pour `--worktree`, et récupérait toujours `pull/<number>/head`.205Avant la v2.1.233, Claude Code acceptait uniquement `#<number>` et les URL de demande de tirage de style GitHub pour `--worktree`, et récupérait toujours `pull/<number>/head`.

202 206 

203<h3 id="copy-gitignored-files-into-worktrees">207<h3 id="copy-gitignored-files-into-worktrees">