SpyBara
Go Premium

Documentation 2026-10-26 22:57 UTC to 2026-10-27 22:59 UTC

70 files changed +1,186 −852. View all changes and history on the product overview
2026
Fri 30 23:01 Thu 29 23:57 Wed 28 23:57 Tue 27 22:59 Mon 26 22:57 Sun 25 23:58 Sat 24 22:59 Fri 23 22:59 Thu 22 22:58 Wed 21 23:02 Tue 20 23:00 Mon 19 23:58 Sat 17 23:57 Fri 16 22:59 Thu 15 23:58 Wed 14 22:58 Tue 13 23:57 Sun 11 23:57 Sat 10 23:01 Fri 9 23:02 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

79| `Permission Required:` | Une demande de permission en attente de votre réponse |79| `Permission Required:` | Une demande de permission en attente de votre réponse |

80| `Cost:` | Le résumé du coût de la session lorsque Claude Code se termine, si votre compte [affiche les coûts](https://code.claude.com/docs/fr/costs.md) |80| `Cost:` | Le résumé du coût de la session lorsque Claude Code se termine, si votre compte [affiche les coûts](https://code.claude.com/docs/fr/costs.md) |

81 81 

82Claude Code garde le curseur du terminal sur le curseur d'entrée, afin que la commande de lecture de la ligne actuelle de votre lecteur d'écran lise l'invite que vous modifiez.82Claude Code garde le curseur du terminal sur le curseur d'entrée, afin que la commande de lecture de la ligne actuelle de votre lecteur d'écran lise l'invite que vous modifiez. Au fur et à mesure que vous tapez à la fin de la ligne d'entrée, ou appuyez sur `Backspace` à cet endroit, Claude Code écrit uniquement les caractères qui changent. Votre lecteur d'écran ne répète que ces caractères.

83 

84Au fur et à mesure que vous tapez à la fin de la ligne d'entrée, ou appuyez sur `Backspace` à cet endroit, Claude Code écrit uniquement les caractères qui changent. Votre lecteur d'écran ne répète que ces caractères.

85 83 

86Lorsque vous supprimez un mot ou une ligne avec l'un des [raccourcis d'édition de texte](https://code.claude.com/docs/fr/interactive-mode.md#text-editing), Claude Code annonce le texte supprimé :84Lorsque vous supprimez un mot ou une ligne avec l'un des [raccourcis d'édition de texte](https://code.claude.com/docs/fr/interactive-mode.md#text-editing), Claude Code annonce le texte supprimé :

87 85 

admin-setup.md +1 −0

Details

191* [Paramètres gérés par le serveur](https://code.claude.com/docs/fr/server-managed-settings.md) : livrer la politique gérée à partir de la console d'administration Claude191* [Paramètres gérés par le serveur](https://code.claude.com/docs/fr/server-managed-settings.md) : livrer la politique gérée à partir de la console d'administration Claude

192* [Tous les paramètres](https://code.claude.com/docs/fr/settings-reference.md) : chaque clé de paramètre, emplacement et exemple192* [Tous les paramètres](https://code.claude.com/docs/fr/settings-reference.md) : chaque clé de paramètre, emplacement et exemple

193* [Quelle valeur Claude Code utilise](https://code.claude.com/docs/fr/settings.md#which-value-claude-code-uses) : les règles de précédence entre les paramètres gérés, de projet, locaux et utilisateur193* [Quelle valeur Claude Code utilise](https://code.claude.com/docs/fr/settings.md#which-value-claude-code-uses) : les règles de précédence entre les paramètres gérés, de projet, locaux et utilisateur

194* [Gérer les plugins pour votre organisation](https://code.claude.com/docs/fr/plugins/org.md) : installer des plugins partagés sur chaque machine via les paramètres gérés

194* [Monorepos et grands référentiels](https://code.claude.com/docs/fr/large-codebases.md) : modèles de configuration par répertoire pour les organisations déployant dans un monorepo195* [Monorepos et grands référentiels](https://code.claude.com/docs/fr/large-codebases.md) : modèles de configuration par répertoire pour les organisations déployant dans un monorepo

195* [Amazon Bedrock](https://code.claude.com/docs/fr/amazon-bedrock.md), [Google Cloud's Agent Platform](https://code.claude.com/docs/fr/google-vertex-ai.md), [Microsoft Foundry](https://code.claude.com/docs/fr/microsoft-foundry.md) : déploiement spécifique au fournisseur196* [Amazon Bedrock](https://code.claude.com/docs/fr/amazon-bedrock.md), [Google Cloud's Agent Platform](https://code.claude.com/docs/fr/google-vertex-ai.md), [Microsoft Foundry](https://code.claude.com/docs/fr/microsoft-foundry.md) : déploiement spécifique au fournisseur

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

Details

41 41 

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

43 43 

44Vous pouvez limiter la boucle avec `max_turns` / `maxTurns`, qui compte uniquement les tours d'utilisation d'outils. Par exemple, `max_turns=2` dans la boucle ci-dessus aurait arrêté avant l'étape d'édition. Vous pouvez également utiliser `max_budget_usd` / `maxBudgetUsd` pour limiter les tours en fonction d'un seuil de dépense.44Vous pouvez limiter la boucle avec `max_turns` / `maxTurns`. Comptez chaque tour avec des appels d'outils, plus un pour la réponse finale textuelle uniquement. Sans ce tour supplémentaire, l'exécution se termine par un `ResultMessage` de sous-type `error_max_turns` et sans réponse finale. Par exemple, `max_turns=2` dans la boucle ci-dessus aurait arrêté avant l'étape d'édition. Vous pouvez également utiliser `max_budget_usd` / `maxBudgetUsd` pour limiter les tours en fonction d'un seuil de dépense.

45 45 

46Sans limites, la boucle s'exécute jusqu'à ce que Claude termine de lui-même, ce qui est correct pour les tâches bien délimitées mais peut s'exécuter longtemps sur des prompts ouverts (« améliorez cette base de code »). Définir un budget est une bonne valeur par défaut pour les agents de production. Voir [Tours et budget](#turns-and-budget) ci-dessous pour la référence des options.46Sans limites, la boucle s'exécute jusqu'à ce que Claude termine de lui-même, ce qui est correct pour les tâches bien délimitées mais peut s'exécuter longtemps sur des prompts ouverts (« améliorez cette base de code »). Définir un budget est une bonne valeur par défaut pour les agents de production. Voir [Tours et budget](#turns-and-budget) ci-dessous pour la référence des options.

47 47 


191 191 

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

193| :- | :- | :- |193| :- | :- | :- |

194| Tours max (`max_turns` / `maxTurns`) | Aller-retours maximum d'utilisation d'outils | Pas de limite |194| Tours max (`max_turns` / `maxTurns`) | Nombre maximal de [tours](#turns-and-messages) | Pas de limite |

195| Budget max (`max_budget_usd` / `maxBudgetUsd`) | Dépense estimée à partir de laquelle la boucle s'arrête | Pas de limite |195| Budget max (`max_budget_usd` / `maxBudgetUsd`) | Dépense estimée à partir de laquelle la boucle s'arrête | Pas de limite |

196 196 

197Lorsque 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`](https://code.claude.com/docs/fr/agent-sdk/python#claudeagentoptions) / [`Options`](https://code.claude.com/docs/fr/agent-sdk/typescript#options) pour la syntaxe.197Lorsque 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`](https://code.claude.com/docs/fr/agent-sdk/python#claudeagentoptions) / [`Options`](https://code.claude.com/docs/fr/agent-sdk/typescript#options) pour la syntaxe.

Details

161 161 

162Les deux langues ont les mêmes setters :162Les deux langues ont les mêmes setters :

163 163 

164* **`setModel()` / `set_model()`** : bascule le modèle. Appelez-le sans modèle pour basculer vers [le modèle par défaut de Claude Code](https://code.claude.com/docs/fr/model-config.md#default-model-setting) plutôt que le `model` que vous avez transmis dans les options.164* **`setModel()` / `set_model()`** : bascule le modèle. Appelez-le sans modèle pour basculer vers [le modèle par défaut de Claude Code](https://code.claude.com/docs/fr/model-config.md#default-model-setting) plutôt que le `model` que vous avez transmis dans les options. Si la session est en mode auto et que vous basculez vers un modèle que le mode auto ne prend pas en charge, la session passe en mode `default`. Pour revenir au mode auto, consultez [Mode auto (`auto`)](https://code.claude.com/docs/fr/agent-sdk/permissions#auto-mode-auto).

165* **`setPermissionMode()` / `set_permission_mode()`** : bascule le mode de permission165* **`setPermissionMode()` / `set_permission_mode()`** : bascule le mode de permission

166 166 

167TypeScript a également `applyFlagSettings()` et `updateSettings()` :167TypeScript a également `applyFlagSettings()` et `updateSettings()` :

Details

192 192 

193Le conteneur a besoin du runtime de langage de votre SDK :193Le conteneur a besoin du runtime de langage de votre SDK :

194 194 

195* Python 3.10+ pour le SDK Python, ou Node.js 18+ pour le SDK TypeScript195* Python 3.10+ pour le SDK Python, ou Node.js 18.14+ pour le SDK TypeScript

196* Les deux SDK TypeScript et Python regroupent un binaire Claude Code natif pour la plupart des installations, et le CLI généré n'a besoin d'aucune installation Node.js séparée. Consultez la [note d'installation du démarrage rapide](https://code.claude.com/docs/fr/agent-sdk/quickstart.md) pour les installations qui nécessitent une installation Claude Code native séparée.196* Les deux SDK TypeScript et Python regroupent un binaire Claude Code natif pour la plupart des installations, et le CLI généré n'a besoin d'aucune installation Node.js séparée. Consultez la [note d'installation du démarrage rapide](https://code.claude.com/docs/fr/agent-sdk/quickstart.md) pour les installations qui nécessitent une installation Claude Code native séparée.

197 197 

198Le binaire regroupé est épinglé à la version du package SDK, donc la mise à jour du SDK est la façon de mettre à jour le CLI. Le SDK suit semver : prenez les versions de correctif en continu et consultez le changelog [TypeScript](https://github.com/anthropics/claude-agent-sdk-typescript/blob/main/CHANGELOG.md) ou [Python](https://github.com/anthropics/claude-agent-sdk-python/blob/main/CHANGELOG.md) avant de prendre une version mineure.198Le binaire regroupé est épinglé à la version du package SDK, donc la mise à jour du SDK est la façon de mettre à jour le CLI. Le SDK suit semver : prenez les versions de correctif en continu et consultez le changelog [TypeScript](https://github.com/anthropics/claude-agent-sdk-typescript/blob/main/CHANGELOG.md) ou [Python](https://github.com/anthropics/claude-agent-sdk-python/blob/main/CHANGELOG.md) avant de prendre une version mineure.


335 335 

336| Limitation | Que faire |336| Limitation | Que faire |

337| - | - |337| - | - |

338| Pas de délai d'expiration de session au niveau supérieur | Une session n'expire pas d'elle-même. Définissez `maxTurns` en TypeScript ou `max_turns` en Python pour limiter le nombre de cycles d'utilisation d'outils que l'agent effectue avant de s'arrêter. |338| Pas de délai d'expiration de session au niveau supérieur | Une session n'expire pas d'elle-même. Définissez `maxTurns` en TypeScript ou `max_turns` en Python pour limiter le nombre de [tours](https://code.claude.com/docs/fr/agent-sdk/agent-loop.md#turns-and-messages) que l'agent effectue avant de s'arrêter. |

339| Croissance de la mémoire au cours de longues sessions | Limitez la longueur de la session ou recyclez les sous-processus périodiquement. Voir [Mise à l'échelle et concurrence](#scaling-and-concurrency). |339| Croissance de la mémoire au cours de longues sessions | Limitez la longueur de la session ou recyclez les sous-processus périodiquement. Voir [Mise à l'échelle et concurrence](#scaling-and-concurrency). |

340| Les grands déploiements parallèles de sous-agents peuvent atteindre les limites de débit | Divisez le travail en lots plus petits plutôt que d'émettre un seul envoi large. |340| Les grands déploiements parallèles de sous-agents peuvent atteindre les limites de débit | Divisez le travail en lots plus petits plutôt que d'émettre un seul envoi large. |

341| Pas de délai limite d'horloge murale par sous-agent | Limitez chaque [sous-agent](https://code.claude.com/docs/fr/agent-sdk/subagents.md) avec `maxTurns` dans sa `AgentDefinition`. `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` définit un chien de garde de stagnation qui se déclenche lorsqu'un sous-agent cesse de produire une sortie ; ce n'est pas un délai d'exécution total. |341| Pas de délai limite d'horloge murale par sous-agent | Limitez chaque [sous-agent](https://code.claude.com/docs/fr/agent-sdk/subagents.md) avec `maxTurns` dans sa `AgentDefinition`. `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` définit un chien de garde de stagnation qui se déclenche lorsqu'un sous-agent cesse de produire une sortie ; ce n'est pas un délai d'exécution total. |

Details

425 425 

426Définissez `includeGitInstructions` sur `false` pour exclure les instructions intégrées de commit et de pull request, qui font partie de la description de l'outil Bash et atteignent Claude même avec un `systemPrompt` personnalisé. En revanche, avec la valeur par défaut minimale, un `systemPrompt` personnalisé ou un agent de thread principal personnalisé qui possède son propre prompt, la session démarre sans l'instantané du statut git.426Définissez `includeGitInstructions` sur `false` pour exclure les instructions intégrées de commit et de pull request, qui font partie de la description de l'outil Bash et atteignent Claude même avec un `systemPrompt` personnalisé. En revanche, avec la valeur par défaut minimale, un `systemPrompt` personnalisé ou un agent de thread principal personnalisé qui possède son propre prompt, la session démarre sans l'instantané du statut git.

427 427 

428Si vous définissez `CLAUDE_CODE_DISABLE_ATTACHMENTS`, Claude Code envoie également les mentions de fichier `@` en tant que texte brut au lieu de les développer dans le contenu du fichier. La liste des sous-agents disponibles et les notifications de tâches en arrière-plan arrivent toujours. Pour empêcher uniquement le développement des mentions de fichier `@`, définissez plutôt [`CLAUDE_CODE_DISABLE_FILE_MENTIONS=1`](https://code.claude.com/docs/fr/env-vars#variables), sur Claude Code v2.1.299 ou ultérieur. Claude reçoit alors les chemins mentionnés ainsi qu'une note l'invitant à les lire avec ses outils de fichiers.428* Si vous définissez `CLAUDE_CODE_DISABLE_ATTACHMENTS`, Claude Code envoie également les mentions de fichier `@` en tant que texte brut au lieu de les développer dans le contenu du fichier. La liste des sous-agents disponibles et les notifications de tâches en arrière-plan arrivent toujours.

429* Pour empêcher uniquement le développement des mentions de fichier `@`, définissez plutôt [`CLAUDE_CODE_DISABLE_FILE_MENTIONS=1`](https://code.claude.com/docs/fr/env-vars#variables), sur Claude Code v2.1.299 ou ultérieur. Claude reçoit alors les chemins mentionnés ainsi qu'une note l'invitant à les lire avec ses outils de fichiers, et vos hooks `PreToolUse` voient chaque lecture de fichier comme un appel d'outil.

429 430 

430L'exemple suivant concerne un agent qui porte ses propres règles de commit dans `append`. Il définit les deux clés `attribution` sur des chaînes vides pour supprimer la remorque et le pied de page, et désactive `includeGitInstructions` afin que les propres instructions de flux de travail de commit de Claude Code ne rivalisent pas avec les vôtres :431L'exemple suivant concerne un agent qui porte ses propres règles de commit dans `append`. Il définit les deux clés `attribution` sur des chaînes vides pour supprimer la remorque et le pied de page, et désactive `includeGitInstructions` afin que les propres instructions de flux de travail de commit de Claude Code ne rivalisent pas avec les vôtres :

431 432 

Details

43Appliquez le [mode de permission](#permission-modes) actif :43Appliquez le [mode de permission](#permission-modes) actif :

44 44 

45* En mode `bypassPermissions`, Claude Code approuve tout ce qui atteint cette étape sauf les [suppressions de chemins critiques](https://code.claude.com/docs/fr/permission-modes.md#critical-paths) reconnues et les commandes Bash signalées [`Dangerous rm operation not ruled out`](https://code.claude.com/docs/fr/permission-modes#dangerous-rm-operation-not-ruled-out), qui passent à la place.45* En mode `bypassPermissions`, Claude Code approuve tout ce qui atteint cette étape sauf les [suppressions de chemins critiques](https://code.claude.com/docs/fr/permission-modes.md#critical-paths) reconnues et les commandes Bash signalées [`Dangerous rm operation not ruled out`](https://code.claude.com/docs/fr/permission-modes#dangerous-rm-operation-not-ruled-out), qui passent à la place.

46 * Pour exécuter ces suppressions sans demande de permission, consultez [Désactiver la demande de permission pour les suppressions de chemins critiques](https://code.claude.com/docs/fr/permission-modes.md#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode).

46* En mode `acceptEdits`, Claude Code approuve les opérations de fichier listées sous [Mode Accept edits](#accept-edits-mode-acceptedits).47* En mode `acceptEdits`, Claude Code approuve les opérations de fichier listées sous [Mode Accept edits](#accept-edits-mode-acceptedits).

47* En mode `plan`, Claude Code envoie les outils de modification de fichier à votre callback `canUseTool` indépendamment des règles allow.48* En mode `plan`, Claude Code envoie les outils de modification de fichier à votre callback `canUseTool` indépendamment des règles allow.

48* Dans les autres modes, la demande passe.49* Dans les autres modes, la demande passe.


305> `allowed_tools` ne contraint pas ce mode. Chaque outil est approuvé, pas seulement ceux que vous avez énumérés. Ces contrôles s'appliquent toujours :306> `allowed_tools` ne contraint pas ce mode. Chaque outil est approuvé, pas seulement ceux que vous avez énumérés. Ces contrôles s'appliquent toujours :

306>307>

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

308> * Les outils connecteur [que votre organisation a définis sur `ask`](https://code.claude.com/docs/fr/mcp#organization-controls-on-connector-tools), les outils qui nécessitent une interaction utilisateur et les [suppressions de chemins critiques](https://code.claude.com/docs/fr/permission-modes.md#critical-paths) reconnues reviennent toujours à votre rappel `canUseTool`. La vérification qui reconnaît ces suppressions [peut manquer certaines commandes](https://code.claude.com/docs/fr/permission-modes.md#critical-paths). En dehors d'une [session cloud](https://code.claude.com/docs/fr/claude-code-on-the-web.md), les appels aux outils personnalisés que votre application [marque `always_ask`](https://code.claude.com/docs/fr/agent-sdk/custom-tools#require-approval-for-specific-tools) reviennent également au rappel.309> * Les outils connecteur [que votre organisation a définis sur `ask`](https://code.claude.com/docs/fr/mcp#organization-controls-on-connector-tools), les outils qui nécessitent une interaction utilisateur et les [suppressions de chemins critiques](https://code.claude.com/docs/fr/permission-modes.md#critical-paths) reconnues reviennent toujours à votre rappel `canUseTool`. La vérification qui reconnaît ces suppressions [peut manquer certaines commandes](https://code.claude.com/docs/fr/permission-modes.md#critical-paths), et vous pouvez [désactiver la demande de permission pour la suppression de chemins critiques](https://code.claude.com/docs/fr/permission-modes.md#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode). En dehors d'une [session cloud](https://code.claude.com/docs/fr/claude-code-on-the-web.md), les appels aux outils personnalisés que votre application [marque `always_ask`](https://code.claude.com/docs/fr/agent-sdk/custom-tools#require-approval-for-specific-tools) reviennent également au rappel.

309> * Les [protections de messagerie inter-sessions](https://code.claude.com/docs/fr/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) s'appliquent toujours.310> * Les [protections de messagerie inter-sessions](https://code.claude.com/docs/fr/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) s'appliquent toujours.

310 311 

311#### Mode de planification (`plan`)312#### Mode de planification (`plan`)

Details

880| `continue_conversation` | `bool` | `False` | Continuer la conversation la plus récente |880| `continue_conversation` | `bool` | `False` | Continuer la conversation la plus récente |

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

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

883| `max_turns` | `int \| None` | `None` | Nombre maximum de tours d'agent (allers-retours d'utilisation d'outils) |883| `max_turns` | `int \| None` | `None` | Nombre maximum de [tours](https://code.claude.com/docs/fr/agent-sdk/agent-loop.md#turns-and-messages) d'agent |

884| `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](https://code.claude.com/docs/fr/agent-sdk/agent-loop.md#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](https://code.claude.com/docs/fr/agent-sdk/cost-tracking.md) |884| `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](https://code.claude.com/docs/fr/agent-sdk/agent-loop.md#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](https://code.claude.com/docs/fr/agent-sdk/cost-tracking.md) |

885| `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](https://code.claude.com/docs/fr/permissions.md#bash-rule-limits). Voir [Permissions](https://code.claude.com/docs/fr/agent-sdk/permissions.md#allow-and-deny-rules) |885| `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](https://code.claude.com/docs/fr/permissions.md#bash-rule-limits). Voir [Permissions](https://code.claude.com/docs/fr/agent-sdk/permissions.md#allow-and-deny-rules) |

886| `enable_file_checkpointing` | `bool` | `False` | Activer le suivi des modifications de fichiers pour le rembobinage. Voir [Checkpointing de fichiers](https://code.claude.com/docs/fr/agent-sdk/file-checkpointing.md) |886| `enable_file_checkpointing` | `bool` | `False` | Activer le suivi des modifications de fichiers pour le rembobinage. Voir [Checkpointing de fichiers](https://code.claude.com/docs/fr/agent-sdk/file-checkpointing.md) |


2568 2568 

2569### Agent2569### Agent

2570 2570 

2571**Nom de l'outil :** `Agent`. Le nom précédent `Task` est toujours accepté comme alias, et la liste `tools` dans le [`SystemMessage`](#systemmessage) d'initialisation rapporte cet outil comme `Task` pour la compatibilité rétroactive.2571**Nom de l'outil :** `Agent`. Le nom précédent `Task` est toujours accepté comme alias lorsque cet outil est disponible pour la session.

2572 

2573La liste `tools` dans le [`SystemMessage`](#systemmessage) d'initialisation rapporte cet outil comme `Task` pour la compatibilité rétroactive.

2572 2574 

2573**Entrée :**2575**Entrée :**

2574 2576 


3553 3555 

3554### `SandboxSettings`3556### `SandboxSettings`

3555 3557 

3556Configuration pour le comportement du sandbox. Utilisez ceci pour activer le sandboxing des commandes et configurer les restrictions réseau programmatiquement.3558Configuration du comportement du sandbox. Utilisez-la pour activer le sandboxing des commandes et configurer les restrictions réseau par programmation.

3557 3559 

3558```python theme={null}3560```python theme={null}

3559class SandboxSettings(TypedDict, total=False):3561class SandboxSettings(TypedDict, total=False):


3566 enableWeakerNestedSandbox: bool3568 enableWeakerNestedSandbox: bool

3567```3569```

3568 3570 

3569| Propriété | Type | Par défaut | Description |3571| Propriété | Type | Valeur par défaut | Description |

3570| :- | :- | :- | :- |3572| :- | :- | :- | :- |

3571| `enabled` | `bool` | `False` | Activez le mode sandbox pour l'exécution des commandes |3573| `enabled` | `bool` | `False` | Activer le mode sandbox pour l'exécution des commandes |

3572| `autoAllowBashIfSandboxed` | `bool` | `True` | Approuvez automatiquement les commandes bash quand le sandbox est activé |3574| `autoAllowBashIfSandboxed` | `bool` | `True` | Approuver automatiquement les commandes bash lorsque le sandbox est activé |

3573| `excludedCommands` | `list[str]` | `[]` | Commandes qui contournent les restrictions du sandbox, telles que `["docker *"]`. Celles-ci s'exécutent sans sandbox automatiquement sans implication du modèle ; [`sandbox.excludedCommands`](https://code.claude.com/docs/fr/settings-reference#sandbox-excludedcommands) couvre quand une entrée s'applique |3575| `excludedCommands` | `list[str]` | `[]` | Commandes qui contournent les restrictions du sandbox, comme `["docker *"]`. Elles s'exécutent automatiquement hors du sandbox sans intervention du modèle ; [`sandbox.excludedCommands`](https://code.claude.com/docs/fr/settings-reference#sandbox-excludedcommands) précise quand une entrée s'applique |

3574| `allowUnsandboxedCommands` | `bool` | `True` | Permettez au modèle de demander l'exécution de commandes en dehors du sandbox. Quand `True`, le modèle peut définir `dangerouslyDisableSandbox` dans l'entrée d'outil, qui revient au [système de permissions](#permissions-fallback-for-unsandboxed-commands) |3576| `allowUnsandboxedCommands` | `bool` | `True` | Permettre au modèle de demander l'exécution de commandes hors du sandbox. Lorsque la valeur est `True`, le modèle peut définir `dangerouslyDisableSandbox` dans l'entrée de l'outil, ce qui bascule sur le [système de permissions](#permissions-fallback-for-unsandboxed-commands) |

3575| `network` | [`SandboxNetworkConfig`](#sandboxnetworkconfig) | `None` | Configuration de sandbox spécifique au réseau |3577| `network` | [`SandboxNetworkConfig`](#sandboxnetworkconfig) | `None` | Configuration du sandbox spécifique au réseau |

3576| `ignoreViolations` | [`SandboxIgnoreViolations`](#sandboxignoreviolations) | `None` | Configurez quelles violations de sandbox ignorer |3578| `ignoreViolations` | [`SandboxIgnoreViolations`](#sandboxignoreviolations) | `None` | Configurer les violations du sandbox à ignorer |

3577| `enableWeakerNestedSandbox` | `bool` | `False` | Activez un sandbox imbriqué plus faible pour la compatibilité |3579| `enableWeakerNestedSandbox` | `bool` | `False` | Activer un sandbox imbriqué plus faible pour des raisons de compatibilité |

3578 3580 

3579> [!NOTE]3581> [!NOTE]

3580>3582>

3581> Le sandbox dépend du support de la plateforme et, sur Linux, d'outils comme `bubblewrap` et `socat`. Par défaut, quand `enabled` est `True` mais que le sandbox ne peut pas démarrer, les commandes s'exécutent sans sandbox avec un avertissement sur stderr. Ce comportement par défaut diffère du SDK TypeScript, où `failIfUnavailable` est par défaut `true`.3583> Le sandbox dépend de la prise en charge de la plateforme et, sous Linux, d'outils comme `bubblewrap` et `socat`. Par défaut, lorsque `enabled` vaut `True` mais que le sandbox ne peut pas démarrer, les commandes s'exécutent hors du sandbox avec un avertissement sur stderr. Ce comportement par défaut diffère du SDK TypeScript, où `failIfUnavailable` vaut `true` par défaut.

3582>3584>

3583> Définissez `"failIfUnavailable": True` dans vos paramètres de sandbox pour arrêter à la place. Le SDK transmet `failIfUnavailable` à Claude Code avec les champs déclarés de `SandboxSettings`. `query()` rapporte alors un `ResultMessage` avec `subtype="error_during_execution"` et la raison dans `errors`. Comme il s'agit d'un appel `query()` unique, le SDK lève une exception après avoir produit ce résultat d'erreur, donc enveloppez la boucle dans un bloc try pour continuer au-delà. Voir [Gérer le résultat](https://code.claude.com/docs/fr/agent-sdk/agent-loop.md#handle-the-result) pour le contrat d'erreur.3585> Définissez `"failIfUnavailable": True` dans vos paramètres de sandbox pour arrêter l'exécution à la place. Le SDK transmet `failIfUnavailable` à Claude Code avec les champs déclarés de `SandboxSettings`. `query()` renvoie alors un `ResultMessage` avec `subtype="error_during_execution"` et la raison dans `errors`. Comme il s'agit d'un appel `query()` unique, le SDK lève une exception après avoir produit ce résultat d'erreur ; encapsulez donc la boucle dans un bloc try pour poursuivre au-delà. Consultez [Gérer le résultat](https://code.claude.com/docs/fr/agent-sdk/agent-loop.md#handle-the-result) pour le contrat d'erreur.

3584 3586 

3585Pour empêcher les commandes en sandbox d'écrire dans un fichier, indiquez son chemin absolu sous [`denyWrite`](https://code.claude.com/docs/fr/settings-reference#sandbox-filesystem-denywrite) dans vos paramètres de sandbox, par exemple `"filesystem": {"denyWrite": ["/home/user/project/.env"]}`. Le SDK transmet `filesystem` à Claude Code avec les champs déclarés de `SandboxSettings`. Une fois le sandbox démarré, il bloque les écritures vers chaque chemin absolu indiqué.3587Pour empêcher les commandes exécutées dans le sandbox d'écrire dans un fichier, indiquez son chemin absolu sous [`denyWrite`](https://code.claude.com/docs/fr/settings-reference#sandbox-filesystem-denywrite) dans vos paramètres de sandbox, par exemple `"filesystem": {"denyWrite": ["/home/user/project/.env"]}`. Le SDK transmet `filesystem` à Claude Code avec les champs déclarés de `SandboxSettings`. Une fois le sandbox démarré, il bloque les écritures vers chaque chemin absolu indiqué.

3586 3588 

3587#### Exemple d'utilisation3589#### Exemple d'utilisation

3588 3590 


3617 3619 

3618> [!WARNING]3620> [!WARNING]

3619>3621>

3620> **Sécurité des sockets Unix** : L'option `allowUnixSockets` peut accorder l'accès à des services système qui s'étendent en dehors du sandbox. Par exemple, permettre `/var/run/docker.sock` accorde effectivement un accès complet au système hôte via l'API Docker, contournant l'isolation du sandbox. Autorisez uniquement les sockets Unix strictement nécessaires et comprenez les implications de sécurité de chacun.3622> **Sécurité des sockets Unix** : l'option `allowUnixSockets` peut donner accès à des services système qui s'étendent hors du sandbox. Par exemple, autoriser `/var/run/docker.sock` accorde de fait un accès complet au système hôte via l'API Docker, en contournant l'isolation du sandbox. N'autorisez que les sockets Unix strictement nécessaires et comprenez les implications de sécurité de chacun.

3621 3623 

3622### `SandboxNetworkConfig`3624### `SandboxNetworkConfig`

3623 3625 

3624Configuration spécifique au réseau pour le mode sandbox. Ces paramètres s'appliquent aux commandes Bash en sandbox quand `enabled` est `True` dans le parent [`SandboxSettings`](#sandboxsettings). Ils ne restreignent pas l'outil WebFetch, qui utilise à la place des [règles de permission](https://code.claude.com/docs/fr/permissions.md#webfetch).3626Configuration spécifique au réseau pour le mode sandbox. Ces paramètres s'appliquent aux commandes Bash exécutées dans le sandbox lorsque `enabled` vaut `True` dans le [`SandboxSettings`](#sandboxsettings) parent. Ils ne restreignent pas l'outil WebFetch, qui utilise plutôt des [règles de permission](https://code.claude.com/docs/fr/permissions.md#webfetch).

3625 3627 

3626```python theme={null}3628```python theme={null}

3627class SandboxNetworkConfig(TypedDict, total=False):3629class SandboxNetworkConfig(TypedDict, total=False):


3636 socksProxyPort: int3638 socksProxyPort: int

3637```3639```

3638 3640 

3639| Propriété | Type | Par défaut | Description |3641| Propriété | Type | Valeur par défaut | Description |

3640| :- | :- | :- | :- |3642| :- | :- | :- | :- |

3641| `allowedDomains` | `list[str]` | `[]` | Noms de domaine auxquels les processus en sandbox peuvent accéder |3643| `allowedDomains` | `list[str]` | `[]` | Noms de domaine auxquels les processus du sandbox peuvent accéder |

3642| `deniedDomains` | `list[str]` | `[]` | Noms de domaine auxquels les processus en sandbox ne peuvent pas accéder. Prend la priorité sur `allowedDomains` |3644| `deniedDomains` | `list[str]` | `[]` | Noms de domaine auxquels les processus du sandbox ne peuvent pas accéder. A priorité sur `allowedDomains` |

3643| `allowManagedDomainsOnly` | `bool` | `False` | Paramètres gérés uniquement : quand défini dans les paramètres gérés, ignorez `allowedDomains` et les règles d'autorisation `WebFetch(domain:...)` des sources de paramètres non gérées. N'a aucun effet quand défini via les options SDK |3645| `allowManagedDomainsOnly` | `bool` | `False` | Paramètres gérés uniquement : lorsqu'il est défini dans les paramètres gérés, ignore `allowedDomains` et les règles d'autorisation `WebFetch(domain:...)` provenant de sources de paramètres non gérées. Sans effet lorsqu'il est défini via les options du SDK |

3644| `allowUnixSockets` | `list[str]` | `[]` | Chemins de socket Unix auxquels les processus peuvent accéder, tels que le socket Docker. Ignoré sur Linux |3646| `allowUnixSockets` | `list[str]` | `[]` | macOS uniquement : chemins de sockets Unix auxquels les processus peuvent accéder, comme le socket Docker. Ignoré sous Linux |

3645| `allowAllUnixSockets` | `bool` | `False` | Permettez l'accès à tous les sockets Unix |3647| `allowAllUnixSockets` | `bool` | `False` | Autoriser l'accès à tous les sockets Unix et, sous Linux, aux sockets de VM (`AF_VSOCK`) |

3646| `allowLocalBinding` | `bool` | `False` | Permettez aux processus de se lier aux ports locaux (par exemple, pour les serveurs de développement) |3648| `allowLocalBinding` | `bool` | `False` | Autoriser les processus à se lier à des ports locaux (par exemple, pour des serveurs de développement) |

3647| `allowMachLookup` | `list[str]` | `[]` | macOS uniquement : noms de services XPC/Mach à autoriser. Supporte un caractère générique à la fin |3649| `allowMachLookup` | `list[str]` | `[]` | macOS uniquement : noms de services XPC/Mach à autoriser. Prend en charge un caractère générique final |

3648| `httpProxyPort` | `int` | `None` | Port du proxy HTTP pour les requêtes réseau |3650| `httpProxyPort` | `int` | `None` | Port du proxy HTTP pour les requêtes réseau |

3649| `socksProxyPort` | `int` | `None` | Port du proxy SOCKS pour les requêtes réseau |3651| `socksProxyPort` | `int` | `None` | Port du proxy SOCKS pour les requêtes réseau |

3650 3652 

3651> [!NOTE]3653> [!NOTE]

3652>3654>

3653> Le proxy sandbox intégré applique la liste blanche réseau en fonction du nom d'hôte demandé et ne termine pas ou n'inspecte pas le trafic TLS, donc des techniques telles que le [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting) peuvent potentiellement le contourner. Voir [Limitations de sécurité du sandboxing](https://code.claude.com/docs/fr/sandboxing.md#security-limitations) pour les détails et [Déploiement sécurisé](https://code.claude.com/docs/fr/agent-sdk/secure-deployment.md#traffic-forwarding) pour configurer un proxy qui termine TLS.3655> Le proxy intégré du sandbox applique la liste d'autorisation réseau en fonction du nom d'hôte demandé et ne termine ni n'inspecte le trafic TLS ; des techniques telles que le [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting) peuvent donc potentiellement le contourner. Consultez [Limites de sécurité du sandboxing](https://code.claude.com/docs/fr/sandboxing.md#security-limitations) pour plus de détails et [Déploiement sécurisé](https://code.claude.com/docs/fr/agent-sdk/secure-deployment.md#traffic-forwarding) pour configurer un proxy qui termine le TLS.

3654 3656 

3655### `SandboxIgnoreViolations`3657### `SandboxIgnoreViolations`

3656 3658 

3657Configuration pour ignorer les violations de sandbox spécifiques.3659Configuration permettant d'ignorer des violations spécifiques du sandbox.

3658 3660 

3659```python theme={null}3661```python theme={null}

3660class SandboxIgnoreViolations(TypedDict, total=False):3662class SandboxIgnoreViolations(TypedDict, total=False):


3662 network: list[str]3664 network: list[str]

3663```3665```

3664 3666 

3665| Propriété | Type | Par défaut | Description |3667| Propriété | Type | Valeur par défaut | Description |

3666| :- | :- | :- | :- |3668| :- | :- | :- | :- |

3667| `file` | `list[str]` | `[]` | Modèles de chemin de fichier pour ignorer les violations |3669| `file` | `list[str]` | `[]` | Modèles de chemins de fichiers pour lesquels ignorer les violations |

3668| `network` | `list[str]` | `[]` | Modèles réseau pour ignorer les violations |3670| `network` | `list[str]` | `[]` | Modèles réseau pour lesquels ignorer les violations |

3669 3671 

3670### Fallback de permissions pour les commandes sans sandbox3672### Solution de repli sur les permissions pour les commandes hors sandbox

3671 3673 

3672Quand `allowUnsandboxedCommands` est activé, le modèle peut demander l'exécution de commandes en dehors du sandbox en définissant `dangerouslyDisableSandbox: True` dans l'entrée d'outil. Ces requêtes reviennent au système de permissions existant, ce qui signifie que votre gestionnaire `can_use_tool` sera invoqué, vous permettant d'implémenter une logique d'autorisation personnalisée.3674Lorsque `allowUnsandboxedCommands` est activé, le modèle peut demander l'exécution de commandes hors du sandbox en définissant `dangerouslyDisableSandbox: True` dans l'entrée de l'outil. Ces demandes basculent sur le système de permissions existant, ce qui signifie que votre gestionnaire `can_use_tool` est invoqué, vous permettant d'implémenter une logique d'autorisation personnalisée.

3673 3675 

3674Vos entrées `excludedCommands` prennent à la place une sortie du sandbox sans implication du modèle ; [`sandbox.excludedCommands`](https://code.claude.com/docs/fr/settings-reference#sandbox-excludedcommands) couvre quand une entrée s'applique.3676Vos entrées `excludedCommands`, en revanche, sortent un appel du sandbox sans intervention du modèle ; [`sandbox.excludedCommands`](https://code.claude.com/docs/fr/settings-reference#sandbox-excludedcommands) précise quand une entrée s'applique.

3675 3677 

3676L'exemple suivant enregistre chaque requête sans sandbox et la refuse sauf si votre propre logique d'autorisation l'autorise :3678L'exemple suivant journalise chaque demande hors sandbox et la refuse, sauf si votre propre logique d'autorisation l'autorise :

3677 3679 

3678```python theme={null}3680```python theme={null}

3679import asyncio3681import asyncio


3742 3744 

3743> [!WARNING]3745> [!WARNING]

3744>3746>

3745> Les commandes s'exécutant avec `dangerouslyDisableSandbox: True` ont un accès complet au système. Assurez-vous que votre gestionnaire `can_use_tool` valide ces requêtes avec soin.3747> Les commandes exécutées avec `dangerouslyDisableSandbox: True` disposent d'un accès complet au système. Assurez-vous que votre gestionnaire `can_use_tool` valide soigneusement ces demandes.

3746>3748>

3747> Si `permission_mode` est défini sur `bypassPermissions` et `allowUnsandboxedCommands` est activé, le modèle peut exécuter de manière autonome des commandes en dehors du sandbox sans aucun prompt d'approbation, à part les [actions qu'aucun mode n'approuve automatiquement](https://code.claude.com/docs/fr/permission-modes.md#actions-no-mode-auto-approves). Cette combinaison permet effectivement au modèle d'échapper à l'isolation du sandbox silencieusement.3749> Si `permission_mode` est défini sur `bypassPermissions` et que `allowUnsandboxedCommands` est activé, le modèle peut exécuter de manière autonome des commandes hors du sandbox sans demande d'approbation, à l'exception des [actions qu'aucun mode n'approuve automatiquement](https://code.claude.com/docs/fr/permission-modes.md#actions-no-mode-auto-approves). Cette combinaison permet de fait au modèle d'échapper silencieusement à l'isolation du sandbox.

3748 3750 

3749## Voir aussi3751## Voir aussi

3750 3752 

Details

16 16 

17## Prérequis17## Prérequis

18 18 

19* **Node.js 18+** ou **Python 3.10+**19* **Node.js 18.14+** ou **Python 3.10+**

20* Un **compte Anthropic**. Si vous n'en avez pas, [inscrivez-vous ici](https://platform.claude.com/).20* Un **compte Anthropic**. Si vous n'en avez pas, [inscrivez-vous ici](https://platform.claude.com/).

21 21 

22## Configuration22## Configuration

Details

118 118 

119### Gérer un flux interrompu119### Gérer un flux interrompu

120 120 

121Si un flux est interrompu au milieu d'un message, par exemple lorsque vous interrompez le tour ou que la connexion est coupée, vous recevez tout de même le `message_stop` de ce message avant la fin du tour. Un bloc de texte ou de réflexion interrompu reçoit également son `content_block_stop`. Ce n'est pas le cas d'un appel d'outil interrompu : si `message_stop` arrive alors que le bloc d'un appel d'outil est encore ouvert, considérez l'entrée de cet appel comme incomplète.121Si un flux est interrompu au milieu d'un message, vous recevez tout de même le `message_stop` de ce message avant la fin du tour. Un flux peut être interrompu notamment par un tour interrompu, une connexion coupée ou le basculement sur une requête sans streaming. `content_block_stop` et `message_delta` peuvent manquer avant ce `message_stop` :

122 

123* **`content_block_stop`** : arrive pour le bloc qui était ouvert, sauf si ce bloc est un appel d'outil. Si `message_stop` arrive alors que le bloc d'un appel d'outil est encore ouvert, considérez l'entrée de cet appel comme incomplète.

124* **`message_delta`** : arrive lorsque vous interrompez le tour, et peut manquer après une connexion coupée ou un basculement sur une requête sans streaming ; ne l'attendez donc pas pour un message interrompu.

122 125 

123Avant Claude Code v2.1.290, un flux interrompu pouvait terminer le tour sans `message_stop`, de sorte qu'une réponse que vous affichez à partir des événements du flux pouvait rester affichée comme en cours. Le SDK Agent TypeScript intègre Claude Code v2.1.290 ou ultérieur à partir de la v0.3.290, et le SDK Agent Python à partir de la v0.2.164. Si une réponse reste affichée comme en cours après la fin du tour, mettez à jour le SDK.126Avant Claude Code v2.1.290, un flux interrompu pouvait terminer le tour sans `message_stop`, de sorte qu'une réponse que vous affichez à partir des événements du flux pouvait rester affichée comme en cours. Le SDK Agent TypeScript intègre Claude Code v2.1.290 ou ultérieur à partir de la v0.3.290, et le SDK Agent Python à partir de la v0.2.164. Si une réponse reste affichée comme en cours après la fin du tour, mettez à jour le SDK.

124 127 

Details

105 105 

106Retourne une `Promise<`[`WarmQuery`](#warmquery)`>` qui se résout une fois que le sous-processus a été généré et a complété sa poignée de main d'initialisation.106Retourne une `Promise<`[`WarmQuery`](#warmquery)`>` qui se résout une fois que le sous-processus a été généré et a complété sa poignée de main d'initialisation.

107 107 

108Parmi les messages [`hook_progress`](#sdkhookprogressmessage) qu'un hook `SessionStart` ou `Setup` émet avant la fin de la poignée de main, vous ne recevez que le plus récent, qui contient toute la sortie du hook jusqu'à présent. `startup()` conserve ce message, le message [`hook_started`](#sdkhookstartedmessage) du hook, ainsi que tout ce que le sous-processus émet d'autre avant la fin de la poignée de main. Les messages conservés vous parviennent une fois que vous appelez `.query()` sur le `WarmQuery` et que vous itérez sur le résultat.

109 

108#### Exemple110#### Exemple

109 111 

110Appelez `startup()` tôt, par exemple au démarrage de l'application, puis appelez `.query()` sur le handle retourné une fois qu'un prompt est prêt. Cela déplace la génération du sous-processus et l'initialisation en dehors du chemin critique.112Appelez `startup()` tôt, par exemple au démarrage de l'application, puis appelez `.query()` sur le handle retourné une fois qu'un prompt est prêt. Cela déplace la génération du sous-processus et l'initialisation en dehors du chemin critique.


524| `managedSettings` | `Settings` | `undefined` | Paramètres de niveau stratégie que votre processus hôte fournit à la session lancée. Sur les machines dotées de paramètres gérés déployés par un administrateur, Claude Code les ignore à moins que la source gérée de plus haute priorité de l'administrateur ne définisse `parentSettingsBehavior: 'merge'`, et ne les fusionne jamais tant qu'un [`policyHelper`](https://code.claude.com/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](https://code.claude.com/docs/fr/claude-apps-gateway#restrict-parent-settings) décrit ce que le filtre admet ainsi que les verrous `allowManaged*Only`. Un hôte qui définit [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/fr/env-vars) lit plutôt trois clés directement depuis ce payload : sa [configuration de modèle](https://code.claude.com/docs/fr/model-config.md#restrict-model-selection) sur Claude Code v2.1.222 ou ultérieur, [`modelPricing`](https://code.claude.com/docs/fr/settings-reference#modelpricing) lorsqu'aucune source gérée ne le définit sur v2.1.246 ou ultérieur, et son entrée env `ENABLE_TOOL_SEARCH` sur v2.1.247 ou ultérieur |526| `managedSettings` | `Settings` | `undefined` | Paramètres de niveau stratégie que votre processus hôte fournit à la session lancée. Sur les machines dotées de paramètres gérés déployés par un administrateur, Claude Code les ignore à moins que la source gérée de plus haute priorité de l'administrateur ne définisse `parentSettingsBehavior: 'merge'`, et ne les fusionne jamais tant qu'un [`policyHelper`](https://code.claude.com/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](https://code.claude.com/docs/fr/claude-apps-gateway#restrict-parent-settings) décrit ce que le filtre admet ainsi que les verrous `allowManaged*Only`. Un hôte qui définit [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/fr/env-vars) lit plutôt trois clés directement depuis ce payload : sa [configuration de modèle](https://code.claude.com/docs/fr/model-config.md#restrict-model-selection) sur Claude Code v2.1.222 ou ultérieur, [`modelPricing`](https://code.claude.com/docs/fr/settings-reference#modelpricing) lorsqu'aucune source gérée ne le définit sur v2.1.246 ou ultérieur, et son entrée env `ENABLE_TOOL_SEARCH` sur v2.1.247 ou ultérieur |

525| `maxBudgetUsd` | `number` | `undefined` | Arrêter la requête lorsque 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](https://code.claude.com/docs/fr/agent-sdk/agent-loop.md#budget-headroom). 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](https://code.claude.com/docs/fr/agent-sdk/cost-tracking.md) |527| `maxBudgetUsd` | `number` | `undefined` | Arrêter la requête lorsque 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](https://code.claude.com/docs/fr/agent-sdk/agent-loop.md#budget-headroom). 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](https://code.claude.com/docs/fr/agent-sdk/cost-tracking.md) |

526| `maxThinkingTokens` | `number` | `undefined` | *Obsolète :* utilisez plutôt `thinking`. Nombre maximal de tokens pour le processus de réflexion |528| `maxThinkingTokens` | `number` | `undefined` | *Obsolète :* utilisez plutôt `thinking`. Nombre maximal de tokens pour le processus de réflexion |

527| `maxTurns` | `number` | `undefined` | Nombre maximal de tours agentiques (allers-retours d'utilisation d'outils) |529| `maxTurns` | `number` | `undefined` | Nombre maximal de [tours](https://code.claude.com/docs/fr/agent-sdk/agent-loop.md#turns-and-messages) agentiques |

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

529| `model` | `string` | Valeur par défaut de la CLI | Alias de modèle Claude ou nom complet du modèle. Consultez [valeurs acceptées et ID spécifiques aux fournisseurs](https://code.claude.com/docs/fr/model-config.md#available-models) |531| `model` | `string` | Valeur par défaut de la CLI | Alias de modèle Claude ou nom complet du modèle. Consultez [valeurs acceptées et ID spécifiques aux fournisseurs](https://code.claude.com/docs/fr/model-config.md#available-models) |

530| `onElicitation` | `(request: ElicitationRequest, options: { signal: AbortSignal }) => Promise<ElicitationResult>` | `undefined` | Callback pour gérer les requêtes d'élicitation MCP. Appelé lorsqu'un serveur MCP demande une saisie à l'utilisateur et qu'aucun hook ne la traite en premier. S'il n'est pas fourni, les requêtes d'élicitation non traitées sont automatiquement refusées |532| `onElicitation` | `(request: ElicitationRequest, options: { signal: AbortSignal }) => Promise<ElicitationResult>` | `undefined` | Callback pour gérer les requêtes d'élicitation MCP. Appelé lorsqu'un serveur MCP demande une saisie à l'utilisateur et qu'aucun hook ne la traite en premier. S'il n'est pas fourni, les requêtes d'élicitation non traitées sont automatiquement refusées |


1403 };1405 };

1404```1406```

1405 1407 

1408Si vous renvoyez `allow` avec plus de 4 096 éléments dans `updatedPermissions`, Claude Code considère le résultat comme invalide et refuse l'appel d'outil. Chaque mise à jour compte pour un élément, de même que chaque entrée de sa liste `rules` ou `directories`. Le message de refus se termine par `updatedPermissions may hold at most 4096 updates, rules and directories in all`. Pour que l'appel soit autorisé, renvoyez 4 096 éléments ou moins.

1409 

1406### `ToolConfig`1410### `ToolConfig`

1407 1411 

1408Configuration du comportement des outils intégrés.1412Configuration du comportement des outils intégrés.


1464 1468 

1465#### `McpSdkServerConfigWithInstance`1469#### `McpSdkServerConfigWithInstance`

1466 1470 

1467La configuration d'un serveur MCP en processus, c'est-à-dire un serveur que [`createSdkMcpServer()`](#createsdkmcpserver) crée et qui s'exécute dans le processus de votre application. Il s'agit de l'objet renvoyé par `createSdkMcpServer()`, auquel s'ajoute une liste facultative `tools` d'entrées [`McpServerToolPolicy`](#mcpservertoolpolicy) que vous ajoutez vous-même. Pour exiger une approbation pour les appels à l'un des outils du serveur, ou pour les refuser, ajoutez une entrée qui nomme l'outil.1471Configuration d'un serveur MCP en cours de processus. Il s'agit de ce que renvoie [`createSdkMcpServer()`](#createsdkmcpserver), plus une liste facultative `tools` d'entrées [`McpServerToolPolicy`](#mcpservertoolpolicy) que vous ajoutez.

1468 1472 

1469```typescript theme={null}1473```typescript theme={null}

1470type McpSdkServerConfigWithInstance = {1474type McpSdkServerConfigWithInstance = {


1476};1480};

1477```1481```

1478 1482 

1479Pour définir une politique, décomposez l'objet renvoyé par `createSdkMcpServer()` dans un nouvel objet de `mcpServers` et ajoutez la liste `tools` à ce nouvel objet. L'option `tools` de `createSdkMcpServer()` elle-même est une liste différente, qui contient les définitions d'outils et n'accepte pas d'entrées de politique. La liste de politiques nécessite l'Agent SDK v0.3.301 ou une version ultérieure, et [`McpServerToolPolicy`](#mcpservertoolpolicy) décrit l'effet de chaque valeur de `permission_policy`.1483Pour exiger une approbation pour les appels à l'un des outils du serveur, ou pour les refuser, ajoutez une entrée de politique nommant l'outil. Décomposez ce que renvoie `createSdkMcpServer()` dans un objet sous `mcpServers` et placez l'entrée dans une liste `tools` sur cet objet, car l'option `tools` de la fonction accepte des définitions d'outils et non des entrées de politique. La liste de politiques nécessite l'Agent SDK v0.3.301 ou une version ultérieure, et [`McpServerToolPolicy`](#mcpservertoolpolicy) décrit l'effet de chaque valeur de `permission_policy`.

1480 1484 

1481Cet exemple pré-approuve tous les outils du serveur `records` avec un caractère générique `allowedTools`, puis marque `delete_record` comme `always_ask` afin que ses appels soient malgré tout transmis à `canUseTool`. Avec l'annotation `destructiveHint: true`, l'appel atteint toujours le callback si la session s'exécute en mode `auto`, où le [classifieur](https://code.claude.com/docs/fr/permission-modes.md#eliminate-prompts-with-auto-mode) du mode auto pourrait sinon l'approuver.1485Dans ce script, un caractère générique `allowedTools` pré-approuve tous les outils du serveur `records`, mais `delete_record` est marqué `always_ask` ; ses appels sont donc malgré tout transmis à `canUseTool`. Avec l'annotation `destructiveHint: true`, l'appel atteint toujours le callback si la session s'exécute en mode `auto`, où le [classifieur](https://code.claude.com/docs/fr/permission-modes.md#eliminate-prompts-with-auto-mode) du mode auto pourrait sinon l'approuver.

1482 1486 

1483```typescript theme={null}1487```typescript theme={null}

1484import { query, tool, createSdkMcpServer } from "@anthropic-ai/claude-agent-sdk";1488import { query, tool, createSdkMcpServer } from "@anthropic-ai/claude-agent-sdk";


1517}1521}

1518```1522```

1519 1523 

1520Lorsque Claude appelle l'outil, le script affiche `Approval requested for mcp__records__delete_record` avant l'exécution de l'outil `delete_record`, bien que l'entrée `allowedTools` aurait sinon approuvé l'appel.1524Lorsque Claude appelle `delete_record`, le script affiche `Approval requested for mcp__records__delete_record`.

1521 1525 

1522Pour modifier ou lever la politique d'un outil pendant l'exécution de la session, passez la configuration du serveur avec une nouvelle valeur `tools` à [`setMcpServers()`](#mcpsetserversresult). La valeur `tools` que vous passez prend effet à partir du prochain appel de Claude aux outils de ce serveur :1526Pour modifier ou lever la politique d'un outil pendant l'exécution de la session, passez la configuration du serveur avec une nouvelle valeur `tools` à [`setMcpServers()`](#mcpsetserversresult). La valeur `tools` que vous passez prend effet à partir du prochain appel de Claude aux outils de ce serveur :

1523 1527 


1556 1560 

1557##### Modes de permission pouvant approuver un appel `always_ask`1561##### Modes de permission pouvant approuver un appel `always_ask`

1558 1562 

1559En mode `auto`, `plan` et `bypassPermissions`, un appel à un outil marqué [`always_ask`](#permission-policy-values) peut être approuvé avant d'atteindre votre callback `canUseTool`. Repérez le mode de votre session dans cette liste pour savoir quand cette approbation a lieu et ce qu'il faut définir pour que l'appel atteigne malgré tout votre callback :1563En mode `auto`, `plan` et `bypassPermissions`, un appel à un outil marqué [`always_ask`](#permission-policy-values) peut être approuvé avant d'atteindre votre callback `canUseTool`.

1560 1564 

1561* **`auto`** : le [classifieur](https://code.claude.com/docs/fr/permission-modes.md#eliminate-prompts-with-auto-mode) du mode auto examine l'appel et peut l'autoriser. Pour que chaque appel atteigne votre callback en mode `auto`, définissez `destructiveHint: true` dans les [annotations](#toolannotations) de l'outil1565* **`auto`** : le [classifieur](https://code.claude.com/docs/fr/permission-modes.md#eliminate-prompts-with-auto-mode) du mode auto examine l'appel et peut l'autoriser. Pour que chaque appel atteigne votre callback en mode `auto`, définissez `destructiveHint: true` dans les [annotations](#toolannotations) de l'outil

1562* **`plan`** : tant que le [mode auto est disponible](https://code.claude.com/docs/fr/permission-modes.md#eliminate-prompts-with-auto-mode) pour la session, les appels à un outil `always_ask` annoté `readOnlyHint: true` sont transmis au classifieur du mode auto, qui peut les autoriser. Les appels aux autres outils `always_ask` atteignent votre callback. Pour que les appels d'un outil en lecture seule atteignent également votre callback, ajoutez `destructiveHint: true` aux annotations de cet outil en plus de `readOnlyHint: true`. Vous pouvez aussi définir [`useAutoModeDuringPlan`](https://code.claude.com/docs/fr/settings-reference#useautomodeduringplan) sur `false`, ce qui désactive le classifieur pendant la planification1566* **`plan`** : tant que le [mode auto est disponible](https://code.claude.com/docs/fr/permission-modes.md#eliminate-prompts-with-auto-mode) pour la session, les appels à un outil `always_ask` annoté `readOnlyHint: true` sont transmis au classifieur du mode auto, qui peut les autoriser. Les appels aux autres outils `always_ask` atteignent votre callback. Pour que les appels d'un outil en lecture seule atteignent également votre callback, ajoutez `destructiveHint: true` aux annotations de cet outil en plus de `readOnlyHint: true`. Vous pouvez aussi définir [`useAutoModeDuringPlan`](https://code.claude.com/docs/fr/settings-reference#useautomodeduringplan) sur `false`, ce qui désactive le classifieur pendant la planification


1692 1696 

1693`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.1697`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.

1694 1698 

1695`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](https://code.claude.com/docs/fr/agent-sdk/subagents.md#resume-subagents). Le champ nécessite l'Agent SDK v0.3.292 ou ultérieur.1699`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` figurant 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](https://code.claude.com/docs/fr/agent-sdk/subagents.md#resume-subagents). Sur les messages d'un [sous-agent imbriqué](https://code.claude.com/docs/fr/sub-agents.md#let-subagents-spawn-their-own-subagents), il désigne le sous-agent imbriqué, et non le sous-agent qui l'a lancé. Le champ nécessite Agent SDK v0.3.292 ou ultérieur.

1696 1700 

1697Associez 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.1701Associez 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.

1698 1702 


3273 3277 

3274### Agent3278### Agent

3275 3279 

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

3281 

3282Le tableau `tools` dans le message d'initialisation [`SDKSystemMessage`](#sdksystemmessage) répertorie cet outil comme `Task` pour la compatibilité rétroactive.

3277 3283 

3278> [!NOTE]3284> [!NOTE]

3279>3285>


4010 4016 

4011### Agent4017### Agent

4012 4018 

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

4014 4020 

4015```typescript theme={null}4021```typescript theme={null}

4016type AgentOutput =4022type AgentOutput =


5044 5050 

5045### `ApiKeySource`5051### `ApiKeySource`

5046 5052 

5047La provenance de la clé API utilisée pour les requêtes de la session, indiquée dans `apiKeySource` sur le message d'initialisation [`SDKSystemMessage`](#sdksystemmessage).5053Provenance de la clé API utilisée pour les requêtes de la session, indiquée par `apiKeySource` dans le message d'initialisation [`SDKSystemMessage`](#sdksystemmessage).

5048 5054 

5049```typescript theme={null}5055```typescript theme={null}

5050type ApiKeySource =5056type ApiKeySource =


5065| - | - |5071| - | - |

5066| `ANTHROPIC_API_KEY` | La clé contenue dans la variable d'environnement `ANTHROPIC_API_KEY` |5072| `ANTHROPIC_API_KEY` | La clé contenue dans la variable d'environnement `ANTHROPIC_API_KEY` |

5067| `apiKeyHelper` | La clé renvoyée par votre commande [`apiKeyHelper`](https://code.claude.com/docs/fr/settings-reference#apikeyhelper) |5073| `apiKeyHelper` | La clé renvoyée par votre commande [`apiKeyHelper`](https://code.claude.com/docs/fr/settings-reference#apikeyhelper) |

5068| `/login managed key` | La clé que Claude Code a stockée lorsque vous vous êtes connecté avec un [compte Claude Console](https://code.claude.com/docs/fr/authentication.md#claude-console-authentication) |5074| `/login managed key` | La clé que Claude Code a enregistrée lorsque vous vous êtes connecté avec un [compte Claude Console](https://code.claude.com/docs/fr/authentication.md#claude-console-authentication) |

5069| `none` | Aucune clé API. La session s'authentifie d'une autre manière, par exemple via une connexion claude.ai, un jeton bearer ou un fournisseur cloud |5075| `none` | Aucune clé API. La session s'authentifie autrement, par exemple via une connexion claude.ai, un jeton bearer ou un fournisseur cloud |

5070 5076 

5071L'Agent SDK v0.3.234 et versions ultérieures répertorient ces quatre valeurs dans le type. Le type conserve également `user`, `project`, `org`, `temporary` et `oauth` afin que le code plus ancien compile toujours, mais Claude Code ne les indique pas.5077Les versions v0.3.234 et ultérieures de l'Agent SDK listent ces quatre valeurs dans le type. Le type conserve également `user`, `project`, `org`, `temporary` et `oauth` afin que le code plus ancien compile toujours, mais Claude Code ne les indique jamais.

5072 5078 

5073### `SdkBeta`5079### `SdkBeta`

5074 5080 


5080 5086 

5081> [!WARNING]5087> [!WARNING]

5082>5088>

5083> Sur l'API Claude, la bêta `context-1m-2025-08-07` est retirée pour Claude Sonnet 4.5 et Claude Sonnet 4. Si vous la transmettez encore avec l'un de ces modèles, les requêtes qui dépassent la fenêtre de contexte standard de 200 000 tokens renvoient une erreur ; retirez-la donc de `betas`. Pour exécuter une session avec une fenêtre de contexte de 1 million de tokens, définissez `model` sur un modèle qui [fonctionne par défaut avec la fenêtre de 1M](https://code.claude.com/docs/fr/model-config.md#extended-context), comme `claude-sonnet-5-5` ou `claude-opus-5-5`. Pour un modèle qui n'atteint 1M que via sa variante `[1m]`, ajoutez le suffixe à l'identifiant du modèle, comme dans `claude-opus-4-6[1m]`.5089> Sur l'API Claude, la bêta `context-1m-2025-08-07` est retirée pour Claude Sonnet 4.5 et Claude Sonnet 4. Si vous la transmettez encore avec l'un de ces modèles, les requêtes qui dépassent la fenêtre de contexte standard de 200K tokens renvoient une erreur ; retirez-la donc de `betas`. Pour exécuter une session avec une fenêtre de contexte de 1M tokens, définissez `model` sur un modèle qui [fonctionne par défaut avec la fenêtre de 1M](https://code.claude.com/docs/fr/model-config.md#extended-context), comme `claude-sonnet-5-5` ou `claude-opus-5-5`. Pour un modèle qui n'atteint 1M que via sa variante `[1m]`, ajoutez le suffixe à l'ID du modèle, comme dans `claude-opus-4-6[1m]`.

5084 5090 

5085### `SlashCommand`5091### `SlashCommand`

5086 5092 


5096};5102};

5097```5103```

5098 5104 

5099`builtin` vaut `true` sur une ligne lorsque la commande appartient à Claude Code et que saisir `/name` l'exécute. Il est absent pour une commande définie par un utilisateur, un projet, un plugin ou un serveur MCP, ainsi que pour une commande intégrée que l'un de ceux-ci [remplace par son nom](https://code.claude.com/docs/fr/skills.md#resolve-skills-that-share-a-name). Nécessite l'Agent SDK v0.3.277 ou version ultérieure.5105`builtin` vaut `true` sur une ligne lorsque la commande appartient à Claude Code et que la saisie de `/name` l'exécute. Le champ est absent pour une commande définie par un utilisateur, un projet, un plugin ou un serveur MCP, ainsi que pour une commande intégrée que l'un d'eux [remplace par son nom](https://code.claude.com/docs/fr/skills.md#resolve-skills-that-share-a-name). Nécessite l'Agent SDK v0.3.277 ou ultérieur.

5100 5106 

5101### `ModelInfo`5107### `ModelInfo`

5102 5108 


5118 5124 

5119| Champ | Type | Description |5125| Champ | Type | Description |

5120| :- | :- | :- |5126| :- | :- | :- |

5121| `value` | `string` | Identifiant du modèle à transmettre dans les appels API |5127| `value` | `string` | Identifiant du modèle à transmettre dans les appels d'API |

5122| `resolvedModel` | `string \| undefined` | L'identifiant de modèle vers lequel se résout la `value` de cette entrée, comme `claude-sonnet-5-5` pour l'entrée de l'alias `sonnet`. Nécessite Claude Code v2.1.197 ou version ultérieure. |5128| `resolvedModel` | `string \| undefined` | L'ID du modèle vers lequel se résout la `value` de cette entrée, par exemple `claude-sonnet-5-5` pour l'entrée de l'alias `sonnet`. Nécessite Claude Code v2.1.197 ou ultérieur. |

5123| `displayName` | `string` | Nom d'affichage lisible |5129| `displayName` | `string` | Nom d'affichage lisible |

5124| `description` | `string` | Description des capacités du modèle |5130| `description` | `string` | Description des capacités du modèle |

5125| `supportsEffort` | `boolean \| undefined` | Indique si ce modèle prend en charge les niveaux d'effort |5131| `supportsEffort` | `boolean \| undefined` | Indique si ce modèle prend en charge les niveaux d'effort |


5143| Champ | Type | Description |5149| Champ | Type | Description |

5144| :- | :- | :- |5150| :- | :- | :- |

5145| `name` | `string` | Identifiant du type d'agent (par exemple, `"Explore"`, `"general-purpose"`) |5151| `name` | `string` | Identifiant du type d'agent (par exemple, `"Explore"`, `"general-purpose"`) |

5146| `description` | `string` | Description des cas où utiliser cet agent |5152| `description` | `string` | Description des situations dans lesquelles utiliser cet agent |

5147| `model` | `string \| undefined` | Modèle utilisé par cet agent : un alias ou un identifiant de modèle, ou `'inherit'` pour le modèle du parent. Lorsqu'il vaut `undefined`, Claude Code choisit le modèle selon l'[ordre de sélection du modèle des sous-agents](https://code.claude.com/docs/fr/sub-agents.md#choose-a-model) |5153| `model` | `string \| undefined` | Modèle utilisé par cet agent : un alias ou un ID de modèle, ou `'inherit'` pour le modèle du parent. Lorsqu'il vaut `undefined`, Claude Code choisit le modèle selon l'[ordre de sélection du modèle des sous-agents](https://code.claude.com/docs/fr/sub-agents.md#choose-a-model) |

5148 5154 

5149### `McpServerProvenance`5155### `McpServerProvenance`

5150 5156 

5151Le serveur MCP qui fournit un outil `mcp__*`, et la provenance de la définition de ce serveur. Les entrées de hook [`PreToolUse`](#pretoolusehookinput), `PostToolUse`, `PostToolUseFailure`, `PermissionRequest` et `PermissionDenied` le contiennent sous `mcp_server`, et les options de [`CanUseTool`](#canusetool) le contiennent sous `mcpServer`. Les deux l'omettent pour les outils qui ne proviennent pas d'un serveur MCP.5157Le serveur MCP qui fournit un outil `mcp__*`, et l'origine de la définition de ce serveur. Les entrées des hooks [`PreToolUse`](#pretoolusehookinput), `PostToolUse`, `PostToolUseFailure`, `PermissionRequest` et `PermissionDenied` le transportent sous le nom `mcp_server`, et les options de [`CanUseTool`](#canusetool) sous le nom `mcpServer`. Les deux l'omettent pour les outils qui ne proviennent pas d'un serveur MCP.

5152 5158 

5153```typescript theme={null}5159```typescript theme={null}

5154type McpServerProvenance = {5160type McpServerProvenance = {


5159 5165 

5160| Champ | Type | Description |5166| Champ | Type | Description |

5161| :- | :- | :- |5167| :- | :- | :- |

5162| `name` | `string` | Le nom sous lequel le serveur est enregistré, la même valeur que celle indiquée pour lui par [`mcpServerStatus()`](#query-object) |5168| `name` | `string` | Le nom sous lequel le serveur est enregistré, la même valeur que celle que [`mcpServerStatus()`](#query-object) indique pour lui |

5163| `source` | `string` | La provenance de la définition du serveur : `sdk`, `plugin` ou une portée de configuration |5169| `source` | `string` | Origine de la définition du serveur : `sdk`, `plugin` ou une portée de configuration |

5164 5170 

5165`source` prend l'une des valeurs suivantes. L'ensemble est ouvert : traitez donc une valeur que vous ne reconnaissez pas comme une source configurée, jamais comme `sdk` :5171`source` prend l'une des valeurs suivantes. L'ensemble est ouvert : traitez donc une valeur que vous ne reconnaissez pas comme une source configurée, jamais comme `sdk` :

5166 5172 

5167* **`sdk`** : un serveur in-process enregistré par votre application. Seule l'application hôte du SDK peut en enregistrer un ; un serveur configuré n'indique donc jamais `sdk`, quel que soit son nom.5173* **`sdk`** : un serveur en processus que votre application a enregistré. Seule l'application hôte du SDK peut en enregistrer un ; un serveur configuré n'indique donc jamais `sdk`, quel que soit son nom.

5168* **`plugin`** : un serveur fourni par un [plugin](https://code.claude.com/docs/fr/agent-sdk/plugins.md). Son `name` est la forme à portée `plugin:<plugin-name>:<server-name>` décrite dans [serveurs MCP fournis par des plugins](https://code.claude.com/docs/fr/mcp.md#plugin-provided-mcp-servers).5174* **`plugin`** : un serveur fourni par un [plugin](https://code.claude.com/docs/fr/agent-sdk/plugins.md). Son `name` prend la forme délimitée `plugin:<plugin-name>:<server-name>` décrite dans [serveurs MCP fournis par des plugins](https://code.claude.com/docs/fr/mcp.md#plugin-provided-mcp-servers).

5169* **Une portée de configuration** : `user`, `project`, `local`, `dynamic`, `managed`, `enterprise`, `claudeai` ou `agent`. Un serveur `.mcp.json` indique `project`, et les [portées d'installation MCP](https://code.claude.com/docs/fr/mcp.md#mcp-installation-scopes) définissent `local`, `project` et `user`. Les serveurs que votre application transmet dans l'[option `mcpServers`](#options), à l'exception des serveurs SDK in-process, indiquent `dynamic`.5175* **Une portée de configuration** : `user`, `project`, `local`, `dynamic`, `managed`, `enterprise`, `claudeai` ou `agent`. Un serveur `.mcp.json` indique `project`, et [portées d'installation MCP](https://code.claude.com/docs/fr/mcp.md#mcp-installation-scopes) définit `local`, `project` et `user`. Les serveurs que votre application transmet dans l'[option `mcpServers`](#options), à l'exception des serveurs SDK en processus, indiquent `dynamic`.

5170 5176 

5171Fondez vos décisions de confiance sur `source`, et non sur `name` ou le préfixe de nom d'outil `mcp__<server>__`. Pour toute source autre que `sdk`, `name` est un texte non fiable : échappez-le avant de l'afficher.5177Fondez vos décisions de confiance sur `source`, et non sur `name` ni sur le préfixe de nom d'outil `mcp__<server>__`. Pour toute source autre que `sdk`, `name` est un texte non fiable : échappez-le avant de l'afficher.

5172 5178 

5173`McpServerProvenance` et les champs qui le contiennent nécessitent l'Agent SDK v0.3.274 ou version ultérieure.5179`McpServerProvenance` et les champs qui le transportent nécessitent l'Agent SDK v0.3.274 ou ultérieur.

5174 5180 

5175### `McpServerStatus`5181### `McpServerStatus`

5176 5182 


5201};5207};

5202```5208```

5203 5209 

5204Utilisez `source` pour décider du degré de confiance à accorder à un serveur, et le `_meta` de chaque entrée `tools` pour trouver une ressource d'interface utilisateur que le serveur a associée à cet outil :5210Utilisez `source` pour décider du degré de confiance à accorder à un serveur, et le `_meta` de chaque entrée `tools` pour trouver une ressource d'interface que le serveur a associée à cet outil :

5205 5211 

5206* **`source`** : la provenance de la définition du serveur, avec les mêmes valeurs que le `source` de [`McpServerProvenance`](#mcpserverprovenance). Fondez vos décisions de confiance sur `source` plutôt que sur `name`, car seul votre propre serveur in-process indique `sdk`, quel que soit le nom sous lequel un autre serveur est enregistré. Si vous ne reconnaissez pas une valeur de `source`, traitez ce serveur comme vous traitez tout serveur dont le `source` n'est pas `sdk`. Nécessite l'Agent SDK v0.3.274 ou version ultérieure5212* **`source`** : l'origine de la définition du serveur, avec les mêmes valeurs que `source` dans [`McpServerProvenance`](#mcpserverprovenance). Fondez vos décisions de confiance sur `source` plutôt que sur `name`, car seul votre propre serveur en processus indique `sdk`, quel que soit le nom sous lequel un autre serveur est enregistré. Si vous ne reconnaissez pas une valeur de `source`, traitez ce serveur comme n'importe quel serveur dont la `source` n'est pas `sdk`. Nécessite l'Agent SDK v0.3.274 ou ultérieur

5207* **`_meta`** : l'objet `ui` et la chaîne `ui/resourceUri` issus du `_meta` que le serveur a déclaré pour l'outil. Claude Code retient toutes les autres clés de `_meta`. `ui/resourceUri` est une ancienne graphie de premier niveau de `ui.resourceUri`. Lorsque le serveur associe une [ressource d'interface MCP Apps](https://code.claude.com/docs/fr/mcp.md#reference-mcp-resources) à l'outil, `ui.resourceUri` ou `ui/resourceUri` contient l'URI `ui://` de la ressource. Récupérez cette URI avec [`readMcpResource()`](#query-object) et affichez la ressource dans votre application. Nécessite l'Agent SDK v0.3.280 ou version ultérieure5213* **`_meta`** : l'objet `ui` et la chaîne `ui/resourceUri` issus du `_meta` que le serveur a déclaré pour l'outil. Claude Code ne transmet aucune autre clé de `_meta`. `ui/resourceUri` est une ancienne graphie de premier niveau de `ui.resourceUri`. Lorsque le serveur associe une [ressource d'interface MCP Apps](https://code.claude.com/docs/fr/mcp.md#reference-mcp-resources) à l'outil, `ui.resourceUri` ou `ui/resourceUri` contient l'URI `ui://` de la ressource. Récupérez cette URI avec [`readMcpResource()`](#query-object) et affichez la ressource dans votre application. Nécessite l'Agent SDK v0.3.280 ou ultérieur

5208 5214 

5209Claude Code n'envoie `_meta` que lorsque le tableau [`capabilities`](#sdksystemmessage) du message `system` de sous-type `init` inclut `mcp_tool_ui_meta_v1`. Vous n'activez pas `mcp_tool_ui_meta_v1` vous-même.5215Claude Code n'envoie `_meta` que lorsque le tableau [`capabilities`](#sdksystemmessage) du message `system` de sous-type `init` contient `mcp_tool_ui_meta_v1`. Vous n'activez pas `mcp_tool_ui_meta_v1` vous-même.

5210 5216 

5211#### Lorsque le `_meta.ui` d'un outil ne contient que `visibility`5217#### Lorsque le `_meta.ui` d'un outil ne contient que `visibility`

5212 5218 

5213Si votre serveur déclare `ui.resourceUri` pour un outil mais que le `_meta.ui` reçu par votre application ne contient que `visibility`, l'objet `ui` envoyé par le serveur a échoué à l'une des vérifications de Claude Code. Claude Code vérifie `ui` et `ui/resourceUri` séparément ; une clé peut donc atteindre votre application alors que l'autre échoue. Comparez le `_meta` de la réponse `tools/list` de votre serveur aux vérifications de chaque clé :5219Si votre serveur déclare `ui.resourceUri` pour un outil mais que le `_meta.ui` reçu par votre application ne contient que `visibility`, l'objet `ui` envoyé par le serveur a échoué à l'une des vérifications de Claude Code. Comparez le `_meta` de la réponse `tools/list` de votre serveur aux vérifications de chaque clé :

5214 5220 

5215* **`ui`** : atteint votre application sans modification, y compris tout membre autre que `resourceUri` et `visibility`, si les trois vérifications réussissent :5221* **`ui`** : parvient inchangé à votre application, y compris tout membre autre que `resourceUri` et `visibility`, si les trois vérifications réussissent :

5216 5222 

5217 * `resourceUri` est absent, ou est une chaîne qui commence par `ui://`5223 * `resourceUri` est absent, ou est une chaîne commençant par `ui://`

5218 * `visibility` est absent, ou ne répertorie que `"model"` et `"app"`5224 * `visibility` est absent, ou ne liste que `"model"` et `"app"`

5219 * L'objet entier fait au plus 4 096 caractères une fois sérialisé en JSON5225 * L'objet entier fait au plus 4 096 caractères une fois sérialisé en JSON

5220 5226 

5221 Si l'une des vérifications échoue, votre application reçoit au plus un `ui` dont le seul membre est un tableau `visibility` contenant les entrées `"model"` et `"app"` que le serveur a répertoriées.5227 Si l'une des vérifications échoue, votre application reçoit au plus un `ui` dont le seul membre est un tableau `visibility` contenant les entrées `"model"` et `"app"` listées par le serveur.

5222* **`ui/resourceUri`** : atteint votre application s'il s'agit d'une chaîne qui commence par `ui://` et fait au plus 4 096 caractères. Sinon, Claude Code la supprime5228* **`ui/resourceUri`** : parvient à votre application s'il s'agit d'une chaîne commençant par `ui://` et d'au plus 4 096 caractères. Sinon, Claude Code la supprime

5223 5229 

5224Lorsqu'il ne reste à Claude Code aucun membre `ui` ni aucune chaîne `ui/resourceUri` à envoyer, l'entrée `tools` n'a aucun `_meta`.5230Lorsqu'il ne reste à Claude Code aucun membre `ui` ni aucune chaîne `ui/resourceUri` à envoyer, l'entrée `tools` n'a aucun `_meta`.

5225 5231 


5254 5260 

5255### `ModelUsage`5261### `ModelUsage`

5256 5262 

5257Statistiques d'utilisation par modèle renvoyées dans les messages de résultat. La valeur `costUSD` est une estimation côté client. Consultez [Suivre les coûts et l'utilisation](https://code.claude.com/docs/fr/agent-sdk/cost-tracking.md) pour les réserves concernant la facturation.5263Statistiques d'utilisation par modèle renvoyées dans les messages de résultat. La valeur `costUSD` est une estimation côté client. Consultez [Suivre les coûts et l'utilisation](https://code.claude.com/docs/fr/agent-sdk/cost-tracking.md) pour les mises en garde concernant la facturation.

5258 5264 

5259```typescript theme={null}5265```typescript theme={null}

5260type ModelUsage = {5266type ModelUsage = {


5273};5279};

5274```5280```

5275 5281 

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

5277 5283 

5278Les champs `canonicalModel` et `provider` nécessitent Claude Code v2.1.218 ou version ultérieure. `canonicalModel` est l'identifiant de modèle canonique utilisé pour la recherche de tarifs ; il peut différer de la chaîne de modèle brute qui sert de clé à l'entrée, par exemple lorsque cette chaîne est un identifiant propre à un fournisseur ou un alias.5284Les champs `canonicalModel` et `provider` nécessitent Claude Code v2.1.218 ou ultérieur. `canonicalModel` est l'ID canonique du modèle utilisé pour la recherche de tarification ; il peut différer de la chaîne de modèle brute qui sert de clé à l'entrée, par exemple lorsque cette chaîne est un ID propre à un fournisseur ou un alias.

5279 5285 

5280`provider` désigne le backend API qui a servi le modèle, comme `firstParty`, `bedrock`, `vertex`, `foundry`, `anthropicAws`, `mantle` ou `gateway`.5286`provider` nomme le backend d'API qui a servi le modèle, comme `firstParty`, `bedrock`, `vertex`, `foundry`, `anthropicAws`, `mantle` ou `gateway`.

5281 5287 

5282`costBasis` désigne la table de prix qui a tarifé la dernière requête du modèle : `list` pour le prix catalogue, `managed` pour une table [`modelPricing`](https://code.claude.com/docs/fr/settings-reference#modelpricing), ou `unknown` lorsqu'aucune ne correspondait à l'identifiant du modèle. Le champ nécessite Claude Code v2.1.246 ou version ultérieure.5288`costBasis` nomme la grille tarifaire qui a servi à tarifer la dernière requête du modèle : `list` pour le prix catalogue, `managed` pour une table [`modelPricing`](https://code.claude.com/docs/fr/settings-reference#modelpricing), ou `unknown` lorsqu'aucune ne correspondait à l'ID du modèle. Le champ nécessite Claude Code v2.1.246 ou ultérieur.

5283 5289 

5284### `ConfigScope`5290### `ConfigScope`

5285 5291 


5325 5331 

5326`BetaServerToolUsage`, `BetaIterationsUsage`, `BetaOutputTokensDetails` et `BetaFallbackCreditUsage` sont définis dans `@anthropic-ai/sdk`.5332`BetaServerToolUsage`, `BetaIterationsUsage`, `BetaOutputTokensDetails` et `BetaFallbackCreditUsage` sont définis dans `@anthropic-ai/sdk`.

5327 5333 

5328`output_tokens_details` ventile la sortie facturée par catégorie. Il contient actuellement un seul champ, `thinking_tokens: number`, qui compte les tokens de sortie générés par le modèle en tant que raisonnement interne, y compris les délimiteurs des blocs de réflexion. Le champ `output_tokens_details` nécessite le SDK TypeScript v0.3.228 ou version ultérieure, qui intègre Claude Code v2.1.228.5334`output_tokens_details` ventile la sortie facturée par catégorie. Il contient actuellement un seul champ, `thinking_tokens: number`, qui compte les tokens de sortie générés par le modèle en tant que raisonnement interne, y compris les délimiteurs des blocs de réflexion. Le champ `output_tokens_details` nécessite le SDK TypeScript v0.3.228 ou ultérieur, qui intègre Claude Code v2.1.228.

5329 5335 

5330* **Facturation** : utilisez cette ventilation pour l'observabilité, pas pour la facturation. `output_tokens` reste le total de référence, et `output_tokens - thinking_tokens` donne une approximation de la sortie hors raisonnement.5336* **Facturation** : utilisez cette ventilation pour l'observabilité, pas pour la facturation. `output_tokens` reste le total de référence, et `output_tokens - thinking_tokens` donne une approximation de la sortie hors raisonnement.

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

5332* **Streaming** : sur les messages assistant en streaming, cette ventilation, comme `output_tokens`, est un espace réservé de `message_start` et ne contient aucun décompte réel ; lisez-la donc depuis le `usage` du message de résultat, comme le décrit [Lire les tokens de sortie depuis le message de résultat](https://code.claude.com/docs/fr/agent-sdk/cost-tracking.md#read-output-tokens-from-the-result-message). Sur le message de résultat, `thinking_tokens` vaut `0` lorsque le modèle ou le fournisseur n'indique aucune ventilation.5338* **Streaming** : sur les messages assistant diffusés en streaming, cette ventilation, comme `output_tokens`, est une valeur provisoire de `message_start` et ne contient aucun décompte réel ; lisez-la donc dans le `usage` du message de résultat, comme le décrit [Lire les tokens de sortie depuis le message de résultat](https://code.claude.com/docs/fr/agent-sdk/cost-tracking.md#read-output-tokens-from-the-result-message). Sur le message de résultat, `thinking_tokens` vaut `0` lorsque le modèle ou le fournisseur n'indique aucune ventilation.

5333* **Cas `null`** : `output_tokens_details` lui-même vaut `null` sur les messages assistant que Claude Code synthétise, comme les messages d'erreur d'API.5339* **Cas `null`** : `output_tokens_details` lui-même vaut `null` sur les messages assistant que Claude Code synthétise, comme les messages d'erreur d'API.

5334 5340 

5335La présence de `fallback_credit` dans `Usage` dépend de la version installée de `@anthropic-ai/sdk`, qui l'a ajouté dans la version 0.115.0.5341La présence de `fallback_credit` dans `Usage` dépend de la version installée de `@anthropic-ai/sdk`, qui l'a ajouté dans la version 0.115.0.

5336 5342 

5337### `CallToolResult`5343### `CallToolResult`

5338 5344 

5339Type de résultat d'outil MCP (issu de `@modelcontextprotocol/sdk/types.js`). `structuredContent` est un objet JSON qui peut être renvoyé en plus de `content`, y compris des blocs d'image. Consultez [Renvoyer des données structurées](https://code.claude.com/docs/fr/agent-sdk/custom-tools.md#return-structured-data).5345Type de résultat d'outil MCP (issu de `@modelcontextprotocol/sdk/types.js`). `structuredContent` est un objet JSON qui peut être renvoyé en plus de `content`, y compris avec des blocs d'image. Consultez [Renvoyer des données structurées](https://code.claude.com/docs/fr/agent-sdk/custom-tools.md#return-structured-data).

5340 5346 

5341```typescript theme={null}5347```typescript theme={null}

5342type CallToolResult = {5348type CallToolResult = {


5351 5357 

5352### `SDKMcpResourceLink`5358### `SDKMcpResourceLink`

5353 5359 

5354Un fichier renvoyé par référence par un outil MCP. Claude Code construit chaque entrée à partir d'un bloc `resource_link` du résultat de l'outil et fournit la liste sous `resourceLinks` dans [`SDKUserMessage.tool_use_result`](#sdkusermessage), ou sous `resource_links` dans [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) lorsque l'appel s'est terminé en arrière-plan. Nécessite l'Agent SDK v0.3.257 ou version ultérieure.5360Un fichier renvoyé par référence par un outil MCP. Claude Code construit chaque entrée à partir d'un bloc `resource_link` du résultat de l'outil et transmet la liste sous `resourceLinks` dans [`SDKUserMessage.tool_use_result`](#sdkusermessage), ou sous `resource_links` dans [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) lorsque l'appel s'est terminé en arrière-plan. Nécessite l'Agent SDK v0.3.257 ou ultérieur.

5355 5361 

5356```typescript theme={null}5362```typescript theme={null}

5357type SDKMcpResourceLink = {5363type SDKMcpResourceLink = {


5365};5371};

5366```5372```

5367 5373 

5368Claude Code supprime un bloc dont `uri` ou `name` n'est pas une chaîne, et omet un champ facultatif dont la valeur n'est pas du type indiqué.5374Claude Code supprime un bloc dont le `uri` ou le `name` n'est pas une chaîne, et omet un champ facultatif dont la valeur n'est pas du type indiqué.

5369 5375 

5370| Champ | Type | Description |5376| Champ | Type | Description |

5371| :- | :- | :- |5377| :- | :- | :- |

5372| `uri` | `string` | URI de la ressource, telle que renvoyée par le serveur |5378| `uri` | `string` | URI de la ressource, telle que renvoyée par le serveur |

5373| `name` | `string` | Nom donné à la ressource par le serveur |5379| `name` | `string` | Nom que le serveur a donné à la ressource |

5374| `title` | `string \| undefined` | Titre d'affichage, lorsque le serveur en a défini un |5380| `title` | `string \| undefined` | Titre d'affichage, lorsque le serveur en a défini un |

5375| `description` | `string \| undefined` | Description, lorsque le serveur en a défini une |5381| `description` | `string \| undefined` | Description, lorsque le serveur en a défini une |

5376| `mimeType` | `string \| undefined` | Type MIME, lorsque le serveur en a défini un |5382| `mimeType` | `string \| undefined` | Type MIME, lorsque le serveur en a défini un |

5377| `size` | `number \| undefined` | Taille en octets, lorsque le serveur l'a définie |5383| `size` | `number \| undefined` | Taille en octets, lorsque le serveur en a défini une |

5378| `annotations` | `Record<string, unknown> \| undefined` | L'objet d'annotations MCP du bloc, lorsque le serveur en a défini un |5384| `annotations` | `Record<string, unknown> \| undefined` | L'objet d'annotations MCP du bloc, lorsque le serveur en a défini un |

5379 5385 

5380### `ThinkingConfig`5386### `ThinkingConfig`

5381 5387 

5382Contrôle le comportement de réflexion/raisonnement de Claude. A priorité sur le paramètre déprécié `maxThinkingTokens`.5388Contrôle le comportement de réflexion/raisonnement de Claude. A priorité sur l'option dépréciée `maxThinkingTokens`.

5383 5389 

5384```typescript theme={null}5390```typescript theme={null}

5385type ThinkingDisplay = "summarized" | "omitted";5391type ThinkingDisplay = "summarized" | "omitted";


5390 | { type: "disabled" }; // No extended thinking5396 | { type: "disabled" }; // No extended thinking

5391```5397```

5392 5398 

5393Le champ facultatif `display` détermine si le texte de réflexion est renvoyé `"summarized"` ou `"omitted"`. Sur Claude Opus 4.7 et versions ultérieures, la valeur par défaut de l'API est `"omitted"` ; définissez donc `"summarized"` pour recevoir le contenu de réflexion dans les blocs `thinking`. Claude Code ne transmet pas votre valeur `display` à certains fournisseurs, comme Amazon Bedrock et Agent Platform de Google Cloud. Sur ces fournisseurs, Opus 4.7 et versions ultérieures renvoient des blocs `thinking` vides même lorsque vous définissez `display` sur `"summarized"`.5399Le champ facultatif `display` détermine si le texte de réflexion est renvoyé sous la forme `"summarized"` ou `"omitted"`. Sur Claude Opus 4.7 et versions ultérieures, la valeur par défaut de l'API est `"omitted"` ; définissez donc `"summarized"` pour recevoir le contenu de réflexion dans les blocs `thinking`. Claude Code ne transmet pas votre valeur `display` à certains fournisseurs, comme Amazon Bedrock et Agent Platform de Google Cloud. Sur ces fournisseurs, Opus 4.7 et les versions ultérieures renvoient des blocs `thinking` vides même si vous définissez `display` sur `"summarized"`.

5394 5400 

5395### `SpawnedProcess`5401### `SpawnedProcess`

5396 5402 

5397Interface pour le lancement de processus personnalisé (utilisée avec l'option `spawnClaudeCodeProcess`). `ChildProcess` satisfait déjà cette interface.5403Interface pour la création de processus personnalisée (utilisée avec l'option `spawnClaudeCodeProcess`). `ChildProcess` satisfait déjà cette interface.

5398 5404 

5399```typescript theme={null}5405```typescript theme={null}

5400interface SpawnedProcess {5406interface SpawnedProcess {


5423 5429 

5424### `SpawnOptions`5430### `SpawnOptions`

5425 5431 

5426Options transmises à la fonction de lancement personnalisée.5432Options transmises à la fonction de création de processus personnalisée.

5427 5433 

5428```typescript theme={null}5434```typescript theme={null}

5429interface SpawnOptions {5435interface SpawnOptions {


5437 5443 

5438> [!NOTE]5444> [!NOTE]

5439>5445>

5440> Le champ `signal` indique à votre fonction de lancement quand arrêter le processus. Transmettez-le comme option `signal` à la fonction `spawn()` de Node, ou transmettez-le au gestionnaire d'arrêt de votre VM ou de votre conteneur.5446> Le champ `signal` indique à votre fonction de création quand arrêter le processus. Transmettez-le comme option `signal` au `spawn()` de Node, ou transmettez-le au gestionnaire d'arrêt de votre VM ou de votre conteneur.

5441>5447>

5442> Ce signal ne se déclenche pas à l'instant où [`Options.abortController`](#options) déclenche l'abandon. Le SDK ferme d'abord le stdin du processus et attend environ deux secondes afin que la CLI puisse s'arrêter proprement, puis déclenche l'abandon sur ce signal. Pour réagir dès que l'appelant déclenche l'abandon, écoutez plutôt votre propre `Options.abortController.signal`, que votre fonction de lancement peut référencer depuis sa portée englobante.5448> Ce signal ne se déclenche pas à l'instant où [`Options.abortController`](#options) est interrompu. Le SDK ferme d'abord le stdin du processus et attend environ deux secondes pour que la CLI puisse s'arrêter proprement, puis interrompt ce signal. Pour réagir dès que l'appelant interrompt, écoutez plutôt votre propre `Options.abortController.signal`, que votre fonction de création peut référencer depuis sa portée englobante.

5443 5449 

5444### `McpSetServersResult`5450### `McpSetServersResult`

5445 5451 


5455 5461 

5456Lorsque vous appelez `setMcpServers()`, Claude Code applique ces règles :5462Lorsque vous appelez `setMcpServers()`, Claude Code applique ces règles :

5457 5463 

5458* **Serveurs que l'appel ne nomme pas** : en dehors d'une [session cloud](https://code.claude.com/docs/fr/claude-code-on-the-web.md), Claude Code déconnecte les serveurs ajoutés par un appel `setMcpServers()` antérieur ainsi que les serveurs SDK in-process, et les répertorie dans `removed`. Les autres serveurs continuent de fonctionner et ne sont pas répertoriés dans `removed`, parmi lesquels les serveurs stdio, HTTP et SSE de l'option [`mcpServers`](#options), les serveurs issus des fichiers de paramètres et les serveurs fournis par des plugins.5464* **Serveurs non nommés par l'appel** : en dehors d'une [session cloud](https://code.claude.com/docs/fr/claude-code-on-the-web.md), Claude Code déconnecte les serveurs ajoutés par un appel `setMcpServers()` antérieur ainsi que les serveurs SDK en processus, et les liste dans `removed`. Les autres serveurs continuent de fonctionner et ne sont pas listés dans `removed`, notamment les serveurs stdio, HTTP et SSE de l'option [`mcpServers`](#options), les serveurs issus des fichiers de paramètres et les serveurs fournis par des plugins.

5459* **Serveurs stdio, HTTP et SSE ajoutés par un appel `setMcpServers()` antérieur** : en dehors d'une session cloud, un serveur que vous nommez à nouveau avec une configuration identique conserve sa connexion et ses outils. Il n'apparaît ni dans `added` ni dans `removed`. Si vous transmettez une configuration modifiée, Claude Code reconnecte le serveur avec cette configuration et le répertorie dans `added`, pas dans `removed`.5465* **Serveurs stdio, HTTP et SSE ajoutés par un appel `setMcpServers()` antérieur** : en dehors d'une session cloud, un serveur que vous nommez à nouveau avec une configuration identique conserve sa connexion et ses outils. Il n'apparaît ni dans `added` ni dans `removed`. Si vous transmettez une configuration modifiée, Claude Code reconnecte le serveur avec cette configuration et le liste dans `added`, pas dans `removed`.

5460* **Serveurs stdio, HTTP et SSE que l'appel nomme et qu'aucun appel antérieur n'a ajoutés** : en dehors d'une session cloud, Claude Code ajoute le serveur et le répertorie dans `added`, ou dans `errors` s'il refuse le serveur.5466* **Serveurs stdio, HTTP et SSE nommés par l'appel et qu'aucun appel antérieur n'a ajoutés** : en dehors d'une session cloud, Claude Code ajoute le serveur et le liste dans `added`, ou dans `errors` s'il refuse le serveur.

5461* **Serveurs SDK in-process que l'appel nomme** : un serveur déjà enregistré via `mcpServers` ou un appel antérieur conserve son instance en cours d'exécution et son délai d'expiration. Si vous transmettez une [liste de politiques `tools`](#mcpsdkserverconfigwithinstance) pour celui-ci, même vide, vous remplacez ses politiques ; sinon, elles restent inchangées. Pour exécuter une nouvelle instance en dehors d'une session cloud, omettez le serveur d'un appel et nommez-le dans le suivant.5467* **Serveurs SDK en processus nommés par l'appel** : un serveur déjà enregistré via `mcpServers` ou un appel antérieur conserve son instance en cours d'exécution et son délai d'expiration. Si vous transmettez une [liste de politiques `tools`](#mcpsdkserverconfigwithinstance) pour lui, même vide, vous remplacez ses politiques ; sinon, elles restent inchangées. Pour exécuter une nouvelle instance en dehors d'une session cloud, omettez le serveur dans un appel et nommez-le dans le suivant.

5462* **Serveurs intégrés démarrés par la CLI au lancement** : si l'appel en nomme un, Claude Code supprime cette entrée et l'indique dans `errors`.5468* **Serveurs intégrés que la CLI a démarrés au lancement** : si l'appel en nomme un, Claude Code supprime cette entrée et la signale dans `errors`.

5463* **Serveurs stdio, HTTP ou SSE qui portent le même nom qu'un serveur d'une portée d'installation MCP telle que `.mcp.json`** : sous ce nom, la session utilise les outils de votre serveur plutôt que ceux du [serveur de la portée d'installation](https://code.claude.com/docs/fr/mcp.md#mcp-installation-scopes). Avant Claude Code v2.1.305, Claude Code pouvait déconnecter votre serveur et connecter le serveur de la portée d'installation lorsque votre application [rechargeait les plugins](#query-object).5469* **Serveurs stdio, HTTP ou SSE portant le même nom qu'un serveur issu d'une portée d'installation MCP comme `.mcp.json`** : sous ce nom, la session utilise les outils de votre serveur plutôt que ceux du [serveur de la portée d'installation](https://code.claude.com/docs/fr/mcp.md#mcp-installation-scopes). Avant Claude Code v2.1.305, Claude Code pouvait déconnecter votre serveur et connecter le serveur de la portée d'installation lorsque votre application [rechargeait les plugins](#query-object).

5464 5470 

5465La promesse est résolue une fois que les serveurs stdio, HTTP et SSE nouvellement ajoutés se sont connectés ou ont échoué ; les outils des serveurs connectés sont donc disponibles au tour suivant.5471La promesse se résout une fois que les serveurs stdio, HTTP et SSE nouvellement ajoutés se sont connectés ou ont échoué ; les outils des serveurs connectés sont donc disponibles au tour suivant.

5466 5472 

5467`added` répertorie les serveurs que Claude Code a ajoutés ou remplacés, qu'ils se soient connectés ou non. Un serveur dont la connexion a échoué apparaît à la fois dans `added` et dans `errors`, avec le texte de l'échec sous `errors` et une ligne `failed` dans [`mcpServerStatus()`](#methods). Avant Claude Code v2.1.257, un serveur dont la tentative de connexion levait une exception n'était indiqué que sous `errors`.5473`added` liste les serveurs que Claude Code a ajoutés ou remplacés, qu'ils se soient connectés ou non. Un serveur dont la connexion a échoué apparaît à la fois dans `added` et dans `errors`, avec le texte de l'échec sous `errors` et une ligne `failed` dans [`mcpServerStatus()`](#methods). Avant Claude Code v2.1.257, un serveur dont la tentative de connexion levait une exception n'était signalé que sous `errors`.

5468 5474 

5469### `RewindFilesResult`5475### `RewindFilesResult`

5470 5476 


5481};5487};

5482```5488```

5483 5489 

5484`skippedLinks` compte les chemins suivis que le retour en arrière a refusé de restaurer ou de supprimer pour des raisons de sécurité liées aux liens : un lien symbolique, un lien physique ou tout autre fichier non régulier au chemin suivi, un répertoire parent qui ne se résout plus vers l'emplacement qu'il désignait lors de la création du checkpoint, ou une sauvegarde qui n'a pas pu être lue en toute sécurité. Le champ nécessite Claude Code v2.1.216 ou version ultérieure. Un appel d'aperçu avec `rewindFiles(userMessageId, { dryRun: true })` ne le définit jamais.5490`skippedLinks` compte les chemins suivis que le retour en arrière a refusé de restaurer ou de supprimer pour des raisons de sécurité liées aux liens : un lien symbolique, un lien physique ou un autre fichier non régulier au chemin suivi, un répertoire parent qui ne se résout plus vers l'emplacement qu'il désignait lors de la création du checkpoint, ou une sauvegarde qui n'a pas pu être lue en toute sécurité. Le champ nécessite Claude Code v2.1.216 ou ultérieur. Un appel de prévisualisation avec `rewindFiles(userMessageId, { dryRun: true })` ne le définit jamais.

5485 5491 

5486### `SDKStatusMessage`5492### `SDKStatusMessage`

5487 5493 


5500 5506 

5501### `SDKTaskNotificationMessage`5507### `SDKTaskNotificationMessage`

5502 5508 

5503Notification émise lorsqu'une tâche en arrière-plan se termine, échoue ou est arrêtée. Les tâches en arrière-plan incluent les commandes Bash `run_in_background`, les surveillances [Monitor](#monitor) et les sous-agents en arrière-plan. Pour les champs `run_id` et `ambient`, consultez [`SDKTaskStartedMessage`](#sdktaskstartedmessage), qui les définit ainsi que leurs exigences de version.5509Notification émise lorsqu'une tâche en arrière-plan se termine, échoue ou est arrêtée. Les tâches en arrière-plan comprennent les commandes Bash `run_in_background`, les surveillances [Monitor](#monitor) et les sous-agents en arrière-plan. Pour les champs `run_id` et `ambient`, consultez [`SDKTaskStartedMessage`](#sdktaskstartedmessage), qui les définit ainsi que leurs exigences de version.

5504 5510 

5505```typescript theme={null}5511```typescript theme={null}

5506type SDKTaskNotificationMessage = {5512type SDKTaskNotificationMessage = {


5525};5531};

5526```5532```

5527 5533 

5528`reason` est défini lorsqu'une tâche se termine pour une cause autre que sa propre complétion, son échec ou son arrêt, et nécessite l'Agent SDK v0.3.273 ou version ultérieure. Claude Code ne le définit que dans les sessions qui se connectent via claude.ai : les sessions cloud, y compris celles exécutées sur des runners auto-hébergés, et les sessions Remote Control. Un appel `query()` local ne le définit jamais. Son unique valeur, `worker_restart`, signifie que le processus Claude Code qui exécutait la tâche a redémarré. La notification porte le statut `"stopped"` ; considérez donc la tâche comme ni terminée ni échouée.5534`reason` est défini lorsqu'une tâche se termine pour une cause autre que sa propre réussite, son échec ou son arrêt, et nécessite l'Agent SDK v0.3.273 ou ultérieur. Claude Code ne le définit que dans les sessions qui se connectent via claude.ai : les sessions cloud, y compris celles exécutées sur des runners auto-hébergés, et les sessions Remote Control. Un appel `query()` local ne le définit jamais. Sa seule valeur, `worker_restart`, signifie que le processus Claude Code qui exécutait la tâche a redémarré. La notification porte le statut `"stopped"` ; traitez donc la tâche comme ni terminée ni échouée.

5529 5535 

5530Lorsque Claude Code [déplace un long appel d'outil MCP en arrière-plan](https://code.claude.com/docs/fr/mcp.md#automatic-backgrounding-of-long-tool-calls), le bloc `tool_result` de cet appel ne contient qu'un espace réservé, et le résultat réel de l'appel arrive dans cette notification. Associez la notification à l'appel grâce à `tool_use_id`. Sur une notification `completed`, `resource_links` répertorie les fichiers renvoyés par référence par l'outil sous forme d'entrées [`SDKMcpResourceLink`](#sdkmcpresourcelink), avec les mêmes limites de 50 liens et 64 Kio que [`tool_use_result.resourceLinks`](#sdkusermessage). Claude Code omet `resource_links` lorsque le résultat ne contenait aucun lien et sur les notifications de tâches qui ne sont pas des appels d'outils MCP. `resource_links` nécessite l'Agent SDK v0.3.257 ou version ultérieure.5536Lorsque Claude Code [déplace un appel d'outil MCP long en arrière-plan](https://code.claude.com/docs/fr/mcp.md#automatic-backgrounding-of-long-tool-calls), le bloc `tool_result` de cet appel ne contient qu'un espace réservé et le résultat réel de l'appel arrive dans cette notification. Associez la notification à l'appel grâce à `tool_use_id`. Sur une notification `completed`, `resource_links` liste les fichiers renvoyés par référence par l'outil sous forme d'entrées [`SDKMcpResourceLink`](#sdkmcpresourcelink), avec les mêmes limites de 50 liens et 64 Kio que [`tool_use_result.resourceLinks`](#sdkusermessage). Claude Code omet `resource_links` lorsque le résultat ne contenait aucun lien, ainsi que sur les notifications de tâches qui ne sont pas des appels d'outils MCP. `resource_links` nécessite l'Agent SDK v0.3.257 ou ultérieur.

5531 5537 

5532Claude Code ajoute un avis au début de chaque notification de tâche qu'il envoie au modèle, à l'exception des livraisons marquées du [sous-type `scheduled-trigger`](#task-notification-subkinds), qui portent plutôt un cadrage de tâche assignée. L'avis indique qu'aucune intervention humaine n'a eu lieu, afin que le modèle ne traite pas la notification comme une instruction ou une approbation de l'utilisateur.5538Claude Code ajoute un avertissement au début de chaque notification de tâche qu'il envoie au modèle, sauf pour les livraisons marquées du [sous-type `scheduled-trigger`](#task-notification-subkinds), qui présentent à la place la notification comme une tâche assignée. L'avertissement indique qu'aucune saisie humaine n'a eu lieu, afin que le modèle ne traite pas la notification comme une instruction ou une approbation de l'utilisateur.

5533 5539 

5534Pour détecter un tour de notification de tâche, vérifiez `origin.kind === "task-notification"` sur le [`SDKUserMessage`](#sdkusermessage) ou le [`SDKResultMessage`](#sdkresultmessage) plutôt que de vous fier au texte de l'avis. Lisez `subkind` dans le même champ si vous avez besoin de savoir ce qui l'a déclenché. Avant la v2.1.205, Claude Code n'ajoutait pas l'avis aux notifications arrivées pendant que la session était inactive.5540Pour détecter un tour de notification de tâche, vérifiez `origin.kind === "task-notification"` sur le [`SDKUserMessage`](#sdkusermessage) ou le [`SDKResultMessage`](#sdkresultmessage) plutôt que de vous fier au texte de l'avertissement. Lisez `subkind` dans le même champ si vous devez savoir ce qui l'a déclenchée. Avant la v2.1.205, Claude Code n'ajoutait pas l'avertissement aux notifications arrivées pendant que la session était inactive.

5535 5541 

5536### `SDKToolUseSummaryMessage`5542### `SDKToolUseSummaryMessage`

5537 5543 


5551 5557 

5552Émis lorsqu'un hook commence à s'exécuter.5558Émis lorsqu'un hook commence à s'exécuter.

5553 5559 

5554Claude Code transmet ce message, [`SDKHookProgressMessage`](#sdkhookprogressmessage) et [`SDKHookResponseMessage`](#sdkhookresponsemessage) au flux de messages immédiatement, y compris pendant qu'un hook `SessionStart` ou `Setup` est encore en cours d'exécution lors du démarrage de la session. Claude Code v2.1.169 à v2.1.203 transmettait ces messages en un seul lot après la fin d'un hook `SessionStart` ou `Setup` ; la v2.1.204 a rétabli la transmission en direct.5560Claude Code transmet ce message, [`SDKHookProgressMessage`](#sdkhookprogressmessage) et [`SDKHookResponseMessage`](#sdkhookresponsemessage) au flux de messages immédiatement, y compris pendant qu'un hook `SessionStart` ou `Setup` est encore en cours d'exécution lors du démarrage de la session. Les versions v2.1.169 à v2.1.203 de Claude Code transmettaient ces messages en un seul lot une fois le hook `SessionStart` ou `Setup` terminé ; la v2.1.204 a rétabli la transmission en direct.

5561 

5562Si vous démarrez la session avec [`startup()`](#startup), ces messages vous parviennent une fois que vous appelez `.query()` et itérez sur le résultat.

5555 5563 

5556```typescript theme={null}5564```typescript theme={null}

5557type SDKHookStartedMessage = {5565type SDKHookStartedMessage = {


5607 5615 

5608### `SDKToolProgressMessage`5616### `SDKToolProgressMessage`

5609 5617 

5610Émis périodiquement pendant l'exécution d'un outil pour indiquer la progression.5618Émis périodiquement pendant l'exécution d'un outil pour indiquer sa progression.

5611 5619 

5612```typescript theme={null}5620```typescript theme={null}

5613type SDKToolProgressMessage = {5621type SDKToolProgressMessage = {


5632};5640};

5633```5641```

5634 5642 

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

5636 5644 

5637Sur les messages `tool_progress` de l'outil Agent autres que les heartbeats, `subagent_type` désigne le type du sous-agent en cours d'exécution, comme `general-purpose`. `subagent_retry` est présent pendant que ce sous-agent attend la fin d'un délai d'attente consécutif à une erreur d'API, comme une limite de débit ou une surcharge, avec un message par nouvelle tentative. Les deux champs nécessitent l'Agent SDK v0.3.214 ou version ultérieure.5645Sur les messages `tool_progress` de l'outil Agent autres que les heartbeats, `subagent_type` nomme le type de sous-agent en cours d'exécution, comme `general-purpose`. `subagent_retry` est présent pendant que ce sous-agent attend la fin d'un délai d'attente consécutif à une erreur d'API, comme une limite de débit ou une surcharge, avec un message par nouvelle tentative. Les deux champs nécessitent l'Agent SDK v0.3.214 ou ultérieur.

5638 5646 

5639Pour afficher un indicateur de nouvelle tentative à partir de `subagent_retry` :5647Pour afficher un indicateur de nouvelle tentative à partir de `subagent_retry` :

5640 5648 

5641* Suivez l'indicateur par `parent_tool_use_id`, qui est unique pour chaque sous-agent. `tool_use_id` est partagé par les sous-agents parallèles issus d'un même tour de l'assistant ; un suivi basé sur celui-ci permettrait donc à la mise à jour d'un sous-agent d'effacer l'indicateur d'un autre.5649* Suivez l'indicateur par `parent_tool_use_id`, qui est unique pour chaque sous-agent. `tool_use_id` est partagé par les sous-agents parallèles issus d'un même tour de l'assistant ; un suivi par ce champ permettrait donc à la mise à jour d'un sous-agent d'effacer l'indicateur d'un autre.

5642* Effacez l'indicateur lorsqu'un `tool_progress` ultérieur pour le même `parent_tool_use_id` arrive sans `subagent_retry` ni `heartbeat: true`, ou lorsque le message de résultat de l'outil arrive. Les trames avec `heartbeat: true` signalent uniquement que l'appel est actif ; conservez donc l'indicateur lorsque l'une d'elles arrive. `attempt` peut dépasser `max_retries` en cas de nouvelles tentatives persistantes ; ne vous basez donc pas sur les compteurs pour effacer l'indicateur.5650* Effacez l'indicateur lorsqu'un `tool_progress` ultérieur pour le même `parent_tool_use_id` arrive sans `subagent_retry` ni `heartbeat: true`, ou lorsque le message de résultat de l'outil arrive. Les trames avec `heartbeat: true` indiquent uniquement que l'activité se poursuit ; conservez donc l'indicateur lorsqu'une telle trame arrive. `attempt` peut dépasser `max_retries` en cas de nouvelles tentatives persistantes ; ne déduisez donc pas l'effacement des compteurs.

5643* Traitez `error_category` comme un jeton permettant de choisir votre propre texte de message, et non comme un texte à afficher. Les valeurs sont `rate_limit`, `overloaded`, `authentication_failed`, `server_error`, `cloud_credential_error` et `unknown`. Traitez une valeur que vous ne reconnaissez pas comme vous traitez `unknown`, car des versions ultérieures peuvent ajouter des valeurs.5651* Traitez `error_category` comme un jeton servant à choisir votre propre texte de message, et non comme un texte à afficher. Les valeurs sont `rate_limit`, `overloaded`, `authentication_failed`, `server_error`, `cloud_credential_error` et `unknown`. Traitez une valeur que vous ne reconnaissez pas comme `unknown`, car les versions ultérieures peuvent ajouter des valeurs.

5644 5652 

5645### `SDKAuthStatusMessage`5653### `SDKAuthStatusMessage`

5646 5654 


5679};5687};

5680```5688```

5681 5689 

5682`run_id` identifie une exécution de la tâche. Lorsqu'une tâche s'exécute à nouveau sous le même `task_id`, comme un [sous-agent que Claude reprend](https://code.claude.com/docs/fr/agent-sdk/subagents.md#resume-subagents), la nouvelle exécution reçoit un nouveau `run_id`. Le champ nécessite l'Agent SDK v0.3.292 ou version ultérieure. Utilisez-le pour distinguer les exécutions d'une même tâche :5690`run_id` identifie une exécution de la tâche. Lorsqu'une tâche s'exécute à nouveau sous le même `task_id`, comme un [sous-agent que Claude reprend](https://code.claude.com/docs/fr/agent-sdk/subagents.md#resume-subagents), la nouvelle exécution reçoit un nouveau `run_id`. Le champ nécessite l'Agent SDK v0.3.292 ou ultérieur. Utilisez-le pour distinguer les exécutions d'une même tâche :

5683 5691 

5684* **Associer les messages à une exécution** : les messages `task_started`, [`task_progress`](#sdktaskprogressmessage), [`task_updated`](#sdktaskupdatedmessage) et [`task_notification`](#sdktasknotificationmessage) d'une même exécution portent le même `run_id`. L'entrée de l'exécution dans chaque [`SDKBackgroundTasksChangedMessage`](#sdkbackgroundtaskschangedmessage) le porte également, tout comme le [`runId`](#task-notification-subkinds) présent dans l'origine du message utilisateur qui transmet la notification de l'exécution.5692* **Associer les messages à une exécution** : les messages `task_started`, [`task_progress`](#sdktaskprogressmessage), [`task_updated`](#sdktaskupdatedmessage) et [`task_notification`](#sdktasknotificationmessage) d'une même exécution portent le même `run_id`. L'entrée de l'exécution dans chaque [`SDKBackgroundTasksChangedMessage`](#sdkbackgroundtaskschangedmessage) le porte aussi, tout comme le [`runId`](#task-notification-subkinds) de l'origine du message utilisateur qui transmet la notification de l'exécution.

5685* **Détecter un message tardif** : comparés comme de simples chaînes, les identifiants d'exécution d'une même tâche se trient dans l'ordre de démarrage des exécutions ; un message dont le `run_id` se trie avant l'exécution que vous affichez provient donc d'une exécution antérieure. En dehors de cette comparaison, traitez la valeur comme opaque.5693* **Détecter un message tardif** : comparés comme de simples chaînes, les ID d'exécution d'une même tâche se trient dans l'ordre de démarrage des exécutions ; un message dont le `run_id` se trie avant l'exécution que vous affichez provient donc d'une exécution antérieure. En dehors de cette comparaison, traitez la valeur comme opaque.

5686* **Se rabattre sur `task_id`** : lorsqu'un message ne porte aucun `run_id`, comme le `task_notification` qu'une session reprise émet pour clôturer une tâche démarrée par le processus précédent, attribuez-le par `task_id`.5694* **Se rabattre sur `task_id`** : lorsqu'un message ne porte aucun `run_id`, comme le `task_notification` qu'une session reprise émet pour clôturer une tâche démarrée par le processus précédent, attribuez-le par `task_id`.

5687 5695 

5688Par exemple, ces trois messages, réduits à leurs champs d'identification, proviennent d'un sous-agent en arrière-plan que Claude a repris une fois. Les deux messages `task_started` partagent un `task_id`, et la notification qui a mis fin à la première exécution porte l'identifiant de la première exécution :5696Par exemple, ces trois messages, réduits à leurs champs d'identification, proviennent d'un sous-agent en arrière-plan que Claude a repris une fois. Les deux messages `task_started` partagent un `task_id`, et la notification qui a clôturé la première exécution porte l'ID de cette première exécution :

5689 5697 

5690```json theme={null}5698```json theme={null}

5691{"subtype": "task_started", "task_id": "a5c2e8f41b09d7a36", "run_id": "0mubbs7i8-6f0c2d41"}5699{"subtype": "task_started", "task_id": "a5c2e8f41b09d7a36", "run_id": "0mubbs7i8-6f0c2d41"}


5693{"subtype": "task_started", "task_id": "a5c2e8f41b09d7a36", "run_id": "0mubc18m1-b7719e05"}5701{"subtype": "task_started", "task_id": "a5c2e8f41b09d7a36", "run_id": "0mubc18m1-b7719e05"}

5694```5702```

5695 5703 

5696`ambient` vaut `true` pour les tâches qui ne font pas partie du travail de la session, comme les tâches que Claude Code exécute pour son propre fonctionnement. Les observateurs de mise à jour en direct sont également ambiants, y compris ceux demandés par l'utilisateur. Excluez les tâches ambiantes des indicateurs d'activité. Le champ nécessite l'Agent SDK v0.3.247 ou version ultérieure.5704`ambient` vaut `true` pour les tâches qui ne font pas partie du travail de la session, comme les tâches que Claude Code exécute pour son propre fonctionnement. Les observateurs de mises à jour en direct sont également ambiants, y compris ceux demandés par l'utilisateur. Excluez les tâches ambiantes des indicateurs d'activité. Le champ nécessite l'Agent SDK v0.3.247 ou ultérieur.

5697 5705 

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

5699 5707 

5700`is_backgrounded` et `spawn_depth` décrivent la manière dont Claude Code a démarré la tâche. Les deux champs nécessitent l'Agent SDK v0.3.238 ou version ultérieure.5708`is_backgrounded` et `spawn_depth` décrivent comment Claude Code a démarré la tâche. Les deux champs nécessitent l'Agent SDK v0.3.238 ou ultérieur.

5701 5709 

5702* `is_backgrounded` : Claude Code le définit sur les tâches `"local_agent"` et `"local_bash"`. `true` signifie que la tâche s'exécute en arrière-plan. `false` signifie que la tâche s'exécute au premier plan, et l'appel d'outil qui l'a démarrée reste bloqué jusqu'à ce que la tâche se termine ou passe en arrière-plan.5710* `is_backgrounded` : Claude Code le définit sur les tâches `"local_agent"` et `"local_bash"`. `true` signifie que la tâche s'exécute en arrière-plan. `false` signifie que la tâche s'exécute au premier plan, et l'appel d'outil qui l'a démarrée reste bloqué jusqu'à ce que la tâche se termine ou passe en arrière-plan.

5703* `spawn_depth` : Claude Code le définit uniquement sur les tâches `"local_agent"`. Un sous-agent lancé par le thread principal a une profondeur de `1`. Un sous-agent lancé par un sous-agent de profondeur `1` a une profondeur de `2`, et ainsi de suite.5711* `spawn_depth` : Claude Code le définit uniquement sur les tâches `"local_agent"`. Un sous-agent créé par le thread principal a une profondeur de `1`. Un sous-agent créé par un sous-agent de profondeur `1` a une profondeur de `2`, et ainsi de suite.

5704 5712 

5705Un [sous-agent repris](https://code.claude.com/docs/fr/agent-sdk/subagents.md#resume-subagents) indique toujours `is_backgrounded: true`, car Claude Code exécute chaque sous-agent repris en arrière-plan. Lorsqu'une tâche au premier plan passe ensuite en arrière-plan, Claude Code indique la nouvelle valeur de `is_backgrounded` dans un message [`task_updated`](#sdktaskupdatedmessage) plutôt que d'envoyer un second `task_started`.5713Un [sous-agent repris](https://code.claude.com/docs/fr/agent-sdk/subagents.md#resume-subagents) indique toujours `is_backgrounded: true`, car Claude Code exécute chaque sous-agent repris en arrière-plan. Lorsqu'une tâche au premier plan passe ultérieurement en arrière-plan, Claude Code indique la nouvelle valeur de `is_backgrounded` dans un message [`task_updated`](#sdktaskupdatedmessage) plutôt que d'envoyer un second `task_started`.

5706 5714 

5707`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 l'Agent SDK v0.3.292 ou version ultérieure. Il est absent lorsque :5715`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 l'Agent SDK v0.3.292 ou ultérieur. Il est absent lorsque :

5708 5716 

5709* Le thread principal a lancé la tâche5717* Le thread principal a lancé la tâche

5710* Claude Code ne suit plus la tâche parente5718* Claude Code ne suit plus la tâche parente

5711* Un [coéquipier](https://code.claude.com/docs/fr/agent-teams.md) ou un agent au sein d'un workflow a lancé la tâche5719* Un [coéquipier](https://code.claude.com/docs/fr/agent-teams.md) ou un agent au sein d'un workflow a lancé la tâche

5712 5720 

5713Le parent peut être une tâche au premier plan ou une tâche déjà terminée ; traitez donc un identifiant que vous ne reconnaissez pas comme une absence de parent.5721Le 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 une absence de parent.

5714 5722 

5715### `SDKTaskProgressMessage`5723### `SDKTaskProgressMessage`

5716 5724 

5717Émis périodiquement pendant l'exécution d'un sous-agent ou d'une tâche en arrière-plan. Pour le champ `run_id`, consultez [`SDKTaskStartedMessage`](#sdktaskstartedmessage), qui le définit ainsi que son exigence de version.5725Émis périodiquement pendant l'exécution d'un sous-agent ou d'une tâche en arrière-plan. Pour le champ `run_id`, consultez [`SDKTaskStartedMessage`](#sdktaskstartedmessage), qui le définit ainsi que son exigence de version.

5718 5726 

5719Pour une tâche de sous-agent, le champ `summary` contient un résumé de progression généré par le modèle et n'est renseigné que lorsque [`agentProgressSummaries`](#options) est activé. Pour un [appel d'outil MCP passé en arrière-plan](https://code.claude.com/docs/fr/mcp.md#automatic-backgrounding-of-long-tool-calls), `summary` contient la dernière progression indiquée par le serveur MCP et ne dépend pas de cette option.5727Pour une tâche de sous-agent, le champ `summary` contient un résumé de progression généré par le modèle et n'est renseigné que lorsque [`agentProgressSummaries`](#options) est activé. Pour un [appel d'outil MCP passé en arrière-plan](https://code.claude.com/docs/fr/mcp.md#automatic-backgrounding-of-long-tool-calls), `summary` contient la dernière progression signalée par le serveur MCP et ne dépend pas de cette option.

5720 5728 

5721```typescript theme={null}5729```typescript theme={null}

5722type SDKTaskProgressMessage = {5730type SDKTaskProgressMessage = {


5741 5749 

5742### `SDKTaskUpdatedMessage`5750### `SDKTaskUpdatedMessage`

5743 5751 

5744Émis lorsque l'état d'une tâche en arrière-plan change, par exemple lorsqu'elle passe de `running` à `completed`. Fusionnez `patch` dans votre table locale de tâches indexée par `task_id`. Le champ `end_time` est un horodatage Unix epoch en millisecondes, comparable à `Date.now()`. Pour le champ `run_id`, consultez [`SDKTaskStartedMessage`](#sdktaskstartedmessage), qui le définit ainsi que son exigence de version.5752Émis lorsque l'état d'une tâche en arrière-plan change, par exemple lorsqu'elle passe de `running` à `completed`. Fusionnez `patch` dans votre table locale de tâches indexée par `task_id`. Le champ `end_time` est un horodatage Unix en millisecondes, comparable à `Date.now()`. Pour le champ `run_id`, consultez [`SDKTaskStartedMessage`](#sdktaskstartedmessage), qui le définit ainsi que son exigence de version.

5745 5753 

5746```typescript theme={null}5754```typescript theme={null}

5747type SDKTaskUpdatedMessage = {5755type SDKTaskUpdatedMessage = {


5764 5772 

5765### `SDKBackgroundTasksChangedMessage`5773### `SDKBackgroundTasksChangedMessage`

5766 5774 

5767Émis chaque fois que l'ensemble des tâches en arrière-plan actives change : une tâche démarre, se termine ou est tuée ; un agent au premier plan passe en arrière-plan ; ou le champ `description`, `ambient` ou `parent_task_id` d'une tâche change. Pour les champs `run_id` et `parent_task_id` de chaque entrée, consultez [`SDKTaskStartedMessage`](#sdktaskstartedmessage), qui les définit ainsi que leurs exigences de version.5775Émis chaque fois que l'ensemble des tâches en arrière-plan actives change : une tâche démarre, se termine ou est interrompue ; un agent au premier plan passe en arrière-plan ; ou le champ `description`, `ambient` ou `parent_task_id` d'une tâche change. Pour les champs `run_id` et `parent_task_id` de chaque entrée, consultez [`SDKTaskStartedMessage`](#sdktaskstartedmessage), qui les définit ainsi que leurs exigences de version.

5768 5776 

5769Le tableau `tasks` représente l'ensemble complet des tâches actives. Remplacez tout ensemble en cache par chaque payload au lieu d'apparier les événements `task_started` et `task_notification`, afin que le prochain changement de composition corrige tout événement manqué.5777Le tableau `tasks` constitue l'ensemble actif complet. Remplacez tout ensemble mis en cache par chaque payload au lieu d'associer les événements `task_started` et `task_notification`, afin que le prochain changement de composition corrige tout événement que vous auriez manqué.

5770 5778 

5771Lorsqu'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 par rapport aux événements propres à chaque tâche n'est pas spécifié par ailleurs.5779Lorsqu'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. Pour le reste, l'ordre par rapport aux événements propres à chaque tâche n'est pas spécifié.

5772 5780 

5773Rien n'est émis au démarrage. Réinitialisez l'ensemble à vide chaque fois que le processus CLI de la session démarre ou redémarre, et laissez le prochain changement de composition le remplir à nouveau.5781Rien 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 de composition le remplir à nouveau.

5774 5782 

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

5776 5784 

5777Nécessite Claude Code v2.1.203 ou version ultérieure.5785Nécessite Claude Code v2.1.203 ou ultérieur.

5778 5786 

5779```typescript theme={null}5787```typescript theme={null}

5780type SDKBackgroundTasksChangedMessage = {5788type SDKBackgroundTasksChangedMessage = {


5794};5802};

5795```5803```

5796 5804 

5797`subagent_type` désigne le type de sous-agent sur les entrées dont le [`task_type`](#sdktaskstartedmessage) vaut `"local_agent"`, comme `general-purpose` ou le nom d'un sous-agent personnalisé. Le champ nécessite l'Agent SDK v0.3.293 ou version ultérieure.5805`subagent_type` nomme le type de sous-agent sur les entrées dont le [`task_type`](#sdktaskstartedmessage) vaut `"local_agent"`, comme `general-purpose` ou le nom d'un sous-agent personnalisé. Le champ nécessite l'Agent SDK v0.3.293 ou ultérieur.

5798 5806 

5799### `SDKThinkingTokensMessage`5807### `SDKThinkingTokensMessage`

5800 5808 

5801Émis pendant que Claude produit un bloc de réflexion, y compris un bloc expurgé. `estimated_tokens` est une estimation cumulée des tokens de réflexion générés jusqu'ici dans le bloc actuel, et `estimated_tokens_delta` est l'incrément porté par cette trame. Utilisez ces estimations pour l'affichage de la progression.5809Émis pendant que Claude produit un bloc de réflexion, y compris un bloc expurgé. `estimated_tokens` est une estimation courante des tokens de réflexion générés jusqu'ici dans le bloc en cours, et `estimated_tokens_delta` est l'incrément porté par cette trame. Utilisez ces estimations pour afficher la progression.

5802 5810 

5803Lorsque le modèle ou le fournisseur indique une ventilation, le décompte final pour la boucle d'agent de niveau supérieur est le [`usage.output_tokens_details.thinking_tokens`](#usage) du message de résultat, qui [n'inclut pas les tokens des sous-agents](https://code.claude.com/docs/fr/agent-sdk/cost-tracking.md#get-the-total-cost-of-a-query).5811Lorsque le modèle ou le fournisseur indique une ventilation, le décompte final pour la boucle d'agent de premier niveau est le [`usage.output_tokens_details.thinking_tokens`](#usage) du message de résultat, qui [n'inclut pas les tokens des sous-agents](https://code.claude.com/docs/fr/agent-sdk/cost-tracking.md#get-the-total-cost-of-a-query).

5804 5812 

5805Nécessite Claude Code v2.1.153 ou version ultérieure.5813Nécessite Claude Code v2.1.153 ou ultérieur.

5806 5814 

5807```typescript theme={null}5815```typescript theme={null}

5808type SDKThinkingTokensMessage = {5816type SDKThinkingTokensMessage = {


5822 5830 

5823Le champ `state` contient l'une de ces valeurs :5831Le champ `state` contient l'une de ces valeurs :

5824 5832 

5825* `running` : la session est en cours de travail.5833* `running` : la session est en train de travailler.

5826* `idle` : Claude Code attend votre prochain prompt.5834* `idle` : Claude Code attend votre prochain prompt.

5827* `requires_action` : la session est bloquée dans l'attente d'une réponse à une demande qu'elle a envoyée à votre hôte, comme une demande de permission.5835* `requires_action` : la session est bloquée dans l'attente d'une réponse à une demande qu'elle a envoyée à votre hôte, comme une demande de permission.

5828 5836 

5829Le message `idle` d'un tour et son message `result` peuvent arriver dans n'importe quel ordre. Pour déterminer si `idle` attend la fin d'un travail en arrière-plan, comme un sous-agent en arrière-plan ou l'exécution d'un [workflow](https://code.claude.com/docs/fr/workflows.md), consultez [`CLAUDE_CODE_BG_TASKS_REPORT_RUNNING`](https://code.claude.com/docs/fr/env-vars#variables).5837Le message `idle` d'un tour et son message `result` peuvent arriver dans n'importe quel ordre. Pour modifier le fait que `idle` attende ou non le travail en arrière-plan, comme un sous-agent en arrière-plan ou l'exécution d'un [workflow](https://code.claude.com/docs/fr/workflows.md), consultez [`CLAUDE_CODE_BG_TASKS_REPORT_RUNNING`](https://code.claude.com/docs/fr/env-vars#variables).

5830 5838 

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

5832type SDKSessionStateChangedMessage = {5840type SDKSessionStateChangedMessage = {


5840 5848 

5841### `SDKFilesPersistedEvent`5849### `SDKFilesPersistedEvent`

5842 5850 

5843Émis lorsque les checkpoints de fichiers sont persistés sur le disque.5851Émis lorsque des checkpoints de fichiers sont enregistrés sur le disque.

5844 5852 

5845```typescript theme={null}5853```typescript theme={null}

5846type SDKFilesPersistedEvent = {5854type SDKFilesPersistedEvent = {


5856 5864 

5857### `SDKRateLimitEvent`5865### `SDKRateLimitEvent`

5858 5866 

5859Émis lorsque la session rencontre une limite de débit.5867Émis lorsque la session atteint une limite de débit.

5860 5868 

5861```typescript theme={null}5869```typescript theme={null}

5862type SDKRateLimitEvent = {5870type SDKRateLimitEvent = {


5874};5882};

5875```5883```

5876 5884 

5877Lorsque `errorCode` vaut `"credits_required"`, le refus provient d'un abonnement claude.ai dont l'utilisation incluse est épuisée, et la session ne peut pas continuer tant que l'utilisateur n'a pas acheté de crédits d'utilisation. `canUserPurchaseCredits` indique si l'utilisateur authentifié peut acheter des crédits pour le compte, et `hasChargeableSavedPaymentMethod` indique si un moyen de paiement est enregistré. Ces trois champs sont absents des événements de limite de débit qui ne sont pas des refus liés aux crédits. Nécessite Claude Code v2.1.181 ou version ultérieure.5885Lorsque `errorCode` vaut `"credits_required"`, le refus provient d'un abonnement claude.ai dont l'utilisation incluse est épuisée, et la session ne peut pas continuer tant que l'utilisateur n'a pas acheté de crédits d'utilisation. `canUserPurchaseCredits` indique si l'utilisateur authentifié peut acheter des crédits pour le compte, et `hasChargeableSavedPaymentMethod` indique si un moyen de paiement est enregistré. Les trois champs sont absents des événements de limite de débit qui ne sont pas des refus pour crédits requis. Nécessite Claude Code v2.1.181 ou ultérieur.

5878 5886 

5879### `SDKLocalCommandOutputMessage`5887### `SDKLocalCommandOutputMessage`

5880 5888 

5881Claude Code n'émet pas ce type de message. Lorsque vous envoyez une commande telle que `/context` ou `/usage` en tant que prompt, sa sortie arrive sous la forme d'un [`SDKAssistantMessage`](#sdkassistantmessage).5889Claude Code n'émet pas ce type de message. Lorsque vous envoyez une commande comme `/context` ou `/usage` en tant que prompt, sa sortie arrive sous forme de [`SDKAssistantMessage`](#sdkassistantmessage).

5882 5890 

5883```typescript theme={null}5891```typescript theme={null}

5884type SDKLocalCommandOutputMessage = {5892type SDKLocalCommandOutputMessage = {


5892 5900 

5893### `SDKCommandsChangedMessage`5901### `SDKCommandsChangedMessage`

5894 5902 

5895Émis lorsque l'ensemble des commandes disponibles change en cours de session, par exemple lorsque Claude Code découvre des skills au moment où l'agent entre dans un sous-répertoire. Le tableau `commands` est la liste complète mise à jour ; remplacez donc toute liste de commandes en cache par ce payload. Appeler [`supportedCommands()`](#query-object) après ce message renvoie la même liste mise à jour, car la méthode suit la dernière mise à jour reçue ; cela nécessite l'Agent SDK v0.3.216 ou version ultérieure. Dans les versions antérieures du SDK, `supportedCommands()` renvoie l'instantané capturé à l'initialisation et ne reflète jamais les changements en cours de session.5903Émis lorsque l'ensemble des commandes disponibles change en cours de session, par exemple lorsque Claude Code découvre des skills à mesure que l'agent entre dans un sous-répertoire. Le tableau `commands` est la liste complète mise à jour ; remplacez donc toute liste de commandes mise en cache par ce payload. Appeler [`supportedCommands()`](#query-object) après ce message renvoie la même liste mise à jour, car la méthode suit le dernier envoi ; cela nécessite l'Agent SDK v0.3.216 ou ultérieur. Dans les versions antérieures du SDK, `supportedCommands()` renvoie l'instantané capturé à l'initialisation et ne reflète jamais les changements en cours de session.

5896 5904 

5897Claude Code émet également ce message lorsque les [prompts](https://code.claude.com/docs/fr/mcp.md#use-mcp-prompts-as-commands) d'un serveur MCP sont ajoutés à la liste ou en sont retirés, par exemple lorsqu'un serveur termine sa connexion après le démarrage de la session. Cela nécessite Claude Code v2.1.281 ou version ultérieure.5905Claude Code émet également ce message lorsque les [prompts](https://code.claude.com/docs/fr/mcp.md#use-mcp-prompts-as-commands) d'un serveur MCP rejoignent ou quittent la liste, par exemple lorsqu'un serveur termine sa connexion après le démarrage de la session. Cela nécessite Claude Code v2.1.281 ou ultérieur.

5898 5906 

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

5900type SDKCommandsChangedMessage = {5908type SDKCommandsChangedMessage = {


5908 5916 

5909### `SDKPromptSuggestionMessage`5917### `SDKPromptSuggestionMessage`

5910 5918 

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

5912 5920 

5913```typescript theme={null}5921```typescript theme={null}

5914type SDKPromptSuggestionMessage = {5922type SDKPromptSuggestionMessage = {


5921 5929 

5922### `SDKConversationResetMessage`5930### `SDKConversationResetMessage`

5923 5931 

5924Émis lorsque la conversation de la session est remplacée sans que la session ne se termine. Dans un appel `query()`, seuls `/clear` et ses alias produisent ce message. Montez une transcription vide sous `new_conversation_id` et supprimez tout titre de session en cache.5932Émis lorsque la conversation de la session est remplacée sans que la session se termine. Dans un appel `query()`, seuls `/clear` et ses alias produisent ce message. Montez une transcription vide sous `new_conversation_id` et supprimez tout titre de session mis en cache.

5925 5933 

5926```typescript theme={null}5934```typescript theme={null}

5927type SDKConversationResetMessage = {5935type SDKConversationResetMessage = {


5938Les champs facultatifs décrivent la réinitialisation :5946Les champs facultatifs décrivent la réinitialisation :

5939 5947 

5940* `trigger` : ce qui a supprimé la conversation. Réinitialisez votre transcription à chaque message `conversation_reset`, y compris lorsque ce champ est absent ou contient une valeur que vous ne reconnaissez pas.5948* `trigger` : ce qui a supprimé la conversation. Réinitialisez votre transcription à chaque message `conversation_reset`, y compris lorsque ce champ est absent ou contient une valeur que vous ne reconnaissez pas.

5941* `user_message_uuid` : l'`uuid` du message utilisateur qui contenait le `/clear`. Utilisez-le pour associer la réinitialisation à ce message.5949* `user_message_uuid` : le `uuid` du message utilisateur qui contenait le `/clear`. Utilisez-le pour associer la réinitialisation à ce message.

5942* `timestamp` : le moment de la réinitialisation, sous forme de chaîne ISO 8601 en UTC. Utilisez-le pour l'affichage, pas pour ordonner les messages.5950* `timestamp` : le moment de la réinitialisation, sous forme de chaîne ISO 8601 en UTC. Utilisez-le pour l'affichage, pas pour ordonner les messages.

5943 5951 

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

5945 5953 

5946Les typages publiés du SDK déclarent `SDKConversationResetMessage` dans Claude Code v2.1.203 et versions ultérieures. Avant la v2.1.203, `SDKMessage` référençait le type sans le déclarer ; le rétrécissement de type sur `type === "conversation_reset"` échouait donc à la vérification des types lorsque `skipLibCheck` était désactivé.5954Les typages publiés du SDK déclarent `SDKConversationResetMessage` dans Claude Code v2.1.203 et versions ultérieures. Avant la v2.1.203, `SDKMessage` référençait le type sans le déclarer ; l'affinage sur `type === "conversation_reset"` échouait donc à la vérification de types lorsque `skipLibCheck` était désactivé.

5947 5955 

5948### `BUILTIN_TOOL_NAMES` et `LEGACY_TOOL_NAME_ALIASES`5956### `BUILTIN_TOOL_NAMES` et `LEGACY_TOOL_NAME_ALIASES`

5949 5957 

5950Utilisez ces deux constantes pour vérifier les noms d'outils saisis par les utilisateurs de votre application. Toutes deux orthographient chaque nom de la manière dont vous l'écrivez dans les règles de permission, les matchers de hooks et les options `tools` et `disallowedTools`. Importez-les depuis `@anthropic-ai/claude-agent-sdk` ou depuis `@anthropic-ai/claude-agent-sdk/core`. Elles nécessitent l'Agent SDK v0.3.301 ou version ultérieure et sont en version alpha.5958Utilisez ces deux constantes pour vérifier les noms d'outils saisis par les utilisateurs de votre application. Toutes deux écrivent chaque nom de la manière dont vous l'écrivez dans les règles de permission, les matchers de hooks et les options `tools` et `disallowedTools`. Importez-les depuis `@anthropic-ai/claude-agent-sdk` ou depuis `@anthropic-ai/claude-agent-sdk/core`. Elles nécessitent l'Agent SDK v0.3.301 ou ultérieur et sont en version alpha.

5951 5959 

5952Les déclarations de types du SDK attribuent à `BUILTIN_TOOL_NAMES` un type tuple en lecture seule et à `LEGACY_TOOL_NAME_ALIASES` un type record de chaîne à chaîne :5960Les déclarations de types du SDK attribuent à `BUILTIN_TOOL_NAMES` un type de tuple en lecture seule et à `LEGACY_TOOL_NAME_ALIASES` un type d'enregistrement de chaîne vers chaîne :

5953 5961 

5954```typescript theme={null}5962```typescript theme={null}

5955const BUILTIN_TOOL_NAMES: readonly ["Agent", /* ...more names... */ "Write"];5963const BUILTIN_TOOL_NAMES: readonly ["Agent", /* ...more names... */ "Write"];

5956const LEGACY_TOOL_NAME_ALIASES: Readonly<Record<string, string>>;5964const LEGACY_TOOL_NAME_ALIASES: Readonly<Record<string, string>>;

5957```5965```

5958 5966 

5959* **`BUILTIN_TOOL_NAMES`** : les noms des outils intégrés de Claude Code par ordre alphabétique, comme `Agent`, `Bash` et `Read`. Les noms d'outils MCP ne sont pas inclus. Comme le type est un tuple de littéraux de chaîne, `(typeof BUILTIN_TOOL_NAMES)[number]` vous donne un type union des noms5967* **`BUILTIN_TOOL_NAMES`** : les noms des outils intégrés de Claude Code par ordre alphabétique, comme `Agent`, `Bash` et `Read`. Les noms d'outils MCP n'y figurent pas. Comme le type est un tuple de littéraux de chaîne, `(typeof BUILTIN_TOOL_NAMES)[number]` vous donne un type union des noms

5960* **`LEGACY_TOOL_NAME_ALIASES`** : les anciens noms d'outils que les règles de permission, les matchers de hooks et les options `tools` et `disallowedTools` acceptent toujours. Chaque clé est un ancien nom et sa valeur est le nom actuel : par exemple, `Task` correspond à `Agent`, et `KillShell` et `KillBash` correspondent à `TaskStop`5968* **`LEGACY_TOOL_NAME_ALIASES`** : les anciens noms d'outils que les règles de permission, les matchers de hooks et les options `tools` et `disallowedTools` acceptent toujours. Chaque clé est un ancien nom et sa valeur est le nom actuel : par exemple, `Task` correspond à `Agent`, et `KillShell` et `KillBash` correspondent à `TaskStop`

5961 5969 

5962Vous pouvez confirmer un nom avec l'un ou l'autre de deux tests : `BUILTIN_TOOL_NAMES` l'inclut, ou `Object.hasOwn(LEGACY_TOOL_NAME_ALIASES, name)` renvoie `true`. Un nom qui échoue aux deux peut tout de même être valide, car `BUILTIN_TOOL_NAMES` omet les outils MCP et certains outils intégrés. Si vous construisez une liste de refus à partir de `BUILTIN_TOOL_NAMES`, Claude peut toujours utiliser les outils que la constante omet. Pour refuser tous les outils, définissez plutôt [`disallowedTools: ["*"]`](https://code.claude.com/docs/fr/agent-sdk/permissions#allow-and-deny-rules).5970Vous pouvez confirmer un nom avec l'un de ces deux tests : `BUILTIN_TOOL_NAMES` le contient, ou `Object.hasOwn(LEGACY_TOOL_NAME_ALIASES, name)` renvoie `true`. Un nom qui échoue aux deux peut néanmoins être valide, car `BUILTIN_TOOL_NAMES` exclut les outils MCP et certains outils intégrés. Si vous construisez une liste de refus à partir de `BUILTIN_TOOL_NAMES`, Claude peut toujours utiliser les outils que la constante exclut. Pour refuser tous les outils, définissez plutôt [`disallowedTools: ["*"]`](https://code.claude.com/docs/fr/agent-sdk/permissions#allow-and-deny-rules).

5963 5971 

5964Trouver un nom dans `BUILTIN_TOOL_NAMES` ne vous indique pas que la session dispose de cet outil : `TodoWrite` est répertorié bien qu'il soit [désactivé par défaut](https://code.claude.com/docs/fr/tools-reference.md). Pour savoir de quels outils dispose une session, lisez le tableau `tools` de son [`SDKSystemMessage`](#sdksystemmessage). Ce tableau inclut les outils MCP et répertorie l'outil Agent sous le nom `Task` ; faites donc correspondre chaque nom via `LEGACY_TOOL_NAME_ALIASES` avant de le comparer à `BUILTIN_TOOL_NAMES`.5972Trouver un nom dans `BUILTIN_TOOL_NAMES` ne vous indique pas que la session dispose de cet outil : `TodoWrite` y figure alors qu'il est [désactivé par défaut](https://code.claude.com/docs/fr/tools-reference.md). Pour savoir de quels outils dispose une session, lisez le tableau `tools` de son [`SDKSystemMessage`](#sdksystemmessage). Ce tableau inclut les outils MCP et liste l'outil Agent sous le nom `Task` ; faites donc passer chaque nom par `LEGACY_TOOL_NAME_ALIASES` avant de le comparer à `BUILTIN_TOOL_NAMES`.

5965 5973 

5966### `AbortError`5974### `AbortError`

5967 5975 

5968Classe d'erreur personnalisée pour les opérations d'abandon.5976Classe d'erreur personnalisée pour les opérations d'interruption.

5969 5977 

5970```typescript theme={null}5978```typescript theme={null}

5971class AbortError extends Error {}5979class AbortError extends Error {}

5972```5980```

5973 5981 

5974`AbortError` est la seule classe d'erreur de l'API typée du SDK. Les autres échecs, comme l'arrêt du processus Claude Code ou l'échec de son lancement, rejettent l'itération des messages avec des erreurs qui ne portent aucune classe du SDK permettant de les identifier. La page [Dépannage](https://code.claude.com/docs/fr/agent-sdk/troubleshooting.md) répertorie ces erreurs par message, avec la cause et la solution pour chacune.5982`AbortError` est la seule classe d'erreur de l'API typée du SDK. Les autres échecs, comme la fermeture du processus Claude Code ou l'échec de son lancement, rejettent l'itération des messages avec des erreurs qui ne portent aucune classe du SDK permettant de les identifier. La page [Dépannage](https://code.claude.com/docs/fr/agent-sdk/troubleshooting.md) répertorie ces erreurs par message, avec la cause et la solution de chacune.

5975 5983 

5976## Configuration du sandbox5984## Configuration du sandbox

5977 5985 


6072| `allowManagedDomainsOnly` | `boolean` | `false` | Paramètres gérés uniquement. Lorsqu'il est défini dans les [paramètres gérés](https://code.claude.com/docs/fr/managed-settings.md), seules les entrées `allowedDomains` et les règles d'autorisation `WebFetch(domain:...)` des paramètres gérés sont honorées, et les entrées d'autorisation des paramètres utilisateur, projet ou locaux sont ignorées. À partir du SDK, transmettez-le via l'option [`managedSettings`](#options) |6080| `allowManagedDomainsOnly` | `boolean` | `false` | Paramètres gérés uniquement. Lorsqu'il est défini dans les [paramètres gérés](https://code.claude.com/docs/fr/managed-settings.md), seules les entrées `allowedDomains` et les règles d'autorisation `WebFetch(domain:...)` des paramètres gérés sont honorées, et les entrées d'autorisation des paramètres utilisateur, projet ou locaux sont ignorées. À partir du SDK, transmettez-le via l'option [`managedSettings`](#options) |

6073| `allowLocalBinding` | `boolean` | `false` | Permettre aux processus de se lier à des ports locaux (par exemple, pour les serveurs de développement) |6081| `allowLocalBinding` | `boolean` | `false` | Permettre aux processus de se lier à des ports locaux (par exemple, pour les serveurs de développement) |

6074| `allowUnixSockets` | `string[]` | `[]` | Chemins de socket Unix auxquels les processus peuvent accéder (par exemple, socket Docker) |6082| `allowUnixSockets` | `string[]` | `[]` | Chemins de socket Unix auxquels les processus peuvent accéder (par exemple, socket Docker) |

6075| `allowAllUnixSockets` | `boolean` | `false` | Permettre l'accès à tous les sockets Unix |6083| `allowAllUnixSockets` | `boolean` | `false` | Permettre l'accès à tous les sockets Unix et, sur Linux, aux sockets de VM (`AF_VSOCK`) |

6076| `httpProxyPort` | `number` | `undefined` | Port du proxy HTTP pour les requêtes réseau |6084| `httpProxyPort` | `number` | `undefined` | Port du proxy HTTP pour les requêtes réseau |

6077| `socksProxyPort` | `number` | `undefined` | Port du proxy SOCKS pour les requêtes réseau |6085| `socksProxyPort` | `number` | `undefined` | Port du proxy SOCKS pour les requêtes réseau |

6078 6086 

agent-view.md +8 −2

Details

320 320 

321#### Ramener une session passée321#### Ramener une session passée

322 322 

323Pour ramener une session sur Claude Code v2.1.212 ou ultérieur, tapez `/resume` dans l'[entrée de dispatch](#dispatch-an-agent-from-agent-view). Un sélecteur s'ouvre avec les sessions passées du dépôt à partir duquel vous avez ouvert la vue agent, les plus récentes en premier, y compris les sessions que vous avez supprimées de la liste. Les sessions qui ont déjà une ligne ne sont pas répertoriées. Appuyez sur `Enter` pour reprendre la session sélectionnée en tant que session en arrière-plan, afin qu'elle rejoigne la liste en tant que ligne.323Pour ramener une session, tapez `/resume` dans l'[entrée de dispatch](#dispatch-an-agent-from-agent-view). Un sélecteur s'ouvre avec les sessions passées du dépôt à partir duquel vous avez ouvert la vue agent, les plus récentes en premier, y compris les sessions que vous avez supprimées de la liste. Les sessions qui ont déjà une ligne ne sont pas répertoriées. Appuyez sur `Enter` pour reprendre la session sélectionnée en tant que session en arrière-plan, afin qu'elle rejoigne la liste en tant que ligne.

324 324 

325`/resume` échoue avec `isn't available in agent view` lorsque :325`/resume` échoue avec `isn't available in agent view` lorsque :

326 326 


410* `/logout` vous déconnecte410* `/logout` vous déconnecte

411* `/model`, `/effort` et `/fast` définissent [ce avec quoi démarrent les sessions que vous lancez ensuite](#set-the-model-effort-and-fast-mode). `/effort` et `/fast` nécessitent Claude Code v2.1.299 ou ultérieur.411* `/model`, `/effort` et `/fast` définissent [ce avec quoi démarrent les sessions que vous lancez ensuite](#set-the-model-effort-and-fast-mode). `/effort` et `/fast` nécessitent Claude Code v2.1.299 ou ultérieur.

412* `/login` ouvre la boîte de dialogue de connexion pour que vous puissiez vous connecter à nouveau sans vous attacher à une session412* `/login` ouvre la boîte de dialogue de connexion pour que vous puissiez vous connecter à nouveau sans vous attacher à une session

413* Un `/resume` seul, ou son alias `/continue`, ouvre un sélecteur des sessions passées du dépôt pour [en ramener une](#bring-back-a-past-session) comme session en arrière-plan. Nécessite Claude Code v2.1.212 ou ultérieur413* Un `/resume` seul, ou son alias `/continue`, ouvre un sélecteur des sessions passées du dépôt pour [en ramener une](#bring-back-a-past-session) comme session en arrière-plan

414 414 

415Les skills, vos propres commandes, et les commandes intégrées qui développent les prompts comme `/init` sont envoyés à une nouvelle session en arrière-plan comme premier prompt. L'indice `isn't available in agent view` signifie que la commande intégrée que vous avez saisie ne s'est pas exécutée. Pour l'exécuter, [attachez-vous à une session](#attach-to-a-session) et saisissez-la à cet endroit. Tout ce que vous avez tapé reste dans l'entrée à côté de l'indice pour que vous puissiez le modifier.415Les skills, vos propres commandes, et les commandes intégrées qui développent les prompts comme `/init` sont envoyés à une nouvelle session en arrière-plan comme premier prompt. L'indice `isn't available in agent view` signifie que la commande intégrée que vous avez saisie ne s'est pas exécutée. Pour l'exécuter, [attachez-vous à une session](#attach-to-a-session) et saisissez-la à cet endroit. Tout ce que vous avez tapé reste dans l'entrée à côté de l'indice pour que vous puissiez le modifier.

416 416 


454 454 

455Quand la [vue agent est désactivée](#turn-off-agent-view), `/fork` démarre un [sous-agent forké](https://code.claude.com/docs/fr/sub-agents.md#fork-the-current-conversation) au lieu de copier la session.455Quand la [vue agent est désactivée](#turn-off-agent-view), `/fork` démarre un [sous-agent forké](https://code.claude.com/docs/fr/sub-agents.md#fork-the-current-conversation) au lieu de copier la session.

456 456 

457##### Envoyer un prompt à la copie et ouvrir sa session

458 

457Passez un prompt comme `/fork open a draft pull request with the work so far` et la copie commence à y travailler immédiatement. Sans prompt, la copie attend sa première instruction : sélectionnez sa ligne dans `claude agents` et appuyez sur `Espace` pour en envoyer une, ou exécutez `claude attach <id>`. La ligne sélectionnée affiche `space to send it a prompt` pendant qu'elle attend.459Passez un prompt comme `/fork open a draft pull request with the work so far` et la copie commence à y travailler immédiatement. Sans prompt, la copie attend sa première instruction : sélectionnez sa ligne dans `claude agents` et appuyez sur `Espace` pour en envoyer une, ou exécutez `claude attach <id>`. La ligne sélectionnée affiche `space to send it a prompt` pendant qu'elle attend.

458 460 

459La confirmation de `/fork` est une ligne montrant l'état de la copie, comme `session running`, le nom de sa ligne dans la vue agent, et son ID de session pour `claude attach`. Cliquez sur le nom pour basculer dans la copie : cette session passe en arrière-plan, comme lorsque vous appuyez sur `←`, et la vue agent ouvre la session de la copie.461La confirmation de `/fork` est une ligne montrant l'état de la copie, comme `session running`, le nom de sa ligne dans la vue agent, et son ID de session pour `claude attach`. Cliquez sur le nom pour basculer dans la copie : cette session passe en arrière-plan, comme lorsque vous appuyez sur `←`, et la vue agent ouvre la session de la copie.

460 462 

463##### Où la copie s'exécute

464 

461Sauf quand la copie [modifie sur place](#how-file-edits-are-isolated), Claude Code lui indique de créer son propre worktree avant d'apporter des modifications de code. En dehors d'un dépôt git, seule une copie déplacée hors d'un worktree créé par un hook reçoit l'instruction ; sans [hook `WorktreeCreate`](https://code.claude.com/docs/fr/hooks#worktreecreate), la copie modifie sur place. Une copie déplacée hors de votre worktree reçoit également l'instruction de ne jamais modifier ce worktree, d'y exécuter des commandes ou d'y entrer, quel que soit le paramètre d'isolation.465Sauf quand la copie [modifie sur place](#how-file-edits-are-isolated), Claude Code lui indique de créer son propre worktree avant d'apporter des modifications de code. En dehors d'un dépôt git, seule une copie déplacée hors d'un worktree créé par un hook reçoit l'instruction ; sans [hook `WorktreeCreate`](https://code.claude.com/docs/fr/hooks#worktreecreate), la copie modifie sur place. Une copie déplacée hors de votre worktree reçoit également l'instruction de ne jamais modifier ce worktree, d'y exécuter des commandes ou d'y entrer, quel que soit le paramètre d'isolation.

462 466 

463L'endroit où la copie démarre dépend de l'endroit où la session actuelle s'exécute :467L'endroit où la copie démarre dépend de l'endroit où la session actuelle s'exécute :


467* Quand vous avez lancé la session à l'intérieur d'un worktree lié d'un dépôt qui possède un arbre de travail principal, la copie démarre dans cet arbre de travail principal, avec la même règle de worktree propre mais sans instruction de branche. La confirmation se termine là aussi par `runs in the origin tree`.471* Quand vous avez lancé la session à l'intérieur d'un worktree lié d'un dépôt qui possède un arbre de travail principal, la copie démarre dans cet arbre de travail principal, avec la même règle de worktree propre mais sans instruction de branche. La confirmation se termine là aussi par `runs in the origin tree`.

468* Une session lancée à l'intérieur d'un worktree d'une disposition de dépôt nu (bare) n'a pas d'arbre de travail principal auquel revenir, donc la copie reste là où elle est, et la confirmation se termine par `edits this checkout`. La même note apparaît quand l'isolation par worktree est [désactivée](#how-file-edits-are-isolated) dans une session qui ne se trouve pas dans un worktree lié, car la copie modifie alors les fichiers que vous avez ouverts.472* Une session lancée à l'intérieur d'un worktree d'une disposition de dépôt nu (bare) n'a pas d'arbre de travail principal auquel revenir, donc la copie reste là où elle est, et la confirmation se termine par `edits this checkout`. La même note apparaît quand l'isolation par worktree est [désactivée](#how-file-edits-are-isolated) dans une session qui ne se trouve pas dans un worktree lié, car la copie modifie alors les fichiers que vous avez ouverts.

469 473 

474##### Sessions qui ne peuvent pas être forkées

475 

470Les sessions démarrées avec des flags de lancement dont la copie n'hériterait pas, comme un prompt système remplacé ou une liste d'autorisation `--tools`, ne peuvent pas être forkées ; Claude Code l'indique au lieu de faire une copie partielle. Une session lancée à partir de la vue agent se forke normalement : la copie est lancée avec la même [définition d'agent](https://code.claude.com/docs/fr/sub-agents.md) et les mêmes instructions ajoutées que la session dont elle provient.476Les sessions démarrées avec des flags de lancement dont la copie n'hériterait pas, comme un prompt système remplacé ou une liste d'autorisation `--tools`, ne peuvent pas être forkées ; Claude Code l'indique au lieu de faire une copie partielle. Une session lancée à partir de la vue agent se forke normalement : la copie est lancée avec la même [définition d'agent](https://code.claude.com/docs/fr/sub-agents.md) et les mêmes instructions ajoutées que la session dont elle provient.

471 477 

472#### Ce qui est transféré quand vous mettez en arrière-plan478#### Ce qui est transféré quand vous mettez en arrière-plan

agents.md +1 −1

Details

32 32 

33> [!NOTE]33> [!NOTE]

34>34>

35> L'exécution de plusieurs sessions ou sous-agents à la fois multiplie l'utilisation des tokens. Consultez [Coûts](https://code.claude.com/docs/fr/costs.md) pour les détails d'utilisation et de limite de débit.35> Exécuter plusieurs sessions ou sous-agents simultanément multiplie la consommation de tokens. Consultez [Coûts](https://code.claude.com/docs/fr/costs.md) pour plus de détails sur l'utilisation et les limites de débit.

36 36 

37## Choisir une approche37## Choisir une approche

38 38 

Details

251| Modèle principal | Opus 5.5, par exemple `us.anthropic.claude-opus-5-5` dans une région `us-*` |251| Modèle principal | Opus 5.5, par exemple `us.anthropic.claude-opus-5-5` dans une région `us-*` |

252| Modèle petit/rapide | Sonnet 4.5, par exemple `us.anthropic.claude-sonnet-4-5-20250929-v1:0` dans une région `us-*` |252| Modèle petit/rapide | Sonnet 4.5, par exemple `us.anthropic.claude-sonnet-4-5-20250929-v1:0` dans une région `us-*` |

253 253 

254Avant v2.1.280, le modèle principal sur Amazon Bedrock était par défaut Opus 5 et l'alias `opus` se résolvait à Opus 5 à partir de v2.1.219.

255 

254Les tâches de fond telles que la génération de titre de session utilisent le modèle petit/rapide, normalement un modèle de classe Haiku. Sur Amazon Bedrock, Claude Code utilise le modèle Sonnet par défaut pour les tâches de fond car Haiku peut ne pas être activé dans chaque compte ou région. Deux sélections changent quel modèle les porte :256Les tâches de fond telles que la génération de titre de session utilisent le modèle petit/rapide, normalement un modèle de classe Haiku. Sur Amazon Bedrock, Claude Code utilise le modèle Sonnet par défaut pour les tâches de fond car Haiku peut ne pas être activé dans chaque compte ou région. Deux sélections changent quel modèle les porte :

255 257 

256* Quand vous sélectionnez un modèle principal avec `--model`, `ANTHROPIC_MODEL`, ou le paramètre `model`, les tâches de fond utilisent ce modèle. Quand Claude Code démarre la session sur le modèle que vous avez défini avec [`ANTHROPIC_DEFAULT_MODEL`](https://code.claude.com/docs/fr/model-config#set-a-default-model-for-new-sessions), les tâches de fond utilisent ce modèle aussi. Définir `ANTHROPIC_DEFAULT_OPUS_MODEL` sans `ANTHROPIC_DEFAULT_SONNET_MODEL` compte aussi comme une sélection, car le modèle Sonnet intégré peut ne pas être activé dans un compte qui dirige son propre Opus.258* Quand vous sélectionnez un modèle principal avec `--model`, `ANTHROPIC_MODEL`, ou le paramètre `model`, les tâches de fond utilisent ce modèle. Quand Claude Code démarre la session sur le modèle que vous avez défini avec [`ANTHROPIC_DEFAULT_MODEL`](https://code.claude.com/docs/fr/model-config#set-a-default-model-for-new-sessions), les tâches de fond utilisent ce modèle aussi. Définir `ANTHROPIC_DEFAULT_OPUS_MODEL` sans `ANTHROPIC_DEFAULT_SONNET_MODEL` compte aussi comme une sélection, car le modèle Sonnet intégré peut ne pas être activé dans un compte qui dirige son propre Opus.


260>262>

261> Les modèles Opus ont un prix par token plus élevé que les modèles Sonnet, donc si vous n'épinglez pas de modèle principal, vous êtes facturé au tarif Opus. Pour utiliser Sonnet 4.5 comme modèle principal, définissez `ANTHROPIC_MODEL` sur son ID de modèle complet. Un déploiement qui dirige la valeur par défaut avec `ANTHROPIC_DEFAULT_SONNET_MODEL` et ne définit pas `ANTHROPIC_DEFAULT_OPUS_MODEL` conserve son modèle Sonnet dirigé comme valeur par défaut.263> Les modèles Opus ont un prix par token plus élevé que les modèles Sonnet, donc si vous n'épinglez pas de modèle principal, vous êtes facturé au tarif Opus. Pour utiliser Sonnet 4.5 comme modèle principal, définissez `ANTHROPIC_MODEL` sur son ID de modèle complet. Un déploiement qui dirige la valeur par défaut avec `ANTHROPIC_DEFAULT_SONNET_MODEL` et ne définit pas `ANTHROPIC_DEFAULT_OPUS_MODEL` conserve son modèle Sonnet dirigé comme valeur par défaut.

262 264 

263Avant v2.1.280, le modèle principal sur Amazon Bedrock était par défaut Opus 5 et l'alias `opus` se résolvait à Opus 5 à partir de v2.1.219. Sur v2.1.207 à v2.1.218, le modèle principal sur Amazon Bedrock était par défaut Opus 4.8 et l'alias `opus` se résolvait à Opus 4.8.

264 

265Pour personnaliser davantage les modèles, utilisez l'une de ces méthodes :265Pour personnaliser davantage les modèles, utilisez l'une de ces méthodes :

266 266 

267```bash theme={null}267```bash theme={null}

artifacts.md +2 −2

Details

95 95 

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

97 97 

98* **`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 navigateur98* **`Enter`** : l'ouvre dans votre navigateur lorsqu'il est déjà attaché à la session actuelle, et l'attache dans le cas contraire

99* **`o`** : l'ouvre dans votre navigateur99* **`o`** : l'ouvre dans votre navigateur

100* **`c`** : copie son lien100* **`c`** : copie son lien

101* **`d`** : en dehors d'une [session cloud](https://code.claude.com/docs/fr/claude-code-on-the-web.md), supprime définitivement un artefact que vous possédez après votre confirmation. Son lien cesse de fonctionner pour tout le monde, y compris pour vous101* **`d`** : en dehors d'une [session cloud](https://code.claude.com/docs/fr/claude-code-on-the-web.md), supprime définitivement un artefact que vous possédez après votre confirmation. Son lien cesse de fonctionner pour tout le monde, y compris pour vous


225 225 

226Lorsqu'une page alimentée par un connecteur s'affiche mais que ses sections en direct restent vides pour un lecteur de votre organisation, travaillez à travers ces causes :226Lorsqu'une page alimentée par un connecteur s'affiche mais que ses sections en direct restent vides pour un lecteur de votre organisation, travaillez à travers ces causes :

227 227 

228* **Le lecteur n'a pas connecté le connecteur** : les connecteurs sont par compte, de sorte que chaque lecteur a besoin de sa propre connexion à chaque connecteur que la page appelle. Il peut en ajouter un sous **Paramètres > Connecteurs** sur claude.ai, puis recharger la page.228* **Le lecteur n'a pas connecté le connecteur** : les connecteurs sont par compte, de sorte que chaque lecteur a besoin de sa propre connexion à chaque connecteur que la page appelle. Il peut en ajouter un sous [**Personnaliser > Connecteurs**](https://claude.ai/customize/connectors) sur claude.ai, puis recharger la page.

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

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

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

best-practices.md +417 −355

Details

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

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

4 4 

5# Meilleures pratiques pour Claude Code5# Bonnes pratiques pour Claude Code

6 6 

7> Conseils et modèles pour tirer le meilleur parti de Claude Code, de la configuration de votre environnement à la mise à l'échelle sur plusieurs sessions parallèles.7> Tirez le meilleur parti de Claude Code : dites à Claude ce qu'il ne peut pas voir, donnez-lui une vérification à exécuter et imposez les règles qui ne tolèrent aucune exception.

8 8 

9Claude Code est un environnement de codage agentique. Contrairement à un chatbot qui répond aux questions et attend, Claude Code peut lire vos fichiers, exécuter des commandes, apporter des modifications et travailler de manière autonome sur les problèmes pendant que vous regardez, redirigez ou vous éloignez complètement.9Claude Code est conçu de telle sorte que, dans la plupart des cas, votre premier prompt tout simple dans une nouvelle session fait déjà ce qu'il faut, sans aucune configuration de votre part.

10 10 

11Cela change votre façon de travailler. Au lieu d'écrire du code vous-même et de demander à Claude de le réviser, vous décrivez ce que vous voulez et Claude détermine comment le construire. Claude explore, planifie et implémente.11Par exemple :

12 12 

13Mais cette autonomie s'accompagne toujours d'une courbe d'apprentissage. Claude fonctionne dans certaines contraintes que vous devez comprendre.13* Pour que les commandes s'exécutent en toute sécurité sans que vous ayez à approuver chacune d'elles, les nouvelles sessions de terminal et VS Code démarrent en [mode auto](https://code.claude.com/docs/fr/permission-modes.md#eliminate-prompts-with-auto-mode), où un classifieur examine tout ce qui est risqué avant son exécution.

14* Pour que votre conversation principale reste concentrée pendant que du travail indépendant se déroule en parallèle, Claude délègue à des sous-agents et ne vous sollicite que lorsque c'est nécessaire.

15* Pour qu'une longue session se poursuive sans que vous ayez à la gérer, votre conversation est compactée automatiquement avant que la fenêtre de contexte ne se remplisse.

14 16 

15Ce guide couvre les modèles qui se sont avérés efficaces dans les équipes internes d'Anthropic et pour les ingénieurs utilisant Claude Code sur diverses bases de code, langages et environnements. Pour comprendre comment la boucle agentique fonctionne sous le capot, consultez [Comment fonctionne Claude Code](https://code.claude.com/docs/fr/how-claude-code-works.md).17Cette page couvre ce qu'il faut faire lorsque les valeurs par défaut ne suffisent pas. Cela arrive généralement lorsque votre projet comporte des connaissances, des règles ou des contraintes que Claude ne peut pas voir à partir du seul code :

16 18 

17***19* Un processus de déploiement qui n'existe que dans la tête de quelqu'un

20* Un fichier qui ne doit jamais être lu

21* Une vérification qui doit réussir avant que quoi que ce soit soit considéré comme terminé

22* Un budget que vous devez respecter

18 23 

19La plupart des meilleures pratiques sont basées sur une contrainte : la fenêtre de contexte de Claude se remplit rapidement et les performances se dégradent à mesure qu'elle se remplit.24Aucune valeur par défaut ne peut connaître ces éléments de votre projet, et c'est donc là qu'un petit effort de configuration de votre part porte ses fruits.

20 25 

21La fenêtre de contexte de Claude contient l'intégralité de votre conversation, y compris chaque message, chaque fichier que Claude lit et chaque sortie de commande. Cependant, cela peut se remplir rapidement. Une seule session de débogage ou exploration de base de code peut générer et consommer des dizaines de milliers de tokens.26Lorsqu'une session ne se déroule pas comme prévu, c'est presque toujours pour l'une de ces raisons :

22 27 

23Cela importe car les performances des LLM se dégradent à mesure que le contexte se remplit. Lorsque la fenêtre de contexte est presque pleine, Claude peut commencer à « oublier » les instructions antérieures ou faire plus d'erreurs. La fenêtre de contexte est la ressource la plus importante à gérer. Pour voir comment une session se remplit en pratique, [regardez une démonstration interactive](https://code.claude.com/docs/fr/context-window.md) de ce qui se charge au démarrage et ce que chaque lecture de fichier coûte. Suivez l'utilisation du contexte en continu avec une [ligne d'état personnalisée](https://code.claude.com/docs/fr/statusline.md), et consultez [Réduire l'utilisation des tokens](https://code.claude.com/docs/fr/costs.md#reduce-token-usage) pour des stratégies de réduction de l'utilisation des tokens.28* Claude a construit quelque chose de différent de ce que vous aviez en tête, ou il doit redécouvrir le même fait au début de chaque session. Il lui manque des informations qu'il ne peut pas obtenir en lisant le dépôt. Consultez [Dites à Claude ce qu'il ne peut pas voir](#tell-claude-what-it-cant-see).

29* Claude a dit qu'il avait terminé alors que ce n'était pas tout à fait le cas, généralement parce qu'il n'avait aucun moyen de vérifier son propre travail. Consultez [Donnez à Claude une vérification à exécuter](#give-claude-a-check-to-run).

30* Claude a fait quelque chose qui ne doit jamais se produire dans ce dépôt, ou a sauté une étape qui doit toujours avoir lieu. Un prompt seul ne peut garantir ni l'un ni l'autre. Consultez [Imposez les règles qui ne tolèrent aucune exception](#enforce-the-rules-that-cant-have-exceptions).

31* Claude a bien fait les choses, mais cela a pris plus de temps, de tokens ou de demandes de permission que la tâche ne le justifiait. Consultez [Modifiez une valeur par défaut](#change-a-default).

24 32 

25***33[Laissez Claude travailler sans vous](#let-claude-run-without-you) applique ces quatre mêmes points aux exécutions sans surveillance, et [Ce que vous pouvez arrêter de faire](#what-you-can-stop-doing) liste les conseils que les modèles actuels ont rendus inutiles.

26 34 

27## Donnez à Claude un moyen de vérifier son travail35> [!NOTE]

28 

29> [!TIP]

30>36>

31> Donnez à Claude une vérification qu'il peut exécuter : des tests, une compilation, une capture d'écran à comparer. C'est la différence entre une session que vous regardez et une session dont vous vous éloignez.37> La configuration pour toute une équipe se trouve sur une page distincte : [Configurer Claude Code pour votre organisation](https://code.claude.com/docs/fr/admin-setup.md).

32 38 

33Claude s'arrête quand le travail semble terminé. Sans une vérification qu'il peut exécuter, « semble terminé » est le seul signal disponible, et vous devenez la boucle de vérification : chaque erreur attend que vous la remarquiez. Donnez à Claude quelque chose qui produit un résultat de réussite ou d'échec, et la boucle se ferme d'elle-même. Claude fait le travail, exécute la vérification, lit le résultat et itère jusqu'à ce que la vérification réussisse.39## Instructions déterministes et non déterministes

34 40 

35La vérification est tout ce qui retourne un signal que Claude peut lire dans la conversation : une suite de tests, un code de sortie de compilation, un linter, un script qui compare la sortie à une fixture, ou une [capture d'écran du navigateur](https://code.claude.com/docs/fr/chrome.md) comparée à une conception. Exécutez [`/verify`](https://code.claude.com/docs/fr/skills#run-and-verify-your-app) vous-même après que la vérification de Claude réussisse pour confirmer la modification par rapport à l'application en cours d'exécution.41Chaque instruction que vous donnez à Claude Code appartient à l'une de ces catégories :

36 42 

37| Stratégie | Avant | Après |431. Non déterministe : vous écrivez l'instruction, et Claude (le modèle) la lit. Il peut s'agir de votre prompt, de `CLAUDE.md` ou d'un skill. Le modèle décide ensuite quoi faire de cette information. Il suit généralement vos commandes, et les modèles actuels comprennent bien votre intention sans beaucoup de contexte, mais rien ne *garantit* qu'il suivra vos instructions. Il peut toujours décider de ne pas faire certaines choses, ou d'en faire d'autres.

38| - | - | - |442. Déterministe : vous configurez l'instruction, et Claude Code (le harnais) *doit* l'exécuter. Il peut s'agir d'un hook, d'une règle de refus ou d'un paramètre géré. Claude Code l'applique à chaque fois, quelle que soit la décision du modèle.

39| **Fournir des critères de vérification** | *« implémenter une fonction qui valide les adresses e-mail »* | *« écrire une fonction validateEmail. exemples de cas de test : [user@example.com](mailto:user@example.com) est vrai, invalid est faux, [user@.com](mailto:user@.com) est faux. exécuter les tests après l'implémentation »* |

40| **Vérifier les modifications de l'interface utilisateur visuellement** | *« rendre le tableau de bord plus beau »* | *« \[coller la capture d'écran] implémenter cette conception. prendre une capture d'écran du résultat et la comparer à l'original. lister les différences et les corriger »* |

41| **Traiter les causes profondes, pas les symptômes** | *« la compilation échoue »* | *« la compilation échoue avec cette erreur : \[coller l'erreur]. la corriger et vérifier que la compilation réussit. traiter la cause profonde, ne pas supprimer l'erreur »* |

42 45 

43Une fois que la vérification existe, décidez à quel point elle contrôle l'arrêt :46La plupart des éléments de Claude Code existent sous ces deux formes :

44 47 

45* **En un seul message** : demandez à Claude d'exécuter la vérification et d'itérer dans le même message, comme dans le tableau ci-dessus.48| | Non déterministe (Claude décide) | Déterministe (Claude Code impose) |

46* **Sur une session** : définissez la vérification comme une [condition `/goal`](https://code.claude.com/docs/fr/goal). Un évaluateur séparé la revérifie après chaque tour et Claude continue de travailler jusqu'à ce que l'objectif soit résolu. Si Claude stagne, Claude Code finit par arrêter l'exécution avec l'objectif toujours défini — voir [comment l'évaluation de /goal fonctionne](https://code.claude.com/docs/fr/goal.md#how-evaluation-works).49| :- | :- | :- |

47* **Comme une porte déterministe** : un [hook Stop](https://code.claude.com/docs/fr/hooks.md#stop) exécute votre vérification en tant que script et bloque la fin du tour jusqu'à ce qu'elle réussisse. [Stop input](https://code.claude.com/docs/fr/hooks.md#stop-input) couvre le plafond sur les blocages consécutifs.50| Quoi faire | Votre prompt, `CLAUDE.md`, les skills que Claude sollicite lui-même | Les hooks, et les skills que vous seul pouvez démarrer |

48* **Par un deuxième avis** : un [sous-agent de vérification](https://code.claude.com/docs/fr/sub-agents.md) ou un [flux de travail dynamique](https://code.claude.com/docs/fr/workflows.md) qui vérifie ses propres conclusions a un modèle frais qui essaie de réfuter le résultat, de sorte que l'agent qui fait le travail n'est pas celui qui le note.51| Ce qu'il peut toucher | Le classifieur du mode auto | Les règles de refus, le sandbox en [mode strict](https://code.claude.com/docs/fr/sandboxing.md#turn-off-the-retry-with-strict-sandbox-mode), les paramètres gérés |

52| Quand c'est terminé | Une demande de preuves, `/goal`, `/code-review` | Les tests, la vérification de types, un hook `Stop`, la CI |

53| Combien il dépense | Le niveau d'effort, le rythme propre de Claude | `--max-turns` ou [`--max-budget-usd`](https://code.claude.com/docs/fr/cli-reference) avec `-p`, une [limite de dépenses](https://code.claude.com/docs/fr/costs.md) que vous avez définie |

54| Qui a le dernier mot | Le résumé par Claude de ce qu'il a fait | La protection de branche, une personne qui approuve la fusion |

49 55 

50Chaque étape échange la configuration pour l'attention. La version avec message fonctionne sur n'importe quelle tâche aujourd'hui. Les versions `/goal` et Stop hook sont ce qui permet à une exécution sans surveillance de se terminer correctement sans vous.56La plupart du temps, vous voulez que Claude décide. Presque toutes les directives ont des exceptions, et les modèles actuels savent bien lire le code qu'ils ont sous les yeux et juger si une directive convient à la situation. Avec le code réel sous les yeux, Claude est généralement mieux placé pour prendre cette décision qu'une règle que vous avez écrite à l'avance.

51 57 

52Demandez à Claude de montrer des preuves plutôt que d'affirmer le succès : la sortie du test, la commande qu'il a exécutée et ce qu'elle a retourné, ou une capture d'écran du résultat. Examiner les preuves est plus rapide que de relancer la vérification vous-même, et cela fonctionne pour les sessions que vous n'aviez pas observées.58Le type déterministe sert lorsque vous voulez vous assurer que certaines choses se produisent *toujours* (ou jamais), quelle que soit la décision du modèle. Il n'est pas nécessaire que ce soit quelque chose de spectaculaire. Le mode auto [bloque déjà les choses spectaculaires](https://code.claude.com/docs/fr/permission-modes.md#what-the-classifier-blocks-by-default), comme un déploiement en production ou un force push par-dessus le travail de quelqu'un. Il s'agit généralement de quelque chose de propre à *votre* projet, et cela peut être aussi spécifique que vous le souhaitez :

53 59 

54***60* Ne jamais modifier le client généré dans `src/gen/`

61* Toujours exécuter le script d'en-tête de licence après la création d'un fichier

55 62 

56## Explorez d'abord, puis planifiez, puis codez63Vous auriez pu écrire l'une ou l'autre de ces règles sous forme de ligne dans `CLAUDE.md` ou dans votre prompt, et Claude la suivrait presque à chaque fois. Mais quelle que soit la fermeté de votre formulation, le fait que Claude suive cette ligne lors d'un tour donné reste sa décision.

57 64 

58> [!TIP]65> [!TIP]

59>66>

60> Séparez la recherche et la planification de l'implémentation pour éviter de résoudre le mauvais problème.67> Si vous ne cessez d'ajouter de l'emphase à une ligne de `CLAUDE.md` et que Claude la manque toujours, c'est le signe que cette ligne a sa place dans un hook. L'inverse est également vrai : si vous avez des hooks pour des choses qui ne sont que des préférences, supprimez-les et laissez Claude décider.

61 68 

62Laisser Claude sauter directement au codage peut produire du code qui résout le mauvais problème. Utilisez [plan mode](https://code.claude.com/docs/fr/permission-modes.md#analyze-before-you-edit-with-plan-mode) pour séparer l'exploration de l'exécution.69## Dites à Claude ce qu'il ne peut pas voir

63 70 

64Le flux de travail recommandé comporte quatre phases :71> [!TIP]

72>

73> N'écrivez que ce que Claude ne peut pas trouver en lisant le dépôt, ou ce qu'il passerait sinon du temps à redécouvrir à chaque session.

65 74 

66**1. Explorez**75Claude commence chaque tâche en lisant votre code, et les modèles actuels y excellent *vraiment*. Ils trouveront l'organisation de vos fichiers, vos conventions, votre framework de test et la façon dont les composants existants sont construits, généralement plus vite que vous ne pourriez les expliquer. Cela signifie que Claude connaît déjà l'essentiel de ce que vous pourriez être tenté d'écrire pour lui.

67 76 

68Entrez en plan mode en appuyant sur `Shift+Tab` jusqu'à ce que la barre d'état affiche `⏸ plan mode on`, ou démarrez la session avec `claude --permission-mode plan`. Claude lit les fichiers et répond aux questions sans apporter de modifications.77Ce qu'il ne peut pas trouver, ce sont les informations qui n'ont jamais été dans le dépôt :

69 78 

70```txt title="claude (plan mode)" wrap theme={null}79* Une décision prise par votre équipe lors d'une réunion

71read /src/auth and understand how we handle sessions and login.80* Un processus de déploiement qui n'existe que dans la tête d'une personne

72also look at how we manage environment variables for secrets.81* La variable d'environnement dont vos tests d'intégration ont besoin

73```

74 82 

75**2. Planifiez**83Il y a aussi des informations qui *sont* dans le dépôt mais qui demandent quelques minutes de recherche, et Claude doit refaire cette recherche au début de chaque session.

76 84 

77Demandez à Claude de créer un plan d'implémentation détaillé.85Un bon test avant d'écrire quoi que ce soit pour Claude :

78 86 

79```txt title="claude (plan mode)" wrap theme={null}871. Pourrait-il trouver cela en lisant le code ?

80I want to add Google OAuth. What files need to change?882. Irait-il réellement chercher ?

81What's the session flow? Create a plan.

82```

83 89 

84Appuyez sur `Ctrl+G` pour ouvrir le plan dans votre éditeur de texte pour une édition directe avant que Claude ne procède.90Si la réponse est oui aux deux, laissez-le de côté.

85 91 

86**3. Implémentez**92### Écrivez un prompt précis

87 93 

88Quittez le plan mode en approuvant le plan ou en appuyant sur `Shift+Tab`, puis laissez Claude coder, en vérifiant par rapport à son plan.94Un prompt précis aide pour la même raison, car il donne à Claude des informations qu'il n'a pas déjà. Si vous nommez le fichier, décrivez le symptôme et indiquez d'emblée à quoi ressemble « corrigé », vous vous épargnez généralement une série de corrections par la suite.

89 95 

90```txt title="claude" wrap theme={null}96Il en va de même pour une préférence entre deux approches raisonnables : Claude ne peut pas la lire dans le code, donc si vous tenez à ce qu'il choisisse l'une plutôt que l'autre, dites-le d'emblée.

91implement the OAuth flow from your plan. write tests for the

92callback handler, run the test suite and fix any failures.

93```

94 97 

95**4. Validez**98| Au lieu de | Essayez |

99| :- | :- |

100| *« corrige le bug de connexion »* | *« les utilisateurs signalent que la connexion échoue après l'expiration de la session. regarde l'actualisation des tokens dans src/auth/, écris un test qui échoue et reproduit le problème, puis corrige-le »* |

101| *« ajoute un widget calendrier »* | *« suis le modèle de HotDogWidget.php et construis un widget calendrier qui permet de choisir un mois et de naviguer entre les années. pas de nouvelles bibliothèques »* |

96 102 

97Demandez à Claude de valider avec un message descriptif et de créer une PR.103Si vous disposez déjà de ce dont Claude a besoin, transmettez-le au lieu de le décrire :

98 104 

99```txt title="claude" wrap theme={null}105* Un fichier : tapez `@` suivi du chemin pour [inclure le contenu du fichier](https://code.claude.com/docs/fr/common-workflows.md#reference-files-and-directories) dans votre message.

100commit with a descriptive message and open a PR106* Une image : collez la capture d'écran de la maquette ou de l'erreur dans le prompt.

101```107* La sortie d'une commande : redirigez-la depuis votre shell avec `cat error.log | claude -p "what's going on here"`.

102 108 

103Plan mode est utile, mais ajoute également des frais généraux.109Des expressions comme `think step by step` ou `be thorough` sont du texte de prompt ordinaire plutôt que des mots-clés. Le principal contrôle de l'intensité de réflexion de Claude est le [niveau d'effort](https://code.claude.com/docs/fr/model-config.md#adjust-effort-level), traité dans [Changez le modèle et l'effort](#change-the-model-and-effort). Ce type de formulation peut encore orienter Claude dans les limites de son niveau d'effort, mais ne le fera pas dépasser.

104 110 

105Pour les tâches où la portée est claire et la correction est petite (comme corriger une faute de frappe, ajouter une ligne de journal ou renommer une variable), demandez à Claude de le faire directement.111Une expression qui aide encore est `be ambitious`. Claude a tendance à interpréter une demande de façon conservatrice et à construire la plus petite chose qui y réponde, car il ne peut pas voir à quel point vous espériez davantage. Lorsque vous voulez la version plus complète, avec les cas limites gérés et la suite naturelle incluse, dites-le :

106 112 

107La planification est plus utile lorsque vous êtes incertain de l'approche, lorsque la modification modifie plusieurs fichiers ou lorsque vous n'êtes pas familier avec le code en cours de modification. Si vous pouviez décrire le diff en une phrase, ignorez le plan.113```text theme={null}

114build the settings page from the mockup. be ambitious: empty and error states, the save flow wired up, keyboard navigation, not just the layout

115```

108 116 

109***117Cela indique à Claude la portée, que vous seul connaissez, plutôt que l'intensité de sa réflexion.

110 118 

111## Fournissez un contexte spécifique dans vos invites119Et lorsque vous explorez plutôt que de corriger quelque chose de précis, un prompt vague comme `what would you improve in this file?` convient parfaitement. Vous corrigerez un peu plus au fur et à mesure, c'est le compromis.

112 120 

113> [!TIP]121### Faites d'abord un brainstorming avec Claude

114>

115> Plus vos instructions sont précises, moins vous aurez besoin de corrections.

116 122 

117Claude peut déduire l'intention, mais il ne peut pas lire dans vos pensées. Référencez des fichiers spécifiques, mentionnez les contraintes et pointez vers des modèles d'exemple.123Lorsque vous ne savez pas encore exactement ce que vous voulez, vous n'avez pas à tout élaborer avant d'écrire votre prompt. Demandez plutôt à Claude de vous interviewer :

118 124 

119| Stratégie | Avant | Après |125```text theme={null}

120| - | - | - |126I want to add rate limiting to the public API but haven't thought it through yet. Interview me until you could write the spec, then write it to SPEC.md.

121| **Délimitez la tâche.** Spécifiez quel fichier, quel scénario et les préférences de test. | *« ajouter des tests pour foo.py »* | *« écrire un test pour foo.py couvrant le cas limite où l'utilisateur est déconnecté. éviter les mocks. »* |127```

122| **Pointez vers les sources.** Dirigez Claude vers la source qui peut répondre à une question. | *« pourquoi ExecutionFactory a-t-il une API aussi bizarre ? »* | *« parcourir l'historique git d'ExecutionFactory et résumer comment son API en est venue à être »* |

123| **Référencez les modèles existants.** Pointez Claude vers les modèles de votre base de code. | *« ajouter un widget calendrier »* | *« regarder comment les widgets existants sont implémentés sur la page d'accueil pour comprendre les modèles. HotDogWidget.php est un bon exemple. suivre le modèle pour implémenter un nouveau widget calendrier qui permet à l'utilisateur de sélectionner un mois et de paginer vers l'avant/l'arrière pour choisir une année. construire à partir de zéro sans bibliothèques autres que celles déjà utilisées dans la base de code. »* |

124| **Décrivez le symptôme.** Fournissez le symptôme, l'emplacement probable et ce que « corrigé » signifie. | *« corriger le bug de connexion »* | *« les utilisateurs signalent que la connexion échoue après l'expiration de la session. vérifier le flux d'authentification dans src/auth/, en particulier l'actualisation des tokens. écrire un test défaillant qui reproduit le problème, puis le corriger »* |

125 128 

126Les invites vagues peuvent être utiles lorsque vous explorez et que vous pouvez vous permettre de corriger la trajectoire. Une invite comme `« qu'amélioreriez-vous dans ce fichier ? »` peut révéler des choses auxquelles vous n'auriez pas pensé à demander.129Claude revient avec des questions à choix multiples sur les points que vous n'avez pas encore fixés : limites par utilisateur ou par clé, ce qui arrive aux requêtes au-delà de la limite, ce qui est hors périmètre. Il continue de poser des questions jusqu'à ce que les réponses forment une spécification.

127 130 

128### Fournissez du contenu riche131Une fois `SPEC.md` créé, démarrez une nouvelle session pour construire à partir de celui-ci, afin que la construction commence avec un contexte propre et une définition écrite de ce qu'est « terminé ». C'est aussi le fichier vers lequel vous dirigerez le relecteur plus tard, dans [Donnez à Claude une vérification à exécuter](#give-claude-a-check-to-run).

129 132 

130> [!TIP]133### Gardez CLAUDE.md court

131>

132> Utilisez `@` pour référencer des fichiers, coller des captures d'écran/images ou canaliser les données directement.

133 134 

134Vous pouvez fournir des données riches à Claude de plusieurs façons :135Claude Code charge [`CLAUDE.md`](https://code.claude.com/docs/fr/memory) dans chaque session, ce qui signifie que chaque ligne qu'il contient mobilise un peu de l'attention de Claude sur *chaque* tâche, qu'elle soit pertinente ou non. C'est pourquoi le fichier fonctionne mieux lorsqu'il ne contient que ce que Claude ne pourrait pas déduire du code lui-même :

135 136 

136* **Référencez les fichiers avec `@`** au lieu de décrire où le code se trouve. Claude lit le fichier avant de répondre.137* Comment valider le travail dans ce dépôt : les commandes exactes de test, de vérification de types et de lint, et comment exécuter un seul fichier de test

137* **Collez les images directement**. Copiez/collez ou glissez-déposez les images dans l'invite.138* Les endroits où le code est trompeur : un ancien modèle présent partout mais que le nouveau code ne doit pas copier, ou un répertoire qui semble inutilisé mais ne l'est pas

138* **Donnez des URL** pour la documentation et les références API. Utilisez `/permissions` pour autoriser les domaines fréquemment utilisés.139* Les décisions qui ne sont pas dans le dépôt : quel helper d'erreur l'équipe a retenu, comment fonctionnent les déploiements, ce qui nécessite une revue de migration

139* **Canalisez les données** en exécutant `cat error.log | claude -p "explain this error"` pour envoyer le contenu du fichier directement.140* Tout ce que vous avez déjà dû corriger deux fois

140* **Laissez Claude récupérer ce dont il a besoin**. Dites à Claude de tirer le contexte lui-même en utilisant des commandes Bash, des outils MCP ou en lisant des fichiers.

141 141 

142***142Un `CLAUDE.md` qui passe ce test reste court :

143 143 

144## Configurez votre environnement144```markdown CLAUDE.md theme={null}

145# Commands

146- Install: pnpm install

147- Run one test file: pnpm vitest run path/to/file.test.ts

148- Typecheck: pnpm tsc --noEmit

145 149 

146Quelques étapes de configuration rendent Claude Code beaucoup plus efficace dans toutes vos sessions. Pour un aperçu complet des fonctionnalités d'extension et du moment d'utiliser chacune, consultez [Étendre Claude Code](https://code.claude.com/docs/fr/features-overview.md).150# Conventions

151- Use the error helpers in src/lib/errors.ts, never throw raw strings

152- src/legacy/ is still live but don't copy its patterns into new code

147 153 

148### Écrivez un CLAUDE.md efficace154# Gotchas

155- Integration tests need DATABASE_URL set, see .env.example

156```

149 157 

150> [!TIP]158Dans une session, exécutez `/context` pour confirmer que Claude a chargé le fichier.

151>

152> Exécutez `/init` pour générer un fichier CLAUDE.md de démarrage basé sur la structure actuelle de votre projet, puis affinez au fil du temps.

153 159 

154CLAUDE.md est un fichier spécial que Claude lit au début de chaque conversation. Incluez des commandes Bash, le style de code et les règles de flux de travail. Cela donne à Claude un contexte persistant qu'il ne peut pas déduire du code seul.160Remarquez que la ligne de vérification de types ne contient que la commande. Claude a besoin de connaître la commande pour pouvoir vérifier son propre travail au fur et à mesure. Si vous voulez aussi que Claude Code *impose* une vérification de types réussie avant que Claude ne termine, c'est le rôle d'un [hook `Stop`](#enforce-the-check-with-a-stop-hook). Une ligne comme `Always typecheck before you finish` dans ce fichier fonctionne la plupart du temps, pas à chaque fois.

155 161 

156Il n'y a pas de format requis pour les fichiers CLAUDE.md, mais gardez-le court et lisible par l'homme. Par exemple :162Vous n'avez pas à écrire le fichier à partir de zéro :

157 163 

158```markdown CLAUDE.md theme={null}164* `/init` génère une version de départ à partir de votre base de code. Ensuite, le travail consiste surtout à supprimer des lignes. Le [guide de la mémoire](https://code.claude.com/docs/fr/memory.md#write-effective-instructions) recommande de rester sous les 200.

159# Code style165* `/doctor` suggère des suppressions pour tout ce que Claude peut [déjà déduire du code](https://code.claude.com/docs/fr/memory.md#my-claude-md-is-too-large).

160- Use ES modules (import/export) syntax, not CommonJS (require)166* `/doctor prompt-audit` signale les instructions écrites pour des modèles plus anciens, qui pointent vers des fichiers qui n'existent plus ou qui [se contredisent](https://code.claude.com/docs/fr/memory.md#audit-your-instruction-files).

161- Destructure imports when possible (eg. import { foo } from 'bar')

162 167 

163# Workflow168Vos préférences personnelles vont dans `CLAUDE.local.md` plutôt que dans `CLAUDE.md`, et vous ajoutez ce fichier à `.gitignore` pour qu'il reste hors du dépôt.

164- Be sure to typecheck when you're done making a series of code changes

165- Prefer running single tests, and not the whole test suite, for performance

166```

167 169 

168Exécutez `/context` pour confirmer que Claude a chargé le fichier. CLAUDE.md est chargé à chaque session, donc incluez uniquement les choses qui s'appliquent largement. Pour les connaissances de domaine ou les flux de travail qui ne sont pertinents que parfois, utilisez [skills](https://code.claude.com/docs/fr/skills.md) à la place. Claude les charge à la demande sans surcharger chaque conversation.170> [!NOTE]

171>

172> Si Claude continue d'ignorer une ligne qui *se trouve* dans `CLAUDE.md`, ajouter IMPORTANT ne résoudra probablement pas le problème. Soit le fichier est devenu assez long pour que la ligne s'y perde, soit la ligne est une règle qui ne tolère aucune exception, auquel cas elle a sa place dans un [hook](#enforce-the-rules-that-cant-have-exceptions).

169 173 

170Gardez-le concis. Pour chaque ligne, demandez-vous : *« Supprimer cela causerait-il à Claude de faire des erreurs ? »* Si non, supprimez-le. Les fichiers CLAUDE.md gonflés font que Claude ignore vos instructions réelles !174### Limitez les règles à une partie de la base de code

171 175 

172| ✅ Inclure | ❌ Exclure |176Si une règle ne concerne qu'une partie de la base de code, placez-la dans [`.claude/rules/`](https://code.claude.com/docs/fr/memory#path-specific-rules) avec un filtre `paths:` pour qu'elle ne se charge que lorsque Claude travaille réellement dans cette partie. Par exemple, ce `.claude/rules/api.md` se charge pour les fichiers TypeScript sous `src/api/` :

173| - | - |

174| Commandes Bash que Claude ne peut pas deviner | Tout ce que Claude peut déduire en lisant le code |

175| Règles de style de code qui diffèrent des valeurs par défaut | Conventions de langage standard que Claude connaît déjà |

176| Instructions de test et exécuteurs de test préférés | Documentation API détaillée (lien vers les docs à la place) |

177| Étiquette du référentiel (nommage des branches, conventions PR) | Informations qui changent fréquemment |

178| Décisions architecturales spécifiques à votre projet | Explications longues ou tutoriels |

179| Particularités de l'environnement de développement (variables d'env requises) | Pratiques évidentes comme « écrire du code propre » |

180| Pièges courants ou comportements non évidents | Pratiques évidentes comme « écrire du code propre » |

181 177 

182Si Claude continue à faire quelque chose que vous ne voulez pas malgré une règle contre cela, le fichier est probablement trop long et la règle se perd. Si Claude vous pose des questions qui sont répondues dans CLAUDE.md, la formulation pourrait être ambiguë. Traitez CLAUDE.md comme du code : révisez-le lorsque les choses vont mal, élaguez-le régulièrement et testez les modifications en observant si le comportement de Claude change réellement. Pour un CLAUDE.md enregistré, exécutez [`/doctor`](https://code.claude.com/docs/fr/commands#all-commands) et Claude propose des suppressions pour le contenu qu'il peut dériver de la base de code.178```markdown .claude/rules/api.md theme={null}

179---

180paths:

181 - "src/api/**/*.ts"

182---

183- Validate request bodies with the zod schemas in src/api/schemas/, don't hand-roll checks

184- Every new endpoint needs an entry in openapi.yaml, CI fails without it

185```

183 186 

184Si Claude continue à ignorer une instruction, ajoutez de l'emphase comme « IMPORTANT » à cette ligne uniquement. Si vous mettez l'accent sur de nombreuses lignes, aucune d'elles ne se démarque. Enregistrez CLAUDE.md dans git pour que votre équipe puisse contribuer. Le fichier augmente en valeur au fil du temps.187### Placez les procédures d'équipe dans des skills

185 188 

186Les fichiers CLAUDE.md peuvent importer des fichiers supplémentaires en utilisant la syntaxe `@path/to/import`. Pour les règles d'importation et les emplacements où les fichiers CLAUDE.md peuvent vivre, consultez [fichiers CLAUDE.md](https://code.claude.com/docs/fr/memory.md#claude-md-files).189Un modèle plus performant en sait davantage sur l'ingénierie, mais pas sur la façon dont *votre* équipe réalise une release, ce que dit votre runbook d'incident ou comment vous voulez que la documentation de l'API soit rédigée. Ce type de connaissance va dans un [skill](https://code.claude.com/docs/fr/skills.md) : une procédure ou un élément de connaissance d'équipe enregistré dans `.claude/skills/<name>/SKILL.md`.

187 190 

188### Configurez les permissions191Les skills sont aussi plus légers en contexte que `CLAUDE.md` pour ce genre de choses. Pour un skill que Claude peut démarrer de lui-même, il voit le nom et la description dans chaque session, mais ne [lit le fichier complet](https://code.claude.com/docs/fr/skills.md#skill-content-lifecycle) que lorsque la tâche l'exige. Une longue procédure de release placée dans un skill ne pèse pas sur votre correction de bug sans rapport, comme elle le ferait dans `CLAUDE.md`.

189 192 

190> [!TIP]193> [!NOTE]

191>194>

192> Pour obtenir moins de prompts sans renoncer au contrôle, pré-approuvez les outils auxquels vous faites confiance avec `/permissions` et laissez les commandes en sandbox s'exécuter sans demander avec `/sandbox`. Basculez en mode Manuel lorsque vous souhaitez approuver les éditions et les commandes vous-même.195> La règle de `CLAUDE.md` s'applique aussi aux skills : n'écrivez que ce que Claude ne peut pas trouver seul.

193 196 

194Avec Claude Code v2.1.283 ou version ultérieure, le mode auto est le [mode de permission de démarrage intégré](https://code.claude.com/docs/fr/permission-modes.md#eliminate-prompts-with-auto-mode) pour les sessions de terminal interactif et VS Code : un modèle classificateur séparé examine la plupart des actions au lieu de vous et bloque uniquement ce qui semble risqué, comme l'escalade de portée, l'infrastructure inconnue ou les actions motivées par du contenu hostile. Sur les versions antérieures, le mode auto est le mode de permission de démarrage intégré uniquement sur les plans Pro, Max et Team.197Pour un workflow avec des effets de bord, comme réaliser effectivement cette release, ajoutez `disable-model-invocation: true`. Claude [ne peut alors pas démarrer le skill de lui-même](https://code.claude.com/docs/fr/skills.md#control-who-invokes-a-skill), et celui-ci ne s'exécute que lorsque vous tapez vous-même `/release`. Enregistré sous `.claude/skills/release/SKILL.md`, il pourrait ressembler à ceci :

195 198 

196En mode Manuel, Claude Code demande avant les actions qui pourraient modifier votre système : écritures de fichiers, commandes Bash, outils MCP. C'est sûr mais fastidieux. Après la dixième approbation, vous cliquez simplement plutôt que de réviser. Deux outils réduisent ces interruptions en mode Manuel et s'appliquent également en mode auto :199```markdown .claude/skills/release/SKILL.md theme={null}

200---

201name: release

202description: Cut a new release. Bumps the version, writes the changelog entry, tags it and pushes the tag so CI can publish.

203disable-model-invocation: true

204---

2051. Make sure you're on main with a clean tree. If not, stop and ask.

2062. Run `pnpm changeset version` and commit the result.

2073. Summarize the PRs merged since the last tag into CHANGELOG.md, one line each, user-facing changes only.

2084. Tag `v<new version>` and push the tag. CI publishes from there, never publish from your machine.

209```

197 210 

198* **Listes blanches de permissions** : permettre des outils spécifiques que vous savez être sûrs, comme `npm run lint` ou `git commit`211### Connectez les outils dont Claude a besoin

199* **Sandboxing** : activer l'isolation au niveau du système d'exploitation qui restreint l'accès au système de fichiers et au réseau, permettant à Claude de travailler plus librement dans des limites définies

200 212 

201Lisez plus sur [les modes de permission](https://code.claude.com/docs/fr/permission-modes.md), [les règles de permission](https://code.claude.com/docs/fr/permissions.md) et [le sandboxing](https://code.claude.com/docs/fr/sandboxing.md).213Une partie de ce que Claude ne peut pas voir se trouve entièrement dans un autre système, comme votre outil de suivi des tickets ou votre tableau de bord d'erreurs. Si ce système dispose d'une CLI, c'est généralement le moyen d'accès le plus simple. Avec `gh` installé et connecté, par exemple, Claude ouvrira des pull requests et lira les commentaires de revue sans aucune explication de votre part. Pour une CLI qu'il n'a jamais vue, lui indiquer `--help` suffit.

202 214 

203### Utilisez les outils CLI215Pour les systèmes sans CLI, il y a [MCP](https://code.claude.com/docs/fr/mcp.md). Vous ajoutez un serveur depuis votre shell :

204 216 

205> [!TIP]217```bash theme={null}

206>218claude mcp add --transport http notion https://mcp.notion.com/mcp

207> Dites à Claude Code d'utiliser les outils CLI comme `gh`, `aws`, `gcloud` et `sentry-cli` lors de l'interaction avec les services externes.219```

220 

221Le serveur apparaît ensuite sous `/mcp` dans une session. Les serveurs connectés ajoutent leurs noms d'outils et leurs instructions au contexte même lorsque vous ne les utilisez pas, il vaut donc la peine d'y [désactiver ceux dont vous n'avez pas besoin](https://code.claude.com/docs/fr/mcp.md#disable-a-server-without-removing-it).

222 

223Et si vous travaillez dans un langage typé, un [plugin d'intelligence de code](https://code.claude.com/docs/fr/plugins/code-intelligence.md) permet à Claude d'accéder directement à une définition au lieu de parcourir de nombreux fichiers pour la trouver.

208 224 

209Les outils CLI sont le moyen le plus efficace en contexte d'interagir avec les services externes. Si vous utilisez GitHub, installez le CLI `gh`. Claude sait comment l'utiliser pour créer des problèmes, ouvrir des demandes de tirage et lire les commentaires. Sans `gh`, Claude peut toujours utiliser l'API GitHub, mais les demandes non authentifiées atteignent souvent les limites de débit.225## Donnez à Claude une vérification à exécuter

210 226 

211Claude est également efficace pour apprendre les outils CLI qu'il ne connaît pas déjà. Essayez des invites comme `Utilisez 'foo-cli-tool --help' pour en savoir plus sur l'outil foo, puis utilisez-le pour résoudre A, B, C.`227Claude s'arrête lorsque le travail semble terminé. S'il n'a rien à exécuter qui lui indique si le travail *est* réellement terminé, « semble terminé » est tout ce sur quoi il peut s'appuyer. En pratique, c'est vous qui devenez la suite de tests, et chaque erreur reste là jusqu'à ce que vous la remarquiez.

212 228 

213### Connectez les serveurs MCP229Si vous lui donnez quelque chose qui renvoie un résultat de réussite ou d'échec, Claude peut boucler lui-même. Il effectue la modification, exécute la vérification et, si quelque chose a cassé, il lit la sortie et corrige le problème avant de relancer la vérification.

214 230 

215> [!TIP]231> [!TIP]

216>232>

217> Exécutez `claude mcp add` avec un nom de serveur et une URL ou une commande pour connecter les outils externes comme Notion, Figma ou votre base de données. Par exemple : `claude mcp add --transport http notion https://mcp.notion.com/mcp`.233> Donnez à Claude quelque chose qu'il peut exécuter et qui renvoie un résultat de réussite ou d'échec. Une fois qu'il dispose de cela, il peut continuer seul et vous n'avez pas à surveiller.

218 234 

219Avec les [serveurs MCP](https://code.claude.com/docs/fr/mcp.md), vous pouvez demander à Claude d'implémenter des fonctionnalités à partir de suivi de problèmes, interroger des bases de données, analyser les données de surveillance, intégrer les conceptions de Figma et automatiser les flux de travail.235La vérification peut être presque n'importe quoi, tant que Claude peut lire le résultat :

220 236 

221### Configurez les hooks237* Un fichier de test

238* Le code de sortie d'un build

239* Un linter

240* Un script qui compare la sortie à une fixture

241* Une [capture d'écran du navigateur](https://code.claude.com/docs/fr/chrome.md) à côté de la maquette

222 242 

223> [!TIP]243Si votre dépôt dispose déjà de l'un de ces éléments, la ligne la plus utile de votre `CLAUDE.md` est la commande qui l'exécute.

224>

225> Utilisez les hooks pour les actions qui doivent se produire à chaque fois sans exception.

226 244 

227Les [hooks](https://code.claude.com/docs/fr/hooks-guide.md) exécutent automatiquement les scripts à des points spécifiques du flux de travail de Claude. Contrairement aux instructions CLAUDE.md qui sont consultatives, les hooks sont déterministes et garantissent que l'action se produit.245Le degré de rigueur de la vérification vous appartient. Les options vont de Claude qui décide lui-même jusqu'à Claude Code qui l'impose :

228 246 

229Claude peut écrire des hooks pour vous. Essayez des invites comme *« Écrire un hook qui exécute eslint après chaque édition de fichier »* ou *« Écrire un hook qui bloque les écritures dans le dossier migrations. »* Modifiez `.claude/settings.json` directement pour configurer les hooks à la main, et exécutez `/hooks` pour parcourir ce qui est configuré.247* Dans le prompt : `run the auth tests after, and keep going until they pass`. Claude décide lui-même quand il est satisfait. Cela fonctionne pour n'importe quelle tâche, dès aujourd'hui, sans configuration.

248* Comme objectif : [`/goal all tests in tests/auth pass and lint is clean`](https://code.claude.com/docs/fr/goal) définit une condition qu'un modèle distinct vérifie par rapport à la conversation après chaque tour, et Claude continue jusqu'à ce qu'elle soit remplie. Vous en avez rarement besoin vous-même dans la session. Cela compte pour les longues exécutions en arrière-plan, où Claude termine parfois un tour par un résumé de progression alors que des éléments restent ouverts, et l'objectif le renvoie au travail.

249* Comme hook Stop : un [hook `Stop`](https://code.claude.com/docs/fr/hooks#stop) exécute votre script chaque fois que Claude tente de terminer son tour, et renvoie Claude au travail si le script se termine avec le code 2. Celui-ci est imposé par Claude Code (le harnais), donc le tour ne se termine pas tant que la vérification de types n'a pas réussi ou que la [limite de blocages](https://code.claude.com/docs/fr/hooks.md#stop-input) n'est pas atteinte. Il y a un [exemple plus bas](#enforce-the-check-with-a-stop-hook).

250* Par quelqu'un qui n'a pas écrit le code : dans le terminal, [`/code-review`](https://code.claude.com/docs/fr/code-review-local) examine le diff dans un nouveau sous-agent qui n'a jamais vu votre conversation. Il n'est pas influencé par le raisonnement qui a produit le code.

230 251 

231### Créez des skills252Quelle que soit l'option utilisée, demandez à Claude des *preuves* : la commande qu'il a exécutée et sa sortie, ou la capture d'écran. « Tous les tests passent » à lui seul vous en dit très peu, et lire la sortie est plus rapide que de relancer la vérification vous-même. Pour une session que vous n'avez pas surveillée, c'est aussi la seule preuve dont vous disposez.

232 253 

233> [!TIP]254> [!TIP]

234>255>

235> Créez des fichiers `SKILL.md` dans `.claude/skills/` pour donner à Claude des connaissances de domaine et des flux de travail réutilisables.256> Une fois que Claude dit avoir terminé, vous pouvez aussi exécuter [`/verify`](https://code.claude.com/docs/fr/skills#run-and-verify-your-app) dans la session, ce qui amène Claude à compiler et exécuter l'application et à examiner le résultat. Cela détecte le genre de problème que les tests et la vérification de types manquent.

236 257 

237Les [skills](https://code.claude.com/docs/fr/skills.md) étendent les connaissances de Claude avec des informations spécifiques à votre projet, équipe ou domaine. Claude les applique automatiquement lorsqu'elles sont pertinentes, ou vous pouvez les invoquer directement avec `/skill-name`.258### Vérifiez par rapport à votre spécification

238 259 

239Créez une skill en ajoutant un répertoire avec un `SKILL.md` à `.claude/skills/` :260Si vous préférez que la revue vérifie le travail par rapport à votre plan plutôt que de chercher des bugs en général, écrivez vous-même le prompt de revue :

240 261 

241```markdown .claude/skills/api-conventions/SKILL.md theme={null}262```text theme={null}

242name: api-conventions263use a subagent to review the rate limiter diff against SPEC.md, check every requirement is implemented and the listed edge cases have tests, report gaps that affect correctness and skip style

243description: REST API design conventions for our services

244# API Conventions

245- Use kebab-case for URL paths

246- Use camelCase for JSON properties

247- Always include pagination for list endpoints

248- Version APIs in the URL path (/v1/, /v2/)

249```264```

250 265 

251Les skills peuvent également définir des flux de travail réutilisables que vous invoquez directement :266> [!NOTE]

252 267>

253```markdown .claude/skills/fix-issue/SKILL.md theme={null}268> Ne supprimez pas la partie `skip style` de ce prompt. Un relecteur à qui l'on demande de trouver des problèmes trouvera toujours *quelque chose*. Si vous corrigez chaque constatation, vous vous retrouvez avec des couches d'abstraction supplémentaires et des tests pour des cas qui ne peuvent pas se produire.

254name: fix-issue269 

255description: Fix a GitHub issue270### Imposez la vérification avec un hook Stop

256disable-model-invocation: true271 

257Analyze and fix the GitHub issue: $ARGUMENTS.272La version hook `Stop` de la règle de vérification de types tient en quelques lignes dans `.claude/settings.json`. C'est le code de sortie 2 qui bloque l'arrêt. Tout ce que la commande affiche sur stderr est renvoyé à Claude comme la raison pour laquelle il ne peut pas encore terminer, c'est pourquoi la sortie du compilateur y est redirigée :

258 273 

2591. Use `gh issue view` to get the issue details274```json .claude/settings.json theme={null}

2602. Understand the problem described in the issue275{

2613. Search the codebase for relevant files276 "hooks": {

2624. Implement the necessary changes to fix the issue277 "Stop": [

2635. Write and run tests to verify the fix278 {

2646. Ensure code passes linting and type checking279 "hooks": [

2657. Create a descriptive commit message280 { "type": "command", "command": "pnpm tsc --noEmit 1>&2 || exit 2" }

2668. Push and create a PR281 ]

282 }

283 ]

284 }

285}

267```286```

268 287 

269Exécutez `/fix-issue 1234` pour l'invoquer. Utilisez `disable-model-invocation: true` pour les flux de travail avec des effets secondaires que vous souhaitez déclencher manuellement.288Pour le voir fonctionner, demandez à Claude une modification qui casse un type : au lieu de terminer, il reçoit les erreurs du compilateur et continue jusqu'à ce que `tsc` réussisse. Si le hook bloque [huit arrêts d'affilée](https://code.claude.com/docs/fr/hooks.md#stop-input) sans appel d'outil entre eux, Claude Code outrepasse le blocage suivant et termine le tour. Pour augmenter ce plafond, définissez [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](https://code.claude.com/docs/fr/env-vars).

270 289 

271### Créez des subagents personnalisés290## Imposez les règles qui ne tolèrent aucune exception

272 291 

273> [!TIP]292> [!TIP]

274>293>

275> Définissez des assistants spécialisés dans `.claude/agents/` que Claude peut déléguer pour les tâches isolées.294> Si quelque chose doit se produire à chaque fois, faites-en un hook, une règle de refus ou un paramètre géré. `CLAUDE.md` est destiné aux directives, et Claude a le droit de décider qu'une directive ne s'applique pas.

276 295 

277Les [subagents](https://code.claude.com/docs/fr/sub-agents.md) s'exécutent dans leur propre contexte avec leur propre ensemble d'outils autorisés. Ils sont utiles pour les tâches qui lisent de nombreux fichiers ou qui ont besoin d'une attention spécialisée sans encombrer votre conversation principale.296Prenez trois règles que vous pourriez avoir aujourd'hui dans `CLAUDE.md` : `Never read .env`, `Always run the formatter after editing`, `Don't touch the migrations folder`. Claude les suivra presque à chaque fois. Pour les quelques cas où « presque » ne suffit pas, sortez-les de `CLAUDE.md` et placez-les dans une configuration que Claude Code (le harnais) applique lui-même. Dès lors, le résultat ne dépend plus de ce dont le modèle se souvient ou de ce qu'il décide.

278 297 

279```markdown .claude/agents/security-reviewer.md theme={null}298### Imposez des étapes avec des hooks

280name: security-reviewer299 

281description: Reviews code for security vulnerabilities300Les [hooks](https://code.claude.com/docs/fr/hooks-guide.md) exécutent quelque chose qui vous appartient à des points fixes de la boucle de Claude : avant ou après un appel d'outil, lorsque Claude tente de s'arrêter, au démarrage d'une session, etc. Ce quelque chose peut être :

282tools: Read, Grep, Glob, Bash301 

283model: opus302* Une commande shell (le cas habituel)

284You are a senior security engineer. Review code for:303* Un POST vers un endpoint HTTP

285- Injection vulnerabilities (SQL, XSS, command injection)304* Un appel d'outil sur l'un de vos serveurs MCP

286- Authentication and authorization flaws305* Un [hook `prompt` ou `agent`](https://code.claude.com/docs/fr/hooks#hook-handler-fields), qui laisse un modèle décider

287- Secrets or credentials in code306 

288- Insecure data handling307Un hook `prompt` ou `agent` demande à *un autre modèle* de décider, il n'est donc pas déterministe non plus. Pour une véritable application, utilisez un hook `command` ou `http`, et ajoutez [`onFailure: "block"`](https://code.claude.com/docs/fr/hooks#block-the-action-when-a-hook-fails) si l'action doit aussi être arrêtée lorsque le hook lui-même plante ou expire. Pour un hook qui analyse les commits à la recherche de secrets, par exemple, vous préférez bloquer le commit plutôt que de le laisser passer sans analyse pendant que le scanner est en panne.

308 

309Voici la règle du formateur sous forme de hook `PostToolUse`. Il s'exécute après chaque `Edit` ou `Write`, et le fait que Claude se souvienne de la règle n'a plus d'importance, car ce n'est pas Claude qui l'exécute :

289 310 

290Provide specific line references and suggested fixes.311```json .claude/settings.json theme={null}

312{

313 "hooks": {

314 "PostToolUse": [

315 {

316 "matcher": "Edit|Write",

317 "hooks": [

318 { "type": "command", "command": "npx prettier --write --ignore-unknown \"$(jq -r '.tool_input.file_path')\"" }

319 ]

320 }

321 ]

322 }

323}

291```324```

292 325 

293Dites à Claude d'utiliser les subagents explicitement : *« Utilisez un subagent pour réviser ce code pour les problèmes de sécurité. »*326Pour tester le hook, demandez à Claude d'ajouter une ligne mal indentée dans un fichier que Prettier formate. Le fichier enregistré revient avec l'indentation corrigée.

294 327 

295### Installez les plugins328La règle des migrations devient un [hook `PreToolUse`](https://code.claude.com/docs/fr/hooks-guide#block-edits-to-protected-files) qui se termine avec le code 2 pour tout chemin sous `migrations/`. Vous n'avez pas à l'écrire vous-même : `write a hook that blocks edits to the migrations folder` fonctionne comme prompt, et `/hooks` affiche le résultat. N'en abusez pas, cependant : un hook est destiné à une règle sans *aucune* exception, et `Prefer named exports` en a beaucoup, donc celle-ci reste dans `CLAUDE.md`.

296 329 

297> [!TIP]330### Limitez l'accès avec les règles de permission et le sandbox

298>

299> Exécutez `/plugin` pour parcourir la marketplace. Les plugins ajoutent des skills, des outils et des intégrations sans configuration.

300 331 

301Les [plugins](https://code.claude.com/docs/fr/plugins/overview.md) regroupent les skills, les hooks, les subagents et les serveurs MCP dans une seule unité installable de la communauté et d'Anthropic. Si vous travaillez avec un langage typé, installez un [plugin d'intelligence de code](https://code.claude.com/docs/fr/plugins/code-intelligence.md) pour donner à Claude une navigation de symboles précise et une détection d'erreur automatique après les éditions.332Les [règles de permission](https://code.claude.com/docs/fr/permissions.md) déterminent ce que Claude est autorisé à exécuter, lire et récupérer. Les règles `deny` s'appliquent dans tous les modes de permission, y compris auto et `bypassPermissions`, et c'est précisément pourquoi la règle `.env` y a sa place :

302 333 

303Pour des conseils sur le choix entre les skills, les subagents, les hooks et MCP, consultez [Étendre Claude Code](https://code.claude.com/docs/fr/features-overview.md#match-features-to-your-goal).334```json .claude/settings.json theme={null}

335{

336 "permissions": {

337 "allow": ["Bash(pnpm tsc --noEmit)"],

338 "ask": ["Bash(git push *)"],

339 "deny": ["Read(./.env)", "Read(./.env.local)", "Read(./secrets/**)"]

340 }

341}

342```

304 343 

305***344Une fois ceci enregistré, demander à Claude ce que contient `.env` échoue, aussi bien via l'outil `Read` que via `cat .env`.

306 345 

307## Communiquez efficacement346Les règles correspondent à des appels d'outils, pas à des intentions, il vaut donc la peine de savoir où se situent leurs limites :

308 347 

309Posez à Claude les questions que vous poseriez à un autre ingénieur, et pour les fonctionnalités plus importantes, laissez Claude vous interviewer et rédiger une spécification avant de commencer l'implémentation.348* La règle `Read` *intercepte bien* `cat .env`, car Claude Code reconnaît les [commandes courantes de lecture de fichiers](https://code.claude.com/docs/fr/permissions.md#read-and-edit).

349* Elle n'interceptera pas un script qui ouvre le fichier.

350* Une règle de refus `WebFetch` pour un domaine n'a aucun effet sur un `curl` vers ce même domaine, sauf si le sandbox est activé.

310 351 

311### Posez des questions sur la base de code352Pour une limite au niveau du système d'exploitation sur l'accès au système de fichiers ou au réseau, activez le [sandbox](https://code.claude.com/docs/fr/sandboxing.md) avec `/sandbox` dans une session. Il confine les commandes shell de Claude sur macOS, Linux et WSL2 et [reprend aussi vos règles de refus `Read` et vos règles `WebFetch(domain:...)`](https://code.claude.com/docs/fr/sandboxing#permission-rules), donc pour tout ce qui touche à la sécurité, vous voulez les deux.

312 353 

313> [!TIP]354Par défaut, Claude peut toujours demander à réessayer une commande bloquée en dehors du sandbox, et cette demande passe par le flux de permission normal. Le [mode sandbox strict](https://code.claude.com/docs/fr/sandboxing.md#turn-off-the-retry-with-strict-sandbox-mode), dans l'onglet **Overrides** de `/sandbox`, désactive cette nouvelle tentative.

355 

356> [!WARNING]

314>357>

315> Posez à Claude les questions que vous poseriez à un ingénieur senior.358> Le mode auto est un modèle classifieur qui juge chaque action plutôt qu'une règle stricte. Il le fait bien, mais comme tout jugement, il peut se tromper. Vous pouvez aussi ajuster ce qu'il considère comme risqué, et votre organisation peut le désactiver entièrement, donc vos règles « jamais » ont leur place dans des règles de refus ou des hooks.

359 

360### Choisissez à qui s'applique une règle

316 361 

317Lors de l'intégration à une nouvelle base de code, utilisez Claude Code pour l'apprentissage et l'exploration. Vous pouvez poser à Claude les mêmes types de questions que vous poseriez à un autre ingénieur :362L'emplacement d'une règle détermine à qui elle s'applique :

318 363 

319* Comment fonctionne la journalisation ?364* `.claude/settings.local.json` et `~/.claude/settings.json` ne concernent que vous. Lorsque vous sélectionnez **Yes, and don't ask again** pour une commande, Claude Code enregistre cette règle dans le fichier local.

320* Comment créer un nouveau point de terminaison API ?365* `.claude/settings.json` et les hooks qu'il contient appartiennent au dépôt. Une fois que vous les avez commités, ils s'appliquent à toute personne qui travaille dans le dépôt. Ses règles de refus s'appliquent immédiatement. Ses règles `allow` attendent que chaque personne accepte la [boîte de dialogue de confiance](https://code.claude.com/docs/fr/permissions.md#what-runs-before-you-trust-a-folder) pour ce dossier, et la [confiance de l'espace de travail](https://code.claude.com/docs/fr/hooks.md#workspace-trust) détermine aussi quand ses hooks commencent à s'exécuter sur sa machine.

321* Que fait `async move { ... }` à la ligne 134 de `foo.rs` ?366* Les [paramètres gérés](https://code.claude.com/docs/fr/managed-settings.md) appartiennent à l'organisation. Ils proviennent de la console d'administration, d'un MDM ou d'un fichier `managed-settings.json`, et aucun fichier de paramètres personnel ne peut les outrepasser, ce qui en fait le seul endroit approprié pour la politique d'une équipe de sécurité. Si c'est vous qui les définissez, consultez [Configurer Claude Code pour votre organisation](https://code.claude.com/docs/fr/admin-setup.md).

322* Quels cas limites `CustomerOnboardingFlowImpl` gère-t-il ?

323* Pourquoi ce code appelle-t-il `foo()` au lieu de `bar()` à la ligne 333 ?

324 367 

325Utiliser Claude Code de cette façon est un flux de travail d'intégration efficace, améliorant le temps de montée en charge et réduisant la charge sur les autres ingénieurs. Aucune invite spéciale requise : posez les questions directement.368Quelle que soit la portée, gardez l'ensemble imposé restreint. Chaque hook et chaque règle de refus se déclenchera parfois alors qu'il ne le devrait pas, et quelqu'un doit maintenir chacun d'eux. Si vous vous retrouvez un jour avec quarante d'entre eux, la plupart sont probablement des préférences que Claude aurait pu évaluer lui-même.

326 369 

327### Laissez Claude vous interviewer370## Modifiez une valeur par défaut

328 371 

329> [!TIP]372> [!TIP]

330>373>

331> Pour les fonctionnalités plus grandes, laissez Claude vous interviewer d'abord. Commencez par une invite minimale et demandez à Claude de vous interviewer en utilisant l'outil `AskUserQuestion`.374> Les valeurs par défaut sont assez bonnes pour ne pas y toucher jusqu'à ce qu'une tâche coûte plus de temps, de tokens ou d'interruptions qu'elle ne le devrait. Lorsque cela arrive, exécutez `/usage` dans la session pour voir où cela est passé.

332 375 

333Claude pose des questions sur les choses que vous n'auriez peut-être pas considérées, y compris l'implémentation technique, l'interface utilisateur/UX, les cas limites et les compromis. Remplacez `[brief description]` par votre fonctionnalité avant d'envoyer l'invite.376Une nouvelle session prend déjà plusieurs décisions pour vous :

334 377 

335```text wrap theme={null}378* Les sessions interactives de terminal et VS Code démarrent en mode auto.

336I want to build [brief description]. Interview me in detail using the AskUserQuestion tool.379* Elle exécute [Claude Opus 5.5 avec un effort moyen](https://code.claude.com/docs/fr/model-config.md#default-model-setting) sur la plupart des plans et fournisseurs.

380* Elle délègue du travail à des sous-agents lorsqu'elle voit une raison de le faire.

381* Elle compacte la conversation à mesure qu'elle grandit.

337 382 

338Ask about technical implementation, UI/UX, edge cases, concerns, and tradeoffs. Don't ask obvious questions, dig into the hard parts I might not have considered.383La plupart du temps, vous n'y pensez jamais. Lorsqu'une tâche coûte plus qu'elle ne le devrait, c'est généralement à cause de l'un de ces quatre points.

339 384 

340Keep interviewing until we've covered everything, then write a complete spec to SPEC.md.385### Changez le mode de permission

341```

342 386 

343Une fois la spécification complète, démarrez une nouvelle session pour l'exécuter. La nouvelle session a un contexte propre entièrement axé sur l'implémentation, et vous avez une spécification écrite à référencer.387Les deux extrémités de l'éventail des permissions ont un coût :

344 388 

345Les spécifications les plus utiles sont autonomes : elles nomment les fichiers et les interfaces impliqués, énoncent ce qui est hors de portée, et se terminent par une étape de vérification de bout en bout qui prouve que la fonctionnalité fonctionne. Le temps consacré à rendre la spécification précise rapporte plus que le temps passé à regarder l'implémentation.389* **Mode Manuel** : vous approuvez vous-même chaque modification et chaque commande qui n'est pas en lecture seule. C'est sûr, mais après la dixième demande vous commencez à approuver sans lire, et rien n'avance lorsque vous êtes loin du clavier.

390* **`bypassPermissions`** : approuve tout ce que vos règles de refus et de demande ne couvrent pas, ce qui n'a de sens que dans un conteneur jetable.

346 391 

347***392Le [mode auto](https://code.claude.com/docs/fr/permission-modes.md#eliminate-prompts-with-auto-mode) se situe entre les deux, et c'est le mode dans lequel [démarrent](https://code.claude.com/docs/fr/permission-modes.md#which-mode-a-session-starts-in) les sessions interactives de terminal et VS Code. Claude travaille sans s'arrêter pour les approbations de routine, et un modèle classifieur distinct vérifie les actions dans [un ordre fixe](https://code.claude.com/docs/fr/permission-modes.md#how-the-classifier-evaluates-actions) avant leur exécution. Il se concentre sur [les choses qu'une personne voudrait arrêter](https://code.claude.com/docs/fr/permission-modes.md#what-the-classifier-blocks-by-default) :

348 393 

349## Gérez votre session394* `curl | bash`

395* Les déploiements et migrations en production

396* Les force push par-dessus le travail d'autres personnes

397* Les données sensibles envoyées vers des endpoints externes

398* Les actions qui semblent dictées par du contenu que Claude a lu plutôt que par vous

350 399 

351Les conversations sont persistantes et réversibles. Utilisez cela à votre avantage !400Lorsqu'il bloque quelque chose, vous recevez une notification et l'action apparaît sous **Recently denied** dans `/permissions`, où vous pouvez la réessayer avec une approbation manuelle. Après [trois blocages d'affilée](https://code.claude.com/docs/fr/permission-modes.md#when-auto-mode-falls-back) (ou vingt au total), le mode auto se met en pause et recommence à vous demander.

352 401 

353### Corrigez la trajectoire tôt et souvent402Rien de tout cela ne remplace vos contrôles déterministes, car il s'exécute *après* eux. Les règles de refus et de demande ainsi que les hooks `PreToolUse` s'appliquent avant que le classifieur ne voie quoi que ce soit, donc une règle de refus bloque en mode auto exactement comme partout ailleurs. Le sandbox continue de confiner les [commandes shell qu'il encapsule](https://code.claude.com/docs/fr/sandboxing.md#what-runs-outside-the-sandbox).

354 403 

355> [!TIP]404> [!NOTE]

356>405>

357> Corrigez Claude dès que vous remarquez qu'il s'écarte de la bonne voie.406> Vous pouvez aussi écrire `don't push until I've reviewed` dans la conversation, et le classifieur [le traite comme un signal de blocage](https://code.claude.com/docs/fr/permission-modes.md#boundaries-you-state-in-conversation). Il s'agit toujours d'un modèle qui lit la transcription, et la phrase peut se perdre lors de la compaction de la conversation, donc tout ce qui compte a sa place dans une règle de refus.

407 

408Le problème inverse est celui d'un classifieur qui arrête à plusieurs reprises quelque chose de courant dans votre configuration. Plutôt que de l'approuver manuellement à chaque fois, ajoutez-le à `autoMode.allow` ou décrivez votre infrastructure de confiance dans la [configuration du mode auto](https://code.claude.com/docs/fr/auto-mode-config.md). Elle s'écrit en anglais courant plutôt qu'avec des motifs, et [`/auto-mode-setup`](https://code.claude.com/docs/fr/auto-mode-config#generate-environment-entries) peut rédiger pour vous la partie `environment` à partir de votre projet et de vos sessions récentes :

409 

410```json ~/.claude/settings.json theme={null}

411{

412 "autoMode": {

413 "environment": [

414 "$defaults",

415 "Source control: github.com/example-org and every repo under it",

416 "Trusted internal domains: *.internal.example.com"

417 ],

418 "allow": [

419 "$defaults",

420 "Deploying to the staging namespace is fine, it's isolated from production and resets nightly"

421 ]

422 }

423}

424```

358 425 

359Les meilleurs résultats proviennent de boucles de rétroaction serrées. Bien que Claude résolve occasionnellement les problèmes parfaitement à la première tentative, le corriger rapidement produit généralement de meilleures solutions plus rapidement.426> [!WARNING]

427>

428> Conservez `"$defaults"` dans chaque liste que vous définissez, car sans lui vos entrées *remplacent* les règles intégrées de cette liste au lieu de s'y ajouter. Pour `environment` et `allow`, vous perdriez le contexte et les exceptions intégrés, et une liste `soft_deny` sans lui supprime les blocages intégrés des force push et des déploiements en production.

429>

430> Le bloc `autoMode` doit aussi se trouver dans `~/.claude/settings.json` plutôt que dans le projet, car le classifieur ignore `autoMode` dans les paramètres du projet.

360 431 

361* **`Esc`** : arrêtez Claude en pleine action avec la touche `Esc`. Le contexte est préservé, vous pouvez donc rediriger.432Si vous préférez voir chaque modification et chaque commande avant qu'elles ne se produisent, `Shift+Tab` dans la session fait défiler les modes de permission, Manuel compris, ou démarrez avec `claude --permission-mode manual` depuis votre shell. Et si le mode Manuel vous sollicite alors trop souvent, `/fewer-permission-prompts` analyse vos transcriptions récentes à la recherche d'appels Bash et MCP courants en lecture seule et les ajoute à une liste d'autorisation dans `.claude/settings.json`.

362* **`Esc + Esc` ou `/rewind`** : appuyez sur `Esc` deux fois ou exécutez `/rewind` pour ouvrir le menu de rembobinage et restaurer la conversation et l'état du code précédents, ou résumer à partir d'un message sélectionné.

363* **`« Annuler cela »`** : demandez à Claude d'annuler ses modifications.

364* **`/clear`** : réinitialiser le contexte entre les tâches non liées. Les sessions longues avec un contexte non pertinent peuvent réduire les performances.

365 433 

366Si vous avez corrigé Claude plus de deux fois sur le même problème dans une session, le contexte est encombré d'approches échouées. Exécutez `/clear` et recommencez avec une invite plus spécifique qui incorpore ce que vous avez appris. Une session propre avec une meilleure invite surpasse presque toujours une session longue avec des corrections accumulées.434### Changez le modèle et l'effort

367 435 

368### Gérez le contexte agressivement436L'[effort](https://code.claude.com/docs/fr/model-config.md#adjust-effort-level) est le principal contrôle de la durée de réflexion de Claude, et il remplace la plupart de ce que l'on faisait autrefois avec la formulation des prompts. Claude Opus 5.5, Sonnet 5.5 et Haiku 5.5 utilisent `medium` par défaut, ce qui suffit largement pour le développement de fonctionnalités courantes avec un périmètre clair. Les moments où vous le modifieriez, avec `/effort` dans la session :

369 437 

370> [!TIP]438* Augmentez-le avec `/effort high` ou `/effort xhigh` lorsque la réussite dépend de cas faciles à négliger. Pensez à un bug dans du code que vous n'avez pas écrit, à un test instable ou à un changement de schéma où Claude doit trouver chaque lecteur de l'ancienne forme. Claude vérifie alors davantage de cas limites et une plus grande partie de son travail avant de répondre, et c'est là que passent le temps et les tokens supplémentaires.

371>439* Réduisez-le avec `/effort low` lorsque vous faites des allers-retours rapides et examinez de toute façon chaque résultat : brainstorming, première ébauche, renommage dans quelques fichiers. Claude vous donne un point de départ plus tôt, et puisque vous pilotez chaque étape, la délibération supplémentaire n'aurait pas changé grand-chose à part l'attente.

372> Exécutez `/clear` entre les tâches non liées pour réinitialiser le contexte.440* Réservez `max` à un problème difficile que vous voulez que Claude résolve sans vous, comme la recherche d'une vulnérabilité de sécurité. Sur des tâches ordinaires, il a tendance à trop réfléchir, et vous payez donc davantage pour une réponse qui n'est peut-être pas meilleure que ce que `high` vous aurait donné.

441* Lorsque seul le message suivant en a besoin, comme une question délicate au milieu d'un travail par ailleurs courant, mettez [`ultrathink`](https://code.claude.com/docs/fr/model-config#use-ultrathink-for-one-off-deep-reasoning) dans ce prompt au lieu de modifier le paramètre.

373 442 

374Claude Code compacte automatiquement l'historique de conversation lorsque vous approchez des limites de contexte, ce qui préserve le code et les décisions importants tout en libérant de l'espace.443Pour le modèle lui-même, Opus 5.5 par défaut gère bien la plupart des tâches de code et Sonnet coûte moins cher sur le travail courant. [Claude Fable 5.1](https://code.claude.com/docs/fr/model-config.md#work-with-fable) est disponible lorsque vous le sélectionnez explicitement avec `/model fable`, et Haiku convient bien aux sous-agents effectuant des tâches simples. [Configuration du modèle](https://code.claude.com/docs/fr/model-config.md) présente la liste complète par plan et fournisseur.

375 444 

376Pendant les sessions longues, la fenêtre de contexte de Claude peut se remplir de conversations non pertinentes, de contenu de fichiers et de commandes. Cela peut réduire les performances et parfois distraire Claude.445### Sachez ce que coûtent les sous-agents

377 446 

378* Utilisez `/clear` fréquemment entre les tâches pour réinitialiser complètement la fenêtre de contexte447Claude délègue de lui-même à des [sous-agents](https://code.claude.com/docs/fr/sub-agents.md) :

379* Lorsque le compactage automatique se déclenche, Claude résume ce qui importe le plus, y compris les modèles de code, les états de fichiers et les décisions clés

380* Pour plus de contrôle, exécutez `/compact <instructions>`, comme `/compact Focus on the API changes`

381* Pour compacter uniquement une partie de la conversation, utilisez `Esc + Esc` ou `/rewind`, sélectionnez un point de contrôle de message et choisissez **Summarize from here** ou **Summarize up to here**. Le premier condense les messages à partir de ce point tout en gardant le contexte antérieur intact ; le second condense les messages antérieurs tout en gardant les messages récents en intégralité. Consultez [le menu de rembobinage options de résumé](https://code.claude.com/docs/fr/checkpointing.md#rewind-and-summarize).

382* Personnalisez le comportement de compactage dans CLAUDE.md avec des instructions comme `« Lors du compactage, toujours préserver la liste complète des fichiers modifiés et toutes les commandes de test »` pour assurer que le contexte critique survit à la résumé

383* Pour les questions qui n'ont pas besoin de rester en contexte, utilisez [`/btw`](https://code.claude.com/docs/fr/interactive-mode#side-questions-with-%2Fbtw). La réponse n'entre jamais dans l'historique de conversation, vous pouvez donc vérifier un détail sans augmenter le contexte.

384 448 

385### Utilisez les subagents pour l'investigation449* Les recherches étendues dans la base de code vont à l'agent Explore intégré.

450* Les tâches annexes sont [forkées](https://code.claude.com/docs/fr/sub-agents.md#fork-the-current-conversation) lorsque le mode fork est activé (par défaut).

451* Les sous-agents qu'il démarre s'exécutent en arrière-plan par défaut, afin que votre conversation principale continue d'avancer.

386 452 

387> [!TIP]453Vous avez rarement besoin de demander quoi que ce soit de cela, mais il est utile de savoir ce que vous obtenez et ce que cela coûte.

388>

389> Déléguez la recherche avec `« utiliser les subagents pour enquêter sur X »`. Ils explorent dans un contexte séparé, gardant votre conversation principale propre pour l'implémentation.

390 454 

391Puisque le contexte est votre contrainte fondamentale, utilisez les subagents pour garder la recherche en dehors de celui-ci. Lorsque Claude enquête sur une base de code, il lit de nombreux fichiers, qui consomment tous votre contexte. Les subagents s'exécutent dans des fenêtres de contexte séparées et rapportent les résumés :455Les sous-agents sont rentables dans ces situations :

392 456 

393```text wrap theme={null}457* Exécuter des travaux indépendants en même temps, pour que l'ensemble de la tâche se termine plus tôt

394Use subagents to investigate how our authentication system handles token458* Garder une sortie longue, comme une exécution complète des tests ou une recherche étendue, hors de votre conversation principale, où elle resterait sinon présente pour le reste de la session

395refresh, and whether we have any existing OAuth utilities I should reuse.459* Obtenir un relecteur qui n'a pas vu comment le code a été écrit

396```460* Donner à une tâche moins d'outils que n'en a la session principale, comme un relecteur qui peut lire mais pas modifier

397 461 

398Vous pouvez également utiliser les subagents pour la vérification après que Claude implémente quelque chose. Consultez [Ajouter une étape d'examen contradictoire](#add-an-adversarial-review-step).462Ce qu'ils vous coûtent, ce sont surtout des tokens, puisque chaque sous-agent envoie ses propres requêtes et que celles-ci sont décomptées de la même utilisation que votre conversation principale. Parfois, c'est aussi du temps : un nouveau sous-agent doit d'abord rassembler un contexte que votre conversation avait déjà, et il peut donc finir par être *plus lent* que si vous faisiez la tâche sur place.

399 463 

400### Rembobinez avec des points de contrôle464Et par défaut, c'est le même modèle (ou un plus petit) sur la même tâche. Vous en retirez du parallélisme ou un regard neuf, mais pas une réponse plus intelligente.

401 465 

402> [!TIP]466Pour dépenser moins pour eux :

403>

404> Chaque invite que vous envoyez crée un point de contrôle. Vous pouvez restaurer la conversation, le code ou les deux à n'importe quel point de contrôle précédent.

405 467 

406Claude crée automatiquement des instantanés de fichiers avant chaque modification afin qu'un point de contrôle puisse les restaurer. Appuyez deux fois sur `Escape` ou exécutez `/rewind` pour ouvrir le menu de rembobinage. Vous pouvez restaurer la conversation uniquement, restaurer le code uniquement, restaurer les deux ou résumer à partir d'un message sélectionné. Consultez [Checkpointing](https://code.claude.com/docs/fr/checkpointing.md) pour plus de détails.468* Définissez [`model: haiku`](https://code.claude.com/docs/fr/sub-agents#choose-a-model) dans la définition d'un sous-agent si son travail est simple, comme recenser les fichiers qui importent un module ou vérifier les liens de la documentation. Ce genre de tâche n'a pas besoin du plus grand modèle, et Haiku coûte beaucoup moins cher par requête.

469* Demandez des résumés courts en retour, pour que vingt résultats ne remplissent pas votre contexte quand même.

470* Consultez `/usage` pour voir quelle part de votre utilisation prend chaque type de sous-agent, afin de savoir lesquels justifient leur coût.

471* Donnez à un sous-agent personnalisé dans `.claude/agents/` uniquement `tools: Read, Grep, Glob`. C'est alors un relecteur qui ne peut rien modifier, et cette limite est imposée par Claude Code plutôt que demandée dans un prompt.

407 472 

408Au lieu de planifier soigneusement chaque mouvement, vous pouvez dire à Claude d'essayer quelque chose de risqué. Si cela ne fonctionne pas, rembobinez et essayez une approche différente. Les points de contrôle persistent entre les sessions, vous pouvez donc fermer votre terminal et toujours rembobiner plus tard.473Ce relecteur tient en un court fichier, `.claude/agents/reviewer.md` :

409 474 

410> [!WARNING]475```markdown .claude/agents/reviewer.md theme={null}

411>476---

412> Les points de contrôle ne suivent que les modifications apportées par les outils d'édition de fichiers de Claude. Les modifications apportées par des commandes Bash ou des processus externes ne sont pas capturées. Ce n'est pas un remplacement pour git.477name: reviewer

478description: Reviews changed files against the spec they were built from. Use after implementing a feature, before opening the PR.

479tools: Read, Grep, Glob

480---

481You're reviewing code you didn't write. Compare the changed files against the spec you're given,

482check that every requirement is implemented and the listed edge cases have tests,

483and report only the gaps that affect correctness. Skip style.

484```

413 485 

414### Reprenez les conversations486Demandez à Claude `have the reviewer compare the rate limiter against SPEC.md` et les lacunes reviennent dans votre session, où Claude peut les corriger.

415 487 

416> [!TIP]488### Maîtrisez le coût et le contexte

417>

418> Nommez les sessions avec `/rename` et traitez-les comme des branches : chaque flux de travail obtient son propre contexte persistant.

419 489 

420Claude Code enregistre les conversations localement, donc lorsqu'une tâche s'étend sur plusieurs sessions, vous n'avez pas à réexpliquer le contexte. Exécutez [`claude --continue`](https://code.claude.com/docs/fr/sessions#resume-a-session) pour reprendre la session la plus récente, ou `claude --resume` pour choisir parmi une liste. Donnez aux sessions des noms descriptifs comme `oauth-migration` afin de pouvoir les trouver plus tard. Consultez [Manage sessions](https://code.claude.com/docs/fr/sessions.md) pour l'ensemble complet des contrôles de reprise, de branchement et de nommage.490Avec une fenêtre de 1M de tokens sur la plupart des modèles actuels et une compaction proche de sa limite, vous manquerez rarement de contexte. Vous pouvez cependant toujours *payer* pour du contexte dont vous n'avez pas besoin. Chaque requête envoie toute la conversation, donc une session qui a accumulé trois tâches sans rapport relit les trois à chaque tour de la quatrième. C'est [à prix réduit tant que le cache est chaud](https://code.claude.com/docs/fr/costs.md#why-usage-climbs-in-a-long-session) et à plein tarif une fois qu'il a expiré.

421 491 

422***492[`/usage`](https://code.claude.com/docs/fr/costs) est le premier endroit où regarder. Sur Pro, Max, Team et Enterprise, il ventile votre utilisation par skill, sous-agent, plugin et serveur MCP. Il signale aussi des tendances comme un contexte long ou des défauts de cache fréquents dès que l'une d'elles dépasse 10 % de votre utilisation. À partir de là, les solutions habituelles :

423 493 

424## Automatisez et mettez à l'échelle494* `/clear` entre des tâches sans rapport. Cela ne coûte rien, et la tâche suivante ne continue pas à payer pour l'historique de la précédente. `/clear oauth-migration` nomme la session que vous quittez, afin que vous puissiez y revenir plus tard.

495* `/compact` avec un objectif, comme `/compact keep the API changes and the test commands`. Sur une longue session, `/compact` est lui-même une grosse requête, puisqu'il lit toute la conversation pour la résumer, et plus encore une fois le cache expiré.

496* Gardez un œil sur le travail en arrière-plan : un `/loop`, la vérification d'un objectif après chaque tour et les propres sous-agents de Claude continuent tous d'envoyer des requêtes pendant que vous ne tapez pas.

425 497 

426Une fois que vous êtes efficace avec un Claude, multipliez votre production avec des sessions parallèles, le mode non interactif et les modèles de fan-out.498> [!NOTE]

499>

500> Le [prompt caching](https://code.claude.com/docs/fr/prompt-caching.md) dure environ une heure avec un abonnement et cinq minutes avec une clé API, un fournisseur cloud ou des crédits d'utilisation. Les sous-agents disposent de cinq minutes sauf si vous le modifiez.

501>

502> Avec le cache d'une heure, une session de plus d'environ 200K tokens qui reste inactive est compactée peu avant l'expiration du cache, donc après le déjeuner vous reprenez à partir d'un résumé. Si vous n'avez pas du tout besoin de l'historique, une nouvelle session coûte encore moins cher.

427 503 

428### Exécutez le mode non interactif504## Pilotez la session

429 505 

430> [!TIP]506> [!TIP]

431>507>

432> Utilisez `claude -p "prompt"` dans CI, les hooks de pré-commit ou les scripts. Ajoutez `--output-format stream-json --verbose` pour la sortie JSON en streaming.508> Surveillez la première minute, appuyez sur `Esc` dès que Claude dévie, et après deux corrections infructueuses, exécutez `/clear` et écrivez un meilleur prompt au lieu d'une troisième correction.

433 509 

434Avec `claude -p "your prompt"`, vous pouvez exécuter Claude de manière non interactive, sans prompt interactif. L'exécution crée tout de même une session pouvant être reprise, à moins que vous ne transmettiez `--no-session-persistence`. Le [mode non interactif](https://code.claude.com/docs/fr/headless.md) est la façon dont vous intégrez Claude dans les pipelines CI, les hooks de pré-commit ou tout workflow automatisé. Les formats de sortie vous permettent d'analyser les résultats par programmation : texte brut, JSON ou JSON en streaming.510Aucune configuration ne remplace le fait de surveiller la première minute et d'intervenir lorsque Claude part dans une direction que vous n'aviez pas prévue. Il n'existe que quelques contrôles pour cela, et ils valent la peine d'être connus par cœur :

435 511 

436```bash theme={null}512* `Esc` arrête Claude en pleine action et conserve tout jusqu'à ce point, afin que vous puissiez le rediriger sans perdre de travail.

437# One-off queries513* `/rewind`, ou `Esc` deux fois sur un prompt vide, ouvre le [menu de retour en arrière](https://code.claude.com/docs/fr/checkpointing.md#rewind-and-summarize), où vous ramenez le code, la conversation ou les deux à un prompt antérieur. Cela rend peu risqué le fait d'essayer d'abord l'approche la plus audacieuse et de revenir en arrière si elle ne fonctionne pas. Le même menu peut aussi résumer une partie de la conversation devenue obsolète.

438claude -p "Explain what this project does"514* `/clear` repart de zéro. Si vous avez corrigé la même chose deux fois et que c'est toujours faux, une troisième correction ne fait surtout qu'alourdir une conversation qui contient déjà deux tentatives échouées que Claude continue de relire. `/clear` suivi d'un nouveau prompt qui intègre ce que vous avez appris fonctionne mieux presque à chaque fois.

439 

440# Structured output for scripts

441claude -p "List all API endpoints" --output-format json

442 515 

443# Streaming for real-time processing516> [!WARNING]

444claude -p "Analyze this log file" --output-format stream-json --verbose517>

445```518> Les checkpoints couvrent les fichiers que Claude a modifiés avec ses propres outils de fichiers dans votre conversation principale, donc un fichier touché uniquement par une commande Bash [n'est pas restauré](https://code.claude.com/docs/fr/checkpointing.md#bash-command-changes-not-tracked). Ils fonctionnent aux côtés de git plutôt que de le remplacer.

446 519 

447La première commande imprime du texte brut. Le format `json` retourne un seul objet JSON avec un champ `result`. Le format `stream-json` imprime un objet JSON par ligne, en commençant par un événement d'initialisation.520Deux contrôles plus modestes : [`/btw`](https://code.claude.com/docs/fr/interactive-mode#side-questions-with-%2Fbtw) répond à une question rapide sans rien ajouter à l'historique. Et pour un travail qui s'étale sur plusieurs jours, `/rename oauth-migration` dans la session lui donne un nom, afin que [`claude --resume oauth-migration`](https://code.claude.com/docs/fr/sessions#resume-by-session-id-or-name) depuis votre shell le reprenne plus tard, checkpoints compris. `claude --continue` reprend la session la plus récente.

448 521 

449### Exécutez plusieurs sessions Claude522## Laissez Claude travailler sans vous

450 523 

451> [!TIP]524> [!TIP]

452>525>

453> Exécutez plusieurs sessions Claude en parallèle pour accélérer le développement, exécuter des expériences isolées ou démarrer des workflows complexes.526> Avant qu'une exécution ne se déroule sans surveillance, assurez-vous qu'elle sait à quoi ressemble « terminé », qu'elle peut vérifier son propre travail et qu'elle ne peut toucher que ce qu'elle doit. Donnez-lui une limite de tours ou de dépenses, et faites approuver le résultat par une personne à la fin.

454 

455Choisissez l'approche parallèle qui correspond au niveau de coordination que vous souhaitez faire vous-même, et ajoutez de la messagerie lorsque les sessions doivent se transmettre les résultats :

456 527 

457* [Worktrees](https://code.claude.com/docs/fr/worktrees.md) : exécutez des sessions CLI séparées dans des checkouts git isolés afin que les modifications ne se heurtent pas528Tout ce qui figure sur cette page compte un peu plus une fois que vous n'êtes plus là pour rattraper les erreurs. Tant que vous surveillez, le fait qu'il manque à Claude un élément de contexte n'est pas grave : vous le remarquez en un message ou deux et vous le lui dites. Dans une exécution lancée avant d'aller vous coucher, personne ne le lui dit, et vous découvrez le lendemain matin qu'il a passé toute la nuit à construire sur une hypothèse erronée.

458* [Messagerie inter-sessions](https://code.claude.com/docs/fr/cross-session-messaging.md) : laissez les sessions que vous exécutez vous-même se transmettre les résultats

459* [Application de bureau](https://code.claude.com/docs/fr/desktop.md#work-in-parallel-with-sessions) : gérez visuellement plusieurs sessions locales, éventuellement chacune dans son propre worktree

460* [Utiliser Claude Code dans le cloud](https://code.claude.com/docs/fr/claude-code-on-the-web.md) : exécutez des sessions sur l'infrastructure gérée par Anthropic par défaut

461* [Vue agent](https://code.claude.com/docs/fr/agent-view.md) : en research preview. Exécutez `claude agents` pour dispatcher des sessions qui continuent de s'exécuter en arrière-plan et les surveiller depuis un seul écran

462* [Équipes d'agents](https://code.claude.com/docs/fr/agent-teams.md) : expérimental et désactivé par défaut. Coordination automatisée de plusieurs sessions avec des tâches partagées, la messagerie et un chef d'équipe

463 529 

464Au-delà de la parallélisation du travail, plusieurs sessions permettent des workflows axés sur la qualité. Un contexte frais améliore la revue de code puisque Claude ne sera pas biaisé vers le code qu'il vient d'écrire.530Avant de laisser une tâche s'exécuter seule, il vaut la peine de passer en revue ces cinq questions en gardant cette tâche précise à l'esprit :

465 531 

466Par exemple, utilisez un modèle Writer/Reviewer :5321. Sait-elle à quoi ressemble « terminé » ? Une condition d'objectif, un fichier de spécification ou un test qui échoue et qu'elle doit faire passer au vert.

5332. Peut-elle vérifier son propre travail ? La suite de tests, un hook `Stop`, une étape de revue quelconque.

5343. Qu'est-elle autorisée à toucher ? Les règles de permission, `dontAsk`, le sandbox, un worktree, la seule branche sur laquelle elle peut pousser.

5354. Qu'est-ce qui l'arrête ? `--max-turns`, `--max-budget-usd`, une limite de dépenses.

5365. Où va le résultat, et qui le valide ? Une PR, un commentaire ou un résumé, puis une personne qui approuve la fusion, le déploiement ou toute autre action irréversible.

467 537 

468| Session A (Writer) | Session B (Reviewer) |538Une fois lancé, Claude mènera seul une longue tâche à son terme. Ce qui reste de votre ressort, c'est de la démarrer, de décider ce que « terminé » signifie cette fois-ci et d'approuver la fusion à la fin.

469| - | - |

470| `Implement a rate limiter for our API endpoints` | |

471| | `Review the rate limiter implementation in @src/middleware/rateLimiter.ts. Look for edge cases, race conditions, and consistency with our existing middleware patterns.` |

472| `Here's the review feedback: [Session B output]. Address these issues.` | |

473 539 

474Vous pouvez faire quelque chose de similaire avec les tests : avoir un Claude écrire des tests, puis un autre écrire du code pour les réussir.540### Exécutez Claude depuis un script

475 541 

476### Fan out sur les fichiers542[`claude -p "prompt"`](https://code.claude.com/docs/fr/headless) s'exécute une fois puis se termine, et c'est ainsi que Claude Code se retrouve dans des jobs CI, des hooks git et des boucles shell.

477 

478> [!TIP]

479>

480> Bouclez à travers les tâches en appelant `claude -p` pour chacune. Utilisez `--allowedTools` pour pré-approuver les outils pour les opérations par lot.

481 543 

482Pour les migrations ou analyses à grande échelle, vous pouvez distribuer le travail sur de nombreuses invocations Claude parallèles. Exécutez [`/batch <instruction>`](https://code.claude.com/docs/fr/commands#all-commands) pour que Claude divise la modification sur 5 à 30 sous-agents. Chaque sous-agent travaille dans son propre worktree. Pour piloter le fan-out à partir de votre propre script à la place, bouclez sur `claude -p` :544Dans un script, vous voudrez presque toujours quelques flags supplémentaires :

483 545 

484**1. Générez une liste de tâches**546* [`--bare`](https://code.claude.com/docs/fr/headless#start-faster-with-bare-mode) ignore les hooks, les skills, les plugins, les serveurs MCP et les fichiers `CLAUDE.md`, ceux du dépôt comme ceux de la machine, afin que l'exécution fasse la même chose où qu'elle s'exécute. Il ne touche jamais non plus à votre connexion claude.ai : l'authentification provient de `ANTHROPIC_API_KEY`, d'un `apiKeyHelper` dans le fichier que vous passez avec `--settings`, ou des identifiants de votre fournisseur cloud.

547* `--append-system-prompt`, `--mcp-config` et `--settings` transmettent explicitement ce dont l'exécution *a* besoin.

548* `--allowedTools` pré-approuve ses outils, et [`--permission-mode dontAsk`](https://code.claude.com/docs/fr/permission-modes#allow-only-pre-approved-tools-with-dontask-mode) refuse tout le reste qui aurait déclenché une demande.

549* `--output-format json` vous donne un objet résultat unique à analyser, et `stream-json` avec `--verbose` diffuse les événements au fur et à mesure.

485 550 

486Demandez à Claude d'écrire la liste des fichiers qui doivent être migrés dans un fichier, afin que la boucle à l'étape suivante puisse la lire, avec un prompt comme `list all 2,000 Python files that need migrating and save the list to files.txt`551Assemblé, cela ressemble à ceci :

487 

488**2. Écrivez un script pour boucler à travers la liste**

489 552 

490```bash theme={null}553```bash theme={null}

491for file in $(cat files.txt); do554for file in $(cat files.txt); do

492 claude -p "Migrate $file from Python 2 to Python 3. Return OK or FAIL." \555 claude --bare -p "Migrate $file to the new logger API and commit. Reply OK or FAIL." \

493 --allowedTools "Edit,Bash(git commit *)" \556 --allowedTools "Read,Edit,Bash(git add *),Bash(git commit *)" \

494 --permission-mode dontAsk557 --permission-mode dontAsk \

558 --max-turns 20

495done559done

496```560```

497 561 

498**3. Testez sur quelques fichiers, puis exécutez sur tous**562Lorsqu'une exécution se termine, Claude répond `OK` ou `FAIL`, et une exécution qui atteint la limite de tours se termine plutôt avec une erreur. Essayez d'abord sur trois fichiers, voyez ce qui ne va pas, corrigez le prompt, puis lancez le reste.

499 

500Affinez votre prompt en fonction de ce qui se passe mal avec les 2-3 premiers fichiers, puis exécutez sur l'ensemble complet. Le flag `--allowedTools` pré-approuve les outils dont la migration a besoin. [`--permission-mode dontAsk`](https://code.claude.com/docs/fr/permission-modes#allow-only-pre-approved-tools-with-dontask-mode) refuse tout ce qui nécessiterait une approbation, ce qui importe lorsque vous exécutez sans surveillance, bien qu'un [mod](https://code.claude.com/docs/fr/plugins/mods/overview.md) que vous avez installé puisse tout de même approuver certains de ces appels.

501 563 

502Vous pouvez également intégrer Claude dans les pipelines de données/traitement existants :564Le mode auto fonctionne aussi avec `-p` si vous passez `--permission-mode auto`. Dans une exécution non interactive, un blocage du classifieur refuse cette action précise et Claude continue, et des blocages répétés ne mettent pas l'exécution en pause comme ils le font dans un terminal. Lisez [comment les seuils s'y appliquent](https://code.claude.com/docs/fr/permission-modes.md#repeated-block-thresholds) avant de vous y fier.

503 565 

504```bash theme={null}566### Démarrez des exécutions selon un planning ou un événement

505claude -p "<your prompt>" --output-format json | your_command

506```

507 567 

508### Exécutez de manière autonome avec le mode auto568Une fois une exécution lancée, Claude peut gérer le reste seul. La seule chose qu'il ne peut pas faire, c'est décider de *démarrer*, donc quelque chose doit le faire : vous, un minuteur ou un événement comme une vérification CI échouée ou une nouvelle PR.

509 569 

510Pour une exécution ininterrompue avec des vérifications de sécurité en arrière-plan, utilisez le [mode auto](https://code.claude.com/docs/fr/permission-modes.md#eliminate-prompts-with-auto-mode). Un modèle classifieur examine les commandes avant qu'elles ne s'exécutent, bloquant l'escalade de portée, l'infrastructure inconnue et les actions motivées par du contenu hostile tout en laissant le travail courant se dérouler sans demandes de permission.570Dans une session ouverte, c'est [`/loop`](https://code.claude.com/docs/fr/scheduled-tasks#run-a-prompt-repeatedly-with-%2Floop), qui répète un prompt à intervalle régulier :

511 571 

512```bash theme={null}572```text theme={null}

513claude --permission-mode auto -p "fix all lint errors"573/loop 15m check CI on this branch, and if it's red pull the failing job's log, fix it and push

514```574```

515 575 

516Lorsque le classifieur bloque à plusieurs reprises les actions dans une exécution non interactive avec le flag `-p`, Claude Code n'arrête pas l'exécution. Consultez [quand le mode auto se replie](https://code.claude.com/docs/fr/permission-modes.md#when-auto-mode-falls-back) pour ce qui se passe à la place et pour les seuils.576Chaque exécution est un tour supplémentaire dans la même session, donc n'en laissez pas tourner une dans une longue conversation. Pour tout ce qui doit se produire pendant que votre ordinateur portable est fermé, [`/schedule`](https://code.claude.com/docs/fr/routines#create-from-the-cli) configure une [tâche planifiée cloud](https://code.claude.com/docs/fr/routines.md) qui s'exécute selon un minuteur. Elle nécessite une connexion claude.ai plutôt qu'une clé API. Vous pouvez ajouter un déclencheur basé sur un événement GitHub en le demandant à Claude, ou un déclencheur API sur [claude.ai/code/routines](https://claude.ai/code/routines).

517 

518### Ajoutez une étape d'examen contradictoire

519 577 

520> [!TIP]578> [!WARNING]

521>579>

522> Avant de considérer une tâche comme terminée, demandez à un sous-agent d'examiner le diff dans un contexte frais et de signaler les lacunes.580> Avant de laisser une tâche planifiée cloud s'exécuter, protégez `main` avec une [règle de branche GitHub que la tâche ne peut pas contourner](https://code.claude.com/docs/fr/routines.md#repositories-and-branch-permissions). Et surveillez les premières exécutions de toute nouveauté avant de lui faire confiance sans surveillance.

523 

524Plus Claude travaille sans surveillance, plus une vérification indépendante importe avant de compter le travail comme terminé. Un examinateur s'exécutant dans un contexte de [sous-agent](https://code.claude.com/docs/fr/sub-agents.md) frais ne voit que le diff et les critères que vous lui donnez, pas le raisonnement qui a produit le changement, donc il évalue le résultat selon ses propres termes.

525 581 

526Pour une vérification de la correction, exécutez le [skill `/code-review`](https://code.claude.com/docs/fr/commands) fourni, qui examine le diff actuel à la recherche de bogues dans un sous-agent frais et retourne les résultats à la session. Pour vérifier le diff par rapport à votre plan à la place, écrivez vous-même le prompt d'examen. Nommez le travail à vérifier, le plan par rapport auquel le vérifier et ce qui compte comme une constatation :582### Exécutez des sessions en parallèle

527 583 

528```text wrap theme={null}584Lorsque vous menez plusieurs travaux distincts en même temps, donnez à chacun son propre checkout afin que les modifications ne puissent pas entrer en collision. [`claude -w feature-auth`](https://code.claude.com/docs/fr/worktrees#start-claude-in-a-worktree) démarre une session dans un nouveau worktree, l'[application de bureau](https://code.claude.com/docs/fr/desktop.md#work-in-parallel-with-sessions) en exécute plusieurs côte à côte, et les [sessions cloud](https://code.claude.com/docs/fr/claude-code-on-the-web.md) les exécutent dans le cloud plutôt que sur votre machine.

529Use a subagent to review the rate limiter diff against PLAN.md. Check that

530every requirement is implemented, the listed edge cases have tests, and

531nothing outside the task's scope changed. Report gaps, not style preferences.

532```

533 585 

534Parce que l'examinateur s'exécute en tant que sous-agent, la session d'implémentation reçoit les lacunes directement et peut les corriger et les réexaminer sans que vous copiiez les résultats entre les fenêtres.586Un worktree est un checkout neuf, ce qui signifie que les fichiers ignorés par git comme `.env` n'y sont pas et que les dépendances ne sont pas installées. Pour le premier point, listez les fichiers ignorés par git dont vous avez besoin dans un [`.worktreeinclude`](https://code.claude.com/docs/fr/worktrees#copy-gitignored-files-into-worktrees) à la racine du dépôt (même syntaxe que `.gitignore`) et Claude Code les copie dans chaque worktree qu'il crée :

535 587 

536Un examinateur à qui l'on demande de trouver des lacunes en signalera généralement, même lorsque le travail est solide, car c'est ce qu'on lui a demandé de faire. Poursuivre chaque constatation mène à une sur-ingénierie : couches d'abstraction supplémentaires, code défensif et tests pour des cas qui ne peuvent pas se produire. Dites à l'examinateur de signaler uniquement les lacunes qui affectent la correction ou les exigences énoncées, et traitez le reste comme optionnel.588```text .worktreeinclude theme={null}

589.env

590.env.local

591config/dev-credentials.json

592```

537 593 

538***594Limitez-vous à de petits fichiers : il copie plutôt que de lier, donc y mettre `node_modules` signifierait une copie complète par worktree. Pour les grands répertoires, il existe le paramètre [`worktree.symlinkDirectories`](https://code.claude.com/docs/fr/settings-reference#worktree-symlinkdirectories), ou bien gardez la commande d'installation dans `CLAUDE.md` pour que Claude l'exécute chaque fois qu'il démarre dans un nouveau checkout.

539 595 

540## Évitez les modèles d'échec courants596Vous avez rarement à faire le ménage vous-même :

541 597 

542Ce sont des erreurs courantes. Les reconnaître tôt économise du temps :598* Lorsque vous quittez une session de worktree sans nom, Claude Code [supprime le worktree](https://code.claude.com/docs/fr/worktrees.md#clean-up-worktrees) s'il ne contient rien. Pour une session nommée, ou une session avec des modifications, il vous demande quoi faire.

599* Les worktrees des sous-agents disparaissent lorsque le sous-agent se termine sans modifications.

600* Les worktrees de sous-agents et de sessions en arrière-plan qui restent malgré tout sont nettoyés une fois qu'ils sont plus anciens que `cleanupPeriodDays` et ne contiennent aucun travail.

543 601 

544* **La session fourre-tout.** Vous commencez par une tâche, puis demandez à Claude quelque chose d'autre, puis revenez à la première tâche. Le contexte est plein d'informations non pertinentes.602> [!NOTE]

545 > **Correction** : `/clear` entre les tâches non liées.603>

546* **Corriger encore et encore.** Claude fait quelque chose de mal, vous le corrigez, c'est toujours mal, vous corrigez à nouveau. Le contexte est pollué par des approches échouées.604> Une exécution `claude -p --worktree` est à nettoyer vous-même, puisqu'elle se termine sans rien demander. Supprimez ces worktrees avec `git worktree remove <path>`, et si git refuse parce que le worktree est verrouillé, exécutez d'abord `git worktree unlock <path>`.

547 > **Correction** : Après deux corrections échouées, `/clear` et écrivez une meilleure invite initiale incorporant ce que vous avez appris.

548* **Le CLAUDE.md sur-spécifié.** Si votre CLAUDE.md est trop long, Claude ignore la moitié car les règles importantes se perdent dans le bruit.

549 > **Correction** : Élaguez impitoyablement. Si Claude fait déjà quelque chose correctement sans l'instruction, supprimez-le ou convertissez-le en hook.

550* **L'écart de confiance-puis-vérification.** Claude produit une implémentation plausible qui ne gère pas les cas limites.

551 > **Correction** : Fournissez toujours une vérification (tests, scripts, captures d'écran). Si vous ne pouvez pas la vérifier, ne la déployez pas.

552* **L'exploration infinie.** Vous demandez à Claude d'« enquêter » sur quelque chose sans le délimiter. Claude lit des centaines de fichiers, remplissant le contexte.

553 > **Correction** : Délimitez les enquêtes étroitement ou utilisez les subagents pour que l'exploration ne consomme pas votre contexte principal.

554 605 

555***606Pour une grosse modification mécanique sur de nombreux fichiers, [`/batch migrate every handler to the v2 response helpers`](https://code.claude.com/docs/fr/commands) divise le travail en 5 à 30 unités et vous montre le plan. Il exécute ensuite chaque unité dans son propre worktree et ouvre une PR pour chacune. Depuis votre shell, [`claude agents`](https://code.claude.com/docs/fr/agent-view) (encore en research preview) vous donne un seul écran pour tout ce qui s'exécute en arrière-plan sur votre machine.

556 607 

557## Développez votre intuition608Une deuxième session est aussi le relecteur indépendant le plus facile à obtenir. Une session écrit le limiteur de débit, une autre examine `@src/middleware/rateLimiter.ts` sans l'avoir vu s'écrire, et vous recollez les constatations dans la première. Même idée que `/code-review`, mais c'est vous qui transportez les messages.

558 609 

559Les modèles de ce guide ne sont pas gravés dans le marbre. Ce sont des points de départ qui fonctionnent bien en général, mais pourraient ne pas être optimaux pour chaque situation.610## Ce que vous pouvez arrêter de faire

560 611 

561Parfois, vous *devriez* laisser le contexte s'accumuler parce que vous êtes profondément dans un problème complexe et l'historique est précieux. Parfois, vous devriez ignorer la planification et laisser Claude le découvrir parce que la tâche est exploratoire. Parfois, une invite vague est exactement ce qu'il faut parce que vous voulez voir comment Claude interprète le problème avant de le contraindre.612Chacun de ces conseils était judicieux au moment où il a été écrit. La plupart étaient des contournements pour quelque chose que le modèle ne pouvait pas encore faire de manière fiable, et les modèles ont depuis rattrapé leur retard. Si certains sont encore des habitudes, voici pourquoi vous pouvez les abandonner sans risque.

562 613 

563Faites attention à ce qui fonctionne. Lorsque Claude produit une excellente sortie, remarquez ce que vous avez fait : la structure de l'invite, le contexte que vous avez fourni, le mode dans lequel vous étiez. Lorsque Claude lutte, demandez-vous pourquoi. Le contexte était-il trop bruyant ? L'invite trop vague ? La tâche trop grande pour une seule passe ?614| L'ancien conseil | Pourquoi il n'a plus lieu d'être |

615| :- | :- |

616| La fenêtre de contexte est votre principale contrainte, gérez-la agressivement | La plupart des modèles actuels ont une fenêtre de 1M de tokens et la compaction se fait d'elle-même, il est donc rare d'en manquer. `/clear` entre les tâches vaut toujours la peine, car un contexte ciblé vous donne de meilleures réponses et coûte moins cher. |

617| Ajoutez IMPORTANT ou des MAJUSCULES aux instructions que Claude ne cesse de manquer | Les modèles plus anciens avaient parfois besoin de cette emphase. Les actuels suivent une ligne formulée simplement, et accumuler l'emphase pousse surtout Claude à sur-appliquer la règle. S'il s'agit d'une règle qui ne peut pas fléchir, transformez-la en hook ou en règle de refus. Si la ligne se perd dans un long fichier, c'est le fichier qui doit être raccourci. |

618| Utilisez des sous-agents pour protéger votre fenêtre de contexte | Manquer de contexte est rarement le problème désormais. Les sous-agents restent excellents pour le travail en parallèle, pour tenir les sorties bruyantes à l'écart et pour la revue indépendante, mais chacun de ces usages coûte des tokens supplémentaires. |

619| Déléguez à un sous-agent pour obtenir une meilleure réponse | Confier la même tâche à un sous-agent ne rend pas la réponse meilleure. Un relecteur neuf aide bien, parce qu'il n'a pas vu votre raisonnement, mais c'est autre chose que déléguer. |

620| `think hard`, `think harder`, `be thorough` dans le prompt | L'effort est le contrôle prévu pour cela. Ces expressions sont du texte de prompt ordinaire qui oriente Claude dans les limites de son niveau d'effort, plutôt que des mots-clés qui l'augmentent. `ultrathink` fonctionne toujours : il demande un raisonnement plus approfondi pour ce seul tour sans toucher à votre paramètre d'effort. |

621| Dites à Claude de continuer, de boucler jusqu'à ce que ce soit fini, de ne pas être paresseux | Les modèles actuels mènent généralement une tâche convenue à son terme sans qu'on le leur dise, et ce genre de ligne risque davantage de provoquer un excès de travail que de résoudre un blocage. Donner à Claude une vérification à réussir est différent, et vaut toujours la peine. Si une exécution s'arrête trop tôt, dites `continue`, et pour les exécutions que personne ne surveille, `/goal` ou un hook `Stop` l'impose. |

622| Décrivez votre architecture et l'organisation de vos fichiers dans `CLAUDE.md` | Claude lit lui-même le dépôt. N'écrivez que ce qui ne s'y trouve pas. |

564 623 

565Au fil du temps, vous développerez une intuition qu'aucun guide ne peut capturer. Vous saurez quand être spécifique et quand être ouvert, quand planifier et quand explorer, quand effacer le contexte et quand le laisser s'accumuler.624Si un autre conseil de cette page commence un jour à ressembler à une corvée, c'est probablement le signe qu'il a lui aussi sa place dans ce tableau.

566 625 

567## Ressources connexes626## Ressources connexes

568 627 

569* [Comment fonctionne Claude Code](https://code.claude.com/docs/fr/how-claude-code-works.md) : la boucle agentique, les outils et la gestion du contexte628* [Comment fonctionne Claude Code](https://code.claude.com/docs/fr/how-claude-code-works.md) : la boucle, les outils et ce qui se charge au démarrage

570* [Étendre Claude Code](https://code.claude.com/docs/fr/features-overview.md) : skills, hooks, MCP, subagents et plugins629* [Explorer la fenêtre de contexte](https://code.claude.com/docs/fr/context-window.md) : ce qui occupe de l'espace dans une session et quand cela se charge

571* [Flux de travail courants](https://code.claude.com/docs/fr/common-workflows.md) : recettes étape par étape pour le débogage, les tests, les PR et plus630* [Étendre Claude Code](https://code.claude.com/docs/fr/features-overview.md) : le choix entre skills, hooks, MCP, sous-agents et plugins

572* [CLAUDE.md](https://code.claude.com/docs/fr/memory.md) : stocker les conventions de projet et le contexte persistant631* [Choisir un mode de permission](https://code.claude.com/docs/fr/permission-modes.md) et [Configurer les permissions](https://code.claude.com/docs/fr/permissions.md)

632* [Gérer les coûts efficacement](https://code.claude.com/docs/fr/costs.md)

633* [Exécuter Claude Code de manière programmatique](https://code.claude.com/docs/fr/headless.md) et [Automatiser le travail avec des tâches planifiées cloud](https://code.claude.com/docs/fr/routines.md)

634* Pour les responsables d'équipe et les administrateurs : [Configurer Claude Code pour votre organisation](https://code.claude.com/docs/fr/admin-setup.md)

chrome.md +1 −1

Details

43 43 

44Dans les organisations Enterprise pour lesquelles HIPAA est activé, Claude in Chrome est désactivé par défaut, et un [Owner](https://code.claude.com/docs/fr/server-managed-settings.md#access-control) peut l'activer dans [**Organization settings > Claude in Chrome**](https://claude.ai/admin-settings/browser-extension). Votre Business Associate Agreement (BAA) avec Anthropic ne couvre pas les données envoyées à des sites tiers via Claude in Chrome. Consultez l'[Implementation Guide](https://trust.anthropic.com/resources?s=l1wrssd9hsbi4gak0tp5a6\&name=%5Banthropic%5D-hipaa-ready-offering-implementation-guide) pour obtenir la liste des Eligible Services.44Dans les organisations Enterprise pour lesquelles HIPAA est activé, Claude in Chrome est désactivé par défaut, et un [Owner](https://code.claude.com/docs/fr/server-managed-settings.md#access-control) peut l'activer dans [**Organization settings > Claude in Chrome**](https://claude.ai/admin-settings/browser-extension). Votre Business Associate Agreement (BAA) avec Anthropic ne couvre pas les données envoyées à des sites tiers via Claude in Chrome. Consultez l'[Implementation Guide](https://trust.anthropic.com/resources?s=l1wrssd9hsbi4gak0tp5a6\&name=%5Banthropic%5D-hipaa-ready-offering-implementation-guide) pour obtenir la liste des Eligible Services.

45 45 

46L'intégration Chrome nécessite également de se connecter avec `/login`. Si vous vous authentifiez avec une clé API ou un jeton de longue durée de [`claude setup-token`](https://code.claude.com/docs/fr/authentication#generate-a-long-lived-token), Claude Code désactive l'intégration Chrome, même si vous passez `--chrome`, car l'extension de navigateur ne peut pas s'authentifier avec ces identifiants. Avant la v2.1.216, ces sessions pouvaient activer l'intégration Chrome, mais chaque tentative de connexion à l'extension de navigateur échouait avec une erreur 403.46L'intégration Chrome nécessite également de se connecter avec `/login`. Si vous vous authentifiez avec une clé API ou un jeton de longue durée de [`claude setup-token`](https://code.claude.com/docs/fr/authentication#generate-a-long-lived-token), Claude Code désactive l'intégration Chrome, même si vous passez `--chrome`. L'extension de navigateur ne peut pas s'authentifier avec ces identifiants.

47 47 

48> [!NOTE]48> [!NOTE]

49>49>

Details

996 996 

997[Mémoire d'approbation](https://code.claude.com/docs/fr/server-managed-settings.md#approval-memory) explique combien de temps dure une approbation et quand la boîte de dialogue réapparaît.997[Mémoire d'approbation](https://code.claude.com/docs/fr/server-managed-settings.md#approval-memory) explique combien de temps dure une approbation et quand la boîte de dialogue réapparaît.

998 998 

999Claude Code applique certaines variables `env` livrées sans afficher la boîte de dialogue d'approbation au développeur, comme les paramètres de sélection de modèle et les limites numériques. D'autres variables livrées peuvent nécessiter l'approbation du développeur avant de prendre effet ; une valeur non vide de proxy, d'URL de base ou de `OTEL_EXPORTER_OTLP_ENDPOINT` la nécessite toujours. Lorsqu'une variable livrée nécessite une approbation, la boîte de dialogue la nomme.999Claude Code applique certaines variables `env` livrées sans afficher la boîte de dialogue d'approbation au développeur, comme les paramètres de sélection de modèle et les limites numériques. D'autres variables livrées peuvent nécessiter l'approbation du développeur ; c'est toujours le cas d'une valeur non vide de proxy, d'URL de base ou de `OTEL_EXPORTER_OTLP_ENDPOINT`. Lorsqu'une variable livrée nécessite une approbation, la boîte de dialogue la nomme. [Variables d'environnement et boîte de dialogue d'approbation](https://code.claude.com/docs/fr/server-managed-settings.md#environment-variables-and-the-approval-dialog) fournit les détails, y compris quatre options de confidentialité dont la valeur livrée détermine si elles nécessitent une approbation.

1000 

1001[Variables d'environnement et boîte de dialogue d'approbation](https://code.claude.com/docs/fr/server-managed-settings.md#environment-variables-and-the-approval-dialog) donne les détails, y compris quatre options de confidentialité dont la valeur livrée détermine si elles nécessitent une approbation. Avant v2.1.218, Claude Code appliquait moins de variables sans demander au développeur, de sorte que davantage de variables livrées déclenchaient la boîte de dialogue.

1002 1000 

1003La configuration de [télémétrie](#telemetry) de la passerelle pousse `OTEL_EXPORTER_OTLP_ENDPOINT`, donc définir `telemetry.forward_to` déclenche la boîte de dialogue sur chaque client interactif. La boîte de dialogue protège la machine du développeur contre une passerelle compromise ou hostile, et non l'organisation contre le développeur.1001La configuration de [télémétrie](#telemetry) de la passerelle pousse `OTEL_EXPORTER_OTLP_ENDPOINT`, donc définir `telemetry.forward_to` déclenche la boîte de dialogue sur chaque client interactif. La boîte de dialogue protège la machine du développeur contre une passerelle compromise ou hostile, et non l'organisation contre le développeur.

1004 1002 

Details

264* **La procédure complète, incluant la création de PR** : consultez [Examiner et itérer](https://code.claude.com/docs/fr/web-quickstart.md#review-and-iterate)264* **La procédure complète, incluant la création de PR** : consultez [Examiner et itérer](https://code.claude.com/docs/fr/web-quickstart.md#review-and-iterate)

265* **Faire en sorte que Claude surveille automatiquement la PR pour les défaillances CI et les commentaires d'examen** : consultez [Correction automatique des pull requests](#auto-fix-pull-requests)265* **Faire en sorte que Claude surveille automatiquement la PR pour les défaillances CI et les commentaires d'examen** : consultez [Correction automatique des pull requests](#auto-fix-pull-requests)

266 266 

267#### Résoudre le problème d'un fichier manquant dans la vue diff

268 

269Un fichier que vous attendiez peut être absent de la liste des fichiers de la vue diff lorsqu'elle compare avec la branche de base, que la session ait poussé des modifications ou non :

270 

271* **Aucune modification poussée pour l'instant** : la liste contient les propres modifications de Claude, mais pas les modifications apportées par les commandes que Claude a exécutées, comme un formateur

272* **Modifications poussées** : la liste contient les commits poussés, mais pas les modifications apportées après le dernier push

273 

274Pour ajouter une modification manquante à la liste, demandez à Claude de créer un commit et de pousser.

275 

267### Gérer le contexte276### Gérer le contexte

268 277 

269Les sessions cloud prennent en charge les [commandes intégrées](https://code.claude.com/docs/fr/commands.md) qui produisent une sortie textuelle. Les commandes qui s'exécutent uniquement dans l'interface du terminal, telles que `/plugin` ou `/resume`, ne sont pas disponibles. Les commandes qui ouvrent un sélecteur ou un panneau dans le terminal se comportent différemment dans les sessions cloud :278Les sessions cloud prennent en charge les [commandes intégrées](https://code.claude.com/docs/fr/commands.md) qui produisent une sortie textuelle. Les commandes qui s'exécutent uniquement dans l'interface du terminal, telles que `/plugin` ou `/resume`, ne sont pas disponibles. Les commandes qui ouvrent un sélecteur ou un panneau dans le terminal se comportent différemment dans les sessions cloud :

270 279 

271* **`/model`, `/effort`, `/color` et `/rename`** : transmettez la valeur en tant qu'argument, par exemple `/model sonnet`, au lieu d'ouvrir le sélecteur du terminal ou le curseur. Les formes d'argument suivent les [notes de disponibilité](https://code.claude.com/docs/fr/commands.md#all-commands) de chaque commande.280* **`/model`, `/effort`, `/color` et `/rename`** : transmettez la valeur en tant qu'argument, par exemple `/model sonnet`, au lieu d'ouvrir le sélecteur du terminal ou le curseur. Les formes d'argument suivent les [notes de disponibilité](https://code.claude.com/docs/fr/commands.md#all-commands) de chaque commande.

272* **`/fast`** : bascule le [mode rapide](https://code.claude.com/docs/fr/fast-mode.md#use-fast-mode-in-cloud-sessions) pour la session lorsque le mode rapide est [disponible sur votre compte](https://code.claude.com/docs/fr/fast-mode.md#requirements). Nécessite Claude Code v2.1.271 ou une version ultérieure dans l'environnement de la session.281* **`/fast`** : bascule le [mode rapide](https://code.claude.com/docs/fr/fast-mode.md#use-fast-mode-in-cloud-sessions) pour la session lorsque le mode rapide est [disponible sur votre compte](https://code.claude.com/docs/fr/fast-mode.md#requirements). Nécessite Claude Code v2.1.271 ou une version ultérieure dans l'environnement de la session.

273* **`/config`** : dans votre navigateur sur claude.ai/code, ouvre la section Claude Code de vos paramètres au lieu de définir une valeur. Pour modifier un paramètre pour une session cloud, définissez une [variable d'environnement](https://code.claude.com/docs/fr/cloud-environments.md#set-environment-variables) sur l'environnement. Dans une session avec un seul dépôt en dehors des fils d'un [projet](https://code.claude.com/docs/fr/claude-projects.md), créez plutôt un commit de la clé dans le fichier `.claude/settings.json` de ce dépôt. [Les paramètres dans les sessions cloud](https://code.claude.com/docs/fr/settings.md#settings-in-cloud-sessions) énumère ce que chaque session lit.282* **`/config`** : dans votre navigateur sur claude.ai/code, ouvre **Paramètres > Code** ou **Paramètres > Claude Code** au lieu de définir une valeur. Pour modifier un paramètre pour une session cloud, définissez une [variable d'environnement](https://code.claude.com/docs/fr/cloud-environments.md#set-environment-variables) sur l'environnement. Dans une session avec un seul dépôt en dehors des fils d'un [projet](https://code.claude.com/docs/fr/claude-projects.md), créez plutôt un commit de la clé dans le fichier `.claude/settings.json` de ce dépôt. [Les paramètres dans les sessions cloud](https://code.claude.com/docs/fr/settings.md#settings-in-cloud-sessions) énumère ce que chaque session lit.

274 283 

275Pour la gestion du contexte dans une session cloud en dehors des [fils d'un projet](https://code.claude.com/docs/fr/claude-projects.md#choose-models-and-let-claude-manage-context) :284Pour la gestion du contexte dans une session cloud en dehors des [fils d'un projet](https://code.claude.com/docs/fr/claude-projects.md#choose-models-and-let-claude-manage-context) :

276 285 


337* **Accès au dépôt** : la vérification n'est pas activée par défaut346* **Accès au dépôt** : la vérification n'est pas activée par défaut

338* **Contenu sensible** : vérifiez votre session avant de partager. Les sessions peuvent contenir du code et des identifiants provenant de dépôts GitHub privés347* **Contenu sensible** : vérifiez votre session avant de partager. Les sessions peuvent contenir du code et des identifiants provenant de dépôts GitHub privés

339 348 

340Pour exiger que les destinataires aient accès au référentiel, ou pour masquer votre nom des sessions partagées, accédez à [**Paramètres > Claude Code > Paramètres de partage**](https://claude.ai/settings/claude-code).349Pour exiger que les destinataires aient accès au dépôt, ou pour masquer votre nom des sessions partagées, ouvrez les Paramètres sur claude.ai, puis :

350 

351* **Si le menu Paramètres affiche Code au lieu de Claude Code** : accédez à [**Confidentialité**](https://claude.ai/settings/data-privacy-controls), qui contient ces paramètres

352* **Sinon** : accédez à [**Claude Code > Paramètres de partage**](https://claude.ai/settings/claude-code)

341 353 

342### Archiver les sessions354### Archiver les sessions

343 355 

Details

95 95 

96Claude Platform on AWS utilise les mêmes ID de modèle que l'API Claude directe.96Claude Platform on AWS utilise les mêmes ID de modèle que l'API Claude directe.

97 97 

98Les alias par défaut `fable`, `opus`, `sonnet` et `haiku` se résolvent aux valeurs par défaut intégrées de Claude Code pour Claude Platform on AWS, qui peuvent être en retard par rapport à la version la plus récente. Sans `ANTHROPIC_DEFAULT_OPUS_MODEL`, l'alias `opus` se résout à Opus 5.5. Avant la v2.1.280, il se résolvait à Opus 5 à partir de la v2.1.219, et à Opus 4.8 à partir de la v2.1.207.98Les alias par défaut `fable`, `opus`, `sonnet` et `haiku` se résolvent aux valeurs par défaut intégrées de Claude Code pour Claude Platform on AWS, qui peuvent être en retard par rapport à la version la plus récente. Sans `ANTHROPIC_DEFAULT_OPUS_MODEL`, l'alias `opus` se résout à Opus 5.5. Avant la v2.1.280, il se résolvait à Opus 5 à partir de la v2.1.219.

99 99 

100Si vous déployez Claude Code pour une équipe, épinglez explicitement les ID de modèle pour qu'une nouvelle version ne déplace pas tout le monde à la fois :100Si vous déployez Claude Code pour une équipe, épinglez explicitement les ID de modèle pour qu'une nouvelle version ne déplace pas tout le monde à la fois :

101 101 

Details

70Vous créez et utilisez des projets à [claude.ai/code](https://claude.ai/code), dans l'onglet Code de l'application de bureau, ou dans l'application mobile Claude pour [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) et [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude). Dans le navigateur et l'application de bureau, il y a deux façons de démarrer un projet :70Vous créez et utilisez des projets à [claude.ai/code](https://claude.ai/code), dans l'onglet Code de l'application de bureau, ou dans l'application mobile Claude pour [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) et [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude). Dans le navigateur et l'application de bureau, il y a deux façons de démarrer un projet :

71 71 

72* **À partir de zéro**, quand vous connaissez le flux de travail que vous voulez que Claude exécute : ouvrez la boîte de dialogue **New project** et nommez-la. [Démarrer un nouveau projet à partir de zéro](#start-a-new-project-from-scratch) parcourt la boîte de dialogue.72* **À partir de zéro**, quand vous connaissez le flux de travail que vous voulez que Claude exécute : ouvrez la boîte de dialogue **New project** et nommez-la. [Démarrer un nouveau projet à partir de zéro](#start-a-new-project-from-scratch) parcourt la boîte de dialogue.

73* **À partir d'une session cloud qui fait déjà le travail** : dans le menu de cette session dans la barre latérale, choisissez **Move to project**, puis **Continue as new project**. Claude propose la configuration du projet à partir de ce que la session faisait. Voir [Démarrer à partir d'une session cloud existante](#start-from-an-existing-cloud-session).73* **À partir d'une session cloud qui fait déjà le travail** : dans le menu de cette session dans la barre latérale, choisissez **Continue in project**, puis **Continue as new project**. Claude propose la configuration du projet à partir de ce que la session faisait. Voir [Démarrer à partir d'une session cloud existante](#start-from-an-existing-cloud-session).

74 74 

75De toute façon, [vérifiez d'abord les prérequis](#check-the-prerequisites).75De toute façon, [vérifiez d'abord les prérequis](#check-the-prerequisites).

76 76 


113 113 

114### Démarrer à partir d'une session existante114### Démarrer à partir d'une session existante

115 115 

116Si une session cloud que vous avez démarrée vous-même effectue un travail qui a sa place dans un projet, ouvrez son menu dans la barre latérale et choisissez **Move to project**, puis faites votre choix dans le sous-menu :116Si une session cloud que vous avez démarrée vous-même effectue un travail qui a sa place dans un projet, ouvrez son menu dans la barre latérale et choisissez **Continue in project**, puis faites votre choix dans le sous-menu :

117 117 

118* Choisissez **Continue as new project** pour créer un nouveau projet à partir de la session. Le projet s'ouvre, et Claude lit la session et publie **Setup recommendations** dans la conversation du projet pour que vous les confirmiez. La session d'origine reste dans votre liste de sessions. Si elle était au milieu d'un tour, elle continue à s'exécuter, donc arrêtez-la vous-même si vous ne voulez pas que les deux fonctionnent à la fois.118* Choisissez **Continue as new project** pour créer un nouveau projet à partir de la session. Le projet s'ouvre, et Claude lit la session et publie **Setup recommendations** dans la conversation du projet pour que vous les confirmiez. La session d'origine reste dans votre liste de sessions. Si elle était au milieu d'un tour, elle continue à s'exécuter, donc arrêtez-la vous-même si vous ne voulez pas que les deux fonctionnent à la fois.

119* Choisissez l'un de vos projets existants pour apporter le travail de la session dans ce projet. Ce projet s'ouvre, et un message envoyé en votre nom demande à Claude de lire la session et de reprendre là où elle s'était arrêtée. La session d'origine reste dans votre liste de sessions, inchangée.119* Choisissez l'un de vos projets existants pour apporter le travail de la session dans ce projet. Ce projet s'ouvre, et un message envoyé en votre nom demande à Claude de lire la session et de reprendre là où elle s'était arrêtée. La session d'origine reste dans votre liste de sessions, inchangée.


262 262 

263Sur l'ordinateur qui a le dossier dont la tâche a besoin, rendez-le disponible via Remote Control de l'une des deux façons. Les deux ont besoin de Claude Code v2.1.280 ou plus tard sur cet ordinateur.263Sur l'ordinateur qui a le dossier dont la tâche a besoin, rendez-le disponible via Remote Control de l'une des deux façons. Les deux ont besoin de Claude Code v2.1.280 ou plus tard sur cet ordinateur.

264 264 

265* **Dans l'application de bureau Claude** : ouvrez **Settings > Claude Code**, activez **Use this computer from your phone and claude.ai**, et ajoutez le dossier à la liste sous ce commutateur. Les threads peuvent s'exécuter sur cet ordinateur pendant que l'application est ouverte.265* **Dans l'application de bureau Claude** : ouvrez **Settings > Code** ou **Settings > Claude Code** et activez **Use this computer from your phone and claude.ai**. Ajoutez le dossier à la liste sous ce commutateur. Les threads peuvent s'exécuter sur cet ordinateur pendant que l'application est ouverte.

266* **Dans un terminal** : exécutez `claude remote-control` dans le dossier et laissez-le s'exécuter. Dans un référentiel git, ajoutez `--spawn worktree` pour donner à chaque thread là son propre [worktree](https://code.claude.com/docs/fr/worktrees.md) au lieu du dossier lui-même.266* **Dans un terminal** : exécutez `claude remote-control` dans le dossier et laissez-le s'exécuter. Dans un dépôt git, ajoutez `--spawn worktree` pour donner à chaque thread là son propre [worktree](https://code.claude.com/docs/fr/worktrees.md) au lieu du dossier lui-même.

267 267 

268**2. Demander la tâche avec Work locally**268**2. Demander la tâche avec Work locally**

269 269 


271 271 

272**3. L'autoriser sur la carte**272**3. L'autoriser sur la carte**

273 273 

274Claude répond avec une carte **Allow Claude to work in a folder on your device**. Choisissez le dossier si vous en avez connecté plusieurs. Deux threads travaillant dans un dossier en même temps peuvent écraser les changements l'un de l'autre, donc si le dossier est un référentiel git, vous pouvez activer **Worktree** dans les options du dossier pour donner à ce thread son propre worktree à la place. Puis cliquez sur **Allow once**.274Claude répond avec une carte **Allow Claude to work in a folder on your device**. Choisissez le dossier si vous en avez connecté plusieurs. Deux threads travaillant dans un dossier en même temps peuvent écraser les changements l'un de l'autre, donc si le dossier est un dépôt git, vous pouvez activer **Worktree** dans les options du dossier pour donner à ce thread son propre worktree à la place. Puis cliquez sur **Allow once**.

275 275 

276Le thread s'exécute en [mode auto](https://code.claude.com/docs/fr/permission-modes.md#eliminate-prompts-with-auto-mode), donc Claude exécute les commandes et édite les fichiers dans ce dossier sans vous demander à chaque fois. Si le mode auto n'est pas disponible ou est désactivé dans Claude Code de cet ordinateur, le thread s'exécute sans lui, et toute invite de permission qu'il lève attend votre réponse dans le thread, comme [Débloquer un thread en attente d'approbation](#unblock-a-thread-waiting-on-approval) le décrit.276Le thread s'exécute en [mode auto](https://code.claude.com/docs/fr/permission-modes.md#eliminate-prompts-with-auto-mode), donc Claude exécute les commandes et édite les fichiers dans ce dossier sans vous demander à chaque fois. Si le mode auto n'est pas disponible ou est désactivé dans Claude Code de cet ordinateur, le thread s'exécute sans lui, et toute invite de permission qu'il lève attend votre réponse dans le thread, comme [Débloquer un thread en attente d'approbation](#unblock-a-thread-waiting-on-approval) le décrit.

277 277 

278Pendant que le thread s'exécute, une icône d'ordinateur portable dans son en-tête montre si votre ordinateur est connecté. Cliquez dessus pour voir quel dossier le thread utilise ou pour désactiver la connexion. Le thread se met en pause pendant que cet ordinateur dort, et s'arrête si l'application de bureau ou `claude remote-control` se ferme. [Perte de contact avec votre dossier](#lost-contact-with-your-folder) couvre comment le remettre en marche. Dans l'application de bureau, activez **Keep this computer awake for Remote Control** sous **Settings > Claude Code** pour empêcher l'ordinateur de s'endormir de sa propre initiative.278Pendant que le thread s'exécute, une icône d'ordinateur portable dans son en-tête montre si votre ordinateur est connecté. Cliquez dessus pour voir quel dossier le thread utilise ou pour désactiver la connexion. Le thread se met en pause pendant que cet ordinateur dort, et s'arrête si l'application de bureau ou `claude remote-control` se ferme.

279 

280* **Pour remettre le thread en marche** : consultez [Perte de contact avec votre dossier](#lost-contact-with-your-folder)

281* **Pour empêcher l'ordinateur de s'endormir de lui-même** : dans l'application de bureau, activez **Keep this computer awake for Remote Control** dans **Settings > Code** ou **Settings > Claude Code**

279 282 

280Un projet ne peut pas exécuter un thread sur votre ordinateur pendant que [**Require trusted devices**](https://code.claude.com/docs/fr/remote-control.md#trusted-devices) est activé pour votre compte.283Un projet ne peut pas exécuter un thread sur votre ordinateur pendant que [**Require trusted devices**](https://code.claude.com/docs/fr/remote-control.md#trusted-devices) est activé pour votre compte.

281 284 


427Plusieurs fonctionnalités de Claude Code permettent à plus d'une session de fonctionner en même temps, donc exécuter du travail en parallèle n'est pas en soi à quoi sert un projet. Dans un projet, Claude démarre et suit les sessions au lieu de vous, et chacun commence à partir des mêmes instructions. Voici comment chaque fonctionnalité voisine se connecte à un projet :430Plusieurs fonctionnalités de Claude Code permettent à plus d'une session de fonctionner en même temps, donc exécuter du travail en parallèle n'est pas en soi à quoi sert un projet. Dans un projet, Claude démarre et suit les sessions au lieu de vous, et chacun commence à partir des mêmes instructions. Voici comment chaque fonctionnalité voisine se connecte à un projet :

428 431 

429* **Claude Tag** : [Claude Tag](https://claude.com/docs/claude-tag/overview) est Claude dans les canaux Slack de votre équipe, sur les plans Team et Enterprise. N'importe qui dans un canal peut lui donner du travail, tout le monde dans le canal le voit et le dirige, et il utilise les connexions qu'un administrateur a configurées pour ce canal. Un projet est le vôtre seul : vous êtes le seul à lui envoyer du travail ou à voir ses threads, il utilise votre propre accès GitHub et vos connecteurs, et il est sur Pro et Max. [Comment Claude Tag diffère de Cowork et Claude Code](https://claude.com/docs/claude-tag/concepts/how-it-works#how-claude-tag-differs-from-cowork-and-claude-code) a le côté à côté.432* **Claude Tag** : [Claude Tag](https://claude.com/docs/claude-tag/overview) est Claude dans les canaux Slack de votre équipe, sur les plans Team et Enterprise. N'importe qui dans un canal peut lui donner du travail, tout le monde dans le canal le voit et le dirige, et il utilise les connexions qu'un administrateur a configurées pour ce canal. Un projet est le vôtre seul : vous êtes le seul à lui envoyer du travail ou à voir ses threads, il utilise votre propre accès GitHub et vos connecteurs, et il est sur Pro et Max. [Comment Claude Tag diffère de Cowork et Claude Code](https://claude.com/docs/claude-tag/concepts/how-it-works#how-claude-tag-differs-from-cowork-and-claude-code) a le côté à côté.

430* **Sessions cloud** : chaque thread est une [session cloud](https://code.claude.com/docs/fr/claude-code-on-the-web.md) sauf si vous demandez à Claude de l'exécuter sur votre machine. De toute façon, Claude la démarre et la suit au lieu de vous. Vous pouvez également intégrer à un projet le travail d'une session cloud que vous avez démarrée vous-même : choisissez [**Move to project**](#start-from-an-existing-cloud-session) dans le menu de la barre latérale de cette session.433* **Sessions cloud** : chaque thread est une [session cloud](https://code.claude.com/docs/fr/claude-code-on-the-web.md) sauf si vous demandez à Claude de l'exécuter sur votre machine. De toute façon, Claude la démarre et la suit au lieu de vous. Vous pouvez également intégrer à un projet le travail d'une session cloud que vous avez démarrée vous-même : choisissez [**Continue in project**](#start-from-an-existing-cloud-session) dans le menu de la barre latérale de cette session.

431* **Tâches planifiées** : quand vous demandez du travail planifié dans un projet, Claude crée une [tâche planifiée cloud](https://code.claude.com/docs/fr/routines.md) qui s'exécute en tant que threads dans ce projet et apparaît sur son onglet **Scheduled tasks**. Les tâches planifiées que vous créez en dehors d'un projet continuent à fonctionner seules.434* **Tâches planifiées** : quand vous demandez du travail planifié dans un projet, Claude crée une [tâche planifiée cloud](https://code.claude.com/docs/fr/routines.md) qui s'exécute en tant que threads dans ce projet et apparaît sur son onglet **Scheduled tasks**. Les tâches planifiées que vous créez en dehors d'un projet continuent à fonctionner seules.

432* **Remote Control** : [Remote Control](https://code.claude.com/docs/fr/remote-control.md) 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).435* **Remote Control** : [Remote Control](https://code.claude.com/docs/fr/remote-control.md) 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).

433* **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 reste en dehors de vos projets, mais vous pouvez [intégrer son travail à l'un d'eux](#start-from-an-existing-cloud-session). [Agent view](https://code.claude.com/docs/fr/agent-view.md) 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.436* **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 reste en dehors de vos projets, mais vous pouvez [intégrer son travail à l'un d'eux](#start-from-an-existing-cloud-session). [Agent view](https://code.claude.com/docs/fr/agent-view.md) 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.


445* Vous ne pouvez pas ajouter une session que vous avez démarrée vous-même sur votre machine à un projet, mais vous pouvez [intégrer son travail dans un projet](#start-from-an-existing-cloud-session). Un projet atteint votre machine en [exécutant un thread là-bas via Remote Control](#run-a-thread-on-your-own-computer), et cette section énumère ce dont il a besoin.448* Vous ne pouvez pas ajouter une session que vous avez démarrée vous-même sur votre machine à un projet, mais vous pouvez [intégrer son travail dans un projet](#start-from-an-existing-cloud-session). Un projet atteint votre machine en [exécutant un thread là-bas via Remote Control](#run-a-thread-on-your-own-computer), et cette section énumère ce dont il a besoin.

446* Le sandbox d'un thread cloud se met en pause entre les tours et reprend quand le thread continue. Si le sandbox ne peut pas être repris, le thread continue à partir d'un clone frais, donc les modifications non validées peuvent être perdues. Sur les tâches longues, demandez à Claude de valider et de pousser le travail en cours.449* Le sandbox d'un thread cloud se met en pause entre les tours et reprend quand le thread continue. Si le sandbox ne peut pas être repris, le thread continue à partir d'un clone frais, donc les modifications non validées peuvent être perdues. Sur les tâches longues, demandez à Claude de valider et de pousser le travail en cours.

447* Un projet appartient à un utilisateur. Vous ne pouvez pas partager un projet ou ses threads avec un autre utilisateur, et les transcriptions de threads n'ont pas l'option de partage que les autres sessions cloud ont. Il n'y a pas de contrôles au niveau de l'organisation pour les projets pendant la bêta.450* Un projet appartient à un utilisateur. Vous ne pouvez pas partager un projet ou ses threads avec un autre utilisateur, et les transcriptions de threads n'ont pas l'option de partage que les autres sessions cloud ont. Il n'y a pas de contrôles au niveau de l'organisation pour les projets pendant la bêta.

448* Un thread appartient au seul projet qui l'a démarré. Vous ne pouvez pas déplacer ou copier un thread vers un autre projet, ou le déplacer pour qu'il soit seul. [**Move to project**](#start-from-an-existing-cloud-session) va seulement dans l'autre sens : il apporte le travail d'une session cloud dans un projet. Vous ne pouvez pas fusionner deux projets en un.451* Un thread appartient au seul projet qui l'a démarré. Vous ne pouvez pas déplacer ou copier un thread vers un autre projet, ou le déplacer pour qu'il soit seul. [**Continue in project**](#start-from-an-existing-cloud-session) va seulement dans l'autre sens : il apporte le travail d'une session cloud dans un projet. Vous ne pouvez pas fusionner deux projets en un.

449 452 

450## Dépannage453## Dépannage

451 454 


489 492 

490### Perte de contact avec votre dossier493### Perte de contact avec votre dossier

491 494 

492Un thread s'exécutant sur votre ordinateur affiche ceci quand la session Claude Code là-bas a cessé de répondre, généralement parce que l'ordinateur s'est endormi ou l'application de bureau ou `claude remote-control` a quitté. Réveillez l'ordinateur, et si l'application de bureau ou `claude remote-control` ne fonctionne plus là-bas, redémarrez-la : rouvrez l'application et confirmez que **Use this computer from your phone and claude.ai** est toujours activé sous **Settings > Claude Code**, ou exécutez `claude remote-control` à nouveau dans le même dossier.495Un thread s'exécutant sur votre ordinateur affiche ceci quand la session Claude Code là-bas a cessé de répondre, généralement parce que l'ordinateur s'est mis en veille ou que l'application de bureau ou `claude remote-control` s'est fermé. Réveillez l'ordinateur. Si l'application de bureau ou `claude remote-control` ne s'exécute plus là-bas, redémarrez-le :

496 

497* **Application de bureau** : rouvrez l'application et confirmez que **Use this computer from your phone and claude.ai** est toujours activé sous **Settings > Code** ou **Settings > Claude Code**

498* **Terminal** : exécutez à nouveau `claude remote-control` dans le même dossier

493 499 

494### Autres messages500### Autres messages

495 501 

Details

76| `--bg`, `--background` | Démarrer la session en tant qu'[agent en arrière-plan](https://code.claude.com/docs/fr/agent-view.md) et revenir immédiatement. Affiche l'ID de session et les commandes de gestion. Combinez avec `--exec` pour exécuter une commande shell en tant que travail en arrière-plan au lieu d'une session Claude, ou avec `--agent` pour exécuter un subagent spécifique. Vérifie la [confiance de l'espace de travail](https://code.claude.com/docs/fr/permissions.md#project-allow-rules-and-workspace-trust) pour le répertoire avant de démarrer. Ne peut pas être combiné avec `-p`/`--print` ; voir la [référence d'erreur](https://code.claude.com/docs/fr/errors.md#command-line-errors) | `claude --bg "investigate the flaky test"` |76| `--bg`, `--background` | Démarrer la session en tant qu'[agent en arrière-plan](https://code.claude.com/docs/fr/agent-view.md) et revenir immédiatement. Affiche l'ID de session et les commandes de gestion. Combinez avec `--exec` pour exécuter une commande shell en tant que travail en arrière-plan au lieu d'une session Claude, ou avec `--agent` pour exécuter un subagent spécifique. Vérifie la [confiance de l'espace de travail](https://code.claude.com/docs/fr/permissions.md#project-allow-rules-and-workspace-trust) pour le répertoire avant de démarrer. Ne peut pas être combiné avec `-p`/`--print` ; voir la [référence d'erreur](https://code.claude.com/docs/fr/errors.md#command-line-errors) | `claude --bg "investigate the flaky test"` |

77| `--channels` | (Aperçu de recherche) Serveurs MCP dont les notifications de [canal](https://code.claude.com/docs/fr/channels.md) Claude doit écouter dans cette session. Liste séparée par des espaces d'entrées `plugin:<name>@<marketplace>`. Nécessite l'authentification Anthropic via claude.ai ou une clé API Console | `claude --channels plugin:my-notifier@my-marketplace` |77| `--channels` | (Aperçu de recherche) Serveurs MCP dont les notifications de [canal](https://code.claude.com/docs/fr/channels.md) Claude doit écouter dans cette session. Liste séparée par des espaces d'entrées `plugin:<name>@<marketplace>`. Nécessite l'authentification Anthropic via claude.ai ou une clé API Console | `claude --channels plugin:my-notifier@my-marketplace` |

78| `--chrome` | Activer l'[intégration du navigateur Chrome](https://code.claude.com/docs/fr/chrome.md) pour l'automatisation web et les tests | `claude --chrome` |78| `--chrome` | Activer l'[intégration du navigateur Chrome](https://code.claude.com/docs/fr/chrome.md) pour l'automatisation web et les tests | `claude --chrome` |

79| `--cloud` | Avec une description de tâche, créer une nouvelle [session web](https://code.claude.com/docs/fr/claude-code-on-the-web.md). Avec un ID de session (`session_...` ou `cse_...`) ou une URL claude.ai/code, mettre en file d'attente un message dans cette session existante à la place, avec `-p`. Voir [envoyer un message de suivi](https://code.claude.com/docs/fr/claude-code-on-the-web.md#send-follow-ups-from-the-cli). | `claude --cloud "Fix the login bug"` |79| `--cloud` | Avec une description de tâche, créer une nouvelle [session cloud](https://code.claude.com/docs/fr/claude-code-on-the-web.md). Avec un ID de session (`session_...` ou `cse_...`) ou une URL claude.ai/code, mettre en file d'attente un message dans cette session existante à la place, avec `-p`. Voir [envoyer un message de suivi](https://code.claude.com/docs/fr/claude-code-on-the-web.md#send-follow-ups-from-the-cli). | `claude --cloud "Fix the login bug"` |

80| `--continue`, `-c` | Charger la conversation la plus récente dans le répertoire courant, y compris une [session en arrière-plan qui a terminé](https://code.claude.com/docs/fr/sessions.md#where-the-session-picker-looks) ; l'ouverture de sessions en arrière-plan terminées nécessite Claude Code v2.1.257 ou ultérieur. Ignore les sessions créées avec `claude -p` ou le SDK Agent, et les sessions dont le premier prompt était `/loop`. `claude -p --continue` inclut les sessions `-p`, SDK et `/loop`. Inclut les sessions qui ont ajouté ce répertoire avec `/add-dir` | `claude --continue` |80| `--continue`, `-c` | Charger la conversation la plus récente dans le répertoire courant, y compris une [session en arrière-plan qui a terminé](https://code.claude.com/docs/fr/sessions.md#where-the-session-picker-looks) ; l'ouverture de sessions en arrière-plan terminées nécessite Claude Code v2.1.257 ou ultérieur. Ignore les sessions créées avec `claude -p` ou le SDK Agent, et les sessions dont le premier prompt était `/loop`. `claude -p --continue` inclut les sessions `-p`, SDK et `/loop`. Inclut les sessions qui ont ajouté ce répertoire avec `/add-dir` | `claude --continue` |

81| `--dangerously-load-development-channels` | Activer des [canaux](https://code.claude.com/docs/fr/channels-reference.md#test-during-the-research-preview) qui ne figurent pas sur la liste d'autorisation approuvée, pour le développement local. Accepte les entrées `plugin:<name>@<marketplace>` et `server:<name>`. Demande une confirmation, il prend donc effet dans les sessions interactives. Avec `-p`, Claude Code ignore le flag | `claude --dangerously-load-development-channels server:webhook` |81| `--dangerously-load-development-channels` | Activer des [canaux](https://code.claude.com/docs/fr/channels-reference.md#test-during-the-research-preview) qui ne figurent pas sur la liste d'autorisation approuvée, pour le développement local. Accepte les entrées `plugin:<name>@<marketplace>` et `server:<name>`. Demande une confirmation, il prend donc effet dans les sessions interactives. Avec `-p`, Claude Code ignore le flag | `claude --dangerously-load-development-channels server:webhook` |

82| `--dangerously-skip-permissions` | Ignorer les invites de permission. Équivalent à `--permission-mode bypassPermissions`. Voir [modes de permission](https://code.claude.com/docs/fr/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) pour ce que cela ignore et n'ignore pas. Pour les sessions démarrées avec `--bg`, le mode [persiste lorsque le superviseur redémarre la session](https://code.claude.com/docs/fr/agent-view.md#permission-mode-model-and-effort) | `claude --dangerously-skip-permissions` |82| `--dangerously-skip-permissions` | Ignorer les invites de permission. Équivalent à `--permission-mode bypassPermissions`. Voir [modes de permission](https://code.claude.com/docs/fr/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) pour ce que cela ignore et n'ignore pas. Pour les sessions démarrées avec `--bg`, le mode [persiste lorsque le superviseur redémarre la session](https://code.claude.com/docs/fr/agent-view.md#permission-mode-model-and-effort) | `claude --dangerously-skip-permissions` |


132| `--system-prompt` | Remplacer l'invite système entière par du texte personnalisé | `claude --system-prompt "You are a Python expert"` |132| `--system-prompt` | Remplacer l'invite système entière par du texte personnalisé | `claude --system-prompt "You are a Python expert"` |

133| `--system-prompt-file` | Charger l'invite système à partir d'un fichier, en remplaçant l'invite par défaut | `claude --system-prompt-file ./custom-prompt.txt` |133| `--system-prompt-file` | Charger l'invite système à partir d'un fichier, en remplaçant l'invite par défaut | `claude --system-prompt-file ./custom-prompt.txt` |

134| `--system-prompt-snapshot` | Passer `off` pour reconstruire l'invite système à chaque requête au lieu de réutiliser l'invite [enregistrée à la première requête de la conversation](#system-prompt-flags-in-resumed-conversations), par exemple pendant que vous itérez sur le texte `--append-system-prompt` entre les exécutions `--continue`. Nécessite Claude Code v2.1.257 ou ultérieur | `claude --system-prompt-snapshot off` |134| `--system-prompt-snapshot` | Passer `off` pour reconstruire l'invite système à chaque requête au lieu de réutiliser l'invite [enregistrée à la première requête de la conversation](#system-prompt-flags-in-resumed-conversations), par exemple pendant que vous itérez sur le texte `--append-system-prompt` entre les exécutions `--continue`. Nécessite Claude Code v2.1.257 ou ultérieur | `claude --system-prompt-snapshot off` |

135| `--teleport` | Reprendre une [session web](https://code.claude.com/docs/fr/claude-code-on-the-web.md) dans votre terminal local | `claude --teleport` |135| `--teleport` | Reprendre une [session cloud](https://code.claude.com/docs/fr/claude-code-on-the-web.md) dans votre terminal local | `claude --teleport` |

136| `--teammate-mode` | Définir comment les coéquipiers de l'[équipe d'agents](https://code.claude.com/docs/fr/agent-teams.md) s'affichent : `in-process` (par défaut), `auto`, `tmux`, ou `iterm2`. Remplace le paramètre [`teammateMode`](https://code.claude.com/docs/fr/settings-reference#teammatemode) pour cette session. Voir [Choisir un mode d'affichage](https://code.claude.com/docs/fr/agent-teams.md#choose-a-display-mode) | `claude --teammate-mode auto` |136| `--teammate-mode` | Définir comment les coéquipiers de l'[équipe d'agents](https://code.claude.com/docs/fr/agent-teams.md) s'affichent : `in-process` (par défaut), `auto`, `tmux`, ou `iterm2`. Remplace le paramètre [`teammateMode`](https://code.claude.com/docs/fr/settings-reference#teammatemode) pour cette session. Voir [Choisir un mode d'affichage](https://code.claude.com/docs/fr/agent-teams.md#choose-a-display-mode) | `claude --teammate-mode auto` |

137| `--tmux` | Créer une session tmux pour le worktree. Nécessite `--worktree`. Utilise les volets natifs iTerm2 lorsqu'ils sont disponibles ; passez `--tmux=classic` pour le tmux traditionnel | `claude -w feature-auth --tmux` |137| `--tmux` | Créer une session tmux pour le worktree. Nécessite `--worktree`. Utilise les volets natifs iTerm2 lorsqu'ils sont disponibles ; passez `--tmux=classic` pour le tmux traditionnel | `claude -w feature-auth --tmux` |

138| `--tools` | Restreindre les outils intégrés que Claude peut utiliser. Utilisez `""` pour désactiver tous, `"default"` pour l'ensemble par défaut, ou des noms d'outils comme `"Bash,Edit,Read"`. Sur macOS, Linux et WSL, l'ensemble par défaut laisse de côté `Glob` et `Grep`, comme décrit sous [Comportement de l'outil Glob](https://code.claude.com/docs/fr/tools-reference.md#glob-tool-behavior). Si vous nommez l'un des [outils de suivi des tâches](https://code.claude.com/docs/fr/tools-reference.md#task-tool-availability) ici, Claude Code les active également pour la session. Le drapeau n'affecte pas les outils MCP ; pour les refuser aussi, utilisez `--disallowedTools "mcp__*"`. Une liste qui omet [`EndConversation`](https://code.claude.com/docs/fr/tools-reference#endconversation-tool-behavior) ne le supprime pas ; `""` le supprime uniquement lorsqu'aucun outil MCP ne reste | `claude --tools "Bash,Edit,Read"` |138| `--tools` | Restreindre les outils intégrés que Claude peut utiliser. Utilisez `""` pour désactiver tous, `"default"` pour l'ensemble par défaut, ou des noms d'outils comme `"Bash,Edit,Read"`. Sur macOS, Linux et WSL, l'ensemble par défaut laisse de côté `Glob` et `Grep`, comme décrit sous [Comportement de l'outil Glob](https://code.claude.com/docs/fr/tools-reference.md#glob-tool-behavior). Si vous nommez l'un des [outils de suivi des tâches](https://code.claude.com/docs/fr/tools-reference.md#task-tool-availability) ici, Claude Code les active également pour la session. Le drapeau n'affecte pas les outils MCP ; pour les refuser aussi, utilisez `--disallowedTools "mcp__*"`. Une liste qui omet [`EndConversation`](https://code.claude.com/docs/fr/tools-reference#endconversation-tool-behavior) ne le supprime pas ; `""` le supprime uniquement lorsqu'aucun outil MCP ne reste | `claude --tools "Bash,Edit,Read"` |

Details

71* Dans une session de terminal, où `/code-review` exécute la revue en tant que [sous-agent forké](https://code.claude.com/docs/fr/skills.md#run-skills-in-a-subagent)71* Dans une session de terminal, où `/code-review` exécute la revue en tant que [sous-agent forké](https://code.claude.com/docs/fr/skills.md#run-skills-in-a-subagent)

72* Dans une exécution `-p` avec une sortie texte ou JSON72* Dans une exécution `-p` avec une sortie texte ou JSON

73 73 

74Dans une application hôte qui demande la liste des résultats, comme l'[application de bureau](https://code.claude.com/docs/fr/desktop.md#review-your-code), Claude rapporte plutôt les résultats de la revue via l'[outil `ReportFindings`](https://code.claude.com/docs/fr/tools-reference). Le rapport apparaît sous forme de liste de résultats, et chaque entrée affiche l'emplacement du fichier, un résumé d'une phrase et une étiquette de catégorie telle que `correctness` lorsque le résultat en comporte une. Une demande de l'hôte s'applique à tous les niveaux d'effort et nécessite Claude Code v2.1.218 ou ultérieur.74Dans une application hôte qui demande la liste des résultats, comme l'[application de bureau](https://code.claude.com/docs/fr/desktop.md#review-your-code), Claude rapporte plutôt les résultats de la revue via l'[outil `ReportFindings`](https://code.claude.com/docs/fr/tools-reference). Le rapport apparaît sous forme de liste de résultats, et chaque entrée affiche l'emplacement du fichier, un résumé d'une phrase et une étiquette de catégorie telle que `correctness` lorsque le résultat en comporte une. Une demande de l'hôte s'applique à tous les niveaux d'effort.

75 75 

76Lorsque Claude corrige plus tard dans la session des résultats rapportés, il les rapporte à nouveau. Claude Code marque alors chaque résultat de la liste mise à jour comme corrigé, ignoré ou ne nécessitant aucune modification.76Lorsque Claude corrige plus tard dans la session des résultats rapportés, il les rapporte à nouveau. Claude Code marque alors chaque résultat de la liste mise à jour comme corrigé, ignoré ou ne nécessitant aucune modification.

77 77 


104Après le niveau d'effort et les flags, Claude Code lit le reste de la ligne comme cible de la revue. L'argument `ultra` modifie cette lecture :104Après le niveau d'effort et les flags, Claude Code lit le reste de la ligne comme cible de la revue. L'argument `ultra` modifie cette lecture :

105 105 

106* **Avec `ultra`** : Claude Code interprète un mot unique comme une branche de base ou un numéro de PR. Un texte plus long qui ne désigne ni une branche ni une PR devient [une note jointe à la revue](https://code.claude.com/docs/fr/ultrareview.md#pass-a-request-in-plain-words). `/code-review ultra check my auth changes` revoit votre branche actuelle, et Claude met les résultats en relation avec votre note.106* **Avec `ultra`** : Claude Code interprète un mot unique comme une branche de base ou un numéro de PR. Un texte plus long qui ne désigne ni une branche ni une PR devient [une note jointe à la revue](https://code.claude.com/docs/fr/ultrareview.md#pass-a-request-in-plain-words). `/code-review ultra check my auth changes` revoit votre branche actuelle, et Claude met les résultats en relation avec votre note.

107* **Sans `ultra`** : tout ce qui reste constitue la cible de la revue, même lorsque cela commence par un autre nom de commande. `/code-review /fix-issue 123` effectue la revue avec `/fix-issue 123` comme texte cible au lieu de charger `/fix-issue` comme second [skill empilé](https://code.claude.com/docs/fr/skills.md#stack-several-skills-in-one-message). Avant la v2.1.218, une commande empilée après `/code-review` se développait comme son propre skill.107* **Sans `ultra`** : tout ce qui reste constitue la cible de la revue, même lorsque cela commence par un autre nom de commande. `/code-review /fix-issue 123` effectue la revue avec `/fix-issue 123` comme texte cible au lieu de charger `/fix-issue` comme second [skill empilé](https://code.claude.com/docs/fr/skills.md#stack-several-skills-in-one-message).

108 108 

109## Exécuter au premier plan109## Exécuter au premier plan

110 110 


114* Définissez [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/fr/env-vars) sur `1`, ce qui désactive également d'autres fonctionnalités de tâches en arrière-plan114* Définissez [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/fr/env-vars) sur `1`, ce qui désactive également d'autres fonctionnalités de tâches en arrière-plan

115* Exécutez à nouveau `/code-review` pendant qu'une revue précédente est encore en cours115* Exécutez à nouveau `/code-review` pendant qu'une revue précédente est encore en cours

116 116 

117Avant la v2.1.218, la revue s'exécutait à l'intérieur de votre conversation.

118 

119## Laisser Claude lancer la revue117## Laisser Claude lancer la revue

120 118 

121Claude peut lancer `/code-review` de lui-même, sans que vous ayez à taper la commande :119Claude peut lancer `/code-review` de lui-même, sans que vous ayez à taper la commande :

commands.md +3 −3

Details

37* **[Skill](https://code.claude.com/docs/fr/skills.md#bundled-skills)** : un skill fourni. Il fonctionne comme les skills que vous écrivez vous-même : un prompt transmis à Claude.37* **[Skill](https://code.claude.com/docs/fr/skills.md#bundled-skills)** : un skill fourni. Il fonctionne comme les skills que vous écrivez vous-même : un prompt transmis à Claude.

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

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

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

41 41 

42Pour ajouter vos propres commandes, consultez [skills](https://code.claude.com/docs/fr/skills.md).42Pour ajouter vos propres commandes, consultez [skills](https://code.claude.com/docs/fr/skills.md).

43 43 


54| `/agents` | Afficher un rappel pour demander à Claude de créer ou de gérer des [sous-agents](https://code.claude.com/docs/fr/sub-agents.md), ou pour modifier `.claude/agents/` ou `~/.claude/agents/` directement. Sur la v2.1.197 et antérieures, ouvre une interface interactive pour créer et gérer les configurations de sous-agents |54| `/agents` | Afficher un rappel pour demander à Claude de créer ou de gérer des [sous-agents](https://code.claude.com/docs/fr/sub-agents.md), ou pour modifier `.claude/agents/` ou `~/.claude/agents/` directement. Sur la v2.1.197 et antérieures, ouvre une interface interactive pour créer et gérer les configurations de sous-agents |

55| `/artifact-capabilities` | **[Skill](https://code.claude.com/docs/fr/skills.md#bundled-skills).** Charger la référence pour les capacités d'exécution qu'un [artefact](https://code.claude.com/docs/fr/artifacts.md) publié peut utiliser, telles que [l'appel de vos connecteurs](https://code.claude.com/docs/fr/artifacts.md#pull-live-data-with-mcp-connectors) ou [l'offre d'un téléchargement de fichier](https://code.claude.com/docs/fr/artifacts.md#offer-a-file-download), y compris celles que votre compte possède. Claude le charge normalement de lui-même avant de construire une page qui en utilise une. Disponible où les [artefacts](https://code.claude.com/docs/fr/artifacts.md#availability) le sont |55| `/artifact-capabilities` | **[Skill](https://code.claude.com/docs/fr/skills.md#bundled-skills).** Charger la référence pour les capacités d'exécution qu'un [artefact](https://code.claude.com/docs/fr/artifacts.md) publié peut utiliser, telles que [l'appel de vos connecteurs](https://code.claude.com/docs/fr/artifacts.md#pull-live-data-with-mcp-connectors) ou [l'offre d'un téléchargement de fichier](https://code.claude.com/docs/fr/artifacts.md#offer-a-file-download), y compris celles que votre compte possède. Claude le charge normalement de lui-même avant de construire une page qui en utilise une. Disponible où les [artefacts](https://code.claude.com/docs/fr/artifacts.md#availability) le sont |

56| `/artifact-diagramming` | **[Skill](https://code.claude.com/docs/fr/skills.md#bundled-skills).** Charger les conseils de diagramme pour que Claude suive dans les [artefacts](https://code.claude.com/docs/fr/artifacts.md) : quand un diagramme aide, quoi dessiner, et comment écrire du SVG en ligne qui reste lisible dans les thèmes clairs et foncés. Nécessite Claude Code v2.1.221 ou ultérieur |56| `/artifact-diagramming` | **[Skill](https://code.claude.com/docs/fr/skills.md#bundled-skills).** Charger les conseils de diagramme pour que Claude suive dans les [artefacts](https://code.claude.com/docs/fr/artifacts.md) : quand un diagramme aide, quoi dessiner, et comment écrire du SVG en ligne qui reste lisible dans les thèmes clairs et foncés. Nécessite Claude Code v2.1.221 ou ultérieur |

57| `/artifacts` | Répertorier les [artefacts](https://code.claude.com/docs/fr/artifacts.md#find-an-artifact-again) que vous possédez ou qui sont partagés avec vous, puis en joindre un à la session, l'ouvrir dans votre navigateur, ou copier son lien. Disponible où les [artefacts](https://code.claude.com/docs/fr/artifacts.md#availability) le sont. Nécessite Claude Code v2.1.208 ou ultérieur ; l'attachement avec `Enter` nécessite la v2.1.216 |57| `/artifacts` | Répertorier les [artefacts](https://code.claude.com/docs/fr/artifacts.md#find-an-artifact-again) que vous possédez ou qui sont partagés avec vous, puis en joindre un à la session, l'ouvrir dans votre navigateur, ou copier son lien. Disponible où les [artefacts](https://code.claude.com/docs/fr/artifacts.md#availability) le sont |

58| `/auto-mode-setup` | [Rédiger les entrées `autoMode.environment`](https://code.claude.com/docs/fr/auto-mode-config#generate-environment-entries) à partir de votre projet et des sessions récentes, puis examiner le brouillon et l'enregistrer dans vos paramètres utilisateur. Sur un plan Pro, Max ou Team, nécessite Claude Code v2.1.228 ou ultérieur, ou la v2.1.233 ou ultérieur sur Windows natif. Sur un plan Entreprise ou avec une clé API Claude Console, nécessite la v2.1.283 ou ultérieur. Si la commande est absente, consultez [`/auto-mode-setup` renvoie « Unknown command »](https://code.claude.com/docs/fr/auto-mode-config#auto-mode-setup-returns-unknown-command) |58| `/auto-mode-setup` | [Rédiger les entrées `autoMode.environment`](https://code.claude.com/docs/fr/auto-mode-config#generate-environment-entries) à partir de votre projet et des sessions récentes, puis examiner le brouillon et l'enregistrer dans vos paramètres utilisateur. Sur un plan Pro, Max ou Team, nécessite Claude Code v2.1.228 ou ultérieur, ou la v2.1.233 ou ultérieur sur Windows natif. Sur un plan Entreprise ou avec une clé API Claude Console, nécessite la v2.1.283 ou ultérieur. Si la commande est absente, consultez [`/auto-mode-setup` renvoie « Unknown command »](https://code.claude.com/docs/fr/auto-mode-config#auto-mode-setup-returns-unknown-command) |

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

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


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

86| `/diff` | Examiner les modifications dans votre arborescence de travail, y compris les modifications que Claude a apportées jusqu'à présent. Consultez [Examiner les modifications avec /diff](https://code.claude.com/docs/fr/interactive-mode.md#review-changes-with-%2Fdiff) |86| `/diff` | Examiner les modifications dans votre arborescence de travail, y compris les modifications que Claude a apportées jusqu'à présent. Consultez [Examiner les modifications avec /diff](https://code.claude.com/docs/fr/interactive-mode.md#review-changes-with-%2Fdiff) |

87| `/doctor [prompt-audit [path]]` | **[Skill](https://code.claude.com/docs/fr/skills.md#bundled-skills).** Exécuter une vérification de configuration qui diagnostique les problèmes d'installation, de paramètres, d'extensions et de `CLAUDE.md`, et propose des corrections que Claude applique après votre confirmation. Pour ce que couvre la vérification, ou pour auditer plutôt vos instructions avec `prompt-audit`, consultez [Vérifier votre configuration avec `/doctor`](https://code.claude.com/docs/fr/skills#check-your-setup-with-/doctor). La sous-commande `prompt-audit` nécessite Claude Code v2.1.283 ou ultérieur. Alias : `/checkup` |87| `/doctor [prompt-audit [path]]` | **[Skill](https://code.claude.com/docs/fr/skills.md#bundled-skills).** Exécuter une vérification de configuration qui diagnostique les problèmes d'installation, de paramètres, d'extensions et de `CLAUDE.md`, et propose des corrections que Claude applique après votre confirmation. Pour ce que couvre la vérification, ou pour auditer plutôt vos instructions avec `prompt-audit`, consultez [Vérifier votre configuration avec `/doctor`](https://code.claude.com/docs/fr/skills#check-your-setup-with-/doctor). La sous-commande `prompt-audit` nécessite Claude Code v2.1.283 ou ultérieur. Alias : `/checkup` |

88| `/effort [level\|auto\|status\|ultracode [on\|off]]` | Définir le [niveau d'effort](https://code.claude.com/docs/fr/model-config.md#adjust-effort-level) : `low` à `xhigh`, `max`, ou `auto` ; `status` l'affiche. `ultracode` ou `ultracode on` active [ultracode](https://code.claude.com/docs/fr/workflows.md#let-claude-decide-with-ultracode) pour la session au niveau actuel, et `ultracode off` le désactive ; la clé [`ultracode`](https://code.claude.com/docs/fr/settings-reference#ultracode) persiste. `max` est réservé à la session. Les arguments `on` et `off` et le maintien du niveau actuel nécessitent Claude Code v2.1.284 ou ultérieur. Avant la v2.1.284, `/effort ultracode` définissait la session à `xhigh`, et `/effort ultracode off` échouait avec `Invalid argument`. L'exécuter pendant que Claude répond et, une fois que vous confirmez l'[avertissement de cache](https://code.claude.com/docs/fr/prompt-caching.md#changing-effort-level), si Claude Code en affiche un, Claude Code applique le nouveau niveau à la requête suivante dans ce tour. Avant la v2.1.242, Claude Code décidait à partir d'un feature flag qu'il récupérait d'Anthropic s'il fallait exécuter la commande en milieu de tour ou la mettre en file d'attente jusqu'à la fin du tour, et la mettait toujours en file d'attente dans une session qui ne [récupère pas les feature flags](https://code.claude.com/docs/fr/env-vars.md#features-that-need-feature-flag-fetching), comme sur un [fournisseur tiers](https://code.claude.com/docs/fr/third-party-integrations.md). Fonctionne en `-p` |88| `/effort [level\|auto\|status\|ultracode [on\|off]]` | Définir le [niveau d'effort](https://code.claude.com/docs/fr/model-config.md#adjust-effort-level) : `low` à `xhigh`, `max`, ou `auto` ; `status` l'affiche. `ultracode` ou `ultracode on` active [ultracode](https://code.claude.com/docs/fr/workflows.md#let-claude-decide-with-ultracode) pour la session, et `ultracode off` le désactive ; la clé [`ultracode`](https://code.claude.com/docs/fr/settings-reference#ultracode) persiste. `max` est réservé à la session. Les arguments `on` et `off` nécessitent Claude Code v2.1.284 ou ultérieur. Si vous exécutez `/effort` pendant que Claude travaille, consultez [quand le nouveau niveau prend effet](https://code.claude.com/docs/fr/model-config.md#when-a-new-effort-level-starts). Fonctionne en `-p` sur la v2.1.205 ou ultérieur |

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

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

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

computer-use.md +1 −1

Details

180| Fonctionnalité | Desktop | CLI |180| Fonctionnalité | Desktop | CLI |

181| :- | :- | :- |181| :- | :- | :- |

182| Plateformes | macOS et Windows | macOS uniquement |182| Plateformes | macOS et Windows | macOS uniquement |

183| Activation | Bouton dans **Settings > This computer > System** | Activer `computer-use` dans `/mcp` |183| Activation | Bouton dans les [paramètres](https://code.claude.com/docs/fr/desktop.md#enable-computer-use) | Activer `computer-use` dans `/mcp` |

184| Liste des applications refusées | Configurable dans les paramètres | Pas encore disponible |184| Liste des applications refusées | Configurable dans les paramètres | Pas encore disponible |

185| Option de réaffichage automatique des éléments masqués | Facultative | Toujours activée |185| Option de réaffichage automatique des éléments masqués | Facultative | Toujours activée |

186| Intégration avec Dispatch | Les sessions lancées par Dispatch peuvent utiliser l'utilisation de l'ordinateur | Non applicable |186| Intégration avec Dispatch | Les sessions lancées par Dispatch peuvent utiliser l'utilisation de l'ordinateur | Non applicable |

Details

70* [Étendre Claude Code](https://code.claude.com/docs/fr/features-overview.md) : quand utiliser CLAUDE.md par rapport aux compétences par rapport aux règles par rapport aux hooks par rapport à MCP70* [Étendre Claude Code](https://code.claude.com/docs/fr/features-overview.md) : quand utiliser CLAUDE.md par rapport aux compétences par rapport aux règles par rapport aux hooks par rapport à MCP

71* [Stocker les instructions et les mémoires](https://code.claude.com/docs/fr/memory.md) : hiérarchie CLAUDE.md et mémoire automatique71* [Stocker les instructions et les mémoires](https://code.claude.com/docs/fr/memory.md) : hiérarchie CLAUDE.md et mémoire automatique

72* [Sous-agents](https://code.claude.com/docs/fr/sub-agents.md) : déléguer la recherche à une fenêtre de contexte séparée72* [Sous-agents](https://code.claude.com/docs/fr/sub-agents.md) : déléguer la recherche à une fenêtre de contexte séparée

73* [Meilleures pratiques](https://code.claude.com/docs/fr/best-practices.md) : gérer le contexte comme votre contrainte principale73* [Bonnes pratiques](https://code.claude.com/docs/fr/best-practices.md#keep-cost-and-context-down) : garder des sessions ciblées et des coûts réduits

74* [Mise en cache des invites](https://code.claude.com/docs/fr/prompt-caching.md) : quelles actions invalident le préfixe mis en cache74* [Mise en cache des invites](https://code.claude.com/docs/fr/prompt-caching.md) : quelles actions invalident le préfixe mis en cache

75* [Réduire l'utilisation des jetons](https://code.claude.com/docs/fr/costs.md#reduce-token-usage) : stratégies pour maintenir l'utilisation du contexte faible75* [Réduire l'utilisation des jetons](https://code.claude.com/docs/fr/costs.md#reduce-token-usage) : stratégies pour maintenir l'utilisation du contexte faible

Details

174L'un de ceux-ci affiche le texte complet :174L'un de ceux-ci affiche le texte complet :

175 175 

176* Appuyez sur `Ctrl+O` pour ouvrir la [visionneuse de transcription](https://code.claude.com/docs/fr/interactive-mode.md#transcript-viewer) et lire le texte complet sous le nom de session de l'expéditeur.176* Appuyez sur `Ctrl+O` pour ouvrir la [visionneuse de transcription](https://code.claude.com/docs/fr/interactive-mode.md#transcript-viewer) et lire le texte complet sous le nom de session de l'expéditeur.

177 

178 Si Claude est occupé et n'a pas encore reçu le message, faites défiler jusqu'à la fin de la transcription, où le message est listé sous `Waiting to be delivered`. Nécessite Claude Code v2.1.309 ou ultérieure.

179 

177* En [rendu plein écran](https://code.claude.com/docs/fr/fullscreen.md#use-the-mouse), cliquez sur une ligne d'aperçu qui omet une partie du message pour l'agrandir sur place.180* En [rendu plein écran](https://code.claude.com/docs/fr/fullscreen.md#use-the-mouse), cliquez sur une ligne d'aperçu qui omet une partie du message pour l'agrandir sur place.

181 

178* Dans une session démarrée avec [`--verbose`](https://code.claude.com/docs/fr/cli-reference#cli-flags), Claude Code affiche le texte complet au lieu de l'aperçu.182* Dans une session démarrée avec [`--verbose`](https://code.claude.com/docs/fr/cli-reference#cli-flags), Claude Code affiche le texte complet au lieu de l'aperçu.

179 183 

180L'aperçu raccourcit seulement ce que vous voyez. Que vous l'agrandissiez ou non, Claude lit le message complet.184L'aperçu raccourcit seulement ce que vous voyez. Que vous l'agrandissiez ou non, Claude lit le message complet.

desktop.md +31 −22

Details

69* **Utiliser la suggestion** : appuyez sur **Tab** ou **Flèche droite** pour la placer dans la zone de prompt, modifiez-la si vous le souhaitez, puis appuyez sur **Entrée** pour l'envoyer. Appuyer sur **Entrée** avant d'accepter la suggestion ne l'envoie pas.69* **Utiliser la suggestion** : appuyez sur **Tab** ou **Flèche droite** pour la placer dans la zone de prompt, modifiez-la si vous le souhaitez, puis appuyez sur **Entrée** pour l'envoyer. Appuyer sur **Entrée** avant d'accepter la suggestion ne l'envoie pas.

70* **Rédiger votre propre prompt** : commencez à taper. La suggestion s'affiche uniquement tant que la zone de prompt est vide et ne contient aucun fichier joint.70* **Rédiger votre propre prompt** : commencez à taper. La suggestion s'affiche uniquement tant que la zone de prompt est vide et ne contient aucun fichier joint.

71 71 

72Accédez à **Paramètres > Claude Code** et désactivez **Suggestions de prompts** sous **Sessions** pour arrêter les suggestions dans chaque session à partir de son prochain démarrage ou de sa prochaine reprise.72Désactivez **Suggestions de prompts** dans **Paramètres > Code** ou **Paramètres > Claude Code** pour arrêter les suggestions. Chaque session cesse de les afficher à son prochain démarrage ou à sa prochaine reprise.

73 73 

74### Ajouter des fichiers et du contexte aux prompts74### Ajouter des fichiers et du contexte aux prompts

75 75 


92| **Accepter les modifications** | `acceptEdits` | Claude accepte automatiquement les modifications de fichiers et les commandes courantes du système de fichiers comme `mkdir`, `touch` et `mv`, mais demande toujours avant d'exécuter les autres commandes du terminal. Utilisez ceci quand vous faites confiance aux modifications de fichiers et voulez une itération plus rapide. |92| **Accepter les modifications** | `acceptEdits` | Claude accepte automatiquement les modifications de fichiers et les commandes courantes du système de fichiers comme `mkdir`, `touch` et `mv`, mais demande toujours avant d'exécuter les autres commandes du terminal. Utilisez ceci quand vous faites confiance aux modifications de fichiers et voulez une itération plus rapide. |

93| **Plan** | `plan` | Claude lit les fichiers et exécute les commandes pour explorer, puis propose un plan sans modifier votre code source. Bon pour les tâches complexes où vous voulez examiner l'approche en premier. |93| **Plan** | `plan` | Claude lit les fichiers et exécute les commandes pour explorer, puis propose un plan sans modifier votre code source. Bon pour les tâches complexes où vous voulez examiner l'approche en premier. |

94| **Auto** | `auto` | Claude s'exécute sans demandes de permission courantes ; avant que des actions telles que les commandes shell et les requêtes réseau s'exécutent, un classificateur en arrière-plan vérifie qu'elles s'alignent avec votre demande. Apparaît quand [le mode auto est disponible](#auto-mode-availability) ; il n'y a pas de bascule Paramètres séparée pour cela. |94| **Auto** | `auto` | Claude s'exécute sans demandes de permission courantes ; avant que des actions telles que les commandes shell et les requêtes réseau s'exécutent, un classificateur en arrière-plan vérifie qu'elles s'alignent avec votre demande. Apparaît quand [le mode auto est disponible](#auto-mode-availability) ; il n'y a pas de bascule Paramètres séparée pour cela. |

95| **Contourner les permissions** | `bypassPermissions` | Claude s'exécute sans demandes de permission, sauf pour les [actions qu'aucun mode n'approuve automatiquement](https://code.claude.com/docs/fr/permission-modes.md#actions-no-mode-auto-approves), les classificateurs de sécurité quand Claude [agit sur des sites externes](#browse-external-sites), ou les actions de bureau telles que la suppression d'une session, mais pas [son archivage](#work-across-sessions). Équivalent à `--dangerously-skip-permissions` dans la CLI. Sur les plans Pro et Max, activez-le dans vos Paramètres → Claude Code sous « Autoriser le mode de contournement des permissions » ; sur les plans Team et Enterprise, il n'y a pas de bascule Paramètres, et la politique organisationnelle le contrôle à la place. Utilisez uniquement dans les conteneurs sandboxés ou les machines virtuelles. |95| **Contourner les permissions** | `bypassPermissions` | Claude s'exécute sans demandes de permission, sauf pour les [actions qu'aucun mode n'approuve automatiquement](https://code.claude.com/docs/fr/permission-modes.md#actions-no-mode-auto-approves), les classificateurs de sécurité quand Claude [agit sur des sites externes](#browse-external-sites), ou les actions de bureau telles que la suppression d'une session, mais pas [son archivage](#work-across-sessions). Équivalent à `--dangerously-skip-permissions` dans la CLI. Sur les plans Pro et Max, activez « Autoriser le mode de contournement des permissions » dans **Paramètres > Code** ou **Paramètres > Claude Code**. Sur les plans Team et Enterprise, il n'y a pas de bascule Paramètres, et la politique organisationnelle le contrôle à la place. Utilisez uniquement dans les conteneurs sandboxés ou les machines virtuelles. |

96 96 

97Les versions antérieures de l'onglet Code étiquetaient ces modes Demander les permissions, Accepter automatiquement les modifications et Plan mode.97Les versions antérieures de l'onglet Code étiquetaient ces modes Demander les permissions, Accepter automatiquement les modifications et Plan mode.

98 98 


100 100 

101> [!TIP]101> [!TIP]

102>102>

103> Commencez les tâches complexes en Plan pour que Claude trace une approche avant de faire des modifications. Une fois que vous approuvez le plan, passez à Accepter les modifications ou Manuel pour l'exécuter. Voir [explorer d'abord, puis planifier, puis coder](https://code.claude.com/docs/fr/best-practices.md#explore-first-then-plan-then-code) pour plus d'informations sur ce workflow.103> Commencez les tâches complexes en Plan pour que Claude trace une approche avant de faire des modifications. Une fois que vous approuvez le plan, passez à Accepter les modifications ou Manuel pour l'exécuter. Voir [mode plan](https://code.claude.com/docs/fr/permission-modes.md#analyze-before-you-edit-with-plan-mode) pour plus d'informations sur ce workflow.

104 104 

105Les sessions cloud supportent Accepter les modifications, Plan et Auto. Accepter les modifications correspond au mode `default` : les sessions cloud pré-approuvent les modifications de fichiers, donc le sélecteur affiche Accepter les modifications au lieu de Manuel. Contourner les permissions n'est pas disponible dans les sessions cloud, y compris les sessions dans un [environnement auto-hébergé](https://code.claude.com/docs/fr/self-hosted-environments).105Les sessions cloud supportent Accepter les modifications, Plan et Auto. Accepter les modifications correspond au mode `default` : les sessions cloud pré-approuvent les modifications de fichiers, donc le sélecteur affiche Accepter les modifications au lieu de Manuel. Contourner les permissions n'est pas disponible dans les sessions cloud, y compris les sessions dans un [environnement auto-hébergé](https://code.claude.com/docs/fr/self-hosted-environments).

106 106 


133 133 

134Claude crée la configuration initiale du serveur en fonction de votre projet. Si votre application utilise une commande de développement personnalisée, modifiez `.claude/launch.json` pour correspondre à votre configuration. Voir [Configurer les serveurs d'aperçu](#configure-preview-servers) pour la référence complète.134Claude crée la configuration initiale du serveur en fonction de votre projet. Si votre application utilise une commande de développement personnalisée, modifiez `.claude/launch.json` pour correspondre à votre configuration. Voir [Configurer les serveurs d'aperçu](#configure-preview-servers) pour la référence complète.

135 135 

136Pour effacer les données enregistrées du Navigateur, sélectionnez **Effacer les données de navigation** dans le menu **⋮** du volet Navigateur. Pour désactiver complètement le Navigateur, désactivez **Outils du navigateur** dans **Paramètres > Claude Code**.136Pour effacer les données enregistrées du Navigateur, sélectionnez **Effacer les données de navigation** dans le menu **⋮** du volet Navigateur. Pour désactiver complètement le Navigateur, désactivez **Outils du navigateur** dans **Paramètres > Code** ou **Paramètres > Claude Code**.

137 137 

138### Parcourir les sites externes138### Parcourir les sites externes

139 139 


164 164 

165### Examiner les modifications avec la vue diff165### Examiner les modifications avec la vue diff

166 166 

167Après que Claude a modifié votre code, la vue diff vous permet d'examiner les modifications fichier par fichier avant de créer une pull request. Pour ouvrir la vue diff, cliquez sur le nombre de lignes, comme `+12 -1`, dans la carte **Modifications** du [panneau de détails de la session](#see-session-details). Vous pouvez également cliquer sur **Modifications** dans la barre de titre de la session.167Après que Claude a modifié votre code, la vue diff vous permet d'examiner les modifications fichier par fichier avant de créer une pull request. Pour ouvrir la vue diff, cliquez sur le nombre de lignes, comme `+12 -1`, dans la carte **Modifications** du [panneau de détails de la session](#see-session-details). Vous pouvez également cliquer sur **Modifications** dans la barre de titre de la session. Le diff d'une session cloud par rapport à la branche de base peut [omettre les modifications qui ne sont pas encore poussées](https://code.claude.com/docs/fr/claude-code-on-the-web.md#troubleshoot-a-missing-file-in-the-diff-view).

168 168 

169Pour commenter des lignes spécifiques, cliquez sur n'importe quelle ligne dans le diff pour ouvrir une boîte de commentaire. Tapez votre retour et appuyez sur **Entrée** pour ajouter le commentaire. Après avoir ajouté des commentaires à plusieurs lignes, soumettez tous les commentaires à la fois :169Pour commenter des lignes spécifiques, survolez une ligne et cliquez sur le **+** qui apparaît à côté de son numéro de ligne pour ouvrir une boîte de commentaire. Tapez votre retour et appuyez sur **Entrée** pour ajouter le commentaire. Après avoir ajouté des commentaires à plusieurs lignes, soumettez tous les commentaires à la fois :

170 170 

171* **macOS** : appuyez sur **Cmd+Entrée**171* **macOS** : appuyez sur **Cmd+Entrée**

172* **Windows** : appuyez sur **Ctrl+Entrée**172* **Windows** : appuyez sur **Ctrl+Entrée**


194 * **Si le dépôt n'autorise pas la fusion automatique** : **Fusionner une fois prête** ne s'active pas ; activez donc d'abord la fusion automatique dans les [paramètres de votre dépôt GitHub](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-auto-merge-for-pull-requests-in-your-repository)194 * **Si le dépôt n'autorise pas la fusion automatique** : **Fusionner une fois prête** ne s'active pas ; activez donc d'abord la fusion automatique dans les [paramètres de votre dépôt GitHub](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-auto-merge-for-pull-requests-in-your-repository)

195* **[Ancienne disposition](#check-which-layout-you-have)** : une fois que la session a une pull request, cliquez sur **CI** dans sa barre d'état.195* **[Ancienne disposition](#check-which-layout-you-have)** : une fois que la session a une pull request, cliquez sur **CI** dans sa barre d'état.

196 196 

197Pour archiver la session automatiquement une fois que la PR est fusionnée ou fermée, activez l'[archivage automatique](#archive-a-session) dans **Paramètres > Claude Code**.197Pour archiver la session automatiquement une fois que la PR est fusionnée ou fermée, activez l'[archivage automatique](#archive-a-session) dans **Paramètres > Code** ou **Paramètres > Claude Code**.

198 198 

199> [!NOTE]199> [!NOTE]

200>200>


275* **Cmd+Ctrl** : appuyez sur **Ctrl+Alt**275* **Cmd+Ctrl** : appuyez sur **Ctrl+Alt**

276* **Cmd** : appuyez sur **Ctrl**276* **Cmd** : appuyez sur **Ctrl**

277 277 

278Le cycle des sessions, le basculement du terminal et le basculement du mode d'affichage utilisent **Ctrl** sur chaque plateforme.278Les raccourcis qui commencent par `Ctrl` restent identiques sur chaque plateforme.

279 279 

280| Raccourci | Action |280| Raccourci | Action |

281| - | - |281| - | - |


284| `Cmd` `Option` `1`–`9` | Sur l'écran de nouvelle session dans la [disposition actuelle](#check-which-layout-you-have), sélectionner un environnement |284| `Cmd` `Option` `1`–`9` | Sur l'écran de nouvelle session dans la [disposition actuelle](#check-which-layout-you-have), sélectionner un environnement |

285| `Cmd` `Option` `0` | Sur l'écran de nouvelle session dans la disposition actuelle, ouvrir la [boîte de dialogue **Nouvel environnement**](#create-a-saved-environment) |285| `Cmd` `Option` `0` | Sur l'écran de nouvelle session dans la disposition actuelle, ouvrir la [boîte de dialogue **Nouvel environnement**](#create-a-saved-environment) |

286| `Cmd` `W` | Fermer la session |286| `Cmd` `W` | Fermer la session |

287| `Ctrl` `Tab` / `Ctrl` `Shift` `Tab` | Session suivante ou précédente |287| `Ctrl` `Tab` / `Ctrl` `Shift` `Tab` | Basculer entre les sessions |

288| `Cmd` `Shift` `]` / `Cmd` `Shift` `[` | Session suivante ou précédente |288| `Cmd` `Shift` `]` / `Cmd` `Shift` `[` | Session suivante ou précédente |

289| `Esc` | Arrêter la réponse de Claude |289| `Esc` | Arrêter la réponse de Claude |

290| `Tab` / `Right arrow` | [Accepter le prompt suggéré](#accept-a-suggested-prompt) dans une zone de prompt vide |290| `Tab` / `Right arrow` | [Accepter le prompt suggéré](#accept-a-suggested-prompt) dans une zone de prompt vide |


352 352 

353**2. Activer le basculement**353**2. Activer le basculement**

354 354 

355Dans l'application de bureau, allez à **Paramètres > Cet ordinateur > Système**. Sous **Utilisation informatique**, activez **Activer l'utilisation informatique**. Sur Windows, le basculement prend effet immédiatement et la configuration est complète. Sur macOS, continuez à l'étape suivante.355Dans l'application de bureau, ouvrez **Paramètres**, puis :

356 

357* **Si le menu Paramètres affiche Cet ordinateur** : allez à **Cet ordinateur > Système**

358* **Sinon** : allez à **Capacités**

359 

360Sous **Utilisation informatique**, activez **Activer l'utilisation informatique** :

361 

362* **Windows** : le basculement prend effet immédiatement et la configuration est complète

363* **macOS** : continuez à l'étape suivante

356 364 

357Si vous ne voyez pas le basculement, confirmez que vous êtes sur macOS ou Windows avec un plan Pro ou Max, puis mettez à jour et redémarrez l'application.365Si vous ne voyez pas le basculement, confirmez que vous êtes sur macOS ou Windows avec un plan Pro ou Max, puis mettez à jour et redémarrez l'application.

358 366 


379 387 

380Les applications avec une large portée, comme les terminaux, Finder ou Explorateur de fichiers, et Paramètres système ou Paramètres, affichent un avertissement supplémentaire dans l'invite pour que vous sachiez ce que l'approbation accorde.388Les applications avec une large portée, comme les terminaux, Finder ou Explorateur de fichiers, et Paramètres système ou Paramètres, affichent un avertissement supplémentaire dans l'invite pour que vous sachiez ce que l'approbation accorde.

381 389 

382La section **Utilisation informatique** de **Paramètres > Cet ordinateur > Système** comprend les options suivantes :390Dans Paramètres, la section **Utilisation informatique** où vous avez [activé l'utilisation informatique](#enable-computer-use) comprend les options suivantes :

383 391 

384* **Applications refusées** : ajoutez des applications ici pour les rejeter sans demander. Claude peut toujours affecter une application refusée indirectement via des actions dans une application autorisée, mais il ne peut pas interagir directement avec l'application refusée.392* **Applications refusées** : ajoutez des applications ici pour les rejeter sans demander. Claude peut toujours affecter une application refusée indirectement via des actions dans une application autorisée, mais il ne peut pas interagir directement avec l'application refusée.

385* **Afficher les applications quand Claude a terminé** : tandis que l'utilisation informatique ne s'exécute pas en arrière-plan, Claude masque vos autres fenêtres pendant qu'il travaille pour qu'il n'interagisse qu'avec l'application approuvée. Quand Claude a terminé, les fenêtres masquées sont restaurées sauf si vous désactivez ce paramètre.393* **Afficher les applications quand Claude a terminé** : tandis que l'utilisation informatique ne s'exécute pas en arrière-plan, Claude masque vos autres fenêtres pendant qu'il travaille pour qu'il n'interagisse qu'avec l'application approuvée. Quand Claude a terminé, les fenêtres masquées sont restaurées sauf si vous désactivez ce paramètre.


390 398 

391### Travailler en parallèle avec les sessions399### Travailler en parallèle avec les sessions

392 400 

393Cliquez sur **+ Nouvelle** 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.401Cliquez sur **+ Nouvelle** 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 passer d'une session à l'autre.

394 402 

395Vous pouvez également ouvrir une deuxième session à côté de la session actuelle ou dans sa propre fenêtre :403Vous pouvez également ouvrir une deuxième session à côté de la session actuelle ou dans sa propre fenêtre :

396 404 


401 409 

402#### Exécuter une session dans son propre worktree410#### Exécuter une session dans son propre worktree

403 411 

404Dans un projet qui est un dépôt Git, activez **Worktree** avant de démarrer une session pour l'exécuter dans son propre [worktree Git](https://code.claude.com/docs/fr/worktrees.md), une copie isolée du projet. Par défaut, **Worktree** est désactivé et Claude travaille directement dans le dossier du projet. Cliquez sur le contrôle du dossier de projet dans la [ligne sous la zone de prompt](#start-a-session) et activez **Worktree**.412Dans un projet qui est un dépôt Git, activez **Worktree** avant de démarrer une session pour l'exécuter dans son propre [worktree Git](https://code.claude.com/docs/fr/worktrees.md), une copie isolée du projet. Par défaut, **Worktree** est désactivé et Claude travaille directement dans le dossier du projet. Sur la [disposition actuelle](#check-which-layout-you-have), activez le bouton **Worktree** dans la [ligne sous la zone de prompt](#start-a-session).

405 413 

406* **Avec un [environnement enregistré](#create-a-saved-environment)** : définissez **Worktree** lorsque vous créez ou modifiez l'environnement414* **Avec un [fournisseur tiers](https://code.claude.com/docs/fr/third-party-integrations.md)** : si la ligne sous la zone de prompt affiche le contrôle du dossier de projet mais aucun bouton **Worktree**, cliquez sur ce contrôle et activez **Worktree**

415* **Comme valeur par défaut d'un [environnement local ou SSH enregistré](#create-a-saved-environment)** : définissez **Worktree** lorsque vous créez ou modifiez l'environnement

407* **[Disposition précédente](#check-which-layout-you-have)** : cochez la case **worktree** à côté du nom de la branche, au-dessus de la zone de prompt416* **[Disposition précédente](#check-which-layout-you-have)** : cochez la case **worktree** à côté du nom de la branche, au-dessus de la zone de prompt

408 417 

409Les worktrees sont stockés dans `<project-root>/.claude/worktrees/` par défaut. Pour les stocker plutôt dans un répertoire personnalisé :418Les worktrees sont stockés dans `<project-root>/.claude/worktrees/` par défaut. Pour les stocker plutôt dans un répertoire personnalisé :

410 419 

411* **Sessions locales** : définissez **Emplacement du worktree** dans **Paramètres > Claude Code**420* **Sessions locales** : définissez **Emplacement du worktree** dans **Paramètres > Code** ou **Paramètres > Claude Code**

412* **Sessions SSH** : définissez **Dossier du worktree** sur la [connexion SSH](#choose-where-ssh-session-worktrees-go)421* **Sessions SSH** : définissez **Dossier du worktree** sur la [connexion SSH](#choose-where-ssh-session-worktrees-go)

413 422 

414Vous pouvez également définir un **Préfixe de branche** dans **Paramètres > Claude Code**. Desktop l'ajoute au début de chaque nom de branche worktree, ce qui est utile pour garder les branches créées par Claude organisées.423Vous pouvez également définir un **Préfixe de branche** dans **Paramètres > Code** ou **Paramètres > Claude Code**. Desktop l'ajoute au début de chaque nom de branche worktree, ce qui est utile pour garder les branches créées par Claude organisées.

415 424 

416Pour inclure les fichiers ignorés par git comme `.env` dans les nouveaux worktrees, créez un [fichier `.worktreeinclude`](https://code.claude.com/docs/fr/worktrees#copy-gitignored-files-into-worktrees) à la racine de votre projet. Voir [Ce que les worktrees partagent avec le checkout principal](https://code.claude.com/docs/fr/worktrees.md#what-worktrees-share-with-the-main-checkout) pour savoir où une session worktree lit les paramètres du projet, les hooks et les skills.425Pour inclure les fichiers ignorés par git comme `.env` dans les nouveaux worktrees, créez un [fichier `.worktreeinclude`](https://code.claude.com/docs/fr/worktrees#copy-gitignored-files-into-worktrees) à la racine de votre projet. Voir [Ce que les worktrees partagent avec le checkout principal](https://code.claude.com/docs/fr/worktrees.md#what-worktrees-share-with-the-main-checkout) pour savoir où une session worktree lit les paramètres du projet, les hooks et les skills.

417 426 


430 439 

431Avant d'archiver une session dont le worktree contient des modifications non commitées, voir [Conserver les modifications non commitées lors de l'archivage d'une session](#keep-uncommitted-changes-when-a-session-is-archived). Pour archiver une session, survolez-la dans la barre latérale, ouvrez son menu et sélectionnez **Archiver**. La session est déplacée vers vos [sessions archivées](#organize-and-find-sessions).440Avant d'archiver une session dont le worktree contient des modifications non commitées, voir [Conserver les modifications non commitées lors de l'archivage d'une session](#keep-uncommitted-changes-when-a-session-is-archived). Pour archiver une session, survolez-la dans la barre latérale, ouvrez son menu et sélectionnez **Archiver**. La session est déplacée vers vos [sessions archivées](#organize-and-find-sessions).

432 441 

433Pour que les sessions s'archivent elles-mêmes quand leur pull request est fusionnée ou fermée, activez **Auto-archive après fusion ou fermeture de PR** dans **Paramètres > Claude Code**. Les sessions cloud et les sessions encore en cours d'exécution ne s'archivent pas elles-mêmes.442Pour que les sessions s'archivent elles-mêmes quand leur pull request est fusionnée ou fermée, activez **Auto-archive après fusion ou fermeture de PR** dans **Paramètres > Code** ou **Paramètres > Claude Code**. Les sessions cloud et les sessions encore en cours d'exécution ne s'archivent pas elles-mêmes.

434 443 

435#### Conserver les modifications non commitées lors de l'archivage d'une session444#### Conserver les modifications non commitées lors de l'archivage d'une session

436 445 


527Une session locale se connecte quand vous activez Remote Control pour elle, ou quand elle se connecte automatiquement à son démarrage :536Une session locale se connecte quand vous activez Remote Control pour elle, ou quand elle se connecte automatiquement à son démarrage :

528 537 

529* **Vous l'activez pour cette session** : avec l'interrupteur **Remote Control** de la session, ou en tapant `/remote-control` dans sa zone de prompt.538* **Vous l'activez pour cette session** : avec l'interrupteur **Remote Control** de la session, ou en tapant `/remote-control` dans sa zone de prompt.

530* **Elle se connecte à son démarrage** : les nouvelles sessions se connectent automatiquement tant que **Connecter les nouvelles sessions à Remote Control** est activé dans **Paramètres > Claude Code**. Si vous n'avez jamais modifié ce paramètre, Desktop suit [`remoteControlAtStartup`](https://code.claude.com/docs/fr/settings-reference#remotecontrolatstartup) dans vos paramètres utilisateur ou vos paramètres gérés, puis la valeur par défaut de votre organisation.539* **Elle se connecte à son démarrage** : les nouvelles sessions se connectent automatiquement tant que **Connecter les nouvelles sessions à Remote Control** est activé dans **Paramètres > Code** ou **Paramètres > Claude Code**. Si vous n'avez jamais modifié ce paramètre, Desktop suit [`remoteControlAtStartup`](https://code.claude.com/docs/fr/settings-reference#remotecontrolatstartup) dans vos paramètres utilisateur ou vos paramètres gérés, puis la valeur par défaut de votre organisation.

531 540 

532Pour savoir si une session est connectée, vérifiez l'interrupteur **Remote Control** dans la carte **Environnement** de son [panneau de détails de la session](#see-session-details).541Pour savoir si une session est connectée, vérifiez l'interrupteur **Remote Control** dans la carte **Environnement** de son [panneau de détails de la session](#see-session-details).

533 542 

534Pour que vos sessions n'apparaissent pas sur vos autres appareils, désactivez Remote Control au niveau dont vous avez besoin :543Pour que vos sessions n'apparaissent pas sur vos autres appareils, désactivez Remote Control au niveau dont vous avez besoin :

535 544 

536* **Une session** : désactivez son interrupteur **Remote Control**. Dans une session qui s'est connectée à son démarrage, taper `/remote-control` laisse Remote Control activé et affiche `Remote Control is already on. This session connected automatically when it started.` Cliquez sur **Désactiver** sur cette ligne pour vous déconnecter.545* **Une session** : désactivez son interrupteur **Remote Control**. Dans une session qui s'est connectée à son démarrage, taper `/remote-control` laisse Remote Control activé et affiche `Remote Control is already on. This session connected automatically when it started.` Cliquez sur **Désactiver** sur cette ligne pour vous déconnecter.

537* **Les nouvelles sessions Desktop sur cet ordinateur** : désactivez **Connecter les nouvelles sessions à Remote Control** dans **Paramètres > Claude Code**. S'il apparaît déjà désactivé, activez-le puis désactivez-le pour que Desktop enregistre votre choix. Une fois enregistré, il a priorité sur `remoteControlAtStartup` et sur les valeurs par défaut.546* **Les nouvelles sessions Desktop sur cet ordinateur** : désactivez **Connecter les nouvelles sessions à Remote Control** dans **Paramètres > Code** ou **Paramètres > Claude Code**. S'il apparaît déjà désactivé, activez-le puis désactivez-le pour que Desktop enregistre votre choix. Une fois enregistré, il a priorité sur `remoteControlAtStartup` et sur les valeurs par défaut.

538* **Toute session sur cet ordinateur, y compris le CLI** : définissez [`disableRemoteControl`](https://code.claude.com/docs/fr/settings-reference#disableremotecontrol) à `true` dans `~/.claude/settings.json` pour empêcher les sessions de se connecter. Une session déjà connectée au moment où vous avez enregistré le fichier reste connectée jusqu'à ce que vous désactiviez Remote Control pour elle.547* **Toute session sur cet ordinateur, y compris le CLI** : définissez [`disableRemoteControl`](https://code.claude.com/docs/fr/settings-reference#disableremotecontrol) à `true` dans `~/.claude/settings.json` pour empêcher les sessions de se connecter. Une session déjà connectée au moment où vous avez enregistré le fichier reste connectée jusqu'à ce que vous désactiviez Remote Control pour elle.

539 548 

540Pour masquer une session qui apparaît déjà sur vos autres appareils, archivez-la dans Desktop. Desktop archive également la copie Remote Control de la session, qui quitte donc la liste des sessions par défaut sur ces appareils. Pour l'y afficher ou la supprimer, voir [Archiver les sessions](https://code.claude.com/docs/fr/claude-code-on-the-web.md#archive-sessions).549Pour masquer une session qui apparaît déjà sur vos autres appareils, archivez-la dans Desktop. Desktop archive également la copie Remote Control de la session, qui quitte donc la liste des sessions par défaut sur ces appareils. Pour l'y afficher ou la supprimer, voir [Archiver les sessions](https://code.claude.com/docs/fr/claude-code-on-the-web.md#archive-sessions).


576> * **Connecteurs est grisé dans une session WSL** : voir [Si le terminal ou les connecteurs ne sont pas disponibles](https://code.claude.com/docs/fr/desktop-wsl.md#check-for-the-terminal-and-connectors)585> * **Connecteurs est grisé dans une session WSL** : voir [Si le terminal ou les connecteurs ne sont pas disponibles](https://code.claude.com/docs/fr/desktop-wsl.md#check-for-the-terminal-and-connectors)

577> * **Sessions cloud** : voir [Comment les connecteurs atteignent Claude Code](https://code.claude.com/docs/fr/mcp.md#how-connectors-reach-claude-code)586> * **Sessions cloud** : voir [Comment les connecteurs atteignent Claude Code](https://code.claude.com/docs/fr/mcp.md#how-connectors-reach-claude-code)

578 587 

579Une fois connecté, Claude peut lire votre calendrier, envoyer des messages, créer des problèmes et interagir avec vos outils directement. Vous pouvez demander à Claude quels connecteurs sont configurés dans votre session. Pour gérer ou déconnecter les connecteurs, allez à **Paramètres > Connecteurs** dans l'application de bureau.588Une fois connecté, Claude peut lire votre calendrier, envoyer des messages, créer des problèmes et interagir avec vos outils directement. Vous pouvez demander à Claude quels connecteurs sont configurés dans votre session. Pour gérer ou déconnecter les connecteurs, cliquez sur **Personnaliser** dans la barre latérale et ouvrez **Connecteurs**.

580 589 

581Pour les intégrations non listées dans Connecteurs, ajoutez les serveurs MCP manuellement via [fichiers de paramètres](https://code.claude.com/docs/fr/mcp.md#installing-mcp-servers). Vous pouvez également [créer des connecteurs personnalisés](https://support.claude.com/en/articles/11175166-getting-started-with-custom-connectors-using-remote-mcp).590Pour les intégrations non listées dans Connecteurs, ajoutez les serveurs MCP manuellement via [fichiers de paramètres](https://code.claude.com/docs/fr/mcp.md#installing-mcp-servers). Vous pouvez également [créer des connecteurs personnalisés](https://support.claude.com/en/articles/11175166-getting-started-with-custom-connectors-using-remote-mcp).

582 591 


2028| `--model sonnet` | Sélecteur de modèle dans la ligne sous la zone de saisie |2037| `--model sonnet` | Sélecteur de modèle dans la ligne sous la zone de saisie |

2029| `--resume`, `--continue` | Cliquez sur une session dans la barre latérale, ou tapez `/resume` dans la zone de saisie pour reprendre une session que vous avez démarrée à partir de la CLI |2038| `--resume`, `--continue` | Cliquez sur une session dans la barre latérale, ou tapez `/resume` dans la zone de saisie pour reprendre une session que vous avez démarrée à partir de la CLI |

2030| `--permission-mode` | Sélecteur de mode dans la ligne sous la zone de saisie |2039| `--permission-mode` | Sélecteur de mode dans la ligne sous la zone de saisie |

2031| `--dangerously-skip-permissions` | Contourner les permissions. Sur les plans Pro et Max, activez-le dans Paramètres → Claude Code → « Autoriser le mode de contournement des permissions » ; sur les plans Team et Enterprise, la politique organisationnelle le contrôle |2040| `--dangerously-skip-permissions` | Mode Contourner les permissions. Sur les plans Pro et Max, activez « Autoriser le mode de contournement des permissions » dans **Paramètres > Code** ou **Paramètres > Claude Code** ; sur les plans Team et Enterprise, la politique organisationnelle le contrôle |

2032| `--add-dir` | [Ajouter des dossiers à une session](#add-folders-to-a-session) dans les sessions locales et SSH, ou sélectionner [plusieurs dépôts](#run-long-running-tasks-in-the-cloud) dans une session cloud |2041| `--add-dir` | [Ajouter des dossiers à une session](#add-folders-to-a-session) dans les sessions locales et SSH, ou sélectionner [plusieurs dépôts](#run-long-running-tasks-in-the-cloud) dans une session cloud |

2033| `--allowedTools`, `--disallowedTools` | Aucun équivalent par session. Les règles de permission dans les [fichiers de paramètres](https://code.claude.com/docs/fr/settings.md) s'appliquent toujours. |2042| `--allowedTools`, `--disallowedTools` | Aucun équivalent par session. Les règles de permission dans les [fichiers de paramètres](https://code.claude.com/docs/fr/settings.md) s'appliquent toujours. |

2034| `--verbose` | [Mode d'affichage Verbose](#switch-view-modes) |2043| `--verbose` | [Mode d'affichage Verbose](#switch-view-modes) |


2088* **Équipes d'agents** : les équipes coordonnées, où Claude en tant que chef d'équipe assigne des tâches aux coéquipiers à partir d'une liste de tâches partagée, sont disponibles dans la [CLI](https://code.claude.com/docs/fr/agent-teams.md), pas dans Desktop. Pour le travail multi-agents dans une seule session, utilisez les [workflows dynamiques](https://code.claude.com/docs/fr/workflows.md), qui s'exécutent dans Desktop ; Claude peut également [envoyer des messages et gérer vos autres sessions](#work-across-sessions) directement.2097* **Équipes d'agents** : les équipes coordonnées, où Claude en tant que chef d'équipe assigne des tâches aux coéquipiers à partir d'une liste de tâches partagée, sont disponibles dans la [CLI](https://code.claude.com/docs/fr/agent-teams.md), pas dans Desktop. Pour le travail multi-agents dans une seule session, utilisez les [workflows dynamiques](https://code.claude.com/docs/fr/workflows.md), qui s'exécutent dans Desktop ; Claude peut également [envoyer des messages et gérer vos autres sessions](#work-across-sessions) directement.

2089* **Commandes de dialogue terminal** : les commandes intégrées qui ouvrent un panneau interactif dans le terminal se comportent différemment dans l'onglet Code. Modifiez les [fichiers de paramètres](https://code.claude.com/docs/fr/settings.md) directement pour gérer les règles de permission et la configuration, ou exécutez les commandes à partir de la CLI autonome.2098* **Commandes de dialogue terminal** : les commandes intégrées qui ouvrent un panneau interactif dans le terminal se comportent différemment dans l'onglet Code. Modifiez les [fichiers de paramètres](https://code.claude.com/docs/fr/settings.md) directement pour gérer les règles de permission et la configuration, ou exécutez les commandes à partir de la CLI autonome.

2090 * Les commandes sans forme d'argument, telles que `/permissions`, répondent avec `isn't available in this environment`.2099 * Les commandes sans forme d'argument, telles que `/permissions`, répondent avec `isn't available in this environment`.

2091 * `/config` ouvre **Paramètres > Claude Code**.2100 * `/config` ouvre **Paramètres > Code** ou **Paramètres > Claude Code**.

2092 2101 

2093## Dépannage2102## Dépannage

2094 2103 

Details

135 135 

136Les tâches planifiées locales s'exécutent sur votre machine. Desktop vérifie la planification chaque minute lorsque l'application est ouverte et démarre une nouvelle session lorsqu'une tâche est due, indépendamment de toute session manuelle que vous avez ouverte. Chaque tâche reçoit un petit délai de quelques minutes après l'heure planifiée pour échelonner le trafic API. Le délai est déterministe : la même tâche démarre toujours au même décalage.136Les tâches planifiées locales s'exécutent sur votre machine. Desktop vérifie la planification chaque minute lorsque l'application est ouverte et démarre une nouvelle session lorsqu'une tâche est due, indépendamment de toute session manuelle que vous avez ouverte. Chaque tâche reçoit un petit délai de quelques minutes après l'heure planifiée pour échelonner le trafic API. Le délai est déterministe : la même tâche démarre toujours au même décalage.

137 137 

138Les tâches ne s'exécutent que lorsque l'application de bureau est en cours d'exécution et que votre ordinateur est actif. Si votre ordinateur se met en veille à une heure planifiée, l'exécution est ignorée. Pour empêcher la mise en veille inactive, activez **Keep computer awake** dans **Settings > This computer > System**. Fermer le couvercle de l'ordinateur portable le met toujours en veille.138Les tâches ne s'exécutent que lorsque l'application de bureau est en cours d'exécution et que votre ordinateur est actif. Si votre ordinateur se met en veille à une heure planifiée, l'exécution est ignorée. Pour empêcher la mise en veille inactive, activez **Keep computer awake** dans **Settings > Desktop app** ou **Settings > This computer > System**. Fermer le couvercle de l'ordinateur portable le met toujours en veille.

139 139 

140> [!NOTE]140> [!NOTE]

141>141>

env-vars.md +3 −1

Details

270| `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT` | Définissez sur `1` pour désactiver la vérification de [chemin critique](https://code.claude.com/docs/fr/permission-modes.md#critical-paths) pour un `rm` récursif dont la cible est entièrement la sortie d'une substitution de commande, comme `rm -rf "$(pwd)"`. Les autres vérifications de chemins critiques continuent de s'exécuter. Définissez-la dans l'environnement qui lance Claude Code, car Claude Code ignore une copie fournie via un bloc `env` de paramètres. Nécessite Claude Code v2.1.281 ou ultérieur |270| `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT` | Définissez sur `1` pour désactiver la vérification de [chemin critique](https://code.claude.com/docs/fr/permission-modes.md#critical-paths) pour un `rm` récursif dont la cible est entièrement la sortie d'une substitution de commande, comme `rm -rf "$(pwd)"`. Les autres vérifications de chemins critiques continuent de s'exécuter. Définissez-la dans l'environnement qui lance Claude Code, car Claude Code ignore une copie fournie via un bloc `env` de paramètres. Nécessite Claude Code v2.1.281 ou ultérieur |

271| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Définissez `1` pour désactiver les mises à jour automatiques du titre du terminal basées sur le contexte de la conversation. Cela ignore également la requête en arrière-plan au modèle small/fast qui [génère un titre de session](https://code.claude.com/docs/fr/sessions.md#name-your-sessions), et désactive les [rapports de statut vers votre terminal](https://code.claude.com/docs/fr/terminal-config.md#see-session-status-in-your-terminal) |271| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Définissez `1` pour désactiver les mises à jour automatiques du titre du terminal basées sur le contexte de la conversation. Cela ignore également la requête en arrière-plan au modèle small/fast qui [génère un titre de session](https://code.claude.com/docs/fr/sessions.md#name-your-sessions), et désactive les [rapports de statut vers votre terminal](https://code.claude.com/docs/fr/terminal-config.md#see-session-status-in-your-terminal) |

272| `CLAUDE_CODE_DISABLE_THINKING` | Définissez sur `1` pour omettre entièrement le paramètre `thinking` des requêtes API. Il s'agit d'une option de compatibilité pour les proxys et passerelles qui rejettent ce paramètre. Sur les modèles qui réfléchissent par défaut, omettre le paramètre signifie que le modèle peut toujours réfléchir. Pour désactiver explicitement la [réflexion étendue](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) sur l'API Anthropic, utilisez plutôt `MAX_THINKING_TOKENS=0`. Aucune des deux variables ne désactive la réflexion sur Opus 5.5, Sonnet 5.5, Haiku 5.5 ou les modèles Fable, sur lesquels la réflexion ne peut pas être désactivée. Chez les [fournisseurs tiers](https://code.claude.com/docs/fr/third-party-integrations.md), `MAX_THINKING_TOKENS=0` omet également le paramètre ; les deux variables s'y comportent donc de la même manière |272| `CLAUDE_CODE_DISABLE_THINKING` | Définissez sur `1` pour omettre entièrement le paramètre `thinking` des requêtes API. Il s'agit d'une option de compatibilité pour les proxys et passerelles qui rejettent ce paramètre. Sur les modèles qui réfléchissent par défaut, omettre le paramètre signifie que le modèle peut toujours réfléchir. Pour désactiver explicitement la [réflexion étendue](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) sur l'API Anthropic, utilisez plutôt `MAX_THINKING_TOKENS=0`. Aucune des deux variables ne désactive la réflexion sur Opus 5.5, Sonnet 5.5, Haiku 5.5 ou les modèles Fable, sur lesquels la réflexion ne peut pas être désactivée. Chez les [fournisseurs tiers](https://code.claude.com/docs/fr/third-party-integrations.md), `MAX_THINKING_TOKENS=0` omet également le paramètre ; les deux variables s'y comportent donc de la même manière |

273| `CLAUDE_CODE_DISABLE_ULTRAREVIEW_TRUST_CHECK` | Définissez `1` pour que [`claude ultrareview`](https://code.claude.com/docs/fr/ultrareview#trust-the-folder-before-the-review-runs) ne se termine pas avec `Error: Workspace not trusted` dans un dossier auquel vous n'avez pas accordé votre confiance lorsqu'il ne peut pas vous demander de lui faire confiance, par exemple en CI. Définissez-la dans l'environnement qui lance Claude Code, et non dans un bloc `env` des paramètres, et uniquement là où chacune de ces exécutions démarre dans un dossier auquel vous faites confiance. Les exécutions qui peuvent vous poser la question continuent de le faire. Nécessite Claude Code v2.1.309 ou version ultérieure |273| `CLAUDE_CODE_DISABLE_ULTRAREVIEW_TRUST_CHECK` | Définissez `1` pour que [`claude ultrareview`](https://code.claude.com/docs/fr/ultrareview#trust-the-folder-before-the-review-runs) ne se termine pas avec `Error: Workspace not trusted` dans un dossier auquel vous n'avez pas accordé votre confiance lorsqu'il ne peut pas vous demander de faire confiance à ce dossier, par exemple en CI. Définissez-la dans l'environnement qui lance Claude Code, et non dans un bloc `env` des paramètres, et uniquement là où chacune de ces exécutions démarre dans un dossier auquel vous faites confiance. Les exécutions qui peuvent vous poser la question continuent de le faire. Nécessite Claude Code v2.1.309 ou version ultérieure |

274| `CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT` | Définissez sur `1` pour ignorer la [compaction automatique](https://code.claude.com/docs/fr/costs.md#reduce-token-usage) proactive lorsque Claude Code ne reconnaît pas l'ID du modèle, comme un alias de [passerelle LLM](https://code.claude.com/docs/fr/llm-gateway). Sans cette variable, Claude Code compacte à la fenêtre de contexte qu'il suppose pour cet ID. `CLAUDE_CODE_MAX_CONTEXT_TOKENS` peut plutôt corriger la fenêtre supposée ; voir [Corriger la fenêtre pour un ID de modèle de passerelle ou personnalisé](https://code.claude.com/docs/fr/model-config.md#correct-the-window-for-a-gateway-or-custom-model-id) pour savoir quand chaque variable s'applique. Nécessite Claude Code v2.1.223 ou ultérieur |274| `CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT` | Définissez sur `1` pour ignorer la [compaction automatique](https://code.claude.com/docs/fr/costs.md#reduce-token-usage) proactive lorsque Claude Code ne reconnaît pas l'ID du modèle, comme un alias de [passerelle LLM](https://code.claude.com/docs/fr/llm-gateway). Sans cette variable, Claude Code compacte à la fenêtre de contexte qu'il suppose pour cet ID. `CLAUDE_CODE_MAX_CONTEXT_TOKENS` peut plutôt corriger la fenêtre supposée ; voir [Corriger la fenêtre pour un ID de modèle de passerelle ou personnalisé](https://code.claude.com/docs/fr/model-config.md#correct-the-window-for-a-gateway-or-custom-model-id) pour savoir quand chaque variable s'applique. Nécessite Claude Code v2.1.223 ou ultérieur |

275| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Définissez sur `1` pour désactiver le défilement virtuel en [rendu plein écran](https://code.claude.com/docs/fr/fullscreen.md) et afficher chaque message de la transcription. Utilisez cette option si le défilement en mode plein écran affiche des zones vides là où des messages devraient apparaître |275| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Définissez sur `1` pour désactiver le défilement virtuel en [rendu plein écran](https://code.claude.com/docs/fr/fullscreen.md) et afficher chaque message de la transcription. Utilisez cette option si le défilement en mode plein écran affiche des zones vides là où des messages devraient apparaître |

276| `CLAUDE_CODE_DISABLE_WEB_FETCH` | Définissez sur `1` pour désactiver l'outil [WebFetch](https://code.claude.com/docs/fr/tools-reference.md#webfetch-tool-behavior). L'outil [WebSearch](https://code.claude.com/docs/fr/tools-reference.md#websearch-tool-behavior) reste disponible. Nécessite Claude Code v2.1.285 ou ultérieur |276| `CLAUDE_CODE_DISABLE_WEB_FETCH` | Définissez sur `1` pour désactiver l'outil [WebFetch](https://code.claude.com/docs/fr/tools-reference.md#webfetch-tool-behavior). L'outil [WebSearch](https://code.claude.com/docs/fr/tools-reference.md#websearch-tool-behavior) reste disponible. Nécessite Claude Code v2.1.285 ou ultérieur |


291| `CLAUDE_CODE_ENABLE_TASKS` | Sélectionne les outils de suivi des tâches que Claude Code fournit dans les [sessions qui en disposent](https://code.claude.com/docs/fr/tools-reference.md#task-tool-availability). Par défaut, Claude Code fournit les outils Task `TaskCreate`, `TaskUpdate`, `TaskGet` et `TaskList`. Définir sur `0` pour obtenir à la place l'ancien outil `TodoWrite`. Voir [Liste de tâches](https://code.claude.com/docs/fr/interactive-mode.md#task-list) |291| `CLAUDE_CODE_ENABLE_TASKS` | Sélectionne les outils de suivi des tâches que Claude Code fournit dans les [sessions qui en disposent](https://code.claude.com/docs/fr/tools-reference.md#task-tool-availability). Par défaut, Claude Code fournit les outils Task `TaskCreate`, `TaskUpdate`, `TaskGet` et `TaskList`. Définir sur `0` pour obtenir à la place l'ancien outil `TodoWrite`. Voir [Liste de tâches](https://code.claude.com/docs/fr/interactive-mode.md#task-list) |

292| `CLAUDE_CODE_ENABLE_TELEMETRY` | Définir sur `1` pour activer la collecte de données OpenTelemetry pour les métriques et les logs. Requise avant de configurer les exportateurs OTel. Définissez-la dans votre shell, vos paramètres utilisateur ou vos paramètres gérés. Ignorée dans les [paramètres de projet et locaux](https://code.claude.com/docs/fr/settings-reference.md#variables-claude-code-ignores-in-env). Voir [Surveillance](https://code.claude.com/docs/fr/monitoring-usage.md) |292| `CLAUDE_CODE_ENABLE_TELEMETRY` | Définir sur `1` pour activer la collecte de données OpenTelemetry pour les métriques et les logs. Requise avant de configurer les exportateurs OTel. Définissez-la dans votre shell, vos paramètres utilisateur ou vos paramètres gérés. Ignorée dans les [paramètres de projet et locaux](https://code.claude.com/docs/fr/settings-reference.md#variables-claude-code-ignores-in-env). Voir [Surveillance](https://code.claude.com/docs/fr/monitoring-usage.md) |

293| `CLAUDE_CODE_ENABLE_TODO_TOOLS` | Définir sur `1` pour obtenir les outils de suivi des tâches sur tous les modèles. Sans cela, Claude Code ne les fournit par défaut que sur les modèles listés dans [Disponibilité de l'outil Task](https://code.claude.com/docs/fr/tools-reference.md#task-tool-availability). `CLAUDE_CODE_ENABLE_TASKS` sélectionne toujours les outils Task ou `TodoWrite`. Nécessite Claude Code v2.1.233 ou ultérieur |293| `CLAUDE_CODE_ENABLE_TODO_TOOLS` | Définir sur `1` pour obtenir les outils de suivi des tâches sur tous les modèles. Sans cela, Claude Code ne les fournit par défaut que sur les modèles listés dans [Disponibilité de l'outil Task](https://code.claude.com/docs/fr/tools-reference.md#task-tool-availability). `CLAUDE_CODE_ENABLE_TASKS` sélectionne toujours les outils Task ou `TodoWrite`. Nécessite Claude Code v2.1.233 ou ultérieur |

294| `CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS` | Définissez sur `1` pour [exécuter des commandes `rm` dangereuses sans demande de confirmation](https://code.claude.com/docs/fr/permission-modes#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode) en mode `bypassPermissions`, ce qui supprime une demande de sécurité pour les suppressions destructrices. La section liée indique les cas où elle n'a aucun effet. [Définissez-la dans l'environnement qui lance Claude Code](#set-variables-in-your-shell), car Claude Code [l'ignore dans un bloc `env` des paramètres](https://code.claude.com/docs/fr/settings-reference#variables-claude-code-ignores-in-env). Nécessite Claude Code v2.1.311 ou ultérieur |

294| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Durée en millisecondes à attendre après que la boucle de requêtes est devenue inactive avant de quitter automatiquement. Utile pour les workflows automatisés et les scripts utilisant le mode SDK |295| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Durée en millisecondes à attendre après que la boucle de requêtes est devenue inactive avant de quitter automatiquement. Utile pour les workflows automatisés et les scripts utilisant le mode SDK |

295| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Définir sur `1` pour activer les [équipes d'agents](https://code.claude.com/docs/fr/agent-teams.md). Les équipes d'agents sont expérimentales et désactivées par défaut |296| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Définir sur `1` pour activer les [équipes d'agents](https://code.claude.com/docs/fr/agent-teams.md). Les équipes d'agents sont expérimentales et désactivées par défaut |

296| `CLAUDE_CODE_EXTRA_BODY` | Objet JSON à fusionner au niveau supérieur du corps de chaque requête API. Utile pour transmettre des paramètres propres au fournisseur que Claude Code n'expose pas directement. Une valeur exportée dans votre shell s'applique également aux [sessions en arrière-plan](https://code.claude.com/docs/fr/agent-view.md) que vous lancez avec `claude agents` ou `--bg`. Avant la v2.1.206, les sessions en arrière-plan ignoraient une valeur exportée dans le shell et utilisaient la copie éventuellement héritée par le processus superviseur en arrière-plan |297| `CLAUDE_CODE_EXTRA_BODY` | Objet JSON à fusionner au niveau supérieur du corps de chaque requête API. Utile pour transmettre des paramètres propres au fournisseur que Claude Code n'expose pas directement. Une valeur exportée dans votre shell s'applique également aux [sessions en arrière-plan](https://code.claude.com/docs/fr/agent-view.md) que vous lancez avec `claude agents` ou `--bg`. Avant la v2.1.206, les sessions en arrière-plan ignoraient une valeur exportée dans le shell et utilisaient la copie éventuellement héritée par le processus superviseur en arrière-plan |


368| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Définir sur `1` pour reprendre automatiquement si la session précédente s'est terminée en cours de tour. Utilisée en mode SDK afin que le modèle continue sans que le SDK ait à renvoyer le prompt. Pour désactiver ce comportement, supprimez la variable ou définissez-la sur `0`. Pour le panneau de chat de VS Code, voir [Poursuivre les conversations après un rechargement](https://code.claude.com/docs/fr/vs-code.md#continue-conversations-after-a-reload) |369| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Définir sur `1` pour reprendre automatiquement si la session précédente s'est terminée en cours de tour. Utilisée en mode SDK afin que le modèle continue sans que le SDK ait à renvoyer le prompt. Pour désactiver ce comportement, supprimez la variable ou définissez-la sur `0`. Pour le panneau de chat de VS Code, voir [Poursuivre les conversations après un rechargement](https://code.claude.com/docs/fr/vs-code.md#continue-conversations-after-a-reload) |

369| `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 continue automatiquement lors de la reprise. Lorsque le dernier message est plus ancien que cette limite, Claude Code n'effectue pas la reprise automatique de `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` ni n'envoie son message de continuation `CLAUDE_CODE_RESUME_PROMPT`, et la session démarre inactive pour que vous repreniez explicitement. Une valeur non définie ou `0` ne fixe aucune limite, à ceci près que certains tours ne reprennent que dans les six heures suivant leur dernier message, comme un tour terminé par une erreur d'API. Une valeur positive limite tous les tours, y compris ceux-ci ; 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 afin qu'un redémarrage sur une ancienne transcription ne relance pas un prompt obsolète. Claude Code fixe lui-même une limite d'une heure lorsqu'il redémarre une session de la [vue des agents](https://code.claude.com/docs/fr/agent-view.md) qui a planté et qui avait hérité sa conversation d'une session interactive. Nécessite Claude Code v2.1.211 ou ultérieur |370| `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 continue automatiquement lors de la reprise. Lorsque le dernier message est plus ancien que cette limite, Claude Code n'effectue pas la reprise automatique de `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` ni n'envoie son message de continuation `CLAUDE_CODE_RESUME_PROMPT`, et la session démarre inactive pour que vous repreniez explicitement. Une valeur non définie ou `0` ne fixe aucune limite, à ceci près que certains tours ne reprennent que dans les six heures suivant leur dernier message, comme un tour terminé par une erreur d'API. Une valeur positive limite tous les tours, y compris ceux-ci ; 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 afin qu'un redémarrage sur une ancienne transcription ne relance pas un prompt obsolète. Claude Code fixe lui-même une limite d'une heure lorsqu'il redémarre une session de la [vue des agents](https://code.claude.com/docs/fr/agent-view.md) qui a planté et qui avait hérité sa conversation d'une session interactive. Nécessite Claude Code v2.1.211 ou ultérieur |

370| `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é](https://code.claude.com/docs/fr/hooks.md#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 |371| `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é](https://code.claude.com/docs/fr/hooks.md#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 |

372| `CLAUDE_CODE_RESUME_SHOWS_CUT_OFF_CALLS` | Définissez à `1` pour conserver les [appels d'outils interrompus](https://code.claude.com/docs/fr/sessions.md#what-a-resumed-session-restores), marqués comme coupés, dans un tour que `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` poursuit. Lorsqu'elle n'est pas définie, ces appels sont supprimés avant la poursuite du tour. Certains appels restent supprimés, comme les appels à des sous-agents, des skills, des workflows et des outils qui attendent une personne. Pour le panneau de chat de VS Code, voir [Poursuivre les conversations après un rechargement](https://code.claude.com/docs/fr/vs-code.md#continue-conversations-after-a-reload). Nécessite Claude Code v2.1.309 ou une version ultérieure |

371| `CLAUDE_CODE_RETRY_WATCHDOG` | Définir sur `1` pour les sessions sans surveillance telles que 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 une erreur `429` signalant une limite de dépenses ou des crédits d'utilisation épuisés, même si elle provient d'un [plafond de dépenses de passerelle](https://code.claude.com/docs/fr/errors.md#spend-limit-reached) qui se réinitialise 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](https://code.claude.com/docs/fr/fast-mode.md#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 attend la fin de la fenêtre restante. Dans la v2.1.199 ou ultérieure, il porte également à 300 le nombre de nouvelles tentatives par défaut pour les autres erreurs transitoires, telles que les erreurs serveur, les expirations 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 |373| `CLAUDE_CODE_RETRY_WATCHDOG` | Définir sur `1` pour les sessions sans surveillance telles que 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 une erreur `429` signalant une limite de dépenses ou des crédits d'utilisation épuisés, même si elle provient d'un [plafond de dépenses de passerelle](https://code.claude.com/docs/fr/errors.md#spend-limit-reached) qui se réinitialise 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](https://code.claude.com/docs/fr/fast-mode.md#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 attend la fin de la fenêtre restante. Dans la v2.1.199 ou ultérieure, il porte également à 300 le nombre de nouvelles tentatives par défaut pour les autres erreurs transitoires, telles que les erreurs serveur, les expirations 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 |

372| `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, l'erreur suivante 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érieur |374| `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, l'erreur suivante 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érieur |

373| `CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MS` | Intervalle minimal en millisecondes entre les vérifications visant à savoir si une [limite d'utilisation](https://code.claude.com/docs/fr/errors.md#youve-hit-your-session-limit) a déjà été levée, pendant qu'une requête attend la réinitialisation de cette limite avec `CLAUDE_CODE_RETRY_WATCHDOG` défini. Lorsqu'une vérification constate que la limite est levée, la requête part immédiatement. Indiquez un nombre entier en chiffres simples de `60000`, une minute, à `10800000`, trois heures. Les vérifications ne portent que sur la limite de session ou hebdomadaire d'un abonnement claude.ai lorsque les crédits d'utilisation ne sont pas utilisés, et n'ont pas lieu lorsque `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` est défini. Lorsque cette variable n'est pas définie ou que sa valeur est hors de cette plage, aucune vérification n'est effectuée. Nécessite Claude Code v2.1.305 ou ultérieur |375| `CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MS` | Intervalle minimal en millisecondes entre les vérifications visant à savoir si une [limite d'utilisation](https://code.claude.com/docs/fr/errors.md#youve-hit-your-session-limit) a déjà été levée, pendant qu'une requête attend la réinitialisation de cette limite avec `CLAUDE_CODE_RETRY_WATCHDOG` défini. Lorsqu'une vérification constate que la limite est levée, la requête part immédiatement. Indiquez un nombre entier en chiffres simples de `60000`, une minute, à `10800000`, trois heures. Les vérifications ne portent que sur la limite de session ou hebdomadaire d'un abonnement claude.ai lorsque les crédits d'utilisation ne sont pas utilisés, et n'ont pas lieu lorsque `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` est défini. Lorsque cette variable n'est pas définie ou que sa valeur est hors de cette plage, aucune vérification n'est effectuée. Nécessite Claude Code v2.1.305 ou ultérieur |

errors.md +38 −11

Details

146| `N sessions ended while this machine was offline — the environment was cleaned up on the server and can't be resumed.` | [Réseau](#sessions-ended-while-this-machine-was-offline) |146| `N sessions ended while this machine was offline — the environment was cleaned up on the server and can't be resumed.` | [Réseau](#sessions-ended-while-this-machine-was-offline) |

147| `Couldn't share the transcript.` | [Réseau](#couldnt-share-the-transcript) |147| `Couldn't share the transcript.` | [Réseau](#couldnt-share-the-transcript) |

148| `Couldn't send feedback` | [Réseau](#couldnt-send-feedback) |148| `Couldn't send feedback` | [Réseau](#couldnt-send-feedback) |

149| `Feedback payload too large. Try again without the transcript, or shorten the details.` | [Réseau](#feedback-payload-too-large) |

149| `MCP server "<name>" connection timed out. Your computer went to sleep or its clock changed while connecting.` | [Réseau](#mcp-server-connection-timed-out-during-a-sleep-or-clock-change) |150| `MCP server "<name>" connection timed out. Your computer went to sleep or its clock changed while connecting.` | [Réseau](#mcp-server-connection-timed-out-during-a-sleep-or-clock-change) |

150| `Prompt is too long` / `Input is too long for requested model` | [Erreurs de requête](#prompt-is-too-long) |151| `Prompt is too long` / `Input is too long for requested model` | [Erreurs de requête](#prompt-is-too-long) |

151| `Prompt is too long · automatic compaction failed:` | [Erreurs de requête](#prompt-is-too-long) |152| `Prompt is too long · automatic compaction failed:` | [Erreurs de requête](#prompt-is-too-long) |


335| `Failed to write the plan approval request to the lead's inbox — plan not submitted` | [Erreurs d'outil](#failed-to-write-to-a-teammate-inbox) |336| `Failed to write the plan approval request to the lead's inbox — plan not submitted` | [Erreurs d'outil](#failed-to-write-to-a-teammate-inbox) |

336| `Its agent definition was not restored: the folder its definition file came from is not trusted` | [Erreurs d'outil](#teammate-agent-definition-not-restored) |337| `Its agent definition was not restored: the folder its definition file came from is not trusted` | [Erreurs d'outil](#teammate-agent-definition-not-restored) |

337| `Only a teammate can approve a shutdown request` | [Erreurs d'outil](#only-a-teammate-can-approve-a-shutdown-request) |338| `Only a teammate can approve a shutdown request` | [Erreurs d'outil](#only-a-teammate-can-approve-a-shutdown-request) |

339| `A command-line deny rule cannot be handed to a teammate intact` | [Erreurs d'outil](#command-line-deny-rule-cannot-be-handed-to-a-teammate) |

338| `Message too large for cross-session delivery` | [Erreurs d'outil](#message-too-large-for-cross-session-delivery) |340| `Message too large for cross-session delivery` | [Erreurs d'outil](#message-too-large-for-cross-session-delivery) |

339| `Too many messages to this session just now` | [Erreurs d'outil](#too-many-messages-to-this-session-just-now) |341| `Too many messages to this session just now` | [Erreurs d'outil](#too-many-messages-to-this-session-just-now) |

340| `Cross-session message was dropped at the recipient session's inbox` | [Erreurs d'outil](#cross-session-message-dropped-at-the-inbox) |342| `Cross-session message was dropped at the recipient session's inbox` | [Erreurs d'outil](#cross-session-message-dropped-at-the-inbox) |


375| `This conversation is already open in another running Claude session` | [Erreurs de session en arrière-plan](#this-session-is-running-in-another-terminal) |377| `This conversation is already open in another running Claude session` | [Erreurs de session en arrière-plan](#this-session-is-running-in-another-terminal) |

376| `This session's saved conversation is no longer on disk` | [Erreurs de session en arrière-plan](#this-sessions-saved-conversation-is-no-longer-on-disk) |378| `This session's saved conversation is no longer on disk` | [Erreurs de session en arrière-plan](#this-sessions-saved-conversation-is-no-longer-on-disk) |

377| `Bypass permissions was requested at launch and ignored` | [Mode bypass permissions ignoré dans une session en arrière-plan](https://code.claude.com/docs/fr/permission-modes.md#bypass-permissions-ignored-in-a-background-session) |379| `Bypass permissions was requested at launch and ignored` | [Mode bypass permissions ignoré dans une session en arrière-plan](https://code.claude.com/docs/fr/permission-modes.md#bypass-permissions-ignored-in-a-background-session) |

378| `kept <id> — its worktree is still at <path>` | [Erreurs de session en arrière-plan](#worktree-has-commits-that-are-not-pushed-anywhere) |380| `kept <id> — its worktree is still at <path>` | [Erreurs de session en arrière-plan](#worktree-has-commits-that-are-not-pushed-anywhere) si la ligne suivante du message mentionne des commits non poussés, sinon [Ce qui est supprimé lors de la suppression d'une session](https://code.claude.com/docs/fr/agent-view.md#what-deleting-a-session-removes) |

379| `kept <id> — <n> unpushed commits on <branch>` | [Erreurs de session en arrière-plan](#worktree-has-commits-that-are-not-pushed-anywhere) |381| `kept <id> — <n> unpushed commits on <branch>` | [Erreurs de session en arrière-plan](#worktree-has-commits-that-are-not-pushed-anywhere) |

380| `kept <id> — worktree has commits that are not pushed anywhere` | [Erreurs de session en arrière-plan](#worktree-has-commits-that-are-not-pushed-anywhere) |382| `kept <id> — worktree has commits that are not pushed anywhere` | [Erreurs de session en arrière-plan](#worktree-has-commits-that-are-not-pushed-anywhere) |

381| `terminal host process died — press Enter to restart` / `This session's terminal host process died` | [Erreurs de session en arrière-plan](#terminal-host-process-died) |383| `terminal host process died — press Enter to restart` / `This session's terminal host process died` | [Erreurs de session en arrière-plan](#terminal-host-process-died) |


2188 2190 

2189### Couldn't send feedback2191### Couldn't send feedback

2190 2192 

2191Un message commençant par `Couldn't send feedback` signifie que le rapport que vous avez soumis à partir de la [boîte de dialogue `/feedback`, `/bug` ou `/share`](https://code.claude.com/docs/fr/commands#all-commands), ou un [brouillon de commentaires](https://code.claude.com/docs/fr/tools-reference.md#sendfeedback-tool-behavior) en file d'attente, n'a pas été envoyé. Lorsqu'une phrase concernant votre organisation suit les deux-points, votre organisation refuse les commentaires et le même rapport obtiendra la même réponse.2193Un message commençant par `Couldn't send feedback` signifie que le service de commentaires n'a pas confirmé le rapport que vous avez soumis à partir de la [boîte de dialogue `/feedback`, `/bug` ou `/share`](https://code.claude.com/docs/fr/commands#all-commands), ou un [brouillon de commentaires](https://code.claude.com/docs/fr/tools-reference.md#sendfeedback-tool-behavior) en file d'attente. Considérez-le comme non reçu. Lorsqu'une phrase concernant votre organisation suit les deux-points, votre organisation refuse les commentaires et le même rapport obtiendra la même réponse.

2192 2194 

2193Le premier de ces deux exemples est une défaillance réseau et le second est un refus de l'organisation :2195Le second de ces deux exemples est un refus de l'organisation :

2194 2196 

2195```text wrap theme={null}2197```text wrap theme={null}

2196Couldn't send feedback (couldn't reach the service). If it keeps failing, you can file at https://github.com/anthropics/claude-code/issues instead.2198Couldn't send feedback (couldn't reach the service). If it keeps failing, you can file at https://github.com/anthropics/claude-code/issues instead.


2203* **Non connecté** : le message continue par `: not signed in. Run /login, then retry.` Exécutez `/login`, puis envoyez à nouveau2205* **Non connecté** : le message continue par `: not signed in. Run /login, then retry.` Exécutez `/login`, puis envoyez à nouveau

2204* **Refus de votre organisation** : par exemple `: Feedback has not been enabled for your organization.` ou `: Feedback collection is not available for organizations with custom data retention policies.` Si le message ajoute `To report a bug, open an issue`, faites-le sur [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues). Un brouillon en file d'attente y reste, et vous pouvez [le supprimer](https://code.claude.com/docs/fr/tools-reference.md#discard-or-keep-a-draft)2206* **Refus de votre organisation** : par exemple `: Feedback has not been enabled for your organization.` ou `: Feedback collection is not available for organizations with custom data retention policies.` Si le message ajoute `To report a bug, open an issue`, faites-le sur [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues). Un brouillon en file d'attente y reste, et vous pouvez [le supprimer](https://code.claude.com/docs/fr/tools-reference.md#discard-or-keep-a-draft)

2205* **Identifiants refusés** : le message continue par `: the sign-in this session uses is not allowed to send feedback` ou `: the server did not accept the credentials this session uses`. Exécutez `/status` à l'invite de Claude Code pour voir quelle connexion, quel jeton ou quelle clé API cette session envoie2207* **Identifiants refusés** : le message continue par `: the sign-in this session uses is not allowed to send feedback` ou `: the server did not accept the credentials this session uses`. Exécutez `/status` à l'invite de Claude Code pour voir quelle connexion, quel jeton ou quelle clé API cette session envoie

2206* **`(request timed out)` ou `(couldn't reach the service)` juste après `Couldn't send feedback`** : il s'agit de défaillances réseau. Envoyez à nouveau le rapport ou le brouillon en file d'attente. La boîte de dialogue conserve votre texte, et le message d'un brouillon en file d'attente indique `The draft is still queued.` Si d'autres requêtes échouent aussi, vérifiez votre connexion réseau et consultez [Impossible de se connecter à l'API](#unable-to-connect-to-api). Si cela continue d'échouer, déposez le rapport sur [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues)2208* **`(request timed out)` ou `(couldn't reach the service)` juste après `Couldn't send feedback`** : envoyez à nouveau le rapport ou le brouillon en file d'attente. La boîte de dialogue conserve votre texte, et le message d'un brouillon en file d'attente indique `The draft is still queued.` Si d'autres requêtes échouent aussi, vérifiez votre connexion réseau et consultez [Impossible de se connecter à l'API](#unable-to-connect-to-api). Si cela continue d'échouer, déposez le rapport sur [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues)

2207* **`(server returned <status>)`, ou aucune raison, juste après `Couldn't send feedback`** : le statut est le code de réponse du service. Le message propre du service le suit lorsqu'il en a envoyé un, comme dans `(server returned 403: Access Forbidden)`. Si cela continue d'échouer, déposez le rapport sur [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues)2209* **`(server returned <status>)`, ou aucune raison, juste après `Couldn't send feedback`** : le statut est le code de réponse du service. Le message propre du service le suit lorsqu'il en a envoyé un, comme dans `(server returned 403: Access Forbidden)`. Si cela continue d'échouer, déposez le rapport sur [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues)

2208 2210 

2209Les issues sur github.com/anthropics/claude-code sont publiques, donc omettez le code, les transcriptions et tout autre élément confidentiel lorsque vous en ouvrez une.2211Les issues sur github.com/anthropics/claude-code sont publiques, donc omettez le code, les transcriptions et tout autre élément confidentiel lorsque vous en ouvrez une.

2210 2212 

2211Avant la v2.1.281, chaque envoi échouait avec ce message une fois qu'un **Stop** Remote Control ou un message urgent entre sessions était arrivé alors que la boîte de dialogue était ouverte. Sur ces versions, fermez la boîte de dialogue, rouvrez-la, et envoyez à nouveau.2213Avant la v2.1.281, chaque envoi échouait avec ce message une fois qu'un **Stop** Remote Control ou un message urgent entre sessions était arrivé alors que la boîte de dialogue était ouverte. Sur ces versions, fermez la boîte de dialogue, rouvrez-la, et envoyez à nouveau.

2212 2214 

2215### Feedback payload too large

2216 

2217Ce message dans l'[écran de révision](https://code.claude.com/docs/fr/tools-reference.md#review-and-edit-a-draft) d'un [brouillon de commentaires](https://code.claude.com/docs/fr/tools-reference.md#sendfeedback-tool-behavior) signifie que Claude Code n'a aucune confirmation que le service a accepté le brouillon. Considérez-le comme non reçu. Le brouillon reste dans votre file d'attente `/feedback`, vous pouvez donc l'envoyer à nouveau.

2218 

2219```text wrap theme={null}

2220Feedback payload too large. Try again without the transcript, or shorten the details.

2221```

2222 

2223**À faire :**

2224 

2225* Dans l'écran de révision, définissez **Send transcript** sur `no`, puis envoyez à nouveau le brouillon. Raccourcir les détails supprime au plus 10 Ko de texte, soit tout ce que les détails d'un brouillon peuvent contenir.

2226 

2213### Connexion au serveur MCP expirée pendant une mise en veille ou un changement d'horloge2227### Connexion au serveur MCP expirée pendant une mise en veille ou un changement d'horloge

2214 2228 

2215Ce message signifie qu'une connexion à un [serveur MCP](https://code.claude.com/docs/fr/mcp.md) a expiré, et que Claude Code a constaté que l'horloge de votre système a avancé brusquement pendant la tentative :2229Ce message signifie qu'une connexion à un [serveur MCP](https://code.claude.com/docs/fr/mcp.md) a expiré, et que Claude Code a constaté que l'horloge de votre système a avancé brusquement pendant la tentative :


3281* **`Error: Workspace not trusted. <folder> is your home directory`** : comme la confiance accordée à votre répertoire personnel n'est jamais enregistrée, exécuter d'abord `claude` à cet endroit ne peut pas aider. Exécutez plutôt `claude ultrareview` depuis un répertoire de projet, après y avoir exécuté `claude` une fois pour accepter la boîte de dialogue de confiance, ou ajoutez `--trust-workspace`.3295* **`Error: Workspace not trusted. <folder> is your home directory`** : comme la confiance accordée à votre répertoire personnel n'est jamais enregistrée, exécuter d'abord `claude` à cet endroit ne peut pas aider. Exécutez plutôt `claude ultrareview` depuis un répertoire de projet, après y avoir exécuté `claude` une fois pour accepter la boîte de dialogue de confiance, ou ajoutez `--trust-workspace`.

3282* **`No answer in time.` suivi de `Error: Workspace not trusted`** : la question `Trust <folder>? [y/N]` est restée sans réponse pendant 5 minutes. Exécutez à nouveau `claude ultrareview` et répondez-y.3296* **`No answer in time.` suivi de `Error: Workspace not trusted`** : la question `Trust <folder>? [y/N]` est restée sans réponse pendant 5 minutes. Exécutez à nouveau `claude ultrareview` et répondez-y.

3283* **`Ultrareview did not start: <folder> is not trusted`** : vous avez refusé à la question `Trust <folder>? [y/N]`, par exemple en répondant `n` ou en appuyant sur Entrée. Pour démarrer la revue, exécutez à nouveau `claude ultrareview` et répondez `y`.3297* **`Ultrareview did not start: <folder> is not trusted`** : vous avez refusé à la question `Trust <folder>? [y/N]`, par exemple en répondant `n` ou en appuyant sur Entrée. Pour démarrer la revue, exécutez à nouveau `claude ultrareview` et répondez `y`.

3284* **``Ultrareview did not start: `--trust-workspace` takes no value``** : autre chose qu'un flag suit `--trust-workspace`, comme un numéro de PR ou `false`. Si vous ne faites pas confiance au dossier, omettez le flag. Pour lui faire confiance pour cette exécution, placez le numéro de PR ou la branche de base avant le flag : `claude ultrareview 1234 --trust-workspace`.3298* **``Ultrareview did not start: `--trust-workspace` takes no value``** : quelque chose d'autre qu'un flag suit `--trust-workspace`, comme un numéro de PR ou `false`. Si vous ne faites pas confiance au dossier, omettez le flag. Pour lui faire confiance pour cette exécution, placez le numéro de PR ou la branche de base avant le flag : `claude ultrareview 1234 --trust-workspace`.

3285 3299 

3286Avant la v2.1.309, `claude ultrareview` n'acceptait pas `--trust-workspace`.3300Avant la v2.1.309, `claude ultrareview` n'acceptait pas `--trust-workspace`.

3287 3301 


3476 3490 

3477### MCP server rejected the elicitation capability3491### MCP server rejected the elicitation capability

3478 3492 

3479Un serveur MCP construit sur Java MCP SDK 0.11.0 à 0.17.0 a refusé la connexion. Ces versions du SDK ne peuvent pas analyser les [modes d'élicitation](https://code.claude.com/docs/fr/mcp.md#elicitation-modes-claude-code-declares) `form` et `url` que Claude Code déclare lors de son handshake. `claude mcp list` affiche le serveur en échec avec ce message à la place de l'erreur propre au serveur :3493Un serveur MCP construit sur Java MCP SDK 0.11.0 à 0.17.0 a refusé la connexion. Ces versions du SDK ne peuvent pas analyser les [modes d'elicitation](https://code.claude.com/docs/fr/mcp.md#elicitation-modes-claude-code-declares) `form` et `url` que Claude Code déclare lors de son handshake. Le message indique :

3480 3494 

3481```text theme={null}3495```text theme={null}

3482This server (Java MCP SDK 0.17.0 or older) rejected Claude Code's elicitation capability. Set "bareElicitationCapability": true for it, or upgrade to Java MCP SDK 0.17.1+ (Spring AI 1.0.7+ or 1.1.6+).3496This server (Java MCP SDK 0.17.0 or older) rejected Claude Code's elicitation capability. Set "bareElicitationCapability": true for it, or upgrade to Java MCP SDK 0.17.1+ (Spring AI 1.0.7+ or 1.1.6+).


3573 3587 

3574Des messages voisins se déclenchent avant même l'exécution de la commande :3588Des messages voisins se déclenchent avant même l'exécution de la commande :

3575 3589 

3576* `Shell command permission check failed for pattern "..."` : la vérification de permission de la commande ne l'a pas autorisée. [Vérifications de permission sur les commandes injectées](https://code.claude.com/docs/fr/skills.md#permission-checks-on-injected-commands) décrit quels résultats interrompent l'exécution dans chaque mode de permission et comment pré-approuver une commande avec `allowed-tools`3590* `Shell command permission check failed for pattern "..."` : la vérification de permission de la commande ne l'a pas autorisée. [Vérifications de permission sur les commandes injectées](https://code.claude.com/docs/fr/skills.md#permission-checks-on-injected-commands) explique quels résultats entraînent une interruption dans chaque mode de permission et comment pré-approuver une commande avec `allowed-tools`

3577* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found`` : le frontmatter du skill exige bash sur une machine qui n'en dispose pas. Installez Git for Windows ou remplacez le frontmatter par `shell: powershell`. Consultez [Comment s'exécutent les commandes injectées](https://code.claude.com/docs/fr/skills.md#how-injected-commands-run)3591* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found`` : le frontmatter du skill exige bash sur une machine qui ne l'a pas. Installez Git for Windows ou remplacez le frontmatter par `shell: powershell`. Consultez [Comment s'exécutent les commandes injectées](https://code.claude.com/docs/fr/skills.md#how-injected-commands-run)

3578* `No shell command in <name> was run` : l'une des commandes `!` du fichier contient un caractère de contrôle brut autre qu'une tabulation ou un saut de ligne, donc aucune d'elles ne s'exécute. Consultez [comment trouver et supprimer le caractère](#no-shell-command-was-run)3592* `No shell command in <name> was run` : l'une des commandes `!` du fichier contient un caractère de contrôle brut autre qu'une tabulation ou un saut de ligne, donc aucune d'elles ne s'exécute. Consultez [comment trouver et supprimer le caractère](#no-shell-command-was-run)

3579 3593 

3580**Que faire :**3594**Que faire :**


3725 3739 

3726* **Vous n'avez pas passé de branche de base** : Claude Code a effectué la comparaison avec la branche par défaut du dépôt et suggère de passer explicitement votre branche de base, comme dans l'exemple ci-dessus3740* **Vous n'avez pas passé de branche de base** : Claude Code a effectué la comparaison avec la branche par défaut du dépôt et suggère de passer explicitement votre branche de base, comme dans l'exemple ci-dessus

3727* **Vous avez passé une branche de base déjà présente dans votre clone** : l'indication est ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``3741* **Vous avez passé une branche de base déjà présente dans votre clone** : l'indication est ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``

3728* **Vous avez passé une branche de base absente de votre clone** : Claude Code l'a récupérée depuis origin avant la comparaison. L'indication est ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)`` ; lorsque Claude Code ne peut pas déterminer si votre clone est superficiel, il suggère plutôt `git fetch --unshallow origin`. Avant la v2.1.221, l'indication suggérait `git fetch --unshallow origin` pour chaque branche de base récupérée, et sur un clone complet cette commande échoue avec `fatal: --unshallow on a complete repository does not make sense`.3742* **Vous avez passé une branche de base absente de votre clone** : Claude Code l'a récupérée depuis origin avant la comparaison. L'indication est ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)`` ; lorsque Claude Code ne peut pas déterminer si votre clone est superficiel (shallow), il suggère plutôt `git fetch --unshallow origin`. Avant la v2.1.221, l'indication suggérait `git fetch --unshallow origin` pour toute branche de base récupérée, et sur un clone complet cette commande échoue avec `fatal: --unshallow on a complete repository does not make sense`.

3729 3743 

3730**Que faire :**3744**Que faire :**

3731 3745 


4678* Si le coéquipier est toujours en cours d'exécution, demandez au responsable, à son invite, d'arrêter le coéquipier, par exemple `Ask the researcher teammate to shut down`. Consultez [Arrêter les coéquipiers](https://code.claude.com/docs/fr/agent-teams.md#shut-down-teammates).4692* Si le coéquipier est toujours en cours d'exécution, demandez au responsable, à son invite, d'arrêter le coéquipier, par exemple `Ask the researcher teammate to shut down`. Consultez [Arrêter les coéquipiers](https://code.claude.com/docs/fr/agent-teams.md#shut-down-teammates).

4679* Si un ancien coéquipier que vous avez vous-même repris avec `claude --resume` a reçu ce refus, rien n'a été envoyé. Pour terminer cette session, exécutez `/exit` à son invite.4693* Si un ancien coéquipier que vous avez vous-même repris avec `claude --resume` a reçu ce refus, rien n'a été envoyé. Pour terminer cette session, exécutez `/exit` à son invite.

4680 4694 

4695### A command-line deny rule cannot be handed to a teammate intact

4696 

4697Ce message signifie que Claude Code n'a pas démarré de coéquipier en [volet divisé](https://code.claude.com/docs/fr/agent-teams.md#choose-a-display-mode) dans votre [équipe d'agents](https://code.claude.com/docs/fr/agent-teams.md). Claude Code transmet les règles de refus de ligne de commande du responsable à un coéquipier en volet divisé via la propre ligne de commande du coéquipier, et s'arrête lorsque le coéquipier interpréterait l'une d'elles différemment :

4698 

4699```text wrap theme={null}

4700A command-line deny rule cannot be handed to a teammate intact, so the teammate would not enforce it — spawn aborted

4701```

4702 

4703**Que faire :**

4704 

4705* Exécutez `/config` dans la session du responsable et définissez **Teammate mode** sur `in-process`, puis demandez à Claude de démarrer à nouveau le coéquipier. Vous n'avez pas besoin de trouver la règle ni de redémarrer le responsable. Un coéquipier in-process [s'exécute sous les règles de refus actives du responsable](https://code.claude.com/docs/fr/agent-teams.md#permissions).

4706* Les sessions ultérieures qui tirent [`teammateMode`](https://code.claude.com/docs/fr/settings-reference#teammatemode) de vos paramètres utilisateur démarrent également les coéquipiers in-process, car `/config` y enregistre ce choix. Pour revenir aux volets divisés dans une session ultérieure, définissez **Teammate mode** sur `auto`, `tmux` ou `iterm2`, selon ce que vous utilisiez auparavant.

4707 

4681### Message too large for cross-session delivery4708### Message too large for cross-session delivery

4682 4709 

4683Le [message inter-sessions](https://code.claude.com/docs/fr/cross-session-messaging.md) de Claude à une autre de vos sessions sur cette machine était trop long à envoyer. Claude Code l'a refusé, et la session de réception n'a rien reçu. Le refus apparaît dans le résultat de l'outil de la session d'envoi, pas comme une bannière dans votre terminal. Il nomme les deux tailles et comment faire tenir le message :4710Le [message inter-sessions](https://code.claude.com/docs/fr/cross-session-messaging.md) de Claude à une autre de vos sessions sur cette machine était trop long à envoyer. Claude Code l'a refusé, et la session de réception n'a rien reçu. Le refus apparaît dans le résultat de l'outil de la session d'envoi, pas comme une bannière dans votre terminal. Il nomme les deux tailles et comment faire tenir le message :


5115**Ce qu'il faut faire :**5142**Ce qu'il faut faire :**

5116 5143 

5117* Pour conserver les commits, poussez la branche du worktree, ou fusionnez-la dans la branche par défaut extraite dans votre checkout principal, puis supprimez la session à nouveau5144* Pour conserver les commits, poussez la branche du worktree, ou fusionnez-la dans la branche par défaut extraite dans votre checkout principal, puis supprimez la session à nouveau

5118* Pour abandonner les commits, exécutez la commande `claude rm <id> --discard-unpushed` que le message a imprimée, ou appuyez deux fois sur `Ctrl+X` sur la ligne de la session dans la vue agent à nouveau. Cela supprime la session et le worktree ainsi que sa branche, les commits non poussés et les modifications non commitées. Si le worktree a gagné un commit depuis le refus, Claude Code le conserve à nouveau et affiche l'état mis à jour5145* Pour abandonner les commits, exécutez la commande `claude rm <id> --discard-unpushed` que le message a imprimée, ou appuyez deux fois sur `Ctrl+X` sur la ligne de la session dans la vue agent à nouveau. Cela supprime la session et le worktree ainsi que sa branche, les commits non poussés et les modifications non commitées. Si la suppression est de nouveau refusée, suivez le nouveau message.

5119* Lorsque le message dit que le worktree est également enregistré par une autre session terminée, la suppression à nouveau ne le supprime pas : poussez les commits, puis supprimez la session à nouveau5146* Lorsque le message dit que le worktree est également enregistré par une autre session terminée, la suppression à nouveau ne le supprime pas : poussez les commits, puis supprimez la session à nouveau

5120 5147 

5121Avant v2.1.268, `claude rm` mettait le résumé du commit sur la ligne `kept` elle-même. Lorsque `claude rm` ne pouvait pas résumer les commits, la ligne `kept` indiquait `worktree has commits that are not pushed anywhere` à la place du résumé.5148Avant v2.1.268, `claude rm` mettait le résumé du commit sur la ligne `kept` elle-même. Lorsque `claude rm` ne pouvait pas résumer les commits, la ligne `kept` indiquait `worktree has commits that are not pushed anywhere` à la place du résumé.

5122 5149 

5123Avant v2.1.260, le message ne nommait pas la branche ou les commits, et la suppression à nouveau était refusée de la même manière : supprimer la session sans pousser signifiait supprimer le worktree vous-même avec `git worktree remove --force <path>`, puis exécuter `claude rm <id>` à nouveau.5150Avant v2.1.260, le message ne nommait pas la branche ou les commits, et il n'existait aucun moyen de les abandonner. Vous pouvez tout de même supprimer la session, en perdant les modifications non commitées mais en conservant la branche et les commits. Exécutez `git worktree remove --force --force <path>` avec le chemin que le refus a imprimé, puis `claude rm <id>`. Git a besoin de `--force` deux fois pour un worktree verrouillé.

5124 5151 

5125Avant v2.1.248, la branche par défaut extraite dans votre checkout principal ne comptait pas : une branche que vous aviez déjà fusionnée là-bas déclenchait toujours ce refus jusqu'à ce que ses commits atteignent un dépôt distant.5152Avant v2.1.248, la branche par défaut extraite dans votre checkout principal ne comptait pas : une branche que vous aviez déjà fusionnée là-bas déclenchait toujours ce refus jusqu'à ce que ses commits atteignent un dépôt distant.

5126 5153 

fast-mode.md +2 −2

Details

45* Une petite icône `↯` apparaît à côté de l'invite pendant que le mode rapide est actif45* Une petite icône `↯` apparaît à côté de l'invite pendant que le mode rapide est actif

46* Exécutez `/fast` à nouveau à tout moment pour vérifier si le mode rapide est activé ou désactivé46* Exécutez `/fast` à nouveau à tout moment pour vérifier si le mode rapide est activé ou désactivé

47 47 

48Opus 5.5 est le mode rapide par défaut dans Claude Code v2.1.280 et ultérieur. Avant v2.1.280, le mode rapide utilisait par défaut Opus 5 à partir de v2.1.219, et Opus 4.8 sur v2.1.154 à v2.1.218.48Opus 5.5 est le mode rapide par défaut dans Claude Code v2.1.280 et ultérieur. Avant v2.1.280, le mode rapide utilisait par défaut Opus 5 à partir de v2.1.219.

49 49 

50Quand vous désactivez le mode rapide avec `/fast` à nouveau, vous restez sur Opus. Pour basculer vers un modèle différent, utilisez `/model`.50Quand vous désactivez le mode rapide avec `/fast` à nouveau, vous restez sur Opus. Pour basculer vers un modèle différent, utilisez `/model`.

51 51 


58 58 

59Chaque fois qu'un changement de modèle active ou désactive le mode rapide, Claude Code affiche une confirmation « Mode rapide ACTIVÉ » ou « Mode rapide DÉSACTIVÉ », et l'icône `↯` apparaît pendant que le mode rapide est activé. Cela s'applique que vous basculiez avec `/model`, avec [`/config model=<model>`](https://code.claude.com/docs/fr/settings), ou depuis un appareil connecté via [Contrôle à distance](https://code.claude.com/docs/fr/remote-control.md).59Chaque fois qu'un changement de modèle active ou désactive le mode rapide, Claude Code affiche une confirmation « Mode rapide ACTIVÉ » ou « Mode rapide DÉSACTIVÉ », et l'icône `↯` apparaît pendant que le mode rapide est activé. Cela s'applique que vous basculiez avec `/model`, avec [`/config model=<model>`](https://code.claude.com/docs/fr/settings), ou depuis un appareil connecté via [Contrôle à distance](https://code.claude.com/docs/fr/remote-control.md).

60 60 

61Claude Code renvoie l'état du mode rapide de la session aux appareils connectés via Contrôle à distance après un changement de modèle, une reconnexion, ou une [vérification de disponibilité](#use-fast-mode-behind-proxies-and-llm-gateways) échouée.61Claude Code renvoie l'état du mode rapide de la session aux appareils connectés via Remote Control après un changement de modèle, une reconnexion, ou une [vérification de disponibilité](#use-fast-mode-behind-proxies-and-llm-gateways) échouée.

62 62 

63### Utiliser le mode rapide dans les sessions cloud63### Utiliser le mode rapide dans les sessions cloud

64 64 

glossary.md +1 −1

Details

373 373 

374Comment une session sait que le travail est réellement terminé au lieu d'accepter un résultat qui semble plausible. Vous donnez à Claude une vérification qu'il peut exécuter, comme une suite de tests, un build ou une comparaison de captures d'écran, et Claude itère jusqu'à ce que la vérification réussisse au lieu de s'arrêter après une tentative. Une boucle de vérification est le prérequis pour [`/goal`](https://code.claude.com/docs/fr/goal), les exécutions sans surveillance et les [workflows dynamiques](https://code.claude.com/docs/fr/workflows.md) : sans elle, la seule chose qui décide que l'agent a terminé est l'agent lui-même.374Comment une session sait que le travail est réellement terminé au lieu d'accepter un résultat qui semble plausible. Vous donnez à Claude une vérification qu'il peut exécuter, comme une suite de tests, un build ou une comparaison de captures d'écran, et Claude itère jusqu'à ce que la vérification réussisse au lieu de s'arrêter après une tentative. Une boucle de vérification est le prérequis pour [`/goal`](https://code.claude.com/docs/fr/goal), les exécutions sans surveillance et les [workflows dynamiques](https://code.claude.com/docs/fr/workflows.md) : sans elle, la seule chose qui décide que l'agent a terminé est l'agent lui-même.

375 375 

376En savoir plus : [Donnez à Claude un moyen de vérifier son travail](https://code.claude.com/docs/fr/best-practices.md#give-claude-a-way-to-verify-its-work)376En savoir plus : [Donnez à Claude une vérification à exécuter](https://code.claude.com/docs/fr/best-practices.md#give-claude-a-check-to-run)

377 377 

378## W378## W

379 379 

Details

166| Modèle principal | `claude-opus-5-5` |166| Modèle principal | `claude-opus-5-5` |

167| Modèle petit/rapide | `claude-sonnet-4-5@20250929` |167| Modèle petit/rapide | `claude-sonnet-4-5@20250929` |

168 168 

169Avant v2.1.280, le modèle principal sur Google Cloud's Agent Platform était par défaut Opus 5 et l'alias `opus` se résolvait à Opus 5 à partir de v2.1.219.

170 

169Les tâches en arrière-plan telles que la génération de titre de session utilisent le modèle petit/rapide, normalement un modèle de classe Haiku. Sur Google Cloud's Agent Platform, Claude Code utilise le modèle Sonnet par défaut pour les tâches en arrière-plan car Haiku peut ne pas être activé dans tous les projets ou régions. Deux sélections changent le modèle qui les exécute :171Les tâches en arrière-plan telles que la génération de titre de session utilisent le modèle petit/rapide, normalement un modèle de classe Haiku. Sur Google Cloud's Agent Platform, Claude Code utilise le modèle Sonnet par défaut pour les tâches en arrière-plan car Haiku peut ne pas être activé dans tous les projets ou régions. Deux sélections changent le modèle qui les exécute :

170 172 

171* Lorsque vous sélectionnez un modèle principal avec `--model`, `ANTHROPIC_MODEL`, ou le paramètre `model`, les tâches en arrière-plan utilisent ce modèle. Lorsque Claude Code démarre la session sur le modèle que vous définissez avec [`ANTHROPIC_DEFAULT_MODEL`](https://code.claude.com/docs/fr/model-config#set-a-default-model-for-new-sessions), les tâches en arrière-plan utilisent ce modèle aussi. Définir `ANTHROPIC_DEFAULT_OPUS_MODEL` sans `ANTHROPIC_DEFAULT_SONNET_MODEL` compte également comme une sélection, car le modèle Sonnet intégré peut ne pas être activé dans un projet qui oriente son propre Opus.173* Lorsque vous sélectionnez un modèle principal avec `--model`, `ANTHROPIC_MODEL`, ou le paramètre `model`, les tâches en arrière-plan utilisent ce modèle. Lorsque Claude Code démarre la session sur le modèle que vous définissez avec [`ANTHROPIC_DEFAULT_MODEL`](https://code.claude.com/docs/fr/model-config#set-a-default-model-for-new-sessions), les tâches en arrière-plan utilisent ce modèle aussi. Définir `ANTHROPIC_DEFAULT_OPUS_MODEL` sans `ANTHROPIC_DEFAULT_SONNET_MODEL` compte également comme une sélection, car le modèle Sonnet intégré peut ne pas être activé dans un projet qui oriente son propre Opus.


175>177>

176> Les modèles Opus ont un prix par token plus élevé que les modèles Sonnet, donc si vous n'épinglez pas de modèle principal, vous êtes facturé au taux Opus. Pour utiliser Sonnet 4.5 comme modèle principal, définissez `ANTHROPIC_MODEL` sur son ID de modèle complet. Un déploiement qui oriente la valeur par défaut avec `ANTHROPIC_DEFAULT_SONNET_MODEL` et ne définit pas `ANTHROPIC_DEFAULT_OPUS_MODEL` conserve son modèle Sonnet orienté comme valeur par défaut.178> Les modèles Opus ont un prix par token plus élevé que les modèles Sonnet, donc si vous n'épinglez pas de modèle principal, vous êtes facturé au taux Opus. Pour utiliser Sonnet 4.5 comme modèle principal, définissez `ANTHROPIC_MODEL` sur son ID de modèle complet. Un déploiement qui oriente la valeur par défaut avec `ANTHROPIC_DEFAULT_SONNET_MODEL` et ne définit pas `ANTHROPIC_DEFAULT_OPUS_MODEL` conserve son modèle Sonnet orienté comme valeur par défaut.

177 179 

178Avant v2.1.280, le modèle principal sur Google Cloud's Agent Platform était par défaut Opus 5 et l'alias `opus` se résolvait à Opus 5 à partir de v2.1.219. Sur v2.1.207 à v2.1.218, le modèle principal sur Google Cloud's Agent Platform était par défaut Opus 4.8 et l'alias `opus` se résolvait à Opus 4.8.

179 

180Pour personnaliser davantage les modèles :180Pour personnaliser davantage les modèles :

181 181 

182```bash theme={null}182```bash theme={null}

headless.md +4 −3

Details

236 236 

237Si certains de ces messages manquent dans votre flux, comparez votre version de Claude Code à ces versions minimales :237Si certains de ces messages manquent dans votre flux, comparez votre version de Claude Code à ces versions minimales :

238 238 

239* **Transfert à chaque profondeur d'imbrication** : v2.1.219 ou ultérieur

240* **Un skill dupliqué que Claude démarre avec l'outil Skill depuis la conversation principale** : v2.1.86 ou ultérieur pour ses blocs `tool_use` et `tool_result`, et v2.1.265 ou ultérieur pour son premier message `user` et ses blocs de texte et de réflexion239* **Un skill dupliqué que Claude démarre avec l'outil Skill depuis la conversation principale** : v2.1.86 ou ultérieur pour ses blocs `tool_use` et `tool_result`, et v2.1.265 ou ultérieur pour son premier message `user` et ses blocs de texte et de réflexion

241* **Messages des sous-agents qu'un skill dupliqué génère, et des skills dupliqués démarrés à l'intérieur d'un sous-agent ou d'un autre skill dupliqué** : v2.1.275 ou ultérieur240* **Messages des sous-agents qu'un skill dupliqué génère, et des skills dupliqués démarrés à l'intérieur d'un sous-agent ou d'un autre skill dupliqué** : v2.1.275 ou ultérieur

242* **Messages d'un skill dupliqué que vous démarrez en passant `/<skill-name>` comme prompt** : v2.1.287 ou ultérieur241* **Messages d'un skill dupliqué que vous démarrez en passant `/<skill-name>` comme prompt** : v2.1.287 ou ultérieur


285| Champ | Type | Description |284| Champ | Type | Description |

286| - | - | - |285| - | - | - |

287| `mcp_servers` | tableau | serveurs MCP dans la session, chacun avec `name` et `status` |286| `mcp_servers` | tableau | serveurs MCP dans la session, chacun avec `name` et `status` |

288| `mcp_server_errors` | tableau | entrées `--mcp-config` ignorées par la validation de configuration, chacune avec `name`, `type` et `message`. `type` est une catégorie d'entrée ignorée telle que `unknown_type`, `url_missing_type`, `invalid_config` ou `reserved_name` ; traitez les valeurs que vous ne reconnaissez pas comme un cas générique d'entrée ignorée. Les serveurs affectés sont absents de `mcp_servers`. La clé est omise lorsqu'il n'y a pas d'erreurs, donc une porte CI peut échouer sur un tableau non vide. Nécessite Claude Code v2.1.219 ou ultérieur |287| `mcp_server_errors` | tableau | entrées `--mcp-config` ignorées par la validation de configuration, chacune avec `name`, `type` et `message`. `type` est une catégorie d'entrée ignorée telle que `unknown_type`, `url_missing_type`, `invalid_config` ou `reserved_name` ; traitez les valeurs que vous ne reconnaissez pas comme un cas générique d'entrée ignorée. Les serveurs affectés sont absents de `mcp_servers`. La clé est omise lorsqu'il n'y a pas d'erreurs, donc une porte CI peut échouer sur un tableau non vide |

289 288 

290Lorsque vous exécutez la commande à la main dans un terminal, Claude Code imprime également un avertissement de démarrage sur stderr, tel que `Warning: 1 MCP server skipped due to invalid config:`, suivi de la raison de chaque entrée ignorée. Lorsque vous redirigez stderr, ou lorsqu'un programme tel qu'un exécuteur CI ou un hôte SDK le capture, Claude Code n'imprime aucun avertissement et rapporte les entrées ignorées uniquement dans le champ `mcp_server_errors`. L'avertissement nécessite Claude Code v2.1.219 ou ultérieur.289Lorsque vous exécutez la commande à la main dans un terminal, Claude Code imprime également un avertissement de démarrage sur stderr, tel que `Warning: 1 MCP server skipped due to invalid config:`, suivi de la raison de chaque entrée ignorée.

290 

291Lorsque vous redirigez stderr, ou lorsqu'un programme tel qu'un exécuteur CI ou un hôte SDK le capture, Claude Code n'imprime aucun avertissement. Il rapporte les entrées ignorées uniquement dans le champ `mcp_server_errors`.

291 292 

292#### Suivre les installations de plugins293#### Suivre les installations de plugins

293 294 

hooks.md +5 −9

Details

679 679 

680Les hooks de frontmatter dans un skill de projet suivent la même [règle de confiance de l'espace de travail que les hooks dans les fichiers de paramètres](#workspace-trust). Claude Code les enregistre lorsque vous ou Claude invoquez le skill, y compris dans une exécution `-p` dans un dossier que vous n'avez pas approuvé.680Les hooks de frontmatter dans un skill de projet suivent la même [règle de confiance de l'espace de travail que les hooks dans les fichiers de paramètres](#workspace-trust). Claude Code les enregistre lorsque vous ou Claude invoquez le skill, y compris dans une exécution `-p` dans un dossier que vous n'avez pas approuvé.

681 681 

682Les hooks de frontmatter dans un subagent de projet s'exécutent uniquement après que vous acceptiez le [dialogue de confiance de l'espace de travail](https://code.claude.com/docs/fr/permissions.md#project-allow-rules-and-workspace-trust) pour le dossier d'où provient le fichier de l'agent. Une session `-p` ne compte pas comme l'accepter. [Ce qui s'exécute avant que vous approuviez un dossier](https://code.claude.com/docs/fr/permissions.md#what-runs-before-you-trust-a-folder) compare cela avec la règle du fichier de paramètres, et la page des subagents liste [quels scopes sont exempts](https://code.claude.com/docs/fr/sub-agents.md#hooks-in-subagent-frontmatter). Avant v2.1.218, ces hooks pouvaient s'exécuter à partir de dossiers que vous n'aviez pas approuvés.682Les hooks de frontmatter dans un sous-agent de projet s'exécutent uniquement après que vous acceptiez le [dialogue de confiance de l'espace de travail](https://code.claude.com/docs/fr/permissions.md#project-allow-rules-and-workspace-trust) pour le dossier d'où provient le fichier de l'agent. Une session `-p` ne compte pas comme l'accepter. [Ce qui s'exécute avant que vous approuviez un dossier](https://code.claude.com/docs/fr/permissions.md#what-runs-before-you-trust-a-folder) compare cela avec la règle du fichier de paramètres, et la page des sous-agents liste [quelles portées sont exemptées](https://code.claude.com/docs/fr/sub-agents.md#hooks-in-subagent-frontmatter).

683 683 

684#### Limites des hooks de skill684#### Limites des hooks de skill

685 685 


3196* **Hooks de commande** (`type: "command"`) : affichez le chemin sur la dernière ligne non vide de stdout. Claude Code supprime les codes d'échappement ANSI avant de lire cette ligne, de sorte que les bannières de démarrage du shell affichées avant votre `echo` sont ignorées. Redirigez toute autre sortie du hook vers stderr.3196* **Hooks de commande** (`type: "command"`) : affichez le chemin sur la dernière ligne non vide de stdout. Claude Code supprime les codes d'échappement ANSI avant de lire cette ligne, de sorte que les bannières de démarrage du shell affichées avant votre `echo` sont ignorées. Redirigez toute autre sortie du hook vers stderr.

3197* **Hooks HTTP** (`type: "http"`) : renvoyez `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` dans le corps de la réponse.3197* **Hooks HTTP** (`type: "http"`) : renvoyez `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` dans le corps de la réponse.

3198 3198 

3199Si le hook échoue ou ne produit aucun chemin, la création du worktree échoue avec une erreur.3199Si le hook échoue ou ne produit aucun chemin, la création du worktree échoue avec une erreur. Claude Code résout un chemin relatif par rapport au répertoire dans lequel le hook s'est exécuté, en réduisant tous les segments `.` ou `..` qu'il contient. Si le chemin obtenu n'est pas un répertoire dans lequel Claude Code peut entrer, la session affiche une erreur indiquant le chemin et se termine avec le code 1.

3200 3200 

3201Claude Code résout un chemin relatif par rapport au répertoire dans lequel le hook s'est exécuté, en réduisant les éventuels segments `.` ou `..`. Si le chemin obtenu n'est pas un répertoire dans lequel Claude Code peut entrer, la session affiche une erreur indiquant le chemin et se termine avec le code 1.3201Claude Code refuse un chemin absolu contenant des segments `.` ou `..`, ainsi que tout chemin qui passe par un lien symbolique situé sous la racine du dépôt. L'erreur indique le composant rejeté. Un lien symbolique commité dans le dépôt pourrait rediriger le worktree hors de celui-ci. Renvoyez un chemin normalisé qui ne passe par aucun lien symbolique à l'intérieur du dépôt.

3202 

3203Claude Code refuse un chemin absolu contenant des segments `.` ou `..`, ainsi que tout chemin qui passe par un lien symbolique situé sous la racine du dépôt, car un lien symbolique commité dans le dépôt pourrait rediriger le worktree hors de celui-ci. L'erreur indique le composant rejeté. Renvoyez un chemin normalisé qui ne passe pas par un lien symbolique à l'intérieur du dépôt. Avant la v2.1.216, la création du worktree suivait le chemin du hook sans ce contrôle.

3204 3202 

3205### WorktreeRemove3203### WorktreeRemove

3206 3204 


3228* **Le hook se termine avec le code 0** : le worktree est considéré comme supprimé. Claude Code ne lit rien d'autre du hook ; assurez-vous donc que votre hook a bien supprimé le répertoire.3226* **Le hook se termine avec le code 0** : le worktree est considéré comme supprimé. Claude Code ne lit rien d'autre du hook ; assurez-vous donc que votre hook a bien supprimé le répertoire.

3229* **Le hook se termine avec un code non nul** : la suppression échoue si le répertoire situé à `worktree_path` existe encore ensuite, et le worktree reste sur le disque sans solution de repli git. Un hook qui a supprimé le répertoire avant de se terminer avec un code non nul est considéré comme ayant supprimé le worktree. Pour savoir comment l'échec est signalé, consultez [Entrée WorktreeRemove](#worktreeremove-input).3227* **Le hook se termine avec un code non nul** : la suppression échoue si le répertoire situé à `worktree_path` existe encore ensuite, et le worktree reste sur le disque sans solution de repli git. Un hook qui a supprimé le répertoire avant de se terminer avec un code non nul est considéré comme ayant supprimé le worktree. Pour savoir comment l'échec est signalé, consultez [Entrée WorktreeRemove](#worktreeremove-input).

3230 3228 

3231Claude Code ne supprime jamais une branche appartenant à un worktree créé par un hook, car il ne connaît que le chemin renvoyé par votre hook WorktreeCreate. Si votre hook WorktreeCreate crée une branche, supprimez-la dans votre hook WorktreeRemove.3229Claude Code ne supprime jamais une branche appartenant à un worktree créé par un hook, car il ne connaît que le chemin renvoyé par votre hook WorktreeCreate. Si votre hook WorktreeCreate crée une branche, supprimez-la dans votre hook WorktreeRemove. Claude Code ignore les [champs de sortie JSON](#json-output) d'un hook WorktreeRemove, tels que `systemMessage` et `continue`.

3232 

3233Claude Code ignore les [champs de sortie JSON](#json-output) d'un hook WorktreeRemove, comme `systemMessage` et `continue`.

3234 3230 

3235Pour la suppression d'une session en arrière-plan, Claude Code vérifie le chemin du worktree enregistré avant d'exécuter le hook et refuse un chemin qui est un lien symbolique ou qui passe par un lien symbolique situé sous la racine du dépôt. Sur ce chemin, le hook s'exécute pour un worktree qui contient encore des fichiers uniquement lorsque vous confirmez la suppression dans la [vue agent](https://code.claude.com/docs/fr/agent-view.md#what-deleting-a-session-removes) ; pour un tel worktree, [`claude rm`](https://code.claude.com/docs/fr/agent-view#manage-sessions-from-the-shell) conserve plutôt la session et le worktree. Avant la v2.1.216, le hook s'exécutait sur le chemin enregistré sans ces vérifications.3231Pour la suppression d'une session en arrière-plan, Claude Code vérifie le chemin du worktree enregistré avant d'exécuter le hook, en refusant un chemin qui est un lien symbolique ou qui passe par un lien symbolique sous la racine du dépôt. Dans ce cas, le hook ne s'exécute pour un worktree contenant encore des fichiers que lorsque vous confirmez la suppression dans la [vue agent](https://code.claude.com/docs/fr/agent-view.md#what-deleting-a-session-removes). Pour un tel worktree, [`claude rm`](https://code.claude.com/docs/fr/agent-view#manage-sessions-from-the-shell) conserve plutôt la session et le worktree.

3236 3232 

3237Claude Code transmet le chemin renvoyé par WorktreeCreate sous la forme `worktree_path` dans l'entrée du hook. Cet exemple lit ce chemin et supprime le répertoire :3233Claude Code transmet le chemin renvoyé par WorktreeCreate sous la forme `worktree_path` dans l'entrée du hook. Cet exemple lit ce chemin et supprime le répertoire :

3238 3234 

Details

174 174 

175## Travailler efficacement avec Claude Code175## Travailler efficacement avec Claude Code

176 176 

177Ces conseils vous aident à obtenir de meilleurs résultats avec Claude Code. Pour plus d'informations sur les prompts spécifiques, la vérification et la planification, consultez [Bonnes pratiques](https://code.claude.com/docs/fr/best-practices.md).177Ces conseils vous aident à obtenir de meilleurs résultats avec Claude Code. Pour plus d'informations sur les prompts spécifiques, la vérification et les règles qu'il vaut mieux imposer plutôt que de les demander dans un prompt, consultez [Bonnes pratiques](https://code.claude.com/docs/fr/best-practices.md).

178 178 

179### Demander de l'aide à Claude Code179### Demander de l'aide à Claude Code

180 180 

Details

92| `/` au début | Commande ou compétence | Consultez [commandes](#commands) et [compétences](https://code.claude.com/docs/fr/skills.md) |92| `/` au début | Commande ou compétence | Consultez [commandes](#commands) et [compétences](https://code.claude.com/docs/fr/skills.md) |

93| `!` au début | Mode shell | Exécutez une commande directement, ajoutez sa sortie à la session et demandez à Claude d'y répondre |93| `!` au début | Mode shell | Exécutez une commande directement, ajoutez sa sortie à la session et demandez à Claude d'y répondre |

94| `@` | Mention de chemin de fichier | Déclenchez l'autocomplétion du chemin de fichier. Dans les sessions avec [messagerie entre sessions](https://code.claude.com/docs/fr/cross-session-messaging.md#message-another-session), lorsque vous tapez au moins une lettre après le `@`, Claude Code suggère également vos autres sessions actives sur cette machine, pour que vous puissiez dire à Claude de messager celle que vous choisissez. Nécessite Claude Code v2.1.232 ou version ultérieure |94| `@` | Mention de chemin de fichier | Déclenchez l'autocomplétion du chemin de fichier. Dans les sessions avec [messagerie entre sessions](https://code.claude.com/docs/fr/cross-session-messaging.md#message-another-session), lorsque vous tapez au moins une lettre après le `@`, Claude Code suggère également vos autres sessions actives sur cette machine, pour que vous puissiez dire à Claude de messager celle que vous choisissez. Nécessite Claude Code v2.1.232 ou version ultérieure |

95| `:` | Code d'emoji | Tapez un `:name:` complet pour insérer l'emoji, ou deux caractères ou plus pour les suggestions. Consultez [Codes d'emoji](#emoji-shortcodes). Nécessite Claude Code v2.1.217 ou version ultérieure |95| `:` | Code d'emoji | Tapez un `:name:` complet pour insérer l'emoji, ou deux caractères ou plus pour les suggestions. Consultez [Codes d'emoji](#emoji-shortcodes) |

96| `?` sur entrée vide | Basculer le panneau d'aide des raccourcis | Taper `?` lorsque l'entrée contient déjà du texte insère le caractère |96| `?` sur entrée vide | Basculer le panneau d'aide des raccourcis | Taper `?` lorsque l'entrée contient déjà du texte insère le caractère |

97 97 

98### Visionneuse de transcription98### Visionneuse de transcription


197 197 

198> [!NOTE]198> [!NOTE]

199>199>

200> En mode NORMAL vim, si le curseur est au début ou à la fin de l'entrée et ne peut pas se déplacer davantage, `j`/`k` et `↑`/`↓` naviguent dans l'historique des commandes à la place. `←` sur une invite vide ouvre la [vue agent](https://code.claude.com/docs/fr/agent-view.md) à partir du mode NORMAL ainsi que INSERT ; avant v2.1.219, `←` sur une invite vide ne faisait rien en mode NORMAL.200> En mode NORMAL vim, si le curseur est au début ou à la fin de l'entrée et ne peut pas se déplacer davantage, `j`/`k` et `↑`/`↓` naviguent dans l'historique des commandes à la place. `←` sur une invite vide ouvre la [vue agent](https://code.claude.com/docs/fr/agent-view.md) à partir du mode NORMAL ainsi que INSERT.

201 201 

202### Édition (mode NORMAL)202### Édition (mode NORMAL)

203 203 


396Claude Code exécute certaines commandes dès que vous les envoyez au lieu de les mettre en file d'attente, notamment `/model`, `/effort` et `/fast`. Chacune de ces trois commandes modifie un paramètre : le modèle, le niveau d'effort ou le mode rapide. Le moment où Claude Code applique le nouveau paramètre au tour sur lequel Claude travaille déjà, ou uniquement à partir de votre tour suivant, diffère selon la commande :396Claude Code exécute certaines commandes dès que vous les envoyez au lieu de les mettre en file d'attente, notamment `/model`, `/effort` et `/fast`. Chacune de ces trois commandes modifie un paramètre : le modèle, le niveau d'effort ou le mode rapide. Le moment où Claude Code applique le nouveau paramètre au tour sur lequel Claude travaille déjà, ou uniquement à partir de votre tour suivant, diffère selon la commande :

397 397 

398* [`/model`](https://code.claude.com/docs/fr/model-config#setting-your-model) : une fois que vous confirmez l'[avertissement de cache](https://code.claude.com/docs/fr/prompt-caching.md#switching-models), si Claude Code en affiche un, Claude Code applique votre modification à la prochaine requête qu'il effectue dans ce tour398* [`/model`](https://code.claude.com/docs/fr/model-config#setting-your-model) : une fois que vous confirmez l'[avertissement de cache](https://code.claude.com/docs/fr/prompt-caching.md#switching-models), si Claude Code en affiche un, Claude Code applique votre modification à la prochaine requête qu'il effectue dans ce tour

399* [`/effort`](https://code.claude.com/docs/fr/model-config#adjust-effort-level) : une fois que vous confirmez l'[avertissement de cache](https://code.claude.com/docs/fr/prompt-caching.md#changing-effort-level), si Claude Code en affiche un, Claude Code applique votre modification à la prochaine requête qu'il effectue dans ce tour399* `/effort` : le prochain message que vous envoyez s'exécute au nouveau niveau. Pour [l'appliquer dès le tour sur lequel Claude travaille déjà](https://code.claude.com/docs/fr/model-config.md#when-a-new-effort-level-starts), mettez un message en file d'attente pendant que Claude exécute des appels d'outils

400* [`/fast`](https://code.claude.com/docs/fr/fast-mode#toggle-fast-mode) : Claude Code conserve le paramètre de mode rapide qui était actif au début du tour, donc votre changement de vitesse s'applique à partir de votre tour suivant. Si votre modèle actuel ne supporte pas le mode rapide, l'activer [bascule également votre modèle](https://code.claude.com/docs/fr/prompt-caching.md#turning-on-fast-mode), et Claude Code utilise le nouveau modèle à partir de sa prochaine requête dans ce tour400* [`/fast`](https://code.claude.com/docs/fr/fast-mode#toggle-fast-mode) : Claude Code conserve le paramètre de mode rapide qui était actif au début du tour, donc votre changement de vitesse s'applique à partir de votre tour suivant. Si votre modèle actuel ne supporte pas le mode rapide, l'activer [bascule également votre modèle](https://code.claude.com/docs/fr/prompt-caching.md#turning-on-fast-mode), et Claude Code utilise le nouveau modèle à partir de sa prochaine requête dans ce tour

401 401 

402### Passer en arrière-plan une session avec des messages en file d'attente402### Passer en arrière-plan une session avec des messages en file d'attente


513 513 

514## Codes courts d'emoji514## Codes courts d'emoji

515 515 

516Tapez un `:` suivi d'un code court d'emoji dans l'entrée de l'invite pour insérer l'emoji. Nécessite Claude Code v2.1.217 ou version ultérieure.516Tapez un `:` suivi d'un code court d'emoji dans l'entrée du prompt pour insérer l'emoji.

517 517 

518* Tapez un code court complet tel que `:heart:` et Claude Code le remplace par ❤️ dès que vous tapez le `:` de fermeture518* Tapez un code court complet tel que `:heart:` et Claude Code le remplace par ❤️ dès que vous tapez le `:` de fermeture

519* Tapez `:` plus au moins deux caractères d'un nom, tel que `:hea`, pour ouvrir une fenêtre contextuelle de suggestion, puis appuyez sur `Tab` ou `Entrée` pour insérer l'emoji en surbrillance519* Tapez `:` plus au moins deux caractères d'un nom, tel que `:hea`, pour ouvrir une fenêtre contextuelle de suggestion, puis appuyez sur `Tab` ou `Entrée` pour insérer l'emoji en surbrillance

Details

31 31 

32> [!TIP]32> [!TIP]

33>33>

34> Pour les techniques de flux de travail qui gardent le contexte petit dans n'importe quel référentiel, comme [exécuter l'exploration dans un sous-agent](https://code.claude.com/docs/fr/best-practices.md#use-subagents-for-investigation) afin que les lectures de fichiers restent en dehors de la conversation principale, voir [Meilleures pratiques pour Claude Code](https://code.claude.com/docs/fr/best-practices.md). Pour déployer une configuration de base à chaque développeur de votre organisation, voir [Configurer Claude Code pour votre organisation](https://code.claude.com/docs/fr/admin-setup.md).34> Pour les techniques de workflow qui gardent le contexte réduit dans n'importe quel dépôt, consultez [Bonnes pratiques pour Claude Code](https://code.claude.com/docs/fr/best-practices.md). Un exemple consiste à [exécuter l'exploration dans un sous-agent](https://code.claude.com/docs/fr/best-practices.md#know-what-subagents-cost) afin que les lectures de fichiers restent en dehors de la conversation principale. Pour déployer une configuration de base à chaque développeur de votre organisation, consultez [Configurer Claude Code pour votre organisation](https://code.claude.com/docs/fr/admin-setup.md).

35 35 

36### Le monorepo d'exemple36### Le monorepo d'exemple

37 37 


158Les règles de refus peuvent couvrir tous ceux qui travaillent dans le référentiel, vous seul, ou chaque session sur la machine, selon le fichier de paramètres dans lequel vous les mettez :158Les règles de refus peuvent couvrir tous ceux qui travaillent dans le référentiel, vous seul, ou chaque session sur la machine, selon le fichier de paramètres dans lequel vous les mettez :

159 159 

160* **Tous ceux qui travaillent dans le référentiel** : validez les règles dans `.claude/settings.json`, à la racine du référentiel si vous démarrez Claude là, ou dans le `.claude/` de chaque package si vous démarrez à partir de sous-répertoires. Comme d'autres paramètres de projet sur cette page, ce fichier n'est pas hérité des répertoires parents.160* **Tous ceux qui travaillent dans le référentiel** : validez les règles dans `.claude/settings.json`, à la racine du référentiel si vous démarrez Claude là, ou dans le `.claude/` de chaque package si vous démarrez à partir de sous-répertoires. Comme d'autres paramètres de projet sur cette page, ce fichier n'est pas hérité des répertoires parents.

161* **Vous seul** : utilisez `.claude/settings.local.json` à la racine du référentiel, qui se charge dans chaque session CLI à l'intérieur du référentiel quel que soit le répertoire de démarrage, sauf dans les cas où Claude Code [n'utilise pas la racine du référentiel](https://code.claude.com/docs/fr/settings.md#where-claude-code-looks-for-each-file), comme sur Windows. Les modèles relatifs comme l'exemple `Read(./**/vendor/**/*)` s'[ancrent toujours au répertoire de travail actuel de la session](https://code.claude.com/docs/fr/permissions.md#read-and-edit) plutôt qu'à la racine du référentiel, donc si vous démarrez des sessions à partir de sous-répertoires, écrivez les règles dans ce fichier comme des chemins absolus `//`, comme `Read(//absolute/path/to/repo/**/vendor/**/*)`. Avant v2.1.211, `.claude/settings.local.json` se chargeait également uniquement à partir du répertoire de démarrage.161* **Vous seul** : utilisez `.claude/settings.local.json` à la racine du dépôt. Il se charge dans chaque session CLI à l'intérieur du dépôt quel que soit le répertoire de démarrage, sauf dans les cas où Claude Code [n'utilise pas la racine du dépôt](https://code.claude.com/docs/fr/settings.md#where-claude-code-looks-for-each-file), comme sur Windows.

162 

163 Les modèles relatifs comme l'exemple `Read(./**/vendor/**/*)` s'[ancrent toujours au répertoire de travail actuel de la session](https://code.claude.com/docs/fr/permissions.md#read-and-edit) plutôt qu'à la racine du dépôt. Si vous démarrez des sessions à partir de sous-répertoires, écrivez les règles dans ce fichier comme des chemins absolus `//`, comme `Read(//absolute/path/to/repo/**/vendor/**/*)`.

162* **Tous, appliqué dans chaque session** : définissez les règles dans [paramètres gérés](https://code.claude.com/docs/fr/managed-settings.md), que les paramètres utilisateur et projet ne peuvent pas remplacer.164* **Tous, appliqué dans chaque session** : définissez les règles dans [paramètres gérés](https://code.claude.com/docs/fr/managed-settings.md), que les paramètres utilisateur et projet ne peuvent pas remplacer.

163 165 

164L'exemple ci-dessous bloque les artefacts de compilation et un SDK vendu. Ses modèles de répertoire se terminent par `/**/*` plutôt que `/**` afin que chaque règle couvre tout ce qui se trouve à l'intérieur du répertoire mais pas le répertoire lui-même. Claude peut alors toujours lister ces répertoires ou y accéder, par exemple avec `ls dist` ou `cd build`.166L'exemple ci-dessous bloque les artefacts de compilation et un SDK vendu. Ses modèles de répertoire se terminent par `/**/*` plutôt que `/**` afin que chaque règle couvre tout ce qui se trouve à l'intérieur du répertoire mais pas le répertoire lui-même. Claude peut alors toujours lister ces répertoires ou y accéder, par exemple avec `ls dist` ou `cd build`.


376Déplacez les conventions et le contenu de référence en dehors du CLAUDE.md toujours chargé et dans les mécanismes qui se chargent à la demande :378Déplacez les conventions et le contenu de référence en dehors du CLAUDE.md toujours chargé et dans les mécanismes qui se chargent à la demande :

377 379 

378* [Skills](https://code.claude.com/docs/fr/skills.md) : matériel de référence que Claude charge uniquement lorsqu'il est pertinent pour la tâche380* [Skills](https://code.claude.com/docs/fr/skills.md) : matériel de référence que Claude charge uniquement lorsqu'il est pertinent pour la tâche

379* [Plugins](https://code.claude.com/docs/fr/plugins/overview.md) : bundles versionnés de skills, hooks et commandes qu'une équipe de plateforme possède centralement381* [Plugins](https://code.claude.com/docs/fr/plugins/overview.md) : bundles versionnés de skills, hooks et commandes qu'une équipe de plateforme possède centralement et peut [installer pour tout le monde via les paramètres gérés](https://code.claude.com/docs/fr/plugins/org.md#pre-install-and-require-plugins)

380* [Serveurs MCP](https://code.claude.com/docs/fr/mcp.md) : si votre organisation exécute déjà une recherche de code ou un index RAG sur le référentiel, exposez-le en tant qu'outil MCP afin que Claude l'interroge au lieu de lire les fichiers directement382* [Serveurs MCP](https://code.claude.com/docs/fr/mcp.md) : si votre organisation exécute déjà une recherche de code ou un index RAG sur le référentiel, exposez-le en tant qu'outil MCP afin que Claude l'interroge au lieu de lire les fichiers directement

381 383 

382Voir [paramètres gérés par serveur ou gérés par endpoint](https://code.claude.com/docs/fr/server-managed-settings.md#choose-between-server-managed-and-endpoint-managed-settings) pour la façon dont les équipes de plateforme peuvent les appliquer centralement.384Voir [paramètres gérés par serveur ou gérés par endpoint](https://code.claude.com/docs/fr/server-managed-settings.md#choose-between-server-managed-and-endpoint-managed-settings) pour la façon dont les équipes de plateforme peuvent les appliquer centralement.


465Deux techniques aident à garder une modification entre packages cohérente :467Deux techniques aident à garder une modification entre packages cohérente :

466 468 

467* **Donner à Claude le changement entier dans une session** : remettre l'édition partagée et ses sites d'appel ensemble garde les décisions derrière chaque édition cohérentes, plutôt que de les redériver par package469* **Donner à Claude le changement entier dans une session** : remettre l'édition partagée et ses sites d'appel ensemble garde les décisions derrière chaque édition cohérentes, plutôt que de les redériver par package

468* **Planifier avant d'éditer** : [planifiez d'abord](https://code.claude.com/docs/fr/best-practices.md#explore-first-then-plan-then-code) en [mode plan](https://code.claude.com/docs/fr/permission-modes.md#analyze-before-you-edit-with-plan-mode), et Claude écrit le plan dans un fichier. Une longue session entre packages [compacte son contexte](https://code.claude.com/docs/fr/context-window.md#what-survives-compaction) en cours de route. Claude Code réinjecte le fichier de plan après chaque compaction, donc le plan survit là où l'historique de conversation peut ne pas le faire470* **Planifier avant d'éditer** : planifiez d'abord en [mode plan](https://code.claude.com/docs/fr/permission-modes.md#analyze-before-you-edit-with-plan-mode), et Claude écrit le plan dans un fichier. Une longue session entre packages [compacte son contexte](https://code.claude.com/docs/fr/context-window.md#what-survives-compaction) en cours de route. Claude Code réinjecte le fichier de plan après chaque compaction, donc le plan survit là où l'historique de conversation peut ne pas le faire

469 471 

470## Prochaines étapes472## Prochaines étapes

471 473 

Details

361 361 

362La passerelle achemine les demandes de modèle, mais Claude Code envoie aussi du trafic de fond non essentiel en dehors du chemin de la passerelle, vers Anthropic et vers des services tiers tels que GitHub : vérifications de version, télémétrie, notes de version, et demandes similaires. Sur un réseau qui n'autorise la sortie que vers la passerelle, ces demandes échouent et peuvent apparaître comme des connexions bloquées dans votre surveillance de sortie.362La passerelle achemine les demandes de modèle, mais Claude Code envoie aussi du trafic de fond non essentiel en dehors du chemin de la passerelle, vers Anthropic et vers des services tiers tels que GitHub : vérifications de version, télémétrie, notes de version, et demandes similaires. Sur un réseau qui n'autorise la sortie que vers la passerelle, ces demandes échouent et peuvent apparaître comme des connexions bloquées dans votre surveillance de sortie.

363 363 

364Claude Code attache un identifiant à une demande de télémétrie ou de métriques d'utilisation uniquement quand la demande va vers l'hôte auquel l'identifiant appartient. Tandis que `ANTHROPIC_BASE_URL` pointe vers la passerelle, Claude Code envoie ses événements de télémétrie à Anthropic sans votre identifiant de passerelle. Avec une [variable d'identifiant](#set-the-credential-variable) ou `apiKeyHelper` aussi actif, Claude Code ne signale pas les métriques d'utilisation au tableau de bord [analytique](https://code.claude.com/docs/fr/analytics.md#access-analytics-for-api-customers) de la Console. Avant v2.1.246, Claude Code pouvait attacher l'identifiant de passerelle aux demandes de télémétrie et de métriques d'utilisation destinées aux hôtes Anthropic ; les demandes de modèle allaient toujours à la passerelle avec l'identifiant que la passerelle attend.

365 

366Pour désactiver ce trafic, définissez `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1` à côté des variables de passerelle, dans les mêmes exports shell ou bloc `env` du fichier de paramètres :364Pour désactiver ce trafic, définissez `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1` à côté des variables de passerelle, dans les mêmes exports shell ou bloc `env` du fichier de paramètres :

367 365 

368**Bash ou Zsh**366**Bash ou Zsh**

mcp.md +8 −2

Details

84 84 

85Seule une application hôte du SDK, telle qu'une application [Agent SDK](https://code.claude.com/docs/fr/agent-sdk/mcp.md) ou l'[application de bureau](https://code.claude.com/docs/fr/desktop.md), peut enregistrer un serveur `"type": "sdk"` en processus. Claude Code ignore une entrée `"type": "sdk"` dans `.mcp.json`, `~/.claude.json`, ou les paramètres et signale `Skipped — MCP server "<name>" declares type "sdk", which only an SDK host application can register`.85Seule une application hôte du SDK, telle qu'une application [Agent SDK](https://code.claude.com/docs/fr/agent-sdk/mcp.md) ou l'[application de bureau](https://code.claude.com/docs/fr/desktop.md), peut enregistrer un serveur `"type": "sdk"` en processus. Claude Code ignore une entrée `"type": "sdk"` dans `.mcp.json`, `~/.claude.json`, ou les paramètres et signale `Skipped — MCP server "<name>" declares type "sdk", which only an SDK host application can register`.

86 86 

87Dans les exécutions `--output-format stream-json`, Claude Code signale également une entrée `--mcp-config` ignorée dans le champ [`mcp_server_errors`](https://code.claude.com/docs/fr/headless#stream-responses) de l'événement `system/init`, afin que les scripts puissent détecter que le serveur n'a jamais été chargé. Cela nécessite Claude Code v2.1.219 ou ultérieur.87> [!NOTE]

88>

89> Dans les exécutions `--output-format stream-json`, Claude Code signale également une entrée `--mcp-config` ignorée dans le [champ `mcp_server_errors`](https://code.claude.com/docs/fr/headless#stream-responses) de l'événement `system/init`, afin que les scripts puissent détecter que le serveur n'a jamais été chargé.

88 90 

89### Option 2 : Ajouter un serveur SSE distant91### Option 2 : Ajouter un serveur SSE distant

90 92 


276 278 

277Lorsque vous sélectionnez **Disable** ou **Clear authentication** dans le menu d'un serveur dans `/mcp`, Claude Code supprime également l'entrée du cache de ce serveur. **Reconnect** la supprime également sur un serveur connecté ou défaillant ; sur un serveur `cached`, **Reconnect** connecte le serveur maintenant et conserve l'entrée. La prochaine fois que Claude Code se connecte au serveur après suppression de l'entrée, il récupère la liste d'outils du serveur au lieu du cache.279Lorsque vous sélectionnez **Disable** ou **Clear authentication** dans le menu d'un serveur dans `/mcp`, Claude Code supprime également l'entrée du cache de ce serveur. **Reconnect** la supprime également sur un serveur connecté ou défaillant ; sur un serveur `cached`, **Reconnect** connecte le serveur maintenant et conserve l'entrée. La prochaine fois que Claude Code se connecte au serveur après suppression de l'entrée, il récupère la liste d'outils du serveur au lieu du cache.

278 280 

279Lorsque le statut d'un serveur est `✘ Failed to connect`, `claude mcp list` ajoute le détail de l'échec à cette ligne de statut, et `claude mcp get <name>` l'affiche sur une ligne `Issue:` : le code de statut HTTP ou le code d'erreur, plus tout texte d'erreur que le serveur a retourné. La vue détaillée du serveur dans `/mcp` inclut le même texte signalé par le serveur dans sa ligne `Issue:`. Claude Code masque le texte ressemblant à des identifiants dans ce détail et n'inclut jamais l'URL du serveur développée, qui peut contenir des secrets. Claude Code n'ajoute aucun détail à un statut `✘ Connection error`, car le texte d'exception qu'il imprimerait là peut intégrer cette URL. Avant la v2.1.219, les deux commandes affichaient uniquement le statut d'échec nu, sans le code de statut ou le texte d'erreur du serveur.281##### Échecs de connexion et serveurs non configurés

282 

283Lorsque le statut d'un serveur est `✘ Failed to connect`, `claude mcp list` ajoute le détail de l'échec à cette ligne de statut, et `claude mcp get <name>` l'affiche sur une ligne `Issue:`. Le détail correspond au statut HTTP ou au code d'erreur, ainsi qu'à tout texte d'erreur renvoyé par le serveur. La vue détaillée du serveur dans `/mcp` inclut le même texte signalé par le serveur dans sa ligne `Issue:`.

284 

285Claude Code masque dans ce détail tout texte ressemblant à des identifiants et n'inclut jamais l'URL développée du serveur, qui peut contenir des secrets. Claude Code n'ajoute aucun détail à un statut `✘ Connection error`, car le texte d'exception qu'il y afficherait peut intégrer cette URL.

280 286 

281Lorsque vous terminez l'authentification à partir de `/mcp` et que la connexion échoue toujours avec un code de statut HTTP ou un code d'erreur de transport, Claude Code ajoute ce code et l'origine de l'URL du serveur au message qu'il imprime après la tentative. L'origine est le schéma et l'hôte, plus le port lorsque l'URL en nomme un, tel que `https://mcp.example.com`.287Lorsque vous terminez l'authentification à partir de `/mcp` et que la connexion échoue toujours avec un code de statut HTTP ou un code d'erreur de transport, Claude Code ajoute ce code et l'origine de l'URL du serveur au message qu'il imprime après la tentative. L'origine est le schéma et l'hôte, plus le port lorsque l'URL en nomme un, tel que `https://mcp.example.com`.

282 288 

memory.md +2 −2

Details

237 237 

238Chaque groupe entre accolades multiplie le nombre de modèles développés : `src/*.{ts,tsx}` se développe en deux modèles, et `{a,b}/{c,d}/*.{ts,tsx}` en huit. Pour garder l'expansion limitée, la liste `paths` entière d'une règle partage un budget de 1 000 modèles développés et 4 MiB, et les modèles sans accolades ne comptent pas contre lui.238Chaque groupe entre accolades multiplie le nombre de modèles développés : `src/*.{ts,tsx}` se développe en deux modèles, et `{a,b}/{c,d}/*.{ts,tsx}` en huit. Pour garder l'expansion limitée, la liste `paths` entière d'une règle partage un budget de 1 000 modèles développés et 4 MiB, et les modèles sans accolades ne comptent pas contre lui.

239 239 

240Claude Code utilise tout modèle qui dépasserait le budget non développé, et ses accolades littérales ne correspondent à aucun fichier. Avant v2.1.217, une valeur `paths` avec de nombreux groupes entre accolades bloquait ou plantait le CLI au démarrage.240Claude Code utilise tout modèle qui dépasserait le budget non développé, et ses accolades littérales ne correspondent à aucun fichier.

241 241 

242La syntaxe Glob traite `[` comme le début d'une expression entre crochets telle que `[abc]`. Un modèle avec un `[` qui ne peut pas être lu comme une expression entre crochets, tel que `photos [2024/**`, est invalide : il ne correspond à rien, et les autres modèles de la règle continuent de fonctionner. Pour faire correspondre un `[` littéral dans un nom de fichier, échappez-le comme `photos \[2024/**`.242La syntaxe Glob traite `[` comme le début d'une expression entre crochets telle que `[abc]`. Un modèle avec un `[` qui ne peut pas être lu comme une expression entre crochets, tel que `photos [2024/**`, est invalide : il ne correspond à rien, et les autres modèles de la règle continuent de fonctionner. Pour faire correspondre un `[` littéral dans un nom de fichier, échappez-le comme `photos \[2024/**`.

243 243 


568 568 

569La commande `/memory` liste vos fichiers CLAUDE.md, CLAUDE.local.md et autres emplacements de fichiers de mémoire dans les portées utilisateur et projet, y compris les entrées CLAUDE.md utilisateur et projet pour les fichiers qui n'existent pas encore. Elle vous permet également de basculer la mémoire automatique activée ou désactivée et fournit une option pour ouvrir le dossier de mémoire automatique. Sélectionnez n'importe quel fichier pour l'ouvrir dans votre éditeur ; en sélectionner un qui n'existe pas encore le crée d'abord. Pour vérifier quels fichiers `CLAUDE.md` et fichiers de règles ont été chargés au lancement, exécutez `/context`.569La commande `/memory` liste vos fichiers CLAUDE.md, CLAUDE.local.md et autres emplacements de fichiers de mémoire dans les portées utilisateur et projet, y compris les entrées CLAUDE.md utilisateur et projet pour les fichiers qui n'existent pas encore. Elle vous permet également de basculer la mémoire automatique activée ou désactivée et fournit une option pour ouvrir le dossier de mémoire automatique. Sélectionnez n'importe quel fichier pour l'ouvrir dans votre éditeur ; en sélectionner un qui n'existe pas encore le crée d'abord. Pour vérifier quels fichiers `CLAUDE.md` et fichiers de règles ont été chargés au lancement, exécutez `/context`.

570 570 

571Les éditeurs GUI tels que VS Code ouvrent le fichier dans une fenêtre séparée, et vous pouvez continuer à utiliser la session pendant qu'il est ouvert. Avant la v2.1.216, `/memory` attendait que vous fermiez le fichier avant de répondre. Les éditeurs de terminal tels que Vim prennent le contrôle du terminal jusqu'à ce que vous quittiez.571Les éditeurs GUI tels que VS Code ouvrent le fichier dans une fenêtre séparée, et vous pouvez continuer à utiliser la session pendant qu'il est ouvert. Les éditeurs de terminal tels que Vim prennent le contrôle du terminal jusqu'à ce que vous quittiez.

572 572 

573Quand vous demandez à Claude de se souvenir de quelque chose, comme « toujours utiliser pnpm, pas npm » ou « se souvenir que les tests d'API nécessitent une instance Redis locale », Claude l'enregistre dans la mémoire automatique. Pour ajouter des instructions à CLAUDE.md à la place, demandez directement à Claude, comme « ajouter ceci à CLAUDE.md », ou modifiez le fichier vous-même via `/memory`.573Quand vous demandez à Claude de se souvenir de quelque chose, comme « toujours utiliser pnpm, pas npm » ou « se souvenir que les tests d'API nécessitent une instance Redis locale », Claude l'enregistre dans la mémoire automatique. Pour ajouter des instructions à CLAUDE.md à la place, demandez directement à Claude, comme « ajouter ceci à CLAUDE.md », ou modifiez le fichier vous-même via `/memory`.

574 574 

model-config.md +21 −4

Details

542Un niveau différent s'applique dans des cas comme ceux-ci :542Un niveau différent s'applique dans des cas comme ceux-ci :

543 543 

544* **Votre propre modification** : dès que vous choisissez un niveau d'effort, sélectionnez un modèle dans `/model` ou reprenez la session plus tard, le niveau de la requête signalée n'est plus reporté.544* **Votre propre modification** : dès que vous choisissez un niveau d'effort, sélectionnez un modèle dans `/model` ou reprenez la session plus tard, le niveau de la requête signalée n'est plus reporté.

545* **Effort du skill** : un niveau que le frontmatter `effort` d'un skill a défini pour la requête signalée s'applique à ce tour, et les tours suivants s'exécutent au niveau que l'[ordre de résolution de l'effort](#adjust-effort-level) attribue au modèle de secours.545* **Effort défini pour un tour** : si vous avez augmenté le tour signalé avec `ultrathink`, ou si le frontmatter `effort` d'un skill a défini son niveau, ce niveau s'applique à ce tour. Les tours suivants s'exécutent au niveau que l'[ordre de résolution de l'effort](#adjust-effort-level) attribue au modèle de secours.

546 546 

547Dans la session, exécutez `/effort status` pour voir le niveau en vigueur, ou `/effort` pour le modifier.547Dans la session, exécutez `/effort status` pour voir le niveau en vigueur, ou `/effort` pour le modifier.

548 548 


674 674 

675#### Utiliser ultrathink pour un raisonnement profond ponctuel675#### Utiliser ultrathink pour un raisonnement profond ponctuel

676 676 

677Incluez `ultrathink` n'importe où dans votre prompt pour demander un raisonnement plus profond sur ce tour sans changer votre paramètre d'effort de session. Claude Code reconnaît le mot-clé et ajoute une instruction en contexte. Le niveau d'effort envoyé à l'API est inchangé. Claude Code transmet d'autres phrases comme « think », « think hard » et « think more » comme du texte de prompt ordinaire et ne les reconnaît pas comme des mots-clés.677Incluez `ultrathink` n'importe où dans votre prompt pour demander un raisonnement plus profond sur ce tour sans changer votre paramètre d'effort de session. Claude Code reconnaît le mot-clé et ajoute une instruction en contexte. Claude Code transmet d'autres phrases comme « think », « think hard » et « think more » comme du texte de prompt ordinaire et ne les reconnaît pas comme des mots-clés.

678 

679Saisi dans l'invite du terminal, le mot peut également élever ce tour à l'effort `xhigh`. Quand c'est possible, le mot s'affiche aux couleurs de l'arc-en-ciel. Nécessite Claude Code v2.1.311 ou ultérieure. Si le mot ne s'affiche pas aux couleurs de l'arc-en-ciel quand vous démarrez un nouveau tour, essayez l'une de ces solutions :

680 

681* Ressaisissez-le en dehors de tout élément comme des guillemets, des crochets, un chemin ou une commande, dans un prompt qui ne commence pas par `/`

682* Supprimez `CLAUDE_CODE_EFFORT_LEVEL` s'il est défini en dessous de `xhigh`, augmentez votre propre [`maxEffortLevel`](https://code.claude.com/docs/fr/settings-reference#maxeffortlevel) à `xhigh` ou plus, ou demandez à un administrateur de l'organisation d'augmenter la [limite de votre organisation](#organization-effort-limits)

683* Exécutez `/model` dans votre session pour basculer vers un modèle Opus 5.5, Sonnet 5.5, Haiku 5.5 ou Fable 5.1. Là où le mot ne peut pas élever un tour, comme sur Amazon Bedrock, [définissez le niveau d'effort](#set-the-effort-level) à la place

678 684 

679#### Définir le niveau d'effort685#### Définir le niveau d'effort

680 686 

681Vous pouvez changer l'effort via l'une des options suivantes :687Vous pouvez changer l'effort via l'une des options suivantes :

682 688 

683* **`/effort`** : exécutez `/effort` sans arguments pour ouvrir un curseur interactif, `/effort` suivi d'un nom de niveau pour le définir directement, ou `/effort auto` pour effacer votre niveau enregistré pour le modèle actif. Vous pouvez l'exécuter pendant que Claude travaille, et une fois que vous confirmez l'[avertissement de cache](https://code.claude.com/docs/fr/prompt-caching.md#changing-effort-level), si Claude Code en affiche un, Claude Code applique le nouveau niveau à la requête suivante du tour689* **`/effort`** : exécutez `/effort` sans arguments pour ouvrir un curseur interactif, `/effort` suivi d'un nom de niveau pour le définir directement, ou `/effort auto` pour effacer votre niveau enregistré pour le modèle actif

684* **Dans `/model`** : utilisez les touches fléchées gauche/droite pour ajuster le curseur d'effort lors de la sélection d'un modèle690* **Dans `/model`** : utilisez les touches fléchées gauche/droite pour ajuster le curseur d'effort lors de la sélection d'un modèle

685* **Flag `--effort`** : passez un nom de niveau pour le définir pour une seule session lors du lancement de Claude Code691* **Flag `--effort`** : passez un nom de niveau pour le définir pour une seule session lors du lancement de Claude Code

686* **Variable d'environnement** : définissez `CLAUDE_CODE_EFFORT_LEVEL` sur un nom de niveau ou `auto`692* **Variable d'environnement** : définissez `CLAUDE_CODE_EFFORT_LEVEL` sur un nom de niveau ou `auto`


692 698 

693Si vous définissez `effortLevel` dans les [paramètres gérés](https://code.claude.com/docs/fr/managed-settings.md), Claude Code l'applique à l'étape des paramètres de l'[ordre de résolution de l'effort](#adjust-effort-level), et les utilisateurs peuvent toujours changer le niveau avec `/effort` ou `--effort`. Pour maintenir les utilisateurs à un niveau ou en dessous, définissez [`maxEffortLevel`](https://code.claude.com/docs/fr/settings-reference#maxeffortlevel).699Si vous définissez `effortLevel` dans les [paramètres gérés](https://code.claude.com/docs/fr/managed-settings.md), Claude Code l'applique à l'étape des paramètres de l'[ordre de résolution de l'effort](#adjust-effort-level), et les utilisateurs peuvent toujours changer le niveau avec `/effort` ou `--effort`. Pour maintenir les utilisateurs à un niveau ou en dessous, définissez [`maxEffortLevel`](https://code.claude.com/docs/fr/settings-reference#maxeffortlevel).

694 700 

695Le curseur d'effort apparaît dans `/model` quand un modèle supporté est sélectionné. Le niveau d'effort actuel est également affiché dans l'en-tête de session à côté du nom du modèle, par exemple « with low effort », de sorte que vous pouvez confirmer quel paramètre est actif sans ouvrir `/model`. Le pied de page affiche également brièvement le niveau d'effort au démarrage et quand il change.701#### Vérifier le niveau d'effort que vous avez défini

702 

703Le curseur d'effort apparaît dans `/model` quand un modèle supporté est sélectionné. Un niveau affiché dans l'en-tête de session, par exemple « with low effort », provient de votre paramètre d'effort, même si Claude [travaille encore à l'ancien niveau](#when-a-new-effort-level-starts). Le pied de page affiche également brièvement le niveau d'effort au démarrage et quand il change.

704 

705#### Quand un nouveau niveau d'effort prend effet

706 

707Dans une session de terminal, une fois que `/effort` confirme le nouveau niveau, le prochain message que vous envoyez s'exécute à ce niveau. Vous pouvez l'envoyer après la fin du tour en cours ou [pendant que Claude travaille encore](https://code.claude.com/docs/fr/interactive-mode.md#queue-messages-while-claude-works) :

708 

709* **Après la fin du tour** : vous n'avez rien à faire d'ici là, et il est normal que le tour se termine à l'ancien niveau

710* **Pendant que Claude travaille encore** : tapez un message, comme `keep going`, et appuyez sur `Entrée` pour le mettre en file d'attente sans interrompre le tour. Claude le reçoit quand ses appels d'outils en cours se terminent, ou au plus tard à la fin du tour, et travaille au nouveau niveau à partir de ce moment.

711 

712Avant la v2.1.242, Claude Code pouvait mettre `/effort` lui-même en file d'attente jusqu'à la fin du tour, et le faisait toujours dans une session qui ne [récupère pas les feature flags](https://code.claude.com/docs/fr/env-vars.md#features-that-need-feature-flag-fetching), comme sur un [fournisseur tiers](https://code.claude.com/docs/fr/third-party-integrations.md).

696 713 

697#### Raisonnement adaptatif et budgets de réflexion fixes714#### Raisonnement adaptatif et budgets de réflexion fixes

698 715 

Details

648| `claude_code.code_edit_tool.decision` | Nombre de décisions de permission des outils d'édition de code | aucune |648| `claude_code.code_edit_tool.decision` | Nombre de décisions de permission des outils d'édition de code | aucune |

649| `claude_code.active_time.total` | Temps actif total | s |649| `claude_code.active_time.total` | Temps actif total | s |

650 650 

651Lorsque `prometheus` est le seul exportateur indiqué dans `OTEL_METRICS_EXPORTER`, Claude Code omet les unités `USD`, `tokens` et `s` des métriques exportées afin que le scrape reste au format texte Prometheus valide. Les noms des métriques ne changent pas, et les configurations qui combinent plusieurs exportateurs, comme `otlp,prometheus`, conservent les unités. Avant la v2.1.216, le scrape Prometheus incluait des lignes `# UNIT` propres à OpenMetrics que certains scrapers rejetaient.651Lorsque `prometheus` est le seul exportateur listé dans `OTEL_METRICS_EXPORTER`, Claude Code omet les unités `USD`, `tokens` et `s` des métriques exportées afin que le scrape reste au format texte Prometheus valide. Les noms des métriques ne changent pas, et les configurations qui combinent des exportateurs, comme `otlp,prometheus`, conservent les unités.

652 652 

653### Détails des métriques653### Détails des métriques

654 654 


995 995 

996 La valeur `source` n'indique pas laquelle de ces sources a correspondu. Pour savoir laquelle a refusé un appel, recherchez l'[événement de sécurité](#safety-event) ayant le même `tool_use_id` et lisez ses attributs `category` et `rule_source`. Certains appels refusés [n'ont pas d'événement de sécurité](#calls-without-a-safety-event).996 La valeur `source` n'indique pas laquelle de ces sources a correspondu. Pour savoir laquelle a refusé un appel, recherchez l'[événement de sécurité](#safety-event) ayant le même `tool_use_id` et lisez ses attributs `category` et `rule_source`. Certains appels refusés [n'ont pas d'événement de sécurité](#calls-without-a-safety-event).

997 997 

998 Claude Code rapporte également `"config"` lorsque la demande de permission elle-même échoue. Par exemple, cette demande échoue lorsque le callback [`canUseTool`](https://code.claude.com/docs/fr/agent-sdk/typescript#canusetool) de l'Agent SDK ou l'outil [`--permission-prompt-tool`](https://code.claude.com/docs/fr/cli-reference#cli-flags) renvoie un résultat invalide, ou lorsque le flux d'entrée se ferme alors que la demande est en attente. Avant la v2.1.216, Claude Code rapportait ces échecs comme `"user_reject"`.998 Claude Code signale également `"config"` lorsque la demande de permission elle-même échoue. Par exemple, cette demande échoue lorsque le callback [`canUseTool`](https://code.claude.com/docs/fr/agent-sdk/typescript#canusetool) de l'Agent SDK ou l'outil [`--permission-prompt-tool`](https://code.claude.com/docs/fr/cli-reference#cli-flags) renvoie un résultat invalide, ou lorsque le flux d'entrée se ferme pendant que la demande est en attente.

999 * `"hook"` : Un hook `PreToolUse` ou `PermissionRequest` a renvoyé la décision.999 * `"hook"` : un hook `PreToolUse` ou `PermissionRequest` a renvoyé la décision.

1000 * `"user_permanent"` : Émis lorsque l'utilisateur a choisi « Yes, and don't ask again for ... » lors d'une demande de permission, ce qui enregistre une règle d'autorisation dans ses paramètres personnels. Dans la CLI interactive, cette valeur n'est émise que pour ce choix lui-même ; les appels ultérieurs correspondant à la règle enregistrée émettent `"config"` à la place. Dans les sessions Agent SDK ou non interactives `-p`, le choix initial comme les correspondances ultérieures avec la règle émettent `"user_permanent"`. Traité comme une acceptation.1000 * `"user_permanent"` : émis lorsque l'utilisateur a choisi « Yes, and don't ask again for ... » lors d'une demande de permission, ce qui enregistre une règle d'autorisation dans ses paramètres personnels. Dans la CLI interactive, cette valeur n'est émise que pour ce choix lui-même ; les appels ultérieurs correspondant à la règle enregistrée émettent plutôt `"config"`. Dans les sessions Agent SDK ou non interactives `-p`, le choix initial comme les correspondances ultérieures avec la règle émettent `"user_permanent"`. Traité comme une acceptation.

1001 * `"user_temporary"` : Émis lorsque l'utilisateur a choisi « Yes » lors d'une demande de permission pour une approbation ponctuelle, ou a choisi une option accordant l'accès pour le reste de la session lors d'une demande de modification ou de lecture de fichier. Dans la CLI interactive, cette valeur n'est émise que pour le choix lui-même ; les appels ultérieurs autorisés par cette autorisation limitée à la session émettent `"config"` à la place. Dans les sessions Agent SDK ou non interactives `-p`, le choix comme les correspondances ultérieures émettent `"user_temporary"`. Traité comme une acceptation.1001 * `"user_temporary"` : émis lorsque l'utilisateur a choisi « Yes » lors d'une demande de permission pour une approbation ponctuelle, ou a choisi une option accordant l'accès pour le reste de la session lors d'une demande de modification ou de lecture de fichier. Dans la CLI interactive, cette valeur n'est émise que pour le choix lui-même ; les appels ultérieurs autorisés par cette autorisation limitée à la session émettent plutôt `"config"`. Dans les sessions Agent SDK ou non interactives `-p`, le choix comme les correspondances ultérieures émettent `"user_temporary"`. Traité comme une acceptation.

1002 * `"user_abort"` : Émis lorsque l'utilisateur a fermé la demande de permission sans y répondre. Dans les sessions Agent SDK et non interactives `-p`, cela inclut l'interruption du tour alors qu'une demande de permission `canUseTool` ou `--permission-prompt-tool` est en attente ; avant la v2.1.216, Claude Code rapportait cette interruption comme `"user_reject"`. Traité comme un rejet.1002 * `"user_abort"` : émis lorsque l'utilisateur a fermé la demande de permission sans y répondre. Dans les sessions Agent SDK et non interactives `-p`, cela inclut l'interruption du tour pendant qu'une demande de permission `canUseTool` ou `--permission-prompt-tool` est en attente. Traité comme un rejet.

1003 * `"user_reject"` : Émis lorsque l'utilisateur a choisi « No » lors de la demande. Dans la CLI interactive, cette valeur n'est émise que pour ce choix lui-même ; les appels correspondant à une règle de refus des paramètres personnels de l'utilisateur émettent `"config"` à la place. Dans les sessions Agent SDK ou non interactives `-p`, les appels correspondant à une règle de refus des paramètres personnels émettent `"user_reject"`. Traité comme un rejet.1003 * `"user_reject"` : émis lorsque l'utilisateur a choisi « No » lorsqu'on le lui a demandé. Dans la CLI interactive, cette valeur n'est émise que pour ce choix lui-même ; les appels correspondant à une règle de refus dans les paramètres personnels de l'utilisateur émettent plutôt `"config"`. Dans les sessions Agent SDK ou non interactives `-p`, les appels correspondant à une règle de refus dans les paramètres personnels émettent `"user_reject"`. Traité comme un rejet.

1004* `classifier_verdict` : Le verdict du [classifieur](https://code.claude.com/docs/fr/permission-modes.md#how-the-classifier-evaluates-actions) du mode auto pour l'appel, ou la raison pour laquelle Claude Code a refusé l'appel en l'absence de verdict. Nécessite Claude Code v2.1.301 ou ultérieur1004* `classifier_verdict` : Le verdict du [classifieur](https://code.claude.com/docs/fr/permission-modes.md#how-the-classifier-evaluates-actions) du mode auto pour l'appel, ou la raison pour laquelle Claude Code a refusé l'appel en l'absence de verdict. Nécessite Claude Code v2.1.301 ou ultérieur

1005 1005 

1006 * `"allow"` : le classifieur a approuvé l'appel1006 * `"allow"` : le classifieur a approuvé l'appel

Details

97 La commande fonctionne également en [mode non interactif](https://code.claude.com/docs/fr/headless.md) et dans les sessions Agent SDK, et depuis l'application mobile ou le web via [Contrôle à distance](https://code.claude.com/docs/fr/remote-control.md#limitations), où vous pouvez lister et sélectionner uniquement les [styles intégrés](#built-in-output-styles). Nécessite Claude Code v2.1.269 ou ultérieur.97 La commande fonctionne également en [mode non interactif](https://code.claude.com/docs/fr/headless.md) et dans les sessions Agent SDK, et depuis l'application mobile ou le web via [Contrôle à distance](https://code.claude.com/docs/fr/remote-control.md#limitations), où vous pouvez lister et sélectionner uniquement les [styles intégrés](#built-in-output-styles). Nécessite Claude Code v2.1.269 ou ultérieur.

98* **Menu Terminal** : exécutez `/config` et sélectionnez **Output style** pour choisir un style dans un menu.98* **Menu Terminal** : exécutez `/config` et sélectionnez **Output style** pour choisir un style dans un menu.

99* **Extension VS Code** : ouvrez le [menu de commandes](https://code.claude.com/docs/fr/vs-code.md#use-the-prompt-box) avec `/` et sélectionnez **Output styles** pour choisir un style, y compris vos styles personnalisés. Nécessite Claude Code v2.1.257 ou ultérieur.99* **Extension VS Code** : ouvrez le [menu de commandes](https://code.claude.com/docs/fr/vs-code.md#use-the-prompt-box) avec `/` et sélectionnez **Output styles** pour choisir un style, y compris vos styles personnalisés. Nécessite Claude Code v2.1.257 ou ultérieur.

100* **Application de bureau** : définissez le champ `outputStyle` dans un fichier de paramètres, par exemple `.claude/settings.local.json`, le fichier que le menu terminal écrit. Lorsque vous exécutez `/config` là-bas, Claude Code [ouvre **Paramètres > Claude Code**](https://code.claude.com/docs/fr/desktop.md#what%E2%80%99s-not-available-in-desktop) plutôt qu'un menu.100* **Application de bureau** : définissez le champ `outputStyle` dans un fichier de paramètres, par exemple `.claude/settings.local.json`, le fichier que le menu terminal écrit. Lorsque vous exécutez `/config` là-bas, Claude Code [ouvre **Paramètres > Code** ou **Paramètres > Claude Code**](https://code.claude.com/docs/fr/desktop.md#what’s-not-available-in-desktop) plutôt qu'un menu.

101 101 

102Pour définir un style sans le menu, modifiez directement le champ `outputStyle` dans un fichier de paramètres :102Pour définir un style sans le menu, modifiez directement le champ `outputStyle` dans un fichier de paramètres :

103 103 

Details

31 31 

32### Actions qu'aucun mode n'approuve automatiquement32### Actions qu'aucun mode n'approuve automatiquement

33 33 

34Claude Code n'approuve automatiquement les éléments suivants dans aucun mode, y compris `bypassPermissions`. Chaque point renvoie à la section qui décrit ce qui se passe à la place dans chaque mode :34Claude Code n'approuve automatiquement les éléments suivants dans aucun mode, y compris `bypassPermissions`, bien que vous puissiez [désactiver la demande de permission pour les commandes `rm` dangereuses](#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode) en mode `bypassPermissions`. Chaque point renvoie à la section qui décrit ce qui se passe à la place dans chaque mode :

35 35 

36* Les outils correspondant à une [règle de demande](https://code.claude.com/docs/fr/permissions.md#manage-permissions) explicite36* Les outils correspondant à une [règle de demande](https://code.claude.com/docs/fr/permissions.md#manage-permissions) explicite

37* Les outils de connecteur que votre organisation a [définis sur `ask`](https://code.claude.com/docs/fr/mcp#organization-controls-on-connector-tools), dans les sessions où ce paramètre s'applique à Claude Code37* Les outils de connecteur que votre organisation a [définis sur `ask`](https://code.claude.com/docs/fr/mcp#organization-controls-on-connector-tools), dans les sessions où ce paramètre s'applique à Claude Code


504* Requêtes HTTP en lecture seule504* Requêtes HTTP en lecture seule

505* Push vers n'importe quelle branche du dépôt sur lequel vous travaillez, y compris la branche par défaut. Une branche autre que celle par défaut dont le nom la désigne comme cible de déploiement ou de publication, comme `production` ou `gh-pages`, n'est pas couverte : le classificateur juge un push vers celle-ci selon ses propres critères.505* Push vers n'importe quelle branche du dépôt sur lequel vous travaillez, y compris la branche par défaut. Une branche autre que celle par défaut dont le nom la désigne comme cible de déploiement ou de publication, comme `production` ou `gh-pages`, n'est pas couverte : le classificateur juge un push vers celle-ci selon ses propres critères.

506 506 

507 Le contenu d'un push est toujours vérifié par rapport aux autres règles du classificateur, et les [règles `permissions.deny`](https://code.claude.com/docs/fr/permissions#manage-permissions) peuvent toujours bloquer les commandes de push [telles qu'écrites](https://code.claude.com/docs/fr/permissions.md#bash-rule-limits) dans chaque mode. La protection de branche propre au remote s'applique toujours. De v2.1.203 jusqu'à v2.1.211, seuls les push habituels vers la branche par défaut et les push vers la branche sur laquelle vous aviez démarré ou vers les branches que Claude avait créées étaient autorisés par défaut.507 Le contenu d'un push est toujours vérifié par rapport aux autres règles du classificateur, et les [règles `permissions.deny`](https://code.claude.com/docs/fr/permissions#manage-permissions) peuvent toujours bloquer les commandes de push [telles qu'écrites](https://code.claude.com/docs/fr/permissions.md#bash-rule-limits) dans chaque mode. La protection de branche propre au remote s'applique toujours.

508* Suppression des tâches exactes que Claude a créées plus tôt dans la même session508* Suppression des tâches exactes que Claude a créées plus tôt dans la même session

509* Lecture, examen ou écriture de code, de configurations et de modèles de menace liés à la sécurité dans le cadre de votre tâche509* Lecture, examen ou écriture de code, de configurations et de modèles de menace liés à la sécurité dans le cadre de votre tâche

510* Messages entre agents travaillant ensemble dans la même session multi-agents510* Messages entre agents travaillant ensemble dans la même session multi-agents


649 649 

650Le mode `bypassPermissions` désactive les invites de permission et les contrôles de sécurité afin que les appels d'outils s'exécutent immédiatement, y compris les écritures vers les [chemins protégés](#protected-paths).650Le mode `bypassPermissions` désactive les invites de permission et les contrôles de sécurité afin que les appels d'outils s'exécutent immédiatement, y compris les écritures vers les [chemins protégés](#protected-paths).

651 651 

652Même en mode `bypassPermissions`, chacune des [actions qu'aucun mode n'auto-approuve](#actions-no-mode-auto-approves) fait l'objet d'une demande ou d'un refus au lieu de s'exécuter d'elle-même. La lecture de l'[artefact public d'une autre organisation](https://code.claude.com/docs/fr/artifacts.md#read-an-artifact-shared-with-you) nécessite votre approbation, et ce mode ne la demande pas, donc Claude ne peut pas en lire. Les refus [Remove-Item dans PowerShell](#remove-item-in-powershell) s'appliquent également dans ce mode.652Même en mode `bypassPermissions`, chacune des [actions qu'aucun mode n'auto-approuve](#actions-no-mode-auto-approves) fait l'objet d'une demande ou d'un refus, bien que vous puissiez [désactiver la demande pour les commandes `rm` dangereuses](#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode). La lecture de l'[artefact public d'une autre organisation](https://code.claude.com/docs/fr/artifacts.md#read-an-artifact-shared-with-you) nécessite votre approbation, et ce mode ne la demande pas, donc Claude ne peut pas en lire. Les refus [Remove-Item dans PowerShell](#remove-item-in-powershell) s'appliquent également dans ce mode.

653 653 

654Deux [protections de messagerie inter-sessions](https://code.claude.com/docs/fr/cross-session-messaging.md) s'appliquent toujours dans ce mode, et dans les sessions en mode plan interactif où les permissions de contournement sont disponibles :654Deux [protections de messagerie inter-sessions](https://code.claude.com/docs/fr/cross-session-messaging.md) s'appliquent toujours dans ce mode, et dans les sessions en mode plan interactif où les permissions de contournement sont disponibles :

655 655 


861This command could not be checked for dangerous rm operations: the shell may read it differently than it was parsed.861This command could not be checked for dangerous rm operations: the shell may read it differently than it was parsed.

862```862```

863 863 

864Vous recevez l'invite ou le refus qu'une suppression de chemin critique reçoit [dans votre mode de permission](#critical-path-removals-in-each-permission-mode), `bypassPermissions` compris. Vous ne pouvez pas approuver la commande avec une règle allow `Bash` ou `Bash(*)`, le [mode auto-allow](https://code.claude.com/docs/fr/sandboxing.md#auto-allow-mode) du sandbox ou un hook `PreToolUse` qui retourne `"allow"`. Lisez la commande, puis approuvez l'invite ou, après un refus, exécutez-la dans votre shell.864Vous recevez l'invite ou le refus qu'une suppression de chemin critique reçoit [dans votre mode de permission](#critical-path-removals-in-each-permission-mode), `bypassPermissions` compris, bien que vous puissiez [désactiver cette invite](#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode) en mode `bypassPermissions`. Vous ne pouvez pas approuver la commande avec une règle allow `Bash` ou `Bash(*)`, le [mode auto-allow](https://code.claude.com/docs/fr/sandboxing.md#auto-allow-mode) du sandbox ou un hook `PreToolUse` qui retourne `"allow"`. Lisez la commande, puis approuvez l'invite ou, après un refus, exécutez-la dans votre shell.

865 865 

866### L'invite de lecteur monté866### L'invite de lecteur monté

867 867 


923 923 

924Si une [règle ask](https://code.claude.com/docs/fr/permissions.md#manage-permissions) explicite correspond à la commande, Claude Code vous demande à la place, même en mode `auto` et sans limite de temps. Dans les modes qui demandent, un [hook `PermissionRequest`](https://code.claude.com/docs/fr/hooks#permissionrequest) peut répondre à l'invite.924Si une [règle ask](https://code.claude.com/docs/fr/permissions.md#manage-permissions) explicite correspond à la commande, Claude Code vous demande à la place, même en mode `auto` et sans limite de temps. Dans les modes qui demandent, un [hook `PermissionRequest`](https://code.claude.com/docs/fr/hooks#permissionrequest) peut répondre à l'invite.

925 925 

926Pour exécuter ces suppressions sans invite en mode `bypassPermissions`, consultez [Désactiver l'invite de suppression de chemin critique](#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode).

927 

926### Limites de temps et refus en modes auto et bypassPermissions928### Limites de temps et refus en modes auto et bypassPermissions

927 929 

928En modes `auto` et `bypassPermissions`, l'invite du terminal pour une suppression de chemin critique affiche un compte à rebours de deux minutes :930En modes `auto` et `bypassPermissions`, l'invite du terminal pour une suppression de chemin critique affiche un compte à rebours de deux minutes :


939| :- | :- | :- |941| :- | :- | :- |

940| Panneau de chat de l'[extension VS Code](https://code.claude.com/docs/fr/vs-code.md) | La refuse | La refuse, sauf si un [hook `PermissionRequest`](https://code.claude.com/docs/fr/hooks#permissionrequest) l'autorise |942| Panneau de chat de l'[extension VS Code](https://code.claude.com/docs/fr/vs-code.md) | La refuse | La refuse, sauf si un [hook `PermissionRequest`](https://code.claude.com/docs/fr/hooks#permissionrequest) l'autorise |

941| [Application Desktop](https://code.claude.com/docs/fr/desktop.md) | La refuse | La refuse, sauf si un hook `PermissionRequest` l'autorise |943| [Application Desktop](https://code.claude.com/docs/fr/desktop.md) | La refuse | La refuse, sauf si un hook `PermissionRequest` l'autorise |

942| [Exécution `-p`](https://code.claude.com/docs/fr/headless) ou [session Agent SDK](https://code.claude.com/docs/fr/agent-sdk/permissions.md) | La refuse | Votre [`--permission-prompt-tool`](https://code.claude.com/docs/fr/cli-reference#cli-flags) ou votre [callback `canUseTool`](https://code.claude.com/docs/fr/agent-sdk/user-input#handle-tool-approval-requests) décide. Sans l'un ni l'autre, ou avec [`--permission-prompts none`](https://code.claude.com/docs/fr/headless#turn-off-permission-prompts-in-unattended-runs), la refuse, sauf si un hook `PermissionRequest` l'autorise |944| [Exécution `-p`](https://code.claude.com/docs/fr/headless) ou [session Agent SDK](https://code.claude.com/docs/fr/agent-sdk/permissions.md) | La refuse | Votre [`--permission-prompt-tool`](https://code.claude.com/docs/fr/cli-reference#cli-flags) ou votre [callback `canUseTool`](https://code.claude.com/docs/fr/agent-sdk/user-input#handle-tool-approval-requests) décide. Sans l'un ni l'autre, ou avec [`--permission-prompts none`](https://code.claude.com/docs/fr/headless#turn-off-permission-prompts-in-unattended-runs), la refuse, sauf si un hook `PermissionRequest` l'autorise. Pour exécuter plutôt ces suppressions sans invite, consultez [Désactiver l'invite de suppression de chemin critique](#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode) |

943 945 

944Partout où la suppression est refusée, vous pouvez lire la commande entière et l'exécuter dans votre shell.946Partout où la suppression est refusée, vous pouvez lire la commande entière et l'exécuter dans votre shell.

945 947 


958}960}

959```961```

960 962 

963### Désactiver l'invite de suppression de chemin critique en mode bypassPermissions

964 

965Pour exécuter sans invite, en mode `bypassPermissions`, les commandes Bash `rm` et `rmdir` qui ciblent des [chemins critiques](#critical-paths), démarrez Claude Code avec [`CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS=1`](https://code.claude.com/docs/fr/env-vars#variables) dans son environnement. Cela nécessite Claude Code v2.1.311 ou ultérieur. Claude Code lit la variable uniquement depuis l'environnement de lancement et [l'ignore dans le bloc `env` d'un fichier de paramètres](https://code.claude.com/docs/fr/settings-reference#variables-claude-code-ignores-in-env). Par exemple, définissez-la dans [votre shell](https://code.claude.com/docs/fr/env-vars.md#set-variables-in-your-shell) et démarrez `claude` depuis celui-ci :

966 

967**macOS, Linux, WSL**

968 

969```bash theme={null}

970export CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS=1

971claude --permission-mode bypassPermissions

972```

973 

974**Windows PowerShell**

975 

976```powershell theme={null}

977$env:CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS = "1"

978claude --permission-mode bypassPermissions

979```

980 

981**Windows CMD**

982 

983```batch theme={null}

984set CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS=1

985claude --permission-mode bypassPermissions

986```

987 

988> [!WARNING]

989>

990> Avec cette variable définie, vous perdez une invite de sécurité pour les suppressions destructrices : une commande comme `rm -rf ~` peut s'exécuter sans vous demander. Ne la définissez que dans un [environnement isolé](#skip-all-checks-with-bypasspermissions-mode) dont vous pouvez vous permettre de perdre le contenu.

991 

992Les suppressions s'exécutent sans invite uniquement dans le mode `bypassPermissions` lui-même, pas en mode plan, et uniquement pour ce que la vérification de chemin critique signale dans les outils Bash et [Monitor](https://code.claude.com/docs/fr/tools-reference.md#monitor-tool). Cela inclut les commandes que Claude Code ne peut pas analyser entièrement, qui s'exécutent elles aussi sans invite.

993 

994#### Avis au démarrage concernant l'invite de suppression de chemin critique

995 

996Pour vérifier si `CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS` fonctionne, lisez la ligne que Claude Code affiche au démarrage. Dans une exécution `-p`, elle apparaît sur stderr. Dans une application Agent SDK, passez l'[option `stderr`](https://code.claude.com/docs/fr/agent-sdk/typescript#options) pour la lire. La ligne indique l'une des choses suivantes :

997 

998* **`is set, so dangerous rm commands can run without a prompt`** : les suppressions peuvent s'exécuter sans invite une fois les paramètres gérés et les hooks des plugins chargés. Si les suppressions continuent de recevoir une invite ou un refus, consultez [Pourquoi l'invite de suppression de chemin critique reste active](#why-the-critical-path-removal-prompt-stays-on)

999* **`has no effect in this session`** : les suppressions conservent leur invite ou leur refus habituel pendant toute la session. Pour changer cela, trouvez votre cas dans [Pourquoi l'invite de suppression de chemin critique reste active](#why-the-critical-path-removal-prompt-stays-on)

1000* **`has no effect while the Windows registry cannot be read for managed settings`** : les suppressions conservent leur invite ou leur refus habituel, et la variable prend effet sans redémarrage si une lecture ultérieure du registre réussit. Si les suppressions continuent de recevoir une invite ou un refus, consultez [Pourquoi l'invite de suppression de chemin critique reste active](#why-the-critical-path-removal-prompt-stays-on)

1001 

1002L'absence de ligne ne signifie pas que l'invite est active : une application Agent SDK sans option `stderr` ne voit aucune ligne, et les suppressions peuvent tout de même s'exécuter sans invite. Sinon, vérifiez que vous avez défini la variable dans l'environnement de lancement, que la session [peut passer en mode `bypassPermissions`](#skip-all-checks-with-bypasspermissions-mode), et que `claude` ne se trouve pas à l'intérieur d'une autre session. Certaines sessions [démarrent sans la variable](#why-the-critical-path-removal-prompt-stays-on).

1003 

1004Si vous voyez l'une de ces lignes sans avoir défini la variable, trouvez où elle est définie, par exemple dans votre profil shell, et supprimez-la.

1005 

1006#### Pourquoi l'invite de suppression de chemin critique reste active

1007 

1008Si `CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS` n'a aucun effet et que les suppressions conservent leur [invite ou refus habituel](#critical-path-removals-in-each-permission-mode), recherchez des causes comme celles-ci :

1009 

1010* **Autre chose gère les invites de permission** : un [`--permission-prompt-tool`](https://code.claude.com/docs/fr/cli-reference#cli-flags) ou un [callback `canUseTool`](https://code.claude.com/docs/fr/agent-sdk/user-input) de l'Agent SDK sans [`--permission-prompts none`](https://code.claude.com/docs/fr/headless#turn-off-permission-prompts-in-unattended-runs), un [hook `PermissionRequest`](https://code.claude.com/docs/fr/hooks#permissionrequest) avec n'importe quel matcher, ou un [mod](https://code.claude.com/docs/fr/plugins/mods/events.md#hook-the-settings-hook-events) qui gère cet événement. Supprimez le hook, le mod, l'outil ou le callback et redémarrez `claude`

1011* **Le panneau de chat de l'[extension VS Code](https://code.claude.com/docs/fr/vs-code.md) ou l'[application Desktop](https://code.claude.com/docs/fr/desktop.md) exécute la session** : démarrez plutôt `claude` dans un terminal, comme le terminal intégré d'un IDE

1012* **Une règle couvre Bash, Edit ou Read** : une [règle deny ou ask](https://code.claude.com/docs/fr/permissions.md#manage-permissions) qui cible l'un de ces outils, au lancement ou dès que Claude Code la lit pendant la session, même si vous la supprimez ensuite. Supprimez la règle et redémarrez `claude`. Pour exclure un outil, utilisez [`--tools`](https://code.claude.com/docs/fr/cli-reference#cli-flags) au lieu d'une règle deny

1013* **[`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/fr/settings-reference#permissions-blockreadsoutsideworkingdirectories) est activé** : supprimez le paramètre de chaque fichier de paramètres qui le définit sur `true`, puis redémarrez `claude`

1014* **`claude` s'exécute à l'intérieur d'une autre session** : un `claude` démarré depuis l'outil Bash d'une session ou depuis un hook, même avec la variable sur sa ligne de commande. Démarrez `claude` depuis votre propre shell. Ne comptez pas sur cette limite des sessions imbriquées comme frontière de sécurité

1015* **Un hook `PreToolUse` répond `ask` pour une suppression** : modifiez ce que le hook retourne

1016* **Claude Code démarre la session pour vous** : les [sessions en arrière-plan](https://code.claude.com/docs/fr/agent-view.md), les coéquipiers d'une [équipe d'agents](https://code.claude.com/docs/fr/agent-teams.md) dans des volets divisés et les sessions créées par un serveur [Remote Control](https://code.claude.com/docs/fr/remote-control.md) démarrent sans la variable. Démarrez `claude` depuis votre propre shell

1017* **Les paramètres gérés ne peuvent pas être lus** : Claude Code n'a pas réussi à lire vos sources de [paramètres gérés](https://code.claude.com/docs/fr/managed-settings.md). Si les paramètres gérés par le serveur continuent d'échouer au chargement, consultez [Remote managed settings failed to load](https://code.claude.com/docs/fr/errors.md#remote-managed-settings-failed-to-load). Pour tout autre échec qui n'est pas une requête au registre, demandez à la personne qui gère cette source de le corriger

1018* **Le registre Windows ne peut pas être interrogé** : sous Windows et dans WSL, la variable nécessite une réponse du registre, même quand [WSL ne l'utilise pas pour les paramètres](https://code.claude.com/docs/fr/settings-reference.md#wslinheritswindowssettings). La requête peut échouer pendant toute la session sur un Windows non anglophone, dans WSL avec l'interop désactivée, ou dans un conteneur sur un noyau WSL2. Si l'interop est désactivée, activez-la. Sinon, exécutez ces suppressions vous-même

1019 

961### Remove-Item dans PowerShell1020### Remove-Item dans PowerShell

962 1021 

963Quand vous activez l'[outil PowerShell](https://code.claude.com/docs/fr/tools-reference.md#powershell-tool), Claude Code donne à `Remove-Item` et aux commandes intégrées `cmd` `rd`, `rmdir`, `del`, et `erase` leurs propres vérifications, distinctes de la liste des chemins critiques `rm`. Pour `Remove-Item`, le résultat dépend de la cible, et le premier cas correspondant s'applique :1022Quand vous activez l'[outil PowerShell](https://code.claude.com/docs/fr/tools-reference.md#powershell-tool), Claude Code donne à `Remove-Item` et aux commandes intégrées `cmd` `rd`, `rmdir`, `del`, et `erase` leurs propres vérifications, distinctes de la liste des chemins critiques `rm`. Pour `Remove-Item`, le résultat dépend de la cible, et le premier cas correspondant s'applique :

permissions.md +29 −27

Details

28 28 

29Lorsque vous choisissez « Oui, ne pas demander à nouveau » et que l'approbation s'enregistre de manière permanente, comme pour une commande Bash ou un domaine WebFetch, Claude Code enregistre la règle dans `.claude/settings.local.json` à la racine du référentiel git, résolu via [worktrees](https://code.claude.com/docs/fr/worktrees.md) vers le checkout principal. La règle s'applique aux sessions futures n'importe où dans ce référentiel, y compris les sessions démarrées dans des sous-répertoires et dans les worktrees. Une approbation de modification de fichier n'est pas enregistrée dans le fichier : comme le montre le tableau, elle dure jusqu'à la fin de la session. Dans certains cas, comme en dehors d'un référentiel git ou sur Windows, Claude Code n'utilise pas la racine du référentiel ; [Où Claude Code cherche chaque fichier](https://code.claude.com/docs/fr/settings.md#where-claude-code-looks-for-each-file) énumère ces cas et où il enregistre la règle à la place.29Lorsque vous choisissez « Oui, ne pas demander à nouveau » et que l'approbation s'enregistre de manière permanente, comme pour une commande Bash ou un domaine WebFetch, Claude Code enregistre la règle dans `.claude/settings.local.json` à la racine du référentiel git, résolu via [worktrees](https://code.claude.com/docs/fr/worktrees.md) vers le checkout principal. La règle s'applique aux sessions futures n'importe où dans ce référentiel, y compris les sessions démarrées dans des sous-répertoires et dans les worktrees. Une approbation de modification de fichier n'est pas enregistrée dans le fichier : comme le montre le tableau, elle dure jusqu'à la fin de la session. Dans certains cas, comme en dehors d'un référentiel git ou sur Windows, Claude Code n'utilise pas la racine du référentiel ; [Où Claude Code cherche chaque fichier](https://code.claude.com/docs/fr/settings.md#where-claude-code-looks-for-each-file) énumère ces cas et où il enregistre la règle à la place.

30 30 

31Avant la v2.1.211, Claude Code enregistrait toujours la règle dans le répertoire de démarrage, donc une approbation accordée dans un worktree ou un sous-répertoire ne s'appliquait pas au reste du référentiel. Les règles que les versions antérieures ont enregistrées dans un sous-répertoire ou un worktree s'appliquent toujours aux sessions démarrées là.

32 

33Parfois, une demande de permission n'offre qu'une approbation unique, sans option « ne pas demander à nouveau » et sans option pour autoriser l'action pour le reste de la session. Claude Code n'offre ces options que lorsque la demande peut vous montrer tout ce qu'elles autoriseraient, donc une règle que vous enregistrez à partir d'une demande couvre uniquement ce que son option indiquait. Lorsqu'une demande n'offre que l'approbation unique, approuvez l'action une fois, ou ajoutez la règle vous-même dans [`/permissions`](#manage-permissions). Pour ne plus recevoir de demandes pour une commande qui commence par un wrapper d'exécution tel que `watch`, ou pour une commande `find` avec une action telle que `-delete`, consultez [Wrappers d'exécution et actions `find`](#exec-wrappers-and-find-actions).31Parfois, une demande de permission n'offre qu'une approbation unique, sans option « ne pas demander à nouveau » et sans option pour autoriser l'action pour le reste de la session. Claude Code n'offre ces options que lorsque la demande peut vous montrer tout ce qu'elles autoriseraient, donc une règle que vous enregistrez à partir d'une demande couvre uniquement ce que son option indiquait. Lorsqu'une demande n'offre que l'approbation unique, approuvez l'action une fois, ou ajoutez la règle vous-même dans [`/permissions`](#manage-permissions). Pour ne plus recevoir de demandes pour une commande qui commence par un wrapper d'exécution tel que `watch`, ou pour une commande `find` avec une action telle que `-delete`, consultez [Wrappers d'exécution et actions `find`](#exec-wrappers-and-find-actions).

34 32 

35### Ajouter un commentaire lorsque vous répondez à une invite d'autorisation33### Ajouter un commentaire lorsque vous répondez à une invite d'autorisation


59 57 

60Une règle deny large comme `Bash(aws *)` bloque chaque appel correspondant, y compris les appels qui correspondent également à une règle allow plus étroite comme `Bash(aws s3 ls)`. Une règle allow ne peut pas créer une exception à partir d'une règle deny. La même priorité s'applique entre ask et allow : une règle ask correspondante demande une confirmation même lorsqu'une règle allow plus spécifique correspond également au même appel.58Une règle deny large comme `Bash(aws *)` bloque chaque appel correspondant, y compris les appels qui correspondent également à une règle allow plus étroite comme `Bash(aws s3 ls)`. Une règle allow ne peut pas créer une exception à partir d'une règle deny. La même priorité s'applique entre ask et allow : une règle ask correspondante demande une confirmation même lorsqu'une règle allow plus spécifique correspond également au même appel.

61 59 

62Les règles deny se comportent différemment selon qu'elles nomment un outil ou qu'elles délimitent un motif au sein de celui-ci. Un nom d'outil simple comme `Bash` supprime l'outil du contexte de Claude entièrement, donc Claude ne le voit jamais. Si vous ajoutez une telle règle en cours de session, Claude ne peut pas appeler l'outil à partir de son prochain appel d'outil ; [Denying an entire tool](https://code.claude.com/docs/fr/prompt-caching.md#denying-an-entire-tool) couvre ce qui se passe avec une définition que Claude a déjà vue. Une règle délimitée comme `Bash(rm *)` laisse l'outil disponible et bloque les appels correspondants lorsque Claude essaie de les utiliser.60Les règles deny se comportent différemment selon qu'elles nomment un outil ou qu'elles délimitent un motif au sein de celui-ci. Un nom d'outil simple comme `Bash` supprime l'outil du contexte de Claude entièrement, donc Claude ne le voit jamais. Si vous ajoutez une telle règle en cours de session, Claude ne peut pas appeler l'outil à partir de son prochain appel d'outil ; [Refus d'un outil entier](https://code.claude.com/docs/fr/prompt-caching.md#denying-an-entire-tool) couvre ce qui se passe avec une définition que Claude a déjà vue. Une règle délimitée comme `Bash(rm *)` laisse l'outil disponible et bloque les appels correspondants lorsque Claude essaie de les utiliser.

63 61 

64La suppression par nom simple s'applique à tous les outils sauf [`EndConversation`](https://code.claude.com/docs/fr/tools-reference#endconversation-tool-behavior) : une règle deny ne peut pas le supprimer tant que tout autre outil reste disponible, et une règle ask ne le demande jamais.62La suppression par nom simple s'applique à tous les outils sauf [`EndConversation`](https://code.claude.com/docs/fr/tools-reference#endconversation-tool-behavior) : une règle deny ne peut pas le supprimer tant que tout autre outil reste disponible, et une règle ask ne le demande jamais.

65 63 


218 216 

219> [!TIP]217> [!TIP]

220>218>

221> Claude Code connaît les opérateurs du shell. Une règle comme `Bash(safe-cmd *)` ne lui donne donc pas la permission d'exécuter la commande `safe-cmd && other-cmd`. Les séparateurs de commandes reconnus sont `&&`, `||`, `;`, `|`, `|&`, `&` et les sauts de ligne. Une règle doit correspondre à chaque sous-commande indépendamment.219> Claude Code connaît les opérateurs du shell. Une règle comme `Bash(safe-cmd *)` ne lui donne donc pas la permission d'exécuter la commande `safe-cmd && other-cmd`. Les séparateurs de commandes reconnus sont `&&`, `||`, `;`, `|`, `|&`, `&` et les sauts de ligne. Chaque sous-commande doit être autorisée pour qu'une commande composée s'exécute sans demande de permission, par exemple parce que la sous-commande correspond à une règle allow ou qu'il s'agit d'une [commande en lecture seule](#read-only-commands).

222 220 

223Les règles deny et ask s'appliquent dès qu'une sous-commande leur correspond, y compris une commande imbriquée dans un sous-shell, une substitution de commande ou le corps d'une structure de contrôle comme une boucle `for`. Une règle ask comme `Bash(git clean *)` vous demande toujours une confirmation pour `cd /tmp && git clean -f` ou `echo "$(git clean -f)"`, même en [mode auto](https://code.claude.com/docs/fr/permission-modes.md#eliminate-prompts-with-auto-mode).221Les règles deny et ask s'appliquent dès qu'une sous-commande leur correspond, y compris une commande imbriquée dans un sous-shell, une substitution de commande ou le corps d'une structure de contrôle comme une boucle `for`. Une règle ask comme `Bash(git clean *)` vous demande toujours une confirmation pour `cd /tmp && git clean -f` ou `echo "$(git clean -f)"`, même en [mode auto](https://code.claude.com/docs/fr/permission-modes.md#eliminate-prompts-with-auto-mode).

224 222 


314 312 

315### PowerShell313### PowerShell

316 314 

317Les règles de permission PowerShell ont la même forme que les règles Bash. Les caractères génériques `*` correspondent à n'importe quelle position, le suffixe `:*` équivaut à un ` *` final, et un `PowerShell` ou `PowerShell(*)` nu correspond à toutes les commandes. Cette configuration autorise les commandes `Get-ChildItem` et `git commit` tout en bloquant `Remove-Item` :315Les règles de permission PowerShell ont la même forme que les [règles Bash](#wildcard-patterns), et un `PowerShell` ou `PowerShell(*)` nu correspond à toutes les commandes. Cette configuration autorise les commandes `Get-ChildItem` et `git commit` tout en bloquant `Remove-Item` :

318 316 

319```json theme={null}317```json theme={null}

320{318{


330}328}

331```329```

332 330 

333Les alias courants sont normalisés avant la correspondance. Une règle écrite pour le nom de la cmdlet correspond aussi à ses alias, de sorte que `PowerShell(Get-ChildItem *)` correspond également à `gci`, `ls` et `dir`. La correspondance ne tient pas compte de la casse.331Les alias courants sont canonicalisés avant la comparaison. Une règle écrite pour le nom de la cmdlet correspond également à ces alias, de sorte que `PowerShell(Get-ChildItem *)` correspond aussi à `gci`, `ls` et `dir`. La correspondance n'est pas sensible à la casse.

334 332 

335Claude Code analyse l'AST PowerShell et vérifie indépendamment chaque commande d'une commande composée. Les opérateurs de pipeline `|`, les séparateurs d'instructions `;` et, sur PowerShell 7+, les opérateurs de chaînage `&&` et `||` divisent une commande composée en sous-commandes. Une règle doit correspondre à chaque sous-commande pour que la commande composée soit autorisée.333Claude Code analyse l'AST PowerShell et vérifie indépendamment chaque commande d'une commande composée. Les opérateurs de pipeline `|`, les séparateurs d'instructions `;` et, sur PowerShell 7+, les opérateurs de chaînage `&&` et `||` divisent une commande composée en sous-commandes. Chaque sous-commande doit être autorisée pour que la commande composée s'exécute sans demande de permission, par exemple en correspondant à une règle allow.

336 334 

337### Read et Edit335### Read et Edit

338 336 


390 388 

391Une règle que vous ajoutez via `/permissions` suit la ligne correspondant au fichier de paramètres dans lequel vous l'enregistrez.389Une règle que vous ajoutez via `/permissions` suit la ligne correspondant au fichier de paramètres dans lequel vous l'enregistrez.

392 390 

393À partir de la v2.1.211, les règles des paramètres locaux sont ancrées au [répertoire de travail principal](#working-directories) de la session, et non à la racine du dépôt où Claude Code [stocke le fichier](#permission-system). Dans une session démarrée à la racine du dépôt, les deux répertoires sont identiques ; dans une session de [worktree](https://code.claude.com/docs/fr/worktrees.md), une règle partagée comme `Edit(/src/**)` correspond au répertoire `src/` propre à ce worktree.391Les règles des paramètres locaux sont ancrées au [répertoire de travail principal](#working-directories) de la session, et non à la racine du dépôt où Claude Code [stocke le fichier](#permission-system). Dans une session démarrée à la racine du dépôt, les deux répertoires sont identiques ; dans une session de [worktree](https://code.claude.com/docs/fr/worktrees.md), une règle partagée comme `Edit(/src/**)` correspond au répertoire `src/` propre à ce worktree.

394 392 

395Une règle deny comme `Read(/secrets/**)` dans les paramètres utilisateur bloque `~/.claude/secrets/**`, et non un répertoire `secrets` de votre projet. Pour écrire dans les paramètres utilisateur une règle qui s'applique dans chaque projet, utilisez plutôt un chemin absolu `//` ou un chemin relatif au répertoire personnel `~/`.393Une règle deny comme `Read(/secrets/**)` dans les paramètres utilisateur bloque `~/.claude/secrets/**`, et non un répertoire `secrets` de votre projet. Pour écrire dans les paramètres utilisateur une règle qui s'applique dans chaque projet, utilisez plutôt un chemin absolu `//` ou un chemin relatif au répertoire personnel `~/`.

396 394 


524 522 

525Pour lire des fichiers sur un partage réseau sans cette demande, donnez d'abord au partage un chemin local :523Pour lire des fichiers sur un partage réseau sans cette demande, donnez d'abord au partage un chemin local :

526 524 

527* **Windows** : mappez le partage à une lettre de lecteur et passez ce lecteur avec `--add-dir` lorsque vous lancez Claude Code, comme décrit dans [Répertoires de travail](#working-directories). Les lectures sous un lecteur que vous ajoutez ultérieurement avec `/add-dir`, ou que vous listez dans `additionalDirectories` dans un fichier de paramètres, déclenchent toujours une demande. Pour supprimer ces demandes pour un partage mappé sur `Z:`, démarrez une nouvelle session dans PowerShell avec `claude --add-dir Z:\`.525* **Windows** : mappez le partage à une lettre de lecteur et passez ce lecteur avec `--add-dir` lorsque vous lancez Claude Code, comme décrit dans [Répertoires de travail](#working-directories). Pour un partage mappé sur `Z:`, exécutez `claude --add-dir Z:\` dans PowerShell.

528* **macOS et Linux** : montez le partage sur un chemin local, comme un répertoire sous `/mnt` ou `/Volumes`, et lisez les fichiers depuis cet emplacement, comme décrit dans [Working directory is a network path](https://code.claude.com/docs/fr/errors.md#working-directory-is-a-network-path)526* **macOS et Linux** : montez le partage sur un chemin local, comme un répertoire sous `/mnt` ou `/Volumes`, et lisez les fichiers depuis cet emplacement, comme décrit dans [Le répertoire de travail est un chemin réseau](https://code.claude.com/docs/fr/errors.md#working-directory-is-a-network-path)

529 527 

530### WebFetch528### WebFetch

531 529 


711 709 

712Pour charger les skills, commandes et subagents à partir d'un sous-répertoire de votre [répertoire de travail principal](#working-directories) en cours de session, exécutez `/add-dir` avec le chemin de ce sous-répertoire. Claude Code les charge pour le reste de la session sans vous demander confirmation ni ajouter de répertoire de travail, car le sous-répertoire est déjà lisible. Cela nécessite Claude Code v2.1.257 ou version ultérieure.710Pour charger les skills, commandes et subagents à partir d'un sous-répertoire de votre [répertoire de travail principal](#working-directories) en cours de session, exécutez `/add-dir` avec le chemin de ce sous-répertoire. Claude Code les charge pour le reste de la session sans vous demander confirmation ni ajouter de répertoire de travail, car le sous-répertoire est déjà lisible. Cela nécessite Claude Code v2.1.257 ou version ultérieure.

713 711 

714Claude Code découvre les styles de sortie à partir du répertoire de travail actuel et de ses parents, de votre répertoire utilisateur à `~/.claude/`, et des paramètres gérés. Les hooks et d'autres clés `.claude/settings.json` se chargent à partir du dossier `.claude/` du répertoire de travail actuel sans secours au répertoire parent, aux côtés de votre `~/.claude/settings.json` utilisateur et des paramètres gérés. `.claude/settings.local.json` se charge à partir de la racine du référentiel git à la place, même lorsque vous démarrez Claude Code dans un sous-répertoire, sauf dans les cas où Claude Code [n'utilise pas la racine du référentiel](https://code.claude.com/docs/fr/settings.md#where-claude-code-looks-for-each-file), comme sur Windows ; avant la v2.1.211, il se chargeait également uniquement à partir du répertoire de travail actuel. Les sessions du [SDK Agent](https://code.claude.com/docs/fr/agent-sdk/claude-code-features.md#control-filesystem-settings-with-settingsources) le chargent à partir du répertoire de travail dans toutes les versions.712#### Emplacements de chargement des styles de sortie, des hooks et des paramètres locaux

713 

714Claude Code découvre les styles de sortie à partir du répertoire de travail actuel et de ses parents, de votre répertoire utilisateur à `~/.claude/`, et des paramètres gérés. Les hooks et d'autres clés `.claude/settings.json` se chargent à partir du dossier `.claude/` du répertoire de travail actuel sans solution de repli vers le répertoire parent, aux côtés de votre `~/.claude/settings.json` utilisateur et des paramètres gérés.

715 

716`.claude/settings.local.json` se charge à partir de la racine du dépôt git à la place, même lorsque vous démarrez Claude Code dans un sous-répertoire, sauf dans les cas où Claude Code [n'utilise pas la racine du dépôt](https://code.claude.com/docs/fr/settings.md#where-claude-code-looks-for-each-file), comme sur Windows.

715 717 

716Pour partager cette configuration entre les projets, utilisez l'une de ces approches :718Pour partager cette configuration entre les projets, utilisez l'une de ces approches :

717 719 


765 767 

766Claude Code enregistre et stocke la confiance que vous acceptez selon l'endroit où vous le démarrez :768Claude Code enregistre et stocke la confiance que vous acceptez selon l'endroit où vous le démarrez :

767 769 

768* Dans un référentiel, Claude Code enregistre la confiance sur la racine du référentiel git, donc la confiance couvre l'ensemble du référentiel à l'exception de tout référentiel git imbriqué à l'intérieur, comme un sous-module. Dans une [arborescence de travail](https://code.claude.com/docs/fr/worktrees.md), il utilise la racine du checkout principal, comme il le fait pour les [règles enregistrées](#permission-system).770* Dans un dépôt, Claude Code enregistre la confiance sur la racine du dépôt git, donc la confiance couvre l'ensemble du dépôt à l'exception de tout dépôt git imbriqué à l'intérieur, comme un sous-module. Dans un [worktree](https://code.claude.com/docs/fr/worktrees.md), il utilise la racine du checkout principal, comme il le fait pour les [règles enregistrées](#permission-system).

769* En dehors d'un référentiel, Claude Code enregistre la confiance sur le répertoire à partir duquel vous l'avez démarré, et la confiance couvre tout sous-répertoire de ce répertoire à l'exception d'un référentiel git imbriqué à l'intérieur, comme un clone. Chaque sous-répertoire couvert compte alors comme un dossier dont vous avez approuvé le parent.771* En dehors d'un dépôt, Claude Code enregistre la confiance sur le répertoire à partir duquel vous l'avez démarré, et la confiance couvre tout sous-répertoire de ce répertoire à l'exception d'un dépôt git imbriqué à l'intérieur, comme un clone. Chaque sous-répertoire couvert compte alors comme un dossier dont vous avez approuvé le parent.

770* Lorsque vous démarrez dans votre répertoire personnel, Claude Code conserve la confiance pour la session actuelle uniquement et ne l'écrit pas sur le disque ; consultez la note sur les [protections supplémentaires](https://code.claude.com/docs/fr/security.md#additional-safeguards).772* Lorsque vous démarrez dans votre répertoire personnel, Claude Code conserve la confiance pour la session actuelle uniquement et ne l'écrit pas sur le disque ; consultez la note sur les [protections supplémentaires](https://code.claude.com/docs/fr/security.md#additional-safeguards).

771 773 

772Claude Code affiche la boîte de dialogue de confiance dans les sessions interactives uniquement. Une exécution `claude -p` ou une session SDK ne l'affiche jamais, et faire confiance à un dossier parent ne compte pas pour ces règles, donc [Ce qui s'exécute avant que vous fassiez confiance à un dossier](#what-runs-before-you-trust-a-folder) indique quel contenu du référentiel Claude Code utilise toujours dans chacune de ces deux situations.774Claude Code affiche la boîte de dialogue de confiance dans les sessions interactives uniquement. Une exécution `claude -p` ou une session SDK ne l'affiche jamais, et faire confiance à un dossier parent ne compte pas pour ces règles, donc [Ce qui s'exécute avant que vous fassiez confiance à un dossier](#what-runs-before-you-trust-a-folder) indique quel contenu du dépôt Claude Code utilise toujours dans chacune de ces deux situations.

773 775 

774Avant de démarrer ou de redémarrer une [session en arrière-plan](https://code.claude.com/docs/fr/agent-view.md), Claude Code vérifie également la confiance de l'espace de travail pour le répertoire dans lequel la session s'exécute. Si vous exécutez `claude --bg` à partir d'un terminal dans un répertoire auquel vous n'avez pas fait confiance, la boîte de dialogue de confiance apparaît en premier et la session démarre une fois que vous l'acceptez. Là où aucune boîte de dialogue ne peut apparaître, comme dans un script, la commande se termine à la place avec une erreur [`Workspace not trusted`](https://code.claude.com/docs/fr/errors#workspace-not-trusted-when-dispatching-a-background-session).776Avant de démarrer ou de redémarrer une [session en arrière-plan](https://code.claude.com/docs/fr/agent-view.md), Claude Code vérifie également la confiance de l'espace de travail pour le répertoire dans lequel la session s'exécute. Si vous exécutez `claude --bg` à partir d'un terminal dans un répertoire auquel vous n'avez pas fait confiance, la boîte de dialogue de confiance apparaît en premier et la session démarre une fois que vous l'acceptez. Là où aucune boîte de dialogue ne peut apparaître, comme dans un script, la commande se termine à la place avec une erreur [`Workspace not trusted`](https://code.claude.com/docs/fr/errors#workspace-not-trusted-when-dispatching-a-background-session).

775 777 

776### Quand votre fichier de paramètres locaux a besoin de confiance778### Quand votre fichier de paramètres locaux a besoin de confiance

777 779 

778`.claude/settings.local.json` est normalement votre propre fichier, donc Claude Code applique ses règles d'autorisation et ses répertoires supplémentaires sans l'étape de confiance. Lorsque le fichier est suivi dans git, ou que `.claude` est un lien symbolique, Claude Code le traite comme fourni par le référentiel à la place et retient ses règles sans les appliquer jusqu'à ce que vous fassiez confiance au dossier.780`.claude/settings.local.json` est normalement votre propre fichier, donc Claude Code applique ses règles d'autorisation et ses répertoires supplémentaires sans l'étape de confiance. Lorsque le fichier est suivi dans git, ou que `.claude` est un lien symbolique, Claude Code le traite comme fourni par le dépôt à la place et retient ses règles sans les appliquer jusqu'à ce que vous fassiez confiance au dossier.

779 781 

780Claude Code exécute git pour distinguer les deux, et il n'exécute git qu'une fois que vous avez approuvé le dossier : vous avez accepté la boîte de dialogue de confiance pour celui-ci ou pour un répertoire parent dont la confiance s'étend à celui-ci, ou vous êtes dans une session `-p` ou SDK, ce qui compte comme accepté. Jusqu'à ce moment, l'endroit où vous avez démarré Claude Code décide ce qui se passe avec les règles du fichier :782Claude Code exécute git pour distinguer les deux, et il n'exécute git qu'une fois que vous avez approuvé le dossier : vous avez accepté la boîte de dialogue de confiance pour celui-ci ou pour un répertoire parent dont la confiance s'étend à celui-ci, ou vous êtes dans une session `-p` ou SDK, ce qui compte comme accepté. Jusqu'à ce moment, l'endroit où vous avez démarré Claude Code décide ce qui se passe avec les règles du fichier :

781 783 

782* **Dans votre répertoire de configuration personnel :** Claude Code applique le `.claude/settings.local.json` de ce dossier immédiatement sans exécuter git. Votre répertoire de configuration personnel est votre répertoire personnel, ou un répertoire dont vous avez défini le sous-répertoire `.claude` comme [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/fr/env-vars#variables). Si ce répertoire `CLAUDE_CONFIG_DIR` se trouve à l'intérieur d'un référentiel git et que Claude Code [conserve vos paramètres locaux à la racine du référentiel](https://code.claude.com/docs/fr/settings.md#where-claude-code-looks-for-each-file) à la place, il retient les règles sans les appliquer, comme partout ailleurs.784* **Dans votre répertoire de configuration personnel :** Claude Code applique le `.claude/settings.local.json` de ce dossier immédiatement sans exécuter git. Votre répertoire de configuration personnel est votre répertoire personnel, ou un répertoire dont vous avez défini le sous-répertoire `.claude` comme [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/fr/env-vars#variables). Si ce répertoire `CLAUDE_CONFIG_DIR` se trouve à l'intérieur d'un dépôt git et que Claude Code [conserve vos paramètres locaux à la racine du dépôt](https://code.claude.com/docs/fr/settings.md#where-claude-code-looks-for-each-file) à la place, il retient les règles sans les appliquer, comme partout ailleurs.

783* **N'importe où ailleurs :** Claude Code retient les règles du fichier sans les appliquer, comme pour les paramètres du projet. Une fois la vérification exécutée, Claude Code applique les règles d'un fichier non suivi, ou d'un fichier dans un répertoire en dehors de tout référentiel git, même si vous n'avez pas approuvé ce dossier exact.785* **N'importe où ailleurs :** Claude Code retient les règles du fichier sans les appliquer, comme pour les paramètres du projet. Une fois la vérification exécutée, Claude Code applique les règles d'un fichier non suivi, ou d'un fichier dans un répertoire en dehors de tout dépôt git, même si vous n'avez pas approuvé ce dossier exact.

784 786 

785> [!NOTE]787> [!NOTE]

786>788>


788 790 

789### Ce qui s'exécute avant que vous fassiez confiance à un dossier791### Ce qui s'exécute avant que vous fassiez confiance à un dossier

790 792 

791Chaque ligne est un type de contenu qu'un référentiel peut fournir. Les colonnes sont les deux situations dans lesquelles vous n'avez pas approuvé le dossier lui-même : vous avez approuvé uniquement un dossier parent, ou vous avez exécuté `claude -p` ou le SDK là-bas, ce qui ne montre jamais la boîte de dialogue de confiance. La colonne du dossier parent ne s'applique pas à l'intérieur d'un [référentiel imbriqué](#project-allow-rules-and-workspace-trust) : dans une session interactive, Claude Code affiche la boîte de dialogue de confiance pour celui-ci, et une exécution `claude -p` ou SDK là-bas suit la colonne `claude -p`.793Chaque ligne est un type de contenu qu'un dépôt peut fournir. Les colonnes sont les deux situations dans lesquelles vous n'avez pas approuvé le dossier lui-même : vous avez approuvé uniquement un dossier parent, ou vous avez exécuté `claude -p` ou le SDK là-bas, ce qui ne montre jamais la boîte de dialogue de confiance. La colonne du dossier parent ne s'applique pas à l'intérieur d'un [dépôt imbriqué](#project-allow-rules-and-workspace-trust) : dans une session interactive, Claude Code affiche la boîte de dialogue de confiance pour celui-ci, et une exécution `claude -p` ou SDK là-bas suit la colonne `claude -p`.

792 794 

793| Ce que le référentiel fournit | Vous avez approuvé uniquement un dossier parent | `claude -p` ou le SDK, dossier jamais approuvé |795| Ce que le dépôt fournit | Vous avez approuvé uniquement un dossier parent | `claude -p` ou le SDK, dossier jamais approuvé |

794| :- | :- | :- |796| :- | :- | :- |

795| [Hooks](https://code.claude.com/docs/fr/hooks.md) dans les fichiers de paramètres, le bloc [`env`](https://code.claude.com/docs/fr/settings-reference#env) et les commandes d'assistance telles que [`apiKeyHelper`](https://code.claude.com/docs/fr/settings-reference#apikeyhelper), et les [hooks](https://code.claude.com/docs/fr/hooks.md#hooks-in-skills-and-agents) d'une compétence de projet et [`allowed-tools`](https://code.claude.com/docs/fr/skills#pre-approve-tools-for-a-skill) | Utilisé | Utilisé. La confiance de l'espace de travail ne bloque jamais les `allowed-tools` d'une compétence dans aucune session |797| [Hooks](https://code.claude.com/docs/fr/hooks.md) dans les fichiers de paramètres, le bloc [`env`](https://code.claude.com/docs/fr/settings-reference#env) et les commandes d'assistance telles que [`apiKeyHelper`](https://code.claude.com/docs/fr/settings-reference#apikeyhelper), et les [hooks](https://code.claude.com/docs/fr/hooks.md#hooks-in-skills-and-agents) d'un skill de projet et [`allowed-tools`](https://code.claude.com/docs/fr/skills#pre-approve-tools-for-a-skill) | Utilisé | Utilisé. La confiance de l'espace de travail ne bloque jamais les `allowed-tools` d'un skill dans aucune session |

796| Règles `permissions.allow` et `additionalDirectories` dans `.claude/settings.json` | Non utilisé jusqu'à ce que vous acceptiez la boîte de dialogue de confiance, qui réapparaît en les répertoriant | Non utilisé. Claude Code imprime un avertissement [`this workspace has not been trusted`](https://code.claude.com/docs/fr/errors#workspace-has-not-been-trusted) sur stderr |798| Règles `permissions.allow` et `additionalDirectories` dans `.claude/settings.json` | Non utilisé jusqu'à ce que vous acceptiez la boîte de dialogue de confiance, qui réapparaît en les répertoriant | Non utilisé. Claude Code imprime un avertissement [`this workspace has not been trusted`](https://code.claude.com/docs/fr/errors#workspace-has-not-been-trusted) sur stderr |

797| Hooks de frontmatter dans un [sous-agent](https://code.claude.com/docs/fr/sub-agents.md#hooks-in-subagent-frontmatter) de projet, un plugin [`@skills-dir`](https://code.claude.com/docs/fr/plugins/loading#plugins-shared-through-a-repository) de projet, et les entrées [`extraKnownMarketplaces`](https://code.claude.com/docs/fr/settings-reference#extraknownmarketplaces) du référentiel ou d'un répertoire `--add-dir` | Non utilisé, et aucune boîte de dialogue n'est proposée | Non utilisé |799| Hooks de frontmatter dans un [sous-agent](https://code.claude.com/docs/fr/sub-agents.md#hooks-in-subagent-frontmatter) de projet, un [plugin `@skills-dir`](https://code.claude.com/docs/fr/plugins/loading#plugins-shared-through-a-repository) de projet, et les entrées [`extraKnownMarketplaces`](https://code.claude.com/docs/fr/settings-reference#extraknownmarketplaces) du dépôt ou d'un répertoire `--add-dir` | Non utilisé, et aucune boîte de dialogue n'est proposée | Non utilisé |

798| Inline [`mcpServers`](https://code.claude.com/docs/fr/sub-agents#scope-mcp-servers-to-a-subagent) dans le frontmatter d'un sous-agent du référentiel ou d'un répertoire `--add-dir` | Non utilisé, et aucune boîte de dialogue n'est proposée | Non utilisé |800| Inline [`mcpServers`](https://code.claude.com/docs/fr/sub-agents#scope-mcp-servers-to-a-subagent) dans le frontmatter d'un sous-agent du dépôt ou d'un répertoire `--add-dir` | Non utilisé, et aucune boîte de dialogue n'est proposée | Non utilisé |

799| Serveurs dans `.mcp.json`, y compris ceux que le référentiel [approuve dans ses propres paramètres](https://code.claude.com/docs/fr/mcp.md#project-server-approvals-and-workspace-trust) | Claude Code vous demande avant de vous y connecter. Les approbations du référentiel lui-même ne comptent pas | Connecté sans demander, approuvé ou non. Le SDK ne les charge que lorsque `settingSources` inclut les paramètres du projet. `claude mcp list` dans le même dossier signale toujours un tel serveur comme en attente |801| Serveurs dans `.mcp.json`, y compris ceux que le dépôt [approuve dans ses propres paramètres](https://code.claude.com/docs/fr/mcp.md#project-server-approvals-and-workspace-trust) | Claude Code vous demande avant de vous y connecter. Les approbations du dépôt lui-même ne comptent pas | Connecté sans demander, approuvé ou non. Le SDK ne les charge que lorsque `settingSources` inclut les paramètres du projet. `claude mcp list` dans le même dossier signale toujours un tel serveur comme en attente |

800| Un [`headersHelper`](https://code.claude.com/docs/fr/mcp#trust-a-folder-before-its-headershelper-runs) sur un serveur dans `.mcp.json` | Non exécuté jusqu'à ce que vous acceptiez la boîte de dialogue de confiance, qui réapparaît en nommant l'endroit où l'assistant est déclaré. Claude Code connecte le serveur avec ses `headers` statiques seuls jusqu'à ce moment | Non exécuté. Claude Code connecte le serveur avec ses `headers` statiques seuls et imprime une ligne [`headersHelper not run`](https://code.claude.com/docs/fr/errors#headershelper-not-run) par serveur sur stderr |802| Un [`headersHelper`](https://code.claude.com/docs/fr/mcp#trust-a-folder-before-its-headershelper-runs) sur un serveur dans `.mcp.json` | Non exécuté jusqu'à ce que vous acceptiez la boîte de dialogue de confiance, qui réapparaît en nommant l'endroit où l'assistant est déclaré. Claude Code connecte le serveur avec ses `headers` statiques seuls jusqu'à ce moment | Non exécuté. Claude Code connecte le serveur avec ses `headers` statiques seuls et imprime une ligne [`headersHelper not run`](https://code.claude.com/docs/fr/errors#headershelper-not-run) par serveur sur stderr |

801 803 

802Pour les lignes qui ont besoin de ce dossier exact approuvé, approuvez-le manuellement : définissez `projects["<path>"].hasTrustDialogAccepted` sur `true` dans `~/.claude.json`, où `<path>` est la racine du référentiel, ou le dossier lui-même en dehors d'un référentiel. Claude Code imprime la clé exacte dans la ligne du journal de débogage pour un hook de sous-agent ignoré ou un serveur MCP en ligne, dans l'avertissement stderr pour les règles d'autorisation ignorées, et dans la ligne `headersHelper not run` pour un assistant ignoré.804Pour les lignes qui ont besoin de ce dossier exact approuvé, approuvez-le manuellement : définissez `projects["<path>"].hasTrustDialogAccepted` sur `true` dans `~/.claude.json`, où `<path>` est la racine du dépôt, ou le dossier lui-même en dehors d'un dépôt. Claude Code imprime la clé exacte dans la ligne du journal de débogage pour un hook de sous-agent ignoré ou un serveur MCP en ligne, dans l'avertissement stderr pour les règles d'autorisation ignorées, et dans la ligne `headersHelper not run` pour un assistant ignoré.

803 805 

804Avant d'exécuter `claude -p` dans un référentiel que vous n'avez pas écrit, décidez ce qu'il peut exécuter sur votre machine :806Avant d'exécuter `claude -p` dans un dépôt que vous n'avez pas écrit, décidez ce qu'il peut exécuter sur votre machine :

805 807 

806* Passez `--setting-sources user`, ou définissez le `settingSources` du SDK sans paramètres de projet, afin que Claude Code ne lise ni les fichiers de paramètres du projet ni son `.mcp.json`808* Passez `--setting-sources user`, ou définissez le `settingSources` du SDK sans paramètres de projet, afin que Claude Code ne lise ni les fichiers de paramètres du projet ni son `.mcp.json`

807* Commencez avec [`--bare`](https://code.claude.com/docs/fr/headless#start-faster-with-bare-mode) afin que Claude Code ne lise aucun hook, compétence, commande personnalisée, sous-agent, plugin ou serveur `.mcp.json` du projet. Le bloc `env` du projet et les assistants tels que `awsAuthRefresh` dans ses fichiers de paramètres s'appliquent toujours, et Claude Code ne lit `apiKeyHelper` que depuis `--settings`809* Commencez avec [`--bare`](https://code.claude.com/docs/fr/headless#start-faster-with-bare-mode) afin que Claude Code ne lise aucun hook, skill, commande personnalisée, sous-agent, plugin ou serveur `.mcp.json` du projet. Le bloc `env` du projet et les assistants tels que `awsAuthRefresh` dans ses fichiers de paramètres s'appliquent toujours, et Claude Code ne lit `apiKeyHelper` que depuis `--settings`

808* Passez `--settings '{"disableAllHooks": true}'` pour [désactiver les hooks](https://code.claude.com/docs/fr/hooks.md#disable-or-remove-hooks) pour cette exécution. Le définir uniquement dans vos paramètres utilisateur ne suffit pas, car les paramètres du projet du référentiel ont la priorité sur les vôtres et peuvent le redéfinir sur `false`810* Passez `--settings '{"disableAllHooks": true}'` pour [désactiver les hooks](https://code.claude.com/docs/fr/hooks.md#disable-or-remove-hooks) pour cette exécution. Le définir uniquement dans vos paramètres utilisateur ne suffit pas, car les paramètres du projet du dépôt ont la priorité sur les vôtres et peuvent le redéfinir sur `false`

809* Ajoutez une entrée [`disabledMcpjsonServers`](https://code.claude.com/docs/fr/settings-reference#disabledmcpjsonservers) pour rejeter un serveur `.mcp.json` par nom dans chaque type de session811* Ajoutez une entrée [`disabledMcpjsonServers`](https://code.claude.com/docs/fr/settings-reference#disabledmcpjsonservers) pour rejeter un serveur `.mcp.json` par nom dans chaque type de session

810 812 

811## Exemples de configurations813## Exemples de configurations

Details

313 313 

314Pour 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](https://code.claude.com/docs/fr/advisor.md), 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.314Pour 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](https://code.claude.com/docs/fr/advisor.md), 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.

315 315 

316#### Envoyer une requête à un autre modèle

317 

318Si une requête `turn.step` échoue avec une erreur de modèle lorsque `model` est un alias comme `haiku`, passez à Claude Code v2.1.309 ou une version ultérieure, ou utilisez un identifiant de modèle complet. Avant la v2.1.309, un alias était envoyé tel quel.

319 

320Pour envoyer une requête à un autre modèle, transmettez à `next` l'événement avec `model` modifié, comme dans `yield* next({ ...e, model: 'haiku' })`.

321 

316### Modifier ou refuser une lecture des paramètres322### Modifier ou refuser une lecture des paramètres

317 323 

318Un hook `settings.read` s'exécute lors de la lecture effectuée par un mod et lors de la lecture propre à Claude Code :324Utilisez un hook `settings.read` pour modifier ou refuser une lecture des paramètres, qu'il s'agisse de la lecture effectuée par un mod ou de la lecture propre à Claude Code :

319 325 

320* **Lecture par un mod** : un mod appelle [`$.settings.read`](https://code.claude.com/docs/fr/plugins/mods/api#read-one-source-or-one-key).326* **Lecture par un mod** : un mod appelle [`$.settings.read`](https://code.claude.com/docs/fr/plugins/mods/api#read-one-source-or-one-key).

321* **Lecture propre à Claude Code** : Claude Code construit les paramètres fusionnés de la session. Cette lecture se répète lorsque les paramètres ou les plugins chargés changent.327* **Lecture propre à Claude Code** : votre hook s'exécute une première fois lorsque Claude Code fusionne les paramètres de la session, après le chargement des mods de la session. Votre hook s'exécute de nouveau lorsque les paramètres ou les plugins chargés changent.

322 328 

323Avant de vous appuyer sur l'une ou l'autre de ces lectures, vérifiez le garde-fou et votre version :329Vérifiez quels mods reçoivent cet événement, ainsi que votre version de Claude Code :

324 330 

325* **Le garde-fou intégré** : avec des paramètres gérés, ou avec un [`/login`](https://code.claude.com/docs/fr/authentication#authentication-precedence) Team ou Enterprise comme identifiants de la session, le [garde-fou intégré](https://code.claude.com/docs/fr/plugins/mods/admin.md#know-what-happens-by-default) peut ignorer ce hook dans un mod que vous installez ou chargez avec `--plugin-dir`. Pour le vérifier, recherchez `settings.read bypassed by cc-plugin-sec-default` dans le [log de débogage](https://code.claude.com/docs/fr/plugins/mods/troubleshoot.md#read-the-debug-log). Si une ligne contenant ce texte nomme votre mod, demandez à l'administrateur de votre organisation d'[installer le mod parmi les mods de l'organisation](https://code.claude.com/docs/fr/plugins/mods/admin.md#install-your-organizations-mods).331* **Le garde-fou intégré** : avec des paramètres gérés, ou avec un [`/login`](https://code.claude.com/docs/fr/authentication#authentication-precedence) Team ou Enterprise comme identifiants de la session, le [garde-fou intégré](https://code.claude.com/docs/fr/plugins/mods/admin.md#know-what-happens-by-default) peut ignorer ce hook dans un mod que vous installez ou chargez avec `--plugin-dir`. Pour le vérifier, recherchez `settings.read bypassed by cc-plugin-sec-default` dans le [log de débogage](https://code.claude.com/docs/fr/plugins/mods/troubleshoot.md#read-the-debug-log). Si une ligne contenant ce texte nomme votre mod, demandez à l'administrateur de votre organisation d'[installer le mod parmi les mods de l'organisation](https://code.claude.com/docs/fr/plugins/mods/admin.md#install-your-organizations-mods).

326* **La version** : le déclenchement de l'événement lors de la lecture propre à Claude Code, ainsi que le champ `e.layers`, nécessitent Claude Code v2.1.304 ou une version ultérieure.332* **La version** : le déclenchement de l'événement lors de la lecture propre à Claude Code, ainsi que le champ `e.layers`, nécessitent Claude Code v2.1.304 ou une version ultérieure.


336 342 

337#### Distinguer la lecture propre à Claude Code de la lecture par un mod343#### Distinguer la lecture propre à Claude Code de la lecture par un mod

338 344 

339Lors de la [lecture propre à Claude Code](#settings-read-hook), [`next.origin`](https://code.claude.com/docs/fr/plugins/mods/reference#the-hook-function) vaut `{ plugin: 'engine', tier: 'core' }`, et lors de la lecture par un mod, `next.origin.plugin` est le nom du mod appelant.345Vérifiez [`next.origin`](https://code.claude.com/docs/fr/plugins/mods/reference#the-hook-function) :

346 

347* **Lecture propre à Claude Code** : `{ plugin: 'engine', tier: 'core' }`

348* **Lecture par un mod** : `plugin` est le nom du mod appelant

340 349 

341#### Ce que peut renvoyer un hook `settings.read`350#### Ce que peut renvoyer un hook `settings.read`

342 351 

343Votre hook peut renvoyer le résultat de [`next(e)`](https://code.claude.com/docs/fr/plugins/mods/reference#the-hook-function) sans modification, son propre `{ value }`, ou `{ deny: reason }`. Lors de la [lecture propre à Claude Code](#settings-read-hook) comme lors de la lecture par un mod, un `{ value }` remplace ce que fournit la lecture et `{ deny: reason }` refuse la lecture :352Renvoyez le résultat de [`next(e)`](#settings-read-next) sans modification pour laisser la lecture telle quelle, ou renvoyez l'une des valeurs suivantes :

344 353 

345| Valeur renvoyée | Lors de la lecture propre à Claude Code | Lors de la lecture par un mod |354| Valeur renvoyée | Lors de la [lecture propre à Claude Code](#settings-read-hook) | Lors de la lecture par un mod |

346| :- | :- | :- |355| :- | :- | :- |

347| `{ value }` | Pour chaque clé que vous modifiez, ce que vous renvoyez remplace la valeur entière de cette clé dans les paramètres fusionnés de la session, si elle [respecte le schéma de la clé](https://code.claude.com/docs/fr/plugins/mods/troubleshoot.md#settings-read-key-refused) | L'appel de ce mod se résout avec votre `value`, ou avec la `key` qu'il a demandée extraite de votre `value` ; renvoyez donc un objet complet et non un tableau |356| `{ value }` | Pour chaque clé modifiée, vous remplacez sa valeur entière dans les paramètres fusionnés de la session, si la vôtre [respecte le schéma de la clé](https://code.claude.com/docs/fr/plugins/mods/troubleshoot.md#settings-read-key-refused) | L'appel de ce mod se résout avec votre `value`, ou avec la `key` qu'il a demandée extraite de votre `value` ; renvoyez donc un objet complet et non un tableau |

348| `{ deny: reason }` | La session conserve les paramètres tels qu'ils étaient fusionnés avant qu'un hook ne réponde, et le [log de débogage consigne votre `reason`](https://code.claude.com/docs/fr/plugins/mods/troubleshoot#settings-read-refused) | L'appel de ce mod est rejeté avec `<calling mod>: $.settings.read: <reason>` |357| `{ deny: reason }` | La session conserve les paramètres tels qu'ils étaient fusionnés avant qu'un hook ne réponde, et le [log de débogage consigne votre `reason`](https://code.claude.com/docs/fr/plugins/mods/troubleshoot#settings-read-refused) | L'appel de ce mod est rejeté avec `<calling mod>: $.settings.read: <reason>` |

349 358 

350Lors de la lecture propre à Claude Code, construisez votre `{ value }` à partir de la [`value` de `next(e)`](#settings-read-next), car une clé que vous omettez n'est pas définie. Lorsque Claude Code lit une clé comme `env` depuis chaque source séparément, la modifier dans votre `value` [n'a aucun effet](https://code.claude.com/docs/fr/plugins/mods/troubleshoot.md#settings-read-key-no-effect).359Lors de la lecture propre à Claude Code, construisez votre `{ value }` à partir de la [`value` de `next(e)`](#settings-read-next), car une clé que vous omettez n'est pas définie. Lorsque Claude Code lit une clé comme `env` depuis chaque source séparément, la modifier dans votre `value` [n'a aucun effet](https://code.claude.com/docs/fr/plugins/mods/troubleshoot.md#settings-read-key-no-effect).


373})382})

374```383```

375 384 

376Lors de la lecture propre à Claude Code, si votre hook renvoie une valeur hors du schéma de la clé, comme une chaîne, seule cette clé conserve la valeur fusionnée avant qu'un hook ne réponde. Le log de débogage indique alors [`the answer for <key> is no value the key can hold`](https://code.claude.com/docs/fr/plugins/mods/troubleshoot#settings-read-key-refused). Si votre valeur respecte le schéma et que la clé ne change toujours pas, consultez [pourquoi une clé renvoyée n'a aucun effet](https://code.claude.com/docs/fr/plugins/mods/troubleshoot.md#settings-read-key-no-effect).385Lors de la lecture propre à Claude Code, si votre hook renvoie une valeur hors du schéma de la clé, comme une chaîne, seule cette clé conserve la valeur fusionnée avant qu'un hook ne réponde. Le log de débogage indique alors [`the answer for <key> is no value the key can hold`](https://code.claude.com/docs/fr/plugins/mods/troubleshoot#settings-read-key-refused). Si votre valeur respecte le schéma et que la clé ne change toujours pas, consultez [pourquoi une clé ne prend pas effet](https://code.claude.com/docs/fr/plugins/mods/troubleshoot.md#settings-read-key-no-effect).

377 386 

378### Gérer les événements des hooks des paramètres387### Gérer les événements des hooks des paramètres

379 388 

Details

421Note: Type a note and press Enter421Note: Type a note and press Enter

422```422```

423 423 

424Ajoutez `rows` pour que le champ puisse contenir plusieurs lignes. Entrée soumet toujours le texte, et une barre oblique inverse avant Entrée commence une nouvelle ligne, tout comme Maj+Entrée là où [le terminal le prend en charge](https://code.claude.com/docs/fr/terminal-config.md#enter-multiline-prompts). La galerie montre [un champ avec `rows`](https://code.claude.com/docs/fr/plugins/mods/gallery#input).424Définissez `rows` sur 2 ou plus pour obtenir [un champ qui contient plusieurs lignes](https://code.claude.com/docs/fr/plugins/mods/gallery.md#input).

425 425 

426La [galerie d'interfaces](https://code.claude.com/docs/fr/plugins/mods/gallery.md) contient des exemples et des captures d'écran de la plupart des éléments. Ce tableau liste chaque élément :426La [galerie d'interfaces](https://code.claude.com/docs/fr/plugins/mods/gallery.md) contient des exemples et des captures d'écran de la plupart des éléments. Ce tableau liste chaque élément :

427 427 


546| Touche | Ce qu'elle fait |546| Touche | Ce qu'elle fait |

547| :- | :- |547| :- | :- |

548| Tab | Se déplace vers le contrôle suivant |548| Tab | Se déplace vers le contrôle suivant |

549| Haut et Bas | Se déplacent entre les contrôles pendant que votre dessin s'adapte. Quand le volet ou la bande a plus de lignes qu'il ne peut en afficher, ils le font défiler. Dans un `Input`, ils [se déplacent d'abord entre les lignes du champ](https://code.claude.com/docs/fr/plugins/mods/gallery.md#input). |549| Haut et Bas | Se déplacent entre les contrôles pendant que votre dessin s'adapte. Quand le volet ou la bande a plus de lignes qu'il ne peut en afficher, ils le font défiler. Dans un `Input` dans le terminal, ils [se déplacent entre les lignes du champ](https://code.claude.com/docs/fr/plugins/mods/gallery.md#input), et depuis sa première ou sa dernière ligne, ils passent au contrôle précédent ou suivant. |

550| Entrée | Appuie sur le `Button` ciblé, soumet le `Input` ciblé, ou choisit dans un `Select` |550| Entrée | Appuie sur le `Button` ciblé, soumet le `Input` ciblé, ou choisit dans un `Select` |

551| La touche de raccourci d'un bouton | Appuie sur ce bouton. Pendant qu'un `Input` a le focus, chaque touche imprimable va au champ. |551| La touche de raccourci d'un bouton | Appuie sur ce bouton. Pendant qu'un `Input` a le focus, chaque touche imprimable va au champ. |

552| Page Up, Page Down, Home et End | Font défiler votre volet ou votre bande quand il a plus de lignes qu'il ne peut en afficher |552| Page Up, Page Down, Home et End | Font défiler votre volet ou votre bande quand il a plus de lignes qu'il ne peut en afficher |

Details

110 110 

111### Commandes et configuration111### Commandes et configuration

112 112 

113Les événements de commande et de configuration se déclenchent lorsqu'une commande s'exécute ou est listée, lorsqu'une ligne de `/config` est affichée ou modifiée, et lors d'une lecture des paramètres :

114 

115| Événement | Se déclenche lorsque | Un hook peut renvoyer |113| Événement | Se déclenche lorsque | Un hook peut renvoyer |

116| :- | :- | :- |114| :- | :- | :- |

117| [`command.run`](https://code.claude.com/docs/fr/plugins/mods/api#add-a-command) | Une commande est sur le point de s'exécuter | `{ text }`, `{}` ou `next(e)` |115| [`command.run`](https://code.claude.com/docs/fr/plugins/mods/api#add-a-command) | Une commande est sur le point de s'exécuter | `{ text }`, `{}` ou `next(e)` |

118| `command.describe` | Une fois pour chaque commande, pour la liste des commandes | `{ description, argumentHint, isHidden }` |116| `command.describe` | Une fois pour chaque commande, pour la liste des commandes | `{ description, argumentHint, isHidden }` |

119| `config.set` | Une ligne de `/config` est sur le point de changer | `next({ ...e, value })` ou `{ deny: reason }` |117| `config.set` | Une ligne de `/config` est sur le point de changer | `next({ ...e, value })` ou `{ deny: reason }` |

120| `config.describe` | Une fois pour chaque ligne de `/config` | `{ label, description, isHidden }` |118| `config.describe` | Une fois pour chaque ligne de `/config` | `{ label, description, isHidden }` |

121| [`settings.read`](https://code.claude.com/docs/fr/plugins/mods/events#settings-read-hook) | Un mod appelle [`$.settings.read`](https://code.claude.com/docs/fr/plugins/mods/api#reach-files-processes-and-the-network), ou Claude Code construit les paramètres fusionnés de la session | `next(e)`, `{ value }` ou `{ deny: reason }` |119| [`settings.read`](https://code.claude.com/docs/fr/plugins/mods/events#settings-read-hook) | Un mod appelle [`$.settings.read`](https://code.claude.com/docs/fr/plugins/mods/api#reach-files-processes-and-the-network), ou Claude Code construit les paramètres fusionnés de la session. Nécessite Claude Code v2.1.304 ou une version ultérieure pour la propre lecture de Claude Code et pour `e.layers` | `next(e)`, `{ value }` ou `{ deny: reason }` |

122 120 

123#### `e.layers` et `e.source` sur `settings.read`121#### `e.layers` et `e.source` sur `settings.read`

124 122 

125* **`e.layers`** : un objet `{ source, settings }` pour chaque source utilisée qui contient des paramètres, de la [priorité](https://code.claude.com/docs/fr/settings.md#settings-precedence) la plus faible à la plus élevée. Consultez [Ce que reçoit un hook `settings.read`](https://code.claude.com/docs/fr/plugins/mods/events#settings-read-receives).123* **`e.layers`** : un objet `{ source, settings }` pour chaque source utilisée qui contient des paramètres, de la [priorité](https://code.claude.com/docs/fr/settings.md#settings-precedence) la plus faible à la plus élevée. Consultez [Ce que reçoit un hook `settings.read`](https://code.claude.com/docs/fr/plugins/mods/events#settings-read-receives).

126* **`e.source`** : la source unique demandée par un mod, comme dans `$.settings.read({ source: 'policy' })`. Absent lors de la propre lecture de Claude Code et de toute autre lecture des paramètres fusionnés124* **`e.source`** : la source unique demandée par un mod, comme dans `$.settings.read({ source: 'policy' })`. Absent lors de la propre lecture de Claude Code et lors d'une lecture des paramètres fusionnés

127 

128Sur `settings.read`, le déclenchement de l'événement lors de la propre lecture de Claude Code et le champ `e.layers` nécessitent Claude Code v2.1.304 ou une version ultérieure. Pour savoir quand le hook s'exécute et ce qu'il peut renvoyer, avec un exemple, consultez [Modifier ou refuser une lecture des paramètres](https://code.claude.com/docs/fr/plugins/mods/events.md#settings-read-hook).

129 125 

130### Tours126### Tours

131 127 


271| :- | :- | :-: | :-: | :-: |267| :- | :- | :-: | :-: | :-: |

272| [`Box`](https://code.claude.com/docs/fr/plugins/mods/interface#build-a-tree-from-elements) | `key`, disposition flex, [`gap`, `padding`, `margin`](#box-spacing-steps), `width`, `height`, `minWidth`, `minHeight`, [`borderStyle`](#box-border-styles), `borderColor`, `borderDimColor`, `backgroundColor`, `position`, `top`, `left`, `right`, `bottom`, `overflow`, `display`, `hover` | ✓ | ✓ | ✓ |268| [`Box`](https://code.claude.com/docs/fr/plugins/mods/interface#build-a-tree-from-elements) | `key`, disposition flex, [`gap`, `padding`, `margin`](#box-spacing-steps), `width`, `height`, `minWidth`, `minHeight`, [`borderStyle`](#box-border-styles), `borderColor`, `borderDimColor`, `backgroundColor`, `position`, `top`, `left`, `right`, `bottom`, `overflow`, `display`, `hover` | ✓ | ✓ | ✓ |

273| [`Text`](https://code.claude.com/docs/fr/plugins/mods/interface#build-a-tree-from-elements) | `color`, `backgroundColor`, [`bold`](#text-bold), `italic`, `underline`, `strikethrough`, `dimColor`, `inverse`, `wrap`, [`size`, `weight`, `mono`, `tabular`](#text-typography), `hover` | ✓ | ✓ | ✓ |269| [`Text`](https://code.claude.com/docs/fr/plugins/mods/interface#build-a-tree-from-elements) | `color`, `backgroundColor`, [`bold`](#text-bold), `italic`, `underline`, `strikethrough`, `dimColor`, `inverse`, `wrap`, [`size`, `weight`, `mono`, `tabular`](#text-typography), `hover` | ✓ | ✓ | ✓ |

274| [`Button`](https://code.claude.com/docs/fr/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action`, `hover` | ✓ | ✓ | ✓ |270| [`Button`](https://code.claude.com/docs/fr/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `children`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action`, `variant`, `role`, `hover` | ✓ | ✓ | ✓ |

275| [`Link`](https://code.claude.com/docs/fr/plugins/mods/interface#link-in-the-desktop-app) | `href`, `label`. Consultez [Limites](#limits). | ✓ | ✓ | ✓ |271| [`Link`](https://code.claude.com/docs/fr/plugins/mods/interface#link-in-the-desktop-app) | `href`, `label`. Consultez [Limites](#limits). | ✓ | ✓ | ✓ |

276| [`Code`](https://code.claude.com/docs/fr/plugins/mods/gallery#show-code-and-changes) | `source`, `language`, `path`, `startLine`, `format`, `wrap` | ✓ | ✓ | ✓ |272| [`Code`](https://code.claude.com/docs/fr/plugins/mods/gallery#show-code-and-changes) | `source`, `language`, `path`, `startLine`, `format`, `wrap` | ✓ | ✓ | ✓ |

277| `Markdown` | `text`, `key`, `dimColor`, `onLinkPress`, `pressableLinks` | ✓ | ✓ | ✓ |273| `Markdown` | `text`, `key`, `dimColor`, `onLinkPress`, `pressableLinks` | ✓ | ✓ | ✓ |


288* **Hotkeys numériques dans le bandeau** : un `hotkey` numérique sur un bouton du bandeau se déclenche aussi lorsque l'utilisateur tape ce seul chiffre dans un prompt vide puis marque une pause284* **Hotkeys numériques dans le bandeau** : un `hotkey` numérique sur un bouton du bandeau se déclenche aussi lorsque l'utilisateur tape ce seul chiffre dans un prompt vide puis marque une pause

289* **Un bandeau réduit** : tant que le bandeau est [réduit](https://code.claude.com/docs/fr/plugins/mods/interface.md#when-the-user-collapses-the-band), ni un raccourci `action` ni un hotkey ne presse un bouton qu'il contient285* **Un bandeau réduit** : tant que le bandeau est [réduit](https://code.claude.com/docs/fr/plugins/mods/interface.md#when-the-user-collapses-the-band), ni un raccourci `action` ni un hotkey ne presse un bouton qu'il contient

290* **Deux boutons sur un même hotkey** : lorsque deux boutons d'un même dessin désignent le même `hotkey`, c'est le dernier qui l'obtient286* **Deux boutons sur un même hotkey** : lorsque deux boutons d'un même dessin désignent le même `hotkey`, c'est le dernier qui l'obtient

287* **`variant`** : `primary` ou `secondary`, toute autre valeur lève une exception. Dans le terminal, un bouton `primary` est dessiné dans la couleur d'accentuation, sauf s'il est `plain`.

288* **`role`** : `dismiss` marque un bouton de fermeture, toute autre valeur lève une exception. Effectuez la fermeture dans votre `onPress`. Dans un bandeau qui contient du texte et une rangée de boutons, l'application Desktop peut dessiner le premier bouton `dismiss` de la rangée comme son propre contrôle de fermeture. Le terminal dessine le bouton comme il le ferait sans `role`.

289 

290Un `Button` peut contenir des `children` à la place d'un `label` :

291 

292* **Ce que peuvent être les enfants** : des chaînes et des éléments `Text`, comme un nom suivi d'un détail atténué ou d'une pastille colorée. Claude Code refuse tout autre élément à l'intérieur d'un `Button`.

293* **Nommer le bouton** : le `label` nomme le bouton et prend par défaut le texte de ses enfants. Donnez une `key` ou un `label` à un bouton dont les enfants ne se limitent pas à une seule chaîne.

294* **Dans le terminal** : les enfants sont dessinés à l'emplacement du label, et un appui n'importe où sur eux compte comme un seul appui : vous pouvez donc faire de chaque ligne d'une liste un bouton unique

295* **Dans l'application Desktop et l'extension VS Code** : le bouton dessine son `label`

296 

297> [!NOTE]

298>

299> Un `Button` dont les enfants ne se limitent pas à une seule chaîne nécessite Claude Code v2.1.295 ou une version ultérieure.

291 300 

292`autoFocus` n'accepte que `true` sur tout contrôle : omettez donc la prop pour le désactiver.301`autoFocus` n'accepte que `true` sur tout contrôle : omettez donc la prop pour le désactiver.

293 302 


295 304 

296* **`Box`** : `position` avec ses `top`, `left`, `right` et `bottom`, `alignSelf`, `borderDimColor` et `hover`305* **`Box`** : `position` avec ses `top`, `left`, `right` et `bottom`, `alignSelf`, `borderDimColor` et `hover`

297* **`Text`** : `size`, `mono`, `tabular` et `hover`306* **`Text`** : `size`, `mono`, `tabular` et `hover`

298* **`Button`** : `hotkey`, `plain`, `autoFocus`, `action` et `hover` ; l'utilisateur y presse donc un bouton d'un clic, ou avec Entrée une fois que le bouton a le focus307* **`Button`** : `hotkey`, `plain`, `autoFocus`, `action` et `hover` ; l'utilisateur y presse donc un bouton d'un clic, ou avec Entrée une fois que le bouton a le focus. L'extension ignore également `variant` et `role`.

299* **`Code`** : `language`, `path`, `startLine`, `format` et `wrap` ; le code est donc dessiné sans couleurs ni numéros de ligne, et un bloc `format: 'diff'` affiche le texte brut du diff308* **`Code`** : `language`, `path`, `startLine`, `format` et `wrap` ; le code est donc dessiné sans couleurs ni numéros de ligne, et un bloc `format: 'diff'` affiche le texte brut du diff

300* **`Input` et `Select`** : `autoFocus`309* **`Input` et `Select`** : `autoFocus`, ainsi que `rows` sur un `Input`

301* **`Svg`** : `isInteractive`310* **`Svg`** : `isInteractive`

302 311 

303### Styles de bordure de `Box`312### Styles de bordure de `Box`


364| Le temps d'exécution d'un gestionnaire `.catch` | 1 seconde |373| Le temps d'exécution d'un gestionnaire `.catch` | 1 seconde |

365| L'ensemble des hooks `session.end` | Aussi longtemps que le [budget du hook SessionEnd](https://code.claude.com/docs/fr/hooks.md#sessionend-input), soit 1,5 seconde sauf si vous le modifiez, compté à partir du moment où les hooks `SessionEnd` de vos paramètres se terminent |374| L'ensemble des hooks `session.end` | Aussi longtemps que le [budget du hook SessionEnd](https://code.claude.com/docs/fr/hooks.md#sessionend-input), soit 1,5 seconde sauf si vous le modifiez, compté à partir du moment où les hooks `SessionEnd` de vos paramètres se terminent |

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

376| `stdout` et `stderr` de `$.process.run` | 4 Mio chacun. `isStdoutTruncated` ou `isStderrTruncated` vaut `true` lorsque l'un d'eux a été tronqué. |

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

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

369| Le corps de la requête d'un `$.http.fetch` | 4 Mio, comptés en caractères. Un appel avec un corps plus volumineux est rejeté. |379| Le corps de la requête d'un `$.http.fetch` | 4 Mio, comptés en caractères. Un appel avec un corps plus volumineux est rejeté. |


381| `$.store` | 4 Mio de JSON au total |391| `$.store` | 4 Mio de JSON au total |

382| `$.session.messages()` | Les 4 096 entrées les plus récentes |392| `$.session.messages()` | Les 4 096 entrées les plus récentes |

383| Redessins `$.ui.invalidate('ui.render')` | Limités à 10 par seconde, ou 30 dans le terminal pour le volet visible, le bandeau déployé et la ligne d'indication sous le prompt. Les appels plus rapprochés sont regroupés. |393| Redessins `$.ui.invalidate('ui.render')` | Limités à 10 par seconde, ou 30 dans le terminal pour le volet visible, le bandeau déployé et la ligne d'indication sous le prompt. Les appels plus rapprochés sont regroupés. |

384| `$.ui.toast` | Affiché pendant 4 secondes sauf si vous passez `{ timeoutMs }` |394| `$.ui.toast` | Affiché pendant 4 secondes sauf si vous passez `{ timeoutMs }`. Dans le [moteur de rendu classique](https://code.claude.com/docs/fr/fullscreen.md#enable-fullscreen-rendering), un toast plus récent d'un mod peut [prendre la place de son toast plus ancien](https://code.claude.com/docs/fr/plugins/mods/troubleshoot.md#a-toast-doesn’t-appear) en cours d'affichage ou en attente d'affichage. |

385| Un volet ouvert sans que l'utilisateur l'ait demandé | Placé à partir de 144 colonnes de terminal, 110 une fois que l'utilisateur l'a ouvert une fois |395| Un volet ouvert sans que l'utilisateur l'ait demandé | Placé à partir de 144 colonnes de terminal, 110 une fois que l'utilisateur l'a ouvert une fois |

396| Profondeur d'imbrication des arguments d'un appel à l'API des mods | 28 000 niveaux. Au-delà, l'appel est rejeté avec un message se terminant par `nesting deeper than 28000 levels is not supported`. Nécessite Claude Code v2.1.299 ou une version ultérieure. |

397| Profondeur d'imbrication d'un événement modifié passé à `next`, en dehors des [hooks générateurs asynchrones](#events) tels qu'un hook sur `turn.step` | 28 000 niveaux. Au-delà, `next` est rejeté avec un message se terminant par `nesting deeper than 28000 levels is not supported`. Nécessite Claude Code v2.1.299 ou une version ultérieure. |

398| Profondeur d'imbrication de la valeur de retour d'un hook, en dehors de `ui.render`, `ui.resolve` et des hooks générateurs asynchrones | 28 000 niveaux. Au-delà, le résultat du hook est refusé, et [l'avis qui le signale](https://code.claude.com/docs/fr/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing) inclut `nesting deeper than 28000 levels is not supported`. Nécessite Claude Code v2.1.299 ou une version ultérieure. |

386| Portées, telles que les fonctions, les blocs et les boucles, imbriquées les unes dans les autres dans un même fichier d'un module de hooks | 2 000 |399| Portées, telles que les fonctions, les blocs et les boucles, imbriquées les unes dans les autres dans un même fichier d'un module de hooks | 2 000 |

387| Noms de commandes, d'outils, de types de sous-agents et de volets | Lettres, chiffres, `_` et `-`, jusqu'à 64 caractères |400| Noms de commandes, d'outils, de types de sous-agents et de volets | Lettres, chiffres, `_` et `-`, jusqu'à 64 caractères |

388| Un test `claude plugin test` | 5 secondes sauf si le test définit `timeoutMs` |401| Un test `claude plugin test` | 5 secondes sauf si le test définit `timeoutMs` |

Details

341 341 

342### Une clé renvoyée par votre hook `settings.read` ne prend pas effet342### Une clé renvoyée par votre hook `settings.read` ne prend pas effet

343 343 

344Les entrées `env` renvoyées ne deviennent pas des variables d'environnement. Les règles `allow`, `ask` et `deny` renvoyées ne sont pas vérifiées lors des appels d'outils. Définissez-les dans un [fichier de paramètres](https://code.claude.com/docs/fr/settings.md), ou appelez [`$.env.set`](https://code.claude.com/docs/fr/plugins/mods/api#reach-files-processes-and-the-network) pour les variables d'environnement.344Si vous renvoyez des règles de permission ou `env` lors de [la lecture propre de Claude Code](https://code.claude.com/docs/fr/plugins/mods/events.md#settings-read-hook), les règles ne sont pas vérifiées lors des appels d'outils et les entrées `env` ne deviennent pas des variables d'environnement. Utilisez un [fichier de paramètres](https://code.claude.com/docs/fr/settings.md) pour les deux, ou [`$.env.set`](https://code.claude.com/docs/fr/plugins/mods/api#reach-files-processes-and-the-network) pour `env`.

345 345 

346Pour une autre clé, vérifiez [quels mods reçoivent `settings.read` et à partir de quelle version](https://code.claude.com/docs/fr/plugins/mods/events#settings-read-hook), puis recherchez `settings.read` dans le [log de débogage](#read-the-debug-log) et repérez l'une de ces lignes :346Pour une autre clé, vérifiez [quels mods reçoivent `settings.read` et à partir de quelle version](https://code.claude.com/docs/fr/plugins/mods/events#settings-read-hook), puis recherchez `settings.read` dans le [log de débogage](#read-the-debug-log) et repérez l'une de ces lignes :

347 347 


349| :- | :- |349| :- | :- |

350| `settings.read hook skipped`, après le nom de votre mod | Votre hook a échoué. [Corrigez l'erreur signalée par la ligne](#hook-skipped). |350| `settings.read hook skipped`, après le nom de votre mod | Votre hook a échoué. [Corrigez l'erreur signalée par la ligne](#hook-skipped). |

351| `settings.read bypassed by cc-plugin-sec-default`, sur une ligne qui nomme votre mod avant | Le [garde-fou intégré](https://code.claude.com/docs/fr/plugins/mods/admin.md#know-what-happens-by-default) a ignoré votre hook. Demandez à l'administrateur de votre organisation d'[installer le mod comme l'un des mods de l'organisation](https://code.claude.com/docs/fr/plugins/mods/admin.md#install-your-organizations-mods). |351| `settings.read bypassed by cc-plugin-sec-default`, sur une ligne qui nomme votre mod avant | Le [garde-fou intégré](https://code.claude.com/docs/fr/plugins/mods/admin.md#know-what-happens-by-default) a ignoré votre hook. Demandez à l'administrateur de votre organisation d'[installer le mod comme l'un des mods de l'organisation](https://code.claude.com/docs/fr/plugins/mods/admin.md#install-your-organizations-mods). |

352| `settings.read: the answer for <key> is no value the key can hold` | La valeur renvoyée ne correspond pas au schéma de la clé. [Renvoyez-en une qu'il autorise](#settings-read-key-refused). |352| `settings.read: the answer for <key> is no value the key can hold` | Claude Code a refusé la valeur renvoyée par un hook pour cette clé. Le hook peut être le vôtre ou celui d'un autre mod. Suivez [l'étape correspondant à votre cas](#settings-read-key-refused). |

353| `settings.read: the merge never settles for <key>` | Les clés nommées par la ligne conservent les valeurs des sources de paramètres. Définissez-les dans un fichier de paramètres. |353| `settings.read: the merge never settles for <key>` | Les clés nommées par la ligne conservent les valeurs des sources de paramètres. Définissez-les dans un fichier de paramètres. |

354| `answered settings.read without next()`, après le nom d'un mod | Pertinent uniquement si ce mod [s'exécute avant le vôtre](https://code.claude.com/docs/fr/plugins/mods/events.md#the-order-mods-run-in). Dans ce cas, votre hook ne s'est pas exécuté lors de cette lecture. [Désactivez ce mod](https://code.claude.com/docs/fr/plugins/mods/overview.md#turn-mods-on-or-off) ou, si votre organisation l'a déployé, demandez à son administrateur de le faire. |354| `answered settings.read without next()`, après le nom d'un mod | Votre hook est concerné si le mod nommé [s'exécute avant le vôtre](https://code.claude.com/docs/fr/plugins/mods/events.md#the-order-mods-run-in). Dans ce cas, votre hook ne s'est pas exécuté lors de cette lecture. [Désactivez ce mod](https://code.claude.com/docs/fr/plugins/mods/overview.md#turn-mods-on-or-off) ou, si votre organisation l'a déployé, demandez à son administrateur de le faire. |

355| `settings.read: refused to the engine` | La lecture a été refusée, donc aucun `{ value }` de hook ne s'est appliqué. [Trouvez ce qui l'a refusée](#settings-read-refused). |355| `settings.read: refused to the engine` | Votre valeur ne s'est pas appliquée parce que la lecture propre de Claude Code a été refusée. [Trouvez ce qui l'a refusée](#settings-read-refused). |

356 356 

357Si aucune ligne n'explique la clé, vérifiez si les mods qui s'exécutent avant le vôtre ont un hook `settings.read` qui [modifie la clé](https://code.claude.com/docs/fr/plugins/mods/events.md#settings-read-example). Désactivez ce mod, ou demandez à l'administrateur de votre organisation de le faire. Si aucun hook ne la modifie, définissez la clé dans un fichier de paramètres.357Si aucune ligne n'explique la clé, vérifiez si les mods qui s'exécutent avant le vôtre ont un hook `settings.read` qui [modifie la clé](https://code.claude.com/docs/fr/plugins/mods/events.md#settings-read-example). Désactivez ce mod, ou demandez à l'administrateur de votre organisation de le faire. Si aucun hook ne la modifie, définissez la clé dans un fichier de paramètres.

358 358 

359### `the answer for <key> is no value the key can hold`359### `the answer for <key> is no value the key can hold`

360 360 

361Cette ligne du [log de débogage](#read-the-debug-log) signifie que Claude Code a refusé la valeur renvoyée par votre hook [`settings.read`](https://code.claude.com/docs/fr/plugins/mods/events#settings-read-hook) pour la clé nommée, et pour cette clé uniquement :361Cette ligne du [log de débogage](#read-the-debug-log) signifie que Claude Code a refusé la valeur renvoyée par un hook [`settings.read`](https://code.claude.com/docs/fr/plugins/mods/events#settings-read-hook) pour la clé nommée, et pour cette clé uniquement :

362 362 

363```text theme={null}363```text theme={null}

364settings.read: the answer for <key> is no value the key can hold; the settings' own value stands364settings.read: the answer for <key> is no value the key can hold; the settings' own value stands

365```365```

366 366 

367La valeur que vous avez renvoyée pour la clé nommée ne correspondait pas au schéma de cette clé, par exemple par son type ou sa plage. Renvoyez une valeur autorisée par l'entrée de la clé dans la [référence des paramètres](https://code.claude.com/docs/fr/settings-reference.md). Tant que votre valeur ne correspond pas, la clé conserve la valeur fusionnée à partir des sources de paramètres avant qu'un hook ne réponde. La ligne l'appelle la valeur propre des paramètres.367La valeur renvoyée pour la clé nommée ne correspondait pas au schéma de cette clé, par exemple par son type ou sa plage.

368 

369* **Votre valeur ne correspond pas au schéma de la clé** : renvoyez-en une qu'autorise l'entrée de la clé dans la [référence des paramètres](https://code.claude.com/docs/fr/settings-reference.md).

370* **Votre valeur correspond** : la valeur non conforme provient du hook `settings.read` d'un autre mod. Pour trouver ce mod, suivez [les étapes pour désactiver les mods un par un](#settings-read-refused). Recherchez cette ligne dans chaque nouveau log au lieu de `refused to the engine`.

371 

372Tant que la valeur ne correspond pas, la clé conserve la valeur fusionnée à partir des sources de paramètres avant qu'un hook ne réponde. La ligne l'appelle la valeur propre des paramètres.

368 373 

369### `settings.read: refused to the engine`374### `settings.read: refused to the engine`

370 375 

371Cette ligne du [log de débogage](#read-the-debug-log) signifie que [la lecture propre de Claude Code](https://code.claude.com/docs/fr/plugins/mods/events.md#settings-read-hook) a été refusée, donc aucun `{ value }` de hook ne s'est appliqué, y compris le vôtre. Lorsqu'un hook `settings.read` refuse cette lecture avec [`{ deny: reason }`](https://code.claude.com/docs/fr/plugins/mods/events#settings-read-returns), la ligne contient la raison de ce hook :376Vous voyez cette ligne dans le [log de débogage](#read-the-debug-log) lorsque [la lecture propre de Claude Code](https://code.claude.com/docs/fr/plugins/mods/events.md#settings-read-hook) est refusée, et Claude Code abandonne la valeur de chaque hook. Lorsqu'un hook `settings.read` refuse cette lecture avec [`{ deny: reason }`](https://code.claude.com/docs/fr/plugins/mods/events#settings-read-returns), la ligne contient la raison de ce hook :

372 377 

373```text theme={null}378```text theme={null}

374settings.read: refused to the engine (engine: $.settings.read: <reason>); the settings' own values stand379settings.read: refused to the engine (engine: $.settings.read: <reason>); the settings' own values stand

375```380```

376 381 

377Recherchez le texte `<reason>` dans le code de votre propre hook :382Recherchez dans votre code la raison indiquée entre parenthèses :

378 383 

379* **Votre code le contient** : votre hook a refusé la lecture. Faites-lui renvoyer `{ value }` lorsque [`next.origin`](https://code.claude.com/docs/fr/plugins/mods/events#settings-read-origin) indique la lecture propre de Claude Code.384* **Votre code le contient** : votre hook a refusé la lecture. Faites-lui renvoyer `{ value }` lorsque [`next.origin`](https://code.claude.com/docs/fr/plugins/mods/events#settings-read-origin) indique la lecture propre de Claude Code.

380* **Votre code ne le contient pas** : [désactivez](https://code.claude.com/docs/fr/plugins/mods/overview.md#turn-mods-on-or-off) vos autres mods un par un. Après chacun, relancez la commande de cette session depuis votre shell avec un `--debug-file` sur un nouveau chemin, et recherchez `refused to the engine` dans ce fichier. Si la ligne y figure, désactivez le mod suivant. Sinon, le dernier mod que vous avez désactivé a refusé la lecture ; laissez-le donc désactivé.385* **Votre code ne la contient pas** : [désactivez](https://code.claude.com/docs/fr/plugins/mods/overview.md#turn-mods-on-or-off) vos autres mods un par un. Si votre organisation a déployé un mod, demandez à son administrateur de le désactiver. Après chacun :

386 1. Démarrez la session depuis votre shell avec `claude --debug-file ./settings-read-2.log`, suivi des flags avec lesquels elle a démarré. Utilisez un nouveau chemin à chaque fois.

387 2. Recherchez `refused to the engine` dans ce fichier. Si la ligne y figure, désactivez le mod suivant. Sinon, le dernier mod que vous avez désactivé a refusé la lecture ; laissez-le donc désactivé.

381 388 

382S'il ne reste aucun autre mod, utilisez un [fichier de paramètres](https://code.claude.com/docs/fr/settings.md) pour les clés que votre hook renvoie. Ses valeurs s'appliquent tant que la lecture est refusée.389Si la ligne persiste alors qu'il ne reste aucun autre mod, définissez les clés que votre hook renvoie dans un [fichier de paramètres](https://code.claude.com/docs/fr/settings.md). Ses valeurs s'appliquent tant que la lecture est refusée.

383 390 

384## Lisez le journal de débogage391## Lisez le journal de débogage

385 392 

Details

192L'extension VS Code et l'application Desktop disposent également d'un bouton bascule d'auto-connexion :192L'extension VS Code et l'application Desktop disposent également d'un bouton bascule d'auto-connexion :

193 193 

194* **Extension VS Code** : **Enable Remote Control for all sessions** dans la section Paramètres du [menu de commande](https://code.claude.com/docs/fr/vs-code.md#use-the-prompt-box).194* **Extension VS Code** : **Enable Remote Control for all sessions** dans la section Paramètres du [menu de commande](https://code.claude.com/docs/fr/vs-code.md#use-the-prompt-box).

195* **Application Desktop** : **Settings > Claude Code > Connect new sessions to Remote Control**. Voir [Contrôler quelles sessions apparaissent sur vos autres appareils](https://code.claude.com/docs/fr/desktop.md#control-which-sessions-appear-on-your-other-devices).195* **Application Desktop** : **Connect new sessions to Remote Control** dans **Settings > Code** ou **Settings > Claude Code**. Voir [Contrôler quelles sessions apparaissent sur vos autres appareils](https://code.claude.com/docs/fr/desktop.md#control-which-sessions-appear-on-your-other-devices).

196 196 

197Pour activer l'auto-connexion à partir d'un fichier de paramètres à la place, définissez [`remoteControlAtStartup`](https://code.claude.com/docs/fr/settings-reference#remotecontrolatstartup) sur `true` dans votre fichier utilisateur `~/.claude/settings.json` ou dans les [paramètres gérés](https://code.claude.com/docs/fr/managed-settings.md). Dans les paramètres de projet ou locaux (`.claude/settings.json`, `.claude/settings.local.json`), Claude Code honore un `false` et désactive l'auto-connexion pour ce référentiel, mais ignore un `true`, afin qu'un fichier archivé ne puisse pas activer Remote Control pour tous ceux qui ouvrent le référentiel.197Pour activer l'auto-connexion à partir d'un fichier de paramètres à la place, définissez [`remoteControlAtStartup`](https://code.claude.com/docs/fr/settings-reference#remotecontrolatstartup) sur `true` dans votre fichier utilisateur `~/.claude/settings.json` ou dans les [paramètres gérés](https://code.claude.com/docs/fr/managed-settings.md). Dans les paramètres de projet ou locaux (`.claude/settings.json`, `.claude/settings.local.json`), Claude Code honore un `false` et désactive l'auto-connexion pour ce référentiel, mais ignore un `true`, afin qu'un fichier archivé ne puisse pas activer Remote Control pour tous ceux qui ouvrent le référentiel.

198 198 


363 * Commandes à sortie texte : `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/usage-credits`, `/recap` et `/reload-plugins`. `/usage-credits` affiche l'URL de facturation au lieu d'ouvrir un navigateur. `/reload-plugins` fonctionne uniquement lorsque la session s'exécute dans un terminal interactif ; une session sans terminal interactif la refuse.363 * Commandes à sortie texte : `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/usage-credits`, `/recap` et `/reload-plugins`. `/usage-credits` affiche l'URL de facturation au lieu d'ouvrir un navigateur. `/reload-plugins` fonctionne uniquement lorsque la session s'exécute dans un terminal interactif ; une session sans terminal interactif la refuse.

364 * `/model`, `/effort`, `/fast`, `/color` et `/rename` : passez la valeur en argument, par exemple `/model sonnet` ou `/effort high`. Depuis le mobile et le web, `/model` et `/effort` acceptent l'argument à la place du sélecteur ou du curseur du terminal.364 * `/model`, `/effort`, `/fast`, `/color` et `/rename` : passez la valeur en argument, par exemple `/model sonnet` ou `/effort high`. Depuis le mobile et le web, `/model` et `/effort` acceptent l'argument à la place du sélecteur ou du curseur du terminal.

365 * `/mcp` : depuis l'application mobile, renvoie un résumé textuel de l'état des serveurs au lieu d'ouvrir le sélecteur. Sur le web, `/mcp` seul ouvre un répertoire des [connecteurs claude.ai](https://code.claude.com/docs/fr/mcp.md#use-mcp-servers-from-claude-ai) au lieu de renvoyer le résumé. Les [sous-commandes](https://code.claude.com/docs/fr/commands.md#all-commands) `reconnect`, `enable` et `disable` fonctionnent depuis les deux lorsque la session s'exécute dans un terminal interactif. `/mcp reconnect` sans nom de serveur réessaie chaque serveur qui a échoué ou qui nécessite une authentification. Pour autoriser un connecteur claude.ai sans le sélecteur, consultez [Autoriser à nouveau un connecteur depuis votre shell](#authorize-a-connector-again-from-your-shell).365 * `/mcp` : depuis l'application mobile, renvoie un résumé textuel de l'état des serveurs au lieu d'ouvrir le sélecteur. Sur le web, `/mcp` seul ouvre un répertoire des [connecteurs claude.ai](https://code.claude.com/docs/fr/mcp.md#use-mcp-servers-from-claude-ai) au lieu de renvoyer le résumé. Les [sous-commandes](https://code.claude.com/docs/fr/commands.md#all-commands) `reconnect`, `enable` et `disable` fonctionnent depuis les deux lorsque la session s'exécute dans un terminal interactif. `/mcp reconnect` sans nom de serveur réessaie chaque serveur qui a échoué ou qui nécessite une authentification. Pour autoriser un connecteur claude.ai sans le sélecteur, consultez [Autoriser à nouveau un connecteur depuis votre shell](#authorize-a-connector-again-from-your-shell).

366 * `/config` : depuis l'application mobile, passez `key=value` pour définir un paramètre, ou exécutez-la sans argument pour lister les clés que vous pouvez définir. Sur le web, `/config` ouvre plutôt la section Claude Code de vos paramètres.366 * `/config` : depuis l'application mobile, passez `key=value` pour définir un paramètre, ou exécutez-la sans argument pour lister les clés que vous pouvez définir. Sur le web, `/config` ouvre plutôt **Settings > Code** ou **Settings > Claude Code**.

367 * Sur Team et Enterprise, `/usage-credits` depuis le mobile ou le web n'envoie pas de [demande de crédits d'utilisation à votre administrateur](https://code.claude.com/docs/fr/costs.md#add-usage-credits-to-your-subscription). L'envoi nécessite une confirmation qui n'apparaît que dans la CLI interactive ; la commande vous invite donc à l'exécuter plutôt à cet endroit.367 * Sur Team et Enterprise, `/usage-credits` depuis le mobile ou le web n'envoie pas de [demande de crédits d'utilisation à votre administrateur](https://code.claude.com/docs/fr/costs.md#add-usage-credits-to-your-subscription). L'envoi nécessite une confirmation qui n'apparaît que dans la CLI interactive ; la commande vous invite donc à l'exécuter plutôt à cet endroit.

368 * `/autocompact`, à partir de v2.1.221 : passez la taille de la fenêtre en argument, par exemple `/autocompact 500k`. Sans argument, elle affiche la taille actuelle de la fenêtre sous forme de texte au lieu d'ouvrir la boîte de dialogue que la commande affiche dans une session de terminal.368 * `/autocompact`, à partir de v2.1.221 : passez la taille de la fenêtre en argument, par exemple `/autocompact 500k`. Sans argument, elle affiche la taille actuelle de la fenêtre sous forme de texte au lieu d'ouvrir la boîte de dialogue que la commande affiche dans une session de terminal.

369 * `/advisor`, à partir de v2.1.260 : passez le modèle en argument, par exemple `/advisor opus`, ou passez `off` pour désactiver l'advisor. Les deux formes s'appliquent uniquement à la session en cours et laissent votre valeur par défaut enregistrée inchangée. Sans argument, elle affiche l'advisor actuel sous forme de texte au lieu d'ouvrir le sélecteur.369 * `/advisor`, à partir de v2.1.260 : passez le modèle en argument, par exemple `/advisor opus`, ou passez `off` pour désactiver l'advisor. Les deux formes s'appliquent uniquement à la session en cours et laissent votre valeur par défaut enregistrée inchangée. Sans argument, elle affiche l'advisor actuel sous forme de texte au lieu d'ouvrir le sélecteur.

routines.md +9 −5

Details

77 77 

78**2. Nommer la tâche et écrire le prompt**78**2. Nommer la tâche et écrire le prompt**

79 79 

80Donnez à la tâche planifiée un nom descriptif et écrivez le prompt que Claude exécute à chaque fois. Le prompt est la partie la plus importante : la tâche s'exécute de manière autonome, le prompt doit donc être autosuffisant et explicite sur ce qu'il faut faire et sur ce à quoi ressemble le succès. Sélectionnez un modèle dans le sélecteur de modèle du champ de prompt. Claude l'utilise à chaque exécution.80Donnez à la tâche planifiée un nom descriptif et écrivez le prompt que Claude exécute à chaque fois. Le prompt est la partie la plus importante : la tâche s'exécute de manière autonome, le prompt doit donc être autosuffisant et explicite sur ce qu'il faut faire et sur ce à quoi ressemble le succès.

81 81 

82Lorsqu'un déclencheur se déclenche, la session reçoit le prompt enregistré comme sa mission et l'exécute, plutôt que de le traiter comme un contenu non fiable arrivé au milieu d'une conversation. Le déclencheur atteste seulement que le prompt a été stocké à l'avance par une session autorisée sur votre compte. Le prompt déclenché n'est donc pas une entrée utilisateur en direct et ne peut pas valoir approbation ou consentement pour des actions pendant l'exécution. Le contenu que la session récupère pendant l'exécution conserve son traitement habituel.82Lorsqu'un déclencheur se déclenche, la session reçoit le prompt enregistré comme sa mission et l'exécute, plutôt que de le traiter comme un contenu non fiable arrivé au milieu d'une conversation. Le déclencheur atteste seulement que le prompt a été stocké à l'avance par une session autorisée sur votre compte. Le prompt déclenché n'est donc pas une entrée utilisateur en direct et ne peut pas valoir approbation ou consentement pour des actions pendant l'exécution. Le contenu que la session récupère pendant l'exécution conserve son traitement habituel.

83 83 


115 115 

116Si votre tâche doit atteindre directement vos propres services, ou un domaine en dehors de cette liste, modifiez l'[accès réseau](https://code.claude.com/docs/fr/cloud-environments.md#network-access) de l'environnement avant l'exécution. Pour utiliser un environnement distinct, [créez-en un](https://code.claude.com/docs/fr/cloud-environments.md#configure-your-environment) d'abord.116Si votre tâche doit atteindre directement vos propres services, ou un domaine en dehors de cette liste, modifiez l'[accès réseau](https://code.claude.com/docs/fr/cloud-environments.md#network-access) de l'environnement avant l'exécution. Pour utiliser un environnement distinct, [créez-en un](https://code.claude.com/docs/fr/cloud-environments.md#configure-your-environment) d'abord.

117 117 

118**6. Examiner les connecteurs**118**6. Sélectionner un modèle et un niveau d'effort**

119 

120Sélectionnez un modèle dans le sélecteur de modèle du champ de prompt pour que Claude l'utilise à chaque exécution. Pour une tâche Claude Code, si le modèle propose des [niveaux d'effort](https://code.claude.com/docs/fr/model-config.md#adjust-effort-level), **Effort** dans le même sélecteur affiche le niveau actuel. Pour le modifier, sélectionnez un autre niveau. L'option **Default** du sélecteur ne propose aucun niveau.

121 

122**7. Examiner les connecteurs**

119 123 

120Passez à l'onglet **Connectors** de **Advanced settings**. Tous vos [connecteurs MCP](https://code.claude.com/docs/fr/mcp.md) connectés sont inclus par défaut. Supprimez ceux dont la tâche n'a pas besoin : Claude peut utiliser un connecteur inclus pendant une exécution, y compris pour des écritures. Pour savoir quand une exécution s'arrête pour vous demander d'abord, consultez [Demandes de permission pendant une exécution](#permission-prompts-during-a-run).124Passez à l'onglet **Connectors** de **Advanced settings**. Tous vos [connecteurs MCP](https://code.claude.com/docs/fr/mcp.md) connectés sont inclus par défaut. Supprimez ceux dont la tâche n'a pas besoin : Claude peut utiliser un connecteur inclus pendant une exécution, y compris pour des écritures. Pour savoir quand une exécution s'arrête pour vous demander d'abord, consultez [Demandes de permission pendant une exécution](#permission-prompts-during-a-run).

121 125 

122**7. Créer la tâche**126**8. Créer la tâche**

123 127 

124Cliquez sur **Create**. La boîte de dialogue se ferme et la page de détail de la nouvelle tâche s'ouvre. La tâche s'exécute la prochaine fois que l'un de ses déclencheurs correspond. Pour démarrer une exécution immédiatement, cliquez sur **Run now** sur la page de détail.128Cliquez sur **Create**. La boîte de dialogue se ferme et la page de détail de la nouvelle tâche s'ouvre. La tâche s'exécute la prochaine fois que l'un de ses déclencheurs correspond. Pour démarrer une exécution immédiatement, cliquez sur **Run now** sur la page de détail.

125 129 


136Dans l'application Desktop, si un menu avec **Local** et **Cloud** s'ouvre, sélectionnez **Cloud**. Une page intitulée **New routine** ou **New scheduled task** s'ouvre. Remplissez ses champs :140Dans l'application Desktop, si un menu avec **Local** et **Cloud** s'ouvre, sélectionnez **Cloud**. Une page intitulée **New routine** ou **New scheduled task** s'ouvre. Remplissez ses champs :

137 141 

138* **Name** : saisissez-en un.142* **Name** : saisissez-en un.

139* **Instructions** : saisissez le prompt. Dans la même zone, sélectionnez le modèle, les dépôts et l'environnement. Pour savoir ce que chacun contrôle, consultez les étapes sous [Créer à partir du web](#create-from-the-web).143* **Instructions** : saisissez le prompt. Dans la même zone, sélectionnez le modèle, le niveau d'effort si le modèle en propose un, les dépôts et l'environnement. Pour savoir ce que chacun contrôle, consultez les étapes sous [Créer à partir du web](#create-from-the-web).

140* **Select a trigger** : sélectionnez **Schedule**, **GitHub event** ou **API**. Pour une planification, consultez [Ajouter un déclencheur de planification](#add-a-schedule-trigger). Pour un [événement GitHub](#add-a-github-trigger), sélectionnez un dépôt. Pour un [déclencheur API](#add-an-api-trigger), copiez le jeton depuis la boîte de dialogue **API token** qui s'ouvre après avoir cliqué sur **Create**, car il n'est affiché qu'une seule fois. Pour combiner plusieurs déclencheurs, cliquez sur **Add another trigger**.144* **Select a trigger** : sélectionnez **Schedule**, **GitHub event** ou **API**. Pour une planification, consultez [Ajouter un déclencheur de planification](#add-a-schedule-trigger). Pour un [événement GitHub](#add-a-github-trigger), sélectionnez un dépôt. Pour un [déclencheur API](#add-an-api-trigger), copiez le jeton depuis la boîte de dialogue **API token** qui s'ouvre après avoir cliqué sur **Create**, car il n'est affiché qu'une seule fois. Pour combiner plusieurs déclencheurs, cliquez sur **Add another trigger**.

141* **Connectors** : tous vos connecteurs connectés sont inclus par défaut, supprimez donc ceux dont la tâche n'a pas besoin.145* **Connectors** : tous vos connecteurs connectés sont inclus par défaut, supprimez donc ceux dont la tâche n'a pas besoin.

142 146 


153* **Déclencheur API** : modifiez la tâche sur le web sur [claude.ai/code/routines](https://claude.ai/code/routines)157* **Déclencheur API** : modifiez la tâche sur le web sur [claude.ai/code/routines](https://claude.ai/code/routines)

154* **[Déclencheur GitHub](#add-a-github-trigger)** : modifiez la tâche sur le web, ou demandez à Claude dans la CLI. L'ajout à partir de la CLI nécessite Claude Code v2.1.225 ou version ultérieure158* **[Déclencheur GitHub](#add-a-github-trigger)** : modifiez la tâche sur le web, ou demandez à Claude dans la CLI. L'ajout à partir de la CLI nécessite Claude Code v2.1.225 ou version ultérieure

155 159 

156Une tâche planifiée sans déclencheur de planification, comme une tâche démarrée uniquement par des appels API ou des événements GitHub, n'a pas d'heure de prochaine exécution. La CLI n'en affiche aucune lorsque Claude l'enregistre ou la met à jour. Avant la v2.1.211, la CLI indiquait une heure de prochaine exécution en l'an 1 pour ces tâches.160Une tâche planifiée sans déclencheur de planification, comme une tâche démarrée uniquement par des appels API ou des événements GitHub, n'a pas d'heure de prochaine exécution. La CLI n'en affiche aucune lorsque Claude l'enregistre ou la met à jour.

157 161 

158## Configurer les déclencheurs162## Configurer les déclencheurs

159 163 

sandboxing.md +2 −1

Details

320* **Chaque commande de l'appel doit correspondre** : `npm ci && docker compose build` reste dans le sandbox, sauf si une autre entrée couvre `npm ci`320* **Chaque commande de l'appel doit correspondre** : `npm ci && docker compose build` reste dans le sandbox, sauf si une autre entrée couvre `npm ci`

321* **Claude Code compare le texte de l'appel** : un script ou une cible `make` qui appelle `docker` en interne ne correspond pas, pas plus que `/usr/local/bin/docker`321* **Claude Code compare le texte de l'appel** : un script ou une cible `make` qui appelle `docker` en interne ne correspond pas, pas plus que `/usr/local/bin/docker`

322* **Certains appels restent dans le sandbox** : une redirection vers un fichier, un `cd` ou une substitution de commande comme `$(...)` maintient l'appel entier dans le sandbox. L'[entrée de référence](https://code.claude.com/docs/fr/settings-reference.md#sandbox-excludedcommands) liste d'autres appels qui restent dans le sandbox322* **Certains appels restent dans le sandbox** : une redirection vers un fichier, un `cd` ou une substitution de commande comme `$(...)` maintient l'appel entier dans le sandbox. L'[entrée de référence](https://code.claude.com/docs/fr/settings-reference.md#sandbox-excludedcommands) liste d'autres appels qui restent dans le sandbox

323* **Un `git clone` nécessite des chemins relatifs** : votre entrée ne couvre pas un clone qui désigne un chemin absolu, un chemin commençant par `~` ou un chemin comportant un segment `..`. Si le clone peut se faire dans votre répertoire de travail, demandez à Claude d'utiliser un chemin relatif sans segment `..`, comme `vendor/lib`

323* **L'endroit où vous enregistrez l'entrée peut compter** : tant que le sandbox est [exigé par l'administrateur](#repository-settings-under-an-admin-required-sandbox), Claude Code ignore les entrées de `.claude/settings.json` et `.claude/settings.local.json`324* **L'endroit où vous enregistrez l'entrée peut compter** : tant que le sandbox est [exigé par l'administrateur](#repository-settings-under-an-admin-required-sandbox), Claude Code ignore les entrées de `.claude/settings.json` et `.claude/settings.local.json`

324 325 

325Une commande exclue passe par le flux de permissions habituel :326Une commande exclue passe par le flux de permissions habituel :


354 355 

355Le sandbox comporte deux couches indépendantes : l'[isolation du système de fichiers](#filesystem-isolation) contrôle les chemins que les commandes en sandbox peuvent lire et écrire, et l'[isolation réseau](#network-isolation) contrôle les domaines qu'elles peuvent atteindre. Lorsque la couche système de fichiers est désactivée, les commandes en sandbox obtiennent un accès illimité en lecture et en écriture au système de fichiers de l'hôte, tandis que leur trafic réseau sortant reste limité à vos domaines autorisés. Désactivez cette couche lorsque vous utilisez le sandbox pour contrôler où les commandes se connectent plutôt que ce qu'elles écrivent.356Le sandbox comporte deux couches indépendantes : l'[isolation du système de fichiers](#filesystem-isolation) contrôle les chemins que les commandes en sandbox peuvent lire et écrire, et l'[isolation réseau](#network-isolation) contrôle les domaines qu'elles peuvent atteindre. Lorsque la couche système de fichiers est désactivée, les commandes en sandbox obtiennent un accès illimité en lecture et en écriture au système de fichiers de l'hôte, tandis que leur trafic réseau sortant reste limité à vos domaines autorisés. Désactivez cette couche lorsque vous utilisez le sandbox pour contrôler où les commandes se connectent plutôt que ce qu'elles écrivent.

356 357 

357`sandbox.filesystem.disabled` a `false` comme valeur par défaut. Nécessite Claude Code v2.1.216 ou une version ultérieure.358`sandbox.filesystem.disabled` a `false` comme valeur par défaut.

358 359 

359> [!WARNING]360> [!WARNING]

360>361>

Details

120 120 

121Par défaut, l'inférence du modèle utilise l'API Anthropic. Le plan de contrôle livre l'endpoint de l'API à chaque session, et la session s'authentifie avec un jeton OAuth émis par Anthropic et limité à la session. Pour envoyer plutôt les requêtes de modèle vers votre propre compte cloud, consultez [Envoyer les requêtes de modèle vers Bedrock ou Agent Platform](https://code.claude.com/docs/fr/self-hosted-environments-configuration.md#send-model-requests-to-bedrock-or-agent-platform).121Par défaut, l'inférence du modèle utilise l'API Anthropic. Le plan de contrôle livre l'endpoint de l'API à chaque session, et la session s'authentifie avec un jeton OAuth émis par Anthropic et limité à la session. Pour envoyer plutôt les requêtes de modèle vers votre propre compte cloud, consultez [Envoyer les requêtes de modèle vers Bedrock ou Agent Platform](https://code.claude.com/docs/fr/self-hosted-environments-configuration.md#send-model-requests-to-bedrock-or-agent-platform).

122 122 

123Les proxies de sortie d'entreprise sont pris en charge. Le runner et l'[orchestrateur de mise à l'échelle automatique](https://code.claude.com/docs/fr/self-hosted-environments-configuration.md#on-demand-runners) optionnel honorent le proxy et les variables d'environnement mTLS décrites dans [Configuration réseau](https://code.claude.com/docs/fr/network-config.md), telles que `HTTPS_PROXY` et `NO_PROXY` ; définissez-les dans l'environnement de chaque processus. Les variables couvrent les appels du plan de contrôle, le WebSocket du [connecteur SCM](https://code.claude.com/docs/fr/self-hosted-environments-reference.md#scm-connector-flags) de l'orchestrateur, et le clone intégré pour les télécommandes HTTPS, et les sessions les héritent du runner. Le streaming de session utilise les événements envoyés par le serveur sur HTTPS, donc un proxy dans le chemin ne doit pas mettre en mémoire tampon les réponses.123Les proxies de sortie d'entreprise sont pris en charge. Le runner et l'[orchestrateur de mise à l'échelle automatique](https://code.claude.com/docs/fr/self-hosted-environments-configuration.md#on-demand-runners) optionnel honorent le proxy et les variables d'environnement mTLS décrites dans [Configuration réseau](https://code.claude.com/docs/fr/network-config.md), telles que `HTTPS_PROXY` et `NO_PROXY` ; définissez-les dans l'environnement de chaque processus. Les variables couvrent les appels du plan de contrôle, le WebSocket du [connecteur SCM](https://code.claude.com/docs/fr/self-hosted-environments-reference.md#scm-connector-flags) de l'orchestrateur, et le clone intégré pour les remotes HTTPS, et les sessions les héritent du runner. Le streaming de session utilise les événements envoyés par le serveur sur HTTPS, donc un proxy dans le chemin ne doit pas mettre en mémoire tampon les réponses.

124 124 

125* **Authentification au proxy** : si votre proxy nécessite également un en-tête `Proxy-Authorization`, le runner peut l'ajouter à chaque connexion qu'il ouvre au proxy ; consultez [S'authentifier auprès d'un proxy de sortie](https://code.claude.com/docs/fr/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy).125* **Authentification au proxy** : si votre proxy nécessite également un en-tête `Proxy-Authorization`, le runner peut l'ajouter à chaque connexion qu'il ouvre au proxy ; consultez [S'authentifier auprès d'un proxy de sortie](https://code.claude.com/docs/fr/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy).

126* **Réponses de longue durée** : si un runner récupère une session mais que Claude ne répond jamais à son premier message, votre proxy peut en être la cause. Consultez [Une session est récupérée, mais Claude ne répond jamais à son premier message](https://code.claude.com/docs/fr/self-hosted-environments-deploy.md#when-a-sessions-first-message-is-never-answered).126* **Réponses de longue durée** : si un runner récupère une session mais que Claude ne répond jamais à son premier message, votre proxy peut en être la cause. Consultez [Une session est récupérée, mais Claude ne répond jamais à son premier message](https://code.claude.com/docs/fr/self-hosted-environments-deploy.md#when-a-sessions-first-message-is-never-answered).

Details

280 280 

281## Runners à la demande281## Runners à la demande

282 282 

283Au lieu d'exécuter une flotte fixe, vous pouvez démarrer un runner par session. L'orchestrateur est une sous-commande séparée et sans état qui interroge Anthropic pour les demandes de spawn, une par session qui est en attente sans runner disponible, et exécute votre hook `spawn-runner` pour chacune. Votre hook soumet une charge de travail à votre plateforme : un Kubernetes Job, une instance EC2, un Nomad dispatch.283Au lieu d'exécuter une flotte fixe, vous pouvez démarrer un runner par session. L'orchestrateur est une sous-commande distincte et sans état qui interroge Anthropic pour obtenir des demandes de lancement, une par session mise en file d'attente sans runner disponible, et exécute votre hook `spawn-runner` pour chacune d'elles. Votre hook soumet une charge de travail à votre plateforme : un Job Kubernetes, une instance EC2, un dispatch Nomad.

284 284 

285Les runners à la demande améliorent l'hygiène des identifiants. Sur une flotte fixe, le secret d'environnement vit sur chaque hôte runner, qui est le même hôte qui exécute les sessions utilisateur. Avec l'orchestrateur, le secret d'environnement reste uniquement sur l'hôte orchestrateur, qui n'exécute jamais le code utilisateur ; chaque runner généré reçoit un bon de travail à usage unique qui enregistre exactement un runner puis expire.285Les runners à la demande améliorent l'hygiène des identifiants. Sur une flotte fixe, le secret d'environnement réside sur chaque hôte de runner, qui est le même hôte que celui qui exécute les sessions des utilisateurs. Avec l'orchestrateur, le secret d'environnement reste uniquement sur l'hôte de l'orchestrateur, qui n'exécute jamais de code utilisateur ; chaque runner lancé reçoit un ordre de travail à usage unique qui enregistre exactement un runner, puis expire.

286 286 

287Pour démarrer l'orchestrateur, passez le secret d'environnement et un répertoire de hooks contenant un script `spawn-runner` exécutable :287Pour démarrer l'orchestrateur, transmettez le secret d'environnement et un répertoire de hooks contenant un script exécutable `spawn-runner` :

288 288 

289```bash theme={null}289```bash theme={null}

290claude self-hosted-runner orchestrator \290claude self-hosted-runner orchestrator \


292 --hooks-dir /etc/claude/hooks292 --hooks-dir /etc/claude/hooks

293```293```

294 294 

295L'orchestrateur ne conserve aucun état entre les sondages, donc vous pouvez exécuter deux ou plusieurs répliques contre le même environnement pour la disponibilité. Chaque demande de spawn est revendiquée côté serveur par exactement une réplique. Toutes les répliques doivent utiliser la même valeur `--expected-spawn-seconds` ; voir le [contrat du hook](#the-spawn-runner-hook).295L'orchestrateur ne conserve aucun état entre les interrogations, vous pouvez donc exécuter deux réplicas ou plus sur le même environnement pour assurer la disponibilité. Chaque demande de lancement est réclamée côté serveur par exactement un réplica. Tous les réplicas doivent utiliser la même valeur de `--expected-spawn-seconds` ; consultez le [contrat du hook](#the-spawn-runner-hook).

296 296 

297### Le hook spawn-runner297### Le hook spawn-runner

298 298 

299L'orchestrateur exécute `${hooks-dir}/spawn-runner` une fois par demande de spawn. Le hook doit soumettre le travail de manière asynchrone, sans attendre le démarrage du runner, et revenir dans `--hook-timeout`, 60 secondes par défaut. Le hook reçoit :299L'orchestrateur exécute `${hooks-dir}/spawn-runner` une fois par demande de lancement. Le hook doit soumettre le travail de manière asynchrone, sans attendre le démarrage du runner, et se terminer dans le délai `--hook-timeout`, soit 60 secondes par défaut. Le hook reçoit :

300 300 

301| Variable | Description |301| Variable | Description |

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

303| `CLAUDE_RUNNER_WORK_ORDER_FILE` | Chemin vers un fichier temporaire contenant le JWT du bon de travail signé avec lequel le nouveau runner s'enregistre. Supprimé après la sortie du hook. Ne consignez pas le contenu du fichier. |303| `CLAUDE_RUNNER_WORK_ORDER_FILE` | Chemin vers un fichier temporaire contenant le JWT signé de l'ordre de travail avec lequel le nouveau runner s'enregistre. Supprimé après la sortie du hook. Ne journalisez pas le contenu du fichier. |

304| `CLAUDE_RUNNER_ORDER_ID` | Clé d'idempotence opaque, unique par demande de spawn et sûre pour les noms de ressources Kubernetes. Utilisez-la comme clé de déduplication de votre approvisionneur. |304| `CLAUDE_RUNNER_ORDER_ID` | Clé d'idempotence opaque, unique par demande de lancement et utilisable sans risque dans les noms de ressources Kubernetes. Utilisez uniquement l'identifiant de l'ordre comme clé de déduplication de votre provisionneur, et aucun autre identifiant. |

305| `CLAUDE_RUNNER_SESSION_ID` | La session pour laquelle cette demande est faite, sous la forme de l'ID `session_...` présent dans l'URL de la session. Elle se répète à chaque re-demande pour la session, donc utilisez-la pour la journalisation et l'acheminement, pas comme clé de déduplication. Vide pour les demandes de pré-réchauffage, qui démarrent un runner de secours avant toute session spécifique quand [`--min-idle`](https://code.claude.com/docs/fr/self-hosted-environments-reference#orchestrator-cli-flags) est défini, donc ne supposez pas que la variable est définie. |305| `CLAUDE_RUNNER_SESSION_ID` | La session concernée par cette demande, sous la forme de l'identifiant `session_...` présent dans l'URL de la session. Il se répète à chaque nouvelle demande pour la session, utilisez-le donc pour la journalisation et le routage, et non comme clé de déduplication. Vide pour les demandes de préchauffage, qui démarrent un runner de réserve en amont de toute session spécifique lorsque [`--min-idle`](https://code.claude.com/docs/fr/self-hosted-environments-reference#orchestrator-cli-flags) est défini ; ne supposez donc pas que la variable est définie. |

306| `CLAUDE_RUNNER_SESSION_UUID` | Le même ID de session sous la forme UUID canonique. Vide pour les demandes de pré-réchauffage. |306| `CLAUDE_RUNNER_SESSION_UUID` | Le même identifiant de session sous forme d'UUID canonique. Vide pour les demandes de préchauffage. |

307| `CLAUDE_RUNNER_ATTEMPT` | Un compteur par session à utiliser pour la journalisation. Ce n'est ni un nombre de nouvelles tentatives ni un nombre de demandes. `0` pour les demandes de pré-réchauffage, bien qu'une demande pour une session puisse aussi porter `0`. |307| `CLAUDE_RUNNER_ATTEMPT` | Un compteur par session à utiliser pour la journalisation. Ce n'est ni un nombre de nouvelles tentatives ni un nombre de demandes. `0` pour les demandes de préchauffage, bien qu'une demande pour une session puisse également porter `0`. |

308| `CLAUDE_RUNNER_ORDER_SERVER_TIME` | Heure du serveur à partir de l'en-tête HTTP `Date` de la réponse du sondage. Quand le hook vérifie le `exp` du JWT du bon de travail, comparez par rapport à cette valeur au lieu de l'horloge locale pour tolérer l'asymétrie. Vide quand la passerelle a omis l'en-tête. |308| `CLAUDE_RUNNER_ORDER_SERVER_TIME` | Heure du serveur issue de l'en-tête HTTP `Date` de la réponse d'interrogation. Lorsque le hook vérifie le `exp` du JWT de l'ordre de travail, comparez-le à cette valeur plutôt qu'à l'horloge locale afin de tolérer les décalages. Vide lorsque la passerelle a omis l'en-tête. |

309| `CLAUDE_RUNNER_POOL_ID` | L'ID de l'environnement auquel le nouveau runner doit se joindre, sous la forme `ccpool_...` |309| `CLAUDE_RUNNER_POOL_ID` | L'identifiant de l'environnement que le nouveau runner doit rejoindre, sous la forme `ccpool_...` |

310| `CLAUDE_RUNNER_ACCOUNT_ID` | ID balisé du compte qui a mis en attente la session. Utilisez-le pour l'acheminement par compte, le quota ou la rétrofacturation, pas comme clé de déduplication. Vide quand indisponible, et toujours vide pour les sessions du canal Claude Tag, qu'aucun compte ne met en attente. |310| `CLAUDE_RUNNER_ACCOUNT_ID` | Identifiant balisé du compte qui a mis la session en file d'attente. Utilisez-le pour le routage par compte, les quotas ou la refacturation, et non comme clé de déduplication. Vide lorsqu'il n'est pas disponible, et toujours vide pour les sessions de canal Claude Tag, qu'aucun compte ne met en file d'attente. |

311| `CLAUDE_RUNNER_ACCOUNT_EMAIL` | Email du compte qui a mis en attente la session. Vide quand indisponible. Traitez l'email comme des informations d'identification personnelle et ne le consignez pas. |311| `CLAUDE_RUNNER_ACCOUNT_EMAIL` | Adresse e-mail du compte qui a mis la session en file d'attente. Vide lorsqu'elle n'est pas disponible. Traitez l'adresse e-mail comme une donnée personnelle identifiable et ne la journalisez pas. |

312| `CLAUDE_RUNNER_PRIMARY_REPO_URL` | URL de la première source git de la session, pour l'acheminement vers un runner avec ce référentiel pré-réchauffé. Vide quand la session n'a pas de sources git. |312| `CLAUDE_RUNNER_PRIMARY_REPO_URL` | URL de la première source git de la session, pour le routage vers un runner sur lequel ce dépôt est préchauffé. Vide lorsque la session n'a aucune source git. |

313| `CLAUDE_RUNNER_PRIMARY_REPO_REVISION` | Révision de la première source git de la session : branche, SHA, tag ou nom de référence complet. Vide quand non spécifié. |313| `CLAUDE_RUNNER_PRIMARY_REPO_REVISION` | Révision de la première source git de la session : branche, SHA, tag ou nom de référence complet. Vide lorsqu'elle n'est pas spécifiée. |

314| `CLAUDE_RUNNER_REPO_SOURCES` | Tableau JSON de `{url, revision}` pour toutes les sources git de la session, pour les hooks qui acheminent sur un référentiel secondaire. Vide quand il n'y a pas de sources. |314| `CLAUDE_RUNNER_REPO_SOURCES` | Tableau JSON de `{url, revision}` pour toutes les sources git de la session, destiné aux hooks qui effectuent un routage sur un dépôt secondaire. Vide lorsqu'il n'y a aucune source. |

315| `CLAUDE_RUNNER_CORRELATION_ID` | L'ID de corrélation fourni à la création de la session, renvoyé afin que le hook puisse mapper ce bon de travail à la demande qui a créé la session. Vide quand la session n'en a pas. |315| `CLAUDE_RUNNER_CORRELATION_ID` | L'identifiant de corrélation fourni lors de la création de la session, renvoyé afin que le hook puisse associer cet ordre de travail à la requête qui a créé la session. Vide lorsque la session n'en a pas. |

316| `CLAUDE_RUNNER_CLIENT_PLATFORM` | La surface client qui a créé la session, comme `web_claude_ai`, `desktop_app`, `ios` ou `scheduled_trigger`, pour l'analyse d'adoption. Non défini quand la session n'a pas de surface enregistrée ou reconnue, et pour les demandes de pré-réchauffage ; vérifiez-le avec `[ -n "${CLAUDE_RUNNER_CLIENT_PLATFORM:-}" ]`, qui reste sûr sous `set -u`. |316| `CLAUDE_RUNNER_CLIENT_PLATFORM` | La surface client qui a créé la session, telle que `web_claude_ai`, `desktop_app`, `ios` ou `scheduled_trigger`, pour les analyses d'adoption. Non définie lorsque la session n'a aucune surface enregistrée ou reconnue, ainsi que pour les demandes de préchauffage ; vérifiez-la avec `[ -n "${CLAUDE_RUNNER_CLIENT_PLATFORM:-}" ]`, qui reste sûr avec `set -u`. |

317 317 

318Le runner généré s'enregistre avec le bon de travail à la place du secret d'environnement :318Le runner lancé s'enregistre avec l'ordre de travail à la place du secret d'environnement :

319 319 

320* **Démarrez-le avec le bon de travail** : pointez [`--environment-secret-file`](https://code.claude.com/docs/fr/self-hosted-environments-reference#runner-cli-flags) vers un fichier contenant le JWT du bon de travail, ou définissez `SELF_HOSTED_RUNNER_ENVIRONMENT_SECRET` à la valeur JWT.320* **Démarrez-le avec l'ordre de travail** : faites pointer [`--environment-secret-file`](https://code.claude.com/docs/fr/self-hosted-environments-reference#runner-cli-flags) vers un fichier contenant le JWT de l'ordre de travail, ou définissez `SELF_HOSTED_RUNNER_ENVIRONMENT_SECRET` sur la valeur du JWT.

321* **Copiez le JWT avant la sortie du hook** : l'orchestrateur supprime le fichier du bon de travail après la sortie du hook, donc copiez le JWT dans la charge de travail que vous soumettez, comme un Secret Kubernetes sur le Job généré, plutôt que de transmettre le chemin du fichier.321* **Copiez le JWT avant la sortie du hook** : l'orchestrateur supprime le fichier de l'ordre de travail après la sortie du hook, copiez donc le JWT dans la charge de travail que vous soumettez, par exemple dans un Secret Kubernetes sur le Job lancé, plutôt que de transmettre le chemin du fichier.

322* **Utilisez `--capacity 1` sur les runners générés** : un bon de travail lié à une session enregistre exactement un runner lié à cette session, donc une capacité plus élevée ajoute des emplacements qui ne reçoivent jamais de travail, et le runner enregistre un avertissement au démarrage.322* **Utilisez `--capacity 1` sur les runners lancés** : un ordre de travail lié à une session enregistre exactement un runner lié à cette session, une capacité plus élevée ajoute donc des emplacements qui ne reçoivent jamais de travail, et le runner journalise un avertissement au démarrage.

323* **Les bons de travail de pré-réchauffage s'enregistrent sans liaison** : le runner de secours n'est pas lié à une session et revendique le travail en attente comme un runner de flotte fixe.323* **Les ordres de travail de préchauffage s'enregistrent sans liaison** : le runner de réserve n'est lié à aucune session et réclame le travail en file d'attente comme un runner de flotte fixe.

324 324 

325Le contrat a quatre règles, quelle que soit la plateforme sur laquelle votre hook effectue l'approvisionnement :325Le contrat comporte quatre règles, quelle que soit la plateforme sur laquelle votre hook provisionne :

326 326 

3271. **Soyez idempotent sur `CLAUDE_RUNNER_ORDER_ID`.** La redélivraison de la même demande doit générer au maximum un runner. Dérivez un nom de ressource déterministe à partir de l'ID de commande et laissez votre plateforme rejeter le doublon. Ne vous basez pas plutôt sur `CLAUDE_RUNNER_SESSION_ID`. Chaque re-demande pour une session porte le même ID de session avec un nouvel ID de commande. Une charge de travail nommée ou dédupliquée par l'ID de session n'est pas recréée tant que la première existe.3271. **Soyez idempotent sur `CLAUDE_RUNNER_ORDER_ID`.** La redistribution d'une même demande doit lancer au plus un runner. Dérivez un nom de ressource déterministe à partir de l'identifiant de l'ordre et laissez votre plateforme rejeter le doublon. N'utilisez pas `CLAUDE_RUNNER_SESSION_ID` comme clé à la place. Chaque nouvelle demande pour une session porte le même identifiant de session avec un nouvel identifiant d'ordre. Une charge de travail nommée ou dédupliquée par l'identifiant de session n'est pas recréée tant que la première existe.

3282. **Ne réessayez pas la charge de travail.** Un ID de commande signifie au maximum une charge de travail créée. Si le runner ne s'enregistre jamais, Anthropic re-demande avec un ID de commande frais après `--expected-spawn-seconds`.3282. **Ne relancez pas la charge de travail.** Un identifiant d'ordre signifie au plus une charge de travail créée. Si le runner ne s'enregistre jamais, Anthropic renouvelle la demande avec un nouvel identifiant d'ordre après `--expected-spawn-seconds`.

3293. **Utilisez le contrat du code de sortie.** Sortez avec le statut qui correspond au résultat :3293. **Respectez le contrat des codes de sortie.** Quittez avec le statut qui correspond au résultat :

330 330 

331 * **Sortie 0** : soumis.331 * **Sortie 0** : soumis.

332 * **Sortie 1, ou hook toujours en cours d'exécution à l'expiration de `--hook-timeout`** : échec pouvant être réessayé. La session recule et est re-proposée. Après 10 demandes échouées consécutives, elle est bloquée comme après une sortie 2 ou supérieure.332 * **Sortie 1, ou toujours en cours d'exécution à la fin de `--hook-timeout`** : échec pouvant faire l'objet d'une nouvelle tentative. La session observe un délai d'attente progressif et est proposée à nouveau. Après 10 demandes en échec consécutives, elle est bloquée comme après une sortie 2 ou supérieure.

333 * **Sortie 2 ou supérieure** : échec ne pouvant pas être réessayé. La session est empêchée de générer un nouveau spawn jusqu'à ce qu'un utilisateur lui envoie un nouveau message ou qu'un [Owner](https://code.claude.com/docs/fr/cloud-environments.md#organization-shared-environments) sélectionne **Retry** sur elle dans l'onglet **Activity** de l'environnement.333 * **Sortie 2 ou supérieure** : échec ne pouvant pas faire l'objet d'une nouvelle tentative. La session ne peut plus être lancée tant qu'un utilisateur ne lui envoie pas un nouveau message ou qu'un [Owner](https://code.claude.com/docs/fr/cloud-environments.md#organization-shared-environments) ne sélectionne pas **Retry** sur celle-ci dans l'onglet **Activity** de l'environnement.

334 334 

335 Pendant qu'une session recule, elle affiche **Queued** dans l'onglet **Activity** sans erreur de spawn, donc lisez la sortie du hook dans le journal de l'orchestrateur. Une fois bloquée, la session affiche **Failed**. Développez-la pour lire l'erreur de spawn, tirée des 512 derniers caractères du stderr du hook. Écrivez une erreur exploitable sur stderr, sans aucun secret. Dans un hook shell, [gardez les échecs transitoires réessayables](#keep-transient-failures-retryable-in-a-shell-hook).335 Pendant qu'une session observe ce délai d'attente, elle affiche **Queued** dans l'onglet **Activity** sans erreur de lancement ; lisez donc la sortie du hook dans le log de l'orchestrateur. Une fois bloquée, la session affiche **Failed**. Développez-la pour lire l'erreur de lancement, tirée des 512 derniers caractères du stderr du hook. Écrivez sur stderr une erreur exploitable, sans aucun secret. Dans un hook shell, [gardez les échecs transitoires réessayables](#keep-transient-failures-retryable-in-a-shell-hook).

336 336 

337 Une demande de pré-réchauffage n'a pas de session à faire échouer : l'orchestrateur consigne une sortie non nulle localement uniquement, et le serveur re-demande le spawn après l'expiration du bail `--expected-spawn-seconds`.337 Une demande de préchauffage n'a aucune session susceptible d'échouer : l'orchestrateur journalise une sortie non nulle uniquement en local, et le serveur renouvelle la demande de lancement après l'expiration du bail `--expected-spawn-seconds`.

3384. **Définissez `--expected-spawn-seconds` à au moins votre temps p99 entre la demande de spawn et l'enregistrement du runner.** Mesurez à partir du moment où l'orchestrateur reçoit la demande de spawn, et incluez toute attente de capacité sur votre plateforme ainsi que le temps de démarrage. Cette valeur est le bail côté serveur, et le bon de travail expire avec lui, donc un runner dont la charge de travail prend plus de temps ne peut pas s'enregistrer. Toutes les répliques d'orchestrateur doivent utiliser la même valeur.3384. **Définissez `--expected-spawn-seconds` à au moins votre temps p99 entre la demande de lancement et l'enregistrement du runner.** Mesurez à partir du moment où l'orchestrateur reçoit la demande de lancement, et incluez toute attente de capacité sur votre plateforme ainsi que le temps de démarrage. Cette valeur constitue le bail côté serveur, et l'ordre de travail expire avec lui ; un runner dont la charge de travail prend plus de temps ne peut donc pas s'enregistrer. Tous les réplicas de l'orchestrateur doivent utiliser la même valeur.

339 339 

340Tout ce que le hook écrit sur stdout ou stderr apparaît dans le journal de l'orchestrateur avec les identifiants automatiquement supprimés. Si les sessions restent en attente, vérifiez le corps `/healthz` de l'orchestrateur pour les compteurs de file d'attente, puis ouvrez l'onglet **Activity** de votre environnement sur la [page d'administration **Cloud environments**](https://claude.ai/admin-settings/cloud-environments) : développez une session échouée là pour son erreur de spawn, et sélectionnez **Retry** pour la re-demander.340Tout ce que le hook écrit sur stdout ou stderr apparaît dans le log de l'orchestrateur, avec les identifiants automatiquement masqués. Si des sessions restent en file d'attente, consultez le corps de `/healthz` de l'orchestrateur pour connaître le nombre d'éléments en file d'attente, puis ouvrez l'onglet **Activity** de votre environnement sur la [page d'administration **Cloud environments**](https://claude.ai/admin-settings/cloud-environments) : développez-y une session en échec pour voir son erreur de lancement, et sélectionnez **Retry** pour renouveler sa demande.

341 341 

342#### Corriger les sessions rouvertes qui restent Queued ou affichent Failed342#### Corriger les sessions rouvertes qui restent Queued ou affichent Failed

343 343 

344Si des sessions rouvertes restent **Queued** ou affichent **Failed**, ou si votre hook expire sur elles, l'une des causes possibles est un hook qui nomme ou déduplique les charges de travail par l'ID de session. Une session est rouverte lorsque son utilisateur lui envoie un message après la sortie de son runner. Par exemple, prenons un hook qui construit le nom de chaque charge de travail ainsi :344Si des sessions rouvertes restent **Queued** ou affichent **Failed**, ou si votre hook expire sur celles-ci, l'une des causes possibles est un hook qui nomme ou déduplique les charges de travail selon l'identifiant de session. Une session est rouverte lorsque son utilisateur lui envoie un message après la sortie de son runner. Prenons par exemple un hook qui construit le nom de chaque charge de travail ainsi :

345 345 

346```bash theme={null}346```bash theme={null}

347name="runner-${CLAUDE_RUNNER_SESSION_ID}"347name="runner-${CLAUDE_RUNNER_SESSION_ID}"

348```348```

349 349 

3501. Lors de la première demande de spawn de la session, le hook crée une charge de travail portant ce nom, et un runner démarre3501. Lors de la première demande de lancement de la session, le hook crée une charge de travail portant ce nom, et un runner démarre

3512. Le runner se termine, par exemple après [`--release-idle-session-min`](#make-on-demand-runners-exit-when-idle), et l'utilisateur rouvre plus tard la session3512. Le runner se termine, par exemple après [`--release-idle-session-min`](#make-on-demand-runners-exit-when-idle), et l'utilisateur rouvre ultérieurement la session

3523. La demande de spawn suivante de la session porte le même ID de session et un nouvel ID de commande, donc le hook construit le même nom3523. La demande de lancement suivante de la session porte le même identifiant de session et un nouvel identifiant d'ordre, le hook construit donc le même nom

3534. Si votre plateforme possède encore la charge de travail de la première demande, parce que rien ne l'a [supprimée](#make-on-demand-runners-exit-when-idle) lorsque son runner s'est terminé, le hook ne crée aucune nouvelle charge de travail et aucun runner ne démarre3534. Si votre plateforme possède toujours la charge de travail issue de la première demande, parce que rien ne l'a [supprimée](#make-on-demand-runners-exit-when-idle) à la sortie de son runner, le hook ne crée aucune nouvelle charge de travail et aucun runner ne démarre

3545. Chaque demande de spawn ultérieure pour la session se termine de la même manière3545. Chaque demande de lancement ultérieure pour la session se termine de la même manière

355 355 

356Ouvrez votre propre hook et lisez ce qu'il fait lorsque la charge de travail existe déjà, par exemple lorsque votre plateforme rejette le nom en double. Repérez ce comportement dans la première colonne pour voir ce que la session rouverte affiche dans l'onglet **Activity** :356Ouvrez votre propre hook et regardez ce qu'il fait lorsque la charge de travail existe déjà, par exemple lorsque votre plateforme rejette le nom en double. Repérez ce comportement dans la première colonne pour voir ce qu'affiche la session rouverte dans l'onglet **Activity** :

357 357 

358| Lorsque la charge de travail existe, votre hook | **Queued** passe à **Failed** | Erreur de spawn |358| Lorsque la charge de travail existe, votre hook | **Queued** passe à **Failed** | Erreur de lancement |

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

360| Sort avec 0 sans rien créer | Après 10 demandes de ce type consécutives | `runner did not register within ETA after max attempts` |360| Sort avec 0 sans rien créer | Après 10 demandes de ce type consécutives | `runner did not register within ETA after max attempts` |

361| Sort avec 1 | Après 10 demandes de ce type consécutives | La fin du stderr de votre hook, ou `exit 1` s'il n'a rien écrit sur stderr |361| Sort avec 1 | Après 10 demandes de ce type consécutives | La fin du stderr de votre hook, ou `exit 1` s'il n'a rien écrit sur stderr |

362| Sort avec 2 ou plus | Immédiatement | La fin du stderr de votre hook, ou `exit` suivi du code, comme `exit 2`, s'il n'a rien écrit sur stderr |362| Sort avec 2 ou plus | Immédiatement | La fin du stderr de votre hook, ou `exit` suivi du code, par exemple `exit 2`, s'il n'a rien écrit sur stderr |

363| Attend l'expiration de `--hook-timeout` | Après 10 demandes de ce type consécutives | La fin du stderr de votre hook, ou `spawn-runner hook timed out after 60000ms` s'il n'a rien écrit sur stderr |363| Attend jusqu'à la fin de `--hook-timeout` | Après 10 demandes de ce type consécutives | La fin du stderr de votre hook, ou `spawn-runner hook timed out after 60000ms` s'il n'a rien écrit sur stderr |

364 364 

365Dans l'erreur de spawn de la dernière ligne, `60000` correspond à votre `--hook-timeout` en millisecondes. Lorsqu'un hook attend l'expiration de `--hook-timeout`, le journal de l'orchestrateur reçoit aussi une ligne `timed out after`.365Dans l'erreur de lancement de la dernière ligne, `60000` correspond à votre `--hook-timeout` en millisecondes. Lorsqu'un hook attend jusqu'à la fin de `--hook-timeout`, le log de l'orchestrateur reçoit également une ligne `timed out after`.

366 366 

367Pour corriger le hook, construisez chaque nom ou clé à partir de `CLAUDE_RUNNER_ORDER_ID`, comme l'exige [la règle 1 du contrat du hook](#the-spawn-runner-hook). Dans l'exemple, le nom devient :367Pour corriger le hook, construisez chaque nom ou clé à partir de `CLAUDE_RUNNER_ORDER_ID`, comme l'exige la [règle 1 du contrat du hook](#the-spawn-runner-hook). Dans l'exemple, le nom devient :

368 368 

369```bash theme={null}369```bash theme={null}

370name="runner-${CLAUDE_RUNNER_ORDER_ID}"370name="runner-${CLAUDE_RUNNER_ORDER_ID}"

371```371```

372 372 

373Si votre hook attend, faites-le également sortir une fois qu'il a soumis la charge de travail, car un hook qui attend [retarde les hooks suivants de son orchestrateur](https://code.claude.com/docs/fr/self-hosted-environments-reference.md#orchestrator-cli-flags). Après avoir modifié le hook, vérifiez le statut de chaque session bloquée dans l'onglet **Activity** :373Si votre hook attend, faites-le également se terminer dès qu'il a soumis la charge de travail, car un hook en attente [retarde les hooks suivants de son orchestrateur](https://code.claude.com/docs/fr/self-hosted-environments-reference.md#orchestrator-cli-flags). Après avoir modifié le hook, vérifiez le statut de chaque session bloquée dans l'onglet **Activity** :

374 374 

375* **Queued** : la session reçoit d'elle-même sa prochaine demande de spawn375* **Queued** : la session reçoit automatiquement sa prochaine demande de lancement

376* **Failed** : sélectionnez **Retry** sur elle en tant qu'Owner, ou demandez à son utilisateur de lui envoyer un nouveau message376* **Failed** : sélectionnez **Retry** sur celle-ci en tant qu'Owner, ou demandez à son utilisateur de lui envoyer un nouveau message

377 377 

378#### Faire quitter les runners à la demande lorsqu'ils sont inactifs378#### Faire en sorte que les runners à la demande se terminent lorsqu'ils sont inactifs

379 379 

380Par défaut, un runner que votre hook démarre ne se termine pas lorsque le tour de sa session s'achève, donc la charge de travail que vous avez soumise continue de s'exécuter. Pour que les runners se terminent, faites passer par votre hook ces [flags du runner](https://code.claude.com/docs/fr/self-hosted-environments-reference.md#runner-cli-flags) :380Par défaut, un runner démarré par votre hook ne se termine pas à la fin du tour de sa session, de sorte que la charge de travail que vous avez soumise continue de s'exécuter. Pour que les runners se terminent, faites transmettre par votre hook ces [flags du runner](https://code.claude.com/docs/fr/self-hosted-environments-reference.md#runner-cli-flags) :

381 381 

382| Flag, avec un exemple de valeur | À passer à | Effet |382| Flag, avec un exemple de valeur | À transmettre à | Ce qu'il fait |

383| :- | :- | :- |383| :- | :- | :- |

384| `--release-idle-session-min 30` | Chaque runner que votre hook démarre | Le runner libère sa session après ce nombre de minutes d'inactivité, puis se termine avec le code 0. La session reprend lorsque son utilisateur envoie son message suivant, mais [le travail qu'elle n'avait pas poussé est perdu](https://code.claude.com/docs/fr/self-hosted-environments-deploy.md#additional-limitations). |384| `--release-idle-session-min 30` | Chaque runner démarré par votre hook | Le runner libère sa session après ce nombre de minutes d'inactivité, puis sort avec 0. La session reprend lorsque son utilisateur envoie son message suivant, mais [le travail qu'elle n'avait pas poussé est perdu](https://code.claude.com/docs/fr/self-hosted-environments-deploy.md#additional-limitations). [Conservez une session](https://code.claude.com/docs/fr/self-hosted-environments-deploy.md#keep-an-idle-session-while-its-processes-run) pour les processus qu'elle a laissés en cours d'exécution. |

385| `--kill-session-after-min 480` | Chaque runner que votre hook démarre | Limite chaque session à ce nombre de minutes, comme filet de sécurité pour les [sessions qui ne comptent pas comme inactives](https://code.claude.com/docs/fr/self-hosted-environments-deploy.md#some-sessions-don’t-count-as-idle), donc définissez-le au-dessus de votre session attendue la plus longue |385| `--kill-session-after-min 480` | Chaque runner démarré par votre hook | Limite chaque session à ce nombre de minutes, comme filet de sécurité pour les [sessions qui ne sont pas considérées comme inactives](https://code.claude.com/docs/fr/self-hosted-environments-deploy.md#some-sessions-don’t-count-as-idle) ; définissez-le donc au-delà de votre session la plus longue attendue |

386| `--exit-if-unused-min 60` | Les runners de secours, que votre hook démarre pour les demandes de pré-réchauffage | Un runner de secours qui ne prend jamais de session se termine après ce nombre de minutes. Si vous définissez [`--min-idle`](https://code.claude.com/docs/fr/self-hosted-environments-reference#orchestrator-cli-flags), vous obtenez un remplaçant, sauf si le runner de secours était excédentaire, donc utilisez une valeur bien supérieure à votre temps de démarrage. |386| `--exit-if-unused-min 60` | Les runners de réserve, que votre hook démarre pour les demandes de préchauffage | Un runner de réserve qui ne prend jamais de session se termine après ce nombre de minutes. Si vous définissez [`--min-idle`](https://code.claude.com/docs/fr/self-hosted-environments-reference#orchestrator-cli-flags), vous obtenez un remplaçant, sauf si le runner de réserve était excédentaire ; utilisez donc une valeur bien supérieure à votre temps de démarrage. |

387 387 

388Supprimez la charge de travail lorsque le runner se termine, par exemple en définissant `ttlSecondsAfterFinished` sur un Kubernetes Job ou en faisant supprimer la VM par son script de démarrage une fois terminé.388Supprimez la charge de travail à la sortie du runner, par exemple en définissant `ttlSecondsAfterFinished` sur un Job Kubernetes ou en faisant supprimer la VM par son script de démarrage une fois le travail terminé.

389 389 

390#### Envoyer la sortie d'un processus en arrière-plan vers un fichier390#### Envoyer la sortie d'un processus en arrière-plan vers un fichier

391 391 

392Si votre hook `spawn-runner` laisse un processus s'exécuter en arrière-plan, envoyez la sortie de ce processus vers un fichier que l'utilisateur du hook peut créer. Par exemple, ajoutez `>> "$HOME/claude-runner.log" 2>&1` à la commande qui démarre le processus, avant tout `&`. Cette ligne de hook montre où se place la redirection, `your-background-command` représentant la commande que votre hook lance en arrière-plan :392Si votre hook `spawn-runner` laisse un processus s'exécuter en arrière-plan, envoyez la sortie de ce processus vers un fichier que l'utilisateur du hook peut créer. Par exemple, ajoutez `>> "$HOME/claude-runner.log" 2>&1` à la commande qui démarre le processus, avant tout `&`. Cette ligne de hook montre où placer la redirection, `your-background-command` représentant la commande que votre hook met en arrière-plan :

393 393 

394```bash theme={null}394```bash theme={null}

395your-background-command >> "$HOME/claude-runner.log" 2>&1 &395your-background-command >> "$HOME/claude-runner.log" 2>&1 &


397 397 

398Sans la redirection, le processus écrit sur le stdout et le stderr du hook :398Sans la redirection, le processus écrit sur le stdout et le stderr du hook :

399 399 

400* Environ une seconde après la sortie du hook, l'orchestrateur consigne `exited, but a process it started still has the hook's stdout or stderr open`. À partir de cette ligne, il consigne jusqu'à 64 Ko supplémentaires de cette sortie sous `[runner:hook:spawn-runner:after-exit jti=<order id>]`, puis abandonne le reste.400* Environ une seconde après la sortie du hook, l'orchestrateur journalise `exited, but a process it started still has the hook's stdout or stderr open`. À partir de cette ligne, il journalise jusqu'à 64 Ko supplémentaires de cette sortie sous `[runner:hook:spawn-runner:after-exit jti=<order id>]`, puis ignore le reste.

401* Une fois que l'orchestrateur s'est terminé, les écritures du processus à cet endroit échouent.401* Une fois l'orchestrateur terminé, les écritures du processus à cet endroit échouent.

402 402 

403Un runner que votre hook démarre lui-même exécute les sessions sur l'hôte orchestrateur, qui détient le [secret d'environnement](https://code.claude.com/docs/fr/self-hosted-environments-deploy.md#harden-your-deployment).403Un runner que votre hook démarre lui-même exécute les sessions sur l'hôte de l'orchestrateur, qui détient le [secret d'environnement](https://code.claude.com/docs/fr/self-hosted-environments-deploy.md#harden-your-deployment).

404 404 

405Avant la v2.1.305, un hook qui s'était déjà terminé atteignait quand même [`--hook-timeout`](https://code.claude.com/docs/fr/self-hosted-environments-reference#orchestrator-cli-flags) tant qu'un processus qu'il avait démarré gardait ouverts le stdout ou le stderr du hook, ce qui s'affichait ainsi :405Avant la v2.1.305, un hook déjà terminé atteignait tout de même [`--hook-timeout`](https://code.claude.com/docs/fr/self-hosted-environments-reference#orchestrator-cli-flags) tant qu'un processus qu'il avait démarré gardait ouverts le stdout ou le stderr du hook, ce qui se manifestait ainsi :

406 406 

407* **Onglet Activity**, dans l'erreur de spawn d'une session échouée : `spawn-runner hook timed out after 60000ms`, ou les dernières lignes du stderr du hook.407* **Onglet Activity**, dans l'erreur de lancement d'une session en échec : `spawn-runner hook timed out after 60000ms`, ou les dernières lignes du stderr du hook.

408* **Journal de l'orchestrateur** : `timed out after 60000ms, sending SIGTERM to process tree`.408* **Log de l'orchestrateur** : `timed out after 60000ms, sending SIGTERM to process tree`.

409 409 

410#### Quitter le hook sans attendre le runner410#### Terminer le hook sans attendre le runner

411 411 

412Si chaque runner à la demande s'arrête environ 60 secondes après le démarrage de son hook, et que votre hook s'exécute à nouveau pour la même session, vérifiez si le hook attend le runner. Les 60 secondes correspondent au [`--hook-timeout`](https://code.claude.com/docs/fr/self-hosted-environments-reference#orchestrator-cli-flags) par défaut ; si vous définissez votre propre valeur, les runners s'arrêtent au bout de cette durée après le démarrage du hook.412Si chaque runner à la demande s'arrête environ 60 secondes après le démarrage de son hook, et que votre hook s'exécute à nouveau pour la même session, vérifiez si le hook attend le runner. Les 60 secondes correspondent au [`--hook-timeout`](https://code.claude.com/docs/fr/self-hosted-environments-reference#orchestrator-cli-flags) par défaut ; si vous avez défini votre propre valeur, les runners s'arrêtent donc après cette durée suivant le démarrage du hook.

413 413 

414Un hook qui démarre `claude self-hosted-runner` sur l'hôte de l'orchestrateur et l'attend, au premier plan ou avec `wait`, est toujours en cours d'exécution à l'expiration de `--hook-timeout`. L'orchestrateur arrête alors le hook et les processus qui s'exécutent sous lui, y compris ce runner et le processus Claude de la session, de sorte qu'un tour encore en cours est interrompu.414Un hook qui démarre `claude self-hosted-runner` sur l'hôte de l'orchestrateur et l'attend, au premier plan ou avec `wait`, est toujours en cours d'exécution à la fin de `--hook-timeout`. L'orchestrateur arrête alors le hook et les processus qui s'exécutent sous celui-ci, y compris ce runner et le processus Claude de la session, de sorte qu'un tour encore en cours est interrompu.

415 415 

416* **Pour confirmer que c'est le délai d'expiration qui arrête vos runners** : recherchez dans le journal de l'orchestrateur `timed out after 60000ms, sending SIGTERM to process tree` à chaque demande de spawn. Le `60000` correspond à votre `--hook-timeout` en millisecondes.416* **Pour confirmer que c'est le délai d'expiration qui arrête vos runners** : recherchez dans le log de l'orchestrateur `timed out after 60000ms, sending SIGTERM to process tree` à chaque demande de lancement. Le `60000` correspond à votre `--hook-timeout` en millisecondes.

417* **Pour corriger le problème** : faites en sorte que le hook soumette le runner à votre plateforme puis sorte avec 0. Si vous augmentez plutôt `--hook-timeout`, le runner s'arrête simplement plus tard.417* **Pour corriger le problème** : faites en sorte que le hook soumette le runner à votre plateforme et sorte avec 0. Si vous augmentez plutôt `--hook-timeout`, le runner s'arrête simplement plus tard.

418 418 

419#### Garder les échecs transitoires réessayables dans un hook shell419#### Garder les échecs transitoires réessayables dans un hook shell

420 420 

421Dans un hook shell qui utilise `set -e`, un échec qu'une nouvelle tentative aurait pu résoudre peut bloquer la session. Le hook s'arrête à la commande en échec et sort avec le statut propre à cette commande, et l'orchestrateur applique le contrat du code de sortie à ce statut. De nombreux échecs renvoient un statut de 2 ou plus, comme `127` quand une commande n'est pas installée et `22` de `curl --fail` sur une erreur HTTP, de sorte qu'ils bloquent la session dès son premier échec.421Dans un hook shell qui utilise `set -e`, un échec qu'une nouvelle tentative aurait pu résoudre peut bloquer la session. Le hook s'arrête à la commande en échec et sort avec le statut propre à cette commande, et l'orchestrateur applique le contrat des codes de sortie à ce statut. De nombreux échecs renvoient un statut de 2 ou plus, comme `127` lorsqu'une commande n'est pas installée et `22` de `curl --fail` en cas d'erreur HTTP ; ils bloquent donc la session dès son premier échec.

422 422 

423Une session que le hook a déjà bloquée reste bloquée jusqu'à ce qu'un utilisateur lui envoie un nouveau message ou qu'un [Owner](https://code.claude.com/docs/fr/cloud-environments.md#organization-shared-environments) sélectionne **Retry** sur elle dans l'onglet **Activity** de l'environnement.423Une session que le hook a déjà bloquée reste bloquée jusqu'à ce qu'un utilisateur lui envoie un nouveau message ou qu'un [Owner](https://code.claude.com/docs/fr/cloud-environments.md#organization-shared-environments) sélectionne **Retry** sur celle-ci dans l'onglet **Activity** de l'environnement.

424 424 

425Pour transformer un tel échec en sortie 1, placez ces lignes directement sous la ligne `#!` du hook, au-dessus de tout ce qui peut échouer :425Pour transformer un tel échec en sortie 1, placez ces lignes directement sous la ligne `#!` du hook, au-dessus de tout ce qui peut échouer :

426 426 


430trap 'rc=$?; [ "$rc" -eq 0 ] || [ -n "${PERMANENT:-}" ] || exit 1' EXIT430trap 'rc=$?; [ "$rc" -eq 0 ] || [ -n "${PERMANENT:-}" ] || exit 1' EXIT

431```431```

432 432 

433Ces lignes modifient le comportement du reste du hook, donc vérifiez-le pour chacun de ces motifs après les avoir ajoutées :433Ces lignes modifient le comportement du reste du hook ; après les avoir ajoutées, vérifiez-le donc pour chacun de ces schémas :

434 434 

435* **`exit 2` ou supérieur isolé** : avec le trap défini, il devient une sortie 1. Pour une erreur qu'aucune nouvelle tentative ne peut corriger, appelez plutôt `permanent` avec la raison, comme `permanent "namespace claude-runners does not exist"`. Appelez-le dans le shell principal, pas à l'intérieur de `$( )`, `( )` ou d'un pipe.435* **`exit 2` ou supérieur isolé** : avec le trap défini, il devient exit 1. Pour une erreur qu'aucune nouvelle tentative ne peut corriger, appelez plutôt `permanent` avec la raison, par exemple `permanent "namespace claude-runners does not exist"`. Appelez-la dans le shell principal, et non dans `$( )`, `( )` ou un pipe.

436* **`exec`** : ne commencez pas la dernière commande du hook par `exec`, car `exec` remplace le shell et le trap ne s'exécute pas.436* **`exec`** : ne commencez pas la dernière commande du hook par `exec`, car `exec` remplace le shell et le trap ne s'exécute pas.

437* **Second trap `EXIT`** : un second `trap ... EXIT` remplace le premier, donc fusionnez les deux en un seul trap. Placez vos commandes de nettoyage directement après `rc=$?;` et terminez chacune par `|| true;`. Le nettoyage s'exécute alors en cas d'échec comme en cas de succès, et une commande de nettoyage en échec ne définit pas le statut de sortie du hook. Ce trap fusionné illustre la forme, `your-cleanup-command` représentant votre propre commande :437* **Second trap `EXIT`** : un second `trap ... EXIT` remplace le premier ; fusionnez donc les deux en un seul trap. Placez vos commandes de nettoyage directement après `rc=$?;` et terminez chacune par `|| true;`. Le nettoyage s'exécute alors en cas d'échec comme en cas de succès, et une commande de nettoyage en échec ne définit pas le statut de sortie du hook. Ce trap fusionné en illustre la forme, `your-cleanup-command` représentant votre propre commande :

438 438 

439 ```bash theme={null}439 ```bash theme={null}

440 trap 'rc=$?; your-cleanup-command || true; [ "$rc" -eq 0 ] || [ -n "${PERMANENT:-}" ] || exit 1' EXIT440 trap 'rc=$?; your-cleanup-command || true; [ "$rc" -eq 0 ] || [ -n "${PERMANENT:-}" ] || exit 1' EXIT

441 ```441 ```

442* **Commandes autorisées à échouer** : si le hook n'utilisait pas `set -e` auparavant, il s'arrête désormais à la première commande qui renvoie une valeur non nulle, comme une recherche qui ne trouve rien. Si le hook agit sur le résultat, faites de cette commande la condition d'un `if`. S'il ignore le résultat, faites suivre la commande de `|| true`.442* **Commandes autorisées à échouer** : si le hook n'utilisait pas `set -e` auparavant, il s'arrête désormais à la première commande qui renvoie une valeur non nulle, comme une recherche qui ne trouve rien. Si le hook agit en fonction du résultat, faites de cette commande la condition d'un `if`. S'il ignore le résultat, faites suivre la commande de `|| true`.

443* **La commande qui soumet la charge de travail** : ne la faites pas suivre de `|| true`. Avec `|| true`, le hook sort avec 0 même lorsque votre plateforme refuse la soumission, par exemple en cas de dépassement de quota, et la session attend un runner qui n'a jamais été démarré.443* **La commande qui soumet la charge de travail** : ne la faites pas suivre de `|| true`. Avec `|| true`, le hook sort avec 0 même lorsque votre plateforme refuse la soumission, par exemple en cas de dépassement de quota, et la session attend un runner qui n'a jamais été démarré.

444 444 

445 Nommez la charge de travail d'après `CLAUDE_RUNNER_ORDER_ID`, comme l'indique [la première règle du hook](#the-spawn-runner-hook). Une réponse indiquant que la ressource existe déjà correspond alors à une redélivraison de la même demande, donc traitez uniquement cette réponse comme un succès. Pour toute autre réponse, affichez-la sur stderr et sortez avec 1, ou appelez `permanent` si aucune nouvelle tentative ne peut corriger le problème. Cet exemple le fait pour `kubectl create`, avec un `job.yaml` qui ne contient que la charge de travail :445 Nommez la charge de travail d'après `CLAUDE_RUNNER_ORDER_ID`, comme l'indique [la première règle du hook](#the-spawn-runner-hook). Une réponse indiquant que la ressource existe déjà correspond alors à une redistribution de la même demande ; traitez donc cette seule réponse comme un succès. Pour toute autre réponse, affichez-la sur stderr et sortez avec 1, ou appelez `permanent` si aucune nouvelle tentative ne peut corriger le problème. Cet exemple le fait pour `kubectl create`, avec un `job.yaml` qui ne contient que la charge de travail :

446 446 

447 ```bash theme={null}447 ```bash theme={null}

448 if ! out=$(kubectl create -f job.yaml 2>&1); then448 if ! out=$(kubectl create -f job.yaml 2>&1); then


453 fi453 fi

454 ```454 ```

455 455 

456 Le journal de l'orchestrateur affiche alors ce message. Si le hook crée d'autres objets, nommez chacun d'après l'ID de commande, donnez-lui sa propre commande et traitez de la même manière sa réponse indiquant qu'il existe déjà comme un succès. Pour un objet qui contient un secret, affichez un message fixe à la place de la sortie de la commande.456 Le log de l'orchestrateur affiche alors ce message. Si le hook crée d'autres objets, nommez chacun d'eux d'après l'identifiant de l'ordre, attribuez-lui sa propre commande, et traitez de la même manière sa réponse indiquant qu'il existe déjà comme un succès. Pour un objet contenant un secret, affichez un message fixe à la place de la sortie de la commande.

457 457 

458Pour confirmer que le trap fonctionne, ajoutez directement sous la ligne `trap` une ligne qui appelle une commande inexistante, comme `no-such-command`. Exécutez le fichier du hook depuis votre shell et vérifiez que `echo $?` affiche `1`, puis supprimez la ligne.458Pour confirmer que le trap fonctionne, ajoutez directement sous la ligne `trap` une ligne qui appelle une commande inexistante, par exemple `no-such-command`. Exécutez le fichier du hook depuis votre shell et vérifiez que `echo $?` affiche `1`, puis supprimez la ligne.

459 459 

460## Envoyer les requêtes de modèle vers Bedrock ou Agent Platform460## Envoyer les requêtes de modèle vers Bedrock ou Agent Platform

461 461 

Details

68| `code.claude.com` et `claude.com` | 443 | Recherches de documentation par l'agent claude-code-guide intégré et demandes WebFetch pré-approuvées pendant les sessions. Bloquer ces hôtes affecte uniquement les recherches de documentation. |68| `code.claude.com` et `claude.com` | 443 | Recherches de documentation par l'agent claude-code-guide intégré et demandes WebFetch pré-approuvées pendant les sessions. Bloquer ces hôtes affecte uniquement les recherches de documentation. |

69| `*.frame.claudeusercontent.com` | 443 | Uniquement quand l'[outil Artifact](https://code.claude.com/docs/fr/artifacts.md#availability) est disponible pour les sessions dans votre organisation ; les valeurs par défaut varient selon le plan, selon le tableau de disponibilité là-bas. Définissez `CLAUDE_CODE_DISABLE_ARTIFACT=1` sur le runner pour garder l'outil désactivé indépendamment du paramètre d'organisation. |69| `*.frame.claudeusercontent.com` | 443 | Uniquement quand l'[outil Artifact](https://code.claude.com/docs/fr/artifacts.md#availability) est disponible pour les sessions dans votre organisation ; les valeurs par défaut varient selon le plan, selon le tableau de disponibilité là-bas. Définissez `CLAUDE_CODE_DISABLE_ARTIFACT=1` sur le runner pour garder l'outil désactivé indépendamment du paramètre d'organisation. |

70| `registry.npmjs.org` | 443 | Quand une session installe un plugin, à la fois pour récupérer les packages de plugin source npm et pour installer les dépendances Node.js d'un plugin, ou quand un serveur MCP lancé par `npx` s'exécute |70| `registry.npmjs.org` | 443 | Quand une session installe un plugin, à la fois pour récupérer les packages de plugin source npm et pour installer les dépendances Node.js d'un plugin, ou quand un serveur MCP lancé par `npx` s'exécute |

71| Un miroir interne des registres de packages utilisés par vos builds, ou les registres eux-mêmes | 443, ou le port de votre miroir | Quand les sessions installent des dépendances pour compiler ou tester vos dépôts |

71| `http-intake.logs.us5.datadoghq.com` | 443 | Métriques opérationnelles Anthropic. Uniquement quand `CLAUDE_CODE_BYOC_ENABLE_DATADOG=1` est défini ; désactivé par défaut dans les environnements auto-hébergés. |72| `http-intake.logs.us5.datadoghq.com` | 443 | Métriques opérationnelles Anthropic. Uniquement quand `CLAUDE_CODE_BYOC_ENABLE_DATADOG=1` est défini ; désactivé par défaut dans les environnements auto-hébergés. |

72| `browser-intake-us5-datadoghq.com` | 443 | Téléchargements de rapports d'erreurs Anthropic, envoyés uniquement quand [le rapport d'erreurs](https://code.claude.com/docs/fr/data-usage.md#telemetry-services) est activé pour le compte de la session. Supprimé par `DISABLE_ERROR_REPORTING=1` ou `DISABLE_TELEMETRY=1`. |73| `browser-intake-us5-datadoghq.com` | 443 | Téléchargements de rapports d'erreurs Anthropic, envoyés uniquement quand [le rapport d'erreurs](https://code.claude.com/docs/fr/data-usage.md#telemetry-services) est activé pour le compte de la session. Supprimé par `DISABLE_ERROR_REPORTING=1` ou `DISABLE_TELEMETRY=1`. |

73| Les endpoints de votre fournisseur cloud pour les requêtes de modèle, les recherches de modèles et le renouvellement des identifiants, tels que `bedrock-runtime.us-east-1.amazonaws.com` ou `aiplatform.googleapis.com` | 443 | Uniquement quand le runner [envoie les requêtes de modèle à Amazon Bedrock ou à Agent Platform de Google Cloud](https://code.claude.com/docs/fr/self-hosted-environments-configuration.md#send-model-requests-to-bedrock-or-agent-platform) |74| Les endpoints de votre fournisseur cloud pour les requêtes de modèle, les recherches de modèles et le renouvellement des identifiants, tels que `bedrock-runtime.us-east-1.amazonaws.com` ou `aiplatform.googleapis.com` | 443 | Uniquement quand le runner [envoie les requêtes de modèle à Amazon Bedrock ou à Agent Platform de Google Cloud](https://code.claude.com/docs/fr/self-hosted-environments-configuration.md#send-model-requests-to-bedrock-or-agent-platform) |


631 632 

632Dans les deux premiers stades qui suivent le signal, le runner libère les sessions, et une session libérée reprend sur un runner frais lorsque son utilisateur envoie son prochain message. En comptant à partir du premier signal, le runner passe par trois stades :633Dans les deux premiers stades qui suivent le signal, le runner libère les sessions, et une session libérée reprend sur un runner frais lorsque son utilisateur envoie son prochain message. En comptant à partir du premier signal, le runner passe par trois stades :

633 634 

634* **Pendant les premiers `n` minutes** : le runner sert ses sessions normalement et continue d'appliquer `--startup-timeout-min` et `--kill-session-after-min`. Si vous définissez également [`--release-idle-session-min`](https://code.claude.com/docs/fr/self-hosted-environments-reference#runner-cli-flags), le runner libère toute session dont l'utilisateur a été inactif aussi longtemps ; sans cela, les sessions inactives restent sur le runner.635* **Pendant les premiers `n` minutes** : le runner sert ses sessions normalement et continue d'appliquer `--startup-timeout-min` et `--kill-session-after-min`. Si vous définissez également [`--release-idle-session-min`](https://code.claude.com/docs/fr/self-hosted-environments-reference#runner-cli-flags), le runner libère toute session dont l'utilisateur a été inactif aussi longtemps, sauf si vous [conservez cette session](#keep-an-idle-session-while-its-processes-run). Sans ce flag, les sessions inactives restent sur le runner.

635* **Lorsque les `n` minutes s'écoulent** : le runner libère chaque session qu'il détient toujours, inactive ou non. Le runner attend la fin du tour d'une session en cours de tour, et jusqu'à 60 secondes supplémentaires pour les tâches de fond d'un tour, avant de libérer cette session.636* **Lorsque les `n` minutes s'écoulent** : le runner libère chaque session qu'il détient toujours, inactive ou non. Le runner attend la fin du tour d'une session en cours de tour, et jusqu'à 60 secondes supplémentaires pour les tâches de fond d'un tour, avant de libérer cette session.

636* **Lorsque la grâce post-libération s'écoule** : le runner draine les sessions qu'il détient toujours, et le plan de contrôle remet chaque session drainée en file d'attente vers un autre runner immédiatement. La grâce post-libération commence lorsque les `n` minutes s'écoulent et est de 75 secondes par défaut. Si vous définissez `--drain-wait-sec` au-dessus de 60 secondes, la grâce post-libération est `--drain-wait-sec` plus 15 secondes à la place.637* **Lorsque la grâce post-libération s'écoule** : le runner draine les sessions qu'il détient toujours, et le plan de contrôle remet chaque session drainée en file d'attente vers un autre runner immédiatement. La grâce post-libération commence lorsque les `n` minutes s'écoulent et est de 75 secondes par défaut. Si vous définissez `--drain-wait-sec` au-dessus de 60 secondes, la grâce post-libération est `--drain-wait-sec` plus 15 secondes à la place.

637 638 


716 717 

717### Libérer les sessions inactives sur une flotte fixe718### Libérer les sessions inactives sur une flotte fixe

718 719 

719Si des sessions restent en attente sur une flotte fixe alors que chaque runner est en ligne, les sessions inactives peuvent en être la cause. Par défaut, une session conserve son emplacement une fois son tour terminé, et son runner reste verrouillé sur le [propriétaire](https://code.claude.com/docs/fr/self-hosted-environments#key-concepts) de cette session. Si la [tâche planifiée cloud](https://code.claude.com/docs/fr/routines.md) de votre équipe démarre une nouvelle session à chaque exécution, ses sessions inactives peuvent occuper tous les emplacements.720Si des sessions restent en attente sur une flotte fixe alors que chaque runner est en ligne, les sessions inactives peuvent en être la cause. Par défaut, une session conserve son emplacement une fois son tour terminé, et son runner reste verrouillé sur le [propriétaire](https://code.claude.com/docs/fr/self-hosted-environments#key-concepts) de cette session. Les sessions des autres propriétaires ne peuvent pas utiliser les emplacements libres de ce runner. Si la [tâche planifiée cloud](https://code.claude.com/docs/fr/routines.md) de votre équipe démarre une nouvelle session à chaque exécution, ses sessions inactives peuvent occuper tous les emplacements.

720 721 

721Pour vérifier, lisez `claude_code_self_hosted_runner_session_idle_seconds` dans les [métriques Prometheus](https://code.claude.com/docs/fr/self-hosted-environments-reference.md#prometheus-metrics) de chaque runner. Chaque session détenue par un runner possède sa propre série : `0` tant que la session est occupée, sinon le nombre de secondes écoulées depuis qu'elle est devenue inactive. Choisissez la durée d'inactivité que vous autorisez : plus longue que les pauses que les gens font en cours de tâche, et suffisamment courte pour que chaque exécution soit libérée avant le démarrage de la suivante de la tâche planifiée. Comparez ensuite les séries à cette durée.722Pour vérifier, lisez `claude_code_self_hosted_runner_session_idle_seconds` dans les [métriques Prometheus](https://code.claude.com/docs/fr/self-hosted-environments-reference.md#prometheus-metrics) de chaque runner. Chaque session détenue par un runner possède sa propre série : `0` tant que la session est occupée, sinon le nombre de secondes écoulées depuis qu'elle est devenue inactive. Choisissez la durée d'inactivité que vous autorisez : plus longue que les pauses que les gens font en cours de tâche, et suffisamment courte pour que chaque exécution soit libérée avant le démarrage de la suivante de la tâche planifiée. Comparez ensuite les séries à cette durée.

722 723 


725* **Un runner sans aucune série** : aucune session ne l'occupe. Consultez **Sessions stay queued** sous [Dépannage](#troubleshooting).726* **Un runner sans aucune série** : aucune session ne l'occupe. Consultez **Sessions stay queued** sous [Dépannage](#troubleshooting).

726* **Un runner dont les métriques ne répondent pas** : son processus s'est peut-être arrêté. Consultez **An environment that looks healthy** sous [Quand le runner s'arrête](#when-the-runner-exits).727* **Un runner dont les métriques ne répondent pas** : son processus s'est peut-être arrêté. Consultez **An environment that looks healthy** sous [Quand le runner s'arrête](#when-the-runner-exits).

727 728 

728Pour libérer les sessions inactives, démarrez chaque runner avec [`--release-idle-session-min`](https://code.claude.com/docs/fr/self-hosted-environments-reference#runner-cli-flags) suivi de cette durée en minutes, par exemple `--release-idle-session-min 30`. Le runner libère alors toute session qui reste inactive aussi longtemps, qu'elle ait été démarrée par une tâche planifiée ou par une personne.729Pour libérer les sessions inactives, démarrez chaque runner avec [`--release-idle-session-min`](https://code.claude.com/docs/fr/self-hosted-environments-reference#runner-cli-flags) suivi de cette durée en minutes, par exemple `--release-idle-session-min 30`. Le runner libère alors toute session qui reste inactive aussi longtemps, qu'elle ait été démarrée par une tâche planifiée ou par une personne, sauf si vous la [retenez pour les processus qu'elle a laissés en cours d'exécution](#keep-an-idle-session-while-its-processes-run).

729 730 

730* **Travail non poussé** : une session libérée reprend à son prochain message, sans le travail qu'elle n'avait pas poussé. Pour conserver ses commits, consultez [Les sessions reprises perdent le travail non poussé](#additional-limitations).731* **Travail non poussé** : une session libérée reprend à son prochain message, sans le travail qu'elle n'avait pas poussé. Pour conserver ses commits, consultez [Les sessions reprises perdent le travail non poussé](#additional-limitations).

731* **Arrêt du runner** : un runner qui libère sa dernière session entame un [arrêt normal](#when-the-runner-exits). Faites-le redémarrer par votre superviseur sur un système de fichiers vierge, comme le décrit [Renforcer votre déploiement](#harden-your-deployment).732* **Arrêt du runner** : un runner qui libère sa dernière session entame un [arrêt normal](#when-the-runner-exits). Faites-le redémarrer par votre superviseur sur un système de fichiers vierge, comme le décrit [Renforcer votre déploiement](#harden-your-deployment).

732* **Sessions qui ne deviennent jamais inactives** : définissez également [`--kill-session-after-min`](https://code.claude.com/docs/fr/self-hosted-environments-reference#runner-cli-flags), car [certaines sessions ne comptent pas comme inactives](#some-sessions-don’t-count-as-idle)733* **Sessions qui ne deviennent jamais inactives** : définissez également [`--kill-session-after-min`](https://code.claude.com/docs/fr/self-hosted-environments-reference#runner-cli-flags), car [certaines sessions ne comptent pas comme inactives](#some-sessions-don’t-count-as-idle)

733 734 

735### Conserver une session inactive pendant l'exécution de ses processus

736 

737Pour conserver une session inactive jusqu'à la fin des processus qu'elle a laissés sur votre hôte, comme des tâches `nohup`, démarrez le runner avec [`--hold-idle-file`](https://code.claude.com/docs/fr/self-hosted-environments-reference#runner-cli-flags) et continuez à toucher ce fichier depuis l'hôte. Nécessite Claude Code v2.1.311 ou version ultérieure.

738 

739Ces étapes supposent un runner non root sur un hôte. Si votre runner s'exécute en tant que `root`, ses sessions peuvent toucher le fichier elles-mêmes ; exécutez-le donc d'abord en tant qu'utilisateur dédié.

740 

741**1. Choisir un chemin pour le fichier**

742 

743Choisissez un fichier régulier local, comme `/var/lib/claude-hold/hold-idle`, dans un répertoire où les sessions ne peuvent pas écrire, répertoires parents compris, afin qu'aucune session ne puisse y écrire. Le runner et ses sessions partagent un même utilisateur du système d'exploitation : créez donc d'abord ce répertoire, appartenant à un autre utilisateur tel que `root`, avec le mode `755`.

744 

745**2. Démarrer le runner**

746 

747Depuis votre shell, démarrez le runner avec `--hold-idle-file`, `--release-idle-session-min` et [`--max-hold-min`](https://code.claude.com/docs/fr/self-hosted-environments-reference#runner-cli-flags), la limite d'une rétention, comptée à partir du moment où une session devient inactive. Sans cette option, la limite est d'un jour. Définissez-la au-dessus de `--release-idle-session-min`, sinon rien n'est retenu. Cet exemple libère les sessions inactives après 30 minutes et libère une session retenue au plus tard 4 heures après qu'elle est devenue inactive :

748 

749```bash theme={null}

750claude self-hosted-runner \

751 --environment-secret-file /etc/claude/environment-secret \

752 --release-idle-session-min 30 \

753 --hold-idle-file /var/lib/claude-hold/hold-idle \

754 --max-hold-min 240

755```

756 

757**3. Toucher le fichier pendant l'exécution des processus**

758 

759Pendant l'exécution des processus, exécutez `touch` sur le fichier depuis l'hôte en tant que propriétaire du répertoire, plus souvent que toutes les trois minutes. Le premier `touch` crée le fichier. Par exemple, ajoutez cette ligne à la crontab de `root` :

760 

761```text theme={null}

762* * * * * pgrep -x nightly-build > /dev/null && touch /var/lib/claude-hold/hold-idle

763```

764 

765Cette ligne s'exécute une fois par minute et touche le fichier tant qu'un processus nommé `nightly-build` s'exécute, de sorte qu'une session qui en démarre un reste retenue jusqu'à la limite. Remplacez la vérification `pgrep` par la méthode que votre hôte utilise pour trouver ce que les sessions ont laissé en cours d'exécution.

766 

767La vérification doit cesser de correspondre lorsqu'ils se terminent, sinon chaque session inactive sur ce runner reste retenue jusqu'à la limite.

768 

769**4. Confirmer la rétention**

770 

771Pendant l'exécution des processus, vérifiez que la date de modification du fichier reste inférieure à trois minutes. Lorsque la durée d'inactivité d'une session expire, recherchez `idle release held` dans le log du runner. Si aucune ligne de ce type n'apparaît, lisez `leftover-hold=` dans la ligne `watchdog config` que le runner consigne au démarrage, qui indique le fichier et la limite, ou la raison pour laquelle rien n'est retenu.

772 

773Trois minutes après le dernier `touch`, la rétention prend fin. Environ une minute plus tard, le log affiche `idle release no longer held` et le runner libère la session.

774 

775Même si le fichier continue de changer, une rétention peut prendre fin, dans des cas comme ceux-ci :

776 

777* **Limite dépassée** : `--max-hold-min` expire. Pour retenir plus longtemps, augmentez-la

778* **Libérations forcées** : vous avez défini [`--retire-at`](https://code.claude.com/docs/fr/self-hosted-environments-reference#runner-cli-flags), [`--defer-shutdown-max-min`](https://code.claude.com/docs/fr/self-hosted-environments-reference#runner-cli-flags) ou [`--kill-session-after-min`](https://code.claude.com/docs/fr/self-hosted-environments-reference#runner-cli-flags), et cette limite est atteinte. Pour retenir plus longtemps, définissez une limite plus tardive

779 

734## Problèmes connus et limitations780## Problèmes connus et limitations

735 781 

736Voici les limitations de cette version, avec des solutions de contournement où l'une existe.782Voici les limitations de cette version, avec des solutions de contournement où l'une existe.


828* **Claude Tag ne publie parfois pas sa réponse dans Slack** : le rappel de réponse est un [hook fourni par le plan de contrôle](https://code.claude.com/docs/fr/self-hosted-environments-configuration.md#how-each-session’s-config-is-assembled). Vérifiez avec `claude --version` que le runner exécute Claude Code v2.1.229 ou ultérieure, car les runners plus anciens ignorent les hooks fournis ; vérifiez que `python3 --version` réussit dans l'image du runner, car les hooks exécutent `python3` ; et vérifiez qu'aucun fichier de paramètres ne désactive les hooks, qu'il s'agisse de `disableAllHooks` dans `managed-settings.json`, dans le `~/.claude/settings.json` de l'utilisateur du runner, ou dans le `.claude/settings.json` ou le `.claude/settings.local.json` du dépôt, ou encore de `allowManagedHooksOnly` ou d'un [`strictPluginOnlyCustomization`](https://code.claude.com/docs/fr/settings-reference#strictpluginonlycustomization) couvrant les hooks dans les paramètres gérés.874* **Claude Tag ne publie parfois pas sa réponse dans Slack** : le rappel de réponse est un [hook fourni par le plan de contrôle](https://code.claude.com/docs/fr/self-hosted-environments-configuration.md#how-each-session’s-config-is-assembled). Vérifiez avec `claude --version` que le runner exécute Claude Code v2.1.229 ou ultérieure, car les runners plus anciens ignorent les hooks fournis ; vérifiez que `python3 --version` réussit dans l'image du runner, car les hooks exécutent `python3` ; et vérifiez qu'aucun fichier de paramètres ne désactive les hooks, qu'il s'agisse de `disableAllHooks` dans `managed-settings.json`, dans le `~/.claude/settings.json` de l'utilisateur du runner, ou dans le `.claude/settings.json` ou le `.claude/settings.local.json` du dépôt, ou encore de `allowManagedHooksOnly` ou d'un [`strictPluginOnlyCustomization`](https://code.claude.com/docs/fr/settings-reference#strictpluginonlycustomization) couvrant les hooks dans les paramètres gérés.

829* **Une session démarre sans l'un de ses dépôts** : sur un runner sans [hook `checkout`](https://code.claude.com/docs/fr/self-hosted-environments-configuration#checkout), l'hôte git peut refuser la vérification d'accès du runner pour un dépôt que la session ne fait que lire. Le runner ignore alors ce dépôt, journalise une ligne `[runner:warn] could not access context source` indiquant le refus, et démarre la session avec les dépôts restants.875* **Une session démarre sans l'un de ses dépôts** : sur un runner sans [hook `checkout`](https://code.claude.com/docs/fr/self-hosted-environments-configuration#checkout), l'hôte git peut refuser la vérification d'accès du runner pour un dépôt que la session ne fait que lire. Le runner ignore alors ce dépôt, journalise une ligne `[runner:warn] could not access context source` indiquant le refus, et démarre la session avec les dépôts restants.

830 876 

831 Le runner n'ignore qu'un refus explicite : l'hôte répond que le dépôt est introuvable, git ne trouve aucun identifiant pour l'hôte, ou l'authentification échoue. Une défaillance réseau, un délai d'expiration ou un HTTP `403` fait toujours échouer le démarrage de la session, tout comme un refus pour un dépôt vers lequel la session pousse ses résultats. Le runner fait toujours échouer une session qui se retrouverait sans aucun dépôt si les dépôts refusés étaient ignorés. Avec [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), le runner n'ignore qu'un dépôt que le proxy git lui-même refuse.877 Avec ses propres identifiants git, le runner peut ignorer un dépôt lorsque l'hôte répond que le dépôt est introuvable, que git ne trouve aucun identifiant pour l'hôte, ou que l'authentification échoue.

878 

879 Avec [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), lorsque le proxy git refuse un dépôt avec `access denied by the git proxy`, le runner l'ignore. La ligne de log indique alors `blocked by the git proxy`. Pour les causes à vérifier, consultez le cas `remote: access denied by the git proxy` dans [Lorsque les sessions ne démarrent pas sur un runner avec le proxy git](#when-anthropic-doesnt-serve-a-session).

880 

881 Une défaillance réseau, un délai d'expiration ou tout autre HTTP `403` fait toujours échouer le démarrage de la session, tout comme un refus pour un dépôt vers lequel la session pousse ses résultats. Le runner fait toujours échouer une session qui se retrouverait sans aucun dépôt si les dépôts refusés étaient ignorés.

832 882 

833 La vérification d'accès est réexécutée chaque fois que la session démarre sur un runner ; ainsi, dès que l'identité git du runner dispose d'un accès en lecture, le démarrage suivant clone le dépôt. Avant la v2.1.274, chacun de ces refus faisait échouer le démarrage de la session.883 La vérification d'accès est réexécutée chaque fois que la session démarre sur un runner ; ainsi, dès que l'identité git du runner dispose d'un accès en lecture, le démarrage suivant clone le dépôt. Avant la v2.1.274, chacun de ces refus faisait échouer le démarrage de la session.

884* **Le log affiche `could not read context source`** : cette ligne, contrairement à `could not access context source`, signifie que l'hôte git a continué de répondre HTTP `429`, ou qu'un wrapper que vous avez installé en tant que `git` a continué de se terminer avec le code `75`. Le runner a ignoré ce dépôt. Pour réessayer, démarrez une nouvelle session. Le runner retente également le dépôt chaque fois que cette session démarre sur un runner.

885 

886 Sans hook `checkout`, le runner peut ignorer un dépôt que la session ne fait que lire, sauf s'il est le premier parmi les dépôts de la session. Avant la v2.1.311, le démarrage de la session échouait.

834* **Une session échoue au démarrage avec `This runner couldn't read`** : le runner a demandé un dépôt à l'hôte git avec ses [identifiants git](#configure-git) et a reçu une réponse indiquant que le dépôt est introuvable. Le dépôt n'existe pas, ou ces identifiants ne permettent pas d'atteindre le dépôt.887* **Une session échoue au démarrage avec `This runner couldn't read`** : le runner a demandé un dépôt à l'hôte git avec ses [identifiants git](#configure-git) et a reçu une réponse indiquant que le dépôt est introuvable. Le dépôt n'existe pas, ou ces identifiants ne permettent pas d'atteindre le dépôt.

835 * **Si vous administrez le runner** : accordez à ses identifiants git un accès en lecture au dépôt, puis démarrez une nouvelle session.888 * **Si vous administrez le runner** : accordez à ses identifiants git un accès en lecture au dépôt, puis démarrez une nouvelle session.

836 * **Si vous avez démarré la session** : si le dépôt n'existe pas, démarrez une nouvelle session avec le bon dépôt. Si le runner ne peut pas atteindre le dépôt, demandez à l'administrateur du runner d'accorder l'accès, puis démarrez une nouvelle session.889 * **Si vous avez démarré la session** : si le dépôt n'existe pas, démarrez une nouvelle session avec le bon dépôt. Si le runner ne peut pas atteindre le dépôt, demandez à l'administrateur du runner d'accorder l'accès, puis démarrez une nouvelle session.

Details

37| `--git-host-rewrite <from>=<to>` | aucune | non défini | Réécrire les URL sources `https://<from>/...` en `https://<to>/...` avant le clonage, pour DNS à horizon divisé. Répétable ; drapeau uniquement. |37| `--git-host-rewrite <from>=<to>` | aucune | non défini | Réécrire les URL sources `https://<from>/...` en `https://<to>/...` avant le clonage, pour DNS à horizon divisé. Répétable ; drapeau uniquement. |

38| `--git-ssh-rewrite <host>` | aucune | non défini | Réécrire les URL sources `https://<host>/...` en `git@<host>:...` avant le clonage, pour les hôtes git SSH uniquement. Répétable ; drapeau uniquement. |38| `--git-ssh-rewrite <host>` | aucune | non défini | Réécrire les URL sources `https://<host>/...` en `git@<host>:...` avant le clonage, pour les hôtes git SSH uniquement. Répétable ; drapeau uniquement. |

39| `--health-port <port>` | `SELF_HOSTED_RUNNER_HEALTH_PORT` | `8080` | Port pour l'écouteur `/healthz` et `/metrics`. Définir `0` pour désactiver. |39| `--health-port <port>` | `SELF_HOSTED_RUNNER_HEALTH_PORT` | `8080` | Port pour l'écouteur `/healthz` et `/metrics`. Définir `0` pour désactiver. |

40| `--hold-idle-file <path>` | `SELF_HOSTED_RUNNER_HOLD_IDLE_FILE` | non défini | Fichier que votre hôte continue de modifier pour conserver une session inactive sur le runner. Voir [Conserver une session inactive pendant que ses processus s'exécutent](https://code.claude.com/docs/fr/self-hosted-environments-deploy.md#keep-an-idle-session-while-its-processes-run). Nécessite Claude Code v2.1.311 ou ultérieur. |

40| `--hooks-dir <path>` | `SELF_HOSTED_RUNNER_HOOKS_DIR` | non défini | Répertoire des scripts de hook de cycle de vie. Voir [Hooks de cycle de vie](https://code.claude.com/docs/fr/self-hosted-environments-configuration.md#lifecycle-hooks). |41| `--hooks-dir <path>` | `SELF_HOSTED_RUNNER_HOOKS_DIR` | non défini | Répertoire des scripts de hook de cycle de vie. Voir [Hooks de cycle de vie](https://code.claude.com/docs/fr/self-hosted-environments-configuration.md#lifecycle-hooks). |

41| `--host-config-snapshot <mode>` | `SELF_HOSTED_RUNNER_HOST_CONFIG_SNAPSHOT` | `disk` | Où le runner garde l'instantané de démarrage du [répertoire de configuration d'hôte](#environment-variable-only-settings) qu'il amorce chaque session à partir de. `disk` copie l'instantané dans un répertoire appartenant au runner sous `--base-dir` et, à chaque démarrage de session, vérifie chaque fichier par rapport à un digest en mémoire. Si un fichier dans la copie a été modifié, la session échoue et le runner refuse les sessions jusqu'à ce que vous le redémarriez. `memory` garde l'instantané entier sur le tas, limité à 64 MiB ; au-delà de la limite, les sessions démarrent sans configuration d'hôte et affichent un avis le disant. Quand le runner ne peut pas écrire l'instantané disque, il enregistre l'échec et utilise `memory` pour cette exécution. Nécessite Claude Code v2.1.271 ou ultérieur. |42| `--host-config-snapshot <mode>` | `SELF_HOSTED_RUNNER_HOST_CONFIG_SNAPSHOT` | `disk` | Où le runner garde l'instantané de démarrage du [répertoire de configuration d'hôte](#environment-variable-only-settings) qu'il amorce chaque session à partir de. `disk` copie l'instantané dans un répertoire appartenant au runner sous `--base-dir` et, à chaque démarrage de session, vérifie chaque fichier par rapport à un digest en mémoire. Si un fichier dans la copie a été modifié, la session échoue et le runner refuse les sessions jusqu'à ce que vous le redémarriez. `memory` garde l'instantané entier sur le tas, limité à 64 MiB ; au-delà de la limite, les sessions démarrent sans configuration d'hôte et affichent un avis le disant. Quand le runner ne peut pas écrire l'instantané disque, il enregistre l'échec et utilise `memory` pour cette exécution. Nécessite Claude Code v2.1.271 ou ultérieur. |

42| `--kill-session-after-min <n>` | `SELF_HOSTED_RUNNER_MAX_LIFETIME_MS` | `0` | Limiter une session à N minutes en temps réel, comme limite de sécurité pour les sessions bloquées. Sur v2.1.260 ou ultérieur, le runner libère une session qui atteint la limite afin qu'elle puisse reprendre au prochain message de son utilisateur, et la termine uniquement si elle est toujours sur le runner quand la fenêtre de grâce [`SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS`](#environment-variable-only-settings) se termine. Avant v2.1.260, le runner terminait la session à la limite. Voir [Certaines sessions ne comptent pas comme inactives](https://code.claude.com/docs/fr/self-hosted-environments-deploy.md#some-sessions-don%E2%80%99t-count-as-idle) pour les détails et comment choisir une valeur. `0` désactive. |43| `--kill-session-after-min <n>` | `SELF_HOSTED_RUNNER_MAX_LIFETIME_MS` | `0` | Limiter une session à N minutes en temps réel, comme limite de sécurité pour les sessions bloquées. Sur v2.1.260 ou ultérieur, le runner libère une session qui atteint la limite afin qu'elle puisse reprendre au prochain message de son utilisateur, et la termine uniquement si elle est toujours sur le runner quand la fenêtre de grâce [`SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS`](#environment-variable-only-settings) se termine. Avant v2.1.260, le runner terminait la session à la limite. Voir [Certaines sessions ne comptent pas comme inactives](https://code.claude.com/docs/fr/self-hosted-environments-deploy.md#some-sessions-don%E2%80%99t-count-as-idle) pour les détails et comment choisir une valeur. `0` désactive. |

43| `--lock-to-account <id>` | `SELF_HOSTED_RUNNER_LOCK_TO_ACCOUNT` | non défini | Pré-verrouiller le runner à un compte spécifique au démarrage au lieu de verrouiller à la première session. Accepte une adresse e-mail ou un ID `user_...` dans l'organisation de l'environnement. Un runner pré-verrouillé ne récupère jamais les sessions du canal Claude Tag, qui n'ont pas de compte. |44| `--lock-to-account <id>` | `SELF_HOSTED_RUNNER_LOCK_TO_ACCOUNT` | non défini | Pré-verrouiller le runner à un compte spécifique au démarrage au lieu de verrouiller à la première session. Accepte une adresse e-mail ou un ID `user_...` dans l'organisation de l'environnement. Un runner pré-verrouillé ne récupère jamais les sessions du canal Claude Tag, qui n'ont pas de compte. |

44| `--log-file <path>` | `SELF_HOSTED_RUNNER_LOG_FILE` | non défini | Refléter les logs du runner vers un fichier en plus de stdout et stderr, créé avec les permissions `0600`. Requis pour que `self-hosted-runner doctor` suive les logs localement. |45| `--log-file <path>` | `SELF_HOSTED_RUNNER_LOG_FILE` | non défini | Refléter les logs du runner vers un fichier en plus de stdout et stderr, créé avec les permissions `0600`. Requis pour que `self-hosted-runner doctor` suive les logs localement. |

45| `--log-level <level>` | aucune | `info` | `info` ou `debug` |46| `--log-level <level>` | aucune | `info` | `info` ou `debug` |

47| `--max-hold-min <n>` | `SELF_HOSTED_RUNNER_MAX_HOLD_MS` | `1440` | Avec `--hold-idle-file`, libérer quand même une session conservée N minutes après qu'elle est devenue inactive. Une valeur inférieure ou égale à `--release-idle-session-min` ne conserve rien. `0` désactive la conservation. Nécessite Claude Code v2.1.311 ou ultérieur. |

46| `--post-session-hook-timeout-sec <n>` | `SELF_HOSTED_RUNNER_POST_SESSION_HOOK_TIMEOUT_MS` | `60` | Budget pour le hook [`post-session`](https://code.claude.com/docs/fr/self-hosted-environments-configuration#post-session) à la fin de chaque session, y compris l'arrêt du runner |48| `--post-session-hook-timeout-sec <n>` | `SELF_HOSTED_RUNNER_POST_SESSION_HOOK_TIMEOUT_MS` | `60` | Budget pour le hook [`post-session`](https://code.claude.com/docs/fr/self-hosted-environments-configuration#post-session) à la fin de chaque session, y compris l'arrêt du runner |

47| `--proxy-authorization-command <command>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_COMMAND` | non défini | Commande shell que le runner exécute pour chaque connexion à votre proxy de sortie, en utilisant sa stdout coupée comme valeur d'en-tête `Proxy-Authorization`. Nécessite `HTTPS_PROXY` ou `HTTP_PROXY`, et ne peut pas être combiné avec `--proxy-authorization-file`. Voir [S'authentifier auprès d'un proxy de sortie](https://code.claude.com/docs/fr/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy). Nécessite Claude Code v2.1.238 ou ultérieur. |49| `--proxy-authorization-command <command>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_COMMAND` | non défini | Commande shell que le runner exécute pour chaque connexion à votre proxy de sortie, en utilisant sa stdout coupée comme valeur d'en-tête `Proxy-Authorization`. Nécessite `HTTPS_PROXY` ou `HTTP_PROXY`, et ne peut pas être combiné avec `--proxy-authorization-file`. Voir [S'authentifier auprès d'un proxy de sortie](https://code.claude.com/docs/fr/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy). Nécessite Claude Code v2.1.238 ou ultérieur. |

48| `--proxy-authorization-file <path>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_FILE` | non défini | Fichier que le runner lit pour chaque connexion à votre proxy de sortie, en utilisant son contenu coupé comme valeur d'en-tête `Proxy-Authorization`. Utilisez ce drapeau pour un token qu'un autre processus fait tourner en place. Porte les mêmes exigences que `--proxy-authorization-command`, et ne peut pas être combiné avec lui. Voir [S'authentifier auprès d'un proxy de sortie](https://code.claude.com/docs/fr/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy). Nécessite Claude Code v2.1.238 ou ultérieur. |50| `--proxy-authorization-file <path>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_FILE` | non défini | Fichier que le runner lit pour chaque connexion à votre proxy de sortie, en utilisant son contenu coupé comme valeur d'en-tête `Proxy-Authorization`. Utilisez ce drapeau pour un token qu'un autre processus fait tourner en place. Porte les mêmes exigences que `--proxy-authorization-command`, et ne peut pas être combiné avec lui. Voir [S'authentifier auprès d'un proxy de sortie](https://code.claude.com/docs/fr/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy). Nécessite Claude Code v2.1.238 ou ultérieur. |

49| `--push-outcome-on-release` | `SELF_HOSTED_RUNNER_PUSH_OUTCOME_ON_RELEASE` | désactivé | À la fin d'une session initiée par le runner comme un drainage ou une libération inactive, pousser les branches de résultat suivies vers `origin` avant de supprimer l'espace de travail, afin que les commits en vol survivent à un redémarrage. Meilleur effort ; ajoute 30 secondes au budget d'arrêt, et nécessite git 2.29 ou plus récent pour reprendre à partir de la branche poussée. Restreindre l'accès en push aux refs `claude/*` avant d'activer ; voir [Les sessions reprises perdent le travail non poussé](https://code.claude.com/docs/fr/self-hosted-environments-deploy.md#additional-limitations). Les dépôts extraits via un hook de cycle de vie `checkout` ne sont pas poussés ; prenez des snapshots de ceux-ci à partir du hook [`post-session`](https://code.claude.com/docs/fr/self-hosted-environments-configuration#post-session) à la place. |51| `--push-outcome-on-release` | `SELF_HOSTED_RUNNER_PUSH_OUTCOME_ON_RELEASE` | désactivé | À la fin d'une session initiée par le runner comme un drainage ou une libération inactive, pousser les branches de résultat suivies vers `origin` avant de supprimer l'espace de travail, afin que les commits en vol survivent à un redémarrage. Meilleur effort ; ajoute 30 secondes au budget d'arrêt, et nécessite git 2.29 ou plus récent pour reprendre à partir de la branche poussée. Restreindre l'accès en push aux refs `claude/*` avant d'activer ; voir [Les sessions reprises perdent le travail non poussé](https://code.claude.com/docs/fr/self-hosted-environments-deploy.md#additional-limitations). Les dépôts extraits via un hook de cycle de vie `checkout` ne sont pas poussés ; prenez des snapshots de ceux-ci à partir du hook [`post-session`](https://code.claude.com/docs/fr/self-hosted-environments-configuration#post-session) à la place. |

50| `--release-idle-session-min <n>` | `SELF_HOSTED_RUNNER_SESSION_IDLE_MS` | `0` | Libérer un créneau de session après N minutes d'inactivité une fois qu'un tour se termine ou que la session attend l'action de l'utilisateur. Une session qui est toujours au milieu d'un tour, y compris une qui détient une tâche de fond qui ne finit jamais ou une approbation demandée de l'intérieur d'un appel d'outil en cours d'exécution, ne compte pas comme inactive ; associer avec `--kill-session-after-min` comme butée dure. Après la fin de la tâche de fond d'une session, le runner considère la session comme occupée jusqu'au tour de suivi qui lit le résultat commence, pendant au maximum la fenêtre [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings). Jusqu'à ce que le runner reçoive un signal d'arrêt ou atteigne son heure de retraite, une libération qui laisse le runner sans sessions actives démarre le même chemin de sortie qu'un drainage normal, gouverné par `--drain-grace-sec`. Après un premier signal que vous avez différé avec [`--defer-shutdown-max-min`](https://code.claude.com/docs/fr/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal), le runner se termine dès qu'une libération le laisse sans sessions. `0` désactive. |52| `--release-idle-session-min <n>` | `SELF_HOSTED_RUNNER_SESSION_IDLE_MS` | `0` | Libérer un créneau de session après N minutes d'inactivité une fois qu'un tour se termine ou que la session attend l'action de l'utilisateur. [Certaines sessions ne comptent pas comme inactives](https://code.claude.com/docs/fr/self-hosted-environments-deploy.md#some-sessions-don’t-count-as-idle), donc associez ce flag à `--kill-session-after-min`. Une tâche en arrière-plan terminée garde la session occupée pendant au maximum la fenêtre [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings). Pour retarder une libération, définissez [`--hold-idle-file`](https://code.claude.com/docs/fr/self-hosted-environments-deploy#keep-an-idle-session-while-its-processes-run). `0` désactive. |

51| `--remove-session-state [bool]` | `SELF_HOSTED_RUNNER_REMOVE_SESSION_STATE` | désactivé | Supprimer les répertoires par session d'une session sous `<base-dir>/_sessions/` quand la session se termine sur ce runner, quel que soit le résultat. [Réutiliser un checkout pré-chauffé](https://code.claude.com/docs/fr/self-hosted-environments-deploy.md#reuse-a-pre-warmed-checkout) décrit ce qu'ils contiennent et qui peut les lire quand ils restent. La suppression est meilleur effort : les répertoires par session restent en place quand le runner est tué ou atteint sa date limite de drainage avant que le nettoyage ne s'exécute. Avec le drapeau activé, le log de débogage d'une session échouée ou interrompue n'est pas conservé sur le disque. Nécessite Claude Code v2.1.268 ou ultérieur. |53| `--remove-session-state [bool]` | `SELF_HOSTED_RUNNER_REMOVE_SESSION_STATE` | désactivé | Supprimer les répertoires par session d'une session sous `<base-dir>/_sessions/` quand la session se termine sur ce runner, quel que soit le résultat. [Réutiliser un checkout pré-chauffé](https://code.claude.com/docs/fr/self-hosted-environments-deploy.md#reuse-a-pre-warmed-checkout) décrit ce qu'ils contiennent et qui peut les lire quand ils restent. La suppression est meilleur effort : les répertoires par session restent en place quand le runner est tué ou atteint sa date limite de drainage avant que le nettoyage ne s'exécute. Avec le drapeau activé, le log de débogage d'une session échouée ou interrompue n'est pas conservé sur le disque. Nécessite Claude Code v2.1.268 ou ultérieur. |

52| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | non défini | Retirer le runner à un timestamp Unix absolu en secondes, pour l'infrastructure qui tue le runner à un moment connu ; [Cycle de vie du runner](https://code.claude.com/docs/fr/self-hosted-environments#runner-lifecycle) décrit la séquence de libération et comment dimensionner la marge. Les valeurs avant 2001 ou après l'année 5138 sont rejetées par le drapeau et ignorées par la variable d'environnement. |54| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | non défini | Retirer le runner à un timestamp Unix absolu en secondes, pour l'infrastructure qui tue le runner à un moment connu ; [Cycle de vie du runner](https://code.claude.com/docs/fr/self-hosted-environments#runner-lifecycle) décrit la séquence de libération et comment dimensionner la marge. Les valeurs avant 2001 ou après l'année 5138 sont rejetées par le drapeau et ignorées par la variable d'environnement. |

53| `--server-auto-mode-lists <mode>` | `SELF_HOSTED_RUNNER_SERVER_AUTO_MODE_LISTS` | `no-allow` | Lesquelles des listes de règles du classifieur du [mode auto](https://code.claude.com/docs/fr/permission-modes.md#eliminate-prompts-with-auto-mode) que le plan de contrôle envoie avec une session peuvent atteindre cette session : `all`, `no-allow` ou `none`. Voir [Listes de règles du mode auto](#auto-mode-rule-lists) pour ce que chaque valeur applique. Une valeur invalide arrête le runner au démarrage. Nécessite Claude Code v2.1.295 ou ultérieur. |55| `--server-auto-mode-lists <mode>` | `SELF_HOSTED_RUNNER_SERVER_AUTO_MODE_LISTS` | `no-allow` | Lesquelles des listes de règles du classifieur du [mode auto](https://code.claude.com/docs/fr/permission-modes.md#eliminate-prompts-with-auto-mode) que le plan de contrôle envoie avec une session peuvent atteindre cette session : `all`, `no-allow` ou `none`. Voir [Listes de règles du mode auto](#auto-mode-rule-lists) pour ce que chaque valeur applique. Une valeur invalide arrête le runner au démarrage. Nécessite Claude Code v2.1.295 ou ultérieur. |


314 316 

315### Alerter sur les runners perdus et les sessions en attente317### Alerter sur les runners perdus et les sessions en attente

316 318 

317Sur une [flotte fixe](https://code.claude.com/docs/fr/self-hosted-environments-deploy.md#scale-the-fleet), chargez `ClaudeRunnersBelowFloor`. Avec des [runners à la demande](https://code.claude.com/docs/fr/self-hosted-environments-configuration.md#on-demand-runners), chargez plutôt `ClaudeOrchestratorSessionsWaiting` et `ClaudeOrchestratorQueueWaitHigh`.319Pour être alerté lorsque des runners sont perdus, que des sessions attendent ou que l'orchestrateur est arrêté, chargez ces règles d'alerte Prometheus en plus des [exemples de règles d'alerte](#sample-alert-rules) :

320 

321* **[Flotte fixe](https://code.claude.com/docs/fr/self-hosted-environments-deploy.md#scale-the-fleet)** : `ClaudeRunnersBelowFloor`

322* **[Runners à la demande](https://code.claude.com/docs/fr/self-hosted-environments-configuration.md#on-demand-runners)** : `ClaudeOrchestratorSessionsWaiting`, `ClaudeOrchestratorQueueWaitHigh` et `ClaudeOrchestratorAbsent`

318 323 

319#### Alerter lorsqu'une flotte fixe perd des runners324#### Alerter lorsqu'une flotte fixe perd des runners

320 325 


372* **Seuil** : si une session est toujours en attente, relevez le `> 0` dans `ClaudeOrchestratorSessionsWaiting` au-dessus du nombre que vous observez habituellement377* **Seuil** : si une session est toujours en attente, relevez le `> 0` dans `ClaudeOrchestratorSessionsWaiting` au-dessus du nombre que vous observez habituellement

373* **`ClaudeOrchestratorDisconnected`** : conservez-la chargée depuis les [exemples de règles d'alerte](#sample-alert-rules), car `ClaudeOrchestratorSessionsWaiting` cesse de se déclencher environ 2 minutes après la déconnexion du dernier orchestrateur du namespace378* **`ClaudeOrchestratorDisconnected`** : conservez-la chargée depuis les [exemples de règles d'alerte](#sample-alert-rules), car `ClaudeOrchestratorSessionsWaiting` cesse de se déclencher environ 2 minutes après la déconnexion du dernier orchestrateur du namespace

374 379 

380#### Alerter lorsque l'orchestrateur est arrêté

381 

382Pour savoir si l'[orchestrateur](https://code.claude.com/docs/fr/self-hosted-environments-configuration.md#on-demand-runners) lui-même est arrêté, chargez `ClaudeOrchestratorAbsent`. Elle se déclenche lorsqu'aucun orchestrateur du namespace n'a été scrapé pendant 5 minutes :

383 

384```yaml theme={null}

385groups:

386 # Runners à la demande uniquement. Remplacez claude-runners par le namespace de l'orchestrateur.

387 - name: claude-code-self-hosted-on-demand-orchestrator

388 rules:

389 - alert: ClaudeOrchestratorAbsent

390 expr: absent(claude_code_self_hosted_orchestrator_connected{namespace="claude-runners"})

391 for: 5m

392 labels: {severity: critical}

393 annotations:

394 summary: "Aucun orchestrateur n'a été scrapé depuis 5 minutes. S'il est arrêté, aucun runner à la demande ne démarre et les sessions attendent. Vérifiez d'abord le workload de l'orchestrateur, puis sa cible de scrape s'il est en cours d'exécution."

395```

396 

397* **Namespace** : remplacez `claude-runners` par le namespace de l'orchestrateur, et copiez l'alerte pour chaque namespace supplémentaire qui exécute un orchestrateur. Si vos cibles n'ont pas de label `namespace`, supprimez le matcher, sinon l'alerte se déclenche après 5 minutes et reste active.

398* **Serveurs Prometheus qui ne scrapent pas l'orchestrateur** : n'incluez pas l'alerte dans leurs fichiers de règles, car sur un tel serveur elle se déclenche après 5 minutes et reste active

399* **Ne vous fiez pas aux autres alertes de l'orchestrateur** : elles lisent des métriques que l'orchestrateur expose lui-même. `ClaudeOrchestratorSessionsWaiting`, `ClaudeOrchestratorQueueWaitHigh` et les [exemples de règles d'alerte](#sample-alert-rules) de l'orchestrateur cessent tous de se déclencher dans les 10 minutes environ suivant l'arrêt de l'orchestrateur.

400 

375### Passer les métriques enfants de session401### Passer les métriques enfants de session

376 402 

377Chaque session s'exécute dans son propre processus enfant avec ses propres métriques OpenTelemetry ; à `--capacity` au-dessus d'un, le runner réécrit comment ces métriques enfants sont exposées. Définir `OTEL_METRICS_EXPORTER=prometheus` sur l'hôte du runner et `CLAUDE_CODE_ENABLE_TELEMETRY=1` dans l'environnement de la session, par exemple à partir de votre [script wrapper](https://code.claude.com/docs/fr/self-hosted-environments-configuration.md#wrapper-scripts) ou l'environnement du runner lui-même, que les sessions héritent, réexpose les instruments de compteur et de jauge de chaque enfant sur le propre endpoint `/metrics` du runner, aux côtés des séries du runner. Le runner réécrit l'exporteur de l'enfant pour pousser sur OTLP vers un récepteur loopback uniquement sur le port de santé, étiquette chaque série avec les labels `session_id` et `client_platform`, et évince les séries d'une session quand cette session se termine. Les histogrammes ne passent pas, et une métrique enfant dont le nom entrerait en collision avec le propre préfixe du runner est supprimée.403Chaque session s'exécute dans son propre processus enfant avec ses propres métriques OpenTelemetry ; à `--capacity` au-dessus d'un, le runner réécrit comment ces métriques enfants sont exposées. Définir `OTEL_METRICS_EXPORTER=prometheus` sur l'hôte du runner et `CLAUDE_CODE_ENABLE_TELEMETRY=1` dans l'environnement de la session, par exemple à partir de votre [script wrapper](https://code.claude.com/docs/fr/self-hosted-environments-configuration.md#wrapper-scripts) ou l'environnement du runner lui-même, que les sessions héritent, réexpose les instruments de compteur et de jauge de chaque enfant sur le propre endpoint `/metrics` du runner, aux côtés des séries du runner. Le runner réécrit l'exporteur de l'enfant pour pousser sur OTLP vers un récepteur loopback uniquement sur le port de santé, étiquette chaque série avec les labels `session_id` et `client_platform`, et évince les séries d'une session quand cette session se termine. Les histogrammes ne passent pas, et une métrique enfant dont le nom entrerait en collision avec le propre préfixe du runner est supprimée.

Details

288 288 

289 La commande ne peut pas lire depuis le clavier lorsque vous transmettez son entrée via un pipe ou une redirection et que, sur macOS et Linux, elle ne peut pas non plus ouvrir `/dev/tty`. Si vous transmettez également sa sortie via un pipe ou une redirection, l'exécution est alors non interactive, et les paramètres livrés s'appliquent pour cette exécution uniquement.289 La commande ne peut pas lire depuis le clavier lorsque vous transmettez son entrée via un pipe ou une redirection et que, sur macOS et Linux, elle ne peut pas non plus ouvrir `/dev/tty`. Si vous transmettez également sa sortie via un pipe ou une redirection, l'exécution est alors non interactive, et les paramètres livrés s'appliquent pour cette exécution uniquement.

290* **Une erreur ferme la boîte de dialogue avant que vous répondiez** : Claude Code n'applique pas les paramètres livrés et conserve les derniers paramètres approuvés. Il affiche la boîte de dialogue à nouveau dans la prochaine session qui peut l'afficher.290* **Une erreur ferme la boîte de dialogue avant que vous répondiez** : Claude Code n'applique pas les paramètres livrés et conserve les derniers paramètres approuvés. Il affiche la boîte de dialogue à nouveau dans la prochaine session qui peut l'afficher.

291* **Une exécution non interactive**, telle que `claude -p`, une session Agent SDK, ou une session dans le panneau de chat de l'extension VS Code ou l'onglet Code de l'application de bureau : Claude Code ne peut pas afficher la boîte de dialogue, de sorte que lorsque les paramètres livrés nécessiteraient une approbation, il les applique pour cette exécution uniquement. Il ne les enregistre pas comme approuvés ou ne les écrit pas dans le [cache local](#fetch-and-caching-behavior), et la prochaine session interactive affiche la boîte de dialogue. Jusqu'à ce qu'un utilisateur approuve dans une session interactive, chaque exécution non interactive récupère les paramètres à nouveau au démarrage. Avant v2.1.207, une exécution non interactive enregistrait les paramètres comme approuvés, de sorte que les sessions interactives ultérieures n'affichaient jamais la boîte de dialogue pour eux.291* **Une exécution non interactive**, telle que `claude -p`, une session Agent SDK, ou une session dans le panneau de chat de l'extension VS Code ou l'onglet Code de l'application de bureau : Claude Code ne peut pas afficher la boîte de dialogue. Lorsque les paramètres livrés nécessiteraient une approbation, ils s'appliquent pour cette exécution uniquement.

292 

293 Claude Code n'enregistre pas les paramètres comme approuvés et ne les écrit pas dans le [cache local](#fetch-and-caching-behavior), et la prochaine session interactive affiche la boîte de dialogue. Jusqu'à ce qu'un utilisateur approuve dans une session interactive, chaque exécution non interactive récupère les paramètres à nouveau au démarrage.

292 294 

293#### Variables d'environnement et la boîte de dialogue d'approbation295#### Variables d'environnement et la boîte de dialogue d'approbation

294 296 


306* `OTEL_EXPORTER_OTLP_ENDPOINT`308* `OTEL_EXPORTER_OTLP_ENDPOINT`

307* `CLAUDE_CODE_DISABLE_1M_CONTEXT`309* `CLAUDE_CODE_DISABLE_1M_CONTEXT`

308 310 

309Lorsqu'une variable livrée a besoin d'approbation, la boîte de dialogue la nomme, de sorte que l'utilisateur voit exactement ce que la stratégie demande de définir. Avant v2.1.218, Claude Code appliquait moins de variables sans demander à l'utilisateur, de sorte que des paramètres tels que `DISABLE_AUTO_COMPACT` déclenchaient la boîte de dialogue à n'importe quelle valeur non vide.311Lorsqu'une variable livrée a besoin d'approbation, la boîte de dialogue la nomme, de sorte que l'utilisateur voit exactement ce que la stratégie demande de définir.

310 312 

311Claude Code décide si quatre bascules de confidentialité ont besoin d'approbation par la valeur livrée plutôt que par le nom de la variable : `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_ERROR_REPORTING`, `DISABLE_TELEMETRY`, et `DO_NOT_TRACK`. Une valeur véridique telle que `1` ou `true` désactive uniquement le suivi, la création de rapports ou autre trafic non essentiel, de sorte que Claude Code l'applique sans demander à l'utilisateur. Pour toute autre valeur non vide, Claude Code affiche la boîte de dialogue. Avant v2.1.218, tous sauf `DO_NOT_TRACK` s'appliquaient sans approbation à n'importe quelle valeur, et `DO_NOT_TRACK` déclenchait la boîte de dialogue à n'importe quelle valeur non vide.313Claude Code décide si quatre bascules de confidentialité ont besoin d'approbation par la valeur livrée plutôt que par le nom de la variable : `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_ERROR_REPORTING`, `DISABLE_TELEMETRY`, et `DO_NOT_TRACK`. Une valeur véridique telle que `1` ou `true` désactive uniquement le suivi, la création de rapports ou autre trafic non essentiel, de sorte que Claude Code l'applique sans demander à l'utilisateur. Pour toute autre valeur non vide, Claude Code affiche la boîte de dialogue.

312 314 

313Claude Code décide également si [`API_FORCE_IDLE_TIMEOUT`](https://code.claude.com/docs/fr/env-vars) a besoin d'approbation par la valeur livrée : une valeur véridique active uniquement le [délai d'expiration d'inactivité du corps](https://code.claude.com/docs/fr/network-config.md#streaming-idle-watchdogs), de sorte que Claude Code l'applique sans demander à l'utilisateur. Pour toute autre valeur non vide, Claude Code affiche la boîte de dialogue. Avant v2.1.248, n'importe quelle valeur non vide déclenchait la boîte de dialogue.315Claude Code décide également si [`API_FORCE_IDLE_TIMEOUT`](https://code.claude.com/docs/fr/env-vars) a besoin d'approbation par la valeur livrée : une valeur véridique active uniquement le [délai d'expiration d'inactivité du corps](https://code.claude.com/docs/fr/network-config.md#streaming-idle-watchdogs), de sorte que Claude Code l'applique sans demander à l'utilisateur. Pour toute autre valeur non vide, Claude Code affiche la boîte de dialogue. Avant v2.1.248, n'importe quelle valeur non vide déclenchait la boîte de dialogue.

314 316 

sessions.md +2 −2

Details

46Lorsque Claude Code charge une conversation à partir de sa transcription, la session reprise restaure la conversation ainsi que l'état enregistré en elle :46Lorsque Claude Code charge une conversation à partir de sa transcription, la session reprise restaure la conversation ainsi que l'état enregistré en elle :

47 47 

48* Historique de conversation : les messages, les appels d'outils et les résultats. Si la session a été [compactée](https://code.claude.com/docs/fr/context-window.md#what-survives-compaction), la conversation s'ouvre sur une ligne `Conversation compacted`. Claude continue avec le résumé de la dernière compaction, les messages que cette compaction n'a pas résumés et tous les messages depuis. Les messages que la dernière compaction a résumés ne sont pas chargés à nouveau.48* Historique de conversation : les messages, les appels d'outils et les résultats. Si la session a été [compactée](https://code.claude.com/docs/fr/context-window.md#what-survives-compaction), la conversation s'ouvre sur une ligne `Conversation compacted`. Claude continue avec le résumé de la dernière compaction, les messages que cette compaction n'a pas résumés et tous les messages depuis. Les messages que la dernière compaction a résumés ne sont pas chargés à nouveau.

49* Appels d'outils interrompus : un outil qui était toujours en cours d'exécution lorsque le processus précédent s'est terminé, par exemple lors d'un plantage, ne se termine pas ou ne s'exécute pas à nouveau lorsque vous reprenez. Claude voit l'appel marqué comme interrompu avant que son résultat ne soit enregistré et on lui dit de vérifier s'il a pris effet avant de l'exécuter à nouveau, sauf si [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](https://code.claude.com/docs/fr/env-vars#variables) est défini.49* Appels d'outils interrompus : un outil qui était toujours en cours d'exécution lorsque le processus précédent s'est terminé, par exemple lors d'un plantage, n'est pas réexécuté lorsque vous reprenez.

50* Modèle : la session continue sur le modèle qu'elle utilisait, sauf dans les cas décrits dans [Définir votre modèle](https://code.claude.com/docs/fr/model-config.md#setting-your-model).50* Modèle : la session continue sur le modèle qu'elle utilisait, sauf dans les cas décrits dans [Définir votre modèle](https://code.claude.com/docs/fr/model-config.md#setting-your-model).

51* Agent : une session démarrée avec [`--agent`](https://code.claude.com/docs/fr/sub-agents#invoke-subagents-explicitly) ou le paramètre `agent` continue en tant que cet agent, en conservant ses restrictions d'outils et son modèle. Passez `--agent` lors de la reprise pour en choisir un différent ; pour le prompt système dans l'un ou l'autre cas, voir [Flags de prompt système dans les conversations reprises](https://code.claude.com/docs/fr/cli-reference.md#system-prompt-flags-in-resumed-conversations). Claude Code cherche l'agent dans deux endroits : le répertoire d'origine de la session, à condition que vous ayez [approuvé cet espace de travail](https://code.claude.com/docs/fr/permissions.md#project-allow-rules-and-workspace-trust), puis le répertoire depuis lequel vous reprenez, donc un agent limité au projet se charge toujours lorsque vous reprenez depuis un autre répertoire. Si Claude Code ne trouve pas l'agent dans l'un ou l'autre endroit, la session reprend avec les outils par défaut et affiche un [avertissement nommant l'agent](https://code.claude.com/docs/fr/errors.md#session-agent-no-longer-available).51* Agent : une session démarrée avec [`--agent`](https://code.claude.com/docs/fr/sub-agents#invoke-subagents-explicitly) ou le paramètre `agent` continue en tant que cet agent, en conservant ses restrictions d'outils et son modèle. Passez `--agent` lors de la reprise pour en choisir un différent ; pour le prompt système dans l'un ou l'autre cas, voir [Flags de prompt système dans les conversations reprises](https://code.claude.com/docs/fr/cli-reference.md#system-prompt-flags-in-resumed-conversations). Claude Code cherche l'agent dans deux endroits : le répertoire d'origine de la session, à condition que vous ayez [approuvé cet espace de travail](https://code.claude.com/docs/fr/permissions.md#project-allow-rules-and-workspace-trust), puis le répertoire depuis lequel vous reprenez, donc un agent limité au projet se charge toujours lorsque vous reprenez depuis un autre répertoire. Si Claude Code ne trouve pas l'agent dans l'un ou l'autre endroit, la session reprend avec les outils par défaut et affiche un [avertissement nommant l'agent](https://code.claude.com/docs/fr/errors.md#session-agent-no-longer-available).

52* Mode de permission : si vous reprenez depuis un terminal avec `claude --continue`, `claude --resume <session-id>` ou `claude --resume <name>` lorsque le nom correspond à une session, sans `-p`, Claude Code restaure le mode de permission dans lequel se trouvait la session, sauf dans les cas de [mode de permission à la reprise](#permission-mode-on-resume), qui couvre également le sélecteur de sessions, `/resume` et la reprise avec `claude -p`. Passez `--permission-mode` ou `--dangerously-skip-permissions` pour remplacer le mode restauré.52* Mode de permission : si vous reprenez depuis un terminal avec `claude --continue`, `claude --resume <session-id>` ou `claude --resume <name>` lorsque le nom correspond à une session, sans `-p`, Claude Code restaure le mode de permission dans lequel se trouvait la session, sauf dans les cas de [mode de permission à la reprise](#permission-mode-on-resume), qui couvre également le sélecteur de sessions, `/resume` et la reprise avec `claude -p`. Passez `--permission-mode` ou `--dangerously-skip-permissions` pour remplacer le mode restauré.


224* **`/compact [instructions]`** : remplacer l'historique par un résumé, optionnellement axé sur ce que vous spécifiez224* **`/compact [instructions]`** : remplacer l'historique par un résumé, optionnellement axé sur ce que vous spécifiez

225* **`/context`** : afficher ce qui consomme actuellement le contexte225* **`/context`** : afficher ce qui consomme actuellement le contexte

226 226 

227Pour savoir comment la compaction interagit avec CLAUDE.md, les compétences et les règles, voir le [guide de la fenêtre de contexte](https://code.claude.com/docs/fr/context-window.md). Pour les stratégies sur quand effacer par rapport à compacter, voir [Meilleures pratiques](https://code.claude.com/docs/fr/best-practices.md#manage-your-session).227Pour savoir comment la compaction interagit avec CLAUDE.md, les skills et les règles, voir le [guide de la fenêtre de contexte](https://code.claude.com/docs/fr/context-window.md). Pour les stratégies sur quand effacer par rapport à compacter, voir [Bonnes pratiques](https://code.claude.com/docs/fr/best-practices.md#keep-cost-and-context-down).

228 228 

229## Exporter et localiser les données de session229## Exporter et localiser les données de session

230 230 

settings.md +1 −1

Details

326* **Paramètres de projet partagés avec plusieurs dépôts** : 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](https://code.claude.com/docs/fr/cloud-environments.md#what-carries-over-from-your-setup). Pour un environnement auto-hébergé, consultez [les paramètres de quel dépôt s'appliquent](https://code.claude.com/docs/fr/self-hosted-environments-configuration.md#repository-settings-in-sessions-with-several-repositories).326* **Paramètres de projet partagés avec plusieurs dépôts** : 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](https://code.claude.com/docs/fr/cloud-environments.md#what-carries-over-from-your-setup). Pour un environnement auto-hébergé, consultez [les paramètres de quel dépôt s'appliquent](https://code.claude.com/docs/fr/self-hosted-environments-configuration.md#repository-settings-in-sessions-with-several-repositories).

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

328* **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](https://code.claude.com/docs/fr/server-managed-settings.md) de votre organisation le font ; la [couverture de surface](https://code.claude.com/docs/fr/model-config.md#surface-coverage) énumère quelles sessions cloud les reçoivent. Un [environnement auto-hébergé](https://code.claude.com/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](https://code.claude.com/docs/fr/managed-settings.md#how-claude-code-combines-managed-sources) indique quand ce fichier s'applique.328* **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](https://code.claude.com/docs/fr/server-managed-settings.md) de votre organisation le font ; la [couverture de surface](https://code.claude.com/docs/fr/model-config.md#surface-coverage) énumère quelles sessions cloud les reçoivent. Un [environnement auto-hébergé](https://code.claude.com/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](https://code.claude.com/docs/fr/managed-settings.md#how-claude-code-combines-managed-sources) indique quand ce fichier s'applique.

329* **`/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](https://code.claude.com/docs/fr/cloud-environments.md#set-environment-variables) sur l'environnement. Dans une session avec un seul dépôt en dehors des threads d'un projet, vous pouvez à la place commiter la clé dans le `.claude/settings.json` de ce dépôt.329* **`/config`** : dans votre navigateur sur claude.ai/code, ouvre votre page de paramètres **Code** ou **Claude Code** de claude.ai à la place de modifier une valeur. Pour modifier un paramètre pour une session cloud, définissez une [variable d'environnement](https://code.claude.com/docs/fr/cloud-environments.md#set-environment-variables) sur l'environnement. Dans une session avec un seul dépôt en dehors des threads d'un projet, vous pouvez à la place commiter la clé dans le `.claude/settings.json` de ce dépôt.

330 330 

331[Ce qui se transfère de votre configuration](https://code.claude.com/docs/fr/cloud-environments.md#what-carries-over-from-your-setup) énumère le reste : `CLAUDE.md`, skills, serveurs MCP, plugins, et identifiants.331[Ce qui se transfère de votre configuration](https://code.claude.com/docs/fr/cloud-environments.md#what-carries-over-from-your-setup) énumère le reste : `CLAUDE.md`, skills, serveurs MCP, plugins, et identifiants.

332 332 

Details

1293* Une commande commençant par `sudo`, `eval` ou `xargs`1293* Une commande commençant par `sudo`, `eval` ou `xargs`

1294* Un `cd`, `pushd` ou `popd`, où qu'il apparaisse dans l'appel1294* Un `cd`, `pushd` ou `popd`, où qu'il apparaisse dans l'appel

1295* Une substitution de commande, un sous-shell ou un bloc de contrôle de flux tel que `if` ou `for`1295* Une substitution de commande, un sous-shell ou un bloc de contrôle de flux tel que `if` ou `for`

1296* Une redirection, comme `docker build . > build.log`, autre qu'une qui duplique uniquement un descripteur de fichier, comme `2>&1` le fait1296* Une redirection, comme `docker build . > build.log` ou un heredoc `<<EOF`, autre qu'une redirection qui se contente de dupliquer un descripteur de fichier, comme le fait `2>&1`

1297* Un nom de commande qui provient d'une variable1297* Un nom de commande qui provient d'une variable

1298* Un `git clone`, `git init`, `git worktree add`, `git worktree move` ou `git bundle create` avec un argument de chemin qui est absolu, commence par `~` ou contient un segment `..`1298* Un `git clone`, `git init`, `git worktree add`, `git worktree move` ou `git bundle create` avec un argument de chemin qui est absolu, commence par `~` ou contient un segment `..`

1299 1299 


1521 1521 

1522### `sandbox.filesystem.disabled`1522### `sandbox.filesystem.disabled`

1523 1523 

1524Ignorez l'isolation du système de fichiers tout en conservant l'isolation du réseau. Les commandes en sandbox obtiennent un accès en lecture et écriture sans restriction au système de fichiers hôte, et leur sortie réseau reste confinée à [`network.allowedDomains`](#sandbox-network-alloweddomains). Utilisez-le lorsque vous mettez en sandbox pour contrôler où les commandes se connectent plutôt que ce qu'elles écrivent. Nécessite Claude Code v2.1.216 ou ultérieur.1524Ignorez l'isolation du système de fichiers tout en conservant l'isolation réseau. Les commandes en sandbox obtiennent un accès en lecture et en écriture illimité au système de fichiers de l'hôte, et leur trafic réseau sortant reste limité à [`network.allowedDomains`](#sandbox-network-alloweddomains). Utilisez-le lorsque vous utilisez le sandbox pour contrôler les destinations auxquelles les commandes se connectent plutôt que ce qu'elles écrivent.

1525 1525 

1526* **Scope** : [`User or managed`](#scopes). Lorsque les paramètres gérés configurent `sandbox.filesystem` du tout, ou listent une entrée `sandbox.credentials.files` avec `"mode": "deny"`, seuls les paramètres gérés peuvent la définir.1526* **Scope** : [`User or managed`](#scopes). Lorsque les paramètres gérés configurent `sandbox.filesystem` du tout, ou listent une entrée `sandbox.credentials.files` avec `"mode": "deny"`, seuls les paramètres gérés peuvent la définir.

1527* **Type** : Booléen1527* **Type** : Booléen


1545}1545}

1546```1546```

1547 1547 

1548Avec la couche désactivée, Claude Code n'applique pas les entrées `denyRead` ou `credentials.files` `deny`, tandis que les entrées `credentials.envVars` et les entrées `mask` appliquées continuent de fonctionner. [`autoAllowBashIfSandboxed`](#sandbox-autoallowbashifsandboxed) utilise toujours `true` par défaut, donc définissez-le sur `false` pour continuer à demander. Consultez [Disable filesystem isolation](https://code.claude.com/docs/fr/sandboxing.md#disable-filesystem-isolation) pour la liste complète des sources qui peuvent la définir et ce qui change lorsque l'isolation est désactivée. Nécessite Claude Code v2.1.216 ou ultérieur.1548Lorsque cette couche est désactivée, Claude Code n'applique pas les entrées `denyRead` ni les entrées `deny` de `credentials.files`, tandis que les entrées `credentials.envVars` et les entrées `mask` appliquées continuent de fonctionner. [`autoAllowBashIfSandboxed`](#sandbox-autoallowbashifsandboxed) vaut toujours `true` par défaut, donc définissez-le sur `false` pour conserver les demandes de permission. Consultez [Désactiver l'isolation du système de fichiers](https://code.claude.com/docs/fr/sandboxing.md#disable-filesystem-isolation) pour la liste complète des sources qui peuvent le définir et ce qui change lorsque l'isolation est désactivée.

1549 1549 

1550### `sandbox.ignoreViolations`1550### `sandbox.ignoreViolations`

1551 1551 


2392* [`CLAUDE_CODE_RESTRICTED`](https://code.claude.com/docs/fr/env-vars#variables), que Claude Code lit uniquement à partir de l'environnement de lancement, est ignorée de chaque fichier.2392* [`CLAUDE_CODE_RESTRICTED`](https://code.claude.com/docs/fr/env-vars#variables), que Claude Code lit uniquement à partir de l'environnement de lancement, est ignorée de chaque fichier.

2393* [`CLAUDE_CODE_DISABLE_POWERSHELL_CMD_RM_DENY`](https://code.claude.com/docs/fr/env-vars#variables), que Claude Code lit uniquement à partir de l'environnement de lancement, est ignorée de chaque fichier. La variable nécessite Claude Code v2.1.283 ou ultérieur.2393* [`CLAUDE_CODE_DISABLE_POWERSHELL_CMD_RM_DENY`](https://code.claude.com/docs/fr/env-vars#variables), que Claude Code lit uniquement à partir de l'environnement de lancement, est ignorée de chaque fichier. La variable nécessite Claude Code v2.1.283 ou ultérieur.

2394* [`CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT`, `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT`, `CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPT` et `CLAUDE_CODE_DISABLE_MOUNTED_DRIVE_RM_PROMPT`](https://code.claude.com/docs/fr/env-vars#variables), que Claude Code lit uniquement à partir de l'environnement de lancement, sont ignorées de chaque fichier.2394* [`CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT`, `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT`, `CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPT` et `CLAUDE_CODE_DISABLE_MOUNTED_DRIVE_RM_PROMPT`](https://code.claude.com/docs/fr/env-vars#variables), que Claude Code lit uniquement à partir de l'environnement de lancement, sont ignorées de chaque fichier.

2395* [`CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS`](https://code.claude.com/docs/fr/env-vars#variables), que Claude Code lit uniquement à partir de l'environnement de lancement, est ignorée de chaque fichier.

2395* [`CLAUDE_CODE_WARN_DISK_FREE_GIB` et `CLAUDE_CODE_WARN_MEMORY_FREE_GIB`](https://code.claude.com/docs/fr/env-vars#variables), que Claude Code lit uniquement à partir de l'environnement de lancement, sont ignorées de chaque fichier. Les variables nécessitent Claude Code v2.1.304 ou ultérieur.2396* [`CLAUDE_CODE_WARN_DISK_FREE_GIB` et `CLAUDE_CODE_WARN_MEMORY_FREE_GIB`](https://code.claude.com/docs/fr/env-vars#variables), que Claude Code lit uniquement à partir de l'environnement de lancement, sont ignorées de chaque fichier. Les variables nécessitent Claude Code v2.1.304 ou ultérieur.

2396 2397 

2397### `fileCheckpointingEnabled`2398### `fileCheckpointingEnabled`


2716}2717}

2717```2718```

2718 2719 

2719Voir [Raccourcis emoji](https://code.claude.com/docs/fr/interactive-mode.md#emoji-shortcodes). Nécessite Claude Code v2.1.217 ou ultérieur.2720Voir [Raccourcis emoji](https://code.claude.com/docs/fr/interactive-mode.md#emoji-shortcodes).

2720 2721 

2721### `fileSuggestion`2722### `fileSuggestion`

2722 2723 


3691 3692 

3692### `workflowSizeGuideline`3693### `workflowSizeGuideline`

3693 3694 

3694Définissez le [nombre d'agents que Claude vise](https://code.claude.com/docs/fr/workflows.md#set-a-size-guideline) dans les workflows dynamiques qu'il écrit. Claude Code envoie la valeur à Claude comme conseil, pas une limite appliquée : `"small"` demande moins de 5 agents, `"medium"` moins de 10, et `"large"` moins de 50. Choisissez `"small"` lorsque vous voulez limiter ce qu'un workflow dépense. Nécessite Claude Code v2.1.219 ou ultérieur.3695Définissez le [nombre d'agents que Claude vise](https://code.claude.com/docs/fr/workflows.md#set-a-size-guideline) dans les workflows dynamiques qu'il écrit. Claude Code envoie la valeur à Claude comme conseil, pas une limite appliquée : `"small"` demande moins de 5 agents, `"medium"` moins de 10, et `"large"` moins de 50. Choisissez `"small"` lorsque vous voulez limiter ce qu'un workflow dépense.

3695 3696 

3696* **Portée** : [`Any file`](#scopes). Une valeur là prend la priorité sur le choix **Dynamic workflow size** dans `/config`, que Claude Code stocke dans `~/.claude.json`, et Claude Code masque cette ligne tant qu'un fichier de paramètres définit la clé.3697* **Portée** : [`Any file`](#scopes). Une valeur là prend la priorité sur le choix **Dynamic workflow size** dans `/config`, que Claude Code stocke dans `~/.claude.json`, et Claude Code masque cette ligne tant qu'un fichier de paramètres définit la clé.

3697* **Type** : chaîne, l'une des :3698* **Type** : chaîne, l'une des :


3707}3708}

3708```3709```

3709 3710 

3710Nécessite Claude Code v2.1.219 ou ultérieur ; sur v2.1.202 à v2.1.218, définissez la directive dans `/config` à la place.

3711 

3712## Plugins et skills3711## Plugins et skills

3713 3712 

3714Activez les plugins, enregistrez les marketplaces, limitez les sources de plugins que votre organisation autorise, et contrôlez les skills qui se chargent. Pour installer et créer des plugins, consultez [Plugins](https://code.claude.com/docs/fr/plugins/overview.md).3713Activez les plugins, enregistrez les marketplaces, limitez les sources de plugins que votre organisation autorise, et contrôlez les skills qui se chargent. Pour installer et créer des plugins, consultez [Plugins](https://code.claude.com/docs/fr/plugins/overview.md).

skills.md +5 −7

Details

83| Sous-commande | Ce qu'elle fait | Version minimale |83| Sous-commande | Ce qu'elle fait | Version minimale |

84| :- | :- | :- |84| :- | :- | :- |

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

86| `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 |86| `upgrade` | Mettez à niveau le SDK Anthropic de votre projet vers une nouvelle version majeure et adaptez votre code à ses changements incompatibles | v2.1.236 ou version ultérieure |

87| `api-version` | Mettez à jour votre code Claude API pour une [version de l'API](https://platform.claude.com/docs/en/api/versioning) plus récente, puis basculez vos requêtes vers cette version | v2.1.307 ou version ultérieure |87| `api-version` | Mettez à jour votre code Claude API pour une [version de l'API](https://platform.claude.com/docs/en/api/versioning) plus récente, puis basculez vos requêtes vers cette version | v2.1.307 ou version ultérieure |

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

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


3713. Push to the deployment target3713. Push to the deployment target

372```372```

373 373 

374Gardez le corps lui-même concis. Une fois qu'une compétence se charge, son contenu [reste en contexte à travers les tours](#skill-content-lifecycle), donc chaque ligne a un coût de token récurrent. Indiquez ce qu'il faut faire plutôt que de raconter comment ou pourquoi, et appliquez le même test de concision que vous feriez pour [le contenu CLAUDE.md](https://code.claude.com/docs/fr/best-practices.md#write-an-effective-claude-md).374Gardez le corps lui-même concis. Une fois qu'un skill est chargé, son contenu [reste en contexte d'un tour à l'autre](#skill-content-lifecycle), donc chaque ligne a un coût en tokens récurrent. Indiquez ce qu'il faut faire plutôt que de raconter comment ou pourquoi, et appliquez le même test de concision que pour [le contenu de CLAUDE.md](https://code.claude.com/docs/fr/best-practices.md#keep-claude-md-short).

375 375 

376### Référence du frontmatter376### Référence du frontmatter

377 377 


388Your skill instructions here...388Your skill instructions here...

389```389```

390 390 

391Tous les champs sont optionnels. Seul `description` est recommandé afin que Claude sache quand utiliser la compétence. Un nom de champ doit correspondre exactement au tableau, tirets inclus : Claude Code ignore un champ qu'il ne reconnaît pas sans signaler une erreur.391Tous les champs sont optionnels. Seul `description` est recommandé afin que Claude sache quand utiliser le skill. Un nom de champ doit correspondre exactement au tableau, tirets inclus : Claude Code ignore un champ qu'il ne reconnaît pas sans signaler d'erreur. Les champs booléens acceptent `yes`, `no`, `on`, `off`, `1` et `0` dans n'importe quelle casse, en plus de `true` et `false`.

392 392 

393Claude Code lit le frontmatter uniquement lorsque l'ouverture `---` est la première ligne du fichier. Sinon, il traite le fichier entier, marqueurs `---` inclus, comme contenu de compétence. Si le YAML entre les marqueurs ne s'analyse pas, la compétence se charge quand même sans champs définis ; voir [Compétence ne se déclenchant pas](#skill-not-triggering) pour trouver et corriger l'erreur.393Claude Code lit le frontmatter uniquement lorsque l'ouverture `---` est la première ligne du fichier. Sinon, il traite le fichier entier, marqueurs `---` inclus, comme contenu de compétence. Si le YAML entre les marqueurs ne s'analyse pas, la compétence se charge quand même sans champs définis ; voir [Compétence ne se déclenchant pas](#skill-not-triggering) pour trouver et corriger l'erreur.

394 394 

395Les champs booléens acceptent `yes`, `no`, `on`, `off`, `1` et `0` dans n'importe quelle casse de lettre, en plus de `true` et `false`. Avant v2.1.218, Claude Code ne reconnaissait que `true` et `false`.

396 

397| Champ | Requis | Description |395| Champ | Requis | Description |

398| :- | :- | :- |396| :- | :- | :- |

399| `name` | Non | Nom de commande affiché dans le menu `/`. Par défaut, le nom du répertoire. Voir [Comment une compétence obtient son nom de commande](#how-a-skill-gets-its-command-name) pour savoir comment le champ interagit avec le nom que vous tapez pour invoquer la compétence. |397| `name` | Non | Nom de commande affiché dans le menu `/`. Par défaut, le nom du répertoire. Voir [Comment une compétence obtient son nom de commande](#how-a-skill-gets-its-command-name) pour savoir comment le champ interagit avec le nom que vous tapez pour invoquer la compétence. |


409| `effort` | Non | [Niveau d'effort](https://code.claude.com/docs/fr/model-config.md#adjust-effort-level) lorsque ce skill est actif. Remplace le niveau d'effort de la session. Lorsque vous l'omettez, le niveau provient de l'[ordre de résolution de l'effort](https://code.claude.com/docs/fr/model-config.md#adjust-effort-level). Options : `low`, `medium`, `high`, `xhigh`, `max` ; les niveaux disponibles dépendent du modèle. |407| `effort` | Non | [Niveau d'effort](https://code.claude.com/docs/fr/model-config.md#adjust-effort-level) lorsque ce skill est actif. Remplace le niveau d'effort de la session. Lorsque vous l'omettez, le niveau provient de l'[ordre de résolution de l'effort](https://code.claude.com/docs/fr/model-config.md#adjust-effort-level). Options : `low`, `medium`, `high`, `xhigh`, `max` ; les niveaux disponibles dépendent du modèle. |

410| `context` | Non | Définissez sur `fork` pour exécuter dans un contexte de sous-agent forké. Voir [Exécuter les compétences dans un sous-agent](#run-skills-in-a-subagent). |408| `context` | Non | Définissez sur `fork` pour exécuter dans un contexte de sous-agent forké. Voir [Exécuter les compétences dans un sous-agent](#run-skills-in-a-subagent). |

411| `agent` | Non | Quel type de sous-agent utiliser lorsque `context: fork` est défini. |409| `agent` | Non | Quel type de sous-agent utiliser lorsque `context: fork` est défini. |

412| `background` | Non | S'applique uniquement avec `context: fork`. Définissez sur `false` pour attendre le résultat du sous-agent forké dans le tour qui a invoqué la compétence, au lieu de [l'exécuter en arrière-plan](#run-skills-in-a-subagent). Par défaut : `true`. Nécessite Claude Code v2.1.218 ou ultérieur. |410| `background` | Non | S'applique uniquement avec `context: fork`. Définissez sur `false` pour attendre le résultat du sous-agent forké dans le tour qui a invoqué le skill, au lieu de [l'exécuter en arrière-plan](#run-skills-in-a-subagent). Par défaut : `true`. |

413| `hooks` | Non | Hooks que Claude Code enregistre lorsque le skill est invoqué et continue à exécuter pour le reste de la session. Voir [Hooks dans les skills et les agents](https://code.claude.com/docs/fr/hooks.md#hooks-in-skills-and-agents) pour le format de configuration, l'option `once` et les [limites des hooks de skill](https://code.claude.com/docs/fr/hooks.md#limits-on-skill-hooks). |411| `hooks` | Non | Hooks que Claude Code enregistre lorsque le skill est invoqué et continue à exécuter pour le reste de la session. Voir [Hooks dans les skills et les agents](https://code.claude.com/docs/fr/hooks.md#hooks-in-skills-and-agents) pour le format de configuration, l'option `once` et les [limites des hooks de skill](https://code.claude.com/docs/fr/hooks.md#limits-on-skill-hooks). |

414| `paths` | Non | Modèles Glob qui limitent quand ce skill est activé. Accepte une chaîne séparée par des virgules ou une liste YAML. Lorsqu'il est défini, Claude charge le skill automatiquement uniquement lorsqu'il travaille avec des fichiers correspondant aux modèles. Les modèles sont relatifs au répertoire de travail actuel de Claude, et les fichiers situés en dehors de ce répertoire ne correspondent pas. Utilise le même format glob que [les règles spécifiques au chemin](https://code.claude.com/docs/fr/memory.md#path-specific-rules). |412| `paths` | Non | Modèles Glob qui limitent quand ce skill est activé. Accepte une chaîne séparée par des virgules ou une liste YAML. Lorsqu'il est défini, Claude charge le skill automatiquement uniquement lorsqu'il travaille avec des fichiers correspondant aux modèles. Les modèles sont relatifs au répertoire de travail actuel de Claude, et les fichiers situés en dehors de ce répertoire ne correspondent pas. Utilise le même format glob que [les règles spécifiques au chemin](https://code.claude.com/docs/fr/memory.md#path-specific-rules). |

415| `shell` | Non | Shell à utiliser pour `` !`command` `` et ` ```! ` blocs dans cette compétence. Accepte `bash` (par défaut) ou `powershell`. La définition de `powershell` exécute les commandes shell en ligne via PowerShell lorsque l'[outil PowerShell](https://code.claude.com/docs/fr/tools-reference.md#powershell-tool) est activé : il est activé par défaut sur Windows sans Git Bash, activé par défaut avec Git Bash pour les comptes claude.ai et Console, et nécessite `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` dans les sessions Amazon Bedrock, Google Cloud's Agent Platform et Microsoft Foundry et sur macOS, Linux et WSL. Définissez-le sur `0` pour désactiver l'outil. |413| `shell` | Non | Shell à utiliser pour `` !`command` `` et ` ```! ` blocs dans cette compétence. Accepte `bash` (par défaut) ou `powershell`. La définition de `powershell` exécute les commandes shell en ligne via PowerShell lorsque l'[outil PowerShell](https://code.claude.com/docs/fr/tools-reference.md#powershell-tool) est activé : il est activé par défaut sur Windows sans Git Bash, activé par défaut avec Git Bash pour les comptes claude.ai et Console, et nécessite `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` dans les sessions Amazon Bedrock, Google Cloud's Agent Platform et Microsoft Foundry et sur macOS, Linux et WSL. Définissez-le sur `0` pour désactiver l'outil. |


800>798>

801> Malgré le nom, une compétence avec `context: fork` ne s'exécute pas dans un [fork de la conversation actuelle](https://code.claude.com/docs/fr/sub-agents.md#fork-the-current-conversation), ce qui remettrait au sous-agent tout ce que vous avez discuté jusqu'à présent. Lorsque la tâche dépend de cet historique, forkez la conversation au lieu d'utiliser `context: fork`.799> Malgré le nom, une compétence avec `context: fork` ne s'exécute pas dans un [fork de la conversation actuelle](https://code.claude.com/docs/fr/sub-agents.md#fork-the-current-conversation), ce qui remettrait au sous-agent tout ce que vous avez discuté jusqu'à présent. Lorsque la tâche dépend de cet historique, forkez la conversation au lieu d'utiliser `context: fork`.

802 800 

803Le sous-agent forké s'exécute en [arrière-plan](https://code.claude.com/docs/fr/sub-agents.md#run-subagents-in-foreground-or-background) : vous continuez à travailler pendant qu'il s'exécute, et son résultat arrive dans votre conversation lorsqu'il se termine. Définissez `background: false` dans le frontmatter pour attendre le résultat dans le tour qui a invoqué la compétence. Avant v2.1.218, les compétences forkées bloquaient toujours le tour jusqu'à ce qu'elles se terminent.801Le sous-agent forké s'exécute en [arrière-plan](https://code.claude.com/docs/fr/sub-agents.md#run-subagents-in-foreground-or-background) : vous continuez à travailler pendant qu'il s'exécute, et son résultat arrive dans votre conversation lorsqu'il se termine. Définissez `background: false` dans le frontmatter pour plutôt attendre le résultat dans le tour qui a invoqué le skill.

804 802 

805Claude Code attend également le résultat, même lorsque la compétence ne définit pas `background: false`, dans des cas comme ceux-ci :803Claude Code attend également le résultat, même lorsque la compétence ne définit pas `background: false`, dans des cas comme ceux-ci :

806 804 

sub-agents.md +2 −9

Details

352* **ID de modèle complet** : utilisez un ID de modèle complet tel que `claude-opus-5-5` ou `claude-sonnet-5`. Accepte les mêmes valeurs que le flag `--model`352* **ID de modèle complet** : utilisez un ID de modèle complet tel que `claude-opus-5-5` ou `claude-sonnet-5`. Accepte les mêmes valeurs que le flag `--model`

353* **inherit** : utilisez le même modèle que la conversation principale353* **inherit** : utilisez le même modèle que la conversation principale

354 354 

355Lorsque Claude invoque un sous-agent, il peut également passer un paramètre `model` pour cette invocation spécifique. Claude Code résout le modèle du sous-agent dans cet ordre :355Lorsque Claude invoque un sous-agent, il peut également passer un paramètre `model` pour cette invocation spécifique. Lors d'un appel à l'outil Agent, ce paramètre accepte un alias de modèle : `sonnet`, `opus`, `haiku` ou `fable`. Claude ne peut pas passer un ID de modèle complet ni `inherit` lors de cet appel. Claude Code résout le modèle du sous-agent dans cet ordre :

356 356 

3571. Le paramètre `model` par invocation3571. Le paramètre `model` par invocation

3582. Le frontmatter `model` de la définition du sous-agent, où `inherit` sélectionne le modèle de la conversation principale3582. Le frontmatter `model` de la définition du sous-agent, où `inherit` sélectionne le modèle de la conversation principale


762 762 

763Pour que les hooks de frontmatter d'un sous-agent au niveau du projet s'exécutent, acceptez la [boîte de dialogue de confiance de l'espace de travail](https://code.claude.com/docs/fr/permissions.md#project-allow-rules-and-workspace-trust) pour le dossier qui contient le fichier d'agent. Les hooks des sous-agents au niveau utilisateur dans `~/.claude/agents/` et des définitions que vous passez avec `--agents` s'exécutent sans cette étape. Si vous avez ajouté un dossier avec `--add-dir` en dehors du dépôt de votre espace de travail de confiance, faites confiance à ce dossier séparément : ses hooks `.claude/agents/` n'héritent pas de la confiance de l'espace de travail.763Pour que les hooks de frontmatter d'un sous-agent au niveau du projet s'exécutent, acceptez la [boîte de dialogue de confiance de l'espace de travail](https://code.claude.com/docs/fr/permissions.md#project-allow-rules-and-workspace-trust) pour le dossier qui contient le fichier d'agent. Les hooks des sous-agents au niveau utilisateur dans `~/.claude/agents/` et des définitions que vous passez avec `--agents` s'exécutent sans cette étape. Si vous avez ajouté un dossier avec `--add-dir` en dehors du dépôt de votre espace de travail de confiance, faites confiance à ce dossier séparément : ses hooks `.claude/agents/` n'héritent pas de la confiance de l'espace de travail.

764 764 

765Jusqu'à ce que vous fassiez confiance au dossier, le sous-agent s'exécute toujours, mais Claude Code ignore ses hooks de frontmatter et enregistre une erreur dans le journal de débogage expliquant comment faire confiance au dossier. C'est une règle plus stricte que celle pour les hooks dans les fichiers de paramètres : faire confiance à un dossier parent ne suffit pas, et une session `-p` ne compte pas comme de confiance. [Ce qui s'exécute avant que vous fassiez confiance à un dossier](https://code.claude.com/docs/fr/permissions.md#what-runs-before-you-trust-a-folder) compare les deux. Avant la v2.1.218, les hooks de frontmatter pouvaient s'exécuter à partir de dossiers auxquels vous n'aviez pas fait confiance, y compris dans les sessions non interactives.765Jusqu'à ce que vous fassiez confiance au dossier, le sous-agent s'exécute toujours, mais Claude Code ignore ses hooks de frontmatter et enregistre une erreur dans le journal de débogage expliquant comment faire confiance au dossier. C'est une règle plus stricte que celle pour les hooks dans les fichiers de paramètres : faire confiance à un dossier parent ne suffit pas, et une session `-p` ne compte pas comme de confiance. [Ce qui s'exécute avant que vous fassiez confiance à un dossier](https://code.claude.com/docs/fr/permissions.md#what-runs-before-you-trust-a-folder) compare les deux.

766 766 

767Tous les [événements de hook](https://code.claude.com/docs/fr/hooks.md#hook-events) sont pris en charge. Les événements les plus courants pour les sous-agents sont :767Tous les [événements de hook](https://code.claude.com/docs/fr/hooks.md#hook-events) sont pris en charge. Les événements les plus courants pour les sous-agents sont :

768 768 


1075 1075 

1076Dans le terminal, Claude Code affiche les sous-agents imbriqués sous forme d'arborescence dans le panneau des sous-agents sous la zone de saisie du prompt et marque chaque ligne qui a encore des descendants dans le panneau avec un nombre `(+N)` d'entre eux. Ouvrez une ligne pour voir les frères et sœurs de ce sous-agent et les enfants directs avec un chemin de retour à `main`.1076Dans le terminal, Claude Code affiche les sous-agents imbriqués sous forme d'arborescence dans le panneau des sous-agents sous la zone de saisie du prompt et marque chaque ligne qui a encore des descendants dans le panneau avec un nombre `(+N)` d'entre eux. Ouvrez une ligne pour voir les frères et sœurs de ce sous-agent et les enfants directs avec un chemin de retour à `main`.

1077 1077 

1078> [!NOTE]

1079>

1080> Les versions antérieures utilisaient des valeurs par défaut différentes :

1081>

1082> * **v2.1.172 à v2.1.216** : les sous-agents pouvaient s'imbriquer par défaut, jusqu'à cinq couches de profondeur, et la limite ne pouvait pas être modifiée.

1083> * **v2.1.217 à v2.1.218** : la limite était définie par défaut à un, de sorte qu'un sous-agent ne pouvait pas générer le sien à moins que vous ne l'augmentiez ; v2.1.219 a augmenté la valeur par défaut à trois.

1084 

1085### Limite de sous-agents concurrents1078### Limite de sous-agents concurrents

1086 1079 

1087Deux limites contrôlent l'utilisation des sous-agents, chacune avec sa propre variable : celle-ci empêche Claude de générer plus de sous-agents pendant que trop d'entre eux s'exécutent, et la [limite de profondeur](#let-subagents-spawn-their-own-subagents) limite la profondeur d'imbrication des sous-agents. Il n'y a pas de limite sur le nombre total de sous-agents que Claude peut générer au cours d'une session.1080Deux limites contrôlent l'utilisation des sous-agents, chacune avec sa propre variable : celle-ci empêche Claude de générer plus de sous-agents pendant que trop d'entre eux s'exécutent, et la [limite de profondeur](#let-subagents-spawn-their-own-subagents) limite la profondeur d'imbrication des sous-agents. Il n'y a pas de limite sur le nombre total de sous-agents que Claude peut générer au cours d'une session.

Details

290>290>

291> Chaque [sous-agent](https://code.claude.com/docs/fr/sub-agents.md) et tâche parallèle est affiché dans l'une des huit couleurs nommées pour que vous puissiez les distinguer dans la transcription. Les noms de jetons suivent le modèle `<color>_FOR_SUBAGENTS_ONLY`, où `<color>` est `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, ou `cyan`. Remplacez-les pour modifier l'apparence de chaque couleur nommée. Par exemple, un sous-agent avec `color: blue` dans sa définition est dessiné en utilisant la valeur `blue_FOR_SUBAGENTS_ONLY`.291> Chaque [sous-agent](https://code.claude.com/docs/fr/sub-agents.md) et tâche parallèle est affiché dans l'une des huit couleurs nommées pour que vous puissiez les distinguer dans la transcription. Les noms de jetons suivent le modèle `<color>_FOR_SUBAGENTS_ONLY`, où `<color>` est `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, ou `cyan`. Remplacez-les pour modifier l'apparence de chaque couleur nommée. Par exemple, un sous-agent avec `color: blue` dans sa définition est dessiné en utilisant la valeur `blue_FOR_SUBAGENTS_ONLY`.

292>292>

293> Claude Code rend le mot-clé [`ultrathink`](https://code.claude.com/docs/fr/model-config#use-ultrathink-for-one-off-deep-reasoning) dans l'entrée du prompt avec un dégradé arc-en-ciel à sept couleurs. Les noms de jetons suivent le modèle `rainbow_<color>` et `rainbow_<color>_shimmer`, où `<color>` est `red`, `orange`, `yellow`, `green`, `blue`, `indigo`, ou `violet`.293> Lorsque [`ultrathink`](https://code.claude.com/docs/fr/model-config#use-ultrathink-for-one-off-deep-reasoning) peut augmenter l'effort d'un tour, Claude Code affiche le mot dans l'entrée du prompt avec un dégradé arc-en-ciel à sept couleurs. Les noms de jetons suivent le modèle `rainbow_<color>` et `rainbow_<color>_shimmer`, où `<color>` est `red`, `orange`, `yellow`, `green`, `blue`, `indigo`, ou `violet`.

294 294 

295## Basculer vers le rendu en plein écran295## Basculer vers le rendu en plein écran

296 296 

ultrareview.md +4 −2

Details

85 85 

86### Transmettre une demande en langage simple86### Transmettre une demande en langage simple

87 87 

88Sur Claude Code v2.1.218 ou version ultérieure, vous pouvez également décrire ce sur quoi vous travaillez en langage simple :88Vous pouvez également décrire ce sur quoi vous travaillez en langage simple :

89 89 

90```text theme={null}90```text theme={null}

91/code-review ultra check my auth changes91/code-review ultra check my auth changes


159 159 

160Vous consentez à la solution de repli sur l'ensemble du dépôt et à la demande concernant la facturation et les conditions lorsque vous exécutez la sous-commande, de sorte que l'exécution ne s'interrompt pas pour vous demander de les confirmer. 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 revue de l'ensemble du dépôt.160Vous consentez à la solution de repli sur l'ensemble du dépôt et à la demande concernant la facturation et les conditions lorsque vous exécutez la sous-commande, de sorte que l'exécution ne s'interrompt pas pour vous demander de les confirmer. 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 revue de l'ensemble du dépôt.

161 161 

162`claude -p '/code-review ultra'` ne vous fournit pas les constatations, utilisez donc `claude ultrareview` dans les scripts. L'exécution `-p` lance la revue cloud et se termine sans l'attendre. Lorsque la revue facturerait des crédits d'utilisation, l'exécution `-p` s'arrête sans la lancer. Avant v2.1.218, `/code-review ultra` dans une session non-interactive exécutait une revue locale.162> [!NOTE]

163>

164> `claude -p '/code-review ultra'` ne vous fournit pas les constatations, utilisez donc `claude ultrareview` dans les scripts. L'exécution `-p` lance la revue cloud et se termine sans l'attendre. Lorsque la revue facturerait des crédits d'utilisation, l'exécution `-p` s'arrête sans la lancer.

163 165 

164| Drapeau | Description |166| Drapeau | Description |

165| - | - |167| - | - |

Details

182* Vous pouvez aussi cliquer sur **Changes** dans la barre de titre de la session, ou dans le menu **⋮** de la barre.182* Vous pouvez aussi cliquer sur **Changes** dans la barre de titre de la session, ou dans le menu **⋮** de la barre.

183* Pour afficher le panneau lorsqu'il est masqué, cliquez sur l'icône **Show session rail** dans la barre de titre de la session, ou dans le menu **⋮** de la barre.183* Pour afficher le panneau lorsqu'il est masqué, cliquez sur l'icône **Show session rail** dans la barre de titre de la session, ou dans le menu **⋮** de la barre.

184 184 

185Le diff compare les modifications de la session par rapport à sa branche de base par défaut. Pour comparer par rapport à une branche différente, sélectionnez **Compare against** et choisissez-en une.185Le diff compare les modifications de la session par rapport à sa branche de base par défaut. Pour comparer par rapport à une branche différente, sélectionnez **Compare against** et choisissez-en une. Par rapport à la branche de base, le diff peut [omettre les modifications qui ne sont pas encore poussées](https://code.claude.com/docs/fr/claude-code-on-the-web.md#troubleshoot-a-missing-file-in-the-diff-view).

186 186 

187**2. Laissez des commentaires en ligne**187**2. Laissez des commentaires en ligne**

188 188 

189Sélectionnez n'importe quelle ligne dans le diff, tapez vos commentaires et appuyez sur Entrée. Les commentaires s'accumulent jusqu'à ce que vous envoyiez votre prochain message, puis ils sont regroupés avec celui-ci. Claude voit « à `src/auth.ts:47`, ne capturez pas l'erreur ici » aux côtés de votre instruction principale, vous n'avez donc pas à décrire où se trouve le problème.189Survolez une ligne du diff et cliquez sur le **+** qui apparaît à côté de son numéro de ligne pour ouvrir une zone de commentaire, puis tapez vos commentaires et appuyez sur Entrée. Les commentaires s'accumulent jusqu'à ce que vous envoyiez votre prochain message, puis ils sont regroupés avec celui-ci. Claude voit « à `src/auth.ts:47`, ne capturez pas l'erreur ici » aux côtés de votre instruction principale, vous n'avez donc pas à décrire où se trouve le problème.

190 190 

191**3. Créez une pull request**191**3. Créez une pull request**

192 192 

workflows.md +5 −9

Details

155* La [limite de sous-agents concurrents](https://code.claude.com/docs/fr/sub-agents.md#concurrent-subagent-limit) de la session n'est pas appliquée pour les sous-agents que Claude génère avec l'outil Agent155* La [limite de sous-agents concurrents](https://code.claude.com/docs/fr/sub-agents.md#concurrent-subagent-limit) de la session n'est pas appliquée pour les sous-agents que Claude génère avec l'outil Agent

156* En mode de permission automatique, vous n'êtes pas invité à [approuver le premier lancement du workflow](#approve-the-plan-before-it-runs)156* En mode de permission automatique, vous n'êtes pas invité à [approuver le premier lancement du workflow](#approve-the-plan-before-it-runs)

157 157 

158`/effort ultracode` dure pour la session actuelle ; pour que chaque session commence avec lui, définissez le paramètre [`ultracode`](https://code.claude.com/docs/fr/settings-reference#ultracode). Désactivez-le avec `/effort ultracode off` quand vous retournez au travail de routine. Le curseur `/effort` l'offre uniquement [quand ultracode est disponible](https://code.claude.com/docs/fr/model-config.md#when-ultracode-is-available).158`/effort ultracode` dure pour la session actuelle ; pour que chaque session commence avec lui, définissez le paramètre [`ultracode`](https://code.claude.com/docs/fr/settings-reference#ultracode). Désactivez-le avec `/effort ultracode off` quand vous revenez à des tâches courantes. Le curseur `/effort` l'offre uniquement [quand ultracode est disponible](https://code.claude.com/docs/fr/model-config.md#when-ultracode-is-available). Avant la v2.1.284, `/effort ultracode` définissait la session sur `xhigh`, et `/effort ultracode off` échouait avec `Invalid argument`.

159 159 

160### Approuver le plan avant qu'il s'exécute160### Approuver le plan avant qu'il s'exécute

161 161 


198* `.claude/workflows/` dans votre projet : partagé avec tous ceux qui clonent le repo198* `.claude/workflows/` dans votre projet : partagé avec tous ceux qui clonent le repo

199* `~/.claude/workflows/` dans votre répertoire personnel : disponible dans chaque projet, visible uniquement pour vous. Si vous définissez [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/fr/env-vars), cet emplacement est le répertoire `workflows/` sous ce chemin.199* `~/.claude/workflows/` dans votre répertoire personnel : disponible dans chaque projet, visible uniquement pour vous. Si vous définissez [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/fr/env-vars), cet emplacement est le répertoire `workflows/` sous ce chemin.

200 200 

201La boîte de dialogue d'enregistrement affiche le chemin résolu pour l'emplacement personnel.201La boîte de dialogue d'enregistrement affiche le chemin résolu pour l'emplacement personnel. Appuyez sur Entrée pour enregistrer. Le workflow s'exécute comme `/<name>` dans les futures sessions à partir de l'un ou l'autre emplacement.

202 202 

203Appuyez sur Entrée pour enregistrer. Le workflow s'exécute comme `/<name>` dans les futures sessions à partir de l'un ou l'autre emplacement.203Claude Code vérifie l'emplacement d'enregistrement pour les liens symboliques avant d'écrire, et affiche une erreur au lieu d'écrire à travers un :

204 

205Claude Code vérifie l'emplacement d'enregistrement pour les liens symboliques avant d'écrire, et affiche une erreur au lieu d'écrire à travers un. Ce qu'il vérifie dépend de l'endroit où vous enregistrez :

206 204 

207* Emplacement du projet : Claude Code refuse si `.claude`, `.claude/workflows`, ou le fichier cible est un lien symbolique.205* Emplacement du projet : Claude Code refuse si `.claude`, `.claude/workflows`, ou le fichier cible est un lien symbolique.

208* Emplacement personnel : Claude Code refuse uniquement si le fichier cible lui-même est un lien symbolique, donc un répertoire `~/.claude` géré par un outil dotfiles fonctionne toujours.206* Emplacement personnel : Claude Code refuse uniquement si le fichier cible lui-même est un lien symbolique, donc un répertoire `~/.claude` géré par un outil dotfiles fonctionne toujours.

209 207 

210Avant la v2.1.216, Claude Code suivait le lien, ce qui pouvait placer le fichier en dehors de l'emplacement que vous aviez choisi.

211 

212Dans un monorepo avec plusieurs répertoires `.claude/`, vous pouvez conserver les workflows aux côtés du package auquel ils s'appliquent. L'enregistrement à l'emplacement du projet écrit dans le répertoire `.claude/workflows/` le plus proche qui existe déjà entre votre répertoire de travail et la racine du référentiel, ou à la racine du référentiel s'il n'en existe pas encore. Les workflows de projet se chargent également à partir de chaque `.claude/workflows/` le long de ce chemin, et quand plus d'un définit le même nom, Claude Code exécute celui le plus proche du répertoire de travail.208Dans un monorepo avec plusieurs répertoires `.claude/`, vous pouvez conserver les workflows aux côtés du package auquel ils s'appliquent. L'enregistrement à l'emplacement du projet écrit dans le répertoire `.claude/workflows/` le plus proche qui existe déjà entre votre répertoire de travail et la racine du référentiel, ou à la racine du référentiel s'il n'en existe pas encore. Les workflows de projet se chargent également à partir de chaque `.claude/workflows/` le long de ce chemin, et quand plus d'un définit le même nom, Claude Code exécute celui le plus proche du répertoire de travail.

213 209 

214Si un workflow de projet et un workflow personnel partagent un nom, celui du projet s'exécute.210Si un workflow de projet et un workflow personnel partagent un nom, celui du projet s'exécute.


469| `medium` | Moins de 10 agents |465| `medium` | Moins de 10 agents |

470| `large` | Moins de 50 agents |466| `large` | Moins de 50 agents |

471 467 

472La valeur par défaut est `medium`, ou `small` quand vous êtes connecté sur un plan Pro avec Claude Code v2.1.271 ou ultérieur. Jusqu'à ce que vous choisissiez une valeur, la ligne `/config` affiche la valeur comme par défaut, et la ligne `Running in background` du workflow affiche la taille en vigueur. Nécessite Claude Code v2.1.219 ou ultérieur ; les versions antérieures utilisent par défaut `unrestricted`.468La valeur par défaut est `medium`, ou `small` quand vous êtes connecté sur un plan Pro avec Claude Code v2.1.271 ou ultérieur. Jusqu'à ce que vous choisissiez une valeur, la ligne `/config` affiche la valeur comme par défaut, et la ligne `Running in background` du workflow affiche la taille en vigueur.

473 469 

474Pour modifier la directive, choisissez une valeur pour le paramètre Dynamic workflow size dans `/config`, ou exécutez `/config workflowSizeGuideline=small`. Sur v2.1.219 et ultérieur, vous pouvez également définir la clé [`workflowSizeGuideline`](https://code.claude.com/docs/fr/settings-reference#workflowsizeguideline) dans n'importe quel fichier de paramètres ; cette valeur a la priorité sur `/config`, et Claude Code masque la ligne `/config` tandis qu'un fichier de paramètres en fournit une.470Pour modifier la directive, choisissez une valeur pour le paramètre Dynamic workflow size dans `/config`, ou exécutez `/config workflowSizeGuideline=small`. Vous pouvez également définir la [clé `workflowSizeGuideline`](https://code.claude.com/docs/fr/settings-reference#workflowsizeguideline) dans n'importe quel fichier de paramètres ; cette valeur a la priorité sur `/config`, et Claude Code masque la ligne `/config` tandis qu'un fichier de paramètres en fournit une.

475 471 

476Les modifications prennent effet à l'invite suivante. Les [limites d'agents du runtime](#behavior-and-limits) s'appliquent toujours indépendamment du paramètre.472Les modifications prennent effet à l'invite suivante. Les [limites d'agents du runtime](#behavior-and-limits) s'appliquent toujours indépendamment du paramètre.

477 473 

worktrees.md +21 −9

Details

43 43 

44Vous pouvez également demander à Claude de « travailler dans un worktree » pendant une session, et il en crée un avec l'outil [`EnterWorktree`](https://code.claude.com/docs/fr/tools-reference). Une fois dans un worktree, Claude peut basculer directement vers un autre sous `.claude/worktrees/` en appelant `EnterWorktree` avec le chemin cible ; le worktree précédent reste sur le disque intact.44Vous pouvez également demander à Claude de « travailler dans un worktree » pendant une session, et il en crée un avec l'outil [`EnterWorktree`](https://code.claude.com/docs/fr/tools-reference). Une fois dans un worktree, Claude peut basculer directement vers un autre sous `.claude/worktrees/` en appelant `EnterWorktree` avec le chemin cible ; le worktree précédent reste sur le disque intact.

45 45 

46Quand Claude entre dans un chemin en dehors du répertoire `.claude/worktrees/` du dépôt, Claude Code demande d'abord votre approbation, car le déplacement prend le répertoire de travail de la session, l'accès en écriture et la configuration du projet telle que `CLAUDE.md` et les paramètres vers cet emplacement. Une règle de permission [`EnterWorktree`](https://code.claude.com/docs/fr/permissions) ou le choix de « ne plus demander » ne supprime pas cette invite ; seul le mode `bypassPermissions` l'ignore. Avant la v2.1.206, Claude pouvait entrer dans n'importe quel chemin de worktree existant sans demander.46Quand Claude entre dans un chemin en dehors du répertoire `.claude/worktrees/` du dépôt, Claude Code demande d'abord votre approbation. Le déplacement transfère le répertoire de travail de la session, l'accès en écriture et la configuration du projet telle que `CLAUDE.md` et les paramètres vers cet emplacement. Une [règle de permission](https://code.claude.com/docs/fr/permissions.md) `EnterWorktree` ou le choix de « ne plus demander » ne supprime pas cette demande ; seul le mode `bypassPermissions` l'ignore.

47 47 

48> [!NOTE]48> [!NOTE]

49>49>


63 63 

64Les exécutions non interactives avec `-p` n'ont pas d'invite de sortie, donc Claude ne nettoie pas leurs worktrees, et Claude Code laisse le verrou qu'il a pris sur chacun à la création en place jusqu'à ce qu'une [balayage de verrous obsolètes](#clean-up-subagent-and-background-session-worktrees) ultérieure le libère. Pour en supprimer un, exécutez `git worktree remove` ; si git refuse parce que le worktree est verrouillé, exécutez d'abord `git worktree unlock` dessus.64Les exécutions non interactives avec `-p` n'ont pas d'invite de sortie, donc Claude ne nettoie pas leurs worktrees, et Claude Code laisse le verrou qu'il a pris sur chacun à la création en place jusqu'à ce qu'une [balayage de verrous obsolètes](#clean-up-subagent-and-background-session-worktrees) ultérieure le libère. Pour en supprimer un, exécutez `git worktree remove` ; si git refuse parce que le worktree est verrouillé, exécutez d'abord `git worktree unlock` dessus.

65 65 

66Sur Windows, la suppression d'un worktree ne supprime pas les fichiers en dehors de lui. Si un dossier à l'intérieur du worktree est un lien vers ailleurs, comme une jonction NTFS ou un lien symbolique de répertoire, Claude Code supprime uniquement le lien et conserve le dossier vers lequel il pointe. Avant la v2.1.205, la suppression d'un worktree avec un lien imbriqué dans un sous-répertoire pouvait supprimer le dossier vers lequel il pointait.66Sur Windows, la suppression d'un worktree ne supprime pas les fichiers en dehors de lui. Si un dossier à l'intérieur du worktree est un lien vers ailleurs, comme une jonction NTFS ou un lien symbolique de répertoire, Claude Code supprime uniquement le lien.

67 67 

68## Reprendre une session worktree68## Reprendre une session worktree

69 69 


81>81>

82> Avant la v2.1.212, une reprise non interactive restait dans le répertoire de démarrage et `ExitWorktree` signalait qu'il n'y avait pas de session worktree active à quitter.82> Avant la v2.1.212, une reprise non interactive restait dans le répertoire de démarrage et `ExitWorktree` signalait qu'il n'y avait pas de session worktree active à quitter.

83 83 

84Quand Claude entre ou quitte un worktree que Claude Code a créé avec git, la transcription suit : Claude Code enregistre la session sous le nouveau répertoire de travail de la session, de la même manière que [`/cd`](https://code.claude.com/docs/fr/commands) le fait, donc `/desktop` et `--resume` la trouvent là. Quitter la déplace de la même manière. Un worktree créé par un hook [`WorktreeCreate`](#non-git-version-control) conserve sa transcription au répertoire de lancement. Nécessite Claude Code v2.1.198 ou ultérieur.84Quand Claude entre ou quitte un worktree que Claude Code a créé avec git, la transcription suit. Claude Code enregistre la session sous le nouveau répertoire de travail de la session, de la même manière que [`/cd`](https://code.claude.com/docs/fr/commands) le fait, donc `/desktop` et `--resume` la trouvent là. Quitter la déplace de la même manière. Un worktree créé par un hook [`WorktreeCreate`](#non-git-version-control) conserve sa transcription au répertoire de lancement.

85 85 

86## Comment Claude Code applique l'isolation86## Comment Claude Code applique l'isolation

87 87 


139 139 

140Claude Code écrit un marqueur dans les métadonnées git de chaque worktree qu'il crée avec git, et le balayage conserve tout worktree sans celui-ci, y compris un worktree qu'un hook [`WorktreeCreate`](#non-git-version-control) a créé.140Claude Code écrit un marqueur dans les métadonnées git de chaque worktree qu'il crée avec git, et le balayage conserve tout worktree sans celui-ci, y compris un worktree qu'un hook [`WorktreeCreate`](#non-git-version-control) a créé.

141 141 

142#### Verrous de worktree et suppression manuelle

143 

142Pendant qu'un agent s'exécute, Claude Code maintient un `git worktree lock` sur son worktree pour que le nettoyage concurrent ne puisse pas le supprimer, et libère le verrou quand l'agent se termine. Claude Code maintient le même verrou sur le worktree qu'il a créé pour une session mise en arrière-plan pendant que la session s'exécute, pour que le balayage laisse le worktree en place et `git worktree remove` refuse de le supprimer.144Pendant qu'un agent s'exécute, Claude Code maintient un `git worktree lock` sur son worktree pour que le nettoyage concurrent ne puisse pas le supprimer, et libère le verrou quand l'agent se termine. Claude Code maintient le même verrou sur le worktree qu'il a créé pour une session mise en arrière-plan pendant que la session s'exécute, pour que le balayage laisse le worktree en place et `git worktree remove` refuse de le supprimer.

143 145 

144Le balayage libère également un verrou que Claude Code a défini pour une session dont le processus a quitté, pour qu'une session en arrière-plan tuée ne laisse pas son worktree définitivement verrouillé. Le balayage ne libère jamais un verrou que vous avez défini vous-même avec `git worktree lock`. Avant la v2.1.210, un verrou laissé par une session tuée restait en place jusqu'à ce que vous exécutiez `git worktree unlock`.146Le balayage libère également un verrou que Claude Code a défini pour une session dont le processus a quitté, pour qu'une session en arrière-plan tuée ne laisse pas son worktree définitivement verrouillé. Le balayage ne libère jamais un verrou que vous avez défini vous-même avec `git worktree lock`.

145 147 

146Pour nettoyer un worktree que le balayage conserve, exécutez `git worktree remove`, en ajoutant `--force` si le worktree a des modifications non validées ou des fichiers non suivis. Si git refuse parce que le worktree est verrouillé, exécutez d'abord `git worktree unlock` dessus.148Pour nettoyer un worktree que le balayage conserve, exécutez `git worktree remove`, en ajoutant `--force` si le worktree a des modifications non validées ou des fichiers non suivis. Si git refuse parce que le worktree est verrouillé, exécutez d'abord `git worktree unlock` dessus.

147 149 


158 160 

159Vous ne pouvez pas définir `worktree.baseRef` sur un nom de branche. Pour démarrer un worktree à partir d'une branche existante spécifique, [créez-le avec git directement](#manage-worktrees-manually).161Vous ne pouvez pas définir `worktree.baseRef` sur un nom de branche. Pour démarrer un worktree à partir d'une branche existante spécifique, [créez-le avec git directement](#manage-worktrees-manually).

160 162 

161Pour une base `"fresh"`, Claude Code garde `origin/HEAD` à jour : quand le dépôt n'a pas été récupéré au cours des 24 dernières heures, il récupère la branche par défaut, limité à cinq secondes, et utilise la ref mise en cache localement si la récupération échoue. La récupération n'attend jamais de saisie dans votre terminal, elle est donc également considérée comme échouée lorsque git ou ssh demanderait un mot de passe, une phrase secrète de clé ou la confirmation d'un nouvel hôte SSH. Si aucun dépôt distant n'est configuré, ou si `origin/HEAD` n'est pas mis en cache localement et ne peut pas être récupéré, le worktree revient à votre `HEAD` local actuel. Avant la v2.1.208, un worktree frais utilisait tout ce qui était déjà mis en cache localement pour `origin/HEAD`.163Pour une base `"fresh"`, Claude Code garde `origin/HEAD` à jour :

164 

165* Quand le dépôt n'a pas été récupéré au cours des 24 dernières heures, il récupère la branche par défaut, limité à cinq secondes, et utilise la ref mise en cache localement si la récupération échoue.

166* La récupération n'attend jamais de saisie dans votre terminal. Elle est également considérée comme échouée lorsque git ou ssh demanderait un mot de passe, une phrase secrète de clé ou la confirmation d'un nouvel hôte SSH.

167* Si aucun dépôt distant n'est configuré, ou si `origin/HEAD` n'est pas mis en cache localement et ne peut pas être récupéré, le worktree revient à votre `HEAD` local actuel.

162 168 

163Cet exemple fait que chaque nouveau worktree se ramifie à partir de votre travail actuel :169Cet exemple fait que chaque nouveau worktree se ramifie à partir de votre travail actuel :

164 170 


225* `worktree.baseRef` est `"head"`.231* `worktree.baseRef` est `"head"`.

226* Le nom est une référence de demande de tirage ou de fusion.232* Le nom est une référence de demande de tirage ou de fusion.

227 233 

228Avant la v2.1.208, quand vous réutilisiez un nom, Claude Code rouvrait toujours l'ancien worktree à son ancienne pointe.

229 

230### Remplacer la création de worktree par un hook234### Remplacer la création de worktree par un hook

231 235 

232Configurez un hook [`WorktreeCreate`](https://code.claude.com/docs/fr/hooks#worktreecreate) pour remplacer entièrement la logique `git worktree` par défaut, y compris placer les worktrees ailleurs que `.claude/worktrees/`. Pour un exemple complet, voir [Contrôle de version non-git](#non-git-version-control).236Configurez un hook [`WorktreeCreate`](https://code.claude.com/docs/fr/hooks#worktreecreate) pour remplacer entièrement la logique `git worktree` par défaut, y compris placer les worktrees ailleurs que `.claude/worktrees/`. Pour un exemple complet, voir [Contrôle de version non-git](#non-git-version-control).


236Un worktree obtient ses propres fichiers et branche, mais il partage les éléments suivants avec l'extraction principale :240Un worktree obtient ses propres fichiers et branche, mais il partage les éléments suivants avec l'extraction principale :

237 241 

238* **Le répertoire `.git` du dépôt** : les commandes git dans un worktree écrivent dans le répertoire `.git` partagé du dépôt principal, et l'[isolation du système de fichiers](https://code.claude.com/docs/fr/sandboxing.md#filesystem-isolation) permet ces écritures, donc les commandes telles que `git commit` fonctionnent depuis l'intérieur d'un worktree avec le sandbox activé.242* **Le répertoire `.git` du dépôt** : les commandes git dans un worktree écrivent dans le répertoire `.git` partagé du dépôt principal, et l'[isolation du système de fichiers](https://code.claude.com/docs/fr/sandboxing.md#filesystem-isolation) permet ces écritures, donc les commandes telles que `git commit` fonctionnent depuis l'intérieur d'un worktree avec le sandbox activé.

239* **Plugins** : les plugins installés à [portée du projet](https://code.claude.com/docs/fr/plugins/loading.md#find-where-a-plugin-is-enabled) à partir de l'extraction principale se chargent également dans les worktrees du même dépôt, vous n'avez donc pas besoin de les réinstaller par worktree. Nécessite Claude Code v2.1.200 ou ultérieur.243* **Plugins** : les plugins installés à [portée du projet](https://code.claude.com/docs/fr/plugins/loading.md#find-where-a-plugin-is-enabled) à partir de l'extraction principale se chargent également dans les worktrees du même dépôt, vous n'avez donc pas besoin de les réinstaller par worktree.

240* **Approbations de permission** : choisir « Oui, et ne plus demander » pour une commande Bash dans une session worktree sauvegarde la règle dans le `.claude/settings.local.json` de l'extraction principale, pour qu'elle s'applique dans l'extraction principale et dans chaque autre worktree du dépôt, et qu'elle survive à la suppression du worktree. Sur Windows et dans les autres cas où Claude Code [n'utilise pas la racine du dépôt](https://code.claude.com/docs/fr/settings.md#where-claude-code-looks-for-each-file), la règle reste avec ce worktree. Avant la v2.1.211, une approbation accordée dans un worktree était sauvegardée à l'intérieur de ce worktree, ne s'appliquait pas ailleurs, et était perdue quand le worktree était supprimé. Voir [où les approbations sont sauvegardées](https://code.claude.com/docs/fr/permissions.md#permission-system).244* **Approbations de permission** : choisir « Oui, et ne plus demander » pour une commande Bash dans une session worktree sauvegarde la règle dans le `.claude/settings.local.json` de l'extraction principale. La règle s'applique dans l'extraction principale et dans chaque autre worktree du dépôt, et elle survit à la suppression du worktree.

245 

246 Sur Windows et dans les autres cas où Claude Code [n'utilise pas la racine du dépôt](https://code.claude.com/docs/fr/settings.md#where-claude-code-looks-for-each-file), la règle reste avec ce worktree. Voir [où les approbations sont sauvegardées](https://code.claude.com/docs/fr/permissions.md#permission-system).

241* **Compétences, agents et commandes non suivis** : quand l'extraction du worktree n'a pas de répertoire `.claude/skills` à sa racine, par exemple parce que votre `.claude/skills` est gitignored, Claude Code charge les [compétences du projet](https://code.claude.com/docs/fr/skills.md#where-skills-live) de l'extraction principale dans la session worktree. Dans un worktree avec son propre répertoire `.claude/skills`, seule cette copie se charge.247* **Compétences, agents et commandes non suivis** : quand l'extraction du worktree n'a pas de répertoire `.claude/skills` à sa racine, par exemple parce que votre `.claude/skills` est gitignored, Claude Code charge les [compétences du projet](https://code.claude.com/docs/fr/skills.md#where-skills-live) de l'extraction principale dans la session worktree. Dans un worktree avec son propre répertoire `.claude/skills`, seule cette copie se charge.

242 248 

243 La même lecture couvre `.claude/agents` et `.claude/commands`. Pour les compétences, la lecture nécessite Claude Code v2.1.277 ou ultérieur.249 La même lecture couvre `.claude/agents` et `.claude/commands`. Pour les compétences, la lecture nécessite Claude Code v2.1.277 ou ultérieur.


322 328 

323Claude Code refuse de créer un worktree quand `.claude`, `.claude/worktrees`, ou le répertoire worktree lui-même est un lien symbolique, et l'erreur nomme le chemin symlinké. Supprimez le lien symbolique et réessayez. Avant la v2.1.212, si le dépôt contenait déjà un lien symbolique validé à l'un de ces chemins, la création de worktree le suivait et pouvait créer des fichiers en dehors du dépôt.329Claude Code refuse de créer un worktree quand `.claude`, `.claude/worktrees`, ou le répertoire worktree lui-même est un lien symbolique, et l'erreur nomme le chemin symlinké. Supprimez le lien symbolique et réessayez. Avant la v2.1.212, si le dépôt contenait déjà un lien symbolique validé à l'un de ces chemins, la création de worktree le suivait et pouvait créer des fichiers en dehors du dépôt.

324 330 

331### Un worktree créé par Claude Code contient le contenu original des objets remplacés

332 

333Si votre dépôt utilise [`git replace`](https://git-scm.com/docs/git-replace), les fichiers d'un worktree que Claude Code crée contiennent le contenu des objets originaux plutôt que les remplacements que nomment vos entrées `refs/replace/`. Claude Code exécute les commandes git qui extraient les fichiers du worktree avec `GIT_NO_REPLACE_OBJECTS=1`, en ignorant toute valeur que vous avez exportée pour cette variable.

334 

335Pour obtenir le contenu remplacé, [créez le worktree vous-même](#manage-worktrees-manually) avec `git worktree add` et démarrez Claude Code à l'intérieur.

336 

325### Les fichiers Git LFS sont des fichiers pointeurs dans un worktree que Claude Code a créé337### Les fichiers Git LFS sont des fichiers pointeurs dans un worktree que Claude Code a créé

326 338 

327Si vous avez configuré [Git LFS](https://git-lfs.com) avec `git lfs install --local`, un worktree que Claude Code crée contient des fichiers pointeurs LFS au lieu des vrais fichiers. Le flag `--local` écrit le filtre LFS dans le `.git/config` du dépôt lui-même plutôt que dans votre config git global. Un simple `git lfs install` écrit dans votre config global et n'est pas affecté. La même chose s'applique à tout autre [pilote de filtre](https://git-scm.com/docs/gitattributes) défini dans le config du dépôt lui-même.339Si vous avez configuré [Git LFS](https://git-lfs.com) avec `git lfs install --local`, un worktree que Claude Code crée contient des fichiers pointeurs LFS au lieu des vrais fichiers. Le flag `--local` écrit le filtre LFS dans le `.git/config` du dépôt lui-même plutôt que dans votre config git global. Un simple `git lfs install` écrit dans votre config global et n'est pas affecté. La même chose s'applique à tout autre [pilote de filtre](https://git-scm.com/docs/gitattributes) défini dans le config du dépôt lui-même.