SpyBara
Go Premium

Documentation 2026-10-08 22:58 UTC to 2026-10-09 19:58 UTC

47 files changed +470 −155. View all changes and history on the product overview
2026
Fri 9 21:01 Thu 8 22:58 Wed 7 23:59 Tue 6 23:59 Mon 5 23:58 Sun 4 23:58 Sat 3 23:57 Fri 2 22:59 Thu 1 23:59
Details

216| Option | Ce qu'elle contrôle | Valeur par défaut |216| Option | Ce qu'elle contrôle | Valeur par défaut |

217| :- | :- | :- |217| :- | :- | :- |

218| Tours max (`max_turns` / `maxTurns`) | Aller-retours maximum d'utilisation d'outils | Pas de limite |218| Tours max (`max_turns` / `maxTurns`) | Aller-retours maximum d'utilisation d'outils | Pas de limite |

219| Budget max (`max_budget_usd` / `maxBudgetUsd`) | Coût maximum avant arrêt | Pas de limite |219| Budget max (`max_budget_usd` / `maxBudgetUsd`) | Dépense estimée à partir de laquelle la boucle s'arrête | Pas de limite |

220 220 

221Lorsque l'une de ces limites est atteinte, le SDK retourne un `ResultMessage` avec un sous-type d'erreur correspondant (`error_max_turns` ou `error_max_budget_usd`). Voir [Gérer le résultat](#handle-the-result) pour savoir comment vérifier ces sous-types et [`ClaudeAgentOptions`](/docs/fr/agent-sdk/python#claudeagentoptions) / [`Options`](/docs/fr/agent-sdk/typescript#options) pour la syntaxe.221Lorsque l'une de ces limites est atteinte, le SDK retourne un `ResultMessage` avec un sous-type d'erreur correspondant (`error_max_turns` ou `error_max_budget_usd`). Voir [Gérer le résultat](#handle-the-result) pour savoir comment vérifier ces sous-types et [`ClaudeAgentOptions`](/docs/fr/agent-sdk/python#claudeagentoptions) / [`Options`](/docs/fr/agent-sdk/typescript#options) pour la syntaxe.

222 222 


224 224 

225Avec [l'entrée en streaming](/docs/fr/agent-sdk/streaming-vs-single-mode), un message qui est toujours en attente lorsqu'un tour se termine à la limite de tours max reste en attente. Claude Code ne l'ajoute pas à l'appel du modèle final de ce tour. Il démarre un nouveau tour pour le message, et le compte de tours max recommence pour ce tour. Le total budgétaire continue de s'accumuler entre les messages, et une fois que les dépenses atteignent `maxBudgetUsd`, les messages ultérieurs dans la même conversation se terminent avec le résultat `error_max_budget_usd`. Un [`/clear`](/docs/fr/agent-sdk/cost-tracking) recommence le budget.225Avec [l'entrée en streaming](/docs/fr/agent-sdk/streaming-vs-single-mode), un message qui est toujours en attente lorsqu'un tour se termine à la limite de tours max reste en attente. Claude Code ne l'ajoute pas à l'appel du modèle final de ce tour. Il démarre un nouveau tour pour le message, et le compte de tours max recommence pour ce tour. Le total budgétaire continue de s'accumuler entre les messages, et une fois que les dépenses atteignent `maxBudgetUsd`, les messages ultérieurs dans la même conversation se terminent avec le résultat `error_max_budget_usd`. Un [`/clear`](/docs/fr/agent-sdk/cost-tracking) recommence le budget.

226 226 

227<h4 id="budget-headroom">

228 Marge budgétaire

229</h4>

230 

231Claude Code compare les dépenses au plafond `max_budget_usd` / `maxBudgetUsd` après l'arrivée des réponses du modèle, car le coût de chaque réponse provient de l'utilisation de tokens que l'API renvoie avec elle. La réponse qui atteint le plafond se termine quand même et compte dans [`total_cost_usd`](/docs/fr/agent-sdk/cost-tracking#get-the-total-cost-of-a-query). Les dépenses peuvent donc dépasser le plafond jusqu'à concurrence du coût de cette réponse, plus tout ce que les sous-agents encore en cours d'exécution à ce moment-là dépensent avant de s'arrêter. Prévoyez une marge en conséquence lorsque vous définissez le plafond.

232 

227<h3 id="effort-level">233<h3 id="effort-level">

228 Niveau d'effort234 Niveau d'effort

229</h3>235</h3>

Details

146| `auto` | Approbations classées par le modèle | Un classificateur de modèle examine les actions telles que les commandes shell et les demandes réseau, en approuvant ou en bloquant chacune qu'il examine. Voir [Mode Auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) pour la disponibilité et l'ordre de décision |146| `auto` | Approbations classées par le modèle | Un classificateur de modèle examine les actions telles que les commandes shell et les demandes réseau, en approuvant ou en bloquant chacune qu'il examine. Voir [Mode Auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) pour la disponibilité et l'ordre de décision |

147 147 

148<Warning>148<Warning>

149 **Héritage des sous-agents :** Un sous-agent s'exécute dans le mode de permission de la session parent sauf si vous définissez `permissionMode` sur son [`AgentDefinition`](/docs/fr/agent-sdk/typescript#agentdefinition) et que la session parent est en mode `default`, `dontAsk` ou `plan`. Même dans ce cas, Claude Code n'applique jamais une valeur `"bypassPermissions"`. Un sous-agent s'exécute en mode `bypassPermissions` uniquement lorsque la session parent elle-même le fait. L'exception `bypassPermissions` nécessite Claude Code v2.1.267 ou ultérieur.149 **Héritage des sous-agents :** Un sous-agent s'exécute dans le mode de permission de la session parent sauf si vous définissez `permissionMode` sur son [`AgentDefinition`](/docs/fr/agent-sdk/typescript#agentdefinition) et que la session parent est en mode `default`, `dontAsk` ou `plan`. Même dans ce cas, Claude Code n'applique jamais une valeur `"bypassPermissions"`, et n'applique une valeur `"auto"` que lorsque le [mode auto est disponible](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) pour ce sous-agent. Un sous-agent s'exécute en mode `bypassPermissions` uniquement lorsque la session parent elle-même le fait. L'exception `bypassPermissions` nécessite Claude Code v2.1.267 ou ultérieur.

150 150 

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

152</Warning>152</Warning>

Details

928| `resume` | `str \| None` | `None` | ID de session à reprendre |928| `resume` | `str \| None` | `None` | ID de session à reprendre |

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

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

931| `max_budget_usd` | `float \| None` | `None` | Arrêter la requête quand l'estimation du coût côté client atteint cette valeur en USD. Compte uniquement les dépenses de l'appel lui-même ; les totaux restaurés à partir d'une session reprise ne comptent pas. Pour les avertissements de précision et le comportement de réinitialisation, voir [Suivre le coût et l'utilisation](/docs/fr/agent-sdk/cost-tracking) |931| `max_budget_usd` | `float \| None` | `None` | Arrêter la requête quand l'estimation du coût côté client atteint cette valeur en USD. L'estimation peut dépasser cette valeur, donc [prévoyez une marge](/docs/fr/agent-sdk/agent-loop#budget-headroom). Compte uniquement les dépenses de l'appel lui-même ; les totaux restaurés à partir d'une session reprise ne comptent pas. Pour les avertissements de précision et le comportement de réinitialisation, voir [Suivre le coût et l'utilisation](/docs/fr/agent-sdk/cost-tracking) |

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

933| `enable_file_checkpointing` | `bool` | `False` | Activer le suivi des modifications de fichiers pour le rembobinage. Voir [Checkpointing de fichiers](/docs/fr/agent-sdk/file-checkpointing) |933| `enable_file_checkpointing` | `bool` | `False` | Activer le suivi des modifications de fichiers pour le rembobinage. Voir [Checkpointing de fichiers](/docs/fr/agent-sdk/file-checkpointing) |

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


987```987```

988 988 

989* `API_TIMEOUT_MS` : délai d'attente par requête sur le client Anthropic, en millisecondes. Par défaut `600000`. S'applique à la boucle principale et à tous les sous-agents.989* `API_TIMEOUT_MS` : délai d'attente par requête sur le client Anthropic, en millisecondes. Par défaut `600000`. S'applique à la boucle principale et à tous les sous-agents.

990* `CLAUDE_CODE_MAX_RETRIES` : nombre maximum de nouvelles tentatives d'API. Par défaut `10`, plafonné à `15`. Chaque tentative obtient sa propre fenêtre `API_TIMEOUT_MS`, donc le pire cas de temps mural est à peu près `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` plus le backoff. Pour les exécutions sans surveillance qui doivent attendre la fin de pannes plus longues, définissez [`CLAUDE_CODE_RETRY_WATCHDOG=1`](/docs/fr/errors#tune-retry-behavior) : il réessaie les erreurs de capacité transitoires indéfiniment et, sur Claude Code v2.1.199 ou ultérieur, augmente la valeur par défaut pour les autres erreurs transitoires à `300` et supprime le plafond sur cette variable.990* `CLAUDE_CODE_MAX_RETRIES` : nombre maximum de nouvelles tentatives d'API. Par défaut `10`, plafonné à `15`. Chaque tentative obtient sa propre fenêtre `API_TIMEOUT_MS`.

991 

992 Pour les exécutions sans surveillance qui doivent attendre la fin de pannes plus longues, définissez [`CLAUDE_CODE_RETRY_WATCHDOG=1`](/docs/fr/errors#tune-retry-behavior) : il réessaie les erreurs de capacité transitoires indéfiniment et, sur Claude Code v2.1.199 ou ultérieur, augmente la valeur par défaut pour les autres erreurs transitoires à `300` et supprime le plafond sur cette variable.

991* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` : chien de garde de blocage pour les sous-agents. Pendant que le chien de garde de flux est activé, la valeur par défaut est `CLAUDE_STREAM_IDLE_TIMEOUT_MS` plus 5 minutes, ce qui donne `600000` sauf si vous augmentez cette variable. Avec le chien de garde de flux désactivé, la valeur par défaut est `600000`. Avant v2.1.257, la valeur par défaut était toujours `600000`.993* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` : chien de garde de blocage pour les sous-agents. Pendant que le chien de garde de flux est activé, la valeur par défaut est `CLAUDE_STREAM_IDLE_TIMEOUT_MS` plus 5 minutes, ce qui donne `600000` sauf si vous augmentez cette variable. Avec le chien de garde de flux désactivé, la valeur par défaut est `600000`. Avant v2.1.257, la valeur par défaut était toujours `600000`.

992 994 

993 Le minuteur se réinitialise à chaque événement de flux. En cas de blocage, Claude Code abandonne le sous-agent et signale le blocage au parent. Pour un sous-agent en arrière-plan, il marque également la tâche comme échouée et joint tout résultat partiel.995 Le minuteur se réinitialise à chaque événement de flux. En cas de blocage, Claude Code abandonne le sous-agent et signale le blocage au parent. Pour un sous-agent en arrière-plan, il marque également la tâche comme échouée et joint tout résultat partiel.


3327{3329{

3328 "url": str, # The URL to fetch content from3330 "url": str, # The URL to fetch content from

3329 "prompt": str, # The prompt to run on the fetched content3331 "prompt": str, # The prompt to run on the fetched content

3332 "offset": int | None, # Number of characters to skip from the start of the page. Requires Python Agent SDK 0.2.164 or later

3330}3333}

3331```3334```

3332 3335 

Details

323 Détecter l'invocation d'un sous-agent323 Détecter l'invocation d'un sous-agent

324</h2>324</h2>

325 325 

326Claude invoque les sous-agents via l'outil Agent. Pour détecter quand un sous-agent est invoqué, recherchez les blocs `tool_use` où `name` est `"Agent"`. Les messages provenant du contexte d'un sous-agent incluent un champ `parent_tool_use_id`.326Claude invoque les sous-agents via l'outil Agent. Pour détecter quand un sous-agent est invoqué, recherchez les blocs `tool_use` où `name` est `"Agent"`.

327 

328Les messages provenant du contexte d'un sous-agent incluent un champ `parent_tool_use_id`. En TypeScript, chaque message assistant et utilisateur produit par un sous-agent comporte également [`agent_id`](/docs/fr/agent-sdk/typescript#sdkassistantmessage) : le `task_id` des [événements de tâche](/docs/fr/agent-sdk/typescript#sdktaskstartedmessage) de ce sous-agent. `agent_id` nécessite le SDK Agent TypeScript v0.3.292 ou une version ultérieure.

327 329 

328<Note>330<Note>

329 L'outil apparaît comme `"Agent"` dans les blocs `tool_use` mais comme `"Task"` dans la liste des outils `system:init`. Avant Claude Code v2.1.63, les blocs `tool_use` le nommaient également `"Task"`. Pour que la détection fonctionne sur les versions du SDK, faites correspondre les deux valeurs dans `block.name`.331 L'outil apparaît comme `"Agent"` dans les blocs `tool_use` mais comme `"Task"` dans la liste des outils `system:init`. Avant Claude Code v2.1.63, les blocs `tool_use` le nommaient également `"Task"`. Pour que la détection fonctionne sur les versions du SDK, faites correspondre les deux valeurs dans `block.name`.


331 333 

332La structure du message diffère entre les SDK. En Python, vous accédez directement aux blocs de contenu via `message.content`. En TypeScript, `SDKAssistantMessage` enveloppe le message de l'API Claude, vous accédez donc au contenu via `message.message.content`.334La structure du message diffère entre les SDK. En Python, vous accédez directement aux blocs de contenu via `message.content`. En TypeScript, `SDKAssistantMessage` enveloppe le message de l'API Claude, vous accédez donc au contenu via `message.message.content`.

333 335 

334Cet exemple itère à travers les messages en flux, enregistrant quand un sous-agent est invoqué et quand les messages suivants proviennent du contexte d'exécution de ce sous-agent.336Cet exemple itère à travers les messages en flux, journalisant quand un sous-agent est invoqué et quand les messages suivants proviennent du contexte d'exécution de ce sous-agent. La version TypeScript journalise également l'`agent_id` de chaque message de sous-agent qui en comporte un.

335 337 

336<CodeGroup>338<CodeGroup>

337 ```python Python theme={null}339 ```python Python theme={null}


403 // Check if this message is from within a subagent's context405 // Check if this message is from within a subagent's context

404 if (msg.parent_tool_use_id) {406 if (msg.parent_tool_use_id) {

405 console.log(" (running inside subagent)");407 console.log(" (running inside subagent)");

408 // On assistant and user messages, agent_id matches the task_id

409 // on that subagent's task_started and other task events

410 if (msg.agent_id) {

411 console.log(` agent_id: ${msg.agent_id}`);

412 }

406 }413 }

407 414 

408 if ("result" in message) {415 if ("result" in message) {

Details

569| `includePartialMessages` | `boolean` | `false` | Inclure les événements de messages partiels |569| `includePartialMessages` | `boolean` | `false` | Inclure les événements de messages partiels |

570| `loadTimeoutMs` | `number` | `60000` | *Alpha.* Délai d'expiration en millisecondes pour chaque appel à `sessionStore.load()` et `sessionStore.listSubkeys()` lors de la matérialisation de la reprise. Si l'adaptateur ne se résout pas dans ce délai, la requête échoue au lieu de rester bloquée. Ignoré lorsque `sessionStore` n'est pas défini |570| `loadTimeoutMs` | `number` | `60000` | *Alpha.* Délai d'expiration en millisecondes pour chaque appel à `sessionStore.load()` et `sessionStore.listSubkeys()` lors de la matérialisation de la reprise. Si l'adaptateur ne se résout pas dans ce délai, la requête échoue au lieu de rester bloquée. Ignoré lorsque `sessionStore` n'est pas défini |

571| `managedSettings` | `Settings` | `undefined` | Paramètres de niveau stratégie que votre processus hôte fournit à la session lancée. Sur les machines disposant de paramètres gérés déployés par un administrateur, Claude Code les ignore sauf si la source gérée de priorité la plus élevée de l'administrateur définit `parentSettingsBehavior: 'merge'`, et ne les fusionne jamais lorsqu'un [`policyHelper`](/docs/fr/settings-reference#policyhelper) fournit des paramètres gérés. Les valeurs fusionnées passent par un filtre uniquement restrictif ; [Restreindre les paramètres parents](/docs/fr/claude-apps-gateway#restrict-parent-settings) décrit ce que le filtre admet et les verrous `allowManaged*Only`. Pour un hôte qui définit [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/fr/env-vars), trois clés sont lues directement depuis ce payload à la place : sa [configuration de modèle](/docs/fr/model-config#restrict-model-selection) sur Claude Code v2.1.222 ou ultérieure, [`modelPricing`](/docs/fr/settings-reference#modelpricing) lorsqu'aucune source gérée ne le définit sur v2.1.246 ou ultérieure, et son entrée env `ENABLE_TOOL_SEARCH` sur v2.1.247 ou ultérieure |571| `managedSettings` | `Settings` | `undefined` | Paramètres de niveau stratégie que votre processus hôte fournit à la session lancée. Sur les machines disposant de paramètres gérés déployés par un administrateur, Claude Code les ignore sauf si la source gérée de priorité la plus élevée de l'administrateur définit `parentSettingsBehavior: 'merge'`, et ne les fusionne jamais lorsqu'un [`policyHelper`](/docs/fr/settings-reference#policyhelper) fournit des paramètres gérés. Les valeurs fusionnées passent par un filtre uniquement restrictif ; [Restreindre les paramètres parents](/docs/fr/claude-apps-gateway#restrict-parent-settings) décrit ce que le filtre admet et les verrous `allowManaged*Only`. Pour un hôte qui définit [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/fr/env-vars), trois clés sont lues directement depuis ce payload à la place : sa [configuration de modèle](/docs/fr/model-config#restrict-model-selection) sur Claude Code v2.1.222 ou ultérieure, [`modelPricing`](/docs/fr/settings-reference#modelpricing) lorsqu'aucune source gérée ne le définit sur v2.1.246 ou ultérieure, et son entrée env `ENABLE_TOOL_SEARCH` sur v2.1.247 ou ultérieure |

572| `maxBudgetUsd` | `number` | `undefined` | Arrêter la requête lorsque l'estimation des coûts côté client atteint cette valeur en USD. Ne compte que les dépenses propres à l'appel ; les totaux restaurés depuis une session reprise ne sont pas comptés. Pour les réserves sur la précision et le comportement de réinitialisation, consultez [Suivre les coûts et l'utilisation](/docs/fr/agent-sdk/cost-tracking) |572| `maxBudgetUsd` | `number` | `undefined` | Arrêter la requête lorsque l'estimation des coûts côté client atteint cette valeur en USD. L'estimation peut dépasser cette valeur, donc [prévoyez une marge](/docs/fr/agent-sdk/agent-loop#budget-headroom). Ne compte que les dépenses propres à l'appel ; les totaux restaurés depuis une session reprise ne comptent pas. Pour les réserves sur la précision et le comportement de réinitialisation, consultez [Suivre les coûts et l'utilisation](/docs/fr/agent-sdk/cost-tracking) |

573| `maxThinkingTokens` | `number` | `undefined` | *Obsolète :* Utilisez `thinking` à la place. Nombre maximal de tokens pour le processus de réflexion |573| `maxThinkingTokens` | `number` | `undefined` | *Obsolète :* Utilisez `thinking` à la place. Nombre maximal de tokens pour le processus de réflexion |

574| `maxTurns` | `number` | `undefined` | Nombre maximal de tours agentiques (allers-retours d'utilisation d'outils) |574| `maxTurns` | `number` | `undefined` | Nombre maximal de tours agentiques (allers-retours d'utilisation d'outils) |

575| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | Configurations des serveurs MCP |575| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | Configurations des serveurs MCP |


631```631```

632 632 

633* `API_TIMEOUT_MS` : délai d'expiration par requête sur le client Anthropic, en millisecondes. Par défaut `600000`. S'applique à la boucle principale et à tous les sous-agents.633* `API_TIMEOUT_MS` : délai d'expiration par requête sur le client Anthropic, en millisecondes. Par défaut `600000`. S'applique à la boucle principale et à tous les sous-agents.

634* `CLAUDE_CODE_MAX_RETRIES` : nombre maximal de nouvelles tentatives d'API. Par défaut `10`, plafonné à `15`. Chaque nouvelle tentative dispose de sa propre fenêtre `API_TIMEOUT_MS`, de sorte que la durée totale dans le pire des cas est d'environ `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` plus le backoff. Pour les exécutions sans surveillance qui doivent patienter pendant des pannes plus longues, définissez [`CLAUDE_CODE_RETRY_WATCHDOG=1`](/docs/fr/errors#tune-retry-behavior) : il réessaie indéfiniment en cas d'erreurs de capacité transitoires et, sur Claude Code v2.1.199 ou ultérieure, porte la valeur par défaut pour les autres erreurs transitoires à `300` et supprime le plafond de cette variable.634* `CLAUDE_CODE_MAX_RETRIES` : nombre maximal de nouvelles tentatives d'API. Valeur par défaut `10`, plafonnée à `15`. Chaque nouvelle tentative dispose de sa propre fenêtre `API_TIMEOUT_MS`.

635 

636 Pour les exécutions sans surveillance qui doivent attendre la fin de pannes plus longues, définissez [`CLAUDE_CODE_RETRY_WATCHDOG=1`](/docs/fr/errors#tune-retry-behavior) : cette variable réessaie indéfiniment en cas d'erreurs de capacité transitoires et, sur Claude Code v2.1.199 ou ultérieur, porte la valeur par défaut à `300` pour les autres erreurs transitoires et supprime le plafond de cette variable.

635* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` : watchdog de blocage pour les sous-agents. Tant que le watchdog de flux est actif, la valeur par défaut est `CLAUDE_STREAM_IDLE_TIMEOUT_MS` plus 5 minutes, soit `600000` sauf si vous augmentez cette variable. Lorsque le watchdog de flux est désactivé, la valeur par défaut est `600000`. Avant v2.1.257, la valeur par défaut était toujours `600000`.637* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` : watchdog de blocage pour les sous-agents. Tant que le watchdog de flux est actif, la valeur par défaut est `CLAUDE_STREAM_IDLE_TIMEOUT_MS` plus 5 minutes, soit `600000` sauf si vous augmentez cette variable. Lorsque le watchdog de flux est désactivé, la valeur par défaut est `600000`. Avant v2.1.257, la valeur par défaut était toujours `600000`.

636 638 

637 Le minuteur est réinitialisé à chaque événement de flux. En cas de blocage, Claude Code interrompt le sous-agent et signale le blocage au parent. Pour un sous-agent en arrière-plan, il marque également la tâche comme échouée et joint tout résultat partiel.639 Le minuteur est réinitialisé à chaque événement de flux. En cas de blocage, Claude Code interrompt le sous-agent et signale le blocage au parent. Pour un sous-agent en arrière-plan, il marque également la tâche comme échouée et joint tout résultat partiel.


1561 parent_tool_use_id: string | null;1563 parent_tool_use_id: string | null;

1562 error?: SDKAssistantMessageError;1564 error?: SDKAssistantMessageError;

1563 aborted?: true;1565 aborted?: true;

1566 agent_id?: string;

1564 timestamp?: string;1567 timestamp?: string;

1565 context_usage?: SDKContextUsage;1568 context_usage?: SDKContextUsage;

1566 user_message_uuid?: string;1569 user_message_uuid?: string;


1580 1583 

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

1582 1585 

1586`agent_id` identifie le sous-agent qui a produit le message et est absent des messages du fil principal. Sa valeur est égale au `task_id` présent dans l'événement [`task_started`](#sdktaskstartedmessage) et les autres événements de tâche de ce sous-agent, et reste inchangée lorsque le sous-agent est [repris](/docs/fr/agent-sdk/subagents#resume-subagents). Le champ nécessite l'Agent SDK v0.3.292 ou ultérieur.

1587 

1588Associez les messages d'un sous-agent à ses événements de tâche via `agent_id` plutôt qu'en appariant le `parent_tool_use_id` d'un message au `tool_use_id` d'un événement de tâche. Lorsqu'un appel d'outil reprend le sous-agent, les événements de tâche portent le `tool_use_id` de cet appel, tandis que les messages conservent le `parent_tool_use_id` de l'appel d'outil qui a démarré le sous-agent à l'origine, de sorte que les deux ne correspondent plus.

1589 

1583Claude Code définit `user_message_uuid` et `user_message_uuids` sur le premier message de l'assistant du tour, selon les conditions dans [`user_message_uuid`](#user_message_uuid). Quand Claude Code réexécute un tour qu'un redémarrage a interrompu, les messages d'assistant de la réexécution qui portent ces champs portent aussi [`resume_reason`](#resume_reason).1590Claude Code définit `user_message_uuid` et `user_message_uuids` sur le premier message de l'assistant du tour, selon les conditions dans [`user_message_uuid`](#user_message_uuid). Quand Claude Code réexécute un tour qu'un redémarrage a interrompu, les messages d'assistant de la réexécution qui portent ces champs portent aussi [`resume_reason`](#resume_reason).

1584 1591 

1585`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.1592`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.


1597 type: "user";1604 type: "user";

1598 uuid?: UUID;1605 uuid?: UUID;

1599 session_id?: string;1606 session_id?: string;

1607 agent_id?: string;

1600 message: MessageParam; // From Anthropic SDK1608 message: MessageParam; // From Anthropic SDK

1601 pasted_content?: MessageParam["content"][];1609 pasted_content?: MessageParam["content"][];

1602 parent_tool_use_id: string | null;1610 parent_tool_use_id: string | null;


1636};1644};

1637```1645```

1638 1646 

1647Un message utilisateur produit par un sous-agent, comme le `tool_result` de l'un de ses propres appels d'outils, porte `agent_id`. Consultez [`SDKAssistantMessage`](#sdkassistantmessage), qui définit ce champ et la version requise.

1648 

1639Sur un message qui porte un bloc `tool_result`, `tool_use_result` est l'objet de sortie structurée 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 : le champ est donc typé `unknown` ; les formes intégrées sont répertoriées sous [Types de sortie des outils](#tool-output-types). Ces résultats nécessitent un traitement qui va au-delà de leur forme répertoriée :1649Sur un message qui porte un bloc `tool_result`, `tool_use_result` est l'objet de sortie structurée 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 : le champ est donc typé `unknown` ; les formes intégrées sont répertoriées sous [Types de sortie des outils](#tool-output-types). Ces résultats nécessitent un traitement qui va au-delà de leur forme répertoriée :

1640 1650 

1641* L'outil `Agent` : `tool_use_result` est [`AgentOutput`](#agent-2). Effectuez le rendu à partir de celui-ci plutôt que d'analyser le texte du `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 version ultérieure, tout sous-agent qui produit un résultat `completed` fait 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 sous la forme d'un message distinct provenant du sous-agent.1651* L'outil `Agent` : `tool_use_result` est [`AgentOutput`](#agent-2). Effectuez le rendu à partir de celui-ci plutôt que d'analyser le texte du `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 version ultérieure, tout sous-agent qui produit un résultat `completed` fait 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 sous la forme d'un message distinct provenant du sous-agent.


1992 `SDKPartialAssistantMessage`2002 `SDKPartialAssistantMessage`

1993</h3>2003</h3>

1994 2004 

1995Message 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.2005Message partiel en streaming (uniquement lorsque `includePartialMessages` vaut true).

2006 

2007Le champ `parent_tool_use_id` est toujours `null` : les événements de flux ne sont émis que pour la session principale. Pour l'attribution aux sous-agents, utilisez les messages complets, qui portent [`agent_id`](#sdkassistantmessage) et `parent_tool_use_id`, ou activez [`forwardSubagentText`](#options) pour recevoir le texte et la réflexion des sous-agents sous forme de messages complets.

1996 2008 

1997```typescript theme={null}2009```typescript theme={null}

1998type SDKPartialAssistantMessage = {2010type SDKPartialAssistantMessage = {


3418type WebFetchInput = {3430type WebFetchInput = {

3419 url: string;3431 url: string;

3420 prompt: string;3432 prompt: string;

3433 offset?: number;

3421};3434};

3422```3435```

3423 3436 

3424Récupère le contenu d'une URL et le traite avec un modèle IA.3437Récupère le contenu d'une URL et le traite avec un modèle IA.

3425 3438 

3439`offset` est le nombre de caractères à ignorer depuis le début de la page. Claude le définit pour poursuivre la lecture d'une page longue. Le champ nécessite Agent SDK v0.3.290 ou version ultérieure.

3440 

3426<h3 id="websearch">3441<h3 id="websearch">

3427 WebSearch3442 WebSearch

3428</h3>3443</h3>


5777 task_type?: string;5792 task_type?: string;

5778 is_backgrounded?: boolean;5793 is_backgrounded?: boolean;

5779 spawn_depth?: number;5794 spawn_depth?: number;

5795 parent_task_id?: string;

5780 ambient?: boolean;5796 ambient?: boolean;

5781 uuid: UUID;5797 uuid: UUID;

5782 session_id: string;5798 session_id: string;


5794 5810 

5795Un [sous-agent repris](/docs/fr/agent-sdk/subagents#resume-subagents) signale toujours `is_backgrounded: true`, car Claude Code exécute chaque sous-agent repris en arrière-plan. Lorsqu'une tâche au premier plan se déplace en arrière-plan plus tard, Claude Code signale la nouvelle valeur `is_backgrounded` dans un message [`task_updated`](#sdktaskupdatedmessage) plutôt que d'envoyer un second `task_started`.5811Un [sous-agent repris](/docs/fr/agent-sdk/subagents#resume-subagents) signale toujours `is_backgrounded: true`, car Claude Code exécute chaque sous-agent repris en arrière-plan. Lorsqu'une tâche au premier plan se déplace en arrière-plan plus tard, Claude Code signale la nouvelle valeur `is_backgrounded` dans un message [`task_updated`](#sdktaskupdatedmessage) plutôt que d'envoyer un second `task_started`.

5796 5812 

5813`parent_task_id` contient le `task_id` du sous-agent qui a lancé cette tâche. Utilisez-le pour regrouper chaque tâche sous le sous-agent qui l'a démarrée. Claude Code le définit sur les tâches de sous-agent, Bash et [Monitor](#monitor). Le champ nécessite Agent SDK v0.3.292 ou version ultérieure. Il est absent lorsque :

5814 

5815* Le thread principal a lancé la tâche

5816* Claude Code ne suit plus la tâche parente

5817* Un [coéquipier](/docs/fr/agent-teams) ou un agent à l'intérieur d'un workflow a lancé la tâche

5818 

5819Le parent peut être une tâche au premier plan ou une tâche déjà terminée ; traitez donc un ID que vous ne reconnaissez pas comme l'absence de parent.

5820 

5797<h3 id="sdktaskprogressmessage">5821<h3 id="sdktaskprogressmessage">

5798 `SDKTaskProgressMessage`5822 `SDKTaskProgressMessage`

5799</h3>5823</h3>


5850 `SDKBackgroundTasksChangedMessage`5874 `SDKBackgroundTasksChangedMessage`

5851</h3>5875</h3>

5852 5876 

5853É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.5877Émis chaque fois que l'ensemble des tâches en arrière-plan en direct change : une tâche démarre, se termine ou est tuée ; un agent au premier plan est mis en arrière-plan ; ou le champ `description`, `ambient` ou `parent_task_id` d'une tâche change. Pour le champ `parent_task_id` de chaque entrée, consultez [`SDKTaskStartedMessage`](#sdktaskstartedmessage), qui le définit et son exigence de version.

5854 5878 

5855Le 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é.5879Le 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é.

5856 5880 

5857L'ordre relatif à ces événements par tâche n'est pas spécifié, donc ne corrélez pas les deux flux.5881Lorsqu'une tâche se termine, ses messages [`task_updated`](#sdktaskupdatedmessage) et [`task_notification`](#sdktasknotificationmessage) arrivent avant le `background_tasks_changed` qui la retire de la liste. L'ordre relatif aux événements par tâche n'est sinon pas spécifié.

5858 5882 

5859Rien 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.5883Rien 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.

5860 5884 


5871 task_type: string;5895 task_type: string;

5872 subagent_type?: string;5896 subagent_type?: string;

5873 description: string;5897 description: string;

5898 parent_task_id?: string;

5874 ambient?: boolean;5899 ambient?: boolean;

5875 }[];5900 }[];

5876 uuid: UUID;5901 uuid: UUID;

Details

36 ```36 ```

37 37 

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

39 async function handleToolRequest(toolName, input, options) {39 import type { CanUseTool } from "@anthropic-ai/claude-agent-sdk";

40 

41 const handleToolRequest: CanUseTool = async (toolName, input, options) => {

40 // options includes { signal: AbortSignal, suggestions?: PermissionUpdate[] }42 // options includes { signal: AbortSignal, suggestions?: PermissionUpdate[] }

41 // Inviter l'utilisateur et retourner allow ou deny43 // Inviter l'utilisateur ici, puis retourner allow ou deny

42 }44 return { behavior: "deny", message: "User declined" };

45 };

43 46 

44 const options = { canUseTool: handleToolRequest };47 const options = { canUseTool: handleToolRequest };

45 ```48 ```


440 // Inclure AskUserQuestion dans votre liste d'outils443 // Inclure AskUserQuestion dans votre liste d'outils

441 tools: ["Read", "Glob", "Grep", "AskUserQuestion"],444 tools: ["Read", "Glob", "Grep", "AskUserQuestion"],

442 canUseTool: async (toolName, input) => {445 canUseTool: async (toolName, input) => {

443 // Gérer les questions de clarification ici446 // Espace réservé qui approuve chaque appel. L'étape Détecter AskUserQuestion le remplace.

447 return { behavior: "allow", updatedInput: input };

444 }448 }

445 }449 }

446 })) {450 })) {


763 767 

764 ```typescript TypeScript theme={null}768 ```typescript TypeScript theme={null}

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

770 import type { PermissionResult } from "@anthropic-ai/claude-agent-sdk";

766 import * as readline from "readline/promises";771 import * as readline from "readline/promises";

767 772 

768 // Helper to prompt user for input in the terminal773 // Helper to prompt user for input in the terminal


783 }788 }

784 789 

785 // Display Claude's questions and collect user answers790 // Display Claude's questions and collect user answers

786 async function handleAskUserQuestion(input: any) {791 async function handleAskUserQuestion(input: any): Promise<PermissionResult> {

787 const answers: Record<string, string> = {};792 const answers: Record<string, string> = {};

788 793 

789 for (const q of input.questions) {794 for (const q of input.questions) {

agent-view.md +9 −6

Details

603 603 

604En dehors d'un dépôt git, les sessions écrivent directement dans le répertoire de travail et ne sont pas isolées les unes des autres, donc évitez de lancer des sessions parallèles qui modifient les mêmes fichiers. Si vous utilisez un autre système de contrôle de version, configurez un [hook `WorktreeCreate`](/docs/fr/worktrees#non-git-version-control) et Claude isole les modifications de la même manière que pour git.604En dehors d'un dépôt git, les sessions écrivent directement dans le répertoire de travail et ne sont pas isolées les unes des autres, donc évitez de lancer des sessions parallèles qui modifient les mêmes fichiers. Si vous utilisez un autre système de contrôle de version, configurez un [hook `WorktreeCreate`](/docs/fr/worktrees#non-git-version-control) et Claude isole les modifications de la même manière que pour git.

605 605 

606Quand le hook échoue dans un répertoire qui n'est pas un dépôt git, Claude renonce à l'isolation pour ce répertoire et modifie le répertoire de travail sur place. À l'intérieur d'un dépôt git, une session que Claude déplace dans un worktree avant de modifier des fichiers ne peut pas modifier de fichiers dans le checkout partagé tant que ce déplacement n'a pas eu lieu.606Quand le hook échoue dans un répertoire qui n'est pas un dépôt git, Claude renonce à l'isolation pour ce répertoire et modifie le répertoire de travail sur place. À l'intérieur d'un dépôt git, une session que Claude déplace dans un worktree avant de modifier des fichiers ne peut pas utiliser les outils `Edit`, `Write` ou `NotebookEdit` sur le checkout partagé tant que ce déplacement n'a pas eu lieu.

607 607 

608Pour trouver le chemin du worktree d'une session, attachez-vous-y et vérifiez son répertoire de travail.608Pour trouver le chemin du worktree d'une session, attachez-vous-y et vérifiez son répertoire de travail.

609 609 


825| `claude daemon logs` | Suivre le fichier de log du superviseur, [`~/.claude/daemon.log`](#where-state-is-stored), en affichant les nouvelles lignes à mesure qu'elles arrivent jusqu'à ce que vous appuyiez sur `Ctrl+C` |825| `claude daemon logs` | Suivre le fichier de log du superviseur, [`~/.claude/daemon.log`](#where-state-is-stored), en affichant les nouvelles lignes à mesure qu'elles arrivent jusqu'à ce que vous appuyiez sur `Ctrl+C` |

826| `claude daemon stop --any` | Arrêter le processus superviseur et les sessions en arrière-plan qu'il héberge. Passez `--keep-workers` pour laisser les sessions en arrière-plan en cours d'exécution afin que le superviseur suivant se reconnecte à elles. Le prochain `claude agents` ou `claude --bg` démarre un nouveau superviseur |826| `claude daemon stop --any` | Arrêter le processus superviseur et les sessions en arrière-plan qu'il héberge. Passez `--keep-workers` pour laisser les sessions en arrière-plan en cours d'exécution afin que le superviseur suivant se reconnecte à elles. Le prochain `claude agents` ou `claude --bg` démarre un nouveau superviseur |

827 827 

828`claude attach` et `claude logs` peuvent prendre une partie du nom d'une session en cours d'exécution à la place de l'ID, comme dans `claude logs "auth refactor"`. Passer un nom nécessite Claude Code v2.1.290 ou ultérieur.828`claude attach` et `claude logs` peuvent prendre une partie du nom d'une session à la place de l'ID, comme dans `claude logs "auth refactor"`. Passer un nom nécessite Claude Code v2.1.290 ou ultérieur.

829 829 

830<h3 id="list-sessions-as-json">830<h3 id="list-sessions-as-json">

831 Afficher les sessions en tant que JSON831 Afficher les sessions en tant que JSON


979 L'ouverture d'une session indique qu'elle n'a pas de transcription enregistrée979 L'ouverture d'une session indique qu'elle n'a pas de transcription enregistrée

980</h3>980</h3>

981 981 

982Une session arrêtée qui a été [mise en arrière-plan depuis une autre conversation](#from-inside-a-session) et s'est arrêtée avant la fin de sa première réponse n'a rien à reprendre : jusqu'à ce que cette première réponse se termine, la conversation vit toujours uniquement dans la session à partir de laquelle elle a été mise en arrière-plan. `claude attach` refuse de l'ouvrir avec `This session has no saved transcript`.982Quand vous ouvrez une session que vous avez [mise en arrière-plan depuis une autre conversation](#from-inside-a-session) et qui s'est arrêtée avant d'avoir exécuté un tour qui lui soit propre, Claude Code reprend cette conversation. Si Claude Code ne trouve pas la conversation, il refuse d'ouvrir la session :

983 983 

984Dans la vue agent, l'ouverture de cette ligne affiche `Press enter again to restart this session fresh` sous la liste. Appuyez sur `Enter` sur la même ligne à nouveau pour redémarrer la session avec une conversation vide, ou exécutez `claude respawn <id>` depuis le shell.984* `claude attach` affiche `This session has no saved transcript`.

985* La vue agent affiche `Press enter again to restart this session fresh` sous la liste.

985 986 

986La conversation d'origine est intacte ; reprenez-la avec `claude --resume` ou continuez à y travailler. Consultez la [référence des erreurs](/docs/fr/errors#this-session-has-no-saved-transcript) pour plus de détails.987Appuyez sur `Enter` sur la même ligne à nouveau pour redémarrer la session avec une conversation vide, ou exécutez `claude respawn <id>` depuis le shell.

988 

989Consultez la [référence des erreurs](/docs/fr/errors#this-session-has-no-saved-transcript) pour plus de détails.

987 990 

988<h3 id="the-terminal-host-died-or-the-session-stopped-responding">991<h3 id="the-terminal-host-died-or-the-session-stopped-responding">

989 L'hôte du terminal est mort ou la session a cessé de répondre992 L'hôte du terminal est mort ou la session a cessé de répondre


1095 1098 

1096| Version | Changement |1099| Version | Changement |

1097| - | - |1100| - | - |

1098| v2.1.290 | [`claude attach` et `claude logs`](#manage-sessions-from-the-shell) peuvent prendre une partie du nom d'une session en cours d'exécution à la place de l'ID. |1101| v2.1.290 | [`claude attach` et `claude logs`](#manage-sessions-from-the-shell) peuvent prendre une partie du nom d'une session à la place de l'ID. |

1099| v2.1.290 | `/model`, `/effort`, `/rename` et `/usage` envoyées comme [réponse depuis le panneau d'aperçu](#peek-and-reply) à une session en cours de travail s'exécutent immédiatement. |1102| v2.1.290 | `/model`, `/effort`, `/rename` et `/usage` envoyées comme [réponse depuis le panneau d'aperçu](#peek-and-reply) à une session en cours de travail s'exécutent immédiatement. |

1100| v2.1.290 | Une [réponse depuis le panneau d'aperçu](#peek-and-reply) qui ne peut pas être livrée n'est plus enregistrée pour le prochain redémarrage quand elle commence par `/`, ou quand elle répond à une question à choix prédéfinis tandis que le processus de la session est en cours d'exécution. |1103| v2.1.290 | Une [réponse depuis le panneau d'aperçu](#peek-and-reply) qui ne peut pas être livrée n'est plus enregistrée pour le prochain redémarrage quand elle commence par `/`, ou quand elle répond à une question à choix prédéfinis tandis que le processus de la session est en cours d'exécution. |

1101| v2.1.288 | `Ctrl+F` trouve les sessions par nom, et `Alt+↑` / `Alt+↓` sautent d'un en-tête de groupe à l'autre. Ces deux raccourcis, ainsi que `Ctrl+R`, peuvent être [réassignés](/docs/fr/keybindings#agents-actions). |1104| v2.1.288 | `Ctrl+F` trouve les sessions par nom, et `Alt+↑` / `Alt+↓` sautent d'un en-tête de groupe à l'autre. Ces deux raccourcis, ainsi que `Ctrl+R`, peuvent être [réassignés](/docs/fr/keybindings#agents-actions). |

artifacts.md +38 −10

Details

51Build a dashboard artifact of last week's deploy failures by service and keep it updated as you investigate.51Build a dashboard artifact of last week's deploy failures by service and keep it updated as you investigate.

52```52```

53 53 

54Sauf si vous nommez un emplacement, Claude écrit la page dans un fichier HTML ou Markdown dans un répertoire temporaire en dehors de votre projet, puis la publie. En dehors du [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode), un nouvel artifact que Claude publie en réponse à une invite que vous tapez passe sans invite de permission ou examen du classificateur, sauf si cette publication déclare des capacités d'exécution pour la page, comme les [appels de connecteur](#pull-live-data-with-mcp-connectors) ou les [téléchargements de fichiers](#offer-a-file-download). En mode plan, Claude Code vous demande avant la première publication de chaque artifact.54Sauf si vous indiquez un emplacement, Claude écrit la page dans un fichier HTML ou Markdown situé dans un répertoire temporaire en dehors de votre projet, puis la publie. L'artefact reste privé jusqu'à ce que vous le [partagiez](#share-an-artifact).

55 55 

56L'artifact reste privé pour vous jusqu'à ce que vous le [partagiez](#share-an-artifact). Après l'avoir partagé publiquement, Claude Code demande votre approbation une fois par conversation avant de le modifier, ou en [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) fait examiner la modification par le classificateur.56Après la première publication, Claude affiche l'URL, et votre navigateur s'ouvre sur la nouvelle page.

57 57 

58Si vous avez désactivé la [récupération de drapeaux de fonctionnalité](/docs/fr/env-vars#features-that-need-feature-flag-fetching), Claude Code demande avant la première publication de chaque artifact, ou en mode auto fait examiner par le classificateur.58* **Rouvrir la page** : appuyez sur `Ctrl+]` à tout moment pour rouvrir l'artefact le plus récent de la session

59* **Voir les artefacts de cette session** : une pastille `⧉` sous le prompt affiche le nom de l'artefact, ou un nombre lorsque la session en contient plusieurs. En [rendu plein écran](/docs/fr/fullscreen), cliquez dessus pour ouvrir la liste [`/artifacts`](#find-an-artifact-again)

60* **Empêcher l'ouverture du navigateur** : définissez `CLAUDE_CODE_ARTIFACT_AUTO_OPEN=0` dans votre environnement

61* **Remote Control** : si vous avez envoyé le prompt via [Remote Control](/docs/fr/remote-control) depuis claude.ai, Claude Desktop ou l'application mobile Claude, aucun onglet ne s'ouvre sur la machine qui exécute la session. Le navigateur s'y ouvre la prochaine fois que Claude publie l'artefact à partir d'un prompt que vous tapez dans le terminal

59 62 

60Après la première publication, Claude imprime l'URL, et votre navigateur s'ouvre sur la nouvelle page. Si vous avez envoyé l'invite via [Contrôle à distance](/docs/fr/remote-control) depuis claude.ai, Claude Desktop ou l'application mobile Claude, aucun onglet ne s'ouvre sur la machine exécutant la session. Le navigateur s'ouvre là la prochaine fois que Claude publie l'artifact à partir d'une invite que vous tapez au terminal. Appuyez sur `Ctrl+]` à tout moment pour rouvrir l'artifact le plus récent de la session.63Claude choisit le titre de l'artefact et une icône d'onglet de navigateur qui correspond à la nature de la page, comme un graphique ou un calendrier. Le titre apparaît dans votre [galerie d'artefacts](#share-an-artifact) sur claude.ai et dans les liens partagés. Demandez à Claude un titre ou une icône d'onglet spécifique si vous le souhaitez.

61 64 

62Claude choisit le titre de l'artifact et un emoji, et les deux apparaissent dans votre [galerie d'artifacts](#share-an-artifact) sur claude.ai et dans les liens partagés. Claude peut également choisir une icône d'onglet de navigateur qui correspond à ce que la page est, comme un graphique ou un calendrier. Demandez à Claude un titre, un emoji ou une icône d'onglet spécifique si vous en voulez un.65Si Claude répond qu'il ne peut pas publier, ou écrit un fichier HTML local sans lien, les artefacts ne sont pas activés pour votre session. Vérifiez les exigences de [Disponibilité](#availability). Si le terminal affiche `Artifacts need a claude.ai login`, consultez [l'entrée de cette erreur](/docs/fr/errors#artifacts-need-a-claude-ai-login) pour savoir comment vous connecter.

63 66 

64Pour empêcher le navigateur de s'ouvrir automatiquement lors de la publication d'un nouvel artifact, définissez `CLAUDE_CODE_ARTIFACT_AUTO_OPEN=0` dans votre environnement.67<h3 id="when-claude-code-asks-before-publishing">

68 Quand Claude Code demande avant de publier

69</h3>

70 

71Un nouvel artefact que Claude publie en réponse à un prompt que vous tapez est publié sans demande de permission ni examen par le classifieur. Dans les cas suivants, Claude Code vous demande d'abord, ou en [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) fait examiner la publication par le classifieur :

65 72 

66Si Claude répond qu'il ne peut pas publier, ou écrit un fichier HTML local sans lien, l'outil n'est pas activé pour votre session. Vérifiez les exigences de [Disponibilité](#availability).73| Quand | Ce que fait Claude Code |

74| :- | :- |

75| La session est en [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode) | Demande avant la première publication de chaque artefact |

76| La publication déclare des capacités d'exécution pour la page, comme des [appels de connecteur](#pull-live-data-with-mcp-connectors) ou des [téléchargements de fichiers](#offer-a-file-download) | Demande avant cette publication |

77| Vous avez partagé l'artefact publiquement | Demande une fois par conversation avant de le modifier |

78| Vous avez désactivé la [récupération des feature flags](/docs/fr/env-vars#features-that-need-feature-flag-fetching) | Demande avant la première publication de chaque artefact |

79| Claude publie lors d'un tour déclenché par une [tâche planifiée](/docs/fr/scheduled-tasks) s'exécutant dans votre session, plutôt que par un prompt que vous avez tapé | Demande avant la première publication de chaque artefact |

80| Claude ne peut pas lire le fichier sans votre approbation | Demande avant de le publier. Une règle d'autorisation pour l'outil `Artifact` ne permet pas d'ignorer cette demande |

81 

82Claude lit sans demander les fichiers situés dans les [répertoires de travail](/docs/fr/permissions#working-directories) de votre session, ainsi que dans le répertoire temporaire où il écrit les pages. Pour permettre à Claude de publier depuis un autre dossier sans demande, ajoutez ce dossier comme répertoire de travail avec [`--add-dir`](/docs/fr/cli-reference#cli-flags) au lancement ou `/add-dir` pendant la session.

67 83 

68<h2 id="update-an-artifact">84<h2 id="update-an-artifact">

69 Mettre à jour un artifact85 Mettre à jour un artifact


87 Retrouver un artifact103 Retrouver un artifact

88</h2>104</h2>

89 105 

90Exécutez `/artifacts` dans Claude Code pour lister chaque artifact que vous possédez et chaque artifact partagé avec vous. Sélectionnez-en un et appuyez sur `o` pour l'ouvrir dans votre navigateur ou `c` pour copier son lien. Appuyez sur `Entrée` pour l'attacher à la session actuelle ; avant la v2.1.216, `Entrée` l'ouvrait dans votre navigateur. Claude Code lit la liste à partir de votre compte claude.ai, donc cela fonctionne dans une nouvelle session et après `/clear`, quand le lien a disparu du terminal. Nécessite Claude Code v2.1.208 ou version ultérieure.106Exécutez `/artifacts` dans Claude Code pour lister les artefacts que vous possédez et ceux partagés avec vous. Les artefacts de la session actuelle apparaissent en premier, sous **This session**. Nécessite Claude Code v2.1.208 ou version ultérieure.

107 

108Sélectionnez un artefact, puis appuyez sur l'une de ces touches :

109 

110* **`Enter`** : l'ouvre dans votre navigateur lorsqu'il est déjà attaché à la session actuelle, et l'attache dans le cas contraire. Avant la v2.1.216, `Enter` l'ouvrait dans votre navigateur

111* **`o`** : l'ouvre dans votre navigateur

112* **`c`** : copie son lien

113 

114Claude Code lit la liste à partir de votre compte claude.ai, donc cela fonctionne dans une nouvelle session et après `/clear`, quand le lien a disparu du terminal.

91 115 

92<h2 id="share-an-artifact">116<h2 id="share-an-artifact">

93 Partager un artifact117 Partager un artifact


110 134 

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

112 136 

137Si un éditeur publie alors que Claude détient une copie plus ancienne de la page, Claude Code refuse toute publication fondée sur cette copie. Claude fusionne alors ses modifications avec la version plus récente et publie à nouveau.

138 

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

114 Lire un artifact partagé avec vous140 Lire un artifact partagé avec vous

115</h2>141</h2>


168 194 

169Claude cesse également de répondre de lui-même sur un artefact après avoir traité 60 commentaires envoyés ou activations de fils de discussion sur cet artefact en l'espace d'une heure. Vous voyez `Comments are waiting on Artifact: <name>` une seule fois, et Claude reprend à mesure que les commentaires de cette heure sortent de la fenêtre.195Claude cesse également de répondre de lui-même sur un artefact après avoir traité 60 commentaires envoyés ou activations de fils de discussion sur cet artefact en l'espace d'une heure. Vous voyez `Comments are waiting on Artifact: <name>` une seule fois, et Claude reprend à mesure que les commentaires de cette heure sortent de la fenêtre.

170 196 

171Exécutez `/tasks` pour voir chaque artefact que votre session surveille, listé comme une tâche de mises à jour en direct. Vous pouvez empêcher Claude de répondre de lui-même de l'une des manières suivantes :197Exécutez `/tasks` pour voir les artefacts que votre session surveille. `/tasks` regroupe les surveillances que Claude Code a démarrées de lui-même sous la ligne **System tasks**. Appuyez sur `Enter` sur cette ligne pour les lister. Une surveillance que vous avez demandé à Claude de démarrer apparaît sous **Monitors**.

198 

199Vous pouvez empêcher Claude de répondre de lui-même de l'une des manières suivantes :

172 200 

173* **Appuyez une fois sur Ctrl+C à un prompt inactif** : Claude met en pause ses réponses sur tous les artefacts que votre session surveille. Les réponses reprennent après l'envoi de votre prochain message.201* **Appuyez une fois sur Ctrl+C à un prompt inactif** : Claude met en pause ses réponses sur tous les artefacts que votre session surveille. Les réponses reprennent après l'envoi de votre prochain message.

174* **Arrêtez la tâche dans `/tasks`** : Claude cesse de répondre sur cet artefact jusqu'à ce que vous lui demandiez de reprendre les réponses à cet endroit. Republier l'artefact ne relance pas les réponses, et l'arrêt s'applique toujours lorsque vous reprenez la session ultérieurement.202* **Arrêtez la tâche dans `/tasks`** : Claude cesse de répondre sur cet artefact jusqu'à ce que vous lui demandiez de reprendre les réponses à cet endroit. Republier l'artefact ne relance pas les réponses, et l'arrêt s'applique toujours lorsque vous reprenez la session ultérieurement.


391| Authentification | La session est sauvegardée par un compte claude.ai : connectez-vous avec `/login` dans la CLI ou l'application de bureau. Les sessions Claude Tag sont connectées via l'identité de l'agent, donc aucune étape n'est nécessaire. Les sessions utilisant une clé API, un [jeton de passerelle](/docs/fr/llm-gateway) ou une identifiant de fournisseur cloud ne peuvent pas publier. |419| Authentification | La session est sauvegardée par un compte claude.ai : connectez-vous avec `/login` dans la CLI ou l'application de bureau. Les sessions Claude Tag sont connectées via l'identité de l'agent, donc aucune étape n'est nécessaire. Les sessions utilisant une clé API, un [jeton de passerelle](/docs/fr/llm-gateway) ou une identifiant de fournisseur cloud ne peuvent pas publier. |

392| Fournisseur de modèle | API Anthropic. Non disponible sur [Amazon Bedrock](/docs/fr/amazon-bedrock), [Google Cloud's Agent Platform](/docs/fr/google-vertex-ai) ou [Microsoft Foundry](/docs/fr/microsoft-foundry). |420| Fournisseur de modèle | API Anthropic. Non disponible sur [Amazon Bedrock](/docs/fr/amazon-bedrock), [Google Cloud's Agent Platform](/docs/fr/google-vertex-ai) ou [Microsoft Foundry](/docs/fr/microsoft-foundry). |

393| Politique organisationnelle | Les clés de chiffrement gérées par le client (CMEK), HIPAA et [Zéro rétention de données](/docs/fr/zero-data-retention) ne sont pas activées pour l'organisation. |421| Politique organisationnelle | Les clés de chiffrement gérées par le client (CMEK), HIPAA et [Zéro rétention de données](/docs/fr/zero-data-retention) ne sont pas activées pour l'organisation. |

394| Surface | Claude Code CLI, ou l'application de bureau Claude version 1.13576.0 ou ultérieure. Les sessions [Claude Tag](https://claude.com/docs/claude-tag/overview) peuvent également publier des artefacts lorsque Claude Tag et les artefacts sont activés pour l'organisation. Désactivé par défaut dans les contextes [Agent SDK](/docs/fr/agent-sdk/overview), GitHub Action et MCP-server, lorsque vous exécutez Claude Code avec [`-p`](/docs/fr/headless) depuis votre propre terminal ou vos scripts, et lorsque [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/fr/env-vars) est défini. |422| Surface | Claude Code CLI, ou l'application de bureau Claude version 1.13576.0 ou ultérieure. Les sessions [Claude Tag](https://claude.com/docs/claude-tag/overview) peuvent également publier des artefacts lorsque Claude Tag et les artefacts sont activés pour l'organisation. Les sessions servies par [`claude remote-control`](/docs/fr/remote-control) peuvent publier des artefacts lorsque vous avez démarré la session vous-même. Nécessite Claude Code v2.1.281 ou ultérieur. Désactivé par défaut dans les contextes [Agent SDK](/docs/fr/agent-sdk/overview), GitHub Action et MCP-server, lorsque vous exécutez Claude Code avec [`-p`](/docs/fr/headless) depuis votre propre terminal ou vos scripts, et lorsque [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/fr/env-vars) est défini. |

395 423 

396La disponibilité des artefacts pour votre organisation provient de la politique de votre organisation, que Claude Code charge depuis `api.anthropic.com`. Lorsque Claude Code ne peut pas charger la politique, les artefacts ne sont pas disponibles. Lorsque vous en demandez un, Claude explique pourquoi.424La disponibilité des artefacts pour votre organisation provient de la politique de votre organisation, que Claude Code charge depuis `api.anthropic.com`. Lorsque Claude Code ne peut pas charger la politique, les artefacts ne sont pas disponibles. Lorsque vous en demandez un, Claude explique pourquoi.

397 425 

Details

1237 1237 

1238Le CLI envoie des métriques, des logs et, lorsqu'elles sont activées, des traces à la passerelle, qui les relaie textuellement à chaque destination configurée. Les exportations utilisent OpenTelemetry Protocol (OTLP) sur HTTP. Pour ignorer le relais et faire exporter les sessions directement vers votre collecteur, [nommez le collecteur dans une politique](#export-directly-to-your-collector). Consultez [Surveillance de l'utilisation](/docs/fr/monitoring-usage) pour les métriques et événements que le CLI émet.1238Le CLI envoie des métriques, des logs et, lorsqu'elles sont activées, des traces à la passerelle, qui les relaie textuellement à chaque destination configurée. Les exportations utilisent OpenTelemetry Protocol (OTLP) sur HTTP. Pour ignorer le relais et faire exporter les sessions directement vers votre collecteur, [nommez le collecteur dans une politique](#export-directly-to-your-collector). Consultez [Surveillance de l'utilisation](/docs/fr/monitoring-usage) pour les métriques et événements que le CLI émet.

1239 1239 

1240Dans les sessions connectées via `/login`, le CLI marque chaque exportation avec l'identité de l'utilisateur authentifié, lue à partir du JWT émis par la passerelle : les attributs `user.id`, `user.email` et `user.groups`. L'attribution des coûts et de l'utilisation par développeur fonctionne donc sans configuration côté développeur.1240Dans les sessions connectées via `/login`, le CLI marque chaque exportation avec l'identité de l'utilisateur authentifié, lue à partir du JWT émis par la passerelle : les attributs `user.id`, `user.email` et `user.groups`. L'attribution des coûts et de l'utilisation par développeur fonctionne donc sans configuration côté développeur. Les événements que Claude Code journalise avant que le développeur ne se connecte [ne portent pas cette identité](/docs/fr/monitoring-usage#standard-attributes).

1241 1241 

1242[Claude Desktop](#claude-desktop-overlay) et les sessions Cowork connectées via la passerelle marquent leur télémétrie avec `user.email` et `user.groups` aux côtés de `enduser.id`, afin que vous puissiez couvrir l'utilisation du terminal, de Desktop et de Cowork avec une seule requête sur `user.email` ou `user.groups`. `user.groups` est la liste des groupes IdP séparés par des virgules.1242[Claude Desktop](#claude-desktop-overlay) et les sessions Cowork connectées via la passerelle marquent leur télémétrie avec `user.email` et `user.groups` aux côtés de `enduser.id`, afin que vous puissiez couvrir l'utilisation du terminal, de Desktop et de Cowork avec une seule requête sur `user.email` ou `user.groups`. `user.groups` est la liste des groupes IdP séparés par des virgules.

1243 1243 

Details

516 Télémétrie516 Télémétrie

517</h2>517</h2>

518 518 

519La passerelle vous donne des métriques d'utilisation par développeur sans aucune configuration OTEL par machine. Claude Code émet des métriques, des journaux et des traces OpenTelemetry (OTLP) optionnelles ; [Monitoring usage](/docs/fr/monitoring-usage) couvre tout ce que le CLI rapporte. Dans les sessions connectées via `/login`, le CLI marque chaque export avec les attributs d'identité IdP authentifiés `user.id`, `user.email` et `user.groups`, de sorte que l'utilisation s'accumule par développeur.519La passerelle vous donne des métriques d'utilisation par développeur sans aucune configuration OTEL par machine. Claude Code émet des métriques, des journaux et des traces OpenTelemetry (OTLP) optionnelles ; [Monitoring usage](/docs/fr/monitoring-usage) couvre tout ce que le CLI rapporte. Dans les sessions connectées via `/login`, le CLI [marque chaque export](/docs/fr/monitoring-usage#standard-attributes) avec les attributs d'identité IdP authentifiés `user.id`, `user.email` et `user.groups`, de sorte que l'utilisation s'accumule par développeur.

520 520 

521La passerelle elle-même est un relais OTLP authentifié. Définissez [`telemetry.forward_to`](/docs/fr/claude-apps-gateway-config#telemetry) avec `listen.public_url`, et elle pousse les paramètres de l'exportateur OTEL à chaque client connecté et transfère leur trafic OTLP verbatim à chaque destination que vous listez. Chaque destination opte pour les métriques, les journaux et les traces indépendamment, et la valeur par défaut est les métriques uniquement ; consultez la [référence `telemetry`](/docs/fr/claude-apps-gateway-config#telemetry) pour les champs par signal et leurs compromis de sensibilité. La passerelle ne met pas en buffer, n'agrège pas et ne stocke pas la télémétrie, donc l'endroit où les données arrivent dépend entièrement de la configuration de l'exportateur du collecteur.521La passerelle elle-même est un relais OTLP authentifié. Définissez [`telemetry.forward_to`](/docs/fr/claude-apps-gateway-config#telemetry) avec `listen.public_url`, et elle pousse les paramètres de l'exportateur OTEL à chaque client connecté et transfère leur trafic OTLP verbatim à chaque destination que vous listez. Chaque destination opte pour les métriques, les journaux et les traces indépendamment, et la valeur par défaut est les métriques uniquement ; consultez la [référence `telemetry`](/docs/fr/claude-apps-gateway-config#telemetry) pour les champs par signal et leurs compromis de sensibilité. La passerelle ne met pas en buffer, n'agrège pas et ne stocke pas la télémétrie, donc l'endroit où les données arrivent dépend entièrement de la configuration de l'exportateur du collecteur.

522 522 

Details

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

490* **Remote Control** : [Remote Control](/docs/fr/remote-control) connecte claude.ai à une session Claude Code s'exécutant sur votre machine. Quand vous demandez à Claude dans un projet d'exécuter un thread sur votre ordinateur, le projet [utilise Remote Control pour le faire](#run-a-thread-on-your-own-computer).490* **Remote Control** : [Remote Control](/docs/fr/remote-control) connecte claude.ai à une session Claude Code s'exécutant sur votre machine. Quand vous demandez à Claude dans un projet d'exécuter un thread sur votre ordinateur, le projet [utilise Remote Control pour le faire](#run-a-thread-on-your-own-computer).

491* **Sessions locales et agent view** : une session que vous démarrez vous-même dans votre terminal, IDE ou l'environnement local de l'application de bureau ne peut pas être ajoutée à un projet. [Agent view](/docs/fr/agent-view) est un écran pour suivre plusieurs sessions locales côte à côte, et vous démarrez toujours chacune et lui donnez sa tâche vous-même.491* **Sessions locales et agent view** : une session que vous démarrez vous-même dans votre terminal, IDE ou l'environnement local de l'application de bureau ne peut pas être ajoutée à un projet. [Agent view](/docs/fr/agent-view) est un écran pour suivre plusieurs sessions locales côte à côte, et vous démarrez toujours chacune et lui donnez sa tâche vous-même.

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

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

494* **Subagents** : un [subagent](/docs/fr/sub-agents) s'exécute à l'intérieur d'une session, effectue une tâche secondaire dans sa propre fenêtre de contexte, et retourne un résumé à cette session. Les threads d'un projet sont des sessions complètes que Claude démarre et qui rendent compte à la conversation du projet, et un thread peut toujours utiliser des subagents pour ses propres tâches secondaires.494* **Subagents** : un [subagent](/docs/fr/sub-agents) s'exécute à l'intérieur d'une session, effectue une tâche secondaire dans sa propre fenêtre de contexte, et retourne un résumé à cette session. Les threads d'un projet sont des sessions complètes que Claude démarre et qui rendent compte à la conversation du projet, et un thread peut toujours utiliser des subagents pour ses propres tâches secondaires.

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

Details

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. 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` |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\|name>` | Attacher à une [session d'arrière-plan](/docs/fr/agent-view#manage-sessions-from-the-shell) dans ce terminal. Passer une partie du nom d'une session en cours d'exécution à la place de l'ID nécessite Claude Code v2.1.290 ou ultérieur | `claude attach 7c5dcf5d` |31| `claude attach <id\|name>` | Attacher à une [session d'arrière-plan](/docs/fr/agent-view#manage-sessions-from-the-shell) dans ce terminal. Passer une partie du nom d'une session à la place de l'ID nécessite Claude Code v2.1.290 ou ultérieur | `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 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` |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 logs` | Suivre le fichier de log du [superviseur](/docs/fr/agent-view#the-supervisor-process) de session d'arrière-plan, `~/.claude/daemon.log`, en imprimant les nouvelles lignes à mesure qu'elles arrivent jusqu'à ce que vous appuyiez sur `Ctrl+C` | `claude daemon logs` |34| `claude daemon logs` | Suivre le fichier de log du [superviseur](/docs/fr/agent-view#the-supervisor-process) de session d'arrière-plan, `~/.claude/daemon.log`, en imprimant les nouvelles lignes à mesure qu'elles arrivent jusqu'à ce que vous appuyiez sur `Ctrl+C` | `claude daemon logs` |


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

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

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

40| `claude logs <id\|name>` | Imprimer la sortie récente d'une [session d'arrière-plan](/docs/fr/agent-view#manage-sessions-from-the-shell). Passer une partie du nom d'une session en cours d'exécution à la place de l'ID nécessite Claude Code v2.1.290 ou ultérieur | `claude logs 7c5dcf5d` |40| `claude logs <id\|name>` | Imprimer la sortie récente d'une [session d'arrière-plan](/docs/fr/agent-view#manage-sessions-from-the-shell). Passer une partie du nom d'une session à la place de l'ID nécessite Claude Code v2.1.290 ou ultérieur | `claude logs 7c5dcf5d` |

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

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

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


106| `--input-format` | Spécifier le format d'entrée pour le mode impression (options : `text`, `stream-json`) | `claude -p --output-format json --input-format stream-json` |106| `--input-format` | Spécifier le format d'entrée pour le mode impression (options : `text`, `stream-json`) | `claude -p --output-format json --input-format stream-json` |

107| `--json-schema` | Obtenir une sortie JSON validée correspondant à un JSON Schema après que l'agent ait terminé son flux de travail (mode impression uniquement). Voir [structured outputs](/docs/fr/agent-sdk/structured-outputs). Claude Code quitte avec une erreur sur un schéma invalide et accepte le mot-clé `format` comme annotation sans validation côté client | `claude -p --json-schema '{"type":"object","properties":{...}}' "query"` |107| `--json-schema` | Obtenir une sortie JSON validée correspondant à un JSON Schema après que l'agent ait terminé son flux de travail (mode impression uniquement). Voir [structured outputs](/docs/fr/agent-sdk/structured-outputs). Claude Code quitte avec une erreur sur un schéma invalide et accepte le mot-clé `format` comme annotation sans validation côté client | `claude -p --json-schema '{"type":"object","properties":{...}}' "query"` |

108| `--maintenance` | Exécuter les hooks d'[initialisation](/docs/fr/hooks#setup) avec le matcher `maintenance` avant la session (mode impression uniquement) | `claude -p --maintenance "query"` |108| `--maintenance` | Exécuter les hooks d'[initialisation](/docs/fr/hooks#setup) avec le matcher `maintenance` avant la session (mode impression uniquement) | `claude -p --maintenance "query"` |

109| `--max-budget-usd` | Montant maximum en dollars à dépenser en appels API avant l'arrêt (mode impression uniquement). Claude Code compare le plafond à son [estimation des coûts côté client](/docs/fr/agent-sdk/cost-tracking#estimates-not-billing), qui peut différer de votre facture. Les dépenses des [sous-agents](/docs/fr/sub-agents) comptent dans le plafond. Lorsque vous revenez à une conversation avec `--continue` ou `--resume`, les totaux [restaurés à partir des exécutions antérieures](/docs/fr/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls) n'y comptent pas. Une fois que les dépenses atteignent le plafond, le lancement d'un autre sous-agent échoue avec `Budget limit reached`, et Claude Code arrête les sous-agents en arrière-plan qui s'exécutent encore ; les comportements d'application du plafond nécessitent Claude Code v2.1.217 ou ultérieur | `claude -p --max-budget-usd 5.00 "query"` |109| `--max-budget-usd` | Arrêter l'exécution une fois que les dépenses estimées en appels API atteignent ce montant (mode impression uniquement). Claude Code compare le plafond à son [estimation des coûts côté client](/docs/fr/agent-sdk/cost-tracking#estimates-not-billing), qui peut différer de votre facture. Les dépenses des [sous-agents](/docs/fr/sub-agents) comptent dans le plafond. Les dépenses peuvent dépasser le plafond, donc [prévoyez une marge](/docs/fr/agent-sdk/agent-loop#budget-headroom). Lorsque vous revenez à une conversation avec `--continue` ou `--resume`, les totaux [restaurés à partir des exécutions antérieures](/docs/fr/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls) n'y comptent pas. Une fois que les dépenses atteignent le plafond, le lancement d'un autre sous-agent échoue avec `Budget limit reached`, et Claude Code arrête les sous-agents en arrière-plan qui s'exécutent encore ; les comportements d'application du plafond nécessitent Claude Code v2.1.217 ou ultérieur | `claude -p --max-budget-usd 5.00 "query"` |

110| `--max-turns` | Limiter le nombre de tours d'agent (mode impression uniquement). Quitte avec une erreur lorsque la limite est atteinte. Pas de limite par défaut. Avec `--input-format stream-json`, un message toujours en file d'attente lorsque la limite termine un tour reste en file d'attente et démarre un nouveau tour avec sa propre limite | `claude -p --max-turns 3 "query"` |110| `--max-turns` | Limiter le nombre de tours d'agent (mode impression uniquement). Quitte avec une erreur lorsque la limite est atteinte. Pas de limite par défaut. Avec `--input-format stream-json`, un message toujours en file d'attente lorsque la limite termine un tour reste en file d'attente et démarre un nouveau tour avec sa propre limite | `claude -p --max-turns 3 "query"` |

111| `--mcp-config` | Charger les serveurs MCP à partir de fichiers ou de chaînes JSON (séparés par des espaces). Lorsque vous transmettez ce drapeau avec `-p`, Claude Code attend que les serveurs toujours en attente se connectent avant d'exécuter le premier tour, jusqu'au délai d'expiration de démarrage [`MCP_TIMEOUT`](/docs/fr/env-vars), 30 secondes par défaut ; un serveur avec une [liste d'outils mise en cache](/docs/fr/mcp#managing-your-servers) ignore l'attente et se connecte à la première utilisation. L'attente nécessite Claude Code v2.1.221 ou ultérieur | `claude --mcp-config ./mcp.json` |111| `--mcp-config` | Charger les serveurs MCP à partir de fichiers ou de chaînes JSON (séparés par des espaces). Lorsque vous transmettez ce drapeau avec `-p`, Claude Code attend que les serveurs toujours en attente se connectent avant d'exécuter le premier tour, jusqu'au délai d'expiration de démarrage [`MCP_TIMEOUT`](/docs/fr/env-vars), 30 secondes par défaut ; un serveur avec une [liste d'outils mise en cache](/docs/fr/mcp#managing-your-servers) ignore l'attente et se connecte à la première utilisation. L'attente nécessite Claude Code v2.1.221 ou ultérieur | `claude --mcp-config ./mcp.json` |

112| `--model` | Définit le modèle pour la session actuelle avec un [alias de modèle](/docs/fr/model-config#model-aliases) tel que `sonnet`, `opus`, `haiku`, ou `fable`, ou le nom complet d'un modèle. Remplace le paramètre [`model`](/docs/fr/settings-reference#model) et [`ANTHROPIC_MODEL`](/docs/fr/model-config#environment-variables) | `claude --model claude-sonnet-5` |112| `--model` | Définit le modèle pour la session actuelle avec un [alias de modèle](/docs/fr/model-config#model-aliases) tel que `sonnet`, `opus`, `haiku`, ou `fable`, ou le nom complet d'un modèle. Remplace le paramètre [`model`](/docs/fr/settings-reference#model) et [`ANTHROPIC_MODEL`](/docs/fr/model-config#environment-variables) | `claude --model claude-sonnet-5` |

Details

307| | Disponible dans les sessions cloud | Pourquoi |307| | Disponible dans les sessions cloud | Pourquoi |

308| :- | :- | :- |308| :- | :- | :- |

309| Votre `CLAUDE.md` du dépôt | Oui | Partie du clone |309| Votre `CLAUDE.md` du dépôt | Oui | Partie du clone |

310| Vos hooks `.claude/settings.json` du dépôt et règles de permission | Oui, dans une session avec un seul dépôt | Partie du clone. Une session avec plusieurs dépôts, incluant un fil de [projet](/docs/fr/claude-projects#what-threads-pick-up-from-your-repositories), démarre au-dessus des clones et ne les lit pas |310| Vos hooks `.claude/settings.json` du dépôt et règles de permission | Oui, dans une session avec un seul dépôt | Partie du clone. Pour une session avec plusieurs dépôts, consultez [quels paramètres elle lit](/docs/fr/settings#settings-in-cloud-sessions) |

311| Vos serveurs MCP `.mcp.json` du dépôt | Oui, dans une session avec un seul dépôt | Partie du clone, trouvé à partir du répertoire de travail de la session |311| Vos serveurs MCP `.mcp.json` du dépôt | Oui, dans une session avec un seul dépôt | Partie du clone, trouvé à partir du répertoire de travail de la session. Pour un environnement auto-hébergé, consultez [quels paramètres de dépôt s'appliquent](/docs/fr/self-hosted-environments-configuration#repository-settings-in-sessions-with-several-repositories) |

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

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

314| Plugins et marketplaces déclarés dans le `.claude/settings.json` de votre dépôt | Non | Une session cloud n'installe pas les plugins qu'un dépôt active sous [`enabledPlugins`](/docs/fr/settings-reference#enabledplugins), y compris ceux des marketplaces qu'il liste sous [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces) |314| Plugins et marketplaces déclarés dans le `.claude/settings.json` de votre dépôt | Non | Une session cloud n'installe pas les plugins qu'un dépôt active sous [`enabledPlugins`](/docs/fr/settings-reference#enabledplugins), y compris ceux des marketplaces qu'il liste sous [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces) |


575 575 

576Les crochets SessionStart se comportent de la même manière dans le cloud qu'en local, avec ces mises en garde :576Les crochets SessionStart se comportent de la même manière dans le cloud qu'en local, avec ces mises en garde :

577 577 

578* **Un dépôt par session** : une session avec plusieurs dépôts ne charge pas les crochets du `.claude/settings.json` d'aucun dépôt, donc un crochet SessionStart que vous définissez là ne s'exécute pas. Installez les dépendances pour ces sessions avec un [script de configuration](#setup-scripts) à la place.578* **Un dépôt par session** : dans un environnement hébergé par Anthropic, une session avec plusieurs dépôts ne charge pas les hooks du `.claude/settings.json` d'aucun dépôt, donc un hook SessionStart que vous définissez là ne s'exécute pas. Installez les dépendances pour ces sessions avec un [script de configuration](#setup-scripts) à la place. Pour un environnement auto-hébergé, consultez [les paramètres de quel dépôt s'appliquent](/docs/fr/self-hosted-environments-configuration#repository-settings-in-sessions-with-several-repositories).

579* **Pas de limitation au cloud uniquement** : les crochets s'exécutent dans les sessions locales et cloud. Pour ignorer l'exécution locale, quittez tôt sauf si la variable d'environnement `CLAUDE_CODE_REMOTE` est `true`, de la même manière que le [script d'installation de dépendances](#install-dependencies-with-a-sessionstart-hook) le fait.579* **Pas de limitation au cloud uniquement** : les crochets s'exécutent dans les sessions locales et cloud. Pour ignorer l'exécution locale, quittez tôt sauf si la variable d'environnement `CLAUDE_CODE_REMOTE` est `true`, de la même manière que le [script d'installation de dépendances](#install-dependencies-with-a-sessionstart-hook) le fait.

580* **Nécessite un accès réseau** : les commandes d'installation doivent atteindre les registres de paquets. Si votre environnement utilise un accès réseau **None**, ces crochets échouent. La [liste d'autorisation par défaut](#default-allowed-domains) sous **Trusted** couvre npm, PyPI, RubyGems et crates.io.580* **Nécessite un accès réseau** : les commandes d'installation doivent atteindre les registres de paquets. Si votre environnement utilise un accès réseau **None**, ces crochets échouent. La [liste d'autorisation par défaut](#default-allowed-domains) sous **Trusted** couvre npm, PyPI, RubyGems et crates.io.

581* **Compatibilité proxy** : dans les environnements hébergés par Anthropic, tout le trafic sortant passe par un [proxy de sécurité](#security-proxy), et certains gestionnaires de paquets ne fonctionnent pas correctement avec lui ; Bun est un exemple connu. Dans un [environnement auto-hébergé](/docs/fr/self-hosted-environments-deploy#default-deny-egress), le trafic sortant va via votre propre limite réseau à la place.581* **Compatibilité proxy** : dans les environnements hébergés par Anthropic, tout le trafic sortant passe par un [proxy de sécurité](#security-proxy), et certains gestionnaires de paquets ne fonctionnent pas correctement avec lui ; Bun est un exemple connu. Dans un [environnement auto-hébergé](/docs/fr/self-hosted-environments-deploy#default-deny-egress), le trafic sortant va via votre propre limite réseau à la place.

desktop.md +1 −1

Details

396 Travailler en parallèle avec les sessions396 Travailler en parallèle avec les sessions

397</h3>397</h3>

398 398 

399Cliquez sur **+ Nouvelle session** dans la barre latérale, ou appuyez sur **Cmd+N** sur macOS ou **Ctrl+N** sur Windows, pour travailler sur plusieurs tâches en parallèle. Appuyez sur **Ctrl+Tab** et **Ctrl+Shift+Tab** pour parcourir les sessions dans la barre latérale. Pour les dépôts Git, sélectionnez l'option **worktree** à côté du nom de la branche pour donner à la session sa propre copie isolée de votre projet en utilisant [Git worktrees](/docs/fr/worktrees), donc les modifications dans une session n'affectent pas les autres sessions jusqu'à ce que vous les commitiez.399Cliquez sur **+ Nouvelle session** dans la barre latérale, ou appuyez sur **Cmd+N** sur macOS ou **Ctrl+N** sur Windows, pour travailler sur plusieurs tâches en parallèle. Appuyez sur **Ctrl+Tab** et **Ctrl+Shift+Tab** pour parcourir les sessions dans la barre latérale. Pour les dépôts Git, sélectionnez l'option **worktree** à côté du nom de la branche pour donner à la session sa propre copie isolée de votre projet en utilisant [Git worktrees](/docs/fr/worktrees).

400 400 

401Pour afficher deux sessions à la fois, maintenez **Cmd** sur macOS ou **Ctrl** sur Windows et cliquez sur une session dans la barre latérale. La session s'ouvre dans un deuxième volet à côté de celui que vous avez déjà ouvert. Pendant que la division est active, cliquer sur une autre session de la barre latérale remplace le volet qui a le focus. Appuyez sur **Cmd+\\** sur macOS ou **Ctrl+\\** sur Windows pour fermer le volet actif et revenir à une seule session.401Pour afficher deux sessions à la fois, maintenez **Cmd** sur macOS ou **Ctrl** sur Windows et cliquez sur une session dans la barre latérale. La session s'ouvre dans un deuxième volet à côté de celui que vous avez déjà ouvert. Pendant que la division est active, cliquer sur une autre session de la barre latérale remplace le volet qui a le focus. Appuyez sur **Cmd+\\** sur macOS ou **Ctrl+\\** sur Windows pour fermer le volet actif et revenir à une seule session.

402 402 

env-vars.md +2 −2

Details

204| `CLAUDE_AFK_TIMEOUT_MS` | Nombre de millisecondes d'inactivité avant qu'une boîte de dialogue [`AskUserQuestion`](/docs/fr/tools-reference) sans réponse ne se poursuive automatiquement sans vous. La poursuite automatique est désactivée par défaut ; activez-la avec le paramètre [`askUserQuestionTimeout`](/docs/fr/settings-reference#askuserquestiontimeout). Cette variable sert de remplacement pour les démos et les tests automatisés : lorsqu'elle est définie, elle a priorité sur ce paramètre et active la poursuite automatique même lorsque le paramètre n'est pas défini ou vaut `never`. Définir `0` ne désactive pas le délai ; cela ferme immédiatement la boîte de dialogue. Ignorée dans les [paramètres de projet et locaux](/docs/fr/settings-reference#variables-claude-code-ignores-in-env). Avant la v2.1.200, la poursuite automatique était activée par défaut avec un délai de `60000` (60 secondes). Nécessite Claude Code v2.1.198 ou version ultérieure |204| `CLAUDE_AFK_TIMEOUT_MS` | Nombre de millisecondes d'inactivité avant qu'une boîte de dialogue [`AskUserQuestion`](/docs/fr/tools-reference) sans réponse ne se poursuive automatiquement sans vous. La poursuite automatique est désactivée par défaut ; activez-la avec le paramètre [`askUserQuestionTimeout`](/docs/fr/settings-reference#askuserquestiontimeout). Cette variable sert de remplacement pour les démos et les tests automatisés : lorsqu'elle est définie, elle a priorité sur ce paramètre et active la poursuite automatique même lorsque le paramètre n'est pas défini ou vaut `never`. Définir `0` ne désactive pas le délai ; cela ferme immédiatement la boîte de dialogue. Ignorée dans les [paramètres de projet et locaux](/docs/fr/settings-reference#variables-claude-code-ignores-in-env). Avant la v2.1.200, la poursuite automatique était activée par défaut avec un délai de `60000` (60 secondes). Nécessite Claude Code v2.1.198 ou version ultérieure |

205| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | Définissez `1` pour désactiver tous les types de [sous-agents](/docs/fr/sub-agents) intégrés, comme Explore et Plan. S'applique uniquement en mode non interactif (le flag `-p`). Utile pour les utilisateurs du SDK qui souhaitent partir de zéro. Cela supprime également `general-purpose`, le sous-agent que Claude Code exécute lorsqu'un appel à l'outil Agent omet `subagent_type`. Un tel appel échoue alors avec [`subagent_type is required`](/docs/fr/errors#subagent-type-is-required) |205| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | Définissez `1` pour désactiver tous les types de [sous-agents](/docs/fr/sub-agents) intégrés, comme Explore et Plan. S'applique uniquement en mode non interactif (le flag `-p`). Utile pour les utilisateurs du SDK qui souhaitent partir de zéro. Cela supprime également `general-purpose`, le sous-agent que Claude Code exécute lorsqu'un appel à l'outil Agent omet `subagent_type`. Un tel appel échoue alors avec [`subagent_type is required`](/docs/fr/errors#subagent-type-is-required) |

206| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Définissez `1` pour ne pas ajouter le préfixe `mcp__<server>__` aux noms des outils des serveurs MCP créés par le SDK. Les outils utilisent leurs noms d'origine. Utilisation avec le SDK uniquement |206| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Définissez `1` pour ne pas ajouter le préfixe `mcp__<server>__` aux noms des outils des serveurs MCP créés par le SDK. Les outils utilisent leurs noms d'origine. Utilisation avec le SDK uniquement |

207| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | Délai de blocage en millisecondes pour les sous-agents. Par défaut `600000` (10 minutes) ; si vous augmentez `CLAUDE_STREAM_IDLE_TIMEOUT_MS` alors que le watchdog de streaming est actif, la valeur par défaut augmente en conséquence, comme le décrit [Gérer les réponses API lentes ou bloquées](/docs/fr/agent-sdk/typescript#handle-slow-or-stalled-api-responses). Le minuteur est réinitialisé à chaque événement de progression du streaming ; si aucune progression n'arrive dans l'intervalle, Claude Code interrompt le sous-agent et signale le blocage au parent |207| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | Délai d'expiration de blocage en millisecondes pour les sous-agents. Couvre également les [agents de workflow](/docs/fr/workflows#when-an-agent-stalls-and-restarts) sur Claude Code v2.1.286 ou ultérieur. Par défaut `600000` (10 minutes) ; si vous augmentez `CLAUDE_STREAM_IDLE_TIMEOUT_MS` alors que le watchdog de flux est actif, la valeur par défaut augmente avec lui, comme le décrit [Gérer les réponses API lentes ou bloquées](/docs/fr/agent-sdk/typescript#handle-slow-or-stalled-api-responses) |

208| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Définit 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 relever le seuil, donc les valeurs supérieures au pourcentage par défaut sont ignorées. Elle ne s'applique que dans les sessions qui [compactent avant la limite de contexte du modèle](/docs/fr/model-config#context-window-and-auto-compaction). S'applique à la fois aux conversations principales et aux sous-agents |208| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Définit 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 relever le seuil, donc les valeurs supérieures au pourcentage par défaut sont ignorées. Elle ne s'applique que dans les sessions qui [compactent avant la limite de contexte du modèle](/docs/fr/model-config#context-window-and-auto-compaction). S'applique à la fois aux conversations principales et aux sous-agents |

209| `CLAUDE_AUTO_BACKGROUND_TASKS` | Définissez `1` pour forcer l'activation de la mise en arrière-plan automatique des tâches d'agent de longue durée. Lorsqu'elle est activée, les sous-agents sont 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 version ultérieure |209| `CLAUDE_AUTO_BACKGROUND_TASKS` | Définissez `1` pour forcer l'activation de la mise en arrière-plan automatique des tâches d'agent de longue durée. Lorsqu'elle est activée, les sous-agents sont 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 version ultérieure |

210| `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 version ultérieure |210| `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 version ultérieure |


378| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | Âge maximal en millisecondes du dernier message de la transcription pour qu'une session terminée en plein tour se poursuive automatiquement à la reprise. Lorsque le dernier message est plus ancien que cette limite, Claude Code ignore la reprise automatique de `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` et son message de continuation `CLAUDE_CODE_RESUME_PROMPT`, et la session démarre inactive pour que vous la poursuiviez explicitement. Non définie ou `0` signifie aucune limite, sauf qu'un tour dont la dernière requête a échoué avec une erreur d'API ne reprend que tant que cette erreur date de moins de six heures. Une valeur positive limite tous les tours, y compris ceux-là ; une valeur négative ou non numérique applique une limite d'une heure. Les scripts de lancement d'agents de longue durée peuvent la définir pour qu'un redémarrage sur une ancienne transcription ne réexécute pas un prompt obsolète. Claude Code définit lui-même une limite d'une heure lorsqu'il redémarre une session de la [vue des agents](/docs/fr/agent-view) ayant planté qui a hérité sa conversation d'une session interactive. Nécessite Claude Code v2.1.211 ou ultérieur |378| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | Âge maximal en millisecondes du dernier message de la transcription pour qu'une session terminée en plein tour se poursuive automatiquement à la reprise. Lorsque le dernier message est plus ancien que cette limite, Claude Code ignore la reprise automatique de `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` et son message de continuation `CLAUDE_CODE_RESUME_PROMPT`, et la session démarre inactive pour que vous la poursuiviez explicitement. Non définie ou `0` signifie aucune limite, sauf qu'un tour dont la dernière requête a échoué avec une erreur d'API ne reprend que tant que cette erreur date de moins de six heures. Une valeur positive limite tous les tours, y compris ceux-là ; une valeur négative ou non numérique applique une limite d'une heure. Les scripts de lancement d'agents de longue durée peuvent la définir pour qu'un redémarrage sur une ancienne transcription ne réexécute pas un prompt obsolète. Claude Code définit lui-même une limite d'une heure lorsqu'il redémarre une session de la [vue des agents](/docs/fr/agent-view) ayant planté qui a hérité sa conversation d'une session interactive. Nécessite Claude Code v2.1.211 ou ultérieur |

379| `CLAUDE_CODE_RESUME_PROMPT` | Remplace le message de continuation que Claude Code envoie à Claude lorsque `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` poursuit un tour interrompu au lieu de renvoyer son prompt, 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 |379| `CLAUDE_CODE_RESUME_PROMPT` | Remplace le message de continuation que Claude Code envoie à Claude lorsque `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` poursuit un tour interrompu au lieu de renvoyer son prompt, 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 |

380| `CLAUDE_CODE_RETRY_WATCHDOG` | Définir sur `1` pour les sessions sans surveillance comme les harnais d'évaluation, les jobs CI ou les workers distants. Réessaie indéfiniment en cas d'erreurs de capacité `429` et `529` 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` signalant une limite de dépenses ou des crédits d'utilisation épuisés, même s'il provient d'un [plafond de dépenses de passerelle](/docs/fr/errors#spend-limit-reached) réinitialisé selon un calendrier. Avant la v2.1.239, le watchdog réessayait indéfiniment dans ces cas. Pour les requêtes en mode rapide, voir [Gérer les limites de débit](/docs/fr/fast-mode#handle-rate-limits). Le watchdog espace les tentatives jusqu'à 5 minutes, ou jusqu'à la réinitialisation de la limite lorsque la réponse indique une heure de réinitialisation de la limite de débit, de sorte qu'une session qui atteint une limite d'utilisation patiente jusqu'à la fin de la fenêtre restante. À partir de la v2.1.199, il porte également à 300 le nombre de nouvelles tentatives par défaut pour les autres erreurs transitoires, comme les erreurs serveur, les délais d'expiration et les connexions interrompues, soit environ trois heures de backoff, 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 |380| `CLAUDE_CODE_RETRY_WATCHDOG` | Définir sur `1` pour les sessions sans surveillance comme les harnais d'évaluation, les jobs CI ou les workers distants. Réessaie indéfiniment en cas d'erreurs de capacité `429` et `529` 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` signalant une limite de dépenses ou des crédits d'utilisation épuisés, même s'il provient d'un [plafond de dépenses de passerelle](/docs/fr/errors#spend-limit-reached) réinitialisé selon un calendrier. Avant la v2.1.239, le watchdog réessayait indéfiniment dans ces cas. Pour les requêtes en mode rapide, voir [Gérer les limites de débit](/docs/fr/fast-mode#handle-rate-limits). Le watchdog espace les tentatives jusqu'à 5 minutes, ou jusqu'à la réinitialisation de la limite lorsque la réponse indique une heure de réinitialisation de la limite de débit, de sorte qu'une session qui atteint une limite d'utilisation patiente jusqu'à la fin de la fenêtre restante. À partir de la v2.1.199, il porte également à 300 le nombre de nouvelles tentatives par défaut pour les autres erreurs transitoires, comme les erreurs serveur, les délais d'expiration et les connexions interrompues, soit environ trois heures de backoff, 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 |

381| `CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS` | Durée maximale en millisecondes que chaque requête API passe à attendre la fin des erreurs `429` et `529` lorsque `CLAUDE_CODE_RETRY_WATCHDOG` est défini. Une fois cette durée écoulée, la prochaine erreur de ce type met fin à la requête. Indiquez un nombre entier positif en chiffres simples, par exemple `1800000` pour 30 minutes. Lorsqu'elle n'est pas définie, l'attente n'a pas de limite. Nécessite Claude Code v2.1.295 ou ultérieure |

381| `CLAUDE_CODE_SAFE_MODE` | Définir sur `1` pour démarrer en mode sans échec : CLAUDE.md, les skills, les plugins, les hooks, les serveurs MCP, les commandes et agents personnalisés, les styles de sortie, les workflows, les thèmes personnalisés, les raccourcis clavier personnalisés, les commandes de barre de statut et de suggestion de fichiers, les serveurs LSP et la mémoire automatique ne sont pas chargés, afin de dépanner une configuration défaillante. La politique des paramètres gérés s'applique toujours, y compris les hooks, la barre de statut et les commandes de suggestion de fichiers configurés par la politique ; ce n'est pas le cas des plugins gérés, des skills gérés, du CLAUDE.md géré et des serveurs MCP configurés par la politique. Équivaut à passer [`--safe-mode`](/docs/fr/cli-reference#cli-flags). Les processus enfants lancés directement héritent de la variable |382| `CLAUDE_CODE_SAFE_MODE` | Définir sur `1` pour démarrer en mode sans échec : CLAUDE.md, les skills, les plugins, les hooks, les serveurs MCP, les commandes et agents personnalisés, les styles de sortie, les workflows, les thèmes personnalisés, les raccourcis clavier personnalisés, les commandes de barre de statut et de suggestion de fichiers, les serveurs LSP et la mémoire automatique ne sont pas chargés, afin de dépanner une configuration défaillante. La politique des paramètres gérés s'applique toujours, y compris les hooks, la barre de statut et les commandes de suggestion de fichiers configurés par la politique ; ce n'est pas le cas des plugins gérés, des skills gérés, du CLAUDE.md géré et des serveurs MCP configurés par la politique. Équivaut à passer [`--safe-mode`](/docs/fr/cli-reference#cli-flags). Les processus enfants lancés directement héritent de la variable |

382| `CLAUDE_CODE_SCRIPT_CAPS` | Objet JSON limitant le nombre de fois où des scripts spécifiques peuvent être invoqués par session lorsque `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` est défini. Les clés sont des sous-chaînes comparées au texte de la commande ; les valeurs sont des limites d'appels entières. Par exemple, `{"deploy.sh": 2}` permet d'appeler `deploy.sh` au maximum deux fois. La correspondance repose sur les sous-chaînes, de sorte que les astuces d'expansion du shell comme `./scripts/deploy.sh $(evil)` sont tout de même comptabilisées. La démultiplication à l'exécution via `xargs` ou `find -exec` n'est pas détectée ; il s'agit d'un contrôle de défense en profondeur |383| `CLAUDE_CODE_SCRIPT_CAPS` | Objet JSON limitant le nombre de fois où des scripts spécifiques peuvent être invoqués par session lorsque `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` est défini. Les clés sont des sous-chaînes comparées au texte de la commande ; les valeurs sont des limites d'appels entières. Par exemple, `{"deploy.sh": 2}` permet d'appeler `deploy.sh` au maximum deux fois. La correspondance repose sur les sous-chaînes, de sorte que les astuces d'expansion du shell comme `./scripts/deploy.sh $(evil)` sont tout de même comptabilisées. La démultiplication à l'exécution via `xargs` ou `find -exec` n'est pas détectée ; il s'agit d'un contrôle de défense en profondeur |

383| `CLAUDE_CODE_SCROLL_SPEED` | Définit le multiplicateur de défilement de la molette de la souris en [rendu plein écran](/docs/fr/fullscreen#mouse-wheel-scrolling). Accepte toute valeur positive jusqu'à 20, y compris des valeurs fractionnaires inférieures à 1 comme `0.5` pour ralentir le défilement accéléré du trackpad et de la molette dans les terminaux qui amplifient déjà les événements de molette. Définir sur `3` pour reproduire le comportement de `vim` si votre terminal envoie un événement de molette par cran sans amplification. Ignorée dans le terminal des IDE JetBrains, où Claude Code utilise sa propre gestion du défilement |384| `CLAUDE_CODE_SCROLL_SPEED` | Définit le multiplicateur de défilement de la molette de la souris en [rendu plein écran](/docs/fr/fullscreen#mouse-wheel-scrolling). Accepte toute valeur positive jusqu'à 20, y compris des valeurs fractionnaires inférieures à 1 comme `0.5` pour ralentir le défilement accéléré du trackpad et de la molette dans les terminaux qui amplifient déjà les événements de molette. Définir sur `3` pour reproduire le comportement de `vim` si votre terminal envoie un événement de molette par cran sans amplification. Ignorée dans le terminal des IDE JetBrains, où Claude Code utilise sa propre gestion du défilement |


590* Utiliser [l'outil advisor](/docs/fr/advisor#requirements)591* Utiliser [l'outil advisor](/docs/fr/advisor#requirements)

591* Lire les [commentaires sur un artefact](/docs/fr/artifacts#collect-comments-on-an-artifact) ou y répondre592* Lire les [commentaires sur un artefact](/docs/fr/artifacts#collect-comments-on-an-artifact) ou y répondre

592* Demander à Claude de lire [l'artefact public d'une autre organisation](/docs/fr/artifacts#read-an-artifact-shared-with-you)593* Demander à Claude de lire [l'artefact public d'une autre organisation](/docs/fr/artifacts#read-an-artifact-shared-with-you)

593* Demander à Claude Code de sonder les serveurs de connecteurs claude.ai pour la [révision 2026-07-28 du protocole MCP](/docs/fr/mcp#mcp-client-runtimes), sauf si vous définissez `MCP_PROTOCOL_NEGOTIATION=auto`

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

595* Obtenir des [commentaires rédigés par Claude](/docs/fr/tools-reference#sendfeedback-tool-behavior), que Claude Code active au moyen d'un flag récupéré595* Obtenir des [commentaires rédigés par Claude](/docs/fr/tools-reference#sendfeedback-tool-behavior), que Claude Code active au moyen d'un flag récupéré

596* Demander à Claude de [traiter les collages volumineux comme du texte collé plutôt que saisi](/docs/fr/terminal-config#how-claude-treats-pasted-text) ; le contenu derrière un espace réservé `[Pasted text #N]` parvient à Claude sans marquage596* Demander à Claude de [traiter les collages volumineux comme du texte collé plutôt que saisi](/docs/fr/terminal-config#how-claude-treats-pasted-text) ; le contenu derrière un espace réservé `[Pasted text #N]` parvient à Claude sans marquage

errors.md +4 −5

Details

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

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

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

389* 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`.389* 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 en streaming au maximum une fois. 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`.

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

391* Une réponse en streaming que le filtre de contenu de sortie de l'API arrête avant que Claude n'ait terminé sa réflexion ou commencé un texte ou un appel d'outil. Claude Code renvoie la requête une fois, dans le budget de tentatives, et affiche [Output blocked by content filtering policy](#output-blocked-by-content-filtering-policy) si le filtre arrête également la deuxième réponse.391* Une réponse en streaming que le filtre de contenu de sortie de l'API arrête avant que Claude n'ait terminé sa réflexion ou commencé un texte ou un appel d'outil. Claude Code renvoie la requête une fois, dans le budget de tentatives, et affiche [Output blocked by content filtering policy](#output-blocked-by-content-filtering-policy) si le filtre arrête également la deuxième réponse.

392* 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).392* 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).


4064 Marketplace is already added from a different source4064 Marketplace is already added from a different source

4065</h3>4065</h3>

4066 4066 

4067Vous avez confirmé l'ajout d'une marketplace via [`/plugin install <plugin> --marketplace <source>`](/docs/fr/plugins/install#add-a-marketplace-and-install-in-one-command), et le catalogue que Claude Code a récupéré à partir de cette source se nomme lui-même de la même façon qu'une marketplace que vous avez déjà ajoutée à partir d'une source différente. Claude Code conserve la marketplace existante au lieu de la remplacer, et le plugin n'est pas installé.4067Vous avez indiqué une nouvelle source de marketplace avec [`--marketplace <source>` sur la commande d'installation](/docs/fr/plugins/install#add-a-marketplace-and-install-in-one-command), dans une session ou depuis votre shell. Le catalogue que Claude Code a récupéré à partir de cette source porte le même nom qu'une marketplace que vous avez déjà ajoutée à partir d'une source différente. Claude Code conserve la marketplace existante au lieu de la remplacer, et le plugin n'est pas installé.

4068 4068 

4069```text theme={null}4069```text theme={null}

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


4817 Cette session n'a pas de transcription enregistrée4817 Cette session n'a pas de transcription enregistrée

4818</h3>4818</h3>

4819 4819 

4820Vous vous êtes attaché à une [session en arrière-plan](/docs/fr/agent-view) arrêtée qui a été mise en arrière-plan à partir d'une autre conversation avec `←` ou `/background` et arrêtée avant que sa première réponse ne soit terminée. Jusqu'à ce que cette première réponse soit terminée, la conversation vit toujours uniquement dans la session à partir de laquelle elle a été mise en arrière-plan, de sorte que `claude attach` refuse de démarrer la session arrêtée plutôt que de commencer une conversation vierge sous le même ID de session. Le message se termine par la commande `claude respawn` pour cette session :4820Vous vous êtes attaché à une session que vous avez [mise en arrière-plan](/docs/fr/agent-view#from-inside-a-session) avec `←` ou `/background` et qui s'est arrêtée avant d'exécuter un tour qui lui soit propre. Claude Code n'a pas pu trouver la conversation à partir de laquelle vous l'avez déplacée, de sorte que la session n'a rien à reprendre. Le message se termine par la commande `claude respawn` pour cette session :

4821 4821 

4822```text theme={null}4822```text theme={null}

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


4827 4827 

4828**Ce qu'il faut faire :**4828**Ce qu'il faut faire :**

4829 4829 

4830* La conversation à partir de laquelle vous avez mis cette session en arrière-plan est intacte : reprenez-la avec [`claude --resume`](/docs/fr/sessions) ou continuez à travailler dedans4830* Pour démarrer la session arrêtée à partir de zéro, exécutez `claude respawn <id>` avec l'ID du message, ou appuyez deux fois sur `Entrée` sur sa ligne dans la vue agent

4831* Pour démarrer la session arrêtée à nouveau, exécutez `claude respawn <id>` avec l'ID du message, ou appuyez deux fois sur `Entrée` sur sa ligne dans la vue agent

4832* Si la session a terminé une réponse et vous voyez toujours ce refus sur une version antérieure à v2.1.214, un dossier illisible dans `~/.claude/projects` pourrait faire manquer à l'analyse de transcription la conversation enregistrée ; mettez à jour vers v2.1.214 ou ultérieur, qui tolère les dossiers illisibles lors de l'analyse4831* Si la session a terminé une réponse et vous voyez toujours ce refus sur une version antérieure à v2.1.214, un dossier illisible dans `~/.claude/projects` pourrait faire manquer à l'analyse de transcription la conversation enregistrée ; mettez à jour vers v2.1.214 ou ultérieur, qui tolère les dossiers illisibles lors de l'analyse

4833 4832 

4834<h3 id="this-session-is-running-in-another-terminal">4833<h3 id="this-session-is-running-in-another-terminal">

glossary.md +1 −1

Details

511 Worktree isolation511 Worktree isolation

512</h3>512</h3>

513 513 

514Un mode d'isolation qui exécute Claude dans un worktree git séparé sous `.claude/worktrees/`, activé avec le drapeau `-w` ou `isolation: worktree` dans la configuration du subagent. Les modifications restent sur une branche séparée dans un répertoire séparé, afin que les agents parallèles ne se remplacent pas les fichiers les uns des autres.514Un mode d'isolation qui exécute Claude dans un worktree git séparé sous `.claude/worktrees/`, activé avec le flag `-w` ou `isolation: worktree` dans la configuration du sous-agent. Les modifications restent sur une branche séparée dans un répertoire séparé, de sorte que chaque agent parallèle modifie sa propre copie des fichiers.

515 515 

516En savoir plus : [Run parallel sessions with git worktrees](/docs/fr/worktrees)516En savoir plus : [Run parallel sessions with git worktrees](/docs/fr/worktrees)

517 517 

goal.md +1 −1

Details

127claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"127claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"

128```128```

129 129 

130Avec le format de sortie texte par défaut, rien ne s'affiche jusqu'à ce que la condition soit satisfaite, donc un objectif qui s'exécute sur plusieurs tours peut sembler bloqué. Ajoutez `--output-format stream-json --verbose` pour émettre chaque message au fur et à mesure que la boucle s'exécute.130Avec le format de sortie texte par défaut, la réponse finale de Claude s'affiche à la fin de la boucle, donc un objectif qui s'exécute sur plusieurs tours peut sembler bloqué. Ajoutez `--output-format stream-json --verbose` pour émettre chaque message au fur et à mesure que la boucle s'exécute.

131 131 

132Interrompez le processus avec Ctrl+C pour arrêter un objectif non-interactive avant qu'il ne se résolve.132Interrompez le processus avec Ctrl+C pour arrêter un objectif non-interactive avant qu'il ne se résolve.

133 133 

headless.md +11 −9

Details

32claude -p "What does the auth module do?"32claude -p "What does the auth module do?"

33```33```

34 34 

35Claude Code se termine avec le code 0 en cas de succès et un code non-zéro quand l'exécution échoue, donc vos scripts peuvent se brancher sur le code de sortie. Si vous passez un flag invalide, Claude Code signale l'erreur sur stderr avant le démarrage de l'exécution. Quand une défaillance se produit à l'intérieur de l'exécution, comme une authentification manquante, Claude Code affiche la défaillance comme le résultat sur stdout.35Claude Code se termine avec le code 0 en cas de succès et un code non-zéro quand l'exécution échoue, donc vos scripts peuvent adapter leur comportement selon le code de sortie. Si vous passez un flag invalide, Claude Code signale l'erreur sur stderr avant le démarrage de l'exécution. Quand une défaillance se produit à l'intérieur de l'exécution, comme une authentification manquante, Claude Code affiche la défaillance comme le résultat sur stdout.

36 36 

37<h3 id="start-faster-with-bare-mode">37<h3 id="start-faster-with-bare-mode">

38 Démarrer plus rapidement avec le mode bare38 Démarrer plus rapidement avec le mode bare


42 42 

43Le mode bare est utile pour CI et les scripts où vous avez besoin du même résultat sur chaque machine. Un hook dans le `~/.claude` d'un coéquipier ou un serveur MCP dans le `.mcp.json` du projet ne s'exécutera pas, car le mode bare ne les lit jamais. Un répertoire que vous nommez avec `--add-dir` est une exception partielle : le mode bare charge les skills de son dossier `.claude/skills/`, mais ignore toujours ses dossiers `.claude/commands/` et `.claude/agents/`. [Skills from additional directories](/docs/fr/skills#skills-from-additional-directories) couvre ce qui se charge et ce qui ne se charge pas.43Le mode bare est utile pour CI et les scripts où vous avez besoin du même résultat sur chaque machine. Un hook dans le `~/.claude` d'un coéquipier ou un serveur MCP dans le `.mcp.json` du projet ne s'exécutera pas, car le mode bare ne les lit jamais. Un répertoire que vous nommez avec `--add-dir` est une exception partielle : le mode bare charge les skills de son dossier `.claude/skills/`, mais ignore toujours ses dossiers `.claude/commands/` et `.claude/agents/`. [Skills from additional directories](/docs/fr/skills#skills-from-additional-directories) couvre ce qui se charge et ce qui ne se charge pas.

44 44 

45Sans `--bare`, une session `-p` exécute les hooks dans le `.claude/settings.json` d'un projet et connecte les serveurs dans son `.mcp.json`, même dans un dossier que vous n'avez jamais approuvé. Une session `-p` n'affiche aucune boîte de dialogue de confiance d'espace de travail et aucune invite d'approbation par serveur. [What runs before you trust a folder](/docs/fr/permissions#what-runs-before-you-trust-a-folder) couvre chaque type de contenu de référentiel sous `-p` et comment le garder à l'écart.45Sans `--bare`, une session `-p` exécute les hooks dans le `.claude/settings.json` d'un projet et connecte les serveurs dans son `.mcp.json`, même dans un dossier que vous n'avez jamais approuvé. Une session `-p` n'affiche aucune boîte de dialogue de confiance d'espace de travail et aucune demande d'approbation par serveur. [What runs before you trust a folder](/docs/fr/permissions#what-runs-before-you-trust-a-folder) couvre chaque type de contenu de dépôt sous `-p` et comment le garder à l'écart.

46 46 

47Cet exemple exécute une tâche de résumé ponctuelle en mode bare et pré-approuve l'outil Read pour que l'appel se termine sans invite de permission. Définissez `ANTHROPIC_API_KEY` avant de l'exécuter, car le mode bare n'utilise pas votre connexion d'abonnement :47Cet exemple exécute une tâche de résumé ponctuelle en mode bare et pré-approuve l'outil Read pour que l'appel se termine sans demande de permission. Définissez `ANTHROPIC_API_KEY` avant de l'exécuter, car le mode bare n'utilise pas votre connexion d'abonnement :

48 48 

49```bash theme={null}49```bash theme={null}

50claude --bare -p "Summarize README.md" --allowedTools "Read"50claude --bare -p "Summarize README.md" --allowedTools "Read"


84 84 

85L'exécution attend le travail en arrière-plan tel que les commandes en arrière-plan, les sous-agents et workflows, les surveillances Monitor et les réveils `/loop` en attente :85L'exécution attend le travail en arrière-plan tel que les commandes en arrière-plan, les sous-agents et workflows, les surveillances Monitor et les réveils `/loop` en attente :

86 86 

87* **[Commandes en arrière-plan](/docs/fr/tools-reference#background-commands)** : pour une commande démarrée par la conversation principale, par exemple un serveur de développement ou un build en mode watch, l'exécution attend que la commande se termine ou atteigne sa [limite de temps](/docs/fr/tools-reference#time-limit-for-background-commands). Claude effectue ensuite un tour supplémentaire avec le résultat, et le résultat de ce tour devient le dernier de l'exécution, c'est-à-dire celui qu'affichent les sorties `text` et `json`. Tant que la commande s'exécute, la limite de 10 minutes ne met pas fin à l'attente.87* **[Commandes en arrière-plan](/docs/fr/tools-reference#background-commands)** : pour une commande démarrée par la conversation principale, par exemple un serveur de développement ou un build en mode watch, l'exécution attend que la commande se termine ou atteigne sa [limite de temps](/docs/fr/tools-reference#time-limit-for-background-commands). Claude effectue ensuite un tour supplémentaire avec le résultat. Tant que la commande s'exécute, la limite de 10 minutes ne met pas fin à l'attente.

88* **[Sous-agents](/docs/fr/sub-agents) en arrière-plan et workflows** : l'exécution reste ouverte jusqu'à ce que ce travail se termine, car son résultat fait partie de la sortie finale.88* **[Sous-agents](/docs/fr/sub-agents) en arrière-plan et workflows** : l'exécution reste ouverte jusqu'à ce que ce travail se termine, car son résultat fait partie de la sortie finale.

89* **Surveillances [Monitor](/docs/fr/tools-reference#monitor-tool)** : l'exécution attend jusqu'à ce que la surveillance expire ou que la limite de 10 minutes mette fin à l'attente, selon ce qui arrive en premier. Pendant l'attente, Claude continue de répondre à ce que la surveillance signale. Par défaut, une surveillance expire cinq minutes après que Claude l'a démarrée.89* **Surveillances [Monitor](/docs/fr/tools-reference#monitor-tool)** : l'exécution attend jusqu'à ce que la surveillance expire ou que la limite de 10 minutes mette fin à l'attente, selon ce qui arrive en premier. Pendant l'attente, Claude continue de répondre à ce que la surveillance signale. Par défaut, une surveillance expire cinq minutes après que Claude l'a démarrée.

90* **Réveils en attente** : dans une exécution dont vous avez passé le prompt sous forme de texte plutôt qu'avec `--input-format stream-json`, lorsque Claude a planifié un [réveil `/loop` à son propre rythme](/docs/fr/scheduled-tasks#let-claude-choose-the-interval), l'exécution attend que chaque réveil se déclenche et exécute son itération jusqu'à la [fin de la boucle](/docs/fr/scheduled-tasks#stop-a-loop), même au-delà de la limite de 10 minutes.90* **Réveils en attente** : dans une exécution dont vous avez passé le prompt sous forme de texte plutôt qu'avec `--input-format stream-json`, lorsque Claude a planifié un [réveil `/loop` à son propre rythme](/docs/fr/scheduled-tasks#let-claude-choose-the-interval), l'exécution attend que chaque réveil se déclenche et exécute son itération jusqu'à la [fin de la boucle](/docs/fr/scheduled-tasks#stop-a-loop), même au-delà de la limite de 10 minutes.

91 91 

92Si l'exécution atteint sa limite [`--max-budget-usd`](/docs/fr/cli-reference#cli-flags), Claude Code arrête le travail en arrière-plan restant au lieu d'attendre.92Si l'exécution atteint sa limite [`--max-budget-usd`](/docs/fr/cli-reference#cli-flags), Claude Code arrête le travail en arrière-plan restant au lieu d'attendre.

93 93 

94Lorsque le travail en arrière-plan démarre un autre tour, l'exécution affiche le résultat de chaque tour avec la sortie `text` par défaut, et le résultat du dernier tour avec la sortie `json`. Avant la v2.1.295, l'exécution n'affichait également que le résultat du dernier tour avec la sortie `text`.

95 

94<h3 id="stop-a-run-with-sigterm">96<h3 id="stop-a-run-with-sigterm">

95 Arrêter une exécution avec SIGTERM97 Arrêter une exécution avec SIGTERM

96</h3>98</h3>

97 99 

98Si vous arrêtez une exécution `claude -p` avec SIGTERM, par exemple avec `kill` ou depuis un superviseur de processus, Claude Code se termine avec le code 143. Claude Code laisse le tour en cours inachevé et n'enregistre aucun résultat pour celui-ci. Pour terminer le tour à la place, envoyez SIGINT, ou appelez `interrupt()` du SDK Agent, avant d'arrêter le processus.100Si vous arrêtez une exécution `claude -p` avec SIGTERM, par exemple avec `kill` ou depuis un superviseur de processus, Claude Code se termine avec le code 143. Claude Code laisse le tour en cours inachevé et n'enregistre aucun résultat pour celui-ci. Pour terminer le tour à la place, envoyez SIGINT, ou appelez `interrupt()` du SDK Agent, avant d'arrêter le processus.

99 101 

100Sur SIGTERM, Claude Code termine l'arborescence des processus de toute commande Bash qui s'exécute toujours. Claude Code exécute ensuite les hooks [`SessionEnd`](/docs/fr/hooks#sessionend) et se termine. Lors de la sortie, Claude Code ne démarre aucun nouvel appel d'outil, n'envoie aucune nouvelle demande de modèle et n'exécute aucun hook autre que `SessionEnd`. Si l'exécution était au milieu d'une commande ou en attente d'une réponse à une invite de permission quand le signal est arrivé, Claude Code gère cette étape comme suit :102Sur SIGTERM, Claude Code termine l'arborescence des processus de toute commande Bash qui s'exécute toujours. Claude Code exécute ensuite les hooks [`SessionEnd`](/docs/fr/hooks#sessionend) et se termine. Lors de la sortie, Claude Code ne démarre aucun nouvel appel d'outil, n'envoie aucune nouvelle requête au modèle et n'exécute aucun hook autre que `SessionEnd`. Si l'exécution était au milieu d'une commande ou en attente d'une réponse à une demande de permission quand le signal est arrivé, Claude Code gère cette étape comme suit :

101 103 

102* **Exécution d'une commande** : Claude Code enregistre la commande comme tuée dans la session.104* **Exécution d'une commande** : Claude Code enregistre la commande comme tuée dans la session.

103* **En attente d'une réponse à une invite de permission** : si vous envoyez SIGTERM au processus, Claude Code laisse l'invite sans réponse. Si votre programme ferme la session via le SDK Agent, le SDK termine l'entrée de Claude Code avant d'envoyer un signal, et Claude Code annule l'invite dès que l'entrée se termine.105* **En attente d'une réponse à une demande de permission** : si vous envoyez SIGTERM au processus, Claude Code laisse la demande sans réponse. Si votre programme ferme la session via le SDK Agent, le SDK termine l'entrée de Claude Code avant d'envoyer un signal, et Claude Code annule la demande dès que l'entrée se termine.

104 106 

105Quand vous [reprenez la session](#continue-conversations), Claude Code laisse le tour interrompu tel qu'il est, et votre prochaine invite conduit la conversation. Pour que Claude Code continue le tour interrompu à la reprise à la place, définissez [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN=1`](/docs/fr/env-vars).107Quand vous [reprenez la session](#continue-conversations), Claude Code laisse le tour interrompu tel qu'il est, et votre prochain prompt conduit la conversation. Pour que Claude Code continue le tour interrompu à la reprise à la place, définissez [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN=1`](/docs/fr/env-vars).

106 108 

107<h3 id="if-the-working-directory-is-deleted">109<h3 id="if-the-working-directory-is-deleted">

108 Si le répertoire de travail est supprimé110 Si le répertoire de travail est supprimé


262| `type` | `"system"` | type de message |264| `type` | `"system"` | type de message |

263| `subtype` | `"api_retry"` | identifie ceci comme un événement de tentative |265| `subtype` | `"api_retry"` | identifie ceci comme un événement de tentative |

264| `attempt` | entier | numéro de tentative actuel, commençant à 1 |266| `attempt` | entier | numéro de tentative actuel, commençant à 1 |

265| `max_retries` | entier | tentatives totales autorisées pour la cause de cet échec, qui peut être inférieur au budget de session |267| `max_retries` | entier | tentatives totales autorisées pour la cause de cet échec |

266| `retry_delay_ms` | entier | millisecondes jusqu'à la prochaine tentative |268| `retry_delay_ms` | entier | millisecondes jusqu'à la prochaine tentative |

267| `error_status` | entier ou null | code de statut HTTP de la tentative échouée, ou `null` lorsque la tentative n'a pas reçu de réponse HTTP de l'API |269| `error_status` | entier ou null | code de statut HTTP de la tentative échouée, ou `null` lorsque la tentative n'a pas reçu de réponse HTTP de l'API |

268| `no_response` | objet, optionnel | présent uniquement lorsque la tentative échouée n'a pas reçu [d'en-têtes de réponse à temps](/docs/fr/errors#no-response-from-api). `waited_ms` est la durée d'attente de cette tentative et `retry_wait_ms` est la durée d'attente de la tentative. Dans ces événements, `max_retries` reflète la tentative que cette cause obtient normalement, et non le budget de session. Nécessite Claude Code v2.1.261 ou ultérieur |270| `no_response` | objet, optionnel | présent uniquement lorsque la tentative échouée n'a pas reçu [d'en-têtes de réponse à temps](/docs/fr/errors#no-response-from-api). `waited_ms` est la durée d'attente de cette tentative et `retry_wait_ms` est la durée d'attente de la nouvelle tentative. Nécessite Claude Code v2.1.261 ou ultérieur |

269| `error` | chaîne | catégorie d'erreur : `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `rate_limit`, `overloaded`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error`, ou `unknown` |271| `error` | chaîne | catégorie d'erreur : `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `rate_limit`, `overloaded`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error`, ou `unknown` |

270| `uuid` | chaîne | identifiant d'événement unique |272| `uuid` | chaîne | identifiant d'événement unique |

271| `session_id` | chaîne | session à laquelle appartient l'événement |273| `session_id` | chaîne | session à laquelle appartient l'événement |

hooks.md +124 −35

Details

476| `async` | non | Si `true`, s'exécute en arrière-plan sans bloquer. Consultez [Exécuter les hooks en arrière-plan](#run-hooks-in-the-background) |476| `async` | non | Si `true`, s'exécute en arrière-plan sans bloquer. Consultez [Exécuter les hooks en arrière-plan](#run-hooks-in-the-background) |

477| `asyncRewake` | non | Si `true`, s'exécute en arrière-plan et réveille Claude au code de sortie 2. Le stderr du hook, ou stdout s'il est vide, est affiché à Claude comme un [rappel système](/docs/fr/glossary#system-reminder) afin qu'il puisse réagir à un échec en arrière-plan de longue durée |477| `asyncRewake` | non | Si `true`, s'exécute en arrière-plan et réveille Claude au code de sortie 2. Le stderr du hook, ou stdout s'il est vide, est affiché à Claude comme un [rappel système](/docs/fr/glossary#system-reminder) afin qu'il puisse réagir à un échec en arrière-plan de longue durée |

478| `shell` | non | Shell à utiliser pour ce hook. Accepte `"bash"` ou `"powershell"`. Par défaut `"bash"`, ou `"powershell"` sur Windows lorsque Git Bash n'est pas installé. Définir `"powershell"` exécute la commande via PowerShell sur Windows. Ne nécessite pas `CLAUDE_CODE_USE_POWERSHELL_TOOL` puisque les hooks lancent PowerShell directement. Ignoré lorsque `args` est défini |478| `shell` | non | Shell à utiliser pour ce hook. Accepte `"bash"` ou `"powershell"`. Par défaut `"bash"`, ou `"powershell"` sur Windows lorsque Git Bash n'est pas installé. Définir `"powershell"` exécute la commande via PowerShell sur Windows. Ne nécessite pas `CLAUDE_CODE_USE_POWERSHELL_TOOL` puisque les hooks lancent PowerShell directement. Ignoré lorsque `args` est défini |

479| `onFailure` | non | Ce qu'il advient de l'action lorsque le hook échoue : `"continue"`, la valeur par défaut, ou `"block"`. Consultez [Bloquer l'action lorsqu'un hook échoue](#block-the-action-when-a-hook-fails). Nécessite Claude Code v2.1.295 ou ultérieur |

479 480 

480<a id="exec-form-and-shell-form" />481<a id="exec-form-and-shell-form" />

481 482 


533| `url` | oui | URL vers laquelle envoyer la requête POST |534| `url` | oui | URL vers laquelle envoyer la requête POST |

534| `headers` | non | En-têtes HTTP supplémentaires sous forme de paires clé-valeur. Les valeurs supportent l'interpolation de variables d'environnement en utilisant la syntaxe `$VAR_NAME` ou `${VAR_NAME}`. Seules les variables listées dans `allowedEnvVars` sont résolues |535| `headers` | non | En-têtes HTTP supplémentaires sous forme de paires clé-valeur. Les valeurs supportent l'interpolation de variables d'environnement en utilisant la syntaxe `$VAR_NAME` ou `${VAR_NAME}`. Seules les variables listées dans `allowedEnvVars` sont résolues |

535| `allowedEnvVars` | non | Liste des noms de variables d'environnement qui peuvent être interpolés dans les valeurs d'en-tête. Les références aux variables non listées sont remplacées par des chaînes vides. Requis pour que l'interpolation de variables d'environnement fonctionne |536| `allowedEnvVars` | non | Liste des noms de variables d'environnement qui peuvent être interpolés dans les valeurs d'en-tête. Les références aux variables non listées sont remplacées par des chaînes vides. Requis pour que l'interpolation de variables d'environnement fonctionne |

537| `onFailure` | non | Ce qu'il advient de l'action lorsque le hook échoue : `"continue"`, la valeur par défaut, ou `"block"`. Consultez [Bloquer l'action lorsqu'un hook échoue](#block-the-action-when-a-hook-fails). Nécessite Claude Code v2.1.295 ou ultérieur |

536 538 

537Claude Code envoie l'[entrée JSON](#hook-input-and-output) du hook en tant que corps de la requête POST avec `Content-Type: application/json`. Le corps de la réponse utilise le même [format de sortie JSON](#json-output) que les hooks de commande.539Claude Code envoie l'[entrée JSON](#hook-input-and-output) du hook en tant que corps de la requête POST avec `Content-Type: application/json`. Le corps de la réponse utilise le même [format de sortie JSON](#json-output) que les hooks de commande.

538 540 


821 Sortie du code de sortie823 Sortie du code de sortie

822</h3>824</h3>

823 825 

824Le code de sortie de votre commande de hook indique à Claude Code si l'action doit procéder, être bloquée ou être ignorée. Le code de sortie n'agit pas seul. Claude Code lit les [champs de sortie JSON](#json-output) depuis stdout sur chaque code de sortie, pas seulement 0, et pour les événements qui utilisent le modèle de décision standard, un objet analysé qui passe la validation du schéma prend effet aux côtés du code. Le blocage d'exit 2 est le seul résultat que JSON ne peut pas remplacer.826Le code de sortie de votre hook indique à Claude Code s'il doit poursuivre l'action qui a déclenché le hook, comme un appel d'outil ou un prompt. Une exécution qui se termine aboutit à l'un de ces trois résultats :

825 827 

826Deux tableaux possèdent les exceptions par événement : [Comportement du code de sortie 2 par événement](#exit-code-2-behavior-per-event) dit ce que les codes de sortie font pour chaque événement, et [Contrôle de décision](#decision-control) dit quels champs de décision chaque événement honore. Les champs universels tels que `systemMessage` fonctionnent sur la plupart des événements et sont listés dans le tableau [Sortie JSON](#json-output).828* **Succès** : votre hook quitte avec 0. Claude Code applique tous les champs de [sortie JSON](#json-output) que votre hook a imprimés, et l'action se poursuit sauf si ces champs la bloquent ou la refusent.

829* **Erreur bloquante** : votre hook quitte avec 2. Sur [les événements qui peuvent bloquer](#exit-code-2-behavior-per-event), Claude Code arrête l'action.

830* **Erreur non-bloquante** : votre hook quitte avec tout autre code, ou échoue d'une autre manière, par exemple en ne démarrant pas ou en imprimant du JSON invalide. L'action se poursuit, et sur des événements tels que `PreToolUse`, vous voyez un avis `<hook name> hook error` dans la transcription. Si vous souhaitez qu'un hook en échec bloque l'action, définissez [`onFailure: "block"`](#block-the-action-when-a-hook-fails).

831 

832Ce que votre hook imprime sur stdout peut changer le résultat. Par exemple, si un hook `PreToolUse` quitte avec 1 mais imprime du JSON qui passe la validation, l'exécution est un succès et les champs JSON décident de ce qui se passe. Pour trouver le résultat de votre hook sur un événement tel que `PreToolUse`, faites correspondre ce qu'il a imprimé sur stdout dans la première colonne avec son code de sortie en haut :

833 

834| Stdout | Exit 0 | Exit 2 | Tout autre code de sortie |

835| :- | :- | :- | :- |

836| Objet JSON qui passe la [validation du schéma](#json-output) | Succès. Les champs s'appliquent | Erreur bloquante. Claude Code lit toujours les champs, mais ils ne peuvent pas remplacer le blocage | Succès. Claude Code ignore le code de sortie, et les champs seuls décident. Avec [`onFailure: "block"`](#block-the-action-when-a-hook-fails), cela compte comme un échec |

837| JSON qui [ne peut pas être analysé](#exit-code-0) ou échoue la validation du schéma | Erreur non-bloquante. L'avis porte le message d'analyse ou de validation | Erreur bloquante. Votre stderr est la raison | Erreur non-bloquante. L'avis porte le message d'analyse ou de validation |

838| [Texte brut](#exit-code-0), ou rien | Succès | Erreur bloquante. Votre stderr est la raison | Erreur non-bloquante. L'avis porte la première ligne de votre stderr |

839 

840Certains événements ont leurs propres règles :

841 

842* **`WorktreeCreate`** : tout code de sortie non-zéro fait échouer la création du worktree, quoi que dise votre JSON.

843* **`WorktreeRemove`** : tout code de sortie non-zéro fait échouer la suppression du worktree si le répertoire existe toujours après.

844* **`Stop`, `SubagentStop`, `TaskCompleted` et le hook `UserPromptSubmit` d'un plugin** : lorsque votre hook quitte avec 2 sans rien sur stdout et que son stderr indique qu'un fichier est manquant, comme `No such file or directory`, Claude Code traite l'exécution comme une erreur non-bloquante.

845* **`Elicitation` et `ElicitationResult`** : Claude Code applique votre `hookSpecificOutput` lorsque votre hook quitte avec 0, et l'ignore sur tout autre code de sortie.

846* **Les événements qui rejettent la sortie du hook, comme `StopFailure`** : Claude Code ignore votre JSON sur chaque code de sortie, à part les champs d'effet secondaire comme `terminalSequence`, qui se déclenchent toujours.

847 

848Pour vérifier ce que fait le code de sortie 2 sur votre événement, consultez [Comportement du code de sortie 2 par événement](#exit-code-2-behavior-per-event). Pour vérifier quels champs de décision il honore, consultez [Contrôle de décision](#decision-control).

827 849 

828<h4 id="exit-code-0">850<h4 id="exit-code-0">

829 Exit code 0851 Exit code 0


835 857 

836Que Claude Code lise votre stdout comme [sortie JSON](#json-output) ou comme texte brut dépend de la façon dont il commence et se termine, en ignorant les espaces blancs environnants :858Que Claude Code lise votre stdout comme [sortie JSON](#json-output) ou comme texte brut dépend de la façon dont il commence et se termine, en ignorant les espaces blancs environnants :

837 859 

838* **Commence par `{` et se termine par `}`** : Claude Code l'analyse comme JSON. Lorsque la sortie est deux lignes ou plus qui s'analysent chacune comme JSON seules, et aucune ligne n'est un objet [sortie JSON](#json-output) qui définit un champ, Claude Code traite la sortie entière comme du texte brut. Lorsque l'une de ces lignes définit un champ, la sortie entière est un échec d'analyse, décrit ci-dessous.860* **Commence par `{` et se termine par `}`** : Claude Code l'analyse comme JSON. Lorsque la sortie est deux lignes ou plus qui s'analysent chacune comme JSON seules, et aucune ligne n'est un objet [sortie JSON](#json-output) qui définit un champ, Claude Code traite la sortie entière comme du texte brut. Lorsque l'une de ces lignes définit un champ, la sortie entière est un échec d'analyse.

839* **Commence par `{` mais ne se termine pas par `}`** : Claude Code le traite comme du texte brut.861* **Commence par `{` mais ne se termine pas par `}`** : Claude Code le traite comme du texte brut.

840* **Commence par n'importe quoi d'autre** : Claude Code le traite comme du texte brut, y compris s'il s'agit d'un tableau JSON ou d'une chaîne JSON entre guillemets.862* **Commence par n'importe quoi d'autre** : Claude Code le traite comme du texte brut, y compris s'il s'agit d'un tableau JSON ou d'une chaîne JSON entre guillemets.

841 863 

842Pour les événements qui utilisent le modèle de décision standard, exit 0 avec un objet analysé qui échoue la validation du schéma est une erreur non-bloquante : l'action procède, et la transcription affiche un avis `<hook name> hook error` avec le message de validation. La même chose se produit sur tout code de sortie autre que 2, tandis que [exit 2 bloque toujours](#exit-code-2).864Lorsque Claude Code essaie d'analyser votre stdout comme JSON et ne peut pas, ou que l'objet analysé échoue la [validation du schéma](#json-output), l'exécution est une [erreur non-bloquante](#exit-code-output). L'avis `<hook name> hook error` porte le message d'analyse ou de validation. Sur les événements qui ajoutent stdout en texte brut comme contexte, Claude Code n'ajoute pas le stdout qu'il n'a pas pu analyser.

843 

844Pour les événements qui utilisent le modèle de décision standard, lorsque Claude Code essaie d'analyser votre stdout comme JSON et ne peut pas, il rapporte une erreur non-bloquante sur chaque code de sortie autre que 2. La transcription affiche un avis `<hook name> hook error` avec le message d'analyse. Sur les événements qui ajoutent stdout en texte brut comme contexte, Claude Code n'ajoute pas le texte. Avant v2.1.248, Claude Code traitait ce stdout comme du texte brut.

845 865 

846Stderr d'un hook qui quitte 0 va uniquement au journal de débogage, jamais à la transcription, et Claude ne le voit jamais. Pour le lire vous-même, activez [la journalisation de débogage](#debug-hooks). Pour afficher un avertissement à Claude à partir d'un hook `PostToolUse` ou `PostToolUseFailure`, quittez 2 à la place afin que [Claude voie stderr](#exit-code-2-behavior-per-event) même si l'outil s'est déjà exécuté.866Claude ne voit jamais le stderr d'un hook qui quitte avec 0. Pour le lire vous-même sur des événements tels que `PreToolUse`, activez [la journalisation de débogage](#debug-hooks). Pour afficher un avertissement à Claude à partir d'un hook `PostToolUse` ou `PostToolUseFailure`, quittez 2 à la place afin que [Claude voie stderr](#exit-code-2-behavior-per-event) même si l'outil s'est déjà exécuté.

847 867 

848<h4 id="exit-code-2">868<h4 id="exit-code-2">

849 Exit code 2869 Exit code 2

850</h4>870</h4>

851 871 

852Exit 2 signifie une erreur bloquante. Sur [les événements qui peuvent bloquer](#exit-code-2-behavior-per-event), exit 2 bloque que vous imprimiez JSON ou non : même une `permissionDecision` JSON de `"allow"` ne peut pas la remplacer. Claude Code lit toujours toute [sortie JSON](#json-output) valide sur stdout. Sur `Elicitation` et `ElicitationResult`, le `hookSpecificOutput` d'un hook exit-2 est ignoré.872Quittez avec le code 2 pour bloquer l'action. Sur [les événements qui peuvent bloquer](#exit-code-2-behavior-per-event), Claude Code arrête l'action : un hook `PreToolUse` bloque l'appel d'outil, par exemple, et un hook `UserPromptSubmit` rejette le prompt.

853 873 

854Le message de blocage est la raison de la décision de blocage de votre JSON lorsqu'elle en fait une, et votre texte stderr sinon. Ce que le blocage fait varie selon l'événement : `PreToolUse` bloque l'appel d'outil, `UserPromptSubmit` rejette le prompt, et ainsi de suite. [Comportement du code de sortie 2 par événement](#exit-code-2-behavior-per-event) énumère l'effet pour chaque événement, et chaque section d'événement dit où le message va.874Le message qui accompagne le blocage est le stderr de votre hook. Si votre hook a également imprimé du JSON qui prend une décision de blocage, Claude Code utilise la raison de cette décision à la place.

855 875 

856Un hook qui quitte 2 tout en imprimant JSON qui échoue la validation du schéma [sortie JSON](#json-output) bloque toujours : Claude Code utilise stderr comme raison de blocage et consigne l'échec de validation dans le journal de débogage. Avant v2.1.214, Claude Code traitait cette combinaison comme une erreur non-bloquante et l'action procédait.876Exit 2 bloque même lorsque votre hook imprime du JSON :

877 

878* **JSON qui passe la validation du schéma** : Claude Code lit toujours les champs de [sortie JSON](#json-output), mais ils ne peuvent pas remplacer le blocage. Même une `permissionDecision` de `"allow"` ne laisse pas passer l'action. Sur `Elicitation` et `ElicitationResult`, le `hookSpecificOutput` d'un hook exit-2 est ignoré.

879* **JSON qui échoue la validation du schéma** : le hook bloque toujours. Claude Code utilise votre stderr comme raison de blocage et consigne l'échec de validation dans le journal de débogage.

857 880 

858Ce script bloque les commandes `rm` en quittant 2 et laisse chaque autre commande au flux de permission normal :881Ce script bloque les commandes `rm` en quittant 2 et laisse chaque autre commande au flux de permission normal :

859 882 


871exit 0 # Pas de décision : le flux de permission normal s'applique894exit 0 # Pas de décision : le flux de permission normal s'applique

872```895```

873 896 

897Avec ce script enregistré comme hook `PreToolUse` sur `Bash`, une commande qui commence par `rm` est bloquée, et Claude reçoit le stderr du hook comme erreur de l'outil, préfixé par le nom de l'événement, le nom de l'outil et la commande du hook :

898 

899```text theme={null}

900PreToolUse:Bash hook error: [${CLAUDE_PROJECT_DIR}/.claude/hooks/no-rm.sh]: Blocked: rm commands are not allowed

901```

902 

874<h4 id="other-exit-codes">903<h4 id="other-exit-codes">

875 Autres codes de sortie904 Autres codes de sortie

876</h4>905</h4>

877 906 

878Tout autre code de sortie ne bloque pas seul pour la plupart des événements de hook. Ce qui se passe dépend de votre stdout :907Lorsque votre hook quitte avec un code autre que 0 ou 2 et imprime du texte brut ou rien sur stdout, l'exécution est une [erreur non-bloquante](#exit-code-output). Vous voyez un avis `<hook name> hook error` dans la transcription avec `Failed with non-blocking status code:` et la première ligne du stderr de votre hook. Par exemple, lorsqu'un hook `PreToolUse` sur `Bash` imprime `something broke` sur stderr et quitte avec 1, l'avis `PreToolUse:Bash hook error` porte cette ligne :

879 908 

880* Avec un objet analysé qui passe la validation du schéma, pour les événements qui utilisent le modèle de décision standard, Claude Code ignore le code de sortie et le JSON seul décide du résultat :909```text theme={null}

881 * Chaque champ que l'événement supporte est honoré, y compris `permissionDecision`, `additionalContext`, `updatedInput` et `systemMessage`, et le hook n'est pas signalé comme une erreur.910Failed with non-blocking status code: something broke

882 * [Contrôle de décision](#decision-control) énumère les champs de décision par événement ; les champs universels comme `systemMessage` suivent le tableau [Sortie JSON](#json-output).911```

883* Avec un objet analysé qui échoue la validation du schéma, pour les événements qui utilisent le modèle de décision standard, c'est la même erreur non-bloquante que [sur exit 0](#exit-code-0) : l'action procède, et l'avis `<hook name> hook error` porte le message de validation.

884* Avec stdout que Claude Code [essaie d'analyser comme JSON](#exit-code-0) et ne peut pas, Claude Code rapporte la même erreur non-bloquante que sur exit 0 pour les événements qui utilisent le modèle de décision standard. L'action procède, et l'avis porte le message d'analyse.

885* Avec stdout que Claude Code [traite comme du texte brut](#exit-code-0), ou avec stdout vide, c'est une erreur non-bloquante pour la plupart des événements de hook : l'action procède, et la transcription affiche un avis `<hook name> hook error` suivi de la première ligne de stderr, préfixée par `Failed with non-blocking status code:`. Pour capturer le stderr complet, activez [la journalisation de débogage](#debug-hooks).

886 912 

887Les événements en dehors du modèle de décision standard gardent leurs propres lignes dans le [tableau par événement](#exit-code-2-behavior-per-event) : `WorktreeCreate` fait échouer la création sur tout code de sortie non-zéro peu importe ce que votre JSON dit, et les événements qui rejettent complètement la sortie du hook, comme `StopFailure`, ignorent votre JSON sur chaque code de sortie, à part les champs d'effet secondaire comme `terminalSequence`, qui se déclenchent toujours.913Pour capturer le stderr complet plutôt que sa première ligne, activez [la journalisation de débogage](#debug-hooks).

888 914 

889Un hook qui ne peut pas démarrer atterrit dans la même catégorie non-bloquante. Lorsque le chemin du script n'existe pas ou n'est pas exécutable, le shell quitte avec un code comme 127 et vous voyez le même avis avec le message de l'interpréteur, par exemple `Failed with non-blocking status code: /bin/sh: /path/to/hook.sh: No such file or directory`. Pour la plupart des événements de hook, l'action procède. Lorsque vous configurez un hook de politique, surveillez cet avis à sa première exécution : un chemin mal orthographié dans `settings.json` laisse le contrôle silencieusement désactivé.915Un hook qui ne peut pas démarrer est également une erreur non-bloquante. Sous forme shell, lorsque le chemin du script n'existe pas ou n'est pas exécutable, le shell quitte avec un code comme 127 et l'avis porte le message de l'interpréteur, par exemple `Failed with non-blocking status code: /bin/sh: /path/to/hook.sh: No such file or directory`. Lorsque vous configurez un hook de politique, surveillez cet avis à sa première exécution, car un chemin mal orthographié dans `settings.json` signifie que le hook ne s'exécute jamais. Pour bloquer l'action à la place, définissez [`onFailure: "block"`](#block-the-action-when-a-hook-fails).

890 916 

891<Warning>917<Warning>

892 Pour la plupart des événements de hook, exit code 2 est le seul code de sortie qui bloque par le code seul. Sans JSON valide sur stdout, Claude Code traite exit code 1 comme une erreur non-bloquante et procède avec l'action, même si 1 est le code d'échec Unix conventionnel. Si votre hook est destiné à appliquer une politique, utilisez `exit 2`. Les événements worktree diffèrent : tout code de sortie non-zéro de `WorktreeCreate` abandonne la création du worktree, et tout code de sortie non-zéro de `WorktreeRemove` fait échouer la suppression du worktree si le répertoire existe toujours après.918 Sans JSON valide sur stdout, Claude Code traite exit code 1 comme une erreur non-bloquante, même si 1 est le code d'échec Unix conventionnel. Si votre hook est destiné à appliquer une politique, utilisez `exit 2`.

893</Warning>919</Warning>

894 920 

895<h4 id="timeouts">921<h4 id="timeouts">


900 926 

901Sur [`PreModelSwitch`](#premodelswitch), un hook annulé à son délai d'expiration bloque le changement de modèle. Sur `PreToolUse`, les deux familles de hooks diffèrent :927Sur [`PreModelSwitch`](#premodelswitch), un hook annulé à son délai d'expiration bloque le changement de modèle. Sur `PreToolUse`, les deux familles de hooks diffèrent :

902 928 

903* Un hook `command`, `http` ou `mcp_tool` expiré ne bloque pas l'appel d'outil. L'appel continue via le [flux de permission](/docs/fr/permissions) normal, donc ne comptez pas sur un hook bloqué pour agir comme un contrôle.929* Un hook `command`, `http` ou `mcp_tool` expiré ne bloque pas l'appel d'outil. L'appel continue via le [flux de permission](/docs/fr/permissions) normal, donc ne comptez pas sur un hook bloqué pour agir comme un contrôle. Pour bloquer l'appel lorsqu'un hook `command` ou `http` expire, définissez [`onFailure: "block"`](#block-the-action-when-a-hook-fails).

904* Un hook de rappel [Agent SDK](/docs/fr/agent-sdk/hooks) qui dépasse son délai d'expiration [bloque l'appel d'outil](#pretooluse).930* Un hook de rappel [Agent SDK](/docs/fr/agent-sdk/hooks) qui dépasse son délai d'expiration [bloque l'appel d'outil](#pretooluse).

905 931 

932<h4 id="block-the-action-when-a-hook-fails">

933 Bloquer l'action lorsqu'un hook échoue

934</h4>

935 

936Sur la plupart des événements, lorsqu'un hook échoue ou expire, Claude Code exécute quand même l'action, de sorte qu'un hook de politique avec un chemin erroné ou un script qui plante laisse tout passer. Pour bloquer l'action à la place, définissez `"onFailure": "block"` sur un hook `command` ou `http`. La valeur par défaut est `"continue"`. Nécessite Claude Code v2.1.295 ou ultérieur.

937 

938Ce hook `PreToolUse` dans `.claude/settings.json` exécute un script de projet avant chaque commande Bash, et bloque la commande si le script échoue :

939 

940```json theme={null}

941{

942 "hooks": {

943 "PreToolUse": [

944 {

945 "matcher": "Bash",

946 "hooks": [

947 {

948 "type": "command",

949 "command": "node",

950 "args": ["${CLAUDE_PROJECT_DIR}/.claude/hooks/check-command.js"],

951 "onFailure": "block"

952 }

953 ]

954 }

955 ]

956 }

957}

958```

959 

960Pour le tester, laissez `check-command.js` absent et demandez à Claude d'exécuter une commande Bash telle que `ls`. Claude Code bloque l'appel, et l'erreur inclut `failed; blocking because onFailure is "block"` suivi de la propre sortie d'erreur de node, réduite ici à une ligne :

961 

962```text theme={null}

963PreToolUse:Bash hook error: [node ${CLAUDE_PROJECT_DIR}/.claude/hooks/check-command.js]: failed; blocking because onFailure is "block"

964Error: Cannot find module '/path/to/project/.claude/hooks/check-command.js'

965```

966 

967Après un délai d'expiration, le message indique `timed out` au lieu de `failed`. Sans `onFailure` défini, le même script manquant est une erreur non-bloquante et `ls` s'exécute.

968 

969Chacun de ces cas compte comme un échec :

970 

971* **Impossible de démarrer** : un hook de commande ne parvient pas à démarrer, par exemple parce que le script ou l'exécutable n'existe pas

972* **Code de sortie autre que 0 ou 2** : compte pour un hook de commande même s'il a imprimé du JSON qui autorise l'action, comme `permissionDecision: "allow"`. Pour retourner une décision JSON, quittez avec 0

973* **Erreur HTTP** : la connexion d'un hook HTTP échoue, ou le statut de la réponse n'est pas 2xx

974* **Délai d'expiration** : le hook atteint son [`timeout`](#common-fields)

975* **Sortie invalide** : la sortie JSON [ne peut pas être analysée](#exit-code-0) ou échoue la [validation du schéma](#json-output). Pour un hook HTTP, un corps 2xx qui n'est ni vide ni un objet JSON compte également. Le stdout en texte brut d'un hook de commande n'est pas un échec

976 

977Avec `"block"` défini, un échec fait ce que [le code de sortie 2 fait sur cet événement](#exit-code-2-behavior-per-event), sauf sur `PermissionRequest`, où il refuse la demande. Par exemple, un échec `PreToolUse` bloque l'appel d'outil et un échec `UserPromptSubmit` bloque le prompt.

978 

979Le champ n'a aucun effet sur ces hooks :

980 

981* **Hooks `Stop`, `SubagentStop`, `TaskCompleted` et `TeammateIdle`** : le code de sortie 2 sur ces événements renvoie Claude au travail, et Claude ne peut pas réparer un hook qui ne s'exécute pas

982* **Hooks de commande en arrière-plan** : les hooks de commande qui définissent [`async` ou `asyncRewake`](#run-hooks-in-the-background)

983 

906<h4 id="exit-code-2-behavior-per-event">984<h4 id="exit-code-2-behavior-per-event">

907 Comportement du code de sortie 2 par événement985 Comportement du code de sortie 2 par événement

908</h4>986</h4>


960* **Défaillance de connexion** : erreur non-bloquante, l'exécution continue1038* **Défaillance de connexion** : erreur non-bloquante, l'exécution continue

961* **Délai d'expiration** : le hook est annulé, comme décrit sous [Délais d'expiration](#timeouts)1039* **Délai d'expiration** : le hook est annulé, comme décrit sous [Délais d'expiration](#timeouts)

962 1040 

963Contrairement aux hooks de commande, les hooks HTTP ne peuvent pas signaler une erreur bloquante uniquement via les codes de statut. Pour bloquer un appel d'outil ou refuser une permission, retournez une réponse 2xx avec un corps JSON contenant les champs de décision appropriés.1041Les hooks HTTP ne peuvent pas signaler une erreur bloquante uniquement via le code de statut : un statut non-2xx ou une connexion échouée est une [erreur non-bloquante](#exit-code-output). Pour bloquer un appel d'outil ou refuser une permission, retournez une réponse 2xx avec un corps JSON contenant les champs de décision appropriés. Pour bloquer l'action lorsque la requête échoue ou retourne un statut non-2xx, définissez [`onFailure: "block"`](#block-the-action-when-a-hook-fails).

964 1042 

965<h3 id="json-output">1043<h3 id="json-output">

966 Sortie JSON1044 Sortie JSON


1237 Contrôle de décision de SessionStart1315 Contrôle de décision de SessionStart

1238</h4>1316</h4>

1239 1317 

1240Claude Code ajoute au contexte de Claude la sortie stdout qu'il [traite comme du texte brut](#exit-code-0). En plus des [champs de sortie JSON](#json-output) disponibles pour tous les hooks, vous pouvez renvoyer ces champs propres à l'événement :1318Un hook SessionStart peut ajouter du contexte pour Claude, fournir le premier message utilisateur, définir le titre de la session, surveiller des fichiers et recharger les skills. Renvoyez le champ correspondant à chacune de ces actions, en plus des [champs de sortie JSON](#json-output) disponibles pour tous les hooks :

1241 1319 

1242| Champ | Description |1320| Champ | Description |

1243| :- | :- |1321| :- | :- |

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

1245| `initialUserMessage` | Chaîne utilisée comme premier message utilisateur de la session. S'applique en [mode non interactif](/docs/fr/headless) avec le flag `-p`, où elle devient le premier tour même si aucun prompt n'est fourni. Si un prompt est fourni, il suit comme tour suivant. Contrairement à `additionalContext`, qui se rattache à un tour existant, ce champ crée le tour |1323| `initialUserMessage` | Chaîne utilisée comme premier message utilisateur de la session, en [mode non interactif](/docs/fr/headless) avec le flag `-p`. Elle devient le premier tour même si vous ne passez aucun prompt. Un prompt que vous passez suit comme tour suivant |

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

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

1248| `reloadSkills` | Booléen. Lorsqu'il vaut `true`, Claude Code analyse à nouveau les répertoires de [skills](/docs/fr/skills) et de commandes une fois les hooks SessionStart terminés, afin que les skills installés par le hook soient disponibles dans la même session, dès le premier prompt |1326| `reloadSkills` | Booléen. Lorsqu'il vaut `true`, Claude Code analyse de nouveau les répertoires de [skills](/docs/fr/skills) et de commandes une fois les hooks SessionStart terminés. Consultez [Recharger les skills installés par un hook](#reload-skills-that-a-hook-installs) |

1327 

1328Cette sortie ajoute du contexte et nomme la session :

1249 1329 

1250```json theme={null}1330```json theme={null}

1251{1331{


1257}1337}

1258```1338```

1259 1339 

1260Comme la sortie stdout brute parvient déjà à Claude pour cet événement, un hook qui se contente de charger du contexte peut écrire directement sur stdout sans construire de JSON. Utilisez la forme JSON lorsque vous devez combiner le contexte avec d'autres champs comme `sessionTitle`.1340Un hook qui se contente d'ajouter du contexte peut l'afficher sans construire de JSON, car Claude Code ajoute la [sortie stdout en texte brut](#exit-code-0) d'un hook SessionStart au contexte de Claude.

1341 

1342Si le hook SessionStart de votre plugin fournit `initialUserMessage` ou `sessionTitle`, installez le plugin avant le démarrage de la session. Claude Code ignore ces deux champs provenant d'un plugin dont l'installation se termine après l'exécution des hooks SessionStart.

1343 

1344<h4 id="reload-skills-that-a-hook-installs">

1345 Recharger les skills installés par un hook

1346</h4>

1347 

1348Pour rendre les skills installés par un hook SessionStart disponibles dans la même session, renvoyez `reloadSkills`. La découverte des skills s'exécute normalement avant la fin des hooks SessionStart ; sans ce champ, les fichiers qu'un hook écrit dans `~/.claude/skills/` ou `.claude/skills/` peuvent être absents lors de l'exécution du premier prompt.

1261 1349 

1262Utilisez `reloadSkills` lorsqu'un hook SessionStart installe ou met à jour des skills. La découverte des skills s'exécute normalement avant la fin des hooks SessionStart ; les fichiers que le hook écrit dans `~/.claude/skills/` ou `.claude/skills/` n'apparaîtraient donc sinon que dans la session suivante. Cet exemple synchronise un dépôt de skills partagé et demande la nouvelle analyse :1350Cet exemple synchronise un dépôt de skills partagé et demande une nouvelle analyse :

1263 1351 

1264```bash theme={null}1352```bash theme={null}

1265#!/bin/bash1353#!/bin/bash


1270echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'1358echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'

1271```1359```

1272 1360 

1273L'URL du dépôt est un exemple fictif ; remplacez-la par votre propre dépôt de skills. Avec cette URL fictive, le clonage échoue et affiche un message `fatal:` sur stderr. La sortie stderr d'un hook SessionStart qui se termine avec le code 0 est purement informative, donc la demande `reloadSkills` s'applique tout de même.1361L'URL du dépôt est un exemple fictif. Remplacez-la par votre propre dépôt de skills.

1274 1362 

1275<h4 id="persist-environment-variables">1363<h4 id="persist-environment-variables">

1276 Conserver les variables d'environnement1364 Conserver les variables d'environnement


1419 1507 

1420Les hooks `UserPromptSubmit` ont un délai d'expiration par défaut de 30 secondes pour les types `command`, `http` et `mcp_tool`, plus court que la valeur par défaut de 600 secondes pour ces types sur la plupart des autres événements. Comme ce hook s'exécute avant chaque prompt et bloque le traitement du modèle jusqu'à sa fin, un hook bloqué paralyse la session. Si votre hook a besoin de plus de temps, définissez le champ `timeout` dans l'entrée du hook.1508Les hooks `UserPromptSubmit` ont un délai d'expiration par défaut de 30 secondes pour les types `command`, `http` et `mcp_tool`, plus court que la valeur par défaut de 600 secondes pour ces types sur la plupart des autres événements. Comme ce hook s'exécute avant chaque prompt et bloque le traitement du modèle jusqu'à sa fin, un hook bloqué paralyse la session. Si votre hook a besoin de plus de temps, définissez le champ `timeout` dans l'entrée du hook.

1421 1509 

1422Hormis un hook de commande que vous exécutez avec [`async: true`](#run-hooks-in-the-background), un hook de commande, HTTP ou d'outil MCP `UserPromptSubmit` qui atteint son délai d'expiration est annulé et sa sortie, y compris tout `additionalContext`, est ignorée. Le prompt parvient tout de même à Claude, sans ce contexte. La transcription affiche un avis qui indique le nom du hook, le délai d'expiration atteint et le fait que la sortie a été ignorée.1510Hormis pour un hook de commande exécuté avec [`async: true`](#run-hooks-in-the-background), un hook `UserPromptSubmit` de type commande, HTTP ou outil MCP qui atteint son délai d'expiration est annulé et sa sortie, y compris tout `additionalContext`, est ignorée. Le prompt parvient tout de même à Claude, sans ce contexte. Pour bloquer plutôt le prompt, définissez [`onFailure: "block"`](#block-the-action-when-a-hook-fails) sur un hook de commande ou HTTP. La transcription affiche un avis indiquant le nom du hook, le délai d'expiration atteint et le fait que la sortie a été ignorée.

1423 1511 

1424Un [hook de callback de l'Agent SDK](/docs/fr/agent-sdk/hooks) sur `UserPromptSubmit` qui atteint son délai d'expiration bloque le prompt avec un message indiquant le nom du hook et le délai d'expiration, car un callback à cet endroit peut servir de garde-fou de politique qui ne doit pas échouer en mode ouvert. La session se poursuit. Avant la v2.1.208, l'expiration d'un callback sur cet événement mettait fin au tour avec une erreur d'exécution.1512Un [hook de callback de l'Agent SDK](/docs/fr/agent-sdk/hooks) sur `UserPromptSubmit` qui atteint son délai d'expiration bloque le prompt avec un message indiquant le nom du hook et le délai d'expiration, car un callback à cet endroit peut servir de garde-fou de politique qui ne doit pas échouer en mode ouvert. La session se poursuit. Avant la v2.1.208, l'expiration d'un callback sur cet événement mettait fin au tour avec une erreur d'exécution.

1425 1513 


1860| :- | :- | :- | :- |1948| :- | :- | :- | :- |

1861| `url` | string | `"https://example.com/api"` | URL à partir de laquelle récupérer le contenu |1949| `url` | string | `"https://example.com/api"` | URL à partir de laquelle récupérer le contenu |

1862| `prompt` | string | `"Extract the API endpoints"` | Prompt à exécuter sur le contenu récupéré |1950| `prompt` | string | `"Extract the API endpoints"` | Prompt à exécuter sur le contenu récupéré |

1951| `offset` | number | `100000` | Nombre facultatif de caractères à ignorer depuis le début de la page. Claude le définit pour poursuivre la lecture d'une page longue. Nécessite Claude Code v2.1.290 ou ultérieure |

1863 1952 

1864<h5 id="websearch">1953<h5 id="websearch">

1865 WebSearch1954 WebSearch


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

2113| `interrupt` | Pour `"deny"` uniquement : si `true`, arrête Claude |2202| `interrupt` | Pour `"deny"` uniquement : si `true`, arrête Claude |

2114 2203 

2115Un hook qui se termine avec le code 2 sans objet `decision` laisse le flux de permission inchangé, et sa sortie stderr est ignorée. Seul l'objet `decision` peut accorder ou refuser la demande.2204Un hook qui se termine avec le code 2 sans objet `decision` laisse le flux de permissions inchangé, et sa sortie stderr est ignorée. Pour accorder ou refuser la demande, renvoyez l'objet `decision`.

2116 2205 

2117```json theme={null}2206```json theme={null}

2118{2207{


2678 Contrôle de décision TaskCreated2767 Contrôle de décision TaskCreated

2679</h4>2768</h4>

2680 2769 

2681Un hook TaskCreated peut bloquer la création de deux façons. Dans les deux cas, Claude Code supprime la tâche et renvoie votre message à Claude comme erreur de l'outil. Claude Code ignore `continue: false` pour cet événement et Claude continue de travailler.2770Un hook TaskCreated peut bloquer la création avec le code de sortie 2 ou avec une décision JSON. Dans les deux cas, Claude Code supprime la tâche et renvoie votre message à Claude comme erreur de l'outil. Claude Code ignore `continue: false` pour cet événement et Claude continue de travailler.

2682 2771 

2683* **Code de sortie 2** : Claude Code renvoie le texte de stderr comme message.2772* **Code de sortie 2** : Claude Code renvoie le texte de stderr comme message.

2684* **JSON `{"decision": "block", "reason": "..."}`** : Claude Code renvoie `reason` comme message.2773* **JSON `{"decision": "block", "reason": "..."}`** : Claude Code renvoie `reason` comme message.


3561 3650 

3562Claude Code affiche à l'utilisateur tout `systemMessage` renvoyé par votre hook, quelle que soit la décision ; un hook de rapport de coût peut donc renvoyer `{"systemMessage": "..."}` et se terminer avec 0.3651Claude Code affiche à l'utilisateur tout `systemMessage` renvoyé par votre hook, quelle que soit la décision ; un hook de rapport de coût peut donc renvoyer `{"systemMessage": "..."}` et se terminer avec 0.

3563 3652 

3564Un hook PreModelSwitch qui ne répond pas avant son délai d'expiration bloque le changement. Pour [PreToolUse](#timeouts), en revanche, un hook de commande qui expire laisse l'appel d'outil se poursuivre. Le délai d'expiration par défaut pour cet événement est de 30 secondes. `PreModelSwitch` n'exécute que les hooks `command`, `http` et `mcp_tool` ; les valeurs par défaut de `prompt` et `agent` ne s'appliquent donc pas.3653Un hook PreModelSwitch qui ne répond pas avant son délai d'expiration bloque le changement. Pour savoir ce que provoque un délai d'expiration sur les autres événements, consultez [Délais d'expiration](#timeouts). Le délai d'expiration par défaut pour cet événement est de 30 secondes. `PreModelSwitch` n'exécute que des hooks `command`, `http` et `mcp_tool` ; les valeurs par défaut de `prompt` et `agent` ne s'appliquent donc pas.

3565 3654 

3566Un hook qui se termine avec un code autre que 0 ou 2 et n'affiche aucune décision JSON ne bloque pas : Claude Code affiche son stderr et applique le changement, comme décrit dans [Autres codes de sortie](#other-exit-codes).3655Un hook qui se termine avec un code autre que 0 ou 2 et n'affiche aucune décision JSON constitue une erreur non bloquante, comme décrit dans [Autres codes de sortie](#other-exit-codes).

3567 3656 

3568<h3 id="postmodelswitch">3657<h3 id="postmodelswitch">

3569 PostModelSwitch3658 PostModelSwitch


4279Les hooks asynchrones ont des contraintes supplémentaires par rapport aux hooks synchrones :4368Les hooks asynchrones ont des contraintes supplémentaires par rapport aux hooks synchrones :

4280 4369 

4281* La sortie du hook est livrée au tour de conversation suivant. Si la session est inactive, la réponse attend jusqu'à la prochaine interaction utilisateur. Exception : un hook `asyncRewake` qui quitte avec le code 2 réveille Claude immédiatement même lorsque la session est inactive.4370* La sortie du hook est livrée au tour de conversation suivant. Si la session est inactive, la réponse attend jusqu'à la prochaine interaction utilisateur. Exception : un hook `asyncRewake` qui quitte avec le code 2 réveille Claude immédiatement même lorsque la session est inactive.

4282* Chaque exécution crée un processus en arrière-plan séparé. Il n'y a pas de déduplication sur plusieurs déclenchements du même hook asynchrone.4371* Chaque exécution crée un processus en arrière-plan séparé.

4283 4372 

4284<h2 id="security-considerations">4373<h2 id="security-considerations">

4285 Considérations de sécurité4374 Considérations de sécurité

hooks-guide.md +14 −11

Details

242 242 

243Pour tester le hook, demandez à Claude d'ajouter une ligne avec des chaînes entre guillemets simples à un fichier JavaScript, puis ouvrez le fichier : avec les paramètres par défaut de Prettier, le hook les réécrit en guillemets doubles.243Pour tester le hook, demandez à Claude d'ajouter une ligne avec des chaînes entre guillemets simples à un fichier JavaScript, puis ouvrez le fichier : avec les paramètres par défaut de Prettier, le hook les réécrit en guillemets doubles.

244 244 

245Lorsque le hook réussit, Claude Code n'affiche rien dans la conversation. Pour confirmer que le hook a été exécuté, vérifiez que le fichier modifié est reformaté, ou consultez [Techniques de débogage](#debug-techniques).245Lorsque le hook réussit, Claude Code n'affiche rien dans la conversation. Pour confirmer que le hook a été exécuté, vérifiez que le fichier modifié est reformaté, ou consultez [Vérifier ce qu'un hook a fait](#check-what-a-hook-did).

246 246 

247Pour reformater un fichier spécifique quelle que soit la façon dont il change, y compris lorsqu'une commande `Bash` le réécrit, utilisez un hook [FileChanged](/docs/fr/hooks#filechanged) à la place.247Pour reformater un fichier spécifique quelle que soit la façon dont il change, y compris lorsqu'une commande `Bash` le réécrit, utilisez un hook [FileChanged](/docs/fr/hooks#filechanged) à la place.

248 248 


979}979}

980```980```

981 981 

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

983 

984* **Statut 2xx** : pour bloquer un appel d'outil, retournez les champs `hookSpecificOutput` appropriés dans le corps.

985* **Tout autre statut, ou échec de la requête** : Claude Code signale une [erreur non bloquante](/docs/fr/hooks#exit-code-output) et laisse l'action se poursuivre. Pour qu'un endpoint en échec bloque l'action, définissez [`onFailure: "block"`](/docs/fr/hooks#block-the-action-when-a-hook-fails) sur le hook.

983 986 

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

985 988 


1103 1106 

1104Lorsque votre hook retourne `permissionDecision` ou `additionalContext` au niveau supérieur au lieu de l'intérieur de `hookSpecificOutput`, le JSON s'analyse toujours, et Claude Code ignore les champs mal placés sans signaler une erreur. Pour voir quels champs il a ignorés, démarrez Claude Code avec `claude --debug` et recherchez dans le [journal de débogage](/docs/fr/hooks#debug-hooks) `Hook JSON output had unrecognized keys`.1107Lorsque votre hook retourne `permissionDecision` ou `additionalContext` au niveau supérieur au lieu de l'intérieur de `hookSpecificOutput`, le JSON s'analyse toujours, et Claude Code ignore les champs mal placés sans signaler une erreur. Pour voir quels champs il a ignorés, démarrez Claude Code avec `claude --debug` et recherchez dans le [journal de débogage](/docs/fr/hooks#debug-hooks) `Hook JSON output had unrecognized keys`.

1105 1108 

1106<h3 id="debug-techniques">1109<h3 id="check-what-a-hook-did">

1107 Techniques de débogage1110 Vérifier ce qu'a fait un hook

1108</h3>1111</h3>

1109 1112 

1110Appuyez sur `Ctrl+O` pour ouvrir la vue de transcription afin de vérifier le résultat d'une exécution de hook :1113Appuyez sur `Ctrl+O` pour ouvrir la vue de transcription et recherchez le résultat du hook :

1111 1114 

1112* **Exécution réussie** : vous ne voyez rien, sauf si le JSON du hook affiche quelque chose, comme `systemMessage` ou un retour du hook Stop.1115* **Succès** : vous ne voyez rien, sauf si le JSON du hook fait apparaître quelque chose, comme `systemMessage` ou un retour du hook Stop.

1113 * Pour confirmer qu'un hook a été exécuté, vérifiez son effet, comme un fichier reformaté, ou activez la journalisation de débogage comme décrit ci-dessous et déclenchez le hook à nouveau1116 * Pour confirmer que le hook s'est exécuté, vérifiez son effet, comme un fichier reformaté

1114* **Erreur de blocage** : sur la plupart des événements, vous voyez le retour du hook. Lorsque le JSON du hook a pris une décision de blocage, le retour est la raison de cette décision ; sinon, c'est stderr du hook. Sur quelques événements, comme `ConfigChange` et `Elicitation`, un blocage ne surface aucun message.1117* **Erreur bloquante** : sur la plupart des événements, vous voyez le message qui accompagne le blocage, par exemple `Blocked: rm commands are not allowed`. Sur quelques événements, comme `ConfigChange` et `Elicitation`, vous ne voyez aucun message. [Exit code 2](/docs/fr/hooks#exit-code-2) explique d'où provient le message.

1115* **Erreur sans blocage** : l'action a procédé, et vous voyez un avis `<hook name> hook error` avec une brève explication, comme la première ligne de stderr préfixée par `Failed with non-blocking status code:`, ou un message de validation ou d'analyse JSON.1118* **Erreur non bloquante** : vous voyez un avis `<hook name> hook error` avec une brève explication, comme la première ligne de stderr après `Failed with non-blocking status code:`, ou un message de validation ou d'analyse JSON. L'action s'est poursuivie.

1116 1119 

1117Quelles combinaisons de code de sortie et JSON produisent chaque résultat, y compris les exceptions par événement, est défini dans la section [Exit code output](/docs/fr/hooks#exit-code-output) de la référence.1120Pour connaître le résultat correspondant à un code de sortie et à une sortie stdout spécifiques, y compris les exceptions par événement, consultez [Exit code output](/docs/fr/hooks#exit-code-output) dans la référence.

1118 1121 

1119Pour les détails d'exécution complets incluant les hooks qui ont correspondu, leurs codes de sortie, stdout et stderr, lisez le journal de débogage. Démarrez Claude Code avec `claude --debug-file /tmp/claude.log` pour écrire dans un chemin connu, puis `tail -f /tmp/claude.log` dans un autre terminal. Si vous avez démarré sans ce drapeau, exécutez `/debug` en milieu de session pour activer la journalisation et trouver le chemin du journal.1122Pour les détails d'exécution complets incluant les codes de sortie des hooks, stdout et stderr, lisez le journal de débogage. Démarrez Claude Code avec `claude --debug-file /tmp/claude.log` pour écrire dans un chemin connu, puis `tail -f /tmp/claude.log` dans un autre terminal. Si vous avez démarré sans ce flag, exécutez `/debug` en milieu de session pour activer la journalisation et trouver le chemin du journal.

1120 1123 

1121<h2 id="learn-more">1124<h2 id="learn-more">

1122 En savoir plus1125 En savoir plus

Details

216| `^` | Premier caractère non vide |216| `^` | Premier caractère non vide |

217| `gg` | Début de l'entrée |217| `gg` | Début de l'entrée |

218| `G` | Début de la dernière ligne |218| `G` | Début de la dernière ligne |

219| `f{char}` | Sauter à la prochaine occurrence du caractère |219| `f{char}` | Sauter à la prochaine occurrence du caractère sur la ligne actuelle |

220| `F{char}` | Sauter à l'occurrence précédente du caractère |220| `F{char}` | Sauter à l'occurrence précédente du caractère sur la ligne actuelle |

221| `t{char}` | Sauter juste avant la prochaine occurrence du caractère |221| `t{char}` | Sauter juste avant la prochaine occurrence du caractère sur la ligne actuelle |

222| `T{char}` | Sauter juste après l'occurrence précédente du caractère |222| `T{char}` | Sauter juste après l'occurrence précédente du caractère sur la ligne actuelle |

223| `;` | Répéter le dernier mouvement f/F/t/T |223| `;` | Répéter le dernier mouvement f/F/t/T |

224| `,` | Répéter le dernier mouvement f/F/t/T en sens inverse |224| `,` | Répéter le dernier mouvement f/F/t/T en sens inverse |

225| `/` | Ouvrir la recherche d'historique inversée, identique à `Ctrl+R`. L'invite de recherche vide affiche un indice : appuyez sur `Esc` puis `i` puis `/` pour ouvrir le menu de commande à la place |225| `/` | Ouvrir la recherche d'historique inversée, identique à `Ctrl+R`. L'invite de recherche vide affiche un indice : appuyez sur `Esc` puis `i` puis `/` pour ouvrir le menu de commande à la place |


239| `dd` | Supprimer la ligne |239| `dd` | Supprimer la ligne |

240| `D` | Supprimer jusqu'à la fin de la ligne |240| `D` | Supprimer jusqu'à la fin de la ligne |

241| `dw`/`de`/`db` | Supprimer le mot/jusqu'à la fin/en arrière |241| `dw`/`de`/`db` | Supprimer le mot/jusqu'à la fin/en arrière |

242| `df{char}`/`dt{char}` | Supprimer jusqu'à et y compris, ou jusqu'à, la prochaine occurrence d'un caractère |242| `df{char}`/`dt{char}` | Supprimer jusqu'à et y compris, ou jusqu'à, la prochaine occurrence d'un caractère sur la ligne actuelle |

243| `dj`/`dk` | Supprimer la ligne actuelle et la ligne en dessous ou au-dessus |243| `dj`/`dk` | Supprimer la ligne actuelle et la ligne en dessous ou au-dessus |

244| `dgg`/`dG` | Supprimer de la ligne actuelle à la première ou dernière ligne |244| `dgg`/`dG` | Supprimer de la ligne actuelle à la première ou dernière ligne |

245| `d0`/`c0`/`y0` | Supprimer, changer ou copier du curseur jusqu'au début de la ligne. Nécessite Claude Code v2.1.281 ou ultérieur |245| `d0`/`c0`/`y0` | Supprimer, changer ou copier du curseur jusqu'au début de la ligne. Nécessite Claude Code v2.1.281 ou ultérieur |


859* Un `#123` isolé859* Un `#123` isolé

860* Un chemin GitLab imbriqué tel que `group/subgroup/project#123`860* Un chemin GitLab imbriqué tel que `group/subgroup/project#123`

861* Toute référence à l'intérieur d'une portée de code ou d'un bloc de code861* Toute référence à l'intérieur d'une portée de code ou d'un bloc de code

862* Toute référence dans une réponse de plus d'environ 1 000 lignes ou 100 000 caractères

862 863 

863Claude Code construit le lien pour l'hôte du référentiel qu'il identifie à partir de votre git remote, et non pour le référentiel que la référence nomme :864Claude Code construit le lien pour l'hôte du dépôt qu'il identifie à partir de votre git remote, et non pour le dépôt que la référence nomme :

864 865 

865| L'hôte de votre référentiel | Où `owner/repo#123` crée des liens |866| L'hôte de votre dépôt | Où `owner/repo#123` crée des liens |

866| :- | :- |867| :- | :- |

867| github.com, un hôte GitHub Enterprise, ou tout hôte non listé ci-dessous | `https://<host>/owner/repo/issues/123` |868| github.com, un hôte GitHub Enterprise, ou tout hôte non listé ci-dessous | `https://<host>/owner/repo/issues/123` |

868| gitlab.com | `https://gitlab.com/owner/repo/-/issues/123` |869| gitlab.com | `https://gitlab.com/owner/repo/-/issues/123` |

mcp.md +1 −1

Details

367 367 

368Sur v2, Claude Code également :368Sur v2, Claude Code également :

369 369 

370* Demande aux serveurs HTTP et stdio s'ils supportent la révision plus récente, et l'utilise avec ceux qui la supportent. Dans les sessions où il récupère les feature flags, il le demande également aux serveurs de connecteurs claude.ai. Il se connecte à tous les autres serveurs comme le fait v1.370* Demande aux serveurs HTTP, stdio et de connecteurs claude.ai s'ils supportent la révision plus récente, et l'utilise avec ceux qui la supportent. Il se connecte à tous les autres serveurs comme le fait v1.

371* Reçoit les notifications `list_changed` des serveurs sur la révision plus récente via un [flux qu'il maintient ouvert](#notification-streams-on-the-v2-runtime).371* Reçoit les notifications `list_changed` des serveurs sur la révision plus récente via un [flux qu'il maintient ouvert](#notification-streams-on-the-v2-runtime).

372* N'enregistre pas un serveur de [canal](#push-messages-with-channels) qui se connecte sur la révision plus récente, car cette révision ne peut pas transporter les messages de canal.372* N'enregistre pas un serveur de [canal](#push-messages-with-channels) qui se connecte sur la révision plus récente, car cette révision ne peut pas transporter les messages de canal.

373* Fait échouer une [connexion OAuth MCP](#authenticate-with-remote-mcp-servers) dont la réponse d'autorisation nomme un émetteur inattendu.373* Fait échouer une [connexion OAuth MCP](#authenticate-with-remote-mcp-servers) dont la réponse d'autorisation nomme un émetteur inattendu.

Details

599 599 

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

601 601 

602<Note>

603 Les événements que Claude Code journalise avant qu'un développeur ne se connecte ne portent pas l'identité de la passerelle. Lorsque Claude Code ouvre une session déconnectée de la passerelle, par exemple après que [la passerelle a mis fin à la connexion](/docs/fr/errors#cloud-gateway-session-expired), les événements de démarrage journalisés avant la connexion portent le `user.id` anonyme et aucun `identity.source`. Il s'agit notamment de [`managed_settings_resolved`](#managed-settings-resolved-event), [`plugin_loaded`](#plugin-loaded-event) et [`mcp_server_connection`](#mcp-server-connection-event).

604</Note>

605 

602Pour 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).606Pour 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).

603 607 

604Les é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 :608Les é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 :


917* `error` : message d'erreur921* `error` : message d'erreur

918* `status_code` : code de statut HTTP sous forme de nombre. Absent pour les erreurs non HTTP, comme les échecs de connexion.922* `status_code` : code de statut HTTP sous forme de nombre. Absent pour les erreurs non HTTP, comme les échecs de connexion.

919* `duration_ms` : durée de la requête en millisecondes923* `duration_ms` : durée de la requête en millisecondes

920* `attempt` : nombre total de tentatives effectuées, y compris la requête initiale (`1` signifie qu'aucune nouvelle tentative n'a eu lieu)924* `attempt` : nombre de tentatives effectuées, y compris la requête initiale. [Détecter l'épuisement des nouvelles tentatives](#detect-retry-exhaustion) indique quand le comptage recommence

921* `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).925* `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).

922* `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érieur926* `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

923* `speed` : `"fast"` ou `"normal"`, indiquant si le mode rapide était actif927* `speed` : `"fast"` ou `"normal"`, indiquant si le mode rapide était actif


1528 1532 

1529Claude Code réessaie les demandes d'API échouées en interne et n'émet un seul événement `claude_code.api_error` qu'après avoir abandonné, donc l'événement lui-même est le signal terminal pour cette demande. Les tentatives de nouvelle tentative intermédiaires ne sont pas enregistrées comme des événements séparés.1533Claude Code réessaie les demandes d'API échouées en interne et n'émet un seul événement `claude_code.api_error` qu'après avoir abandonné, donc l'événement lui-même est le signal terminal pour cette demande. Les tentatives de nouvelle tentative intermédiaires ne sont pas enregistrées comme des événements séparés.

1530 1534 

1531L'attribut `attempt` sur l'événement enregistre le nombre total de tentatives effectuées. `CLAUDE_CODE_MAX_RETRIES` est par défaut `10` et plafonné à `15`. À partir de la v2.1.199, vous pouvez définir `CLAUDE_CODE_RETRY_WATCHDOG` pour augmenter la valeur par défaut et supprimer le plafond.1535L'attribut `attempt` sur l'événement enregistre le nombre de tentatives. `CLAUDE_CODE_MAX_RETRIES` est par défaut 10 et plafonné à 15. À partir de la v2.1.199, vous pouvez définir `CLAUDE_CODE_RETRY_WATCHDOG` pour augmenter la valeur par défaut et supprimer le plafond.

1536 

1537Lorsque la requête épuise toutes les nouvelles tentatives sur une erreur transitoire, `attempt` vaut au maximum un de plus que cette limite effective : 11 par défaut.

1532 1538 

1533Lorsque la demande épuise toutes les tentatives sur une erreur transitoire, `attempt` est égal à un de plus que cette limite effective : 11 par défaut, et jamais plus de 16 sauf si le watchdog est défini. Une valeur inférieure indique une erreur non réessayable telle qu'une réponse `400`, ou une cause avec son propre budget de tentatives plus petit. Par exemple, Claude Code réessaie un échec de chargement des identifiants AWS ou Google Cloud au maximum deux fois.1539Une valeur inférieure peut tout de même signifier que les nouvelles tentatives ont été épuisées : `attempt` repart de `1` chaque fois que Claude Code renvoie la requête après un échec de streaming.

1534 1540 

1535Pour distinguer une session qui s'est rétablie d'une qui s'est bloquée, groupez les événements par `session.id` et vérifiez si un événement `api_request` ultérieur existe après l'erreur.1541Pour distinguer une session qui s'est rétablie d'une qui s'est bloquée, groupez les événements par `session.id` et vérifiez si un événement `api_request` ultérieur existe après l'erreur.

1536 1542 

Details

91| `-y, --yes` | Acceptez la commande d'installation affichée sans l'invite `Run this command now?`. Ignoré quand la commande s'exécute dans une session Claude Code, comme depuis l'outil Bash ou un hook. Nécessite Claude Code v2.1.229 ou ultérieur |91| `-y, --yes` | Acceptez la commande d'installation affichée sans l'invite `Run this command now?`. Ignoré quand la commande s'exécute dans une session Claude Code, comme depuis l'outil Bash ou un hook. Nécessite Claude Code v2.1.229 ou ultérieur |

92| `--accept-command <sha256>` | Acceptez la commande d'installation affichée dont le `sha256` une exécution [`--json` précédente](#plugin-json-result) a rapporté dans `shownCommand`, à la place de `-y`. Ne peut pas être combiné avec `-y`. Voir [Accepter une commande d'installation affichée](#accept-a-displayed-install-command). Nécessite Claude Code v2.1.271 ou ultérieur |92| `--accept-command <sha256>` | Acceptez la commande d'installation affichée dont le `sha256` une exécution [`--json` précédente](#plugin-json-result) a rapporté dans `shownCommand`, à la place de `-y`. Ne peut pas être combiné avec `-y`. Voir [Accepter une commande d'installation affichée](#accept-a-displayed-install-command). Nécessite Claude Code v2.1.271 ou ultérieur |

93| `--json` | Affiche le résultat en tant qu'un objet JSON sur la dernière ligne de stdout au lieu du message lisible par l'homme, pour utilisation dans les scripts. Voir [Format de résultat JSON](#plugin-json-result). Nécessite Claude Code v2.1.268 ou ultérieur |93| `--json` | Affiche le résultat en tant qu'un objet JSON sur la dernière ligne de stdout au lieu du message lisible par l'homme, pour utilisation dans les scripts. Voir [Format de résultat JSON](#plugin-json-result). Nécessite Claude Code v2.1.268 ou ultérieur |

94| `--marketplace <source>` | Installez `<plugin>`, donné par son nom nu, depuis la marketplace à `<source>`, en ajoutant d'abord la marketplace si vous ne l'avez pas encore ajoutée. Voir [Ajouter une marketplace et installer en une seule commande](/docs/fr/plugins/install#add-a-marketplace-and-install-in-one-command). Nécessite Claude Code v2.1.292 ou ultérieur |

94 95 

95Exécutez `claude plugin install --help` dans votre shell pour voir chaque option que votre version supporte.96Exécutez `claude plugin install --help` dans votre shell pour voir chaque option que votre version supporte.

96 97 

Details

189 189 

190* **Portée** : portée utilisateur par défaut. Passez `--scope project` ou `--scope local` pour le modifier.190* **Portée** : portée utilisateur par défaut. Passez `--scope project` ou `--scope local` pour le modifier.

191* **Quand les plugins se chargent** : les plugins qu'il installe se chargent la prochaine fois que vous démarrez Claude Code, ou lorsque vous exécutez `/reload-plugins` dans une session déjà ouverte.191* **Quand les plugins se chargent** : les plugins qu'il installe se chargent la prochaine fois que vous démarrez Claude Code, ou lorsque vous exécutez `/reload-plugins` dans une session déjà ouverte.

192* **La marketplace doit d'abord être ajoutée** : sur une machine où personne n'a ouvert une session Claude Code interactive, la marketplace officielle n'est pas enregistrée, donc un script qui installe à partir de celle-ci exécute `claude plugin marketplace add anthropics/claude-plugins-official` avant l'installation.192* **La marketplace sur une nouvelle machine** : sur une machine où personne n'a encore ouvert de session Claude Code interactive, la marketplace officielle n'est pas enregistrée, donc un script qui installe à partir de celle-ci exécute `claude plugin marketplace add anthropics/claude-plugins-official` avant l'installation. Consultez [Ajouter et installer à partir de votre shell](#add-and-install-from-your-shell).

193 193 

194```bash theme={null}194```bash theme={null}

195claude plugin install formatter@your-org --scope project195claude plugin install formatter@your-org --scope project


232 Ajouter une marketplace et installer en une seule commande232 Ajouter une marketplace et installer en une seule commande

233</h3>233</h3>

234 234 

235Pour installer un plugin à partir d'une marketplace que vous n'avez pas encore ajoutée, exécutez `/plugin install` dans une session Claude Code et nommez la source de la marketplace avec `--marketplace`. Nécessite Claude Code v2.1.275 ou ultérieur.235Pour installer un plugin à partir d'une marketplace que vous n'avez pas encore ajoutée, nommez la source de la marketplace avec `--marketplace` dans la commande d'installation, dans une session ou à partir de votre shell. La source prend [les mêmes formes que `/plugin marketplace add`](#add-a-marketplace), telles que GitHub `owner/repo`, une URL git ou un chemin local. Donnez le nom du plugin seul, sans suffixe `@marketplace`.

236 

237<h4 id="add-and-install-in-a-session">

238 Ajouter et installer dans une session

239</h4>

240 

241Exécutez `/plugin install` dans une session Claude Code avec le plugin et la source. Nécessite Claude Code v2.1.275 ou ultérieur. Dans une session, la source ne peut pas contenir d'espaces.

236 242 

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

238/plugin install deploy-helper --marketplace your-org/plugins244/plugin install deploy-helper --marketplace your-org/plugins

239```245```

240 246 

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

242 

243Si vous n'avez pas encore ajouté cette marketplace, Claude Code affiche la source qu'il a résolue et vous demande de confirmer avant de l'ajouter. Une fois la marketplace ajoutée, les détails du plugin s'ouvrent et vous choisissez une [portée d'installation](#install-a-plugin). Si la source correspond à une marketplace que vous avez déjà ajoutée, Claude Code ignore la confirmation et ouvre les détails du plugin dans cette marketplace.247Si vous n'avez pas encore ajouté cette marketplace, Claude Code affiche la source qu'il a résolue et vous demande de confirmer avant de l'ajouter. Une fois la marketplace ajoutée, les détails du plugin s'ouvrent et vous choisissez une [portée d'installation](#install-a-plugin). Si la source correspond à une marketplace que vous avez déjà ajoutée, Claude Code ignore la confirmation et ouvre les détails du plugin dans cette marketplace.

244 248 

249<h4 id="add-and-install-from-your-shell">

250 Ajouter et installer à partir de votre shell

251</h4>

252 

253Dans votre shell, sans démarrer de session, exécutez `claude plugin install` avec le plugin et la source. Nécessite Claude Code v2.1.292 ou ultérieur.

254 

255```bash theme={null}

256claude plugin install deploy-helper --marketplace your-org/plugins

257```

258 

259La commande shell ajoute la marketplace sans étape de confirmation. Une marketplace que vous avez déjà ajoutée à partir de cette source est réutilisée. Une nouvelle marketplace est ajoutée avec les mêmes [vérifications de politique d'organisation](/docs/fr/plugins/org#restrict-what-users-can-install) que `claude plugin marketplace add`, et elle est déclarée dans vos paramètres utilisateur même lorsque vous passez `--scope project`.

260 

245<h3 id="add-a-private-marketplace">261<h3 id="add-a-private-marketplace">

246 Ajouter une marketplace privée262 Ajouter une marketplace privée

247</h3>263</h3>

Details

185| Met `official` à côté de `claude` ou `anthropic`, comme `official-claude-tools` | Erreur |185| Met `official` à côté de `claude` ou `anthropic`, comme `official-claude-tools` | Erreur |

186| A `claude`, `anthropic`, ou `anthropics` comme mot entier n'importe où ailleurs, comme `mcp-for-claude` | Avertissement |186| A `claude`, `anthropic`, ou `anthropics` comme mot entier n'importe où ailleurs, comme `mcp-for-claude` | Avertissement |

187 187 

188Le message d'erreur lit `Plugin name "<name>" is reserved: it passes as one of Anthropic's own`, et l'avertissement lit `Plugin name "<name>" reads as one of Anthropic's own`. `claude plugin init` et `claude plugin tag` refusent un nom qui génère l'erreur. Seules ces commandes vérifient le nom. Claude Code installe et charge toujours un plugin dont le nom qu'elles refusent.188Le message d'erreur lit `Plugin name "<name>" is reserved: it passes as one of Anthropic's own`, et l'avertissement lit `Plugin name "<name>" reads as one of Anthropic's own`. `claude plugin init` et `claude plugin tag` refusent un nom qui génère l'erreur. Claude Code installe et charge tout de même un plugin dont elles refusent le nom.

189 189 

190<h3 id="displayname">190<h3 id="displayname">

191 `displayName`191 `displayName`

Details

138| `$.mcp.call` | Appelle un outil sur un serveur MCP connecté, selon les règles de permission de la session |138| `$.mcp.call` | Appelle un outil sur un serveur MCP connecté, selon les règles de permission de la session |

139| `$.model.complete` | Utilise le plan ou la clé API de l'utilisateur pour les appels de modèle |139| `$.model.complete` | Utilise le plan ou la clé API de l'utilisateur pour les appels de modèle |

140| `$.prompt.submit` | Soumet une invite, et peut l'envoyer comme les propres paroles de l'utilisateur |140| `$.prompt.submit` | Soumet une invite, et peut l'envoyer comme les propres paroles de l'utilisateur |

141| `$.session.send` | Envoie un message qu'une autre session ou sous-agent de Claude lit |141| `$.session.send` | Envoie un message que lit le Claude d'une autre session, d'un sous-agent ou d'un [coéquipier](/docs/fr/agent-teams) |

142 142 

143Dans la ligne `hooks:`, [`tool.call`](/docs/fr/plugins/mods/reference#tools) et [`prompt.submit`](/docs/fr/plugins/mods/reference#prompts-and-what-claude-reads) signifient que le mod voit chaque appel d'outil et chaque invite, et peut les changer. [`session.append`](/docs/fr/plugins/mods/reference#session) signifie que le mod peut réécrire chaque ligne de la conversation avant qu'elle ne soit stockée. [`ui.render{component=AskUserQuestion}`](/docs/fr/plugins/mods/interface#change-what-claude-code-already-draws) signifie que le mod peut redessiner la boîte de dialogue que Claude utilise pour poser une question à l'utilisateur. `tool.check` signifie que le mod peut approuver ou refuser un appel d'outil avant qu'une invite de permission n'apparaisse. [Savoir ce qui se passe par défaut](#know-what-happens-by-default) liste lesquels de vos règles et hooks ont la priorité sur sa réponse.143Dans la ligne `hooks:`, [`tool.call`](/docs/fr/plugins/mods/reference#tools) et [`prompt.submit`](/docs/fr/plugins/mods/reference#prompts-and-what-claude-reads) signifient que le mod voit chaque appel d'outil et chaque invite, et peut les changer. [`session.append`](/docs/fr/plugins/mods/reference#session) signifie que le mod peut réécrire chaque ligne de la conversation avant qu'elle ne soit stockée. [`ui.render{component=AskUserQuestion}`](/docs/fr/plugins/mods/interface#change-what-claude-code-already-draws) signifie que le mod peut redessiner la boîte de dialogue que Claude utilise pour poser une question à l'utilisateur. `tool.check` signifie que le mod peut approuver ou refuser un appel d'outil avant qu'une invite de permission n'apparaisse. [Savoir ce qui se passe par défaut](#know-what-happens-by-default) liste lesquels de vos règles et hooks ont la priorité sur sa réponse.

144 144 

Details

140| Appel | Ce que l'utilisateur voit |140| Appel | Ce que l'utilisateur voit |

141| :- | :- |141| :- | :- |

142| `$.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`. |142| `$.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`. |

143| `$.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 |143| `$.ui.toast(text)` | Une notification toast avec le nom du mod qui disparaît après quelques secondes. Il s'agit d'une boîte en haut à droite en [rendu plein écran](/docs/fr/fullscreen), et d'une ligne à droite sous l'invite dans le moteur de rendu classique. |

144| `$.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`. |144| `$.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`. |

145 145 

146<h3 id="start-a-turn-from-a-background-job">146<h3 id="start-a-turn-from-a-background-job">


159 Envoyer et recevoir des messages entre les sessions159 Envoyer et recevoir des messages entre les sessions

160</h2>160</h2>

161 161 

162Un mod peut envoyer un message en texte brut à une autre de vos sessions ou à l'un des sous-agents de cette session, et observer les messages qui arrivent et partent. `$.session.send({ to, text })` en envoie un, la même livraison que l'outil SendMessage fait. `to` est `{ sessionId }` pour une session, `{ agentId }` pour un sous-agent de `$.agent.list()`, ou l'adresse de chaîne d'où provient un message reçu. L'appel se résout une fois que le message est mis en file d'attente, avec `{ isDelivered: true }`. Quand rien n'a été livré, il se résout avec `{ isDelivered: false, reason }`, et `reason` dit pourquoi.162Un mod peut envoyer un message en texte brut à une autre de vos sessions, à l'un des sous-agents de cette session ou à un coéquipier de son [équipe d'agents](/docs/fr/agent-teams). Il peut aussi observer les messages qui arrivent et partent.

163 

164Pour en envoyer un, appelez `$.session.send({ to, text })`, qui effectue la même livraison que l'outil SendMessage. Définissez `to` selon le destinataire du message :

165 

166* **Une autre de vos sessions** : `{ sessionId }`

167* **Un sous-agent ou un coéquipier** : `{ agentId }`, avec un id provenant de `$.agent.list()`

168* **L'expéditeur d'un message que vous avez reçu** : l'adresse de chaîne d'où provient ce message

169 

170L'appel se résout une fois que le message est mis en file d'attente, avec `{ isDelivered: true }`. Quand rien n'a été livré, il se résout avec `{ isDelivered: false, reason }`, et `reason` dit pourquoi.

163 171 

164Ce hook répond à une commande `/ping`, [enregistrée comme une commande](#add-a-command), en demandant à la session dont vous tapez l'id après un statut :172Ce hook répond à une commande `/ping`, [enregistrée comme une commande](#add-a-command), en demandant à la session dont vous tapez l'id après un statut :

165 173 

Details

281 281 

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

283 283 

284Pour voir les appels d'outils que l'API a exécutés elle-même pendant la requête, comme les appels à l'[outil advisor](/docs/fr/advisor), lisez `result.serverToolUses`. Claude Code n'exécute pas ces appels ; aucun hook `tool.call` ou `tool.check` ne se déclenche donc pour eux. Le champ est absent lorsque la réponse ne contient aucun appel de ce type, et il nécessite Claude Code v2.1.290 ou une version ultérieure.

285 

284<h3 id="hook-the-settings-hook-events">286<h3 id="hook-the-settings-hook-events">

285 Gérer les événements des hooks des paramètres287 Gérer les événements des hooks des paramètres

286</h3>288</h3>

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 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" />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 en rendu plein écran. 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 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" />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 en rendu plein écran. 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 d'être à 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 


324| `title` | L'étiquette d'onglet du volet quand plus d'un volet est ouvert |324| `title` | L'étiquette d'onglet du volet quand plus d'un volet est ouvert |

325| `focus` | Demande le [focus clavier](#know-which-keys-your-mod-can-receive) |325| `focus` | Demande le [focus clavier](#know-which-keys-your-mod-can-receive) |

326| `closeOnEscape` | Fait que Esc ferme le volet |326| `closeOnEscape` | Fait que Esc ferme le volet |

327| `holdToasts` | Retient les toasts, les petits avis de [`$.ui.toast`](/docs/fr/plugins/mods/api#show-something-without-starting-a-turn), jusqu'à ce que le volet se ferme |327| `holdToasts` | Dans le terminal, retient les toasts tant que ce volet est celui qui s'affiche. Voir [Retenir les toasts derrière un dialogue](#hold-toasts-behind-a-dialog). |

328| `rows` | La hauteur à demander quand le volet se trouve au-dessus de l'invite. La valeur par défaut est un tiers de l'espace. |328| `rows` | La hauteur à demander quand le volet se trouve au-dessus de l'invite. La valeur par défaut est un tiers de l'espace. |

329| `columns` | La largeur à demander quand le volet se trouve à côté de la transcription |329| `columns` | La largeur à demander quand le volet se trouve à côté de la transcription |

330 330 


337 337 

338Pour laisser une commande ouvrir le volet pendant que Claude travaille, ajoutez `immediate: true` quand vous [enregistrez la commande](/docs/fr/plugins/mods/api#add-a-command). Sans cela, une commande tapée pendant un tour attend la fin du tour.338Pour laisser une commande ouvrir le volet pendant que Claude travaille, ajoutez `immediate: true` quand vous [enregistrez la commande](/docs/fr/plugins/mods/api#add-a-command). Sans cela, une commande tapée pendant un tour attend la fin du tour.

339 339 

340<h4 id="hold-toasts-behind-a-dialog">

341 Retenir les toasts derrière un dialogue

342</h4>

343 

344Passez `holdToasts: true` à `$.ui.open` quand le volet est un dialogue auquel l'utilisateur répond avant de le quitter, afin que les toasts n'apparaissent pas pendant qu'il décide. Dans le terminal, la retenue dure tant que ce volet est celui qui s'affiche, et un toast déclenché pendant ce temps attend la fin de la retenue.

345 

346Claude Code retient les toasts des autres mods et ses propres notifications éphémères, ainsi que ceux que votre mod déclenche avec [`$.ui.toast`](/docs/fr/plugins/mods/api#show-something-without-starting-a-turn). Omettez ce champ pour un volet qui reste ouvert, afin que l'utilisateur continue de les voir.

347 

340<h4 id="when-a-pane-waits-for-a-wider-terminal">348<h4 id="when-a-pane-waits-for-a-wider-terminal">

341 Quand un volet attend un terminal plus large349 Quand un volet attend un terminal plus large

342</h4>350</h4>

Details

209| [`$.ui`](/docs/fr/plugins/mods/interface#pick-where-to-draw) | `resolve`, `invalidate`, `open`, `close`, `panes`, `focus`, `scroll`, `toast`, `status`, `log`, `notice`, `ask`, `copy`, `selection`, `blit` |209| [`$.ui`](/docs/fr/plugins/mods/interface#pick-where-to-draw) | `resolve`, `invalidate`, `open`, `close`, `panes`, `focus`, `scroll`, `toast`, `status`, `log`, `notice`, `ask`, `copy`, `selection`, `blit` |

210| [`$.command`](/docs/fr/plugins/mods/api#add-a-command) | `register`, `run`, `list` |210| [`$.command`](/docs/fr/plugins/mods/api#add-a-command) | `register`, `run`, `list` |

211| [`$.tool`](/docs/fr/plugins/mods/api#add-a-tool) | `register`, `call`, `check`, `list` |211| [`$.tool`](/docs/fr/plugins/mods/api#add-a-tool) | `register`, `call`, `check`, `list` |

212| `$.agent` | `register`, `spawn`, `list` |212| `$.agent` | `register`, `spawn`, `list`. `list()` renvoie les sous-agents et coéquipiers de cette session, chacun avec un `status` parmi `pending`, `running`, `waiting`, `idle`, `completed`, `failed` ou `killed`, où `idle` et `waiting` nécessitent Claude Code v2.1.289 ou une version ultérieure. |

213| [`$.model`](/docs/fr/plugins/mods/api#call-a-model) | `complete`, `fork`, `classify` |213| [`$.model`](/docs/fr/plugins/mods/api#call-a-model) | `complete`, `fork`, `classify` |

214| [`$.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. |214| [`$.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. |

215| `$.turn` | `abort` |215| `$.turn` | `abort` |


317| Délai d'expiration de `$.process.run` | 30 secondes par défaut, 10 minutes au maximum |317| Délai d'expiration de `$.process.run` | 30 secondes par défaut, 10 minutes au maximum |

318| `maxTokens` de `$.model.complete` | 1024 par défaut, jusqu'à 64 000 ou la limite de sortie du modèle |318| `maxTokens` de `$.model.complete` | 1024 par défaut, jusqu'à 64 000 ou la limite de sortie du modèle |

319| `$.fs.read` et `$.fs.write` | 4 Mio pour un fichier |319| `$.fs.read` et `$.fs.write` | 4 Mio pour un fichier |

320| La raison `drop` d'un hook ou la raison `deny` de `config.set` | 4 096 caractères. La fin d'une raison plus longue est tronquée, et le drop ou le deny s'applique quand même. La troncature nécessite Claude Code v2.1.292 ou une version ultérieure ; sur les versions antérieures, le hook [échoue](/docs/fr/plugins/mods/events#handle-a-hook-that-fails) à la place. |

320| Texte dans un arbre | Les 100 000 premiers caractères sont dessinés |321| Texte dans un arbre | Les 100 000 premiers caractères sont dessinés |

321| Le `language` ou le `path` d'un `Code`, la `value` d'une option `Select`, ou le `module` d'un `Client` | 10 000 caractères. Si l'un d'eux est plus long, Claude Code [dessine sa propre version du site](/docs/fr/plugins/mods/interface#build-a-tree-from-elements). |322| Le `language` ou le `path` d'un `Code`, la `value` d'une option `Select`, ou le `module` d'un `Client` | 10 000 caractères. Si l'un d'eux est plus long, Claude Code [dessine sa propre version du site](/docs/fr/plugins/mods/interface#build-a-tree-from-elements). |

322| Le `href` d'un `Link` | 2 048 caractères. Un `href` plus long empêche le dessin de l'arbre entier. |323| Le `href` d'un `Link` | 2 048 caractères. Un `href` plus long empêche le dessin de l'arbre entier. |

Details

110* `returned neither { value } nor { deny }` : un stub pour un appel d'API des mods a retourné une valeur nue, ce qui fait échouer le test110* `returned neither { value } nor { deny }` : un stub pour un appel d'API des mods a retourné une valeur nue, ce qui fait échouer le test

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

112 112 

113Le kit exporte également des mocks en mémoire qui répondent à un espace de noms entier pour vous. `mock.clock(on)` répond à [`$.clock`](/docs/fr/plugins/mods/api#run-work-in-the-background), `mock.store(on, { count: 7 })` répond à `$.store` à partir d'un magasin qui commence par ces entrées, et `mock.env(on, { CI: 'true' })` répond à `$.env.get` à partir de ces variables. `mock.clock` retourne une horloge simulée que votre test avance, afin qu'un test d'une minuterie n'attende pas. `mock.store` ne retourne rien, donc pour vérifier ce que votre mod a enregistré, écrivez vous-même les deux stubs `store` comme le fait le [test de dessin](#test-a-drawing).113Le kit exporte également des mocks prêts à l'emploi pour l'horloge, le magasin, les variables d'environnement et les lignes ajoutées à la conversation :

114 

115* **`mock.clock(on)`** : répond à [`$.clock`](/docs/fr/plugins/mods/api#run-work-in-the-background) et retourne une horloge simulée que votre test avance, afin qu'un test d'une minuterie n'attende pas.

116* **`mock.store(on, { count: 7 })`** : répond à `$.store` à partir d'un magasin qui commence par ces entrées. Il ne retourne rien, donc pour vérifier ce que votre mod a enregistré, écrivez vous-même les deux stubs `store` comme le fait le [test de dessin](#test-a-drawing).

117* **`mock.env(on, { CI: 'true' })`** : répond à `$.env.get` à partir de ces variables.

118* **`mock.session(on)`** : retourne une session simulée dont la méthode `appended()` liste les lignes que votre mod a ajoutées avec [`$.session.append`](/docs/fr/plugins/mods/reference#session), de la plus ancienne à la plus récente ; nécessite Claude Code v2.1.293 ou ultérieur.

114 119 

115<h3 id="follow-the-test-kit’s-rules">120<h3 id="follow-the-test-kit’s-rules">

116 Suivre les règles du kit de test121 Suivre les règles du kit de test


168 Rechercher ce qu'un stub retourne173 Rechercher ce qu'un stub retourne

169</h3>174</h3>

170 175 

171Chaque appel d'API des mods que votre mod fait dans un test a besoin d'un stub qui répond à la place de Claude Code, sauf les quelques-uns que le kit répond lui-même : les appels [`$.ui.invalidate`](/docs/fr/plugins/mods/interface#redraw-when-something-changes) et [`$.state`](/docs/fr/plugins/mods/interface#keep-state). Pour les appels `$.clock`, utilisez `mock.clock(on)`, sinon votre mod `$.clock.now()` échoue avec `no implementation for clock.now`.176Chaque appel d'API des mods que votre mod fait dans un test a besoin d'un stub qui répond à la place de Claude Code, sauf les quelques-uns que le kit répond lui-même : les appels [`$.ui.invalidate`](/docs/fr/plugins/mods/interface#redraw-when-something-changes), [`$.state`](/docs/fr/plugins/mods/interface#keep-state) et `$.session.append`. Pour les appels `$.clock`, utilisez `mock.clock(on)`, sinon votre mod `$.clock.now()` échoue avec `no implementation for clock.now`.

172 177 

173Ce tableau liste ceux que les mods utilisent le plus. La première colonne est l'appel que votre mod fait ou l'événement qu'il transmet avec `next(e)`. La deuxième est la fonction à passer à `on` sous ce nom, afin que la ligne `$.store.get` devienne `on('store.get', ($, e) => ({ value: saved.get(e.key) }))`. Un `'...'` dans un stub marque le texte pour vous à remplir :178Ce tableau liste ceux que les mods utilisent le plus. La première colonne est l'appel que votre mod fait ou l'événement qu'il transmet avec `next(e)`. La deuxième est la fonction à passer à `on` sous ce nom, afin que la ligne `$.store.get` devienne `on('store.get', ($, e) => ({ value: saved.get(e.key) }))`. Un `'...'` dans un stub marque le texte pour vous à remplir :

174 179 

Details

209 Un dessin n'apparaît pas ou ne répond pas209 Un dessin n'apparaît pas ou ne répond pas

210</h2>210</h2>

211 211 

212Le mod s'est chargé, et son volet, sa bande ou ses contrôles ne se comportent pas comme prévu.212Le mod s'est chargé, et son volet, sa bande, son toast ou ses contrôles ne se comportent pas comme prévu.

213 213 

214<h3 id="a-pane-or-band-is-empty-or-shows-claude-code’s-usual-content">214<h3 id="a-pane-or-band-is-empty-or-shows-claude-code’s-usual-content">

215 Un volet ou une bande est vide ou affiche le contenu habituel de Claude Code215 Un volet ou une bande est vide ou affiche le contenu habituel de Claude Code


247 247 

248Ouvrez 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).248Ouvrez 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).

249 249 

250<h3 id="a-toast-doesn’t-appear">

251 Un toast n'apparaît pas

252</h3>

253 

254Votre mod appelle [`$.ui.toast`](/docs/fr/plugins/mods/api#show-something-without-starting-a-turn) dans une session de terminal interactive et vous ne voyez pas le toast. Pour confirmer que l'appel s'est exécuté, cherchez dans le [journal de débogage](#read-the-debug-log) une ligne contenant le nom de votre mod et le texte du toast, comme dans `$.ui.toast (first-mod): build finished`. Vérifiez ensuite des causes comme celles-ci :

255 

256* **La ligne de l'appel est absente** : cherchez-en une qui indique pourquoi Claude Code a refusé l'appel, comme dans `first-mod: $.ui.toast dropped: timeoutMs is a whole number of ms, 1 to 60000`.

257* **Un volet retient les toasts** : votre mod ou un autre a passé [`holdToasts`](/docs/fr/plugins/mods/interface#hold-toasts-behind-a-dialog) à l'ouverture du volet affiché. Fermez le volet pour mettre fin à la retenue. Si le volet est le vôtre et doit rester ouvert, supprimez `holdToasts` de son appel `$.ui.open` et rouvrez le volet.

258* **Le toast est sous le prompt** : dans le [moteur de rendu classique](/docs/fr/fullscreen#enable-fullscreen-rendering), regardez à droite sous le prompt. Un toast à cet endroit est une ligne qui commence par le nom du mod, plutôt qu'une boîte en haut à droite.

259* **Votre mod a émis un toast plus récent** : dans le moteur de rendu classique, un toast plus récent de votre mod peut remplacer un toast affiché ou en attente d'affichage. Le journal de débogage contient une autre ligne pour l'ancien toast, qui se termine par `gave way, cut short` s'il était affiché, ou par `gave way, unseen` s'il n'est jamais apparu. Pour afficher les deux messages, placez-les dans un seul toast.

260* **Le toast a expiré sans être dessiné** : en rendu plein écran, Claude Code dessine au plus trois toasts à la fois, si bien qu'un toast peut expirer avant d'être dessiné. Le journal de débogage contient une autre ligne pour ce toast, qui se termine par `left the stack, never drawn`. Lorsque votre mod en émet plusieurs à la fois, placez les messages dans un seul toast.

261 

262Avant la v2.1.290, Claude Code abandonnait un toast émis moins de deux secondes après le dernier qu'il avait affiché pour votre mod, et la ligne du journal de débogage pour le toast abandonné indiquait `within 2000ms of the last; dropped`.

263 

250<h3 id="hotkeys-do-nothing">264<h3 id="hotkeys-do-nothing">

251 Les raccourcis clavier ne font rien265 Les raccourcis clavier ne font rien

252</h3>266</h3>

Details

129* Ajouter la marketplace une fois : `claude plugin marketplace add your-org/your-marketplace`, où l'argument est un raccourci GitHub `owner/repo`, une URL ou un chemin129* Ajouter la marketplace une fois : `claude plugin marketplace add your-org/your-marketplace`, où l'argument est un raccourci GitHub `owner/repo`, une URL ou un chemin

130* Installer le plugin : `claude plugin install deploy-helper@your-marketplace`130* Installer le plugin : `claude plugin install deploy-helper@your-marketplace`

131* Ou faire les deux à partir d'une session : `/plugin install deploy-helper --marketplace your-org/your-marketplace`. Nécessite Claude Code v2.1.275 ou ultérieur. Voir [Ajouter une marketplace et installer en une commande](/docs/fr/plugins/install#add-a-marketplace-and-install-in-one-command)131* Ou faire les deux à partir d'une session : `/plugin install deploy-helper --marketplace your-org/your-marketplace`. Nécessite Claude Code v2.1.275 ou ultérieur. Voir [Ajouter une marketplace et installer en une commande](/docs/fr/plugins/install#add-a-marketplace-and-install-in-one-command)

132* Ou faire les deux à partir du shell en une seule commande : `claude plugin install deploy-helper --marketplace your-org/your-marketplace`. Nécessite Claude Code v2.1.292 ou ultérieur

132 133 

133<h3 id="ship-updates-to-users">134<h3 id="ship-updates-to-users">

134 Livrer les mises à jour aux utilisateurs135 Livrer les mises à jour aux utilisateurs

Details

163 `Invalid marketplace source format`163 `Invalid marketplace source format`

164</h3>164</h3>

165 165 

166Vous avez exécuté `/plugin marketplace add <source>` ou `claude plugin marketplace add <source>`, et Claude Code a répondu `Invalid marketplace source format. Try: owner/repo, https://..., or ./path`.166Vous avez exécuté `/plugin marketplace add <source>`, `claude plugin marketplace add <source>` ou `claude plugin install <plugin> --marketplace <source>`, et Claude Code a répondu `Invalid marketplace source format. Try: owner/repo, https://..., or ./path`.

167 167 

168Claude Code accepte une source dans l'une de ces formes :168Claude Code accepte une source dans l'une de ces formes :

169 169 


568 `Marketplace "<name>" is already added from a different source`568 `Marketplace "<name>" is already added from a different source`

569</h3>569</h3>

570 570 

571Vous avez confirmé l'ajout d'une marketplace via [`/plugin install <plugin> --marketplace <source>`](/docs/fr/plugins/install#add-a-marketplace-and-install-in-one-command), et le catalogue que Claude Code a récupéré à partir de cette source a le même nom qu'une marketplace que vous avez déjà ajoutée à partir d'une source différente. Claude Code conserve la marketplace existante au lieu de la remplacer, et le plugin n'est pas installé.571Vous avez indiqué une nouvelle source de marketplace avec [`--marketplace <source>` dans la commande d'installation](/docs/fr/plugins/install#add-a-marketplace-and-install-in-one-command), dans une session ou depuis votre shell. Le catalogue que Claude Code a récupéré à partir de cette source a le même nom qu'une marketplace que vous avez déjà ajoutée à partir d'une source différente. Claude Code conserve la marketplace existante au lieu de la remplacer, et le plugin n'est pas installé.

572 572 

573Le message complet ressemble à ceci :573Le message complet ressemble à ceci :

574 574 


812 812 

813Si votre organisation pré-installe des plugins pour vous, elle le fait via les paramètres gérés à la place. Consultez [Pré-installer et exiger des plugins](/docs/fr/plugins/org#pre-install-and-require-plugins).813Si votre organisation pré-installe des plugins pour vous, elle le fait via les paramètres gérés à la place. Consultez [Pré-installer et exiger des plugins](/docs/fr/plugins/org#pre-install-and-require-plugins).

814 814 

815<h3 id="a-plugin-stays-installed-after-plugin-uninstall-on-windows">

816 Un plugin reste installé après `plugin uninstall` sous Windows

817</h3>

818 

819Sous Windows, vous exécutez `claude plugin uninstall` avec la portée projet ou locale et la commande signale un succès, mais `claude plugin list` ou `/plugin` répertorie toujours le plugin.

820 

821`installed_plugins.json` contenait deux enregistrements d'installation du plugin pour le dossier du projet, chacun orthographiant différemment le chemin du dossier, et une désinstallation n'en supprime qu'un seul. Pour vérifier, exécutez `claude plugin list --json` dans votre shell. La ligne restante du plugin a un `projectPath` qui orthographie le dossier différemment de l'endroit où vous avez exécuté la désinstallation, comme `c:\work\app` pour `C:\work\app`.

822 

823Exécutez à nouveau la même commande de désinstallation, avec le même `--scope`, depuis le même dossier. La seconde exécution ne trouve aucun enregistrement sous sa propre orthographe du chemin, elle supprime donc celui qui se trouve sous l'autre orthographe. Pour une installation de portée projet :

824 

825```shell theme={null}

826claude plugin uninstall <name>@<marketplace> --scope project

827```

828 

829Ensuite, exécutez à nouveau `claude plugin list --json` pour confirmer que la ligne a disparu.

830 

831Avant v2.1.295, la seconde exécution échoue avec `Plugin "<name>" is not installed in project scope`. Exécutez `claude update`, puis relancez la désinstallation.

832 

815<h3 id="failed-to-load-hooks-from-and-hooks-that-dont-fire">833<h3 id="failed-to-load-hooks-from-and-hooks-that-dont-fire">

816 `Failed to load hooks from <path>` et hooks qui ne se déclenchent pas834 `Failed to load hooks from <path>` et hooks qui ne se déclenchent pas

817</h3>835</h3>

Details

191 Gigue191 Gigue

192</h3>192</h3>

193 193 

194Pour éviter que chaque session ne frappe l'API au même moment mural, le planificateur ajoute un petit décalage déterministe aux heures d'exécution :194Une tâche planifiée peut s'exécuter à un moment différent de celui indiqué par sa planification. Si les tâches de chaque session s'exécutaient exactement à l'heure prévue, beaucoup d'entre elles appelleraient l'API au même moment. Claude Code décale donc l'heure d'exécution de chaque tâche. Les tâches récurrentes s'exécutent en retard, et les tâches ponctuelles planifiées à l'heure pile ou à la demie s'exécutent un peu en avance.

195 195 

196* Les tâches récurrentes s'exécutent jusqu'à 30 minutes après l'heure planifiée (ou jusqu'à la moitié de l'intervalle, pour les tâches qui s'exécutent plus souvent qu'une fois par heure). Une tâche horaire planifiée pour `:00` peut s'exécuter n'importe où jusqu'à `:30`.196<h4 id="how-late-a-recurring-task-runs">

197* Les tâches ponctuelles planifiées pour le haut ou le bas de l'heure s'exécutent jusqu'à 90 secondes plus tôt.197 Quel retard pour une tâche récurrente

198</h4>

198 199 

199Le décalage est dérivé de l'ID de la tâche, donc la même tâche obtient toujours le même décalage. Si le timing exact est important, choisissez une minute qui n'est pas `:00` ou `:30`, par exemple `3 9 * * *` au lieu de `0 9 * * *`, et la gigue ponctuelle ne s'appliquera pas.200Lorsque vous créez une tâche récurrente, Claude Code lui attribue un délai fixe et ajoute ce délai à chaque exécution. Le délai est calculé à partir de l'ID de la tâche, de sorte que la même tâche s'exécute avec le même nombre de minutes de retard à chaque fois, y compris lorsque la session est inactive et que rien d'autre ne s'exécute.

201 

202Les tâches qui s'exécutent plus souvent obtiennent des délais plus courts, et 30 minutes est le délai le plus long qu'une tâche puisse obtenir. Voici les plages de délai pour quelques planifications courantes :

203 

204| La tâche s'exécute | Le délai est compris entre |

205| :- | :- |

206| Toutes les 10 minutes | 0 et 5 minutes |

207| Toutes les 30 minutes | 0 et 15 minutes |

208| Toutes les heures, ou moins souvent, par exemple quotidiennement | 0 et 30 minutes |

209 

210Par exemple, `7,37 * * * *` planifie une tâche pour `:07` et `:37`, qui sont espacés de 30 minutes, donc son délai est compris entre 0 et 15 minutes. Si le délai de cette tâche est de 14 minutes, elle s'exécute à `:21` et `:51` toutes les heures. Changer la planification pour une autre minute déplace l'heure d'exécution, et un délai s'y ajoute toujours.

211 

212<h4 id="when-a-one-shot-task-runs-early">

213 Quand une tâche ponctuelle s'exécute en avance

214</h4>

215 

216Une tâche ponctuelle planifiée pour `:00` ou `:30` s'exécute jusqu'à 90 secondes en avance. Claude Code ne décale pas une tâche ponctuelle planifiée pour toute autre minute. Si le timing est important, planifiez-la en dehors de l'heure pile et de la demie : `3 9 * * *` au lieu de `0 9 * * *`.

200 217 

201<h3 id="seven-day-expiry">218<h3 id="seven-day-expiry">

202 Expiration de sept jours219 Expiration de sept jours

Details

403 403 

404* Le [fichier MCP géré](/docs/fr/managed-mcp) de portée entreprise, à son chemin système standard : `/etc/claude-code/managed-mcp.json` sur les hôtes de runner Linux, `/Library/Application Support/ClaudeCode/managed-mcp.json` sur les hôtes macOS. Utilisez-le pour les parcs verrouillés où seuls les serveurs listés par un administrateur peuvent être chargés. Consultez [le contrôle exclusif avec managed-mcp.json](/docs/fr/managed-mcp#exclusive-control-with-managed-mcp-json) pour les règles de priorité. Lorsque ce fichier est présent sur l'hôte du runner, Claude Code ignore les serveurs MCP que le plan de contrôle d'Anthropic fournit à une session, y compris les connecteurs claude.ai, et les nomme dans un avertissement sur la sortie stderr du processus enfant de la session, que le runner enregistre au niveau de log `debug`. Avant la v2.1.229, ces sessions se terminaient au démarrage avec `You cannot dynamically configure MCP servers when an enterprise MCP config is present`.404* Le [fichier MCP géré](/docs/fr/managed-mcp) de portée entreprise, à son chemin système standard : `/etc/claude-code/managed-mcp.json` sur les hôtes de runner Linux, `/Library/Application Support/ClaudeCode/managed-mcp.json` sur les hôtes macOS. Utilisez-le pour les parcs verrouillés où seuls les serveurs listés par un administrateur peuvent être chargés. Consultez [le contrôle exclusif avec managed-mcp.json](/docs/fr/managed-mcp#exclusive-control-with-managed-mcp-json) pour les règles de priorité. Lorsque ce fichier est présent sur l'hôte du runner, Claude Code ignore les serveurs MCP que le plan de contrôle d'Anthropic fournit à une session, y compris les connecteurs claude.ai, et les nomme dans un avertissement sur la sortie stderr du processus enfant de la session, que le runner enregistre au niveau de log `debug`. Avant la v2.1.229, ces sessions se terminaient au démarrage avec `You cannot dynamically configure MCP servers when an enterprise MCP config is present`.

405* La clé [`managedMcpServers`](/docs/fr/settings-reference#managedmcpservers) dans les [paramètres gérés](/docs/fr/managed-settings) sur l'hôte du runner : elle fournit des serveurs HTTP et SSE sans prendre le contrôle exclusif, de sorte que les serveurs des autres sources sont toujours chargés. Nécessite Claude Code v2.1.259 ou une version ultérieure.405* La clé [`managedMcpServers`](/docs/fr/settings-reference#managedmcpservers) dans les [paramètres gérés](/docs/fr/managed-settings) sur l'hôte du runner : elle fournit des serveurs HTTP et SSE sans prendre le contrôle exclusif, de sorte que les serveurs des autres sources sont toujours chargés. Nécessite Claude Code v2.1.259 ou une version ultérieure.

406* `<repo>/.mcp.json` : portée projet. Faites un commit du fichier dans le dépôt ; ses serveurs sont approuvés automatiquement dans les sessions cloud.406* `<repo>/.mcp.json` : portée projet. Faites un commit du fichier dans le dépôt ; ses serveurs sont approuvés automatiquement dans les sessions cloud. Dans une session comportant plusieurs dépôts, [le fichier d'un seul dépôt au plus est chargé](#repository-settings-in-sessions-with-several-repositories).

407 407 

408Lorsque la fourniture des connecteurs est activée pour votre organisation, le plan de contrôle d'Anthropic fournit les connecteurs que vous avez configurés sur claude.ai aux sessions créées de manière interactive, via une configuration MCP fournie par le serveur et acheminée par `api.anthropic.com`. Les sessions créées par programmation, comme les [dispatches via la CLI](/docs/fr/self-hosted-environments-testing#run-the-test-loop), ne bénéficient pas de la fourniture des connecteurs ; fournissez-leur plutôt des serveurs MCP via l'une des autres sources listées dans cette section. Le jeton OAuth du processus enfant ne comporte pas de scope permettant de récupérer directement les connecteurs ; le processus enfant ne tente donc pas lui-même cette récupération : la fourniture est pilotée par le serveur.408Lorsque la fourniture des connecteurs est activée pour votre organisation, le plan de contrôle d'Anthropic fournit les connecteurs que vous avez configurés sur claude.ai aux sessions créées de manière interactive, via une configuration MCP fournie par le serveur et acheminée par `api.anthropic.com`. Les sessions créées par programmation, comme les [dispatches via la CLI](/docs/fr/self-hosted-environments-testing#run-the-test-loop), ne bénéficient pas de la fourniture des connecteurs ; fournissez-leur plutôt des serveurs MCP via l'une des autres sources listées dans cette section. Le jeton OAuth du processus enfant ne comporte pas de scope permettant de récupérer directement les connecteurs ; le processus enfant ne tente donc pas lui-même cette récupération : la fourniture est pilotée par le serveur.

409 409 


549exit 0549exit 0

550```550```

551 551 

552Le hook pousse Claude à valider et envoyer avant la fin de la session, et reste silencieux quand le répertoire n'est pas un référentiel git ou n'a pas de distant.552Le hook demande à Claude de faire un commit et d'envoyer son travail avant la fin de la session, et reste silencieux quand le répertoire n'est pas un dépôt git ou n'a pas de distant. Pour une session avec plusieurs dépôts, consultez [ce que désigne `$CLAUDE_PROJECT_DIR`](#repository-settings-in-sessions-with-several-repositories).

553 553 

554<h2 id="permissions-and-tool-approval">554<h2 id="permissions-and-tool-approval">

555 Permissions et approbation d'outils555 Permissions et approbation d'outils


578 578 

579Définissez `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` pour semer à partir d'un chemin différent, ou pointez-le vers un répertoire vide pour désactiver le semis.579Définissez `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` pour semer à partir d'un chemin différent, ou pointez-le vers un répertoire vide pour désactiver le semis.

580 580 

581Le `.claude/settings.json` validé dans le référentiel se superpose comme paramètres du projet. Les sessions lisent également [`managed-settings.json`](/docs/fr/settings#where-settings-live) à partir du chemin système standard dans votre image runner. Que ses clés s'appliquent aux côtés des [paramètres gérés par le serveur](/docs/fr/server-managed-settings) suit [comment Claude Code combine les sources gérées](/docs/fr/managed-settings#how-claude-code-combines-managed-sources) : par défaut, quand votre organisation livre des clés gérées par le serveur, les sessions ignorent le fichier de l'image runner à part les [clés que Claude Code lit à partir de chaque source d'administration](/docs/fr/managed-settings#keys-read-from-every-admin-source), comme le bloc `env`, les verrous de sandbox, les chemins binaires de sandbox et `forceRemoteSettingsRefresh`. Voir [précédence des paramètres](/docs/fr/settings#settings-precedence).581Le `.claude/settings.json` commité dans le dépôt se superpose comme paramètres du projet. Dans une session avec plusieurs dépôts, [le fichier d'au plus un dépôt prend effet](#repository-settings-in-sessions-with-several-repositories). Les sessions lisent également [`managed-settings.json`](/docs/fr/settings#where-settings-live) à partir du chemin système standard dans votre image runner. Que ses clés s'appliquent aux côtés des [paramètres gérés par le serveur](/docs/fr/server-managed-settings) suit [comment Claude Code combine les sources gérées](/docs/fr/managed-settings#how-claude-code-combines-managed-sources) : par défaut, quand votre organisation livre des clés gérées par le serveur, les sessions ignorent le fichier de l'image runner à part les [clés que Claude Code lit à partir de chaque source d'administration](/docs/fr/managed-settings#keys-read-from-every-admin-source), comme le bloc `env`, les verrous de sandbox, les chemins binaires de sandbox et `forceRemoteSettingsRefresh`. Voir [priorité des paramètres](/docs/fr/settings#settings-precedence).

582 582 

583Quand le plan de contrôle d'Anthropic fournit une session avec des [hooks Claude Code](/docs/fr/hooks), le runner les installe aux côtés, pas par-dessus, votre propre configuration. Nécessite Claude Code v2.1.229 ou ultérieur.583Quand le plan de contrôle d'Anthropic fournit une session avec des [hooks Claude Code](/docs/fr/hooks), le runner les installe aux côtés, pas par-dessus, votre propre configuration. Nécessite Claude Code v2.1.229 ou ultérieur.

584 584 


590 590 

591L'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.591L'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.

592 592 

593<h3 id="repository-settings-in-sessions-with-several-repositories">

594 Paramètres de dépôt dans les sessions avec plusieurs dépôts

595</h3>

596 

597Dans une session avec plusieurs dépôts, Claude Code lit les paramètres du projet à partir du répertoire dans lequel la session démarre, donc le `.claude/settings.json` d'au plus un dépôt prend effet comme paramètres du projet. Un hook défini dans le fichier d'un autre dépôt ne s'exécute pas, une règle de refus qui s'y trouve ne s'applique pas, et son `env` n'est pas défini.

598 

599* **`--capacity 1`, la valeur par défaut, avec le checkout intégré** : la session démarre dans le premier dépôt de sa liste de dépôts. Le `.claude/settings.json` de ce dépôt prend effet comme paramètres du projet et son `.mcp.json` se charge, contrairement à ceux des autres dépôts.

600* **Un `--capacity` supérieur à un, ou un [hook `checkout`](#checkout)** : la session démarre dans un répertoire propre à la session qui contient les checkouts. Aucun `.claude/settings.json` de dépôt ne prend effet comme paramètres du projet, aucun `.mcp.json` de dépôt ne se charge, et [`$CLAUDE_PROJECT_DIR`](/docs/fr/hooks#reference-scripts-by-path) dans une commande de hook correspond à ce répertoire, et non à un checkout.

601 

602Le `CLAUDE.md` et les skills de chaque dépôt se chargent quel que soit l'endroit où la session démarre. Le runner transmet chaque dépôt à Claude Code comme [répertoire supplémentaire](/docs/fr/permissions#additional-directories-grant-file-access-not-configuration), donc Claude Code lit aussi les clés `enabledPlugins` et `extraKnownMarketplaces` du `.claude/settings.json` de chaque dépôt.

603 

604Pour exécuter un hook ou appliquer une règle de permission dans chaque session, placez-le dans `~/.claude/settings.json` sur l'hôte du runner. Le runner [sème le fichier de l'hôte dans chaque session](#how-each-session’s-config-is-assembled), quel que soit l'endroit où la session démarre. Écrivez un chemin dans une règle `Read` ou `Edit` sous forme de [pattern](/docs/fr/permissions#read-and-edit) absolu `//` ou relatif au répertoire personnel `~/`, car les autres patterns sont ancrés à la source des paramètres ou au répertoire courant.

605 

593<h3 id="repository-committed-permission-rules">606<h3 id="repository-committed-permission-rules">

594 Règles de permission validées dans le référentiel607 Règles de permission validées dans le référentiel

595</h3>608</h3>

Details

92 92 

93 <Step title="Enregistrer et déployer">93 <Step title="Enregistrer et déployer">

94 Enregistrez vos modifications. Les clients Claude Code reçoivent les paramètres mis à jour au prochain démarrage ou lors du cycle d'interrogation horaire.94 Enregistrez vos modifications. Les clients Claude Code reçoivent les paramètres mis à jour au prochain démarrage ou lors du cycle d'interrogation horaire.

95 

96 L'éditeur vérifie votre JSON par rapport au schéma JSON publié pour les paramètres de Claude Code. S'il détecte un problème dans un JSON qui s'analyse correctement, il affiche un avertissement et renomme le bouton d'enregistrement. Le libellé est **Update with errors** lorsque des paramètres sont déjà enregistrés, et **Add with errors** lorsqu'aucun paramètre n'est encore enregistré. Ce bouton enregistre quand même, car un avertissement de schéma ne bloque pas l'enregistrement.

97 

98 Le schéma [peut être en retard sur les versions les plus récentes](/docs/fr/settings#edit-a-settings-file), de sorte que l'éditeur peut signaler une clé ou une valeur documentée dans la [référence des paramètres](/docs/fr/settings-reference#all-settings). Claude Code reçoit les clés et les valeurs que vous avez enregistrées et exécute [sa propre validation](#invalid-entries-in-delivered-settings) lorsqu'il les charge.

95 </Step>99 </Step>

96</Steps>100</Steps>

97 101 

settings.md +2 −2

Details

521 521 

522Dans une session [Cowork](https://claude.com/docs/cowork/overview) qui s'exécute sur votre machine dans l'application Claude Desktop, Claude Code ne récupère pas les paramètres gérés par le serveur à partir de la console d'administration claude.ai, et il lit la politique déployée sur votre appareil sauf si la configuration Claude Desktop de votre organisation définit `requireCoworkFullVmSandbox`. [Où et quand une politique s'applique](/docs/fr/managed-settings#where-and-when-a-policy-applies) couvre Cowork et les sessions cloud.522Dans une session [Cowork](https://claude.com/docs/cowork/overview) qui s'exécute sur votre machine dans l'application Claude Desktop, Claude Code ne récupère pas les paramètres gérés par le serveur à partir de la console d'administration claude.ai, et il lit la politique déployée sur votre appareil sauf si la configuration Claude Desktop de votre organisation définit `requireCoworkFullVmSandbox`. [Où et quand une politique s'applique](/docs/fr/managed-settings#where-and-when-a-policy-applies) couvre Cowork et les sessions cloud.

523 523 

524Si vous êtes l'administrateur, [Configurez Claude Code pour votre organisation](/docs/fr/admin-setup) vous guide dans le choix de ce qu'il faut appliquer, et [Déployez les paramètres gérés](/docs/fr/managed-settings) couvre la livraison et comment confirmer qu'une politique est en vigueur.524Si vous êtes l'administrateur, [Configurez Claude Code pour votre organisation](/docs/fr/admin-setup) vous guide dans le choix de ce qu'il faut appliquer, et [Déployez les paramètres gérés](/docs/fr/managed-settings) couvre la livraison et comment confirmer qu'une politique est en vigueur. Pour l'avertissement que l'éditeur de paramètres gérés de la console d'administration claude.ai peut afficher, voir [Configurer les paramètres gérés par le serveur](/docs/fr/server-managed-settings#configure-server-managed-settings).

525 525 

526<h2 id="change-a-setting">526<h2 id="change-a-setting">

527 Modifiez un paramètre527 Modifiez un paramètre


809 809 

810Une [session cloud](/docs/fr/claude-code-on-the-web) s'exécute dans un [environnement cloud](/docs/fr/cloud-environments) sur un clone frais de votre référentiel, pas sur votre machine. Cela change quels paramètres l'atteignent :810Une [session cloud](/docs/fr/claude-code-on-the-web) s'exécute dans un [environnement cloud](/docs/fr/cloud-environments) sur un clone frais de votre référentiel, pas sur votre machine. Cela change quels paramètres l'atteignent :

811 811 

812* **Paramètres de projet partagés** (`.claude/settings.json`) : lus dans une session avec un référentiel, car le fichier fait partie du clone et la session démarre à l'intérieur. Validez un paramètre là pour l'appliquer dans ces sessions. Une session avec plusieurs référentiels démarre au-dessus des clones et lit uniquement les clés `enabledPlugins` et `extraKnownMarketplaces` du `.claude/settings.json` de chaque référentiel, pas les règles de permission, les hooks, `env`, ou d'autres clés. Les marketplaces et les plugins que ces deux clés déclarent ne [se chargent toujours pas dans une session cloud](/docs/fr/cloud-environments#what-carries-over-from-your-setup).812* **Paramètres de projet partagés** (`.claude/settings.json`) : lus dans une session avec un dépôt, car le fichier fait partie du clone et la session démarre à l'intérieur. Commitez un paramètre à cet endroit pour l'appliquer dans ces sessions. Dans un environnement hébergé par Anthropic, une session avec plusieurs dépôts démarre au-dessus des clones et lit uniquement les clés `enabledPlugins` et `extraKnownMarketplaces` du `.claude/settings.json` de chaque dépôt, pas les règles de permission, les hooks, `env`, ou d'autres clés. Les marketplaces et les plugins que ces deux clés déclarent ne [se chargent toujours pas dans une session cloud](/docs/fr/cloud-environments#what-carries-over-from-your-setup). Pour un environnement auto-hébergé, consultez [les paramètres de quel dépôt s'appliquent](/docs/fr/self-hosted-environments-configuration#repository-settings-in-sessions-with-several-repositories).

813* **Paramètres utilisateur et projet local** (`~/.claude/settings.json` et `.claude/settings.local.json`) : non lus. Les deux restent sur votre machine, et le fichier local n'est pas dans le clone.813* **Paramètres utilisateur et projet local** (`~/.claude/settings.json` et `.claude/settings.local.json`) : non lus. Les deux restent sur votre machine, et le fichier local n'est pas dans le clone.

814* **Paramètres gérés** : un fichier `managed-settings.json` ou un profil MDM sur votre appareil ne parvient pas à une session cloud. Les [paramètres gérés par le serveur](/docs/fr/server-managed-settings) de votre organisation le font ; la [couverture de surface](/docs/fr/model-config#surface-coverage) énumère quelles sessions cloud les reçoivent. Un [environnement auto-hébergé](/docs/fr/self-hosted-environments) lit aussi le fichier de paramètres gérés dans son image de runner. [Comment Claude Code combine les sources gérées](/docs/fr/managed-settings#how-claude-code-combines-managed-sources) indique quand ce fichier s'applique.814* **Paramètres gérés** : un fichier `managed-settings.json` ou un profil MDM sur votre appareil ne parvient pas à une session cloud. Les [paramètres gérés par le serveur](/docs/fr/server-managed-settings) de votre organisation le font ; la [couverture de surface](/docs/fr/model-config#surface-coverage) énumère quelles sessions cloud les reçoivent. Un [environnement auto-hébergé](/docs/fr/self-hosted-environments) lit aussi le fichier de paramètres gérés dans son image de runner. [Comment Claude Code combine les sources gérées](/docs/fr/managed-settings#how-claude-code-combines-managed-sources) indique quand ce fichier s'applique.

815* **`/config`** : dans votre navigateur sur claude.ai/code, ouvre la section Claude Code de vos paramètres claude.ai à la place de modifier une valeur. Pour modifier un paramètre pour une session cloud, définissez une [variable d'environnement](/docs/fr/cloud-environments#set-environment-variables) sur l'environnement, ou dans une session avec un référentiel, validez la clé dans le `.claude/settings.json` de ce référentiel.815* **`/config`** : dans votre navigateur sur claude.ai/code, ouvre la section Claude Code de vos paramètres claude.ai à la place de modifier une valeur. Pour modifier un paramètre pour une session cloud, définissez une [variable d'environnement](/docs/fr/cloud-environments#set-environment-variables) sur l'environnement, ou dans une session avec un référentiel, validez la clé dans le `.claude/settings.json` de ce référentiel.

skills.md +2 −0

Details

94| `migrate` | Mettez à jour votre code Claude API existant vers un modèle plus récent | Antérieur à v2.1.221 |94| `migrate` | Mettez à jour votre code Claude API existant vers un modèle plus récent | Antérieur à v2.1.221 |

95| `upgrade` | Déplacez la dépendance du SDK Anthropic de votre projet sur une version majeure, actuellement le package Python `anthropic` de 0.x à 1.x | v2.1.236 ou version ultérieure |95| `upgrade` | Déplacez la dépendance du SDK Anthropic de votre projet sur une version majeure, actuellement le package Python `anthropic` de 0.x à 1.x | v2.1.236 ou version ultérieure |

96| `managed-agents-onboard` | Parcourez la création d'un nouvel Agent géré | Antérieur à v2.1.221 |96| `managed-agents-onboard` | Parcourez la création d'un nouvel Agent géré | Antérieur à v2.1.221 |

97| `managed-agents-onboard <url>` | Créez l'Agent géré que décrit la page située à l'URL, par exemple une page de la [documentation des Agents gérés](https://platform.claude.com/docs/en/managed-agents/overview) | v2.1.290 ou version ultérieure |

98| `managed-agents-onboard <quickstart-name>` | Créez l'un des templates de démarrage rapide de la Console, comme `deep-researcher`. Si vous indiquez un seul mot qui n'est pas un nom de template, Claude liste les noms valides | v2.1.290 ou version ultérieure |

97| `prompt-audit` | Signalez les instructions écrites pour les modèles plus anciens dans vos invites, compétences et descriptions d'outils et proposez des corrections sous forme de diff | v2.1.221 ou version ultérieure |99| `prompt-audit` | Signalez les instructions écrites pour les modèles plus anciens dans vos invites, compétences et descriptions d'outils et proposez des corrections sous forme de diff | v2.1.221 ou version ultérieure |

98| `cost-optimize` | Profilez où va la dépense Claude API de votre projet et proposez des économies à partir d'options telles que la mise en cache des invites, la réduction des tokens d'entrée et de sortie inutiles, le traitement par lots, l'effort et le choix du modèle, une modification à la fois | v2.1.247 ou version ultérieure |100| `cost-optimize` | Profilez où va la dépense Claude API de votre projet et proposez des économies à partir d'options telles que la mise en cache des invites, la réduction des tokens d'entrée et de sortie inutiles, le traitement par lots, l'effort et le choix du modèle, une modification à la fois | v2.1.247 ou version ultérieure |

99| `build-eval` | Construisez un ensemble d'évaluation pour votre application alimentée par Claude | v2.1.259 ou version ultérieure |101| `build-eval` | Construisez un ensemble d'évaluation pour votre application alimentée par Claude | v2.1.259 ou version ultérieure |

sub-agents.md +4 −2

Details

609Le mode de permission de la conversation principale décide si Claude Code utilise la valeur que vous définissez :609Le mode de permission de la conversation principale décide si Claude Code utilise la valeur que vous définissez :

610 610 

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

612* 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.612* 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. Il conserve plutôt le mode de permission de la conversation principale dans les cas suivants :

613 * Vous définissez `bypassPermissions`. L'exception `bypassPermissions` nécessite Claude Code v2.1.267 ou ultérieur.

614 * Vous définissez `auto` et le [mode auto n'est pas disponible](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) pour le sous-agent, par exemple lorsqu'un fichier de paramètres définit [`disableAutoMode`](/docs/fr/settings-reference#disableautomode) ou que le modèle du sous-agent ne prend pas en charge le mode auto.

613 615 

614`permissionMode` accepte ces valeurs, et `manual` comme alias pour `default` :616`permissionMode` accepte ces valeurs, et `manual` comme alias pour `default` :

615 617 


640Implement API endpoints. Follow the conventions and patterns from the preloaded skills.642Implement API endpoints. Follow the conventions and patterns from the preloaded skills.

641```643```

642 644 

643Le 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`.645Le contenu complet de chaque skill listé est injecté dans le contexte du sous-agent au démarrage, dans la limite des 32 premiers noms distincts de la liste. 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`.

644 646 

645Vous 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, que Claude ne peut pas exécuter de lui-même.647Vous 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, que Claude ne peut pas exécuter de lui-même.

646 648 

Details

666 666 

667* WebFetch refuse `localhost` et tout autre nom d'hôte sans point, comme un nom d'intranet nu, avant de faire une demande. L'[erreur qu'il retourne](/docs/fr/errors#webfetch-cannot-fetch-localhost) dit à Claude d'atteindre les serveurs locaux avec `curl` via Bash à la place.667* WebFetch refuse `localhost` et tout autre nom d'hôte sans point, comme un nom d'intranet nu, avant de faire une demande. L'[erreur qu'il retourne](/docs/fr/errors#webfetch-cannot-fetch-localhost) dit à Claude d'atteindre les serveurs locaux avec `curl` via Bash à la place.

668* Les URL HTTP sont automatiquement mises à niveau vers HTTPS.668* Les URL HTTP sont automatiquement mises à niveau vers HTTPS.

669* Les grandes pages sont tronquées à une limite de caractères fixe avant le traitement.669* WebFetch lit jusqu'à 100 000 caractères du contenu d'une page par appel. Sur Claude Code v2.1.290 ou ultérieur, le résultat pour une page plus longue indique à Claude quelle quantité de contenu n'a pas été lue, afin que Claude puisse récupérer la partie suivante.

670* WebFetch met en cache chaque réponse pendant 15 minutes par défaut, donc les récupérations répétées de la même URL reviennent rapidement. Sur Claude Code v2.1.233 ou ultérieur, définissez [`CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS`](/docs/fr/env-vars#variables) pour modifier la durée pendant laquelle WebFetch conserve chaque réponse.670* WebFetch met en cache chaque réponse pendant 15 minutes par défaut, donc les récupérations répétées de la même URL reviennent rapidement. Sur Claude Code v2.1.233 ou ultérieur, définissez [`CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS`](/docs/fr/env-vars#variables) pour modifier la durée pendant laquelle WebFetch conserve chaque réponse.

671* Une page qui n'a pas terminé le téléchargement dans les cinq minutes, y compris les redirections que WebFetch suit, échoue avec une erreur de délai. Sur Claude Code v2.1.268 ou ultérieur, définissez [`CLAUDE_CODE_WEBFETCH_DEADLINE_MS`](/docs/fr/env-vars#variables) pour modifier la limite, ou à `0` pour la supprimer.671* Une page qui n'a pas terminé le téléchargement dans les cinq minutes, y compris les redirections que WebFetch suit, échoue avec une erreur de délai. Sur Claude Code v2.1.268 ou ultérieur, définissez [`CLAUDE_CODE_WEBFETCH_DEADLINE_MS`](/docs/fr/env-vars#variables) pour modifier la limite, ou à `0` pour la supprimer.

672* Lorsqu'une URL redirige vers un hôte différent, WebFetch retourne un résultat texte qui nomme l'URL d'origine et la cible de redirection au lieu de la suivre. Claude récupère ensuite la nouvelle URL avec un deuxième appel WebFetch.672* Lorsqu'une URL redirige vers un hôte différent, WebFetch retourne un résultat texte qui nomme l'URL d'origine et la cible de redirection au lieu de la suivre. Claude récupère ensuite la nouvelle URL avec un deuxième appel WebFetch.

ultrareview.md +6 −6

Details

56 Examiner une demande de tirage56 Examiner une demande de tirage

57</h3>57</h3>

58 58 

59Pour examiner une demande de tirage GitHub au lieu d'une branche locale, transmettez le numéro de PR :59Pour examiner une pull request sur `github.com` au lieu d'une branche locale, transmettez le numéro de PR :

60 60 

61```text theme={null}61```text theme={null}

62/code-review ultra 123462/code-review ultra 1234


64 64 

65La commande accepte également `#1234`, `PR 1234` et les URL de PR collées ; une URL collée doit pointer vers le référentiel dans votre répertoire actuel.65La commande accepte également `#1234`, `PR 1234` et les URL de PR collées ; une URL collée doit pointer vers le référentiel dans votre répertoire actuel.

66 66 

67En mode PR, le sandbox cloud clone la demande de tirage directement depuis l'hôte plutôt que de regrouper votre arborescence de travail locale. Le mode PR fonctionne avec les référentiels sur `github.com` et sur les instances [GitHub Enterprise Server](/docs/fr/github-enterprise-server) qu'un propriétaire a connectées à Claude Code.67Le mode PR nécessite un dépôt sur `github.com`. Pour un dépôt sur une instance [GitHub Enterprise Server](/docs/fr/github-enterprise-server), exécutez `/code-review ultra` sans numéro de PR pour examiner plutôt votre branche locale.

68 68 

69Pour les référentiels sur `github.com`, le sandbox clone avec le compte GitHub connecté à votre compte Claude, donc le compte doit pouvoir lire le référentiel de la PR.69En mode PR, le sandbox cloud clone la pull request depuis `github.com` au lieu de charger votre arborescence de travail. Il utilise le compte GitHub connecté à votre compte Claude, ce compte doit donc disposer d'un accès en lecture au dépôt.

70 70 

71Exécutez [`/web-setup`](/docs/fr/web-quickstart#connect-from-your-terminal) pour connecter votre connexion GitHub CLI à votre compte Claude.71Exécutez [`/web-setup`](/docs/fr/web-quickstart#connect-from-your-terminal) pour connecter votre connexion GitHub CLI à votre compte Claude.

72 72 


74 Publier les résultats sur la demande de tirage74 Publier les résultats sur la demande de tirage

75</h3>75</h3>

76 76 

77Sur Claude Code v2.1.227 ou version ultérieure, lorsque vous examinez une demande de tirage sur `github.com`, vous pouvez faire en sorte que Claude publie les résultats terminés sur la PR en tant que commentaire simple unique depuis votre propre compte GitHub. Le commentaire n'est pas une revue ou une approbation, et il se termine par une note « Généré par Claude Code ». Lorsque vous examinez une branche ou une demande de tirage GitHub Enterprise Server, Claude Code affiche les résultats dans votre session uniquement.77Sur Claude Code v2.1.227 ou version ultérieure, lorsque vous examinez une pull request sur `github.com`, vous pouvez faire en sorte que Claude publie les résultats terminés sur la PR en tant que commentaire simple unique depuis votre propre compte GitHub. Le commentaire n'est pas une revue ou une approbation, et il se termine par une note « Generated by Claude Code ». Lorsque vous examinez une branche, Claude Code affiche les résultats dans votre session uniquement.

78 78 

79Claude Code ne publie jamais sauf si vous le choisissez sur cette exécution, et `--no-post` est la valeur par défaut. La publication est un choix que vous faites pour chaque exécution :79Claude Code ne publie jamais sauf si vous le choisissez sur cette exécution, et `--no-post` est la valeur par défaut. La publication est un choix que vous faites pour chaque exécution :

80 80 


106Claude Code traite votre texte comme une note uniquement lorsqu'il contient plus d'un mot et n'est pas un nom de branche ou une référence de PR. Il lit un seul mot comme un nom de branche ou une référence de PR, donc un nom de branche mal orthographié obtient l'erreur de branche la plus proche de [Examiner par rapport à une base différente](#review-against-a-different-base) au lieu de se lancer avec une note. Si votre texte combine une référence de PR avec d'autres mots, comme `check PR 123 again`, Claude Code ne se lance pas non plus ; il vous demande de relancer avec le numéro de PR seul pour examiner cette PR, ou sans la référence pour examiner votre branche actuelle.106Claude Code traite votre texte comme une note uniquement lorsqu'il contient plus d'un mot et n'est pas un nom de branche ou une référence de PR. Il lit un seul mot comme un nom de branche ou une référence de PR, donc un nom de branche mal orthographié obtient l'erreur de branche la plus proche de [Examiner par rapport à une base différente](#review-against-a-different-base) au lieu de se lancer avec une note. Si votre texte combine une référence de PR avec d'autres mots, comme `check PR 123 again`, Claude Code ne se lance pas non plus ; il vous demande de relancer avec le numéro de PR seul pour examiner cette PR, ou sans la référence pour examiner votre branche actuelle.

107 107 

108<Tip>108<Tip>

109 Si votre référentiel est trop volumineux pour être regroupé, Claude Code vous invite à utiliser le mode PR à la place. Poussez votre branche et ouvrez une PR brouillon, puis exécutez `/code-review ultra <PR-number>`.109 Si votre dépôt est trop volumineux pour être regroupé, Claude Code vous invite à utiliser le mode PR à la place. Pour un dépôt sur `github.com`, poussez votre branche et ouvrez une PR brouillon, puis exécutez `/code-review ultra <PR-number>`.

110</Tip>110</Tip>

111 111 

112<h3 id="diff-limits-and-fallbacks">112<h3 id="diff-limits-and-fallbacks">


173claude ultrareview origin/main173claude ultrareview origin/main

174```174```

175 175 

176Sans arguments, la sous-commande examine la différence entre votre branche actuelle et la branche par défaut, avec le même [repli sur l'ensemble du référentiel](#diff-limits-and-fallbacks) que `/code-review ultra` lorsqu'aucune base de fusion n'existe. Transmettez un numéro de PR pour examiner une demande de fusion, ou une branche de base pour examiner la différence par rapport à celle-ci ; la [gestion de la branche de base](#review-against-a-different-base) correspond à la commande interactive.176Sans arguments, la sous-commande examine le diff entre votre branche actuelle et la branche par défaut, avec la même [solution de repli sur l'ensemble du dépôt](#diff-limits-and-fallbacks) que `/code-review ultra` lorsqu'aucune base de fusion n'existe. Transmettez un numéro de PR pour [examiner une pull request sur `github.com`](#review-a-pull-request), ou une branche de base pour examiner le diff par rapport à celle-ci ; la [gestion de la branche de base](#review-against-a-different-base) correspond à la commande interactive.

177 177 

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

179 179 

vs-code.md +1 −1

Details

596| `attachOpenFile` | `true` | Ajoutez le fichier ouvert dans l'éditeur à vos messages et affichez-le dans la zone de saisie. Lorsqu'il est désactivé, seul votre texte sélectionné est ajouté. Nécessite Claude Code v2.1.271 ou ultérieur |596| `attachOpenFile` | `true` | Ajoutez le fichier ouvert dans l'éditeur à vos messages et affichez-le dans la zone de saisie. Lorsqu'il est désactivé, seul votre texte sélectionné est ajouté. Nécessite Claude Code v2.1.271 ou ultérieur |

597| `useCtrlEnterToSend` | `false` | Utilisez Ctrl/Cmd+Entrée au lieu d'Entrée pour envoyer les invites |597| `useCtrlEnterToSend` | `false` | Utilisez Ctrl/Cmd+Entrée au lieu d'Entrée pour envoyer les invites |

598| `scrollToBottomOnSend` | `true` | Faites défiler la conversation vers le bas lorsque vous envoyez un message. Lorsqu'il est désactivé, la conversation reste où vous l'avez laissée. Nécessite Claude Code v2.1.275 ou ultérieur |598| `scrollToBottomOnSend` | `true` | Faites défiler la conversation vers le bas lorsque vous envoyez un message. Lorsqu'il est désactivé, la conversation reste où vous l'avez laissée. Nécessite Claude Code v2.1.275 ou ultérieur |

599| `showMessageTimestamps` | `false` | Affichez le moment où chaque message a été envoyé. Une ligne de date marque le changement de jour. Nécessite Claude Code v2.1.284 ou ultérieur |599| `showMessageTimestamps` | `true` | Affichez le moment où chaque message a été envoyé. Une ligne de date marque le changement de jour. Nécessite Claude Code v2.1.284 ou ultérieur. Avant la v2.1.290, la valeur par défaut était `false` |

600| `enableNewConversationShortcut` | `false` | Activez Cmd/Ctrl+N pour démarrer une nouvelle conversation |600| `enableNewConversationShortcut` | `false` | Activez Cmd/Ctrl+N pour démarrer une nouvelle conversation |

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

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

workflows.md +27 −1

Details

354 354 

355Le corps est du JavaScript simple avec `await` au niveau supérieur. `agent()` génère un sous-agent, `pipeline()` en exécute un par élément dans une liste, et `parallel()` exécute un ensemble de tâches d'agent en même temps et attend que toutes se terminent.355Le corps est du JavaScript simple avec `await` au niveau supérieur. `agent()` génère un sous-agent, `pipeline()` en exécute un par élément dans une liste, et `parallel()` exécute un ensemble de tâches d'agent en même temps et attend que toutes se terminent.

356 356 

357Un appel `agent()` se résout en `null` si vous l'arrêtez en cours d'exécution ou s'il rencontre une erreur API irrécupérable. `pipeline()` conserve chaque `null` dans le tableau des résultats, c'est pourquoi l'exemple se termine par `.filter(Boolean)` pour supprimer ces entrées.357Un appel `agent()` se résout en `null` si vous l'arrêtez en cours d'exécution ou s'il rencontre une erreur API irrécupérable. `pipeline()` conserve chaque `null` dans le tableau des résultats, c'est pourquoi l'exemple se termine par `.filter(Boolean)` pour supprimer ces entrées, y compris l'emplacement d'[un agent qui s'est bloqué à chaque tentative](#when-an-agent-stalls-and-restarts).

358 358 

359En [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode), le prompt que votre script transmet à `agent()` ne compte pas comme une demande de votre part quand le classificateur examine les actions de ce sous-agent, car Claude Code le marque comme du texte que le script a calculé.359En [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode), le prompt que votre script transmet à `agent()` ne compte pas comme une demande de votre part quand le classificateur examine les actions de ce sous-agent, car Claude Code le marque comme du texte que le script a calculé.

360 360 


463* La limite se réinitialise dans les 24 heures. Une limite hebdomadaire peut se réinitialiser plus loin.463* La limite se réinitialise dans les 24 heures. Une limite hebdomadaire peut se réinitialiser plus loin.

464* L'exécution n'a pas déjà attendu deux fois. Quand elle atteint la limite une troisième fois, l'agent échoue.464* L'exécution n'a pas déjà attendu deux fois. Quand elle atteint la limite une troisième fois, l'agent échoue.

465 465 

466<h3 id="when-an-agent-stalls-and-restarts">

467 Quand un agent se bloque et redémarre

468</h3>

469 

470Un agent dont la sortie cesse d'arriver suffisamment longtemps recommence à partir du même prompt. Dans [`/workflows`](#watch-the-run), son nom reçoit un suffixe `(retry 1)` et son détail affiche `attempt 2 (stalled)`. Le redémarrage est automatique, vous n'avez donc rien à faire.

471 

472La nouvelle tentative démarre sans la transcription de la tentative bloquée. Les fichiers que la tentative bloquée a déjà modifiés restent modifiés, et les tokens qu'elle a consommés restent dans le total de l'exécution. La fenêtre de blocage est la durée pendant laquelle Claude Code attend une sortie d'un agent avant de mettre fin à la tentative. Le temps que l'agent passe à attendre ses propres appels d'outils ou une [réinitialisation de la limite d'utilisation](#when-a-run-hits-your-usage-limit) n'est pas compté dans la fenêtre de blocage.

473 

474Un agent redémarre au maximum cinq fois, en comptant tout redémarrage que vous demandez avec `r`. Si la sixième tentative se bloque également, l'appel `agent()` échoue, et le début de l'erreur en indique la raison :

475 

476* `agent stalled on all 6 attempts` : chaque tentative a passé toute la fenêtre sans sortie. Si le travail de l'agent le maintient silencieux aussi longtemps, allongez la fenêtre

477* `agent lost its reply on all 6 attempts` : le flux de réponse de chaque tentative est devenu silencieux et Claude Code a cessé de l'attendre. Allonger la fenêtre de blocage n'aide pas, car un [watchdog d'inactivité du streaming](/docs/fr/network-config#streaming-idle-watchdogs) a mis fin à la réponse en premier et `CLAUDE_STREAM_IDLE_TIMEOUT_MS` définit le délai d'expiration de ce watchdog

478* `agent abandoned after 6 attempts` : les tentatives se sont terminées de différentes manières, que l'erreur liste dans l'ordre

479 

480Pour donner à un agent plus de temps pour produire une sortie avant la fin de la fenêtre :

481 

482* **Un seul agent** : passez `stallMs` en millisecondes dans son appel `agent()`, par exemple `agent(prompt, { stallMs: 1800000 })` pour 30 minutes

483* **Tous les agents** : définissez [`CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`](/docs/fr/env-vars#variables), qui s'applique également aux sous-agents en dehors des workflows

484 

485La poursuite de l'exécution après l'échec dépend de la façon dont votre script a appelé l'agent :

486 

487* **À l'intérieur de [`parallel()` ou `pipeline()`](#what-the-saved-script-looks-like)** : l'exécution continue avec `null` à la place du résultat de l'agent

488* **Attendu directement** : l'exécution se termine avec l'erreur

489 

490Pour réessayer, demandez à Claude de relancer le workflow. [Reprendre après une pause](#resume-after-a-pause) explique ce qui s'exécute à nouveau.

491 

466<h3 id="cost">492<h3 id="cost">

467 Coût493 Coût

468</h3>494</h3>

worktrees.md +1 −1

Details

104* **Redirections Git** : Claude Code bloque une commande Bash ou Monitor qui redirige git vers l'extraction principale. La redirection peut provenir de `git -C`, `--git-dir`, une variable `GIT_DIR` ou `GIT_WORK_TREE`, ou un `cd` dans l'extraction principale avant d'exécuter git.104* **Redirections Git** : Claude Code bloque une commande Bash ou Monitor qui redirige git vers l'extraction principale. La redirection peut provenir de `git -C`, `--git-dir`, une variable `GIT_DIR` ou `GIT_WORK_TREE`, ou un `cd` dans l'extraction principale avant d'exécuter git.

105* **Forme de la commande** : Claude Code bloque une commande Bash ou Monitor quand il ne peut pas vérifier à partir du texte de la commande que tout git que la commande exécute reste à l'intérieur du worktree. Cela se produit, par exemple, quand le nom de la commande est calculé à l'exécution, quand la syntaxe ne peut pas être analysée, ou quand une expansion telle que `${!name}` ou `${ command; }` pourrait exécuter une commande que le texte ne précise pas. Claude Code indique à Claude comment réécrire la commande refusée, par exemple en la divisant en commandes simples et séparées. Vous ne pouvez pas désactiver cette vérification.105* **Forme de la commande** : Claude Code bloque une commande Bash ou Monitor quand il ne peut pas vérifier à partir du texte de la commande que tout git que la commande exécute reste à l'intérieur du worktree. Cela se produit, par exemple, quand le nom de la commande est calculé à l'exécution, quand la syntaxe ne peut pas être analysée, ou quand une expansion telle que `${!name}` ou `${ command; }` pourrait exécuter une commande que le texte ne précise pas. Claude Code indique à Claude comment réécrire la commande refusée, par exemple en la divisant en commandes simples et séparées. Vous ne pouvez pas désactiver cette vérification.

106 106 

107Ces vérifications lisent le chemin ciblé par une modification, le répertoire dans lequel une commande s'exécute et le texte de la commande. Aucune d'elles ne suit les fichiers qu'une commande shell écrit, de sorte qu'une commande qui écrit dans l'extraction principale sans y exécuter git, comme `cp` ou une redirection shell, n'est pas refusée par celles-ci. Claude Code traite cette commande comme n'importe quelle autre commande shell : le fait qu'elle s'exécute ou qu'elle vous demande une permission dépend donc de votre [mode de permission](/docs/fr/permission-modes) et de vos règles.107Ces vérifications lisent le chemin ciblé par une modification, le répertoire dans lequel une commande s'exécute et le texte de la commande. Aucune d'elles ne suit les fichiers qu'une commande shell écrit, de sorte qu'une commande qui écrit dans l'extraction principale sans y exécuter git, comme `cp` ou une redirection shell, n'est pas refusée par celles-ci. Claude Code traite cette commande comme n'importe quelle autre commande shell, selon vos paramètres de [permissions](/docs/fr/permissions) et de [sandboxing](/docs/fr/sandboxing).

108 108 

109Les vérifications s'appliquent au dépôt à partir duquel vous avez lancé Claude Code. Elles couvrent également l'extraction principale à laquelle un worktree lié est lié. Pour les commandes PowerShell, Claude Code applique uniquement la vérification du répertoire de travail.109Les vérifications s'appliquent au dépôt à partir duquel vous avez lancé Claude Code. Elles couvrent également l'extraction principale à laquelle un worktree lié est lié. Pour les commandes PowerShell, Claude Code applique uniquement la vérification du répertoire de travail.

110 110