SpyBara
Go Premium

Documentation 2026-10-06 23:59 UTC to 2026-10-07 09:02 UTC

38 files changed +200 −156. View all changes and history on the product overview
2026
Wed 7 09: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

agent-sdk/hooks.md +12 −12

Details

36 </Step>36 </Step>

37 37 

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

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

40 </Step>40 </Step>

41</Steps>41</Steps>

42 42 


140 ```140 ```

141</CodeGroup>141</CodeGroup>

142 142 

143Lorsque vous exécutez l'un ou l'autre script, Claude tente de créer le fichier `.env`, le hook refuse l'appel d'outil, et la réponse finale de Claude explique qu'il ne peut pas créer de fichiers `.env`.143Lorsque vous exécutez l'un ou l'autre script, Claude tente de créer le fichier `.env` et le hook refuse l'appel d'outil.

144 144 

145<h2 id="available-hooks">145<h2 id="available-hooks">

146 Hooks disponibles146 Hooks disponibles


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

180| `InstructionsLoaded` | Non | Oui | Un fichier `CLAUDE.md` ou de règles est chargé dans le contexte | Auditer quels fichiers d'instructions se chargent |180| `InstructionsLoaded` | Non | Oui | Un fichier `CLAUDE.md` ou de règles est chargé dans le contexte | Auditer quels fichiers d'instructions se chargent |

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

182| `WorktreeRemove` | Non | Oui | Git worktree supprimé | Nettoyer les ressources de l'espace de travail |182| `WorktreeRemove` | Non | Oui | Un worktree créé par un hook `WorktreeCreate` est en cours de suppression | Nettoyer les ressources de l'espace de travail |

183| `CwdChanged` | Non | Oui | Le répertoire de travail change pendant une session | Recharger les variables d'environnement par répertoire |183| `CwdChanged` | Non | Oui | Le répertoire de travail change pendant une session | Recharger les variables d'environnement par répertoire |

184| `FileChanged` | Non | Oui | Un fichier surveillé est modifié, créé ou supprimé | Recharger la configuration quand les fichiers du projet changent |184| `FileChanged` | Non | Oui | Un fichier surveillé est modifié, créé ou supprimé | Recharger la configuration quand les fichiers du projet changent |

185| `DirectoryAdded` | Non | Oui | Un répertoire de travail est ajouté pendant une session | Installer les dépendances pour un référentiel ajouté en cours de session |185| `DirectoryAdded` | Non | Oui | Un répertoire de travail est ajouté pendant une session | Installer les dépendances pour un référentiel ajouté en cours de session |


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

236| `timeout` | `number` | `undefined` | Délai d'expiration en secondes. Lorsqu'il est omis, Claude Code applique le [délai d'expiration par défaut de l'événement](#hook-timeout). Vos rappels du SDK suivent les valeurs par défaut du hook `command` |236| `timeout` | `number` | `undefined` | Délai d'expiration en secondes. Lorsqu'il est omis, Claude Code applique le [délai d'expiration par défaut de l'événement](#hook-timeout). Vos rappels du SDK suivent les valeurs par défaut du hook `command` |

237 237 

238Utilisez le motif `matcher` pour cibler des outils spécifiques chaque fois que possible. Un matcher avec `'Bash'` s'exécute uniquement pour les commandes Bash, tandis que l'omission du motif exécute vos rappels pour chaque occurrence de l'événement. Omettez-le intentionnellement pour enregistrer chaque appel d'outil que votre session effectue.238Utilisez le motif `matcher` pour cibler des outils spécifiques chaque fois que possible. Un matcher avec `'Bash'` s'exécute uniquement pour les commandes Bash, tandis que l'omission du motif exécute vos rappels pour chaque occurrence de l'événement. Omettez-le intentionnellement pour journaliser chaque appel d'outil que votre session effectue.

239 239 

240<h3 id="callback-functions">240<h3 id="callback-functions">

241 Fonctions de rappel241 Fonctions de rappel


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

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

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

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

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

267 267 

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


297| Champ | Type | Description |297| Champ | Type | Description |

298| - | - | - |298| - | - | - |

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

300| `asyncTimeout` | `number` | Délai d'expiration optionnel en millisecondes pour l'opération de fond |300| `asyncTimeout` | `number` | Délai d'expiration optionnel en millisecondes pour l'opération en arrière-plan |

301 301 

302<Note>302<Note>

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


834 834 

835* `PreToolUse` : Claude Code n'exécute pas l'appel d'outil, Claude reçoit un résultat d'outil indiquant que le hook n'a pas répondu avant son délai d'expiration, et le tour continue. Si un autre hook `PreToolUse` a retourné un refus explicite, Claude reçoit ce refus à la place de l'erreur de délai d'expiration. Avant la v2.1.210, Claude Code signalait le délai d'expiration à Claude comme un refus utilisateur, ce qui faisait arrêter les sessions sans surveillance et attendre une entrée.835* `PreToolUse` : Claude Code n'exécute pas l'appel d'outil, Claude reçoit un résultat d'outil indiquant que le hook n'a pas répondu avant son délai d'expiration, et le tour continue. Si un autre hook `PreToolUse` a retourné un refus explicite, Claude reçoit ce refus à la place de l'erreur de délai d'expiration. Avant la v2.1.210, Claude Code signalait le délai d'expiration à Claude comme un refus utilisateur, ce qui faisait arrêter les sessions sans surveillance et attendre une entrée.

836* `PostToolUse` et `PostToolUseFailure` : Claude Code conserve le résultat de l'outil et le tour continue.836* `PostToolUse` et `PostToolUseFailure` : Claude Code conserve le résultat de l'outil et le tour continue.

837* `UserPromptSubmit` et [`UserPromptExpansion`](/docs/fr/hooks#userpromptexpansion) : Claude Code bloque l'invite avec un message nommant le hook et le délai d'expiration, et la session continue. Parce qu'un rappel sur ces événements peut agir comme une porte de politique, Claude Code ne laisse jamais passer une invite expirée sans contrôle. Avant la v2.1.208, Claude Code terminait la requête avec `error_during_execution` lorsqu'un rappel sur ces événements expirait.837* `UserPromptSubmit` et [`UserPromptExpansion`](/docs/fr/hooks#userpromptexpansion) : Claude Code bloque le prompt avec un message nommant le hook et le délai d'expiration, et la session continue. Parce qu'un rappel sur ces événements peut agir comme une porte de politique, Claude Code ne laisse jamais passer un prompt expiré sans contrôle. Avant la v2.1.208, Claude Code terminait la requête avec `error_during_execution` lorsqu'un rappel sur ces événements expirait.

838* `Stop` et `SubagentStop` : le rappel expiré compte comme ne retournant aucune décision. L'agent ou le sous-agent s'arrête comme si ce rappel l'avait autorisé, et une décision de vos autres hooks sur l'événement s'applique toujours. Avant Claude Code v2.1.273, un rappel `Stop` ou `SubagentStop` expiré comptait comme une exécution de hook échouée, et Claude Code rejetait les décisions de vos autres hooks sur l'événement.838* `Stop` et `SubagentStop` : le rappel expiré compte comme ne retournant aucune décision. L'agent ou le sous-agent s'arrête comme si ce rappel l'avait autorisé, et une décision de vos autres hooks sur l'événement s'applique toujours. Avant Claude Code v2.1.273, un rappel `Stop` ou `SubagentStop` expiré comptait comme une exécution de hook échouée, et Claude Code rejetait les décisions de vos autres hooks sur l'événement.

839* `SessionStart` : le rappel expiré compte comme ne retournant aucune sortie, et la session continue avec la sortie de vos autres hooks `SessionStart`.839* `SessionStart` : le rappel expiré compte comme ne retournant aucune sortie, et la session continue avec la sortie de vos autres hooks `SessionStart`.

840* `PreModelSwitch` : Claude Code bloque le changement de modèle. Un hook qui ne répond pas n'a pas approuvé le changement.840* `PreModelSwitch` : Claude Code bloque le changement de modèle. Un hook qui ne répond pas n'a pas approuvé le changement.

841* Autres événements, tels que `Notification`, `PreCompact` et `PostModelSwitch` : Claude Code enregistre l'échec et continue.841* Autres événements, tels que `Notification`, `PreCompact` et `PostModelSwitch` : Claude Code consigne l'échec dans les logs et continue.

842 842 

843La première fois qu'un rappel `Stop` ou `SessionStart` expire dans la session principale, Claude Code ajoute également un [`SDKInformationalMessage`](/docs/fr/agent-sdk/typescript#sdkinformationalmessage) au flux de messages indiquant que l'application pilotant la session n'a pas répondu. Les expirations ultérieures ne répètent pas ce message tant que votre application reste sans réponse.843La première fois qu'un rappel `Stop` ou `SessionStart` expire dans la session principale, Claude Code ajoute également un [`SDKInformationalMessage`](/docs/fr/agent-sdk/typescript#sdkinformationalmessage) au flux de messages indiquant que l'application pilotant la session n'a pas répondu. Les expirations ultérieures ne répètent pas ce message tant que votre application reste sans réponse.

844 844 


878 Hooks de session non disponibles en Python878 Hooks de session non disponibles en Python

879</h3>879</h3>

880 880 

881`SessionStart` et `SessionEnd` peuvent être enregistrés en tant que hooks de rappel du SDK en TypeScript, mais ne sont pas disponibles dans le SDK Python car son type `HookEvent` les omet. En Python, ils ne sont disponibles que comme [hooks de commande shell](/docs/fr/hooks#hook-events) définis dans les fichiers de paramètres tels que `.claude/settings.json`. Pour charger les hooks de commande shell à partir de votre application SDK, incluez la source de paramètre appropriée avec [`setting_sources`](/docs/fr/agent-sdk/python#settingsource) ou [`settingSources`](/docs/fr/agent-sdk/typescript#settingsource) :881`SessionStart` et `SessionEnd` peuvent être enregistrés en tant que hooks de rappel du SDK en TypeScript, mais ne sont pas disponibles dans le SDK Python car son type `HookEvent` les omet. En Python, ils ne sont disponibles que comme [hooks de commande shell](/docs/fr/hooks#hook-events) définis dans les fichiers de paramètres tels que `.claude/settings.json`. Les fichiers de paramètres que charge votre application SDK dépendent de [`setting_sources`](/docs/fr/agent-sdk/python#settingsource) ou de [`settingSources`](/docs/fr/agent-sdk/typescript#settingsource). Si vous définissez cette option, incluez la source qui contient les hooks :

882 882 

883<CodeGroup>883<CodeGroup>

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


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

898 898 

899<h3 id="subagent-permission-prompts-multiplying">899<h3 id="subagent-permission-prompts-multiplying">

900 Les invites de permission des sous-agents se multiplient900 Les demandes de permission des sous-agents se multiplient

901</h3>901</h3>

902 902 

903Lors du lancement de plusieurs sous-agents, chacun peut demander des permissions séparément pour ses propres appels d'outils. Pour éviter les invites répétées, utilisez les hooks `PreToolUse` pour approuver automatiquement des outils spécifiques, ou configurez des règles de permission, que les sous-agents [héritent de la conversation parent](/docs/fr/sub-agents#permission-modes).903Lors du lancement de plusieurs sous-agents, chacun peut demander des permissions séparément pour ses propres appels d'outils. Pour éviter les demandes répétées, utilisez les hooks `PreToolUse` pour approuver automatiquement des outils spécifiques, ou configurez des règles de permission, que les sous-agents [héritent de la conversation parent](/docs/fr/sub-agents#permission-modes).

904 904 

905<h3 id="recursive-hook-loops-with-subagents">905<h3 id="recursive-hook-loops-with-subagents">

906 Boucles de hook récursives avec des sous-agents906 Boucles de hook récursives avec des sous-agents


919 919 

920Avant la v2.1.227, le SDK ne faisait apparaître la sortie du hook dans le flux de messages que pour les hooks `SessionStart` et `Setup`. Pour tout autre événement, la sortie n'apparaissait que dans les événements de cycle de vie que [`includeHookEvents`](/docs/fr/agent-sdk/typescript#options) (`include_hook_events` en Python) ajoute. L'entrée de cette option couvre les événements de cycle de vie que chaque événement hook produit.920Avant la v2.1.227, le SDK ne faisait apparaître la sortie du hook dans le flux de messages que pour les hooks `SessionStart` et `Setup`. Pour tout autre événement, la sortie n'apparaissait que dans les événements de cycle de vie que [`includeHookEvents`](/docs/fr/agent-sdk/typescript#options) (`include_hook_events` en Python) ajoute. L'entrée de cette option couvre les événements de cycle de vie que chaque événement hook produit.

921 921 

922Si vous avez besoin de faire apparaître les décisions de hook à votre application de manière fiable, enregistrez-les séparément ou utilisez un canal de sortie dédié.922Si vous avez besoin de faire apparaître les décisions de hook à votre application de manière fiable, journalisez-les séparément ou utilisez un canal de sortie dédié.

923 923 

924<h2 id="related-resources">924<h2 id="related-resources">

925 Ressources connexes925 Ressources connexes

Details

194 `ToolAnnotations`194 `ToolAnnotations`

195</h4>195</h4>

196 196 

197Indices comportementaux pour un outil, passés comme argument `annotations` de [`tool()`](#tool). `ToolAnnotations` étend `mcp.types.ToolAnnotations` du SDK MCP avec un champ `maxResultSizeChars`, et vous pouvez écrire chaque indice en camelCase ou snake\_case : `ToolAnnotations(readOnlyHint=True)` et `ToolAnnotations(read_only_hint=True)` sont équivalents. Vous pouvez également passer un `mcp.types.ToolAnnotations` simple partout où le SDK accepte des annotations.197Indices comportementaux pour un outil, passés comme argument `annotations` de [`tool()`](#tool). `ToolAnnotations` étend `mcp.types.ToolAnnotations` du SDK MCP avec un champ `maxResultSizeChars`, et vous pouvez écrire chaque indice en camelCase ou snake\_case : `ToolAnnotations(readOnlyHint=True)` et `ToolAnnotations(read_only_hint=True)` sont équivalents. Pour relire un indice depuis l'objet, utilisez l'orthographe déclarée par votre package `mcp` installé : `.readOnlyHint` sur `mcp` 1.x et `.read_only_hint` sur 2.x, tandis que `.maxResultSizeChars` fonctionne sur les deux. Vous pouvez également passer un `mcp.types.ToolAnnotations` simple partout où le SDK accepte des annotations.

198 198 

199Les noms snake\_case et le champ typé `maxResultSizeChars` nécessitent Python Agent SDK 0.2.140 ou ultérieur. Les versions 0.1.31 à 0.2.139 réexportent `mcp.types.ToolAnnotations` inchangé. Sur les versions 0.1.55 à 0.2.139, vous pouvez toujours passer `maxResultSizeChars` comme argument de mot-clé : la classe MCP accepte les champs supplémentaires, et le SDK transmet la valeur à Claude Code.199Les noms snake\_case et le champ typé `maxResultSizeChars` nécessitent Python Agent SDK 0.2.140 ou ultérieur. Les versions 0.1.31 à 0.2.139 réexportent `mcp.types.ToolAnnotations` inchangé. Sur les versions 0.1.55 à 0.2.139, vous pouvez toujours passer `maxResultSizeChars` comme argument de mot-clé : la classe MCP accepte les champs supplémentaires, et le SDK transmet la valeur à Claude Code.

200 200 


321| `summary` | `str` | Titre d'affichage : titre personnalisé, prompt le plus récent, résumé généré automatiquement, ou premier prompt |321| `summary` | `str` | Titre d'affichage : titre personnalisé, prompt le plus récent, résumé généré automatiquement, ou premier prompt |

322| `last_modified` | `int` | Heure de dernière modification en millisecondes depuis l'époque |322| `last_modified` | `int` | Heure de dernière modification en millisecondes depuis l'époque |

323| `file_size` | `int \| None` | Taille du fichier de session en octets (`None` pour les backends de stockage distant) |323| `file_size` | `int \| None` | Taille du fichier de session en octets (`None` pour les backends de stockage distant) |

324| `custom_title` | `str \| None` | Titre de session défini par l'utilisateur |324| `custom_title` | `str \| None` | Titre de session : le titre défini par l'utilisateur, ou le titre généré automatiquement si aucun n'est défini |

325| `first_prompt` | `str \| None` | Premier prompt utilisateur significatif dans la session |325| `first_prompt` | `str \| None` | Premier prompt utilisateur significatif dans la session |

326| `git_branch` | `str \| None` | Branche git à la fin de la session |326| `git_branch` | `str \| None` | Branche git à la fin de la session |

327| `cwd` | `str \| None` | Répertoire de travail pour la session |327| `cwd` | `str \| None` | Répertoire de travail pour la session |


919| Property | Type | Default | Description |919| Property | Type | Default | Description |

920| :- | :- | :- | :- |920| :- | :- | :- | :- |

921| `tools` | `list[str] \| ToolsPreset \| None` | `None` | Configuration des outils. Utilisez `{"type": "preset", "preset": "claude_code"}` pour les outils par défaut de Claude Code |921| `tools` | `list[str] \| ToolsPreset \| None` | `None` | Configuration des outils. Utilisez `{"type": "preset", "preset": "claude_code"}` pour les outils par défaut de Claude Code |

922| `allowed_tools` | `list[str]` | `[]` | Outils à approuver automatiquement sans demander. Cela ne restreint pas Claude à seulement ces outils. Si vous nommez l'un des [outils de suivi des tâches](/docs/fr/agent-sdk/todo-tracking#model-availability) ici, Claude Code opte également la session. Les autres outils non listés passent à `permission_mode` et `can_use_tool`. Utilisez `disallowed_tools` pour bloquer les outils. Voir [Permissions](/docs/fr/agent-sdk/permissions#allow-and-deny-rules) |922| `allowed_tools` | `list[str]` | `[]` | Outils à approuver automatiquement sans demander. Cela ne restreint pas Claude à seulement ces outils. Si vous nommez l'un des [outils de suivi des tâches](/docs/fr/agent-sdk/todo-tracking#model-availability) ici, Claude Code active également cette fonctionnalité pour la session. Les autres outils non listés passent à `permission_mode` et `can_use_tool`. Utilisez `disallowed_tools` pour bloquer les outils. Voir [Permissions](/docs/fr/agent-sdk/permissions#allow-and-deny-rules) |

923| `system_prompt` | `str \| SystemPromptPreset \| SystemPromptCustom \| SystemPromptFile \| None` | `None` | Configuration du prompt système. Passez une chaîne pour un prompt personnalisé, `{"type": "preset", "preset": "claude_code"}` pour le prompt système de Claude Code avec `"append"` optionnel, `{"type": "custom", "prompt": "..."}` pour un prompt personnalisé qui peut également définir `"snapshot"`, ou `{"type": "file", "path": "..."}` pour charger un grand prompt depuis le disque. Voir [`SystemPromptPreset`](#systempromptpreset), [`SystemPromptCustom`](#systempromptcustom), et [`SystemPromptFile`](#systempromptfile) |923| `system_prompt` | `str \| SystemPromptPreset \| SystemPromptCustom \| SystemPromptFile \| None` | `None` | Configuration du prompt système. Passez une chaîne pour un prompt personnalisé, `{"type": "preset", "preset": "claude_code"}` pour le prompt système de Claude Code avec `"append"` optionnel, `{"type": "custom", "prompt": "..."}` pour un prompt personnalisé qui peut également définir `"snapshot"`, ou `{"type": "file", "path": "..."}` pour charger un grand prompt depuis le disque. Voir [`SystemPromptPreset`](#systempromptpreset), [`SystemPromptCustom`](#systempromptcustom), et [`SystemPromptFile`](#systempromptfile) |

924| `mcp_servers` | `dict[str, McpServerConfig] \| str \| Path` | `{}` | Configurations des serveurs MCP ou chemin vers un fichier de configuration |924| `mcp_servers` | `dict[str, McpServerConfig] \| str \| Path` | `{}` | Configurations des serveurs MCP ou chemin vers un fichier de configuration |

925| `strict_mcp_config` | `bool` | `False` | Quand `True`, utilisez uniquement les serveurs passés dans `mcp_servers` et ignorez le `.mcp.json` du projet, les paramètres utilisateur, les serveurs MCP fournis par les plugins, et les [connecteurs claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai). Correspond au drapeau CLI `--strict-mcp-config` |925| `strict_mcp_config` | `bool` | `False` | Quand `True`, utilisez uniquement les serveurs passés dans `mcp_servers` et ignorez le `.mcp.json` du projet, les paramètres utilisateur, les serveurs MCP fournis par les plugins, et les [connecteurs claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai). Correspond au flag CLI `--strict-mcp-config` |

926| `permission_mode` | `PermissionMode \| None` | `None` | Mode de permission pour l'utilisation des outils |926| `permission_mode` | `PermissionMode \| None` | `None` | Mode de permission pour l'utilisation des outils |

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

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


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

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

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

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

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

935| `fallback_model` | `str \| None` | `None` | Modèle de secours à utiliser si le modèle principal échoue. Accepte une liste séparée par des virgules. Pour des conseils, voir [Choisir un modèle](/docs/fr/agent-sdk/configuration#choose-a-model) |935| `fallback_model` | `str \| None` | `None` | Modèle de secours à utiliser si le modèle principal échoue. Accepte une liste séparée par des virgules. Pour des conseils, voir [Choisir un modèle](/docs/fr/agent-sdk/configuration#choose-a-model) |

936| `betas` | `list[SdkBeta]` | `[]` | Fonctionnalités bêta à activer. Voir [`SdkBeta`](#sdkbeta) pour les options disponibles |936| `betas` | `list[SdkBeta]` | `[]` | Fonctionnalités bêta à activer. Voir [`SdkBeta`](#sdkbeta) pour les options disponibles |

937| `output_format` | `dict[str, Any] \| None` | `None` | Format de sortie pour les réponses structurées (par exemple, `{"type": "json_schema", "schema": {...}}`). Voir [Sorties structurées](/docs/fr/agent-sdk/structured-outputs) pour les détails |937| `output_format` | `dict[str, Any] \| None` | `None` | Format de sortie pour les réponses structurées (par exemple, `{"type": "json_schema", "schema": {...}}`). Voir [Sorties structurées](/docs/fr/agent-sdk/structured-outputs) pour les détails |

938| `permission_prompt_tool_name` | `str \| None` | `None` | Nom de l'outil MCP pour les invites de permission |938| `permission_prompt_tool_name` | `str \| None` | `None` | Nom de l'outil MCP pour les demandes de permission |

939| `cwd` | `str \| Path \| None` | `None` | Répertoire de travail courant |939| `cwd` | `str \| Path \| None` | `None` | Répertoire de travail courant |

940| `cli_path` | `str \| Path \| None` | `None` | Chemin personnalisé vers l'exécutable CLI de Claude Code |940| `cli_path` | `str \| Path \| None` | `None` | Chemin personnalisé vers l'exécutable CLI de Claude Code |

941| `settings` | `str \| None` | `None` | Chemin vers un fichier de paramètres ou une chaîne JSON en ligne |941| `settings` | `str \| None` | `None` | Chemin vers un fichier de paramètres ou une chaîne JSON en ligne |

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

943| `env` | `dict[str, str]` | `{}` | Variables d'environnement fusionnées au-dessus de l'environnement de processus hérité. Voir [Variables d'environnement](/docs/fr/env-vars) pour les variables que le CLI sous-jacent lit, et [Gérer les réponses API lentes ou bloquées](#handle-slow-or-stalled-api-responses) pour les variables liées aux délais d'attente. Définissez `CLAUDE_AGENT_SDK_CLIENT_APP` pour identifier votre application dans l'en-tête User-Agent |943| `env` | `dict[str, str]` | `{}` | Variables d'environnement fusionnées au-dessus de l'environnement de processus hérité. Voir [Variables d'environnement](/docs/fr/env-vars) pour les variables que le CLI sous-jacent lit, et [Gérer les réponses API lentes ou bloquées](#handle-slow-or-stalled-api-responses) pour les variables liées aux délais d'attente. Définissez `CLAUDE_AGENT_SDK_CLIENT_APP` pour identifier votre application dans l'en-tête User-Agent |

944| `extra_args` | `dict[str, str \| None]` | `{}` | Arguments CLI supplémentaires à transmettre directement au CLI |944| `extra_args` | `dict[str, str \| None]` | `{}` | Arguments CLI supplémentaires à transmettre directement au CLI |

945| `max_buffer_size` | `int \| None` | `None` | Nombre maximum d'octets lors de la mise en mémoire tampon de la sortie standard du CLI |945| `max_buffer_size` | `int \| None` | `None` | Nombre maximum d'octets lors de la mise en mémoire tampon de la sortie standard du CLI |

946| `debug_stderr` | `Any` | `sys.stderr` | *Déprécié* - Le SDK ignore cette valeur. Utilisez le rappel `stderr` pour la sortie stderr du CLI |946| `debug_stderr` | `Any` | `sys.stderr` | *Déprécié* - Le SDK ignore cette valeur. Utilisez le rappel `stderr` pour la sortie stderr du CLI |

947| `stderr` | `Callable[[str], None] \| None` | `None` | Fonction de rappel pour la sortie stderr du CLI |947| `stderr` | `Callable[[str], None] \| None` | `None` | Fonction de rappel pour la sortie stderr du CLI |

948| `can_use_tool` | [`CanUseTool`](#canusetool) ` \| None` | `None` | Rappel de permission d'outil, invoqué uniquement quand le [flux de permission](/docs/fr/agent-sdk/permissions#how-permissions-are-evaluated) aboutit à une invite. Non invoqué pour les appels pré-approuvés par `allowed_tools`, les règles d'autorisation, ou `permission_mode`. Une règle d'autorisation ne pré-approuve pas les [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves). Voir [`CanUseTool`](#canusetool) pour les détails |948| `can_use_tool` | [`CanUseTool`](#canusetool) ` \| None` | `None` | Rappel de permission d'outil, invoqué uniquement quand le [flux de permission](/docs/fr/agent-sdk/permissions#how-permissions-are-evaluated) aboutit à une demande de permission. Non invoqué pour les appels approuvés automatiquement par `allowed_tools`, les règles d'autorisation, ou `permission_mode`. Une règle d'autorisation ne pré-approuve pas les [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves). Voir [`CanUseTool`](#canusetool) pour les détails |

949| `hooks` | `dict[HookEvent, list[HookMatcher]] \| None` | `None` | Configurations de hook pour intercepter les événements |949| `hooks` | `dict[HookEvent, list[HookMatcher]] \| None` | `None` | Configurations de hook pour intercepter les événements |

950| `user` | `str \| None` | `None` | Sur les plates-formes POSIX, le compte utilisateur du système d'exploitation sous lequel le sous-processus Claude Code s'exécute. Claude Code conserve l'environnement du processus parent, y compris `HOME`, et s'exécute dans `cwd` |950| `user` | `str \| None` | `None` | Sur les plates-formes POSIX, le compte utilisateur du système d'exploitation sous lequel le sous-processus Claude Code s'exécute. Claude Code conserve l'environnement du processus parent, y compris `HOME`, et s'exécute dans `cwd` |

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

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

953| `forward_subagent_text` | `bool` | `False` | Transmettre les blocs de texte et de réflexion des sous-agents dans le flux de messages. Sans cette option, Claude Code émet les blocs `tool_use` et `tool_result` des sous-agents mais pas le texte ou la réflexion. Nécessite Python Agent SDK 0.2.140 ou ultérieur |953| `forward_subagent_text` | `bool` | `False` | Transmettre les blocs de texte et de réflexion des sous-agents dans le flux de messages. Sans cette option, Claude Code émet les blocs `tool_use` et `tool_result` des sous-agents mais pas le texte ou la réflexion. Nécessite Python Agent SDK 0.2.140 ou ultérieur |

954| `verbatim_prompts` | `bool` | `False` | Livrer chaque invite telle qu'écrite. Le SDK envoie chaque message utilisateur avec `client_composed` défini à `True`. Voir [`client_composed`](/docs/fr/agent-sdk/typescript#sdkusermessage) pour ce que Claude Code ignore sur ces messages. Utilisez cette option quand votre texte d'invite inclut du contenu que l'utilisateur final n'a pas tapé. Pour un contrôle par tour, laissez-le désactivé et définissez `"client_composed": True` sur les messages diffusés individuels à la place. Pendant que l'option est activée, le SDK écrase toute valeur `client_composed` que vous définissez. Nécessite Python Agent SDK 0.2.158 ou ultérieur et Claude Code v2.1.248 ou ultérieur ; le CLI fourni avec ces versions du SDK satisfait l'exigence de Claude Code |954| `verbatim_prompts` | `bool` | `False` | Livrer chaque prompt tel qu'écrit. Le SDK envoie chaque message utilisateur avec `client_composed` défini à `True`. Voir [`client_composed`](/docs/fr/agent-sdk/typescript#sdkusermessage) pour ce que Claude Code ignore sur ces messages. Utilisez cette option quand le texte de votre prompt inclut du contenu que l'utilisateur final n'a pas tapé. Pour un contrôle par tour, laissez-la désactivée et définissez plutôt `"client_composed": True` sur les messages individuels envoyés en streaming. Pendant que l'option est activée, le SDK écrase toute valeur `client_composed` que vous définissez. Nécessite Python Agent SDK 0.2.158 ou ultérieur et Claude Code v2.1.248 ou ultérieur ; le CLI fourni avec ces versions du SDK satisfait l'exigence de Claude Code |

955| `fork_session` | `bool` | `False` | Lors de la reprise avec `resume`, bifurquer vers un nouvel ID de session au lieu de continuer la session d'origine |955| `fork_session` | `bool` | `False` | Lors de la reprise avec `resume`, bifurquer vers un nouvel ID de session au lieu de continuer la session d'origine |

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

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

958| `agents` | `dict[str, AgentDefinition] \| None` | `None` | Sous-agents définis par programmation |958| `agents` | `dict[str, AgentDefinition] \| None` | `None` | Sous-agents définis par programmation |

959| `plugins` | `list[SdkPluginConfig]` | `[]` | Charger des plugins personnalisés à partir de chemins locaux. Voir [Plugins](/docs/fr/agent-sdk/plugins) pour les détails |959| `plugins` | `list[SdkPluginConfig]` | `[]` | Charger des plugins personnalisés à partir de chemins locaux. Voir [Plugins](/docs/fr/agent-sdk/plugins) pour les détails |

960| `sandbox` | [`SandboxSettings`](#sandboxsettings) ` \| None` | `None` | Configurer le comportement du sandbox par programmation. Voir [Paramètres du sandbox](#sandboxsettings) pour les détails |960| `sandbox` | [`SandboxSettings`](#sandboxsettings) ` \| None` | `None` | Configurer le comportement du sandbox par programmation. Voir [Paramètres du sandbox](#sandboxsettings) pour les détails |

961| `setting_sources` | `list[SettingSource] \| None` | `None` (CLI defaults: all sources) | Contrôler quels paramètres du système de fichiers charger. Passez `[]` pour désactiver les paramètres utilisateur, projet et locaux. Avec `skills` défini et ce champ non défini, seules les sources utilisateur et projet se chargent. Définissez `setting_sources` explicitement pour conserver les paramètres locaux. La politique gérée par le point de terminaison se charge indépendamment ; les paramètres gérés par le serveur sont récupérés quand la session s'authentifie avec une credential d'organisation sur une [configuration éligible](/docs/fr/server-managed-settings#platform-availability). Pour les entrées lues indépendamment de cette option, voir [Ce que settingSources ne contrôle pas](/docs/fr/agent-sdk/claude-code-features#what-settingsources-does-not-control) |961| `setting_sources` | `list[SettingSource] \| None` | `None` (CLI defaults: all sources) | Contrôler quels paramètres du système de fichiers charger. Passez `[]` pour désactiver les paramètres utilisateur, projet et locaux. Avec `skills` défini et ce champ non défini, seules les sources utilisateur et projet se chargent. Définissez `setting_sources` explicitement pour conserver les paramètres locaux. La politique gérée par le point de terminaison se charge indépendamment ; les paramètres gérés par le serveur sont récupérés quand la session s'authentifie avec des identifiants d'organisation sur une [configuration éligible](/docs/fr/server-managed-settings#platform-availability). Pour les entrées lues indépendamment de cette option, voir [Ce que settingSources ne contrôle pas](/docs/fr/agent-sdk/claude-code-features#what-settingsources-does-not-control) |

962| `skills` | `list[str] \| Literal["all"] \| None` | `None` | Compétences disponibles pour la session. Passez `"all"` pour activer chaque compétence découverte, ou une liste de noms de compétences. Passez uniquement les noms exacts. Le SDK rejette les noms mal formés et de forme générique avec une `ValueError` avant de démarrer le processus Claude Code ; cette vérification nécessite Python Agent SDK 0.2.129 ou ultérieur. Quand défini, le SDK ajoute l'outil Skill à `allowed_tools` automatiquement. Si vous passez également `tools`, incluez `"Skill"` dans cette liste. Voir [Compétences](/docs/fr/agent-sdk/skills) |962| `skills` | `list[str] \| Literal["all"] \| None` | `None` | Skills disponibles pour la session. Passez `"all"` pour activer chaque skill découvert, ou une liste de noms de skills. Passez uniquement les noms exacts. Le SDK rejette les noms mal formés et de forme générique avec une `ValueError` avant de démarrer le processus Claude Code ; cette vérification nécessite Python Agent SDK 0.2.129 ou ultérieur. Quand défini, le SDK ajoute l'outil Skill à `allowed_tools` automatiquement. Si vous passez également `tools`, incluez `"Skill"` dans cette liste. Voir [Skills](/docs/fr/agent-sdk/skills) |

963| `max_thinking_tokens` | `int \| None` | `None` | *Déprécié* - Nombre maximum de tokens pour les blocs de réflexion. Utilisez `thinking` à la place |963| `max_thinking_tokens` | `int \| None` | `None` | *Déprécié* - Nombre maximum de tokens pour les blocs de réflexion. Utilisez `thinking` à la place |

964| `thinking` | [`ThinkingConfig`](#thinkingconfig) ` \| None` | `None` | Contrôle le comportement de la réflexion étendue. Prend la priorité sur `max_thinking_tokens` |964| `thinking` | [`ThinkingConfig`](#thinkingconfig) ` \| None` | `None` | Contrôle le comportement de la réflexion étendue. A priorité sur `max_thinking_tokens` |

965| `effort` | [`EffortLevel`](#effortlevel) ` \| None` | `None` | Niveau d'effort pour la profondeur de réflexion. Voir [ajuster le niveau d'effort](/docs/fr/model-config#adjust-effort-level) |965| `effort` | [`EffortLevel`](#effortlevel) ` \| None` | `None` | Niveau d'effort pour la profondeur de réflexion. Voir [ajuster le niveau d'effort](/docs/fr/model-config#adjust-effort-level) |

966| `session_store` | [`SessionStore`](/docs/fr/agent-sdk/session-storage#the-sessionstore-interface) ` \| None` | `None` | Refléter les transcriptions de session vers un backend externe afin qu'un autre hôte puisse les reprendre. Voir [Persister les sessions vers un stockage externe](/docs/fr/agent-sdk/session-storage) |966| `session_store` | [`SessionStore`](/docs/fr/agent-sdk/session-storage#the-sessionstore-interface) ` \| None` | `None` | Refléter les transcriptions de session vers un backend externe afin qu'un autre hôte puisse les reprendre. Voir [Persister les sessions vers un stockage externe](/docs/fr/agent-sdk/session-storage) |

967| `session_store_flush` | `Literal["batched", "eager"]` | `"batched"` | Quand vider les entrées de transcription refléchies vers `session_store`. `"batched"` vide une fois par tour ou quand le tampon se remplit ; `"eager"` déclenche un vidage en arrière-plan après chaque frame. Ignoré quand `session_store` est `None` |967| `session_store_flush` | `Literal["batched", "eager"]` | `"batched"` | Quand vider les entrées de transcription reflétées vers `session_store`. `"batched"` vide une fois par tour ou quand le tampon se remplit ; `"eager"` déclenche un vidage en arrière-plan après chaque frame. Ignoré quand `session_store` est `None` |

968| `load_timeout_ms` | `int` | `60000` | Délai d'attente par appel pour `session_store.load()` et `list_subkeys()` lors de la matérialisation de la reprise, en millisecondes |968| `load_timeout_ms` | `int` | `60000` | Délai d'attente par appel pour `session_store.load()` et `list_subkeys()` lors de la matérialisation de la reprise, en millisecondes |

969| `task_budget` | `TaskBudget \| None` | `None` | Budget de tokens côté API. Envoyé en tant que `output_config.task_budget` avec l'en-tête bêta `task-budgets-2026-03-13`. Passez `{"total": <int>}`. |969| `task_budget` | `TaskBudget \| None` | `None` | Budget de tokens côté API. Envoyé en tant que `output_config.task_budget` avec l'en-tête bêta `task-budgets-2026-03-13`. Passez `{"total": <int>}`. |

970 970 


987```987```

988 988 

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

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

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

992 992 

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

994* `CLAUDE_ENABLE_STREAM_WATCHDOG` avec `CLAUDE_STREAM_IDLE_TIMEOUT_MS` : chien de garde de flux qui abandonne la requête quand les en-têtes sont arrivés mais que le corps de la réponse cesse de diffuser. Le chien de garde est activé par défaut pour tous les fournisseurs ; définissez `CLAUDE_ENABLE_STREAM_WATCHDOG=0` pour le désactiver. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` par défaut à `300000` et est limité à ce minimum. Après l'abandon, [Tentatives automatiques](/docs/fr/errors#automatic-retries) couvre ce que Claude Code fait, en fonction de la progression de la réponse.994* `CLAUDE_ENABLE_STREAM_WATCHDOG` avec `CLAUDE_STREAM_IDLE_TIMEOUT_MS` : chien de garde de flux qui abandonne la requête quand les en-têtes sont arrivés mais que le corps de la réponse cesse d'être envoyé en streaming. Le chien de garde est activé par défaut pour tous les fournisseurs ; définissez `CLAUDE_ENABLE_STREAM_WATCHDOG=0` pour le désactiver. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` vaut par défaut `300000` et est limité à ce minimum. Après l'abandon, [Nouvelles tentatives automatiques](/docs/fr/errors#automatic-retries) décrit ce que fait Claude Code, en fonction de la progression de la réponse.

995 995 

996 Pendant que le chien de garde attend une réponse qu'une passerelle derrière `ANTHROPIC_BASE_URL` maintient ouverte avec des pings de maintien de connexion, un hôte qui définit `include_partial_messages` continue de recevoir des messages [`StreamEvent`](#streamevent) de `ping`. Lisez ces frames comme une vivacité plutôt que de chronométrer la session sur le silence. Avant v2.1.257, les frames s'arrêtaient 5 minutes après le dernier événement de flux réel.996 Pendant que le chien de garde attend une réponse qu'une passerelle derrière `ANTHROPIC_BASE_URL` maintient ouverte avec des pings de maintien de connexion, un hôte qui définit `include_partial_messages` continue de recevoir des messages [`StreamEvent`](#streamevent) de `ping`. Interprétez ces frames comme un signe d'activité plutôt que de faire expirer la session en cas de silence. Avant v2.1.257, les frames s'arrêtaient 5 minutes après le dernier événement de flux réel.

997 997 

998<h3 id="outputformat">998<h3 id="outputformat">

999 `OutputFormat`999 `OutputFormat`


1034| `type` | Yes | Doit être `"preset"` pour utiliser un prompt système prédéfini |1034| `type` | Yes | Doit être `"preset"` pour utiliser un prompt système prédéfini |

1035| `preset` | Yes | Doit être `"claude_code"` pour utiliser le prompt système de Claude Code |1035| `preset` | Yes | Doit être `"claude_code"` pour utiliser le prompt système de Claude Code |

1036| `append` | No | Instructions supplémentaires à ajouter au prompt système prédéfini |1036| `append` | No | Instructions supplémentaires à ajouter au prompt système prédéfini |

1037| `exclude_dynamic_sections` | No | Déplacer le contexte par session tel que le répertoire de travail, le drapeau du dépôt git, et les chemins de mémoire automatique du prompt système vers le premier message utilisateur. Améliore la réutilisation du cache de prompt entre les utilisateurs et les machines. Voir [Modifier les prompts système](/docs/fr/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) |1037| `exclude_dynamic_sections` | No | Déplacer le contexte propre à chaque utilisateur, tel que l'emplacement de la mémoire automatique, du prompt système vers le premier message utilisateur. Améliore la réutilisation du cache de prompt entre les utilisateurs et les machines. Voir [Modifier les prompts système](/docs/fr/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) |

1038| `snapshot` | No | Définissez à `False` pour reconstruire le prompt système à chaque requête au lieu de [réutiliser le prompt que la session a enregistré à sa première requête](/docs/fr/agent-sdk/modifying-system-prompts#change-the-prompt-of-an-existing-session). Nécessite `claude-agent-sdk` v0.2.153 ou ultérieur |1038| `snapshot` | No | Définissez à `False` pour reconstruire le prompt système à chaque requête au lieu de [réutiliser le prompt que la session a enregistré à sa première requête](/docs/fr/agent-sdk/modifying-system-prompts#change-the-prompt-of-an-existing-session). Nécessite `claude-agent-sdk` v0.2.153 ou ultérieur |

1039 1039 

1040<h3 id="systempromptcustom">1040<h3 id="systempromptcustom">


1060 `SystemPromptFile`1060 `SystemPromptFile`

1061</h3>1061</h3>

1062 1062 

1063Configuration pour charger un prompt système personnalisé à partir d'un fichier au lieu de le passer en tant que chaîne. Le SDK mappe ceci au drapeau CLI [`--system-prompt-file`](/docs/fr/cli-reference#system-prompt-flags). Utilisez la forme fichier quand le prompt est volumineux : le SDK transmet un `system_prompt` chaîne sur l'argv du sous-processus CLI, qui est soumis aux limites de longueur de ligne de commande du système d'exploitation avant que le SDK n'envoie une requête API. Sur Linux, un seul argument plus long que environ 128 KB échoue au lancement du processus avec `Argument list too long`. Sur Windows, la ligne de commande entière est plafonnée à environ 32 KB, donc la forme chaîne échoue à un seuil inférieur.1063Configuration pour charger un prompt système personnalisé à partir d'un fichier au lieu de le passer en tant que chaîne. Le SDK mappe ceci au flag CLI [`--system-prompt-file`](/docs/fr/cli-reference#system-prompt-flags). Utilisez la forme fichier quand le prompt est volumineux : le SDK transmet un `system_prompt` chaîne sur l'argv du sous-processus CLI, qui est soumis aux limites de longueur de ligne de commande du système d'exploitation avant que le SDK n'envoie une requête API. Sur Linux, un seul argument plus long qu'environ 128 KB échoue au lancement du processus avec `Argument list too long`. Sur Windows, la ligne de commande entière est plafonnée à environ 32 KB, donc la forme chaîne échoue à un seuil inférieur.

1064 1064 

1065```python theme={null}1065```python theme={null}

1066class SystemPromptFile(TypedDict):1066class SystemPromptFile(TypedDict):


1077 `SettingSource`1077 `SettingSource`

1078</h3>1078</h3>

1079 1079 

1080Contrôle quelles sources de configuration basées sur le système de fichiers le SDK charge les paramètres.1080Contrôle à partir de quelles sources de configuration basées sur le système de fichiers le SDK charge les paramètres.

1081 1081 

1082```python theme={null}1082```python theme={null}

1083SettingSource = Literal["user", "project", "local"]1083SettingSource = Literal["user", "project", "local"]


1093 Comportement par défaut1093 Comportement par défaut

1094</h4>1094</h4>

1095 1095 

1096Quand `setting_sources` est omis ou `None` et `skills` n'est pas défini, `query()` charge les mêmes paramètres du système de fichiers que le CLI Claude Code : utilisateur, projet et local. Avec `skills` défini, la ligne [`setting_sources`](#claudeagentoptions) décrit la valeur par défaut actuelle. La politique gérée par le point de terminaison est chargée dans tous les cas ; les paramètres gérés par le serveur sont récupérés quand la session s'authentifie avec une credential d'organisation sur une [configuration éligible](/docs/fr/server-managed-settings#platform-availability). Pour plus d'informations, voir [Ce que settingSources ne contrôle pas](/docs/fr/agent-sdk/claude-code-features#what-settingsources-does-not-control).1096Quand `setting_sources` est omis ou `None` et `skills` n'est pas défini, `query()` charge les mêmes paramètres du système de fichiers que le CLI Claude Code : utilisateur, projet et local. Avec `skills` défini, la ligne [`setting_sources`](#claudeagentoptions) décrit la valeur par défaut actuelle. La politique gérée par le point de terminaison est chargée dans tous les cas ; les paramètres gérés par le serveur sont récupérés quand la session s'authentifie avec des identifiants d'organisation sur une [configuration éligible](/docs/fr/server-managed-settings#platform-availability). Pour plus d'informations, voir [Ce que settingSources ne contrôle pas](/docs/fr/agent-sdk/claude-code-features#what-settingsources-does-not-control).

1097 1097 

1098<h4 id="why-use-setting_sources">1098<h4 id="why-use-setting_sources">

1099 Pourquoi utiliser setting\_sources1099 Pourquoi utiliser setting\_sources


1174asyncio.run(main())1174asyncio.run(main())

1175```1175```

1176 1176 

1177Pour charger les instructions de projet CLAUDE.md, incluez `"project"` dans `setting_sources`. Voir [Modifier les prompts système](/docs/fr/agent-sdk/modifying-system-prompts#claude-md-files-for-project-level-instructions) pour comment le chargement de CLAUDE.md interagit avec les options de prompt système.1177Pour charger les instructions de projet CLAUDE.md, incluez `"project"` dans `setting_sources`. Voir [Modifier les prompts système](/docs/fr/agent-sdk/modifying-system-prompts#claude-md-files-for-project-level-instructions) pour savoir comment le chargement de CLAUDE.md interagit avec les options de prompt système.

1178 1178 

1179<h4 id="settings-precedence">1179<h4 id="settings-precedence">

1180 Précédence des paramètres1180 Priorité des paramètres

1181</h4>1181</h4>

1182 1182 

1183Quand plusieurs sources sont chargées, les paramètres sont fusionnés avec cette précédence (la plus haute à la plus basse) :1183Quand plusieurs sources sont chargées, les paramètres sont fusionnés selon cette priorité (de la plus haute à la plus basse) :

1184 1184 

11851. Paramètres locaux (`.claude/settings.local.json`)11851. Paramètres locaux (`.claude/settings.local.json`)

11862. Paramètres de projet (`.claude/settings.json`)11862. Paramètres de projet (`.claude/settings.json`)

11873. Paramètres utilisateur (`~/.claude/settings.json`)11873. Paramètres utilisateur (`~/.claude/settings.json`)

1188 1188 

1189Les options programmatiques telles que `agents`, `allowed_tools`, et `settings` remplacent les paramètres du système de fichiers utilisateur, projet et local. Les paramètres de politique gérée prennent la priorité sur les options programmatiques.1189Les options programmatiques telles que `agents`, `allowed_tools`, et `settings` remplacent les paramètres du système de fichiers utilisateur, projet et local. Les paramètres de politique gérée ont priorité sur les options programmatiques.

1190 1190 

1191<h3 id="agentdefinition">1191<h3 id="agentdefinition">

1192 `AgentDefinition`1192 `AgentDefinition`


1219| `tools` | No | Tableau de noms d'outils autorisés. S'il est omis, hérite de chaque [outil disponible pour les sous-agents](/docs/fr/sub-agents#available-tools) |1219| `tools` | No | Tableau de noms d'outils autorisés. S'il est omis, hérite de chaque [outil disponible pour les sous-agents](/docs/fr/sub-agents#available-tools) |

1220| `disallowedTools` | No | Tableau de noms d'outils à supprimer de l'ensemble d'outils de l'agent. Les motifs au niveau du serveur MCP sont également acceptés : `mcp__server` ou `mcp__server__*` supprime chaque outil de ce serveur, et `mcp__*` supprime chaque outil MCP de n'importe quel serveur |1220| `disallowedTools` | No | Tableau de noms d'outils à supprimer de l'ensemble d'outils de l'agent. Les motifs au niveau du serveur MCP sont également acceptés : `mcp__server` ou `mcp__server__*` supprime chaque outil de ce serveur, et `mcp__*` supprime chaque outil MCP de n'importe quel serveur |

1221| `model` | No | Remplacement de modèle pour cet agent. Accepte un alias tel que `"sonnet"`, `"opus"`, `"haiku"`, ou `"inherit"`, ou un ID de modèle complet. Quand vous l'omettez, Claude Code choisit le modèle dans l'[ordre de modèle des sous-agents](/docs/fr/sub-agents#choose-a-model) |1221| `model` | No | Remplacement de modèle pour cet agent. Accepte un alias tel que `"sonnet"`, `"opus"`, `"haiku"`, ou `"inherit"`, ou un ID de modèle complet. Quand vous l'omettez, Claude Code choisit le modèle dans l'[ordre de modèle des sous-agents](/docs/fr/sub-agents#choose-a-model) |

1222| `skills` | No | Liste de noms de compétences à précharger dans le contexte de l'agent au démarrage. Les compétences non listées restent invocables via l'outil Skill |1222| `skills` | No | Liste de noms de skills à précharger dans le contexte de l'agent au démarrage. Les skills non listés restent invocables via l'outil Skill |

1223| `memory` | No | Source de mémoire pour cet agent : `"user"`, `"project"`, ou `"local"` |1223| `memory` | No | Source de mémoire pour cet agent : `"user"`, `"project"`, ou `"local"` |

1224| `mcpServers` | No | Serveurs MCP disponibles pour cet agent. Chaque entrée est un nom de serveur ou un dict `{name: config}` en ligne |1224| `mcpServers` | No | Serveurs MCP disponibles pour cet agent. Chaque entrée est un nom de serveur ou un dict `{name: config}` en ligne |

1225| `initialPrompt` | No | Auto-soumis en tant que premier tour utilisateur quand cet agent s'exécute en tant qu'agent de thread principal |1225| `initialPrompt` | No | Auto-soumis en tant que premier tour utilisateur quand cet agent s'exécute en tant qu'agent de thread principal |


1245 "plan", # Mode planification - explorer sans éditer1245 "plan", # Mode planification - explorer sans éditer

1246 "dontAsk", # Refuser tout ce qui n'est pas pré-approuvé au lieu de demander1246 "dontAsk", # Refuser tout ce qui n'est pas pré-approuvé au lieu de demander

1247 "bypassPermissions", # Contourner les vérifications de permission ; les règles d'ask explicites demandent toujours (utiliser avec prudence)1247 "bypassPermissions", # Contourner les vérifications de permission ; les règles d'ask explicites demandent toujours (utiliser avec prudence)

1248 "auto", # Le classificateur de modèle approuve ou refuse les invites de permission1248 "auto", # Un classifieur de modèle examine les actions telles que les commandes shell et les requêtes réseau

1249]1249]

1250```1250```

1251 1251 


1285 1285 

1286Retourne un `PermissionResult` (soit `PermissionResultAllow` soit `PermissionResultDeny`).1286Retourne un `PermissionResult` (soit `PermissionResultAllow` soit `PermissionResultDeny`).

1287 1287 

1288Le rappel est le remplacement SDK pour l'invite de permission interactive : il est invoqué uniquement quand le [flux d'évaluation de permission](/docs/fr/agent-sdk/permissions#how-permissions-are-evaluated) aboutit à une invite. Les appels d'outil déjà approuvés par une entrée `allowed_tools`, une règle d'autorisation de paramètres, ou le mode de permission, tel que `acceptEdits` ou `bypassPermissions`, ne l'invoquent jamais. Pour contrôler chaque appel d'outil, utilisez un hook [`PreToolUse`](/docs/fr/agent-sdk/hooks) à la place.1288Le rappel est le remplacement SDK de la demande de permission interactive : il est invoqué uniquement quand le [flux d'évaluation des permissions](/docs/fr/agent-sdk/permissions#how-permissions-are-evaluated) aboutit à une demande de permission. Les appels d'outils déjà approuvés par une entrée `allowed_tools`, une règle d'autorisation des paramètres, ou le mode de permission, tel que `acceptEdits` ou `bypassPermissions`, ne l'invoquent jamais. Pour contrôler chaque appel d'outil, utilisez plutôt un [hook `PreToolUse`](/docs/fr/agent-sdk/hooks).

1289 1289 

1290Une règle d'autorisation ne pré-approuve pas les [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves) ; voir [Comment les permissions sont évaluées](/docs/fr/agent-sdk/permissions#how-permissions-are-evaluated) pour lesquelles d'entre elles atteignent le rappel et ce qui se passe en mode `dontAsk` et `auto`.1290Une règle d'autorisation ne pré-approuve pas les [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves) ; voir [Comment les permissions sont évaluées](/docs/fr/agent-sdk/permissions#how-permissions-are-evaluated) pour savoir lesquelles d'entre elles atteignent le rappel et ce qui se passe en mode `dontAsk` et `auto`.

1291 1291 

1292<h3 id="toolpermissioncontext">1292<h3 id="toolpermissioncontext">

1293 `ToolPermissionContext`1293 `ToolPermissionContext`


1312| Field | Type | Description |1312| Field | Type | Description |

1313| :- | :- | :- |1313| :- | :- | :- |

1314| `signal` | `Any \| None` | Réservé pour le support futur du signal d'abandon |1314| `signal` | `Any \| None` | Réservé pour le support futur du signal d'abandon |

1315| `suggestions` | `list[PermissionUpdate]` | Suggestions de mise à jour de permission du CLI. Les invites Bash incluent une suggestion avec la destination `localSettings`, donc retourner cela dans `updated_permissions` écrit la règle à `.claude/settings.local.json` et persiste entre les sessions. |1315| `suggestions` | `list[PermissionUpdate]` | Suggestions de mise à jour de permission du CLI. Les demandes de permission Bash incluent une suggestion avec la destination `localSettings`, donc la retourner dans `updated_permissions` écrit la règle dans `.claude/settings.local.json` et persiste entre les sessions. |

1316| `tool_use_id` | `str \| None` | Identifiant de l'appel d'outil spécifique pour lequel cette invite est. Toujours rempli quand livré à `can_use_tool` |1316| `tool_use_id` | `str \| None` | Identifiant de l'appel d'outil spécifique concerné par cette demande de permission. Toujours rempli quand livré à `can_use_tool` |

1317| `agent_id` | `str \| None` | ID du sous-agent quand l'appel provient d'un sous-agent ; `None` pour l'agent principal |1317| `agent_id` | `str \| None` | ID du sous-agent quand l'appel provient d'un sous-agent ; `None` pour l'agent principal |

1318| `blocked_path` | `str \| None` | Chemin de fichier qui a déclenché la demande de permission, le cas échéant. Par exemple, quand une commande Bash essaie d'accéder à un chemin en dehors des répertoires autorisés |1318| `blocked_path` | `str \| None` | Chemin de fichier qui a déclenché la demande de permission, le cas échéant. Par exemple, quand une commande Bash essaie d'accéder à un chemin en dehors des répertoires autorisés |

1319| `decision_reason` | `str \| None` | Raison pour laquelle cette demande de permission a été déclenchée. Transmise d'un hook PreToolUse dont `permissionDecisionReason` quand le hook a retourné `"ask"` |1319| `decision_reason` | `str \| None` | Raison pour laquelle cette demande de permission a été déclenchée. Transmise depuis le `permissionDecisionReason` d'un hook PreToolUse quand le hook a retourné `"ask"` |

1320| `title` | `str \| None` | Phrase d'invite de permission complète, telle que `Claude wants to read foo.txt`. Utilisez comme texte d'invite principal quand présent |1320| `title` | `str \| None` | Phrase complète de la demande de permission, telle que `Claude wants to read foo.txt`. Utilisez-la comme texte principal de la demande quand elle est présente |

1321| `display_name` | `str \| None` | Phrase nominale courte pour l'action d'outil, telle que `Read file`, appropriée pour les étiquettes de bouton |1321| `display_name` | `str \| None` | Phrase nominale courte pour l'action d'outil, telle que `Read file`, appropriée pour les étiquettes de bouton |

1322| `description` | `str \| None` | Sous-titre lisible par l'homme pour l'interface utilisateur de permission |1322| `description` | `str \| None` | Sous-titre lisible par l'homme pour l'interface utilisateur de permission |

1323 1323 


1465| `enabled` | `type`, `budget_tokens`, `display` | Activer la réflexion avec un budget de tokens spécifique |1465| `enabled` | `type`, `budget_tokens`, `display` | Activer la réflexion avec un budget de tokens spécifique |

1466| `disabled` | `type` | Désactiver la réflexion |1466| `disabled` | `type` | Désactiver la réflexion |

1467 1467 

1468Le champ `display` optionnel contrôle si le texte de réflexion est retourné `"summarized"` ou `"omitted"`. Sur Claude Opus 4.7 et ultérieur, la valeur par défaut de l'API est `"omitted"`, donc définissez `"summarized"` pour recevoir le contenu de réflexion dans les sorties [`ThinkingBlock`](#thinkingblock). Claude Code n'envoie pas `display` à Amazon Bedrock ou à la plateforme d'agent de Google Cloud, donc sur ces fournisseurs Opus 4.7 et ultérieur retournent des sorties `ThinkingBlock` vides même quand vous définissez `display` à `"summarized"`.1468Le champ `display` optionnel contrôle si le texte de réflexion est retourné `"summarized"` ou `"omitted"`. Sur Claude Opus 4.7 et ultérieur, la valeur par défaut de l'API est `"omitted"`, donc définissez `"summarized"` pour recevoir le contenu de réflexion dans les sorties [`ThinkingBlock`](#thinkingblock). Claude Code omet `display` des requêtes envoyées à certains fournisseurs, tels qu'Amazon Bedrock et Agent Platform de Google Cloud. Sur ces fournisseurs, Opus 4.7 et ultérieur retournent des sorties `ThinkingBlock` vides même quand vous définissez `display` à `"summarized"`.

1469 1469 

1470Parce que ce sont des classes `TypedDict`, ce sont des dicts simples à l'exécution. Construisez-les soit comme des littéraux dict soit appelez la classe comme un constructeur ; les deux produisent un `dict`. Accédez aux champs avec `config["budget_tokens"]`, pas `config.budget_tokens` :1470Parce que ce sont des classes `TypedDict`, ce sont des dicts simples à l'exécution. Construisez-les soit comme des littéraux dict soit appelez la classe comme un constructeur ; les deux produisent un `dict`. Accédez aux champs avec `config["budget_tokens"]`, pas `config.budget_tokens` :

1471 1471 


1660 apiUsage: NotRequired[dict[str, Any] | None]1660 apiUsage: NotRequired[dict[str, Any] | None]

1661```1661```

1662 1662 

1663Chaque entrée `ContextUsageCategory` porte `name`, `tokens`, `color`, et un drapeau optionnel `isDeferred`. `totalTokens` est l'utilisation de contexte actuelle de la session, et `maxTokens` est la fenêtre contre laquelle l'utilisation est mesurée. Cette fenêtre est la fenêtre de contexte du modèle, ou la fenêtre de compaction automatique inférieure quand une s'applique, et `rawMaxTokens` porte la même valeur que `maxTokens`. `apiUsage` contient l'utilisation de la dernière réponse API, pas un total cumulé pour la session. Claude Code laisse les clés optionnelles `deferredBuiltinTools`, `systemTools`, et `systemPromptSections` non définies, donc attendez-vous à ce qu'elles soient absentes même si le type les déclare.1663Chaque entrée `ContextUsageCategory` porte `name`, `tokens`, `color`, et un flag optionnel `isDeferred`. `totalTokens` est l'utilisation de contexte actuelle de la session, et `maxTokens` est la fenêtre par rapport à laquelle cette utilisation est mesurée. Cette fenêtre est la fenêtre de contexte du modèle, ou la fenêtre de compaction automatique inférieure quand elle s'applique, et `rawMaxTokens` porte la même valeur que `maxTokens`. `apiUsage` contient l'utilisation de la dernière réponse API, pas un total cumulé pour la session. Claude Code laisse les clés optionnelles `deferredBuiltinTools`, `systemTools`, et `systemPromptSections` non définies, donc attendez-vous à ce qu'elles soient absentes même si le type les déclare.

1664 1664 

1665<h3 id="sdkpluginconfig">1665<h3 id="sdkpluginconfig">

1666 `SdkPluginConfig`1666 `SdkPluginConfig`


1840 1840 

1841Plusieurs champs portent des détails de diagnostic sur la façon dont la conversation s'est terminée :1841Plusieurs champs portent des détails de diagnostic sur la façon dont la conversation s'est terminée :

1842 1842 

1843* `is_error` : `True` quand la conversation s'est terminée dans un état d'erreur. Toujours `True` sur les sous-types `error_*`. Sur `subtype="success"` c'est `True` quand la dernière demande de modèle a échoué, ce qui signifie que la boucle d'agent s'est terminée mais le dernier appel API a retourné une erreur.1843* `is_error` : `True` quand la conversation s'est terminée dans un état d'erreur. Toujours `True` sur les sous-types `error_*`. Sur `subtype="success"` c'est `True` quand la dernière requête de modèle a échoué, ce qui signifie que la boucle d'agent s'est terminée mais le dernier appel API a retourné une erreur.

1844* `api_error_status` : le code de statut HTTP de l'erreur API terminale. `None` quand le tour s'est terminé sans une. Rempli uniquement sur `subtype="success"`.1844* `api_error_status` : le code de statut HTTP de l'erreur API terminale. `None` quand le tour s'est terminé sans une. Rempli uniquement sur `subtype="success"`.

1845* `result` : texte du message d'assistant final sur `subtype="success"`, ou `None` sur les sous-types `error_*`. Quand `subtype="success"` et `is_error=True`, ceci contient la chaîne d'erreur API si une est disponible mais peut être vide, donc vérifiez `api_error_status` et le contenu `AssistantMessage` précédent pour plus de détails.1845* `result` : texte du message d'assistant final sur `subtype="success"`, ou `None` sur les sous-types `error_*`. Quand `subtype="success"` et `is_error=True`, ceci contient la chaîne d'erreur API si une est disponible mais peut être vide, donc vérifiez `api_error_status` et le contenu `AssistantMessage` précédent pour plus de détails.

1846* `errors` : chaînes d'erreur au niveau de la boucle telles que le message max-turns. Rempli uniquement sur les sous-types `error_*`.1846* `errors` : chaînes d'erreur au niveau de la boucle telles que le message max-turns. Rempli uniquement sur les sous-types `error_*`.

1847* `terminal_reason` : pourquoi la boucle de requête s'est terminée, telle que `"completed"`, `"max_turns"`, `"api_error"`, `"aborted_streaming"`, ou `"aborted_tools"`. Une valeur de `"aborted_streaming"` ou `"aborted_tools"` signifie que le tour a été interrompu avant de se terminer. Les causes courantes sont [`interrupt()`](#claudesdkclient) et un rappel de permission retournant [`PermissionResultDeny`](#permissionresultdeny) avec `interrupt=True`. `None` sur les versions CLI qui précèdent le champ, sur les résultats des commandes locales telles que `/voice` ou `/usage`, qui contournent la boucle de requête, ou sur les résultats d'erreur synthétisés émis quand la session échoue fatalement. Reflète le [`SDKResultMessage.terminal_reason`](/docs/fr/agent-sdk/typescript#sdkresultmessage) du SDK TypeScript, qui liste l'ensemble complet des valeurs.1847* `terminal_reason` : pourquoi la boucle de requête s'est terminée, telle que `"completed"`, `"max_turns"`, `"api_error"`, `"aborted_streaming"`, ou `"aborted_tools"`. Une valeur de `"aborted_streaming"` ou `"aborted_tools"` signifie que le tour a été interrompu avant de se terminer. Les causes courantes sont [`interrupt()`](#claudesdkclient) et un rappel de permission retournant [`PermissionResultDeny`](#permissionresultdeny) avec `interrupt=True`. `None` sur les versions CLI qui précèdent le champ, sur les résultats des commandes locales telles que `/voice` ou `/usage`, qui contournent la boucle de requête, ou sur les résultats d'erreur synthétisés émis quand la session échoue fatalement. Reflète le [`SDKResultMessage.terminal_reason`](/docs/fr/agent-sdk/typescript#sdkresultmessage) du SDK TypeScript, qui liste l'ensemble complet des valeurs.

1848* `origin` : origine du message utilisateur qui a déclenché ce tour. En [mode d'entrée en streaming](/docs/fr/agent-sdk/streaming-vs-single-mode), vérifiez ceci pour distinguer le résultat de votre propre invite, où `origin` est `None` ou `{"kind": "human"}`, du résultat d'un tour injecté tel qu'une notification de tâche de fond. Nécessite Python Agent SDK 0.2.137 ou ultérieur.1848* `origin` : origine du message utilisateur qui a déclenché ce tour. En [mode d'entrée en streaming](/docs/fr/agent-sdk/streaming-vs-single-mode), vérifiez ceci pour distinguer le résultat de votre propre prompt, où `origin` est `None` ou `{"kind": "human"}`, du résultat d'un tour injecté tel qu'une notification de tâche en arrière-plan. Nécessite Python Agent SDK 0.2.137 ou ultérieur.

1849 1849 

1850Le dict `usage` couvre uniquement la boucle d'agent principal et exclut les sous-agents et autres appels de modèle imbriqués ou auxiliaires. En [mode d'entrée en streaming](/docs/fr/agent-sdk/streaming-vs-single-mode), les valeurs sont par tour. Préférez `model_usage` pour la comptabilité des tokens et des coûts. Le dict `usage` contient les clés suivantes quand présentes :1850Le dict `usage` couvre uniquement la boucle d'agent principal et exclut les sous-agents et autres appels de modèle imbriqués ou auxiliaires. En [mode d'entrée en streaming](/docs/fr/agent-sdk/streaming-vs-single-mode), les valeurs sont par tour. Préférez `model_usage` pour la comptabilité des tokens et des coûts. Le dict `usage` contient les clés suivantes quand présentes :

1851 1851 


1856| `cache_creation_input_tokens` | `int` | Tokens utilisés pour créer de nouvelles entrées de cache. |1856| `cache_creation_input_tokens` | `int` | Tokens utilisés pour créer de nouvelles entrées de cache. |

1857| `cache_read_input_tokens` | `int` | Tokens lus à partir des entrées de cache existantes. |1857| `cache_read_input_tokens` | `int` | Tokens lus à partir des entrées de cache existantes. |

1858 1858 

1859Le dict `model_usage` mappe les noms de modèles à l'utilisation par modèle. Il couvre chaque appel de modèle effectué via le pipeline de requête : la boucle principale, les sous-agents, et les appels internes tels que la compaction et les agents Workflow. Les appels d'assistance en dehors de ce pipeline, tels que le classificateur de permission et les demandes de comptage de tokens, sont exclus de `model_usage`. Traitez `model_usage` comme une estimation, pas une déclaration de facturation.1859Le dict `model_usage` mappe les noms de modèles à l'utilisation par modèle. Il couvre chaque appel de modèle effectué via le pipeline de requête : la boucle principale, les sous-agents, et les appels internes tels que la compaction et les agents Workflow. Les appels d'assistance en dehors de ce pipeline, tels que le classificateur de permission et les requêtes de comptage de tokens, sont exclus de `model_usage`. Traitez `model_usage` comme une estimation, pas une déclaration de facturation.

1860 1860 

1861En [mode d'entrée en streaming](/docs/fr/agent-sdk/streaming-vs-single-mode), `model_usage` et `total_cost_usd` sont cumulatifs entre les tours, donc lisez le dernier résultat plutôt que de faire la somme entre les résultats. Un appel qui reprend une session compte également les [totaux restaurés à partir des appels antérieurs de la session](/docs/fr/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls). Voir [Suivre les coûts en mode d'entrée en streaming](/docs/fr/agent-sdk/cost-tracking#track-costs-in-streaming-input-mode) pour les réinitialisations et [Récupérer les totaux après un crash de session](/docs/fr/agent-sdk/cost-tracking#recover-totals-after-a-session-crash) pour les résultats remis à zéro.1861En [mode d'entrée en streaming](/docs/fr/agent-sdk/streaming-vs-single-mode), `model_usage` et `total_cost_usd` sont cumulatifs entre les tours, donc lisez le dernier résultat plutôt que de faire la somme entre les résultats. Un appel qui reprend une session compte également les [totaux restaurés à partir des appels antérieurs de la session](/docs/fr/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls). Voir [Suivre les coûts en mode d'entrée en streaming](/docs/fr/agent-sdk/cost-tracking#track-costs-in-streaming-input-mode) pour les réinitialisations et [Récupérer les totaux après un crash de session](/docs/fr/agent-sdk/cost-tracking#recover-totals-after-a-session-crash) pour les résultats remis à zéro.

1862 1862 


1875| `maxOutputTokens` | `int` | Limite de tokens de sortie maximum pour ce modèle. |1875| `maxOutputTokens` | `int` | Limite de tokens de sortie maximum pour ce modèle. |

1876| `canonicalModel` | `str` | ID de modèle canonique utilisé pour la recherche de tarification. Peut différer de la chaîne de modèle brute par laquelle l'entrée est indexée, telle qu'un ID spécifique au fournisseur ou un alias. Pas toujours présent. |1876| `canonicalModel` | `str` | ID de modèle canonique utilisé pour la recherche de tarification. Peut différer de la chaîne de modèle brute par laquelle l'entrée est indexée, telle qu'un ID spécifique au fournisseur ou un alias. Pas toujours présent. |

1877| `provider` | `str` | Fournisseur d'API qui a servi ce modèle, tel que `firstParty`, `bedrock`, `vertex`, `foundry`, `anthropicAws`, `mantle`, ou `gateway`. Pas toujours présent. |1877| `provider` | `str` | Fournisseur d'API qui a servi ce modèle, tel que `firstParty`, `bedrock`, `vertex`, `foundry`, `anthropicAws`, `mantle`, ou `gateway`. Pas toujours présent. |

1878| `costBasis` | `str` | Grille tarifaire qui a déterminé le prix de la dernière requête de ce modèle : `list` pour le prix catalogue, `managed` pour une table [`modelPricing`](/docs/fr/settings-reference#modelpricing), ou `unknown` quand aucune ne correspondait à l'ID du modèle. Pas toujours présent, et non déclaré sur le TypedDict, donc lisez-le avec `.get()`. Nécessite Claude Code v2.1.246 ou ultérieur. |

1878 1879 

1879<h3 id="streamevent">1880<h3 id="streamevent">

1880 `StreamEvent`1881 `StreamEvent`


1945 1946 

1946| Champ | Type | Description |1947| Champ | Type | Description |

1947| :- | :- | :- |1948| :- | :- | :- |

1948| `status` | `RateLimitStatus` | Statut actuel. `"allowed_warning"` signifie approcher la limite ; `"rejected"` signifie que la limite a été atteinte |1949| `status` | `RateLimitStatus` | Statut actuel, l'un de `"allowed"`, `"allowed_warning"`, ou `"rejected"`. `"allowed_warning"` signifie approcher la limite ; `"rejected"` signifie que la limite a été atteinte |

1949| `resets_at` | `int \| None` | Timestamp Unix quand la fenêtre de limite de débit se réinitialise |1950| `resets_at` | `int \| None` | Timestamp Unix quand la fenêtre de limite de débit se réinitialise |

1950| `rate_limit_type` | `RateLimitType \| None` | Quelle fenêtre de limite de débit s'applique |1951| `rate_limit_type` | `RateLimitType \| None` | Quelle fenêtre de limite de débit s'applique |

1951| `utilization` | `float \| None` | Fraction de la limite de débit consommée (0,0 à 1,0) |1952| `utilization` | `float \| None` | Fraction de la limite de débit consommée (0,0 à 1,0) |


1978 `TaskStartedMessage`1979 `TaskStartedMessage`

1979</h3>1980</h3>

1980 1981 

1981Émis quand une tâche de fond démarre. Une tâche de fond est tout ce qui est suivi en dehors du tour principal : une commande Bash en arrière-plan, une montre [Monitor](#monitor), un sous-agent généré via l'outil Agent, ou un agent distant. Le champ `task_type` vous dit lequel. Ce nommage n'est pas lié au renommage de l'outil `Task`-à-`Agent`.1982Émis quand une tâche en arrière-plan démarre. Une tâche en arrière-plan est tout ce qui est suivi en dehors du tour principal : une commande Bash en arrière-plan, une surveillance [Monitor](#monitor), un sous-agent généré via l'outil Agent, ou un agent distant. Le champ `task_type` vous dit lequel. Ce nommage n'est pas lié au renommage de l'outil `Task`-à-`Agent`.

1982 1983 

1983```python theme={null}1984```python theme={null}

1984@dataclass1985@dataclass


1998| `uuid` | `str` | Identifiant de message unique |1999| `uuid` | `str` | Identifiant de message unique |

1999| `session_id` | `str` | Identifiant de session |2000| `session_id` | `str` | Identifiant de session |

2000| `tool_use_id` | `str \| None` | ID d'utilisation d'outil associé |2001| `tool_use_id` | `str \| None` | ID d'utilisation d'outil associé |

2001| `task_type` | `str \| None` | Quel type de tâche de fond : `"local_bash"` pour Bash en arrière-plan et les montres Monitor, `"local_agent"`, ou `"remote_agent"` |2002| `task_type` | `str \| None` | Quel type de tâche en arrière-plan : `"local_bash"` pour Bash en arrière-plan et les surveillances Monitor, `"local_agent"`, ou `"remote_agent"` |

2002 2003 

2003<h3 id="taskusage">2004<h3 id="taskusage">

2004 `TaskUsage`2005 `TaskUsage`

2005</h3>2006</h3>

2006 2007 

2007Données de tokens et de timing pour une tâche de fond.2008Données de tokens et de timing pour une tâche en arrière-plan.

2008 2009 

2009```python theme={null}2010```python theme={null}

2010class TaskUsage(TypedDict):2011class TaskUsage(TypedDict):


2017 `TaskProgressMessage`2018 `TaskProgressMessage`

2018</h3>2019</h3>

2019 2020 

2020Émis périodiquement avec les mises à jour de progression pour une tâche de fond en cours d'exécution.2021Émis périodiquement avec les mises à jour de progression pour une tâche en arrière-plan en cours d'exécution.

2021 2022 

2022```python theme={null}2023```python theme={null}

2023@dataclass2024@dataclass


2045 `TaskNotificationMessage`2046 `TaskNotificationMessage`

2046</h3>2047</h3>

2047 2048 

2048Émis quand une tâche de fond se termine, échoue, ou est arrêtée. Les tâches de fond incluent les commandes Bash `run_in_background`, les montres Monitor, et les sous-agents en arrière-plan.2049Émis quand 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, et les sous-agents en arrière-plan.

2049 2050 

2050```python theme={null}2051```python theme={null}

2051@dataclass2052@dataclass


2166 """Base error for Claude SDK."""2167 """Base error for Claude SDK."""

2167```2168```

2168 2169 

2169Quand une requête `query()` unique se termine par un résultat d'erreur, par exemple une erreur de limite de tours, le SDK lève une [`ResultError`](#resulterror) après avoir cédé le message de résultat final. Les versions du Python Agent SDK antérieures à 0.2.140 levaient une `Exception` simple qui n'était pas une sous-classe de `ClaudeSDKError`.2170Quand une requête `query()` unique se termine par un résultat d'erreur, par exemple une erreur de limite de tours, le SDK lève une [`ResultError`](#resulterror).

2170 2171 

2171<h3 id="clinotfounderror">2172<h3 id="clinotfounderror">

2172 `CLINotFoundError`2173 `CLINotFoundError`


2216 `ResultError`2217 `ResultError`

2217</h3>2218</h3>

2218 2219 

2219Levée après le [`ResultMessage`](#resultmessage) final quand le processus Claude Code se termine parce que l'exécution s'est terminée par un résultat d'erreur, comme une erreur de limite de tours ou une erreur API. `ResultError` est une sous-classe de `ProcessError`, donc un gestionnaire `except ProcessError` existant la capture également. Ses attributs portent les champs de ce message de résultat, vous pouvez donc vous brancher sur la raison de l'échec de l'exécution sans analyser le texte du message. Nécessite Python Agent SDK 0.2.140 ou version ultérieure.2220Levée quand le processus Claude Code se termine parce que l'exécution s'est terminée par un [message de résultat](#resultmessage) d'erreur, comme une erreur de limite de tours ou une erreur API. `ResultError` est une sous-classe de `ProcessError`, donc un gestionnaire `except ProcessError` existant la capture également. Ses attributs portent les champs de ce message de résultat, vous pouvez donc adapter votre logique selon la raison de l'échec de l'exécution sans analyser le texte du message. Nécessite Python Agent SDK 0.2.140 ou version ultérieure.

2220 2221 

2221```python theme={null}2222```python theme={null}

2222class ResultError(ProcessError):2223class ResultError(ProcessError):


2649 hookEventName: Literal["PostToolUse"]2650 hookEventName: Literal["PostToolUse"]

2650 additionalContext: NotRequired[str]2651 additionalContext: NotRequired[str]

2651 updatedToolOutput: NotRequired[Any]2652 updatedToolOutput: NotRequired[Any]

2652 updatedMCPToolOutput: NotRequired[Any] # Deprecated: use updatedToolOutput, which works for all tools2653 updatedMCPToolOutput: NotRequired[Any] # MCP tools only. Prefer updatedToolOutput, which works for all tools

2653 2654 

2654 2655 

2655class PostToolUseFailureHookSpecificOutput(TypedDict):2656class PostToolUseFailureHookSpecificOutput(TypedDict):


2708 Exemple d'utilisation de hook2709 Exemple d'utilisation de hook

2709</h3>2710</h3>

2710 2711 

2711Cet exemple enregistre deux hooks : l'un qui bloque les commandes bash dangereuses comme `rm -rf /`, et un autre qui enregistre toute l'utilisation d'outils pour l'audit. Le hook de sécurité s'exécute uniquement sur les commandes Bash (via le `matcher`), tandis que le hook de journalisation s'exécute sur tous les outils.2712Cet exemple enregistre deux hooks : l'un qui bloque les commandes Bash dangereuses comme `rm -rf /`, et un autre qui journalise toute l'utilisation d'outils pour l'audit. Le hook de sécurité s'exécute uniquement sur les commandes Bash (via le `matcher`), tandis que le hook de journalisation s'exécute sur tous les outils.

2712 2713 

2713```python theme={null}2714```python theme={null}

2714import asyncio2715import asyncio


2767 Types d'entrée/sortie d'outil2768 Types d'entrée/sortie d'outil

2768</h2>2769</h2>

2769 2770 

2770Documentation des schémas d'entrée/sortie pour tous les outils Claude Code intégrés. Bien que le SDK Python n'exporte pas ceux-ci en tant que types, ils représentent la structure des entrées et sorties d'outils dans les messages.2771Documentation des schémas d'entrée/sortie pour les outils Claude Code intégrés. Bien que le SDK Python n'exporte pas ceux-ci en tant que types, ils représentent la structure des entrées et sorties d'outils dans les messages.

2771 2772 

2772Chaque sortie affichée est la valeur que vous lisez à partir de [`UserMessage.tool_use_result`](#usermessage) pour cet outil. Les noms de clés apparaissent exactement comme Claude Code les émet. Une clé annotée `| None` avec un commentaire « présent quand » ou « optionnel » est omise quand elle ne s'applique pas.2773Chaque sortie affichée est la valeur que vous lisez à partir de [`UserMessage.tool_use_result`](#usermessage) pour cet outil. Les noms de clés apparaissent exactement comme Claude Code les émet. Une clé annotée `| None` avec un commentaire « présent quand » ou « optionnel » est omise quand elle ne s'applique pas.

2773 2774 


3544 TaskOutput3545 TaskOutput

3545</h3>3546</h3>

3546 3547 

3547Supprimé dans Claude Code v2.1.277. Précédemment récupéré la sortie d'une tâche de fond en cours d'exécution ou terminée, avec `BashOutput` accepté comme alias ; Claude lit le fichier de sortie d'une tâche de fond avec `Read` à la place.3548Supprimé dans Claude Code v2.1.277. Récupérait auparavant la sortie d'une tâche en arrière-plan en cours d'exécution ou terminée, avec `BashOutput` accepté comme alias ; Claude lit le fichier de sortie d'une tâche en arrière-plan avec `Read` à la place.

3548 3549 

3549Une entrée `disallowed_tools` ou une règle de refus qui nomme toujours l'un ou l'autre nom est ignorée sans avertissement.3550Une entrée `disallowed_tools` ou une règle de refus qui nomme toujours l'un ou l'autre nom est ignorée sans avertissement.

3550 3551 

Details

60 60 

61Pour utiliser les sorties structurées, définissez un [JSON Schema](https://json-schema.org/understanding-json-schema/about) décrivant la forme des données que vous souhaitez, puis passez-le à `query()` via l'option `outputFormat` (TypeScript) ou `output_format` (Python). Quand l'agent termine, le message de résultat inclut un champ `structured_output` avec des données validées correspondant à votre schéma.61Pour utiliser les sorties structurées, définissez un [JSON Schema](https://json-schema.org/understanding-json-schema/about) décrivant la forme des données que vous souhaitez, puis passez-le à `query()` via l'option `outputFormat` (TypeScript) ou `output_format` (Python). Quand l'agent termine, le message de résultat inclut un champ `structured_output` avec des données validées correspondant à votre schéma.

62 62 

63L'exemple ci-dessous demande à l'agent de rechercher Anthropic et de retourner le nom de l'entreprise, l'année de fondation et le siège social en tant que sortie structurée.63Avant d'exécuter les exemples de cette page, installez le Claude Agent SDK en suivant le [démarrage rapide](/docs/fr/agent-sdk/quickstart#setup). L'exemple ci-dessous demande à l'agent de rechercher Anthropic et de retourner le nom de l'entreprise, l'année de fondation et le siège social en tant que sortie structurée.

64 64 

65<CodeGroup>65<CodeGroup>

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


390 Gestion des erreurs390 Gestion des erreurs

391</h2>391</h2>

392 392 

393La génération de sortie structurée peut échouer quand l'agent ne peut pas produire du JSON valide correspondant à votre schéma. Cela se produit généralement quand le schéma est trop complexe pour la tâche, la tâche elle-même est ambiguë, ou l'agent atteint sa limite de tentatives en essayant de corriger les erreurs de validation. Cela peut aussi se produire sans aucune erreur de validation : un [repli de modèle](/docs/fr/model-config#automatic-model-fallback) peut rétracter une sortie déjà complétée en cours de flux, et si aucune nouvelle tentative ne la remplace, l'exécution se termine avec la même erreur. Vérifiez la liste `errors` du message de résultat pour distinguer les deux causes avant de déboguer votre schéma.393La génération de sortie structurée peut échouer quand l'agent ne peut pas produire du JSON valide correspondant à votre schéma. Cela se produit généralement quand le schéma est trop complexe pour la tâche, la tâche elle-même est ambiguë, ou l'agent atteint sa limite de tentatives en essayant de corriger les erreurs de validation. Cela peut aussi se produire sans aucune erreur de validation : un [basculement vers un modèle de secours](/docs/fr/model-config#automatic-model-fallback) peut rétracter une sortie déjà complétée en cours de flux, et si aucune nouvelle tentative ne la remplace, l'exécution se termine avec la même erreur. Vérifiez la liste `errors` du message de résultat d'erreur pour distinguer les deux causes avant de déboguer votre schéma.

394 394 

395Quand une erreur se produit, le message de résultat a un `subtype` indiquant ce qui s'est mal passé :395Quand une erreur se produit, le message de résultat a un `subtype` indiquant ce qui s'est mal passé :

396 396 

397| Subtype | Signification |397| Subtype | Signification |

398| - | - |398| - | - |

399| `success` | La sortie a été générée et validée avec succès |399| `success` | La sortie a été générée et validée avec succès |

400| `error_max_structured_output_retries` | Aucune sortie valide n'a survécu après plusieurs tentatives (erreurs de validation, ou une rétraction de repli de modèle sans nouvelle tentative réussie) |400| `error_max_structured_output_retries` | Aucune sortie valide ne subsistait après plusieurs tentatives (erreurs de validation, ou une rétraction due au basculement vers un modèle de secours sans nouvelle tentative réussie) |

401 401 

402Un résultat peut aussi se terminer avec le subtype `success` mais sans valeur `structured_output`, par exemple quand l'exécution se termine sans que l'agent produise une sortie structurée. Traitez ce cas comme un échec aussi. L'entrée de dépannage [structured\_output is None but the result says success](/docs/fr/agent-sdk/troubleshooting#structured_output-is-none-but-the-result-says-success) couvre ce cas. L'exemple ci-dessous traite un résultat comme réussi uniquement quand le `subtype` est `success` et `structured_output` est présent, et gère tous les autres résultats comme un échec :402Un résultat peut aussi se terminer avec le subtype `success` mais sans valeur `structured_output`, par exemple quand l'exécution se termine sans que l'agent produise une sortie structurée. Traitez ce cas comme un échec aussi. L'entrée de dépannage [structured\_output is None but the result says success](/docs/fr/agent-sdk/troubleshooting#structured_output-is-none-but-the-result-says-success) couvre ce cas. L'exemple ci-dessous traite un résultat comme réussi uniquement quand le `subtype` est `success` et `structured_output` est présent, et gère tous les autres résultats comme un échec :

403 403 


436 }436 }

437 }437 }

438 } catch (error) {438 } catch (error) {

439 // Une requête query() unique lève une exception après avoir produit un message d'erreur. Si439 // Une requête query() unique lève une exception après avoir produit un résultat d'erreur. Si

440 // l'échec était un message d'erreur, les branches de subtype d'erreur ci-dessus ont440 // l'échec était un résultat d'erreur, les branches de subtype d'erreur ci-dessus ont

441 // déjà été exécutées ; les défaillances de connexion ou de processus ne produisent aucun message de résultat.441 // déjà été exécutées ; les défaillances de connexion ou de processus ne produisent aucun message de résultat.

442 console.log(`Session ended with an error: ${error}`);442 console.log(`Session ended with an error: ${error}`);

443 }443 }


474 else:474 else:

475 print("Run ended without a structured output")475 print("Run ended without a structured output")

476 except Exception as error:476 except Exception as error:

477 # Une requête query() unique lève une exception après avoir produit un message d'erreur. Si477 # Une requête query() unique lève une exception après avoir produit un résultat d'erreur. Si

478 # l'échec était un message d'erreur, les branches de subtype d'erreur ci-dessus ont478 # l'échec était un résultat d'erreur, les branches de subtype d'erreur ci-dessus ont

479 # déjà été exécutées ; les défaillances de connexion ou de processus ne produisent aucun message de résultat.479 # déjà été exécutées ; les défaillances de connexion ou de processus ne produisent aucun message de résultat.

480 print(f"Session ended with an error: {error}")480 print(f"Session ended with an error: {error}")

481 481 


488 488 

489* **Gardez les schémas ciblés.** Les schémas profondément imbriqués avec de nombreux champs requis sont plus difficiles à satisfaire. Commencez simple et ajoutez de la complexité au besoin.489* **Gardez les schémas ciblés.** Les schémas profondément imbriqués avec de nombreux champs requis sont plus difficiles à satisfaire. Commencez simple et ajoutez de la complexité au besoin.

490* **Faites correspondre le schéma à la tâche.** Si la tâche pourrait ne pas avoir toutes les informations que votre schéma nécessite, rendez ces champs optionnels.490* **Faites correspondre le schéma à la tâche.** Si la tâche pourrait ne pas avoir toutes les informations que votre schéma nécessite, rendez ces champs optionnels.

491* **Utilisez des invites claires.** Les invites ambiguës rendent plus difficile pour l'agent de savoir quelle sortie produire.491* **Utilisez des prompts clairs.** Les prompts ambigus rendent plus difficile pour l'agent de savoir quelle sortie produire.

492 492 

493<h2 id="related-resources">493<h2 id="related-resources">

494 Ressources connexes494 Ressources connexes

Details

181});181});

182 182 

183spare.claimed.catch((error: Error) => {183spare.claimed.catch((error: Error) => {

184 // À moins que le message commence par « option_not_applied », l'invite n'a pas été exécutée :184 // À moins que le message commence par « option_not_applied », le prompt n'a pas été exécuté :

185 // démarrez cette session avec query() à la place185 // démarrez cette session avec query() à la place

186 console.error("Claim failed:", error.message);186 console.error("Claim failed:", error.message);

187});187});

188 188 

189for await (const message of claimedQuery) {189try {

190 for await (const message of claimedQuery) {

190 console.log(message);191 console.log(message);

192 }

193} catch (error) {

194 // Après une réclamation refusée, la requête réclamée lève une exception une fois qu'elle a produit le résultat d'erreur

195 console.error(`Session ended with an error: ${error}`);

191}196}

192```197```

193 198 


717| `accountInfo()` | Renvoie les informations du compte |722| `accountInfo()` | Renvoie les informations du compte |

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

719| `toggleMcpServer(serverName, enabled)` | Activer ou désactiver un serveur MCP par son nom, avec la même résolution de nom que `reconnectMcpServer()`. La désactivation d'un serveur le déconnecte et retire ses outils. Consultez [`toggleMcpServer()`](#togglemcpserver) pour connaître la version de Claude Code requise pour chaque type de serveur |724| `toggleMcpServer(serverName, enabled)` | Activer ou désactiver un serveur MCP par son nom, avec la même résolution de nom que `reconnectMcpServer()`. La désactivation d'un serveur le déconnecte et retire ses outils. Consultez [`toggleMcpServer()`](#togglemcpserver) pour connaître la version de Claude Code requise pour chaque type de serveur |

720| `setMcpServers(servers)` | Remplacer dynamiquement l'ensemble des serveurs MCP de cette session. Se résout avec un [`McpSetServersResult`](#mcpsetserversresult) indiquant quels serveurs ont été ajoutés et retirés, ainsi que les éventuelles erreurs |725| `setMcpServers(servers)` | Remplacer les serveurs MCP gérés par cette méthode : les serveurs ajoutés par son intermédiaire et les [serveurs SDK in-process](#createsdkmcpserver). Se résout avec un [`McpSetServersResult`](#mcpsetserversresult) indiquant les serveurs ajoutés et retirés, ainsi que les éventuelles erreurs ; cette section précise quels autres serveurs restent connectés |

721| `readMcpResource(serverName, uri)` | *Alpha.* Lit une ressource MCP Apps `ui://` depuis un serveur MCP connecté afin que votre application puisse afficher le widget d'un outil. Se résout avec un [`SDKControlMcpReadResourceResponse`](#sdkcontrolmcpreadresourceresponse). Nécessite l'Agent SDK TypeScript v0.3.280 ou ultérieure |726| `readMcpResource(serverName, uri)` | *Alpha.* Lit une ressource MCP Apps `ui://` depuis un serveur MCP connecté afin que votre application puisse afficher le widget d'un outil. Se résout avec un [`SDKControlMcpReadResourceResponse`](#sdkcontrolmcpreadresourceresponse). Nécessite l'Agent SDK TypeScript v0.3.280 ou ultérieure |

722| `streamInput(stream)` | Envoyer en flux des messages d'entrée à la requête pour les conversations multi-tours |727| `streamInput(stream)` | Envoyer en flux des messages d'entrée à la requête pour les conversations multi-tours |

723| `stopTask(taskId)` | Arrêter une tâche en arrière-plan en cours d'exécution par son identifiant |728| `stopTask(taskId)` | Arrêter une tâche en arrière-plan en cours d'exécution par son identifiant |


844 849 

845`options.cwd` est obligatoire. Une réclamation peut également définir `additionalDirectories`, `model`, `permissionMode`, `maxThinkingTokens`, une surcouche de paramètres de flags dans `settings`, `appendSystemPrompt`, `title`, `agents` et des jetons propres à la session dans `env`.850`options.cwd` est obligatoire. Une réclamation peut également définir `additionalDirectories`, `model`, `permissionMode`, `maxThinkingTokens`, une surcouche de paramètres de flags dans `settings`, `appendSystemPrompt`, `title`, `agents` et des jetons propres à la session dans `env`.

846 851 

847Claude Code peut refuser une réclamation, par exemple pour un dossier qui n'existe pas ou dont les paramètres de projet définissent `env`, `agent` ou `model`. Lorsque `claimed` est rejetée avec un message commençant par `option_not_applied`, la session s'exécute sans le `model` ou le `maxThinkingTokens` que vous avez demandé. Après tout autre rejet, votre prompt n'a pas été exécuté ; démarrez donc plutôt la session avec `query()`.852Claude Code peut refuser une réclamation, par exemple pour un dossier qui n'existe pas ou dont les paramètres de projet définissent `env`, `agent` ou `model`. Après un refus, un prompt que `claim()` a déjà envoyé reçoit un résultat d'erreur dont le texte commence par `not_claimed`, puis la requête renvoyée lève une exception. Encapsulez la boucle de la requête dans un bloc try pour continuer au-delà de l'exception. Lorsque `claimed` est rejetée avec un message commençant par `option_not_applied`, la session s'exécute sans le `model` ou le `maxThinkingTokens` que vous avez demandé. Après tout autre rejet, votre prompt n'a pas été exécuté ; démarrez donc plutôt la session avec `query()`.

848 853 

849<h3 id="sdkcontrolinitializeresponse">854<h3 id="sdkcontrolinitializeresponse">

850 `SDKControlInitializeResponse`855 `SDKControlInitializeResponse`


1337| `mcpServer` | `{ name: string; source: string }` | Pour un outil `mcp__*`, le serveur MCP qui le fournit et l'origine de la définition de ce serveur, avec les champs de [`McpServerProvenance`](#mcpserverprovenance). Absent pour les autres outils. Nécessite Agent SDK v0.3.274 ou ultérieur |1342| `mcpServer` | `{ name: string; source: string }` | Pour un outil `mcp__*`, le serveur MCP qui le fournit et l'origine de la définition de ce serveur, avec les champs de [`McpServerProvenance`](#mcpserverprovenance). Absent pour les autres outils. Nécessite Agent SDK v0.3.274 ou ultérieur |

1338| `decisionReason` | `string` | Explique pourquoi cette demande de permission a été déclenchée |1343| `decisionReason` | `string` | Explique pourquoi cette demande de permission a été déclenchée |

1339| `defaultToNo` | `boolean` | Lorsque `true`, une seule frappe accidentelle ne doit pas approuver cette demande : ouvrez votre demande sur son option de refus, ne présélectionnez pas l'approbation et ne proposez aucun raccourci d'approbation à une touche. Nécessite Agent SDK v0.3.268 ou ultérieur |1344| `defaultToNo` | `boolean` | Lorsque `true`, une seule frappe accidentelle ne doit pas approuver cette demande : ouvrez votre demande sur son option de refus, ne présélectionnez pas l'approbation et ne proposez aucun raccourci d'approbation à une touche. Nécessite Agent SDK v0.3.268 ou ultérieur |

1340| `suppressAlwaysAllowRule` | `boolean` | Lorsque `true`, ne proposez pas de choix persistant « toujours autoriser » pour cette demande, car la règle qu'il écrirait accorderait davantage que l'action propre à la demande. Nécessite Agent SDK v0.3.268 ou ultérieur |1345| `suppressAlwaysAllowRule` | `boolean` | Lorsque `true`, ne proposez pas de choix « toujours autoriser » persistant pour cette demande. Nécessite Agent SDK v0.3.268 ou une version ultérieure |

1341| `toolUseID` | `string` | Identifiant unique de cet appel d'outil spécifique dans le message de l'assistant |1346| `toolUseID` | `string` | Identifiant unique de cet appel d'outil spécifique dans le message de l'assistant |

1342| `agentID` | `string` | Si l'exécution a lieu dans un sous-agent, l'ID du sous-agent |1347| `agentID` | `string` | Si l'exécution a lieu dans un sous-agent, l'ID du sous-agent |

1343| `requestId` | `string` | Le `request_id` de l'enveloppe `control_request`. Une `control_response` que votre application envoie en dehors du SDK, comme un HTTP POST signé, doit renvoyer cette valeur afin que le processus Claude Code puisse associer la réponse à la requête |1348| `requestId` | `string` | Le `request_id` de l'enveloppe `control_request`. Une `control_response` que votre application envoie en dehors du SDK, comme un HTTP POST signé, doit renvoyer cette valeur afin que le processus Claude Code puisse associer la réponse à la requête |


5461 | { type: "disabled" }; // No extended thinking5466 | { type: "disabled" }; // No extended thinking

5462```5467```

5463 5468 

5464Le champ optionnel `display` contrôle 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"`, donc définissez `"summarized"` pour recevoir le contenu de réflexion dans les blocs `thinking`. Claude Code n'envoie pas `display` à Amazon Bedrock ou à la plateforme Agent de Google Cloud, donc sur ces fournisseurs Opus 4.7 et versions ultérieures renvoient des blocs `thinking` vides même lorsque vous définissez `display` sur `"summarized"`.5469Le champ optionnel `display` contrôle 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"`, donc définissez `"summarized"` pour recevoir le contenu de réflexion dans les blocs `thinking`. Claude Code omet `display` dans les requêtes envoyées à certains fournisseurs, tels qu'Amazon Bedrock et la plateforme Agent 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"`.

5465 5470 

5466<h3 id="spawnedprocess">5471<h3 id="spawnedprocess">

5467 `SpawnedProcess`5472 `SpawnedProcess`


5532 5537 

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

5534 5539 

5535* **Serveurs que l'appel ne nomme pas** : Claude Code maintient les serveurs fournis par plugin en cours d'exécution. Nécessite Agent SDK v0.3.210 ou version ultérieure.5540* **Serveurs que l'appel ne nomme pas** : en dehors d'une [session cloud](/docs/fr/claude-code-on-the-web), Claude Code déconnecte les serveurs qu'un appel `setMcpServers()` antérieur a ajoutés ainsi que les serveurs SDK en processus, et les liste dans `removed`. Les autres serveurs continuent de s'exécuter et ne sont pas listés dans `removed`, parmi lesquels les serveurs stdio, HTTP et SSE de l'option [`mcpServers`](#options), les serveurs des fichiers de paramètres et les serveurs fournis par plugin.

5536* **Serveurs que l'appel nomme** : à l'exception des serveurs intégrés que l'interface de ligne de commande a démarrés au démarrage, Claude Code remplace un serveur en cours d'exécution uniquement lorsque sa configuration diffère de celle que vous avez transmise.5541* **Serveurs que l'appel nomme** : Claude Code remplace un serveur stdio, HTTP ou SSE qu'un appel `setMcpServers()` antérieur a ajouté uniquement lorsque sa configuration diffère de celle que vous avez transmise. Un serveur SDK en processus déjà enregistré sous ce nom reste tel quel ; pour en remplacer un, omettez-le d'un appel et ajoutez-le dans le suivant.

5537* **Serveurs intégrés que l'interface de ligne de commande a démarrés au démarrage** : si l'appel en nomme un, Claude Code supprime cette entrée et la signale dans `errors`.5542* **Serveurs intégrés que l'interface de ligne de commande a démarrés au démarrage** : si l'appel en nomme un, Claude Code supprime cette entrée et la signale dans `errors`.

5538 5543 

5539La promesse se résout après que les serveurs stdio, HTTP et SSE nouvellement ajoutés se connectent ou échouent, donc les outils des serveurs qui se sont connectés sont disponibles au tour suivant.5544La promesse se résout après que les serveurs stdio, HTTP et SSE nouvellement ajoutés se connectent ou échouent, donc les outils des serveurs qui se sont connectés sont disponibles au tour suivant.

agent-view.md +1 −0

Details

819| `claude rm <id> --discard-unpushed <commit>@<worktree-id>` | Supprimer une session dont la suppression a été refusée en raison de commits non poussés, en supprimant la worktree ainsi que sa branche et ses commits. Passez la valeur exacte que le refus a affichée ; voir [Ce que la suppression d'une session supprime](#what-deleting-a-session-removes). Nécessite v2.1.260 ou ultérieur |819| `claude rm <id> --discard-unpushed <commit>@<worktree-id>` | Supprimer une session dont la suppression a été refusée en raison de commits non poussés, en supprimant la worktree ainsi que sa branche et ses commits. Passez la valeur exacte que le refus a affichée ; voir [Ce que la suppression d'une session supprime](#what-deleting-a-session-removes). Nécessite v2.1.260 ou ultérieur |

820| `claude rm <id> --force-remove-worktree <worktree-id>` | Supprimer une session dont la suppression a été refusée parce que git ou le hook `WorktreeRemove` n'a pas pu supprimer sa worktree, en supprimant le répertoire worktree de toute façon et en laissant sa branche dans le dépôt. Passez la valeur exacte que le refus a affichée ; voir [Ce que la suppression d'une session supprime](#what-deleting-a-session-removes). Nécessite v2.1.268 ou ultérieur |820| `claude rm <id> --force-remove-worktree <worktree-id>` | Supprimer une session dont la suppression a été refusée parce que git ou le hook `WorktreeRemove` n'a pas pu supprimer sa worktree, en supprimant le répertoire worktree de toute façon et en laissant sa branche dans le dépôt. Passez la valeur exacte que le refus a affichée ; voir [Ce que la suppression d'une session supprime](#what-deleting-a-session-removes). Nécessite v2.1.268 ou ultérieur |

821| `claude daemon status` | Afficher l'état du [superviseur](#the-supervisor-process), la version, le répertoire socket et le nombre de workers |821| `claude daemon status` | Afficher l'état du [superviseur](#the-supervisor-process), la version, le répertoire socket et le nombre de workers |

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

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

823 824 

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

agents.md +1 −1

Details

20 20 

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

22 22 

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

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

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

26 26 

Details

681 681 

682Amazon Bedrock diffuse les réponses `InvokeModelWithResponseStream` dans un format d'événement binaire event-stream avec l'en-tête `Content-Type: application/vnd.amazon.eventstream`. Une passerelle ou un proxy entre Claude Code et Amazon Bedrock doit transmettre le corps de la réponse et ses en-têtes, y compris `Content-Type`, tels qu'Amazon Bedrock les a envoyés.682Amazon Bedrock diffuse les réponses `InvokeModelWithResponseStream` dans un format d'événement binaire event-stream avec l'en-tête `Content-Type: application/vnd.amazon.eventstream`. Une passerelle ou un proxy entre Claude Code et Amazon Bedrock doit transmettre le corps de la réponse et ses en-têtes, y compris `Content-Type`, tels qu'Amazon Bedrock les a envoyés.

683 683 

684Si la passerelle réécrit `Content-Type` en une autre valeur, Claude Code rejette la réponse avec une erreur qui commence par `Bedrock streaming response has content-type`, en nommant la valeur qu'il a reçue. La réécriture courante est `text/event-stream`, provenant d'une intégration qui réemet le flux sous forme d'événements envoyés par le serveur.684Si la passerelle réécrit `Content-Type` en une autre valeur, Claude Code rejette la réponse avec une erreur qui commence par `Bedrock streaming response has content-type`, en nommant la valeur qu'il a reçue. La réécriture courante est `text/event-stream`, provenant d'une intégration qui réémet le flux sous forme d'événements envoyés par le serveur. Pour la variable `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD` que nomme le message d'erreur, consultez [Bedrock streaming response has an unexpected content-type](/docs/fr/errors#bedrock-streaming-response-has-an-unexpected-content-type).

685 685 

686Si la passerelle supprime ou efface l'en-tête à la place, Claude Code suppose que le corps est le flux d'événements d'Amazon Bedrock et le décode, donc un corps que la passerelle a transmis sans modification continue à diffuser.686Si la passerelle supprime ou efface l'en-tête à la place, Claude Code suppose que le corps est le flux d'événements d'Amazon Bedrock et le décode, donc un corps que la passerelle a transmis sans modification continue à diffuser.

687 687 

Details

351}351}

352```352```

353 353 

354Obtenez des commentaires d'IA sur vos règles personnalisées `allow`, `soft_deny` et `hard_deny` :354Obtenez des commentaires d'IA sur vos entrées personnalisées `allow`, `soft_deny`, `hard_deny` et `environment` :

355 355 

356```bash theme={null}356```bash theme={null}

357claude auto-mode critique357claude auto-mode critique

chrome.md +1 −1

Details

343 343 

344| Erreur | Cause | Solution |344| Erreur | Cause | Solution |

345| - | - | - |345| - | - | - |

346| « Browser extension is not connected » | L'hôte de messagerie native ne peut pas atteindre l'extension, ou la liste d'adresses IP autorisées de votre organisation rejette la connexion à `bridge.claudeusercontent.com` | Redémarrez Chrome et Claude Code, puis exécutez `/chrome` pour reconnecter. Si votre organisation utilise une liste d'adresses IP autorisées et que l'erreur persiste, consultez [Listes d'adresses IP autorisées et sortie proxy de l'organisation](/docs/fr/network-config#organization-ip-allowlists-and-proxy-egress) |346| « Browser extension is not connected » | L'hôte de messagerie native ne peut pas atteindre l'extension, ou la liste d'adresses IP autorisées de votre organisation rejette la connexion à `bridge.claudeusercontent.com` | Vérifiez que l'extension est connectée au même compte claude.ai que Claude Code, redémarrez Chrome et Claude Code, puis exécutez `/chrome` pour reconnecter. Si votre organisation utilise une liste d'adresses IP autorisées et que l'erreur persiste, consultez [Listes d'adresses IP autorisées et sortie proxy de l'organisation](/docs/fr/network-config#organization-ip-allowlists-and-proxy-egress) |

347| Extension shows "Not detected" in `/chrome` | L'extension Chrome n'est pas installée ou est désactivée | Installez ou activez l'extension dans `chrome://extensions` |347| Extension shows "Not detected" in `/chrome` | L'extension Chrome n'est pas installée ou est désactivée | Installez ou activez l'extension dans `chrome://extensions` |

348| « No tab available » | Claude a tenté d'agir avant qu'un onglet soit prêt | Demandez à Claude de créer un nouvel onglet et réessayez |348| « No tab available » | Claude a tenté d'agir avant qu'un onglet soit prêt | Demandez à Claude de créer un nouvel onglet et réessayez |

349| « Receiving end does not exist » | Le service worker de l'extension est devenu inactif | Exécutez `/chrome` et sélectionnez « Reconnect extension » |349| « Receiving end does not exist » | Le service worker de l'extension est devenu inactif | Exécutez `/chrome` et sélectionnez « Reconnect extension » |

Details

75| - | - |75| - | - |

76| Claude Code v2.1.195 ou ultérieur | La sous-commande `claude gateway` et le flux de connexion de la passerelle sont livrés dans v2.1.195. Les versions publiques antérieures ne les incluent pas. La machine exécutant le serveur de passerelle et la machine de chaque développeur doivent être sur v2.1.195 ou ultérieur ; exécutez `claude update` pour obtenir la dernière version. L'[amont Claude Platform on AWS](/docs/fr/claude-apps-gateway-config#claude-platform-on-aws) nécessite Claude Code v2.1.198 ou ultérieur sur le serveur de passerelle. |76| Claude Code v2.1.195 ou ultérieur | La sous-commande `claude gateway` et le flux de connexion de la passerelle sont livrés dans v2.1.195. Les versions publiques antérieures ne les incluent pas. La machine exécutant le serveur de passerelle et la machine de chaque développeur doivent être sur v2.1.195 ou ultérieur ; exécutez `claude update` pour obtenir la dernière version. L'[amont Claude Platform on AWS](/docs/fr/claude-apps-gateway-config#claude-platform-on-aws) nécessite Claude Code v2.1.198 ou ultérieur sur le serveur de passerelle. |

77| Fournisseur d'identité OpenID Connect (OIDC) | Okta, Microsoft Entra ID, Google Workspace, Keycloak, ou Dex, ou tout autre IdP conforme à OIDC comme PingFederate. La passerelle exécute la découverte OIDC standard et le flux de code d'autorisation contre elle. SAML et LDAP ne sont pas supportés. |77| Fournisseur d'identité OpenID Connect (OIDC) | Okta, Microsoft Entra ID, Google Workspace, Keycloak, ou Dex, ou tout autre IdP conforme à OIDC comme PingFederate. La passerelle exécute la découverte OIDC standard et le flux de code d'autorisation contre elle. SAML et LDAP ne sont pas supportés. |

78| PostgreSQL 14 ou ultérieur | Soutient le flux de connexion d'appareil, où le rappel du navigateur écrit et l'interface de ligne de commande d'interrogation lit, plus les compteurs de limite de débit. Tout Postgres géré fonctionne, y compris le plus petit niveau. Sans limites de dépenses configurées, la passerelle stocke quelques Ko d'état d'authentification de courte durée ; avec les [limites de dépenses](/docs/fr/claude-apps-gateway-spend-limits), elle détient également des tables de dépenses durables, d'audit et d'identité qui doivent être sauvegardées. TLS via `?sslmode=require` est recommandé. |78| PostgreSQL 11 ou ultérieur | Soutient le flux de connexion d'appareil et les compteurs de limite de débit. Un service PostgreSQL géré fonctionne, y compris le plus petit niveau ; voir [quelles bases de données sont prises en charge](/docs/fr/claude-apps-gateway-deploy#postgres). Avec les [limites de dépenses](/docs/fr/claude-apps-gateway-spend-limits), la base de données détient également des tables de dépenses durables, d'audit et d'identité qui doivent être sauvegardées. TLS via `?sslmode=require` est recommandé. PostgreSQL 11, 12 et 13 nécessitent Claude Code v2.1.290 ou ultérieur sur le serveur de passerelle. Le projet PostgreSQL ne maintient plus ces versions ; utilisez donc une version plus récente lorsque c'est possible. |

79| Amont du modèle | Identifiants Amazon Bedrock, identifiants Claude Platform on AWS, identifiants Google Cloud, une ressource Microsoft Foundry, ou une clé API Anthropic. Plusieurs ammonts sont supportés avec basculement. |79| Amont du modèle | Identifiants Amazon Bedrock, identifiants Claude Platform on AWS, identifiants Google Cloud, une ressource Microsoft Foundry, ou une clé API Anthropic. Plusieurs ammonts sont supportés avec basculement. |

80| HTTPS | La passerelle doit être accessible via `https://` à partir des ordinateurs portables des développeurs et de tout navigateur utilisé pour la connexion ; la passerelle sert la page de vérification d'appareil sur le même écouteur. Fournissez un certificat TLS via `listen.tls` ou exécutez derrière un ingress qui termine TLS, et définissez `listen.public_url` à l'origine externe dans les deux cas. À `/login`, Claude Code accepte une origine `http://` simple uniquement quand l'hôte de la passerelle est une boucle locale : `localhost`, `127.0.0.1`, ou `::1`. |80| HTTPS | La passerelle doit être accessible via `https://` à partir des ordinateurs portables des développeurs et de tout navigateur utilisé pour la connexion ; la passerelle sert la page de vérification d'appareil sur le même écouteur. Fournissez un certificat TLS via `listen.tls` ou exécutez derrière un ingress qui termine TLS, et définissez `listen.public_url` à l'origine externe dans les deux cas. À `/login`, Claude Code accepte une origine `http://` simple uniquement quand l'hôte de la passerelle est une boucle locale : `localhost`, `127.0.0.1`, ou `::1`. |

81| Adresse de réseau privé | À `/login`, Claude Code exige que le nom d'hôte ou l'adresse IP de la passerelle ne se résolve qu'à des adresses privées : RFC 1918, link-local, CGNAT `100.64.0.0/10`, ULA IPv6 `fc00::/7`, ou boucle locale. Pour une passerelle que vous hébergez, toute adresse publique en dehors d'un bloc que vous déclarez est rejetée ; voir le [modèle de menace](/docs/fr/claude-apps-gateway-deploy#threat-model-summary) dans le guide de déploiement. Si les machines des développeurs acheminent HTTPS via un proxy d'entreprise, la connexion exige également que l'hôte proxy se résolve à des adresses privées ; s'il ne le fait pas, ajoutez l'hôte de la passerelle à `NO_PROXY` pour que l'interface de ligne de commande se connecte directement. Si votre réseau interne est numéroté à partir d'un espace IPv4 public que votre organisation possède, [déclarez ces blocs](#allow-a-gateway-on-public-address-space-you-own) pour que `/login` accepte une passerelle là-bas. |81| Adresse de réseau privé | À `/login`, Claude Code exige que le nom d'hôte ou l'adresse IP de la passerelle ne se résolve qu'à des adresses privées : RFC 1918, link-local, CGNAT `100.64.0.0/10`, ULA IPv6 `fc00::/7`, ou boucle locale. Pour une passerelle que vous hébergez, toute adresse publique en dehors d'un bloc que vous déclarez est rejetée ; voir le [modèle de menace](/docs/fr/claude-apps-gateway-deploy#threat-model-summary) dans le guide de déploiement. Si les machines des développeurs acheminent HTTPS via un proxy d'entreprise, la connexion exige également que l'hôte proxy se résolve à des adresses privées ; s'il ne le fait pas, ajoutez l'hôte de la passerelle à `NO_PROXY` pour que l'interface de ligne de commande se connecte directement. Si votre réseau interne est numéroté à partir d'un espace IPv4 public que votre organisation possède, [déclarez ces blocs](#allow-a-gateway-on-public-address-space-you-own) pour que `/login` accepte une passerelle là-bas. |


91 </Step>91 </Step>

92 92 

93 <Step title="Provisionner une base de données PostgreSQL">93 <Step title="Provisionner une base de données PostgreSQL">

94 Tout Postgres 14 ou ultérieur fonctionne, y compris le plus petit niveau géré. La passerelle exécute ses propres migrations de schéma au démarrage, donc le rôle de la base de données a besoin de droits pour créer et modifier les tables ; voir [`store`](/docs/fr/claude-apps-gateway-config#store).94 Utilisez PostgreSQL 11 ou ultérieur. Le plus petit niveau géré suffit. La passerelle exécute ses propres migrations de schéma au démarrage, donc le rôle de la base de données a besoin de droits pour créer et modifier les tables ; voir [`store`](/docs/fr/claude-apps-gateway-config#store).

95 </Step>95 </Step>

96 96 

97 <Step title="Écrivez gateway.yaml">97 <Step title="Écrivez gateway.yaml">

Details

158La passerelle lit la clé et le certificat une seule fois au démarrage, donc un fichier modifié ne prend effet qu'après un redémarrage. Effectuez la rotation dans cet ordre afin qu'aucune requête de jeton ne présente un certificat dont le fournisseur d'identité ne dispose pas :158La passerelle lit la clé et le certificat une seule fois au démarrage, donc un fichier modifié ne prend effet qu'après un redémarrage. Effectuez la rotation dans cet ordre afin qu'aucune requête de jeton ne présente un certificat dont le fournisseur d'identité ne dispose pas :

159 159 

1601. Téléversez le nouveau certificat vers le fournisseur d'identité à côté de l'ancien.1601. Téléversez le nouveau certificat vers le fournisseur d'identité à côté de l'ancien.

1612. Remplacez les fichiers de clé et de certificat que `gateway.yaml` charge, puis redémarrez la passerelle.1612. Remplacez les fichiers de clé et de certificat que `gateway.yaml` charge, puis redémarrez la passerelle. Si vous exécutez plusieurs répliques, un [redémarrage progressif](/docs/fr/claude-apps-gateway-deploy#upgrades) fonctionne, car le fournisseur d'identité dispose des deux certificats jusqu'à ce que vous supprimiez l'ancien.

1623. Supprimez l'ancien certificat du fournisseur d'identité.1623. Une fois que chaque réplique a redémarré, supprimez l'ancien certificat du fournisseur d'identité.

163 163 

164<h4 id="idp-requests-through-a-forward-proxy">164<h4 id="idp-requests-through-a-forward-proxy">

165 Demandes du fournisseur d'identité via un proxy avant165 Demandes du fournisseur d'identité via un proxy avant


227 227 

228| Champ | Obligatoire | Description |228| Champ | Obligatoire | Description |

229| - | - | - |229| - | - | - |

230| `postgres_url` | Oui | URL `postgres://` ou `postgresql://`. Obligatoire : le rendez-vous de subvention d'appareil, où le rappel du navigateur écrit et le CLI d'interrogation lit, a besoin d'un état entre répliques. La passerelle exécute ses propres migrations de schéma au démarrage et à la mise à niveau, donc le rôle a besoin de droits pour créer et modifier les tables sur le schéma cible. Voir [Mises à niveau](/docs/fr/claude-apps-gateway-deploy#upgrades) et [Postgres](/docs/fr/claude-apps-gateway-deploy#postgres). |230| `postgres_url` | Oui | URL `postgres://` ou `postgresql://` avec un seul hôte, et non une liste séparée par des virgules. La passerelle exécute ses propres migrations de schéma au démarrage et à la mise à niveau, donc le rôle a besoin de droits pour créer et modifier les tables sur le schéma cible. Voir [Mises à niveau](/docs/fr/claude-apps-gateway-deploy#upgrades) et [Postgres](/docs/fr/claude-apps-gateway-deploy#postgres). |

231| `username` | Non | Remplace l'utilisateur dans `postgres_url` |231| `username` | Non | Remplace l'utilisateur dans `postgres_url` |

232| `password` | Non | Identifiant de base de données. Définissez-le ici plutôt que dans `postgres_url` pour que l'identifiant reste hors de l'URL. Accepte n'importe quel caractère et a priorité sur les identifiants d'URL. |232| `password` | Non | Identifiant de base de données. Définissez-le ici plutôt que dans `postgres_url` pour que l'identifiant reste hors de l'URL. Accepte n'importe quel caractère et a priorité sur les identifiants d'URL. |

233| `max_connections` | Non | Taille du pool de connexions Postgres par réplique. Par défaut `5`, ce qui est conservateur et convivial pour les bases de données partagées. Avec les [limites de dépenses](#admin) activées, le chemin chaud effectue quelques opérations par demande d'inférence, donc augmentez-le pour une base de données dédiée sous charge, et gardez répliques × ceci en dessous du `max_connections` de la base de données. |233| `max_connections` | Non | Taille du pool de connexions Postgres par réplique. Par défaut `5`, ce qui est conservateur et convivial pour les bases de données partagées. Avec les [limites de dépenses](#admin) activées, le chemin chaud effectue quelques opérations par demande d'inférence, donc augmentez-le pour une base de données dédiée sous charge, et gardez répliques × ceci en dessous du `max_connections` de la base de données. |

Details

249 Postgres249 Postgres

250</h3>250</h3>

251 251 

252La passerelle stocke son état dans une base de données PostgreSQL :

253 

254* **Base de données** : PostgreSQL lui-même, auto-hébergé ou managé, en [version minimale](/docs/fr/claude-apps-gateway#prerequisites) ou ultérieure. Les bases de données qui implémentent uniquement le protocole Postgres, comme les bases de données SQL distribuées, ne sont pas prises en charge.

255* **Adresse** : `store.postgres_url` accepte un seul hôte. Si la base de données comporte plusieurs nœuds, utilisez l'adresse placée devant eux, comme l'endpoint de votre service managé, un équilibreur de charge ou une IP virtuelle. Définissez une [période de grâce de disponibilité](#readiness-grace-period) plus longue que la durée d'un basculement.

256 

252La passerelle détient cinq tables de données plus une table `_migrations`, toutes créées par ses migrations au démarrage :257La passerelle détient cinq tables de données plus une table `_migrations`, toutes créées par ses migrations au démarrage :

253 258 

254| Table | Contenu | Rétention |259| Table | Contenu | Rétention |


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

397| CLI `/login` : `Could not resolve gateway host <host>` | La machine ne peut pas résoudre le nom DNS interne de la passerelle, généralement parce qu'elle n'est pas sur le réseau d'entreprise | Demandez au développeur de se connecter à votre réseau ou VPN, puis de réessayer `/login` |402| CLI `/login` : `Could not resolve gateway host <host>` | La machine ne peut pas résoudre le nom DNS interne de la passerelle, généralement parce qu'elle n'est pas sur le réseau d'entreprise | Demandez au développeur de se connecter à votre réseau ou VPN, puis de réessayer `/login` |

398| Le démarrage se termine avec une erreur de validation de configuration nommant `store.postgres_url` | Aucun Postgres configuré ; la passerelle nécessite Postgres | Définissez `store.postgres_url`. Pour le développement local, utilisez un conteneur jetable : `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. |403| Le démarrage se termine avec une erreur de validation de configuration nommant `store.postgres_url` | Aucun Postgres configuré ; la passerelle nécessite Postgres | Définissez `store.postgres_url`. Pour le développement local, utilisez un conteneur jetable : `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. |

404| Le démarrage se termine : `store.postgres_url in <path> is not a URL the gateway can read`, ou avant v2.1.290 un simple `Invalid URL` ou `URI error` | L'URL ne peut pas être analysée, par exemple parce qu'elle liste plus d'un hôte ou que son mot de passe contient un `/`, `?`, `#` ou `%` non encodé | Nommez [un seul hôte](#postgres), et déplacez le mot de passe dans [`store.password`](/docs/fr/claude-apps-gateway-config#store) |

399| Le démarrage se termine : `requires the native binary` | Exécution sous Node au lieu du binaire natif | Installez Claude Code avec l'une des [méthodes d'installation autonome](/docs/fr/setup) |405| Le démarrage se termine : `requires the native binary` | Exécution sous Node au lieu du binaire natif | Installez Claude Code avec l'une des [méthodes d'installation autonome](/docs/fr/setup) |

400| Le démarrage se termine avec une erreur de découverte OIDC après `config.load` | `oidc.issuer` inaccessible, ou chaîne TLS non approuvée | Vérifiez que l'émetteur est accessible à partir du pod et sert `/.well-known/openid-configuration`. Définissez `ca_cert_pem` pour l'infrastructure à clé publique privée. Si le pod atteint l'IdP uniquement via un proxy de transfert, définissez [`oidc.use_proxy: true`](/docs/fr/claude-apps-gateway-config#idp-requests-through-a-forward-proxy) ; sur les versions antérieures à v2.1.227, donnez au pod une route directe vers chacun des endpoints de l'IdP à la place. Si le pod ne peut pas non plus résoudre le nom d'hôte de l'IdP, ou le proxy refuse `CONNECT` à une adresse IP, voir [Sortie proxy uniquement](/docs/fr/claude-apps-gateway-config#proxy-only-egress), qui nécessite v2.1.277 ou ultérieur. |406| Le démarrage se termine avec une erreur de découverte OIDC après `config.load` | `oidc.issuer` inaccessible, ou chaîne TLS non approuvée | Vérifiez que l'émetteur est accessible à partir du pod et sert `/.well-known/openid-configuration`. Définissez `ca_cert_pem` pour l'infrastructure à clé publique privée. Si le pod atteint l'IdP uniquement via un proxy de transfert, définissez [`oidc.use_proxy: true`](/docs/fr/claude-apps-gateway-config#idp-requests-through-a-forward-proxy) ; sur les versions antérieures à v2.1.227, donnez au pod une route directe vers chacun des endpoints de l'IdP à la place. Si le pod ne peut pas non plus résoudre le nom d'hôte de l'IdP, ou le proxy refuse `CONNECT` à une adresse IP, voir [Sortie proxy uniquement](/docs/fr/claude-apps-gateway-config#proxy-only-egress), qui nécessite v2.1.277 ou ultérieur. |

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

402| Journal : `could not connect to Postgres at boot, attempt 1 of 3` | La base de données n'était pas accessible lorsque la passerelle a démarré, par exemple sur une instance froide dont le réseau est encore en cours de configuration | Si la passerelle termine ensuite le démarrage, aucune action n'est nécessaire. Lorsque la base de données n'est pas accessible, la passerelle essaie la connexion trois fois, deux secondes d'intervalle, avant de se terminer. Si elle se termine avec `could not connect to Postgres`, vérifiez `store.postgres_url` et le chemin réseau vers la base de données. Si les tentatives expirent plutôt que d'être refusées, augmentez [`store.connect_timeout_seconds`](/docs/fr/claude-apps-gateway-config#store) pour donner à chacune plus de temps. |408| Journal : `could not connect to Postgres at boot, attempt 1 of 3` | La base de données n'était pas accessible lorsque la passerelle a démarré, par exemple sur une instance froide dont le réseau est encore en cours de configuration | Si la passerelle termine ensuite le démarrage, aucune action n'est nécessaire. Lorsque la base de données n'est pas accessible, la passerelle essaie la connexion trois fois, deux secondes d'intervalle, avant de se terminer. Si elle se termine avec `could not connect to Postgres`, vérifiez `store.postgres_url`, notamment qu'elle nomme un seul hôte, ainsi que le chemin réseau vers la base de données. Si les tentatives expirent plutôt que d'être refusées, augmentez [`store.connect_timeout_seconds`](/docs/fr/claude-apps-gateway-config#store) pour donner à chacune plus de temps. |

403| `/oauth/callback` affiche « Sign-in could not be completed » | Domaine de courrier électronique rejeté, validation id\_token échouée, ou `email_verified` est explicitement `false`, que la passerelle rejette toujours sans remplacement | Vérifiez `allowed_email_domains` et que l'IdP renvoie une réclamation `email` vérifiée. Pour `email_verified: false`, corrigez la vérification côté IdP. Si votre IdP émet le courrier électronique sous un nom de réclamation différent, définissez `oidc.email_claim`. |409| `/oauth/callback` affiche « Sign-in could not be completed » | Domaine de courrier électronique rejeté, validation id\_token échouée, ou `email_verified` est explicitement `false`, que la passerelle rejette toujours sans remplacement | Vérifiez `allowed_email_domains` et que l'IdP renvoie une réclamation `email` vérifiée. Pour `email_verified: false`, corrigez la vérification côté IdP. Si votre IdP émet le courrier électronique sous un nom de réclamation différent, définissez `oidc.email_claim`. |

404| Journal : `token exchange failed request_id=<id>: id_token missing email claim` | L'IdP n'inclut pas `email` dans l'id\_token par défaut. Ce rejet ne se déclenche que lorsque `allowed_email_domains` est défini ; sans lui, un courrier électronique manquant crée une session sans courrier électronique | Configurez l'IdP pour émettre `email` dans l'id\_token. Okta : ajoutez `email` aux réclamations de jeton d'ID d'un serveur d'autorisation personnalisé. Entra : ajoutez `email` comme réclamation facultative sur l'enregistrement de l'application. PingFederate : activez une politique OpenID Connect qui émet `email`. Si l'IdP sert `email` à partir de l'endpoint userinfo mais ne l'inclura pas dans l'id\_token, comme le serveur d'autorisation org Okta, définissez `oidc.userinfo_fallback: true`. |410| Journal : `token exchange failed request_id=<id>: id_token missing email claim` | L'IdP n'inclut pas `email` dans l'id\_token par défaut. Ce rejet ne se déclenche que lorsque `allowed_email_domains` est défini ; sans lui, un courrier électronique manquant crée une session sans courrier électronique | Configurez l'IdP pour émettre `email` dans l'id\_token. Okta : ajoutez `email` aux réclamations de jeton d'ID d'un serveur d'autorisation personnalisé. Entra : ajoutez `email` comme réclamation facultative sur l'enregistrement de l'application. PingFederate : activez une politique OpenID Connect qui émet `email`. Si l'IdP sert `email` à partir de l'endpoint userinfo mais ne l'inclura pas dans l'id\_token, comme le serveur d'autorisation org Okta, définissez `oidc.userinfo_fallback: true`. |

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

Details

169 </Step>169 </Step>

170 170 

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

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

173 173 

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

175 175 


203 203 

204 L'argument littéral `--master-user-password` est visible dans la table des processus et dans les journaux d'audit/EDR pendant l'exécution de la commande, la même exposition que celle couverte par la note de l'étape des secrets. Sur un hôte partagé ou surveillé, passez le mot de passe via `--cli-input-json` à partir d'un fichier `0600` à la place, de la même façon que le `setup.sh` du bundle.204 L'argument littéral `--master-user-password` est visible dans la table des processus et dans les journaux d'audit/EDR pendant l'exécution de la commande, la même exposition que celle couverte par la note de l'étape des secrets. Sur un hôte partagé ou surveillé, passez le mot de passe via `--cli-input-json` à partir d'un fichier `0600` à la place, de la même façon que le `setup.sh` du bundle.

205 205 

206 Attendez que l'instance soit opérationnelle, ce qui peut prendre plusieurs minutes, puis lisez son point de terminaison privé et assemblez la chaîne de connexion que la passerelle utilisera :206 Attendez que l'instance soit opérationnelle, ce qui peut prendre plusieurs minutes, puis lisez son endpoint privé et assemblez la chaîne de connexion que la passerelle utilisera :

207 207 

208 ```bash theme={null}208 ```bash theme={null}

209 aws rds wait db-instance-available --db-instance-identifier claude-gateway-db209 aws rds wait db-instance-available --db-instance-identifier claude-gateway-db


212 GATEWAY_POSTGRES_URL="postgres://gateway:${PGPASS}@${DB_HOST}:5432/claude_gateway?sslmode=verify-full"212 GATEWAY_POSTGRES_URL="postgres://gateway:${PGPASS}@${DB_HOST}:5432/claude_gateway?sslmode=verify-full"

213 ```213 ```

214 214 

215 `sslmode=verify-full` fait que la passerelle vérifie la chaîne du certificat du serveur RDS et le nom d'hôte, pas seulement le chiffrement. L'ancre de confiance est le [bundle de certificats AWS RDS](https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem), que l'étape de construction d'image ci-dessous copie à `/etc/claude/rds-global-bundle.pem` et approuve via `NODE_EXTRA_CA_CERTS`. N'ajoutez pas de paramètre `sslrootcert=` de style libpq à l'URL : le pilote de la passerelle lit uniquement `sslmode` à partir de la chaîne de requête et transmettrait `sslrootcert` à Postgres en tant que paramètre de démarrage, que le serveur rejette.215 `sslmode=verify-full` fait que la passerelle vérifie la chaîne du certificat du serveur RDS et le nom d'hôte, pas seulement le chiffrement. L'ancre de confiance est le [bundle de certificats AWS RDS](https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem), que l'étape de build d'image ci-dessous copie à `/etc/claude/rds-global-bundle.pem` et approuve via `NODE_EXTRA_CA_CERTS`. N'ajoutez pas de paramètre `sslrootcert=` de style libpq à l'URL : le pilote de la passerelle lit uniquement `sslmode` à partir de la chaîne de requête et transmettrait `sslrootcert` à Postgres en tant que paramètre de démarrage, que le serveur rejette.

216 216 

217 Le service ECS ou les pods EKS doivent s'exécuter dans ce VPC pour pouvoir atteindre le point de terminaison privé de l'instance, et le groupe de sécurité `claude-gateway-db` n'admet que le groupe de sécurité de la passerelle.217 Le service ECS ou les pods EKS doivent s'exécuter dans ce VPC pour pouvoir atteindre l'endpoint privé de l'instance, et le groupe de sécurité `claude-gateway-db` n'admet que le groupe de sécurité de la passerelle.

218 </Step>218 </Step>

219 219 

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

221 Le bloc `upstreams` pointe vers Bedrock avec `auth: {}`, donc la passerelle s'authentifie via la chaîne de credentials par défaut d'AWS à partir du rôle de tâche sur ECS ou du rôle IRSA sur EKS. Consultez la [référence de configuration](/docs/fr/claude-apps-gateway-config) pour chaque champ.221 Le bloc `upstreams` pointe vers Bedrock avec `auth: {}`, donc la passerelle s'authentifie via la chaîne d'identifiants par défaut d'AWS à partir du rôle de tâche sur ECS ou du rôle IRSA sur EKS. Consultez la [référence de configuration](/docs/fr/claude-apps-gateway-config) pour chaque champ.

222 222 

223 Deux champs `listen` décrivent ce qui est en face de la passerelle :223 Deux champs `listen` décrivent ce qui est en face de la passerelle :

224 224 

225 * `public_url` : l'origine `https://` externe, requise pour tout bind non-loopback ; consultez la [référence `listen`](/docs/fr/claude-apps-gateway-config#listen). La passerelle construit l'`redirect_uri` de l'IdP et son document de découverte uniquement à partir de cette valeur, jamais à partir des en-têtes `X-Forwarded-*`.225 * `public_url` : l'origine `https://` externe, requise pour tout bind non-loopback ; consultez la [référence `listen`](/docs/fr/claude-apps-gateway-config#listen). La passerelle construit l'`redirect_uri` de l'IdP et son document de découverte uniquement à partir de cette valeur, jamais à partir des en-têtes `X-Forwarded-*`.

226 * `trusted_proxies` : les plages source du frontal. La passerelle honore `X-Forwarded-For` uniquement lorsque le pair TCP est dans cette liste, puis parcourt la chaîne au-delà des sauts de confiance, donc les limites de taux de connexion par IP et les événements d'audit enregistrent les adresses IP des développeurs au lieu de celle de l'équilibreur de charge.226 * `trusted_proxies` : les plages source du frontal. La passerelle honore `X-Forwarded-For` uniquement lorsque le pair TCP est dans cette liste, puis parcourt la chaîne au-delà des sauts de confiance, donc les limites de débit de connexion par IP et les événements d'audit enregistrent les adresses IP des développeurs au lieu de celle de l'équilibreur de charge.

227 227 

228 Sur les deux pistes, le frontal est un ALB interne, qu'il soit créé directement ou par le contrôleur AWS Load Balancer, et les nœuds d'un ALB prennent des adresses à partir des sous-réseaux auxquels il est attaché, donc définissez `trusted_proxies` sur les CIDR de ces sous-réseaux. Cela approuve chaque hôte de ces sous-réseaux en tant que proxy. Gardez la source d'entrée de l'ALB, votre CIDR d'entreprise, de ne pas chevaucher, et ne partagez pas les sous-réseaux avec des charges de travail non fiables qui pourraient usurper les adresses IP des clients via `X-Forwarded-For`.228 Sur les deux pistes, le frontal est un ALB interne, qu'il soit créé directement ou par le contrôleur AWS Load Balancer, et les nœuds d'un ALB prennent des adresses à partir des sous-réseaux auxquels il est attaché, donc définissez `trusted_proxies` sur les CIDR de ces sous-réseaux. Cela approuve chaque hôte de ces sous-réseaux en tant que proxy. Veillez à ce que la source d'entrée de l'ALB, votre CIDR d'entreprise, ne les chevauche pas, et ne partagez pas les sous-réseaux avec des charges de travail non fiables qui pourraient usurper les adresses IP des clients via `X-Forwarded-For`.

229 229 

230 L'attribut de préservation du port client de l'ALB, `routing.http.xff_client_port.enabled`, peut rester à l'un ou l'autre paramètre : avec lui activé, l'ALB écrit le client comme `203.0.113.7:54321` ou `[2001:db8::1]:54321`, et la passerelle lit les deux avec le port supprimé.230 L'attribut de préservation du port client de l'ALB, `routing.http.xff_client_port.enabled`, peut rester à l'un ou l'autre paramètre : avec lui activé, l'ALB écrit le client comme `203.0.113.7:54321` ou `[2001:db8::1]:54321`, et la passerelle lit les deux avec le port supprimé.

231 231 


244 # Le serveur d'autorisation org Okta retourne un id_token mince qui omet244 # Le serveur d'autorisation org Okta retourne un id_token mince qui omet

245 # l'email et les groupes ; la passerelle les remplit à partir de /userinfo.245 # l'email et les groupes ; la passerelle les remplit à partir de /userinfo.

246 userinfo_fallback: true246 userinfo_fallback: true

247 # Okta émet des groupes uniquement lorsque la portée `groups` est demandée et que247 # Okta émet des groupes uniquement lorsque le scope `groups` est demandé et que

248 # le filtre de revendication de groupes de l'application les autorise.248 # le filtre de revendication de groupes de l'application les autorise.

249 scopes: [openid, profile, email, offline_access, groups]249 scopes: [openid, profile, email, offline_access, groups]

250 250 


262 - provider: bedrock262 - provider: bedrock

263 region: <your-region> # correspondre à $AWS_REGION pour que les ARN de la politique IAM263 region: <your-region> # correspondre à $AWS_REGION pour que les ARN de la politique IAM

264 # le couvrent264 # le couvrent

265 auth: {} # chaîne de credentials par défaut d'AWS :265 auth: {} # chaîne d'identifiants par défaut d'AWS :

266 # rôle de tâche ECS, ou IRSA sur EKS266 # rôle de tâche ECS, ou IRSA sur EKS

267 ```267 ```

268 268 

269 <Note>269 <Note>

270 Seul le bloc `oidc` est spécifique à Okta. Pour utiliser Microsoft Entra ID à la place, définissez `issuer` sur `https://login.microsoftonline.com/<tenant-id>/v2.0`, supprimez `userinfo_fallback` et la portée `groups`, et notez qu'Entra émet des ID d'objet de groupe plutôt que des noms, donc [`managed.policies`](/docs/fr/claude-apps-gateway-config#managed) doit correspondre sur les GUID, ou sur les rôles d'application avec `oidc.groups_claim: roles`. Consultez [Configuration du fournisseur d'identité](/docs/fr/claude-apps-gateway-deploy#identity-provider-setup).270 Seul le bloc `oidc` est spécifique à Okta. Pour utiliser Microsoft Entra ID à la place, définissez `issuer` sur `https://login.microsoftonline.com/<tenant-id>/v2.0`, supprimez `userinfo_fallback` et le scope `groups`, et notez qu'Entra émet des ID d'objet de groupe plutôt que des noms, donc [`managed.policies`](/docs/fr/claude-apps-gateway-config#managed) doit correspondre sur les GUID, ou sur les rôles d'application avec `oidc.groups_claim: roles`. Consultez [Configuration du fournisseur d'identité](/docs/fr/claude-apps-gateway-deploy#identity-provider-setup).

271 </Note>271 </Note>

272 </Step>272 </Step>

273 273 


289 Les arguments littéraux `--secret-string` sont visibles dans la table des processus et dans les journaux d'audit/EDR pendant l'exécution de chaque commande. Sur un hôte partagé ou surveillé, mettez la valeur dans un fichier `0600` et passez `--secret-string file://<path>` à la place. Le `setup.sh` du bundle garde les valeurs secrètes hors de l'argv du processus de la même façon, en passant des fichiers temporaires `0600` à `--cli-input-json`.289 Les arguments littéraux `--secret-string` sont visibles dans la table des processus et dans les journaux d'audit/EDR pendant l'exécution de chaque commande. Sur un hôte partagé ou surveillé, mettez la valeur dans un fichier `0600` et passez `--secret-string file://<path>` à la place. Le `setup.sh` du bundle garde les valeurs secrètes hors de l'argv du processus de la même façon, en passant des fichiers temporaires `0600` à `--cli-input-json`.

290 </Note>290 </Note>

291 291 

292 Contrairement aux secrets, `gateway.yaml` lui-même ne contient aucune valeur secrète, car chaque credential se résout au démarrage via l'expansion [`${VAR}` ou `${file:...}`](/docs/fr/claude-apps-gateway-config#secret-expansion). La façon dont tout atteint le conteneur diffère selon la piste :292 Contrairement aux secrets, `gateway.yaml` lui-même ne contient aucune valeur secrète, car tous les identifiants se résolvent au démarrage via l'expansion [`${VAR}` ou `${file:...}`](/docs/fr/claude-apps-gateway-config#secret-expansion). La façon dont tout atteint le conteneur diffère selon la piste :

293 293 

294 * Sur ECS, l'étape de construction suivante copie `gateway.yaml` dans l'image à `/etc/claude/gateway.yaml`, et la définition de tâche injecte les trois secrets en tant que variables d'environnement via son champ `secrets`, donc le YAML référence `${GATEWAY_JWT_SECRET}`, `${OIDC_CLIENT_SECRET}` et `${GATEWAY_POSTGRES_URL}`.294 * Sur ECS, l'étape de build suivante copie `gateway.yaml` dans l'image à `/etc/claude/gateway.yaml`, et la définition de tâche injecte les trois secrets en tant que variables d'environnement via son champ `secrets`, donc le YAML référence `${GATEWAY_JWT_SECRET}`, `${OIDC_CLIENT_SECRET}` et `${GATEWAY_POSTGRES_URL}`.

295 * Sur EKS, montez `gateway.yaml` à partir d'une ConfigMap et les secrets en tant que fichiers à `/secrets`, référencés comme `${file:/secrets/...}`. Sourcez les secrets Kubernetes à partir de Secrets Manager avec External Secrets Operator ou le pilote AWS du pilote CSI Secrets Store, ou créez-les directement avec `kubectl`.295 * Sur EKS, montez `gateway.yaml` à partir d'une ConfigMap et les secrets en tant que fichiers à `/secrets`, référencés comme `${file:/secrets/...}`. Sourcez les secrets Kubernetes à partir de Secrets Manager avec External Secrets Operator ou le fournisseur AWS du pilote CSI Secrets Store, ou créez-les directement avec `kubectl`.

296 </Step>296 </Step>

297 297 

298 <Step title="Construire et pousser l'image vers Amazon ECR">298 <Step title="Construire et pousser l'image vers Amazon ECR">

299 Construisez l'image selon les [exigences d'image de conteneur](/docs/fr/claude-apps-gateway-deploy#container-image), en plaçant le binaire glibc `linux-x64` à `./claude` dans le contexte de construction. Écrivez votre propre Dockerfile selon ces exigences ou commencez par le [`Dockerfile`](https://github.com/anthropics/claude-code/blob/main/examples/gateway/aws/Dockerfile) du bundle, qui copie le `gateway.yaml` rempli des étapes précédentes dans l'image à `/etc/claude/gateway.yaml`. Sur ECS, cette copie intégrée est la façon dont la configuration atteint le conteneur, c'est pourquoi la construction vient après l'écriture du fichier. La piste EKS monte plutôt `gateway.yaml` à partir d'une ConfigMap au déploiement, donc la copie intégrée n'est pas utilisée là.299 Construisez l'image selon les [exigences d'image de conteneur](/docs/fr/claude-apps-gateway-deploy#container-image), en plaçant le binaire glibc `linux-x64` à `./claude` dans le contexte de build. Écrivez votre propre Dockerfile selon ces exigences ou commencez par le [`Dockerfile`](https://github.com/anthropics/claude-code/blob/main/examples/gateway/aws/Dockerfile) du bundle, qui copie le `gateway.yaml` rempli des étapes précédentes dans l'image à `/etc/claude/gateway.yaml`. Sur ECS, cette copie intégrée est la façon dont la configuration atteint le conteneur, c'est pourquoi le build vient après l'écriture du fichier. La piste EKS monte plutôt `gateway.yaml` à partir d'une ConfigMap au déploiement, donc la copie intégrée n'est pas utilisée là.

300 300 

301 L'image porte également le bundle de certificats AWS RDS comme ancre de confiance pour la chaîne de connexion `sslmode=verify-full`, donc téléchargez-le d'abord dans le contexte de construction. AWS fait tourner le bundle (les nouvelles autorités de certification régionales sont ajoutées), donc téléchargez-le par construction plutôt que d'épingler une somme de contrôle ou de le valider :301 L'image porte également le bundle de certificats AWS RDS comme ancre de confiance pour la chaîne de connexion `sslmode=verify-full`, donc téléchargez-le d'abord dans le contexte de build. AWS fait tourner le bundle (les nouvelles autorités de certification régionales sont ajoutées), donc téléchargez-le à chaque build plutôt que d'épingler une somme de contrôle ou de le valider :

302 302 

303 ```bash theme={null}303 ```bash theme={null}

304 curl -fL --proto '=https' -o rds-global-bundle.pem \304 curl -fL --proto '=https' -o rds-global-bundle.pem \

305 https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem305 https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem

306 ```306 ```

307 307 

308 Les exigences d'image de conteneur ne couvrent pas le bundle, donc si vous écrivez votre propre Dockerfile, ajoutez les deux lignes qui le copient et le font confiance ; le Dockerfile du bundle les inclut déjà :308 Les exigences d'image de conteneur ne couvrent pas le bundle, donc si vous écrivez votre propre Dockerfile, ajoutez les deux lignes qui le copient et le font confiance ; le `Dockerfile` du bundle les inclut déjà :

309 309 

310 ```dockerfile theme={null}310 ```dockerfile theme={null}

311 COPY rds-global-bundle.pem /etc/claude/rds-global-bundle.pem311 COPY rds-global-bundle.pem /etc/claude/rds-global-bundle.pem

312 ENV NODE_EXTRA_CA_CERTS=/etc/claude/rds-global-bundle.pem312 ENV NODE_EXTRA_CA_CERTS=/etc/claude/rds-global-bundle.pem

313 ```313 ```

314 314 

315 Créez le référentiel ECR et connectez Docker à celui-ci. Les balises immuables signifient que la balise `<version>` que l'étape de déploiement épingle ne peut pas être ultérieurement silencieusement réorientée vers une image différente :315 Créez le dépôt ECR et connectez Docker à celui-ci. Les balises immuables signifient que la balise `<version>` que l'étape de déploiement épingle ne peut pas être ultérieurement silencieusement réorientée vers une image différente :

316 316 

317 ```bash theme={null}317 ```bash theme={null}

318 aws ecr create-repository --repository-name claude-gateway \318 aws ecr create-repository --repository-name claude-gateway \


425 --load-balancers "targetGroupArn=$TG_ARN,containerName=gateway,containerPort=8080"425 --load-balancers "targetGroupArn=$TG_ARN,containerName=gateway,containerPort=8080"

426 ```426 ```

427 427 

428 La période de grâce de 60 secondes donne à une tâche froide le temps de tirer l'image, de se connecter au store et de répondre à sa première vérification de santé avant qu'ECS ne commence à compter les défaillances par rapport au déploiement. La vérification de santé du groupe cible sur `GET /readyz` vérifie que le store est accessible, donc une tâche qui ne peut pas atteindre Postgres n'entre jamais en rotation. Pour garder les tâches passant la vérification lors d'une courte panne de base de données telle qu'un basculement RDS, définissez `store.readiness_grace_seconds` comme décrit dans [Comportement en cas de panne](/docs/fr/claude-apps-gateway-deploy#outage-behavior), qui couvre également l'alternative `/healthz`.428 La période de grâce de 60 secondes donne à une tâche froide le temps de tirer l'image, de se connecter au store et de répondre à sa première vérification de santé avant qu'ECS ne commence à compter les défaillances par rapport au déploiement.

429 429 

430 Les tâches s'exécutent dans des sous-réseaux privés sans IP publique, donc tout le trafic sortant (vers Bedrock, votre IdP, Secrets Manager, ECR et CloudWatch Logs) passe par la passerelle NAT. Pour garder le trafic Bedrock hors du chemin public, créez un point de terminaison VPC d'interface `bedrock-runtime` et pointez l'`base_url` upstream vers celui-ci, comme indiqué dans la [référence upstream Bedrock](/docs/fr/claude-apps-gateway-config#amazon-bedrock) ; l'IdP a toujours besoin d'une sortie Internet.430 La vérification de santé du groupe cible sur `GET /readyz` vérifie que le store est accessible, donc une tâche qui ne peut pas atteindre Postgres n'entre jamais en rotation. Pour garder les tâches passant la vérification lors d'une courte panne de base de données telle qu'un basculement RDS, définissez `store.readiness_grace_seconds` comme décrit dans [Comportement en cas de panne](/docs/fr/claude-apps-gateway-deploy#outage-behavior), qui couvre également l'alternative `/healthz`.

431 

432 Les tâches s'exécutent dans des sous-réseaux privés sans IP publique, donc tout le trafic sortant (vers Bedrock, votre IdP, Secrets Manager, ECR et CloudWatch Logs) passe par la passerelle NAT. Pour garder le trafic Bedrock hors du chemin public, créez un endpoint VPC d'interface `bedrock-runtime` et pointez l'`base_url` upstream vers celui-ci, comme indiqué dans la [référence upstream Bedrock](/docs/fr/claude-apps-gateway-config#amazon-bedrock) ; l'IdP a toujours besoin d'une sortie Internet.

431 433 

432 Terminez en donnant aux développeurs un nom d'hôte privé résolvable : dans une zone hébergée privée Route 53, aliasez le nom DNS interne de la passerelle à l'ALB, et définissez `listen.public_url` sur ce nom d'hôte. Le nom `*.elb.amazonaws.com` propre de l'ALB se résout en adresses privées sur un ALB interne, mais il ne peut pas porter votre certificat ACM, donc utilisez votre propre nom.434 Terminez en donnant aux développeurs un nom d'hôte privé résolvable : dans une zone hébergée privée Route 53, aliasez le nom DNS interne de la passerelle à l'ALB, et définissez `listen.public_url` sur ce nom d'hôte. Le nom `*.elb.amazonaws.com` propre de l'ALB se résout en adresses privées sur un ALB interne, mais il ne peut pas porter votre certificat ACM, donc utilisez votre propre nom.

433 435 


435 </Tab>437 </Tab>

436 438 

437 <Tab title="EKS">439 <Tab title="EKS">

438 Cette piste a besoin de `kubectl` et `eksctl` installés localement, et d'un cluster EKS existant avec un fournisseur OIDC IAM et le contrôleur AWS Load Balancer installé. Le cluster doit être sur `$VPC_ID` pour que les pods puissent atteindre le point de terminaison privé RDS, et le groupe de sécurité `claude-gateway-db` doit admettre le groupe de sécurité du pod ou du nœud du cluster à la place de `$GW_SG`.440 Cette piste a besoin de `kubectl` et `eksctl` installés localement, et d'un cluster EKS existant avec un fournisseur OIDC IAM et le contrôleur AWS Load Balancer installé. Le cluster doit être sur `$VPC_ID` pour que les pods puissent atteindre l'endpoint privé RDS, et le groupe de sécurité `claude-gateway-db` doit admettre le groupe de sécurité du pod ou du nœud du cluster à la place de `$GW_SG`.

439 441 

440 Sur EKS, la passerelle obtient ses credentials Bedrock via IRSA plutôt que les rôles ECS. La politique de confiance `ecs-tasks.amazonaws.com` de l'étape IAM ne s'applique pas ici ; IRSA a besoin d'un rôle dont la politique de confiance fédère sur le fournisseur OIDC du cluster, limité à `system:serviceaccount:claude-gateway:gateway`. `eksctl create iamserviceaccount` crée ce rôle, attache les politiques et annote le compte de service Kubernetes avec l'ARN du rôle en une seule étape. Transformez les deux documents de politique de l'étape IAM en politiques gérées qu'il peut attacher :442 Sur EKS, la passerelle obtient ses identifiants Bedrock via IRSA plutôt que les rôles ECS. La politique de confiance `ecs-tasks.amazonaws.com` de l'étape IAM ne s'applique pas ici ; IRSA a besoin d'un rôle dont la politique de confiance fédère sur le fournisseur OIDC du cluster, limité à `system:serviceaccount:claude-gateway:gateway`. `eksctl create iamserviceaccount` crée ce rôle, attache les politiques et annote le compte de service Kubernetes avec l'ARN du rôle en une seule étape. Transformez les deux documents de politique de l'étape IAM en politiques gérées qu'il peut attacher :

441 443 

442 ```bash theme={null}444 ```bash theme={null}

443 BEDROCK_POLICY_ARN="$(aws iam create-policy --policy-name claude-gateway-bedrock-invoke \445 BEDROCK_POLICY_ARN="$(aws iam create-policy --policy-name claude-gateway-bedrock-invoke \


453 --approve455 --approve

454 ```456 ```

455 457 

456 La politique des secrets n'est nécessaire que lorsque les pods lisent eux-mêmes Secrets Manager, comme le fait le pilote AWS du pilote CSI Secrets Store en utilisant le compte de service du pod de montage ; supprimez-la si vous créez les secrets Kubernetes d'une autre façon. Le fournisseur a besoin des deux actions de la politique : il appelle `DescribeSecret` lorsqu'il réconcilie les secrets rotatés, donc une subvention `GetSecretValue`-uniquement monte au premier déploiement mais arrête de récupérer les rotations.458 La politique des secrets n'est nécessaire que lorsque les pods lisent eux-mêmes Secrets Manager, comme le fait le fournisseur AWS du pilote CSI Secrets Store en utilisant le compte de service du pod de montage ; supprimez-la si vous créez les secrets Kubernetes d'une autre façon. Le fournisseur a besoin des deux actions de la politique : il appelle `DescribeSecret` lorsqu'il réconcilie les secrets ayant fait l'objet d'une rotation, donc une autorisation limitée à `GetSecretValue` permet le montage au premier déploiement mais cesse de récupérer les rotations.

457 459 

458 Déployez la passerelle en tant que Deployment standard plus un Service et un Ingress, comme décrit dans [Déploiement Kubernetes](/docs/fr/claude-apps-gateway-deploy#kubernetes), avec :460 Déployez la passerelle en tant que Deployment standard plus un Service et un Ingress, comme décrit dans [Déploiement Kubernetes](/docs/fr/claude-apps-gateway-deploy#kubernetes), avec :

459 461 


476 </Step>478 </Step>

477 479 

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

479 La passerelle s'exécute maintenant, mais les développeurs ne peuvent pas la atteindre à partir de `/login` jusqu'à ce que l'URL de la passerelle soit sur leurs machines. Définissez `forceLoginMethod` et `forceLoginGatewayUrl` dans le [fichier de paramètres gérés](/docs/fr/claude-apps-gateway#set-the-gateway-url) que vous déployez sur chaque appareil via MDM. Il n'y a pas d'option de passerelle dans le sélecteur de connexion pour qu'un développeur sélectionne manuellement.481 La passerelle s'exécute maintenant, mais les développeurs ne peuvent pas l'atteindre à partir de `/login` tant que l'URL de la passerelle n'est pas sur leurs machines. Définissez `forceLoginMethod` et `forceLoginGatewayUrl` dans le [fichier de paramètres gérés](/docs/fr/claude-apps-gateway#set-the-gateway-url) que vous déployez sur chaque appareil via MDM. Il n'y a pas d'option de passerelle dans le sélecteur de connexion pour qu'un développeur sélectionne manuellement.

480 </Step>482 </Step>

481</Steps>483</Steps>

482 484 

Details

442`claude --cloud` et `claude --teleport` nécessitent une connexion avec un compte claude.ai. Si vous vous authentifiez avec une clé API, ou si vos détails de compte stockés sont obsolètes, vous voyez l'un des messages suivants :442`claude --cloud` et `claude --teleport` nécessitent une connexion avec un compte claude.ai. Si vous vous authentifiez avec une clé API, ou si vos détails de compte stockés sont obsolètes, vous voyez l'un des messages suivants :

443 443 

444* `Unable to get organization UUID`444* `Unable to get organization UUID`

445* Un message indiquant que l'authentification par clé API n'est pas suffisante445* ``Cloud sessions need a claude.ai sign-in. Run `claude auth login` (or /login in a local session), then try again.``

446* `Error loading Claude Code sessions` dans le sélecteur de session, lorsque vous exécutez `claude --teleport` sans ID de session446* `Error loading Claude Code sessions` dans le sélecteur de session, lorsque vous exécutez `claude --teleport` sans ID de session

447 447 

448Exécutez `/login` pour vous connecter avec votre compte claude.ai, puis réessayez la commande. Si l'erreur nomme votre fournisseur à la place, consultez le [tableau d'erreurs](#errors-when-sending-to-a-cloud-session) : les sessions cloud ne sont pas disponibles via les fournisseurs tiers.448Exécutez [`claude auth login`](/docs/fr/cli-reference#cli-commands) dans votre shell pour vous connecter avec votre compte claude.ai, puis réessayez la commande. Dans une session en cours, `/login` fait de même. Si l'erreur nomme votre fournisseur à la place, consultez le [tableau d'erreurs](#errors-when-sending-to-a-cloud-session) : les sessions cloud ne sont pas disponibles via les fournisseurs tiers.

449 

450De la v2.1.274 à la v2.1.289, le message de connexion était `Claude Code cloud sessions require authentication with a Claude.ai account. API key authentication is not sufficient. Please run /login to authenticate, or check your authentication status with /status.`

449 451 

450<h3 id="remote-control-session-expired-or-access-denied">452<h3 id="remote-control-session-expired-or-access-denied">

451 Session Remote Control expirée ou accès refusé453 Session Remote Control expirée ou accès refusé

Details

34 oneLiner: 'Project instructions Claude reads every session',34 oneLiner: 'Project instructions Claude reads every session',

35 when: 'Loaded into context at the start of every session',35 when: 'Loaded into context at the start of every session',

36 description: 'Project-specific instructions that shape how Claude works in this repository. Put your conventions, common commands, and architectural context here so Claude operates with the same assumptions your team does.',36 description: 'Project-specific instructions that shape how Claude works in this repository. Put your conventions, common commands, and architectural context here so Claude operates with the same assumptions your team does.',

37 tips: ['Target under 200 lines. Longer files still load in full but may reduce adherence', <>CLAUDE.md loads into every session. If something only matters for specific tasks, move it to a <A href="/docs/en/skills">skill</A> or a path-scoped <A href="/docs/en/memory#organize-rules-with-claude/rules/">rule</A> so it loads only when needed</>, 'List the commands you run most, like build, test, and format, so Claude knows them without you spelling them out each time', <>Run <C>/memory</C> to open and edit CLAUDE.md from within a session</>, <>Also works at <C>.claude/CLAUDE.md</C> if you prefer to keep the project root clean</>, <>If your repo already has an <C>AGENTS.md</C> for other coding agents, Claude Code <A href="/docs/en/memory#agents-md">can read that</A> on its own or alongside CLAUDE.md</>],37 tips: ['Target under 200 lines. Longer files still load in full but may reduce adherence', <>CLAUDE.md loads into every session. If something only matters for specific tasks, move it to a <A href="/docs/en/skills">skill</A> or a path-scoped <A href="/docs/en/memory#organize-rules-with-claude/rules/">rule</A> so it loads only when needed</>, 'List the commands you run most, like build, test, and format, so Claude knows them without you spelling them out each time', <>Run <C>/memory</C> to open and edit CLAUDE.md from within a session</>, <>Also works at <C>.claude/CLAUDE.md</C> if you prefer to keep the project root clean</>, <>If your repo already has an <C>AGENTS.md</C> for other coding agents, Claude Code <A href="/docs/en/memory#agents-md">can read that</A> in place of a <C>CLAUDE.md</C></>],

38 exampleIntro: 'This example is for a TypeScript and React project. It lists the build and test commands, the framework conventions Claude should follow, and project-specific rules like export style and file layout.',38 exampleIntro: 'This example is for a TypeScript and React project. It lists the build and test commands, the framework conventions Claude should follow, and project-specific rules like export style and file layout.',

39 example: `# Project conventions39 example: `# Project conventions

40 40 


1434 1434 

1435Sur Windows, `~/.claude` se résout en `%USERPROFILE%\.claude`. Si vous définissez [`CLAUDE_CONFIG_DIR`](/docs/fr/env-vars), chaque chemin `~/.claude` sur cette page se trouve sous ce répertoire à la place.1435Sur Windows, `~/.claude` se résout en `%USERPROFILE%\.claude`. Si vous définissez [`CLAUDE_CONFIG_DIR`](/docs/fr/env-vars), chaque chemin `~/.claude` sur cette page se trouve sous ce répertoire à la place.

1436 1436 

1437La plupart des utilisateurs ne modifient que `CLAUDE.md` et `settings.json`. Si votre référentiel possède déjà un `AGENTS.md` pour d'autres agents de codage, Claude Code [peut le lire](/docs/fr/memory#agents-md) seul ou aux côtés de `CLAUDE.md`. Le reste du répertoire est optionnel : ajoutez des skills, des rules ou des subagents selon vos besoins.1437La plupart des utilisateurs ne modifient que `CLAUDE.md` et `settings.json`. Si votre dépôt possède déjà un `AGENTS.md` pour d'autres agents de codage, Claude Code [peut le lire](/docs/fr/memory#agents-md) à la place d'un `CLAUDE.md`. Le reste du répertoire est optionnel : ajoutez des skills, des règles ou des sous-agents selon vos besoins.

1438 1438 

1439<h2 id="explore-the-directory">1439<h2 id="explore-the-directory">

1440 Explorez le répertoire1440 Explorez le répertoire


1454| - | - | - |1454| - | - | - |

1455| `managed-settings.json` | Au niveau du système, varie selon le système d'exploitation | Paramètres appliqués par l'entreprise que vous ne pouvez pas remplacer, à l'exception de [quelques cas particuliers](/docs/fr/settings#security-keys-where-the-stricter-value-applies). Consultez [où enregistrer le fichier](/docs/fr/managed-settings#deploy-a-managed-settings-file) et [quelle source gérée Claude Code utilise](/docs/fr/managed-settings#precedence-within-the-managed-tier). |1455| `managed-settings.json` | Au niveau du système, varie selon le système d'exploitation | Paramètres appliqués par l'entreprise que vous ne pouvez pas remplacer, à l'exception de [quelques cas particuliers](/docs/fr/settings#security-keys-where-the-stricter-value-applies). Consultez [où enregistrer le fichier](/docs/fr/managed-settings#deploy-a-managed-settings-file) et [quelle source gérée Claude Code utilise](/docs/fr/managed-settings#precedence-within-the-managed-tier). |

1456| `CLAUDE.local.md` | Racine du projet | Vos préférences privées pour ce projet, chargées aux côtés de CLAUDE.md. Créez-le manuellement et ajoutez-le à `.gitignore`. |1456| `CLAUDE.local.md` | Racine du projet | Vos préférences privées pour ce projet, chargées aux côtés de CLAUDE.md. Créez-le manuellement et ajoutez-le à `.gitignore`. |

1457| `AGENTS.md` | Racine du projet, `.claude/`, ou n'importe quel répertoire | Instructions de projet que vous écrivez pour les agents de codage IA. Claude Code peut [le charger](/docs/fr/memory#agents-md) de lui-même ou aux côtés de `CLAUDE.md`. |1457| `AGENTS.md` | Racine du projet, `.claude/`, ou n'importe quel répertoire | Instructions de projet que vous écrivez pour les agents de codage IA. Claude Code peut [le charger](/docs/fr/memory#agents-md) à la place d'un `CLAUDE.md`. |

1458| Plugins installés | `~/.claude/plugins` | Marketplaces clonées, versions de plugins installées, l'enregistrement d'installation `installed_plugins.json` et données par plugin, gérées par les commandes `claude plugin`. Les plugins [synchronisés à partir de votre compte claude.ai](/docs/fr/plugins/loading#synced-plugins) se téléchargent dans `~/.claude/plugins/synced/`. Pour un plugin installé à partir d'une source [`command`](/docs/fr/plugins/marketplace-reference#command-plugin-source) de marketplace en mode lien, Claude Code stocke les liens ici au lieu d'une copie, et les fichiers du plugin restent dans le répertoire que la commande affiche. Une source `command` nécessite Claude Code v2.1.229 ou version ultérieure. Un plugin listé par chemin relatif dans une marketplace que vous avez ajoutée à partir d'un chemin local [se charge également sur place](/docs/fr/plugins/loading#find-plugins-on-disk) à partir de son répertoire source plutôt qu'à partir d'une copie en cache. Consultez [mise en cache des plugins](/docs/fr/plugins/loading#find-plugins-on-disk) pour savoir comment les versions orphelines sont nettoyées. |1458| Plugins installés | `~/.claude/plugins` | Marketplaces clonées, versions de plugins installées, l'enregistrement d'installation `installed_plugins.json` et données par plugin, gérées par les commandes `claude plugin`. Les plugins [synchronisés à partir de votre compte claude.ai](/docs/fr/plugins/loading#synced-plugins) se téléchargent dans `~/.claude/plugins/synced/`. Pour un plugin installé à partir d'une source [`command`](/docs/fr/plugins/marketplace-reference#command-plugin-source) de marketplace en mode lien, Claude Code stocke les liens ici au lieu d'une copie, et les fichiers du plugin restent dans le répertoire que la commande affiche. Une source `command` nécessite Claude Code v2.1.229 ou version ultérieure. Un plugin listé par chemin relatif dans une marketplace que vous avez ajoutée à partir d'un chemin local [se charge également sur place](/docs/fr/plugins/loading#find-plugins-on-disk) à partir de son répertoire source plutôt qu'à partir d'une copie en cache. Consultez [mise en cache des plugins](/docs/fr/plugins/loading#find-plugins-on-disk) pour savoir comment les versions orphelines sont nettoyées. |

1459 1459 

1460`~/.claude` contient également les données que Claude Code écrit au fur et à mesure que vous travaillez : transcriptions, historique des invites, instantanés de fichiers, caches et journaux. Consultez [données d'application](#application-data) ci-dessous.1460`~/.claude` contient également les données que Claude Code écrit au fur et à mesure que vous travaillez : transcriptions, historique des invites, instantanés de fichiers, caches et journaux. Consultez [données d'application](#application-data) ci-dessous.

Details

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

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

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

34| `claude daemon logs` | Suivre le fichier de log du [superviseur](/docs/fr/agent-view#the-supervisor-process) de session d'arrière-plan, `~/.claude/daemon.log`, en imprimant les nouvelles lignes à mesure qu'elles arrivent jusqu'à ce que vous appuyiez sur `Ctrl+C` | `claude daemon logs` |

35| `claude daemon run` | Exécuter le [superviseur](/docs/fr/agent-view#the-supervisor-process) de session d'arrière-plan au premier plan de ce terminal, en imprimant son log | `claude daemon run` |

34| `claude daemon status` | Imprimer l'état du [superviseur](/docs/fr/agent-view#the-supervisor-process) de session d'arrière-plan, la version, le répertoire socket, et le nombre de workers pour les diagnostics. Quitte avec 1 si le superviseur n'est pas en cours d'exécution | `claude daemon status` |36| `claude daemon status` | Imprimer l'état du [superviseur](/docs/fr/agent-view#the-supervisor-process) de session d'arrière-plan, la version, le répertoire socket, et le nombre de workers pour les diagnostics. Quitte avec 1 si le superviseur n'est pas en cours d'exécution | `claude daemon status` |

35| `claude daemon stop --any` | Arrêter le [superviseur](/docs/fr/agent-view#the-supervisor-process) de session d'arrière-plan et les sessions qu'il héberge. Passez `--keep-workers` pour laisser les sessions d'arrière-plan en cours d'exécution afin que le superviseur suivant se reconnecte à elles. `--any` confirme l'arrêt d'un superviseur à la demande, qui est la valeur par défaut. Utilisez ceci pour récupérer d'un [superviseur qui ne répond pas](/docs/fr/agent-view#agent-view-says-the-background-service-did-not-respond) | `claude daemon stop --any --keep-workers` |37| `claude daemon stop --any` | Arrêter le [superviseur](/docs/fr/agent-view#the-supervisor-process) de session d'arrière-plan et les sessions qu'il héberge. Passez `--keep-workers` pour laisser les sessions d'arrière-plan en cours d'exécution afin que le superviseur suivant se reconnecte à elles. `--any` confirme l'arrêt d'un superviseur à la demande, qui est la valeur par défaut. Utilisez ceci pour récupérer d'un [superviseur qui ne répond pas](/docs/fr/agent-view#agent-view-says-the-background-service-did-not-respond) | `claude daemon stop --any --keep-workers` |

36| `claude doctor` | Imprimer les diagnostics d'installation et de paramètres en lecture seule depuis le terminal sans démarrer une session, y compris la vérification de la santé de l'installation, les erreurs de validation du fichier de paramètres, et l'éligibilité à Remote Control. Pour la vérification de configuration en session qui peut également appliquer des correctifs, exécutez [`/doctor`](/docs/fr/commands#all-commands) | `claude doctor` |38| `claude doctor` | Imprimer les diagnostics d'installation et de paramètres en lecture seule depuis le terminal sans démarrer une session, y compris la vérification de la santé de l'installation, les erreurs de validation du fichier de paramètres, et l'éligibilité à Remote Control. Pour la vérification de configuration en session qui peut également appliquer des correctifs, exécutez [`/doctor`](/docs/fr/commands#all-commands) | `claude doctor` |

Details

1586 1586 

1587La session parcourt un flux réaliste avec des comptages de jetons représentatifs :1587La session parcourt un flux réaliste avec des comptages de jetons représentatifs :

1588 1588 

1589* **Avant que vous ne tapiez quoi que ce soit** : CLAUDE.md, la mémoire automatique, les noms d'outils MCP, et les descriptions de compétences se chargent tous dans le contexte. [Les fichiers AGENTS.md](/docs/fr/memory#agents-md) peuvent également se charger, seuls ou aux côtés de CLAUDE.md. Votre propre configuration peut ajouter plus ici, comme un [style de sortie](/docs/fr/output-styles) ou du texte provenant de [`--append-system-prompt`](/docs/fr/cli-reference).1589* **Avant que vous ne tapiez quoi que ce soit** : CLAUDE.md, la mémoire automatique, les noms d'outils MCP, et les descriptions de skills se chargent tous dans le contexte. [Les fichiers AGENTS.md](/docs/fr/memory#agents-md) peuvent se charger à la place de CLAUDE.md. Votre propre configuration peut ajouter plus ici, comme un [style de sortie](/docs/fr/output-styles) ou du texte provenant de [`--append-system-prompt`](/docs/fr/cli-reference).

1590* **Pendant que Claude travaille** : chaque lecture de fichier s'ajoute au contexte, les [règles délimitées par chemin](/docs/fr/memory#path-specific-rules) se chargent automatiquement aux côtés des fichiers correspondants, et un [hook PostToolUse](/docs/fr/hooks-guide) s'exécute après chaque modification.1590* **Pendant que Claude travaille** : chaque lecture de fichier s'ajoute au contexte, les [règles délimitées par chemin](/docs/fr/memory#path-specific-rules) se chargent automatiquement aux côtés des fichiers correspondants, et un [hook PostToolUse](/docs/fr/hooks-guide) s'exécute après chaque modification.

1591* **L'invite de suivi** : un [sous-agent](/docs/fr/sub-agents) gère la recherche dans sa propre fenêtre de contexte séparée, de sorte que les lectures de fichiers volumineux restent en dehors de la vôtre. Seul le résumé et une petite remorque de métadonnées reviennent.1591* **L'invite de suivi** : un [sous-agent](/docs/fr/sub-agents) gère la recherche dans sa propre fenêtre de contexte séparée, de sorte que les lectures de fichiers volumineux restent en dehors de la vôtre. Seul le résumé et une petite remorque de métadonnées reviennent.

1592* **À la fin de la présentation** : vous exécutez `/compact`, qui remplace la conversation par un résumé structuré. La plupart du contenu de démarrage se recharge automatiquement ; le tableau ci-dessous montre ce qui se passe pour chaque mécanisme.1592* **À la fin de la présentation** : vous exécutez `/compact`, qui remplace la conversation par un résumé structuré. La plupart du contenu de démarrage se recharge automatiquement ; le tableau ci-dessous montre ce qui se passe pour chaque mécanisme.

desktop.md +1 −1

Details

1092Pour voir quelle version de l'application de bureau vous exécutez :1092Pour voir quelle version de l'application de bureau vous exécutez :

1093 1093 

1094* **macOS** : cliquez sur **Claude** dans la barre de menu, puis **À propos de Claude**1094* **macOS** : cliquez sur **Claude** dans la barre de menu, puis **À propos de Claude**

1095* **Windows** : cliquez sur **Aide**, puis **À propos**1095* **Windows** : cliquez sur **Aide**, puis **À propos de Claude**

1096 1096 

1097Cliquez sur le numéro de version pour le copier dans votre presse-papiers.1097Cliquez sur le numéro de version pour le copier dans votre presse-papiers.

1098 1098 

Details

92* Enregistrer une capture d'écran avec **Cmd+S** ou un enregistrement d'écran avec **Cmd+R**, en utilisant les boutons de capture du volet ou les raccourcis ; les fichiers sont enregistrés sur votre Bureau92* Enregistrer une capture d'écran avec **Cmd+S** ou un enregistrement d'écran avec **Cmd+R**, en utilisant les boutons de capture du volet ou les raccourcis ; les fichiers sont enregistrés sur votre Bureau

93* Arrêter la diffusion en continu d'un appareil sans l'arrêter en cliquant sur **Detach simulator**, ce qui ramène le volet à son état **Attach simulator**93* Arrêter la diffusion en continu d'un appareil sans l'arrêter en cliquant sur **Detach simulator**, ce qui ramène le volet à son état **Attach simulator**

94 94 

95Pour régler le flux vidéo du simulateur, ouvrez le menu **Display** du volet. Réduisez la **Frame rate** ou la **Resolution** si le volet surcharge votre Mac. Ces deux paramètres modifient la façon dont le volet affiche l'appareil, pas la façon dont l'application s'exécute.95Si le volet affiche un menu **Display**, utilisez-le pour régler le flux vidéo du simulateur. Réduisez la **Frame rate** ou la **Resolution** si le volet surcharge votre Mac. Ces deux paramètres modifient la façon dont le volet affiche l'appareil, pas la façon dont l'application s'exécute.

96 96 

97Vous et Claude pilotez le même appareil, donc vos appuis modifient l'état de l'application que Claude voit. Pour que Claude vérifie un écran spécifique, accédez-y en appuyant, puis demandez. Pendant que Claude pilote l'appareil, le volet affiche un badge **Claude is using this device** au-dessus de l'écran ; attendez avant d'appuyer jusqu'à ce que le badge disparaisse, afin que le résultat reflète l'application plutôt que votre entrée.97Vous et Claude pilotez le même appareil, donc vos appuis modifient l'état de l'application que Claude voit. Pour que Claude vérifie un écran spécifique, accédez-y en appuyant, puis demandez. Pendant que Claude pilote l'appareil, le volet affiche un badge **Claude is using this device** au-dessus de l'écran ; attendez avant d'appuyer jusqu'à ce que le badge disparaisse, afin que le résultat reflète l'application plutôt que votre entrée.

98 98 

env-vars.md +1 −0

Details

354| `CLAUDE_CODE_PERFORCE_MODE` | Définissez-la sur `1` pour activer une protection en écriture adaptée à Perforce. Lorsqu'elle est définie, Edit, Write et NotebookEdit échouent avec une indication `p4 edit <file>` si le fichier cible n'a pas le bit d'écriture propriétaire, que Perforce retire sur les fichiers synchronisés jusqu'à ce que `p4 edit` les ouvre. Cela empêche Claude Code de contourner le suivi des modifications de Perforce |354| `CLAUDE_CODE_PERFORCE_MODE` | Définissez-la sur `1` pour activer une protection en écriture adaptée à Perforce. Lorsqu'elle est définie, Edit, Write et NotebookEdit échouent avec une indication `p4 edit <file>` si le fichier cible n'a pas le bit d'écriture propriétaire, que Perforce retire sur les fichiers synchronisés jusqu'à ce que `p4 edit` les ouvre. Cela empêche Claude Code de contourner le suivi des modifications de Perforce |

355| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Remplace le répertoire racine des plugins. Malgré son nom, cette variable définit le répertoire parent, et non le cache lui-même : les marketplaces et le cache des plugins se trouvent dans des sous-répertoires de ce chemin. Par défaut `~/.claude/plugins` |355| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Remplace le répertoire racine des plugins. Malgré son nom, cette variable définit le répertoire parent, et non le cache lui-même : les marketplaces et le cache des plugins se trouvent dans des sous-répertoires de ce chemin. Par défaut `~/.claude/plugins` |

356| `CLAUDE_CODE_PLUGIN_DIRS` | Répertoires de plugins à charger pour la session, chacun étant chargé comme le ferait un flag [`--plugin-dir`](/docs/fr/plugins/cli-reference#flags-that-load-a-plugin-for-one-session). Séparez plusieurs chemins par `:` sous Unix ou `;` sous Windows. Indiquez chaque chemin sous forme de chemin absolu ou faites-le commencer par `~`, car Claude Code ignore les chemins relatifs. Nécessite Claude Code v2.1.280 ou version ultérieure. Consultez [Charger un plugin pour une session](/docs/fr/plugins/create#load-a-directory-or-archive-for-one-session) |356| `CLAUDE_CODE_PLUGIN_DIRS` | Répertoires de plugins à charger pour la session, chacun étant chargé comme le ferait un flag [`--plugin-dir`](/docs/fr/plugins/cli-reference#flags-that-load-a-plugin-for-one-session). Séparez plusieurs chemins par `:` sous Unix ou `;` sous Windows. Indiquez chaque chemin sous forme de chemin absolu ou faites-le commencer par `~`, car Claude Code ignore les chemins relatifs. Nécessite Claude Code v2.1.280 ou version ultérieure. Consultez [Charger un plugin pour une session](/docs/fr/plugins/create#load-a-directory-or-archive-for-one-session) |

357| `CLAUDE_CODE_PLUGIN_DIR_WATCH` | Contrôle si Claude Code recharge un [mod](/docs/fr/plugins/mods/overview) lorsque les fichiers du mod changent. Le rechargement s'applique à un mod que vous chargez depuis un répertoire avec `--plugin-dir`, et il est activé par défaut dans les sessions interactives. Définissez sur `1` pour l'activer également dans les sessions non interactives, ou sur `0` pour le désactiver dans toutes les sessions. Requiert Claude Code v2.1.287 ou ultérieur. Voir [paramètres et variables d'environnement des mods](/docs/fr/plugins/mods/reference#settings-and-environment-variables) |

357| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Délai d'expiration en millisecondes pour le clonage ou l'actualisation d'une marketplace de plugins (par défaut : 120000). Augmentez cette valeur pour les dépôts volumineux ou les connexions réseau lentes. Consultez [Git clone timed out](/docs/fr/plugins/troubleshooting#git-clone-timed-out-after-120s) |358| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Délai d'expiration en millisecondes pour le clonage ou l'actualisation d'une marketplace de plugins (par défaut : 120000). Augmentez cette valeur pour les dépôts volumineux ou les connexions réseau lentes. Consultez [Git clone timed out](/docs/fr/plugins/troubleshooting#git-clone-timed-out-after-120s) |

358| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Définissez-la sur `1` pour ne pas tenter de re-cloner et continuer à utiliser le checkout existant de la marketplace lorsqu'une actualisation de marketplace ne parvient pas à joindre le dépôt distant ou à s'y authentifier. Utile dans les environnements hors ligne ou isolés (airgapped), où un nouveau clonage échouerait de la même manière. Consultez [Les mises à jour de marketplace échouent dans les environnements hors ligne](/docs/fr/plugins/troubleshooting#marketplace-updates-keep-failing-offline) |359| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Définissez-la sur `1` pour ne pas tenter de re-cloner et continuer à utiliser le checkout existant de la marketplace lorsqu'une actualisation de marketplace ne parvient pas à joindre le dépôt distant ou à s'y authentifier. Utile dans les environnements hors ligne ou isolés (airgapped), où un nouveau clonage échouerait de la même manière. Consultez [Les mises à jour de marketplace échouent dans les environnements hors ligne](/docs/fr/plugins/troubleshooting#marketplace-updates-keep-failing-offline) |

359| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Définissez-la sur `1` pour cloner les sources GitHub en notation abrégée `owner/repo` via HTTPS au lieu de SSH. S'applique à l'installation et à la mise à jour des plugins, ainsi qu'à `/plugin marketplace add` et `update`. Utile dans les runners CI, les conteneurs ou tout environnement sans clé SSH configurée pour `github.com` |360| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Définissez-la sur `1` pour cloner les sources GitHub en notation abrégée `owner/repo` via HTTPS au lieu de SSH. S'applique à l'installation et à la mise à jour des plugins, ainsi qu'à `/plugin marketplace add` et `update`. Utile dans les runners CI, les conteneurs ou tout environnement sans clé SSH configurée pour `github.com` |

errors.md +2 −3

Details

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

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

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

200| `Cloud sessions need a claude.ai sign-in` | [Impossible d'obtenir l'UUID de l'organisation](/docs/fr/claude-code-on-the-web#unable-to-get-organization-uuid) |

200| `Error: --json-schema is not a valid JSON Schema` | [Erreurs de ligne de commande](#the-json-schema-value-is-not-a-valid-json-schema) |201| `Error: --json-schema is not a valid JSON Schema` | [Erreurs de ligne de commande](#the-json-schema-value-is-not-a-valid-json-schema) |

201| `Error: Invalid --agents configuration:` | [Erreurs de ligne de commande](#invalid-agents-configuration) |202| `Error: Invalid --agents configuration:` | [Erreurs de ligne de commande](#invalid-agents-configuration) |

202| `Error: --agents takes a JSON object, or a file path only with --print (-p)` | [Erreurs de ligne de commande](#invalid-agents-configuration) |203| `Error: --agents takes a JSON object, or a file path only with --print (-p)` | [Erreurs de ligne de commande](#invalid-agents-configuration) |


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

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

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

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

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

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

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


405* Une [réponse en streaming Amazon Bedrock avec un type de contenu inattendu](#bedrock-streaming-response-has-an-unexpected-content-type), parce que la passerelle ou le proxy réécrivant la réponse réécrirait la nouvelle tentative de la même manière. Nécessite Claude Code v2.1.208 ou ultérieur.407* Une [réponse en streaming Amazon Bedrock avec un type de contenu inattendu](#bedrock-streaming-response-has-an-unexpected-content-type), parce que la passerelle ou le proxy réécrivant la réponse réécrirait la nouvelle tentative de la même manière. Nécessite Claude Code v2.1.208 ou ultérieur.

406* Une nouvelle tentative sans streaming d'une requête en streaming défaillante qui obtient un statut de succès mais [aucun message API Claude dans le corps](#api-returned-an-empty-or-malformed-response). Claude Code termine le tour avec cette erreur.408* Une nouvelle tentative sans streaming d'une requête en streaming défaillante qui obtient un statut de succès mais [aucun message API Claude dans le corps](#api-returned-an-empty-or-malformed-response). Claude Code termine le tour avec cette erreur.

407* Une requête que la vérification de politique de votre organisation a refusée, qui apparaît comme une ligne `API Error:` portant le message de refus. Les administrateurs de votre organisation configurent la vérification avec [Inference hooks](https://platform.claude.com/docs/en/manage-claude/inference-hooks), une fonctionnalité Claude Enterprise, et le message se termine par les instructions qu'ils ont configurées, ou par défaut vous dit de les contacter. Claude Code ne renvoie pas la requête refusée au même modèle ou à un [modèle de secours](/docs/fr/model-config#fallback-model-chains), parce que le refus concerne le contenu de la requête plutôt que le modèle. Avant v2.1.239, Claude Code pouvait renvoyer une requête refusée, sans streaming ou sur un modèle de secours configuré, avant de vous afficher le refus.409* Une requête que la vérification de politique de votre organisation a refusée, qui apparaît comme une ligne `API Error:` portant le message de refus. Les administrateurs de votre organisation configurent la vérification avec [Inference hooks](https://platform.claude.com/docs/en/manage-claude/inference-hooks), une fonctionnalité Claude Enterprise, et le message se termine par les instructions qu'ils ont configurées, ou par défaut vous dit de les contacter. Claude Code ne renvoie pas la requête refusée au même modèle ou à un [modèle de secours](/docs/fr/model-config#fallback-model-chains), parce que le refus concerne le contenu de la requête plutôt que le modèle. Avant v2.1.239, Claude Code pouvait renvoyer une requête refusée, sans streaming ou sur un modèle de secours configuré, avant de vous afficher le refus.

408* Une réponse que le filtre de contenu de sortie de l'API a bloquée. Claude Code affiche immédiatement [Output blocked by content filtering policy](#output-blocked-by-content-filtering-policy) et ne réessaie pas ni ne renvoie cette requête.

409 410 

410<h3 id="what-you-see-while-claude-code-retries-or-waits">411<h3 id="what-you-see-while-claude-code-retries-or-waits">

411 Ce que vous voyez pendant que Claude Code réessaie ou attend412 Ce que vous voyez pendant que Claude Code réessaie ou attend


2905API Error: Output blocked by content filtering policy2906API Error: Output blocked by content filtering policy

2906```2907```

2907 2908 

2908Claude Code affiche l'erreur dès que le blocage arrive et termine la requête à ce moment-là. Il ne réessaie pas la requête, ne la renvoie pas sans streaming et ne bascule pas vers un [modèle de secours](/docs/fr/model-config#fallback-model-chains). Avant v2.1.285, Claude Code pouvait renvoyer et réessayer une requête bloquée, parfois pendant plusieurs minutes, avant de vous afficher l'erreur.

2909 

2910**Que faire :**2909**Que faire :**

2911 2910 

2912* Reformulez votre dernier message ou adoptez une approche différente2911* Reformulez votre dernier message ou adoptez une approche différente

glossary.md +1 −1

Details

130 130 

131Un fichier markdown d'instructions persistantes que vous écrivez pour Claude, chargé au début de chaque session en tant que message utilisateur après l'invite système. Mettez les conventions de projet, les notes d'architecture et les règles « toujours faire X » ici. Project-root CLAUDE.md survit à [compaction](#compaction) et est relu à nouveau à partir du disque après.131Un fichier markdown d'instructions persistantes que vous écrivez pour Claude, chargé au début de chaque session en tant que message utilisateur après l'invite système. Mettez les conventions de projet, les notes d'architecture et les règles « toujours faire X » ici. Project-root CLAUDE.md survit à [compaction](#compaction) et est relu à nouveau à partir du disque après.

132 132 

133Vous pouvez placer CLAUDE.md au niveau du projet dans `./CLAUDE.md` ou `./.claude/CLAUDE.md`, au niveau utilisateur dans `~/.claude/CLAUDE.md`, ou comme [managed policy](#managed-settings) pour votre organisation. Tous les fichiers découverts sont concaténés dans le contexte plutôt que de se remplacer les uns les autres, ordonnés du champ d'application le plus large au plus spécifique. Claude Code peut également charger les fichiers [AGENTS.md](#agents-md) d'un projet, seuls ou aux côtés de CLAUDE.md.133Vous pouvez placer CLAUDE.md dans la portée projet dans `./CLAUDE.md` ou `./.claude/CLAUDE.md`, dans la portée utilisateur dans `~/.claude/CLAUDE.md`, ou comme [politique gérée](#managed-settings) pour votre organisation. Tous les fichiers découverts sont concaténés dans le contexte plutôt que de se remplacer les uns les autres, ordonnés de la portée la plus large à la plus spécifique. Claude Code peut également charger les fichiers [AGENTS.md](#agents-md) d'un projet à la place de CLAUDE.md.

134 134 

135En savoir plus : [CLAUDE.md files](/docs/fr/memory#claude-md-files)135En savoir plus : [CLAUDE.md files](/docs/fr/memory#claude-md-files)

136 136 

Details

210export VERTEX_REGION_CLAUDE_4_6_SONNET=europe-west1210export VERTEX_REGION_CLAUDE_4_6_SONNET=europe-west1

211```211```

212 212 

213La plupart des versions de modèle ont une variable `VERTEX_REGION_CLAUDE_*` correspondante. Consultez la [référence des variables d'environnement](/docs/fr/env-vars) pour la liste complète. Vérifiez [Google Cloud's Agent Platform Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) pour déterminer quels modèles prennent en charge les points de terminaison globaux par rapport aux points de terminaison régionaux uniquement.213La plupart des versions de modèle ont une variable `VERTEX_REGION_CLAUDE_*` correspondante. Consultez la [référence des variables d'environnement](/docs/fr/env-vars#variables) pour la liste complète. Vérifiez [Google Cloud's Agent Platform Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) pour déterminer quels modèles prennent en charge les endpoints globaux par rapport aux endpoints régionaux uniquement.

214 214 

215Si une valeur de région ne ressemble pas à un nom de région ou d'emplacement, Claude Code la traite comme non définie. Par exemple, Claude Code traite une valeur contenant une barre oblique, un point ou un espace comme non définie. Claude Code revient à une source différente pour chaque variable :215Si une valeur de région ne ressemble pas à un nom de région ou d'emplacement, Claude Code la traite comme non définie. Par exemple, Claude Code traite une valeur contenant une barre oblique, un point ou un espace comme non définie. Claude Code revient à une source différente pour chaque variable :

216 216 


364 364 

365* Confirmez que le modèle est activé dans [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden)365* Confirmez que le modèle est activé dans [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden)

366* Vérifiez que le modèle est disponible dans l'emplacement que vous avez spécifié. Certains modèles ne sont proposés que sur les emplacements `global` ou multi-régions tels que `eu` et `us`, pas dans les régions spécifiques366* Vérifiez que le modèle est disponible dans l'emplacement que vous avez spécifié. Certains modèles ne sont proposés que sur les emplacements `global` ou multi-régions tels que `eu` et `us`, pas dans les régions spécifiques

367* Si vous utilisez `CLOUD_ML_REGION=global`, vérifiez que vos modèles prennent en charge les points de terminaison globaux dans [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) sous « Fonctionnalités prises en charge ». Pour les modèles qui ne prennent pas en charge les points de terminaison globaux, soit :367* Si vous utilisez `CLOUD_ML_REGION=global`, vérifiez que vos modèles prennent en charge les endpoints globaux dans [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) sous « Fonctionnalités prises en charge ». Pour les modèles qui ne prennent pas en charge les endpoints globaux, soit :

368 * Spécifiez un modèle pris en charge via `ANTHROPIC_MODEL` ou `ANTHROPIC_DEFAULT_HAIKU_MODEL`, soit368 * Spécifiez un modèle pris en charge via `ANTHROPIC_MODEL` ou `ANTHROPIC_DEFAULT_HAIKU_MODEL`, soit

369 * Définissez une région ou un emplacement multi-région à l'aide des variables d'environnement `VERTEX_REGION_<MODEL_NAME>`369 * Définissez une région ou un emplacement multi-région à l'aide de la variable `VERTEX_REGION_CLAUDE_*` du modèle, répertoriée dans la [référence des variables d'environnement](/docs/fr/env-vars#variables)

370 370 

371Si vous rencontrez des erreurs 429 :371Si vous rencontrez des erreurs 429 :

372 372 

hooks.md +4 −5

Details

63| `DirectoryAdded` | Quand un répertoire de travail est ajouté en milieu de session via `/add-dir` ou la demande de contrôle SDK `register_repo_root` |63| `DirectoryAdded` | Quand un répertoire de travail est ajouté en milieu de session via `/add-dir` ou la demande de contrôle SDK `register_repo_root` |

64| `FileChanged` | Quand un fichier surveillé change sur le disque. Le champ `matcher` spécifie les noms de fichiers à surveiller |64| `FileChanged` | Quand un fichier surveillé change sur le disque. Le champ `matcher` spécifie les noms de fichiers à surveiller |

65| `WorktreeCreate` | Quand un worktree est en cours de création via `--worktree`, `isolation: "worktree"`, ou pour une session en arrière-plan. Remplace le comportement git par défaut |65| `WorktreeCreate` | Quand un worktree est en cours de création via `--worktree`, `isolation: "worktree"`, ou pour une session en arrière-plan. Remplace le comportement git par défaut |

66| `WorktreeRemove` | Quand un worktree est supprimé à la sortie de la session, quand un sous-agent se termine, ou quand vous supprimez une session en arrière-plan |66| `WorktreeRemove` | Quand un worktree créé par un hook `WorktreeCreate` est en cours de suppression |

67| `PreCompact` | Avant la compaction du contexte |67| `PreCompact` | Avant la compaction du contexte |

68| `PostCompact` | Après la compaction du contexte est complétée |68| `PostCompact` | Après la compaction du contexte est complétée |

69| `PreModelSwitch` | Avant que Claude Code applique un changement de modèle que vous ou un client avez demandé. Peut bloquer le changement |69| `PreModelSwitch` | Avant que Claude Code applique un changement de modèle que vous ou un client avez demandé. Peut bloquer le changement |


3274 WorktreeRemove3274 WorktreeRemove

3275</h3>3275</h3>

3276 3276 

3277S'exécute lorsqu'un worktree est en cours de suppression. C'est le pendant de nettoyage de [WorktreeCreate](#worktreecreate). L'événement se déclenche lorsque :3277S'exécute lorsque Claude Code nettoie un worktree créé par votre hook [`WorktreeCreate`](#worktreecreate). L'événement se déclenche lorsque :

3278 3278 

3279* vous quittez une session `--worktree` et choisissez de la supprimer3279* Vous quittez une session `--worktree` et choisissez de supprimer le worktree

3280* un sous-agent avec `isolation: "worktree"` se termine3280* Vous supprimez une [session en arrière-plan](/docs/fr/agent-view#what-deleting-a-session-removes) qui s'exécute dans le worktree

3281* vous supprimez une [session en arrière-plan](/docs/fr/agent-view#what-deleting-a-session-removes) dont le worktree a été créé par le hook

3282 3281 

3283Pour les worktrees basés sur git, Claude Code gère automatiquement le nettoyage avec `git worktree remove`. Si vous avez configuré un hook WorktreeCreate, associez-le à un hook WorktreeRemove pour contrôler le nettoyage des worktrees qu'il crée :3282Pour les worktrees basés sur git, Claude Code gère automatiquement le nettoyage avec `git worktree remove`. Si vous avez configuré un hook WorktreeCreate, associez-le à un hook WorktreeRemove pour contrôler le nettoyage des worktrees qu'il crée :

3284 3283 

hooks-guide.md +1 −1

Details

526| `DirectoryAdded` | Quand un répertoire de travail est ajouté en milieu de session via `/add-dir` ou la demande de contrôle SDK `register_repo_root` |526| `DirectoryAdded` | Quand un répertoire de travail est ajouté en milieu de session via `/add-dir` ou la demande de contrôle SDK `register_repo_root` |

527| `FileChanged` | Quand un fichier surveillé change sur le disque. Le champ `matcher` spécifie les noms de fichiers à surveiller |527| `FileChanged` | Quand un fichier surveillé change sur le disque. Le champ `matcher` spécifie les noms de fichiers à surveiller |

528| `WorktreeCreate` | Quand un worktree est en cours de création via `--worktree`, `isolation: "worktree"`, ou pour une session en arrière-plan. Remplace le comportement git par défaut |528| `WorktreeCreate` | Quand un worktree est en cours de création via `--worktree`, `isolation: "worktree"`, ou pour une session en arrière-plan. Remplace le comportement git par défaut |

529| `WorktreeRemove` | Quand un worktree est supprimé à la sortie de la session, quand un sous-agent se termine, ou quand vous supprimez une session en arrière-plan |529| `WorktreeRemove` | Quand un worktree créé par un hook `WorktreeCreate` est en cours de suppression |

530| `PreCompact` | Avant la compaction du contexte |530| `PreCompact` | Avant la compaction du contexte |

531| `PostCompact` | Après la compaction du contexte est complétée |531| `PostCompact` | Après la compaction du contexte est complétée |

532| `PreModelSwitch` | Avant que Claude Code applique un changement de modèle que vous ou un client avez demandé. Peut bloquer le changement |532| `PreModelSwitch` | Avant que Claude Code applique un changement de modèle que vous ou un client avez demandé. Peut bloquer le changement |

Details

76* **Votre projet.** Les fichiers de votre répertoire et sous-répertoires, plus les fichiers ailleurs avec votre permission.76* **Votre projet.** Les fichiers de votre répertoire et sous-répertoires, plus les fichiers ailleurs avec votre permission.

77* **Votre terminal.** N'importe quelle commande que vous pourriez exécuter : outils de build, git, gestionnaires de paquets, utilitaires système, scripts. Si vous pouvez le faire à partir de la ligne de commande, Claude aussi.77* **Votre terminal.** N'importe quelle commande que vous pourriez exécuter : outils de build, git, gestionnaires de paquets, utilitaires système, scripts. Si vous pouvez le faire à partir de la ligne de commande, Claude aussi.

78* **Votre état git.** La branche actuelle, les modifications non validées, et l'historique récent des commits.78* **Votre état git.** La branche actuelle, les modifications non validées, et l'historique récent des commits.

79* **Votre [CLAUDE.md](/docs/fr/memory).** Un fichier markdown où vous stockez les instructions spécifiques au projet, les conventions, et le contexte que Claude devrait connaître à chaque session. Si votre référentiel dispose d'un AGENTS.md pour d'autres agents de codage, Claude [peut le lire](/docs/fr/memory#agents-md) seul ou aux côtés de CLAUDE.md.79* **Votre [CLAUDE.md](/docs/fr/memory).** Un fichier markdown où vous stockez les instructions spécifiques au projet, les conventions, et le contexte que Claude devrait connaître à chaque session. Si votre dépôt dispose d'un AGENTS.md pour d'autres agents de codage, Claude [peut le lire](/docs/fr/memory#agents-md) à la place d'un CLAUDE.md.

80* **[Mémoire automatique](/docs/fr/memory#auto-memory).** Les apprentissages que Claude sauvegarde automatiquement au fur et à mesure que vous travaillez, comme vos préférences. Les 200 premières lignes ou 25 KB de MEMORY.md, selon ce qui vient en premier, se chargent au début de chaque session.80* **[Mémoire automatique](/docs/fr/memory#auto-memory).** Les apprentissages que Claude sauvegarde automatiquement au fur et à mesure que vous travaillez, comme vos préférences. Les 200 premières lignes ou 25 KB de MEMORY.md, selon ce qui vient en premier, se chargent au début de chaque session.

81* **Les extensions que vous configurez.** [Les serveurs MCP](/docs/fr/mcp) pour les services externes, [les skills](/docs/fr/skills) pour les workflows, [les subagents](/docs/fr/sub-agents) pour le travail délégué, et [Claude dans Chrome](/docs/fr/chrome) pour l'interaction avec le navigateur.81* **Les extensions que vous configurez.** [Les serveurs MCP](/docs/fr/mcp) pour les services externes, [les skills](/docs/fr/skills) pour les workflows, [les subagents](/docs/fr/sub-agents) pour le travail délégué, et [Claude dans Chrome](/docs/fr/chrome) pour l'interaction avec le navigateur.

82 82 

memory.md +2 −2

Details

8 8 

9Chaque session Claude Code commence avec une fenêtre de contexte vierge. Deux mécanismes transportent les connaissances d'une session à l'autre :9Chaque session Claude Code commence avec une fenêtre de contexte vierge. Deux mécanismes transportent les connaissances d'une session à l'autre :

10 10 

11* **Fichiers CLAUDE.md** : instructions que vous écrivez pour donner à Claude un contexte persistant. Claude peut également lire les fichiers [`AGENTS.md`](#agents-md) d'un référentiel, seuls ou aux côtés de CLAUDE.md11* **Fichiers CLAUDE.md** : instructions que vous écrivez pour donner à Claude un contexte persistant. Claude peut également lire les [fichiers `AGENTS.md`](#agents-md) d'un dépôt à la place de CLAUDE.md

12* **Mémoire automatique** : notes que Claude écrit lui-même en fonction de vos corrections et préférences12* **Mémoire automatique** : notes que Claude écrit lui-même en fonction de vos corrections et préférences

13 13 

14Cette page couvre comment :14Cette page couvre comment :

15 15 

16* [Écrire et organiser les fichiers CLAUDE.md](#claude-md-files)16* [Écrire et organiser les fichiers CLAUDE.md](#claude-md-files)

17* [Utiliser un fichier AGENTS.md existant](#agents-md) comme instructions de votre projet, seul ou aux côtés de CLAUDE.md17* [Utiliser un fichier AGENTS.md existant](#agents-md) comme instructions de votre projet

18* [Limiter les règles à des types de fichiers spécifiques](#organize-rules-with-claude/rules/) avec `.claude/rules/`18* [Limiter les règles à des types de fichiers spécifiques](#organize-rules-with-claude/rules/) avec `.claude/rules/`

19* [Configurer la mémoire automatique](#auto-memory) pour que Claude prenne des notes automatiquement19* [Configurer la mémoire automatique](#auto-memory) pour que Claude prenne des notes automatiquement

20* [Dépanner](#troubleshoot-memory-issues) quand les instructions ne sont pas suivies20* [Dépanner](#troubleshoot-memory-issues) quand les instructions ne sont pas suivies

overview.md +2 −2

Details

163 claude "commit my changes with a descriptive message"163 claude "commit my changes with a descriptive message"

164 ```164 ```

165 165 

166 En CI, vous pouvez automatiser l'examen du code et le triage des problèmes avec [GitHub Actions](/docs/fr/github-actions) ou [GitLab CI/CD](/docs/fr/gitlab-ci-cd).166 En CI, vous pouvez automatiser la revue de code et le triage des problèmes avec [GitHub Actions](/docs/fr/github-actions) ou [GitLab CI/CD](/docs/fr/gitlab-ci-cd).

167 </Accordion>167 </Accordion>

168 168 

169 <Accordion title="Connecter vos outils avec MCP" icon="plug">169 <Accordion title="Connecter vos outils avec MCP" icon="plug">


171 </Accordion>171 </Accordion>

172 172 

173 <Accordion title="Personnaliser avec des instructions, des skills et des hooks" icon="sliders">173 <Accordion title="Personnaliser avec des instructions, des skills et des hooks" icon="sliders">

174 [`CLAUDE.md`](/docs/fr/memory) est un fichier markdown que vous ajoutez à la racine de votre projet que Claude Code lit au début de chaque session. Utilisez-le pour définir les normes de codage, les décisions architecturales, les bibliothèques préférées et les listes de contrôle d'examen. Si votre référentiel possède déjà un `AGENTS.md` pour d'autres agents de codage, Claude Code [peut le lire](/docs/fr/memory#agents-md) seul ou aux côtés de `CLAUDE.md`. Claude construit également une [mémoire automatique](/docs/fr/memory#auto-memory) au fur et à mesure qu'il travaille, en sauvegardant les apprentissages entre les sessions sans que vous ayez à écrire quoi que ce soit.174 [`CLAUDE.md`](/docs/fr/memory) est un fichier markdown que vous ajoutez à la racine de votre projet et que Claude Code lit au début de chaque session. Utilisez-le pour définir les normes de codage, les décisions architecturales, les bibliothèques préférées et les listes de contrôle de revue. Si votre dépôt possède déjà un `AGENTS.md` pour d'autres agents de codage, Claude Code [peut le lire](/docs/fr/memory#agents-md) à la place d'un `CLAUDE.md`. Claude construit également une [mémoire automatique](/docs/fr/memory#auto-memory) au fur et à mesure qu'il travaille, en sauvegardant les apprentissages entre les sessions sans que vous ayez à écrire quoi que ce soit.

175 175 

176 Créez des [skills](/docs/fr/skills) pour empaqueter les flux de travail répétables que votre équipe peut partager, comme `/review-pr` ou `/deploy-staging`.176 Créez des [skills](/docs/fr/skills) pour empaqueter les flux de travail répétables que votre équipe peut partager, comme `/review-pr` ou `/deploy-staging`.

177 177 

Details

733You are a security reviewer. Read the changed files and report injection, authentication, and secrets-handling risks.733You are a security reviewer. Read the changed files and report injection, authentication, and secrets-handling risks.

734```734```

735 735 

736Cet agent est nommé `my-plugin:security-reviewer`, et l'utilisateur peut l'[invoquer explicitement](/docs/fr/sub-agents#invoke-subagents-explicitly) avec `@agent-my-plugin:security-reviewer`. La forme du nom est `<plugin>:<name>`, où `<name>` provient du frontmatter, ou du nom du fichier quand il n'y en a pas.736Cet agent est nommé `my-plugin:security-reviewer`, et l'utilisateur peut l'[invoquer explicitement](/docs/fr/sub-agents#invoke-subagents-explicitly) avec `@agent-my-plugin:security-reviewer`. La forme du nom est `<plugin>:<name>`, où `<name>` provient du champ `name` du frontmatter, ou du nom du fichier quand ce champ est absent.

737 737 

738La clé de manifeste `agents` remplace le scan `agents/`.738La clé de manifeste `agents` remplace le scan `agents/`.

739 739 

Details

428 428 

429| Élément | Ce qu'il dessine | Où |429| Élément | Ce qu'il dessine | Où |

430| :- | :- | :- |430| :- | :- | :- |

431| `Box` | Un conteneur flex. Prend des props de mise en page comme `flexDirection`, `columnGap`, `padding`, `borderStyle`, et `width`. | Partout |431| `Box` | Un conteneur flex. Prend des props de mise en page comme `flexDirection`, `columnGap`, `padding`, [`borderStyle`](/docs/fr/plugins/mods/reference#box-border-styles), et `width`. | Partout |

432| `Text` | Texte stylisé. Prend `color`, `bold`, `dimColor`, `italic`, et `wrap`. Une `color` est une clé de thème ou une couleur comme `'red'`. Un `wrap` est `'wrap'`, `'truncate'`, `'truncate-start'`, `'truncate-middle'`, ou `'truncate-end'`. | Partout |432| `Text` | Texte stylisé. Prend `color`, `bold`, `dimColor`, `italic`, et `wrap`. Une `color` est une clé de thème ou une couleur comme `'red'`. Un `wrap` est `'wrap'`, `'truncate'`, `'truncate-start'`, `'truncate-middle'`, ou `'truncate-end'`. | Partout |

433| `Button` | Un contrôle qui appelle `onPress` | Partout |433| `Button` | Un contrôle qui appelle `onPress` | Partout |

434| `Link`, `Code`, `Markdown` | Un lien avec `href` et une `label` optionnelle, un bloc de code, et du texte formaté comme les réponses de Claude. `Markdown` prend son contenu dans une prop `text`, pas dans `children`, et a besoin d'une `key` quand vous passez `onLinkPress`. | Partout |434| `Link`, `Code`, `Markdown` | Un lien avec `href` et une `label` optionnelle, un bloc de code, et du texte formaté comme les réponses de Claude. `Markdown` prend son contenu dans une prop `text`, pas dans `children`, et a besoin d'une `key` quand vous passez `onLinkPress`. | Partout |


563De nombreux volets sont un champ de texte avec une liste en dessous. L'exemple de cette section est un volet de notes : vous tapez une note et appuyez sur Entrée pour l'ajouter, et chaque note a un bouton `x` qui la supprime. Avec deux notes ajoutées, le terminal dessine le volet de cette façon :563De nombreux volets sont un champ de texte avec une liste en dessous. L'exemple de cette section est un volet de notes : vous tapez une note et appuyez sur Entrée pour l'ajouter, et chaque note a un bouton `x` qui la supprime. Avec deux notes ajoutées, le terminal dessine le volet de cette façon :

564 564 

565```text theme={null}565```text theme={null}

566╭──────────────────────────────────────────────────────────╮566╭────────────────────────────────────────────────────────✕─╮

567│ Note: Type a note and press Enter ⏎ add ✕ │567│ Note: Type a note and press Enter ⏎ add │

568│ x buy milk │568│ x buy milk │

569│ x call bob │569│ x call bob │

570╰──────────────────────────────────────────────────────────╯570╰──────────────────────────────────────────────────────────╯

571```571```

572 572 

573Le `✕` sur la bordure supérieure est la marque propre à Claude Code pour fermer le volet.

574 

573L'exemple utilise ces techniques :575L'exemple utilise ces techniques :

574 576 

575* **Prendre l'entrée tapée** : un `Input` appelle `onSubmit(value)` avec le texte du champ quand l'utilisateur appuie sur Entrée, et `onInput(value)` à chaque changement577* **Prendre l'entrée tapée** : un `Input` appelle `onSubmit(value)` avec le texte du champ quand l'utilisateur appuie sur Entrée, et `onInput(value)` à chaque changement

Details

242Pour adapter un arbre à son point de rendu, lisez ces props dans le hook :242Pour adapter un arbre à son point de rendu, lisez ces props dans le hook :

243 243 

244* **Largeur d'un `Pane` ou du bandeau** : dessinez selon `e.props.bodyColumns`244* **Largeur d'un `Pane` ou du bandeau** : dessinez selon `e.props.bodyColumns`

245* **Hauteur d'un `Pane` à côté de la transcription** : lorsque `e.props.placement` vaut `'dock'`, `e.props.scroll.bodyRows` est le nombre de lignes dont dispose le volet245* **Hauteur d'un `Pane` à côté de la transcription** : lorsque `e.props.placement` vaut `'dock'`, `e.props.scroll.bodyRows` est le nombre de lignes dont dispose le volet pour votre arbre

246* **Hauteur d'un `Pane` au-dessus du prompt** : lorsque `e.props.placement` vaut `'inline'`, le volet s'agrandit avec votre arbre jusqu'à une limite, et `bodyRows` correspond à cette limite. Le [champ `rows` de `$.ui.open`](/docs/fr/plugins/mods/interface#open-a-pane-at-the-right-time) permet de demander une limite différente.246* **Hauteur d'un `Pane` au-dessus du prompt** : lorsque `e.props.placement` vaut `'inline'`, le volet s'agrandit avec votre arbre jusqu'à une limite, et `bodyRows` correspond à cette limite. Le [champ `rows` de `$.ui.open`](/docs/fr/plugins/mods/interface#open-a-pane-at-the-right-time) permet de demander une limite différente.

247 247 

248Un arbre plus haut que le volet défile d'un seul bloc.248Un arbre plus haut que le volet défile d'un seul bloc.


255 255 

256| Élément | Props principales | Terminal | Desktop |256| Élément | Props principales | Terminal | Desktop |

257| :- | :- | :-: | :-: |257| :- | :- | :-: | :-: |

258| [`Box`](/docs/fr/plugins/mods/interface#build-a-tree-from-elements) | `key`, disposition flex, `gap`, `padding`, `margin`, `width`, `height`, `borderStyle`, `backgroundColor`, `position`, `hover` | ✓ | ✓ |258| [`Box`](/docs/fr/plugins/mods/interface#build-a-tree-from-elements) | `key`, disposition flex, `gap`, `padding`, `margin`, `width`, `height`, [`borderStyle`](#box-border-styles), `backgroundColor`, `position`, `hover` | ✓ | ✓ |

259| [`Text`](/docs/fr/plugins/mods/interface#build-a-tree-from-elements) | `color`, `backgroundColor`, `bold`, `italic`, `underline`, `dimColor`, `inverse`, `wrap` | ✓ | ✓ |259| [`Text`](/docs/fr/plugins/mods/interface#build-a-tree-from-elements) | `color`, `backgroundColor`, `bold`, `italic`, `underline`, `dimColor`, `inverse`, `wrap` | ✓ | ✓ |

260| [`Button`](/docs/fr/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action` | ✓ | ✓ |260| [`Button`](/docs/fr/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action` | ✓ | ✓ |

261| `Link` | `href`, `label` | ✓ | ✓ |261| `Link` | `href`, `label` | ✓ | ✓ |


270 270 

271Autres règles pour `Button` : `action` nomme l'une des propres [actions de raccourci clavier](/docs/fr/keybindings) de Claude Code, et le raccourci de l'utilisateur pour cette action presse le bouton lorsque ce raccourci est une combinaison de touches ou une touche avec modificateur. Un `hotkey` numérique sur un bouton du bandeau se déclenche aussi lorsque l'utilisateur tape ce seul chiffre dans un prompt vide puis marque une pause. Lorsque deux boutons d'un même dessin désignent le même `hotkey`, c'est le dernier qui l'obtient. `autoFocus` n'accepte que `true` sur tout contrôle : omettez donc la prop pour le désactiver.271Autres règles pour `Button` : `action` nomme l'une des propres [actions de raccourci clavier](/docs/fr/keybindings) de Claude Code, et le raccourci de l'utilisateur pour cette action presse le bouton lorsque ce raccourci est une combinaison de touches ou une touche avec modificateur. Un `hotkey` numérique sur un bouton du bandeau se déclenche aussi lorsque l'utilisateur tape ce seul chiffre dans un prompt vide puis marque une pause. Lorsque deux boutons d'un même dessin désignent le même `hotkey`, c'est le dernier qui l'obtient. `autoFocus` n'accepte que `true` sur tout contrôle : omettez donc la prop pour le désactiver.

272 272 

273<h3 id="box-border-styles">

274 Styles de bordure de `Box`

275</h3>

276 

277Pour dessiner une bordure autour d'une `Box`, définissez sa prop `borderStyle` sur l'un de ces noms, comme dans `borderStyle: 'round'`. Chaque ligne indique ce que le terminal dessine pour ce nom et montre le bord supérieur de la bordure.

278 

279| `borderStyle` | Ce que dessine le terminal | Bord supérieur |

280| :- | :- | :- |

281| `'single'` | Traits fins avec des coins carrés | `┌──┐` |

282| `'double'` | Traits doubles | `╔══╗` |

283| `'round'` | Traits fins avec des coins arrondis | `╭──╮` |

284| `'bold'` | Traits épais | `┏━━┓` |

285| `'singleDouble'` | Traits fins en haut et en bas, traits doubles sur les côtés | `╓──╖` |

286| `'doubleSingle'` | Traits doubles en haut et en bas, traits fins sur les côtés | `╒══╕` |

287| `'classic'` | Les caractères ASCII `+`, `-` et `\|` | `+--+` |

288| `'arrow'` | Des flèches qui pointent vers l'intérieur de la `Box` | `↘↓↓↙` |

289| `'dashed'` | Traits en pointillés avec des coins vides | `╌╌` |

290| `'quote'` | Une barre, `▎`, le long du côté gauche et des cellules vides sur les trois autres côtés | Vide |

291 

292Une `Box` dont la prop `borderStyle` désigne tout autre nom, comme `'rounded'`, est dessinée sans bordure.

293 

273<h2 id="limits">294<h2 id="limits">

274 Limites295 Limites

275</h2>296</h2>

Details

15<Note>15<Note>

16 Ces cas sont couverts sur d'autres pages :16 Ces cas sont couverts sur d'autres pages :

17 17 

18 * **Pourquoi les portées, le cache et la précédence se comportent de cette façon** : lisez [Référence du chargement des plugins](/docs/fr/plugins/loading)18 * **Pourquoi les portées, le cache et la priorité se comportent de cette façon** : lisez [Référence du chargement des plugins](/docs/fr/plugins/loading)

19 * **Recherche d'un drapeau, d'un champ ou d'une commande** : utilisez la [référence des commandes de plugin](/docs/fr/plugins/cli-reference), la [référence du manifeste](/docs/fr/plugins/manifest-reference) ou la [référence de la marketplace](/docs/fr/plugins/marketplace-reference)19 * **Recherche d'un flag, d'un champ ou d'une commande** : utilisez la [référence des commandes de plugin](/docs/fr/plugins/cli-reference), la [référence du manifeste](/docs/fr/plugins/manifest-reference) ou la [référence de la marketplace](/docs/fr/plugins/marketplace-reference)

20 * **Un message `hooks module not loaded` ou `hooks module did not load`** : le plugin est un [mod](/docs/fr/plugins/mods/overview), lisez donc [Le mod ne se charge pas](/docs/fr/plugins/mods/troubleshoot#the-mod-doesn’t-load)

20</Note>21</Note>

21 22 

22Recherchez le message exact que vous avez vu. Chaque message est répertorié sous l'étape qui le produit, ce qui n'est pas toujours la commande que vous avez exécutée. Par exemple, une installation peut échouer parce qu'une marketplace est manquante, donc ce message se trouve sous [Ajouter une marketplace](#add-a-marketplace).23Recherchez le message exact que vous avez vu. Chaque message est répertorié sous l'étape qui le produit, ce qui n'est pas toujours la commande que vous avez exécutée. Par exemple, une installation peut échouer parce qu'une marketplace est manquante, donc ce message se trouve sous [Ajouter une marketplace](#add-a-marketplace).

Details

104 Exemple de script104 Exemple de script

105</h2>105</h2>

106 106 

107Le script ci-dessous exécute la boucle complète contre `$CLAUDE_TEST_ENVIRONMENT_ID`, l'ID `ccpool_...` de votre environnement de test, affiché dans la boîte de dialogue de détail de l'environnement sur la page d'administration ou retourné par l'[appel create-environment](#create-a-dedicated-test-environment), et affirme sur une phrase sentinelle dans chaque réponse. Exécutez-le à partir d'une extraction git du référentiel dans lequel vous voulez que la session fonctionne, après avoir démarré un runner sur cet hôte avec le hook de capture installé et `E2E_REPLY_DIR` exporté.107Le script ci-dessous exécute la boucle complète contre `$CLAUDE_TEST_ENVIRONMENT_ID`, l'ID `ccpool_...` de votre environnement de test, affiché dans la boîte de dialogue de détail de l'environnement sur la page d'administration ou retourné par l'[appel create-environment](#create-a-dedicated-test-environment), et affirme sur une phrase sentinelle dans chaque réponse. Exécutez-le à partir d'une extraction git du dépôt dans lequel vous voulez que la session fonctionne, après avoir démarré un runner sur cet hôte avec le hook de capture installé et `E2E_REPLY_DIR` exporté. Connectez-vous d'abord avec un compte claude.ai sur la machine qui exécute le script, comme décrit dans [S'authentifier depuis la CI](#authenticate-from-ci). Sans cette connexion, le premier envoi échoue avec une erreur telle que `Unable to get organization UUID for cloud session creation`.

108 108 

109```bash theme={null}109```bash theme={null}

110#!/usr/bin/env bash110#!/usr/bin/env bash

Details

43 <Step title="Ouvrir la console d'administration">43 <Step title="Ouvrir la console d'administration">

44 Dans la console claude.ai, accédez à [**Organization settings > Claude Code > Managed settings**](https://claude.ai/admin-settings/claude-code).44 Dans la console claude.ai, accédez à [**Organization settings > Claude Code > Managed settings**](https://claude.ai/admin-settings/claude-code).

45 45 

46 Si le lien vous redirige vers une page Organization settings différente au lieu de la page Claude Code, votre compte n'a pas le rôle requis. Les rôles Admin et autres rôles non-Propriétaire ne peuvent pas afficher ou modifier les paramètres gérés, donc demandez à un Propriétaire ou Propriétaire principal de votre organisation de faire la modification. Consultez [Contrôle d'accès](#access-control).46 Dans une organisation Team ou Enterprise, si la page indique que vous n'avez pas accès, demandez à un [Propriétaire ou Propriétaire principal](#access-control) d'effectuer la modification.

47 </Step>47 </Step>

48 48 

49 <Step title="Définir vos paramètres">49 <Step title="Définir vos paramètres">

sessions.md +3 −3

Details

83* Terminal : `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 du tableau. Passez `--permission-mode` ou `--dangerously-skip-permissions` pour remplacer le mode restauré.83* Terminal : `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 du tableau. Passez `--permission-mode` ou `--dangerously-skip-permissions` pour remplacer le mode restauré.

84* Non-interactif : `claude -p --resume` ou `claude -p --continue`. Claude Code démarre l'exécution dans le mode de permission qu'une nouvelle exécution `claude -p` démarrerait, sauf qu'une session qui s'est terminée en mode plan reprend en mode plan selon les [conditions ci-dessous](#resume-in-plan-mode-with-p).84* Non-interactif : `claude -p --resume` ou `claude -p --continue`. Claude Code démarre l'exécution dans le mode de permission qu'une nouvelle exécution `claude -p` démarrerait, sauf qu'une session qui s'est terminée en mode plan reprend en mode plan selon les [conditions ci-dessous](#resume-in-plan-mode-with-p).

85* VS Code : le panneau de conversation de l'extension. Le tableau couvre uniquement une conversation qui s'est terminée en mode plan ; pour le reste, voir [reprendre les conversations passées](/docs/fr/vs-code#resume-past-conversations).85* VS Code : le panneau de conversation de l'extension. Le tableau couvre uniquement une conversation qui s'est terminée en mode plan ; pour le reste, voir [reprendre les conversations passées](/docs/fr/vs-code#resume-past-conversations).

86* Sélecteur de sessions au lancement : une session que vous sélectionnez dans le [sélecteur de sessions](#use-the-session-picker), que vous l'ayez ouvert avec `claude --resume` seul, `claude --from-pr` ou un nom qui correspond à plus d'une session. Claude Code ne restaure pas le mode de permission stocké. Il démarre la session dans le mode de permission qu'il démarrerait une nouvelle session depuis la même ligne de commande.86* Sélecteur de sessions au lancement : une session que vous sélectionnez dans le [sélecteur de sessions](#use-the-session-picker), que vous l'ayez ouvert avec `claude --resume` seul, `claude --from-pr` ou un nom qui correspond à plus d'une session. Claude Code démarre la session dans le mode de permission dans lequel il démarrerait une nouvelle session depuis la même ligne de commande, sauf qu'une session qui s'est terminée en mode plan reprend en mode plan, à moins que vous ne passiez `--permission-mode`, `--dangerously-skip-permissions` ou `--fork-session`. Aucun autre mode de permission stocké n'est restauré.

87* `/resume` à l'intérieur d'une session, avec ou sans argument : Claude Code ne restaure pas le mode de permission stocké. La conversation vers laquelle vous basculez continue dans le mode de permission dans lequel se trouve votre session actuelle.87* `/resume` à l'intérieur d'une session, avec ou sans argument : la conversation vers laquelle vous basculez continue dans le mode de permission dans lequel se trouve votre session actuelle, sauf qu'une conversation qui s'est terminée en mode plan reprend en mode plan, même si vous avez lancé Claude Code avec `--permission-mode` ou `--dangerously-skip-permissions`. Si cette conversation était déjà ouverte plus tôt dans cette exécution de Claude Code, comme la conversation dans laquelle vous avez commencé ou une conversation que vous avez quittée avec `/clear` ou `/resume`, elle continue plutôt dans votre mode de permission actuel.

88 88 

89La restauration du mode plan sur les chemins non-interactif et VS Code nécessite Claude Code v2.1.246 ou ultérieur. Chaque ligne nomme le mode de permission dans lequel la session s'est terminée, lequel des chemins terminal, non-interactif et VS Code vous la reprenez par, et le mode de permission dans lequel Claude Code démarre la session reprise.89La restauration du mode plan sur les chemins non-interactif et VS Code nécessite Claude Code v2.1.246 ou ultérieur. Chaque ligne nomme le mode de permission dans lequel la session s'est terminée, lequel des chemins terminal, non-interactif et VS Code vous la reprenez par, et le mode de permission dans lequel Claude Code démarre la session reprise.

90 90 

91| Session terminée en | Comment vous la reprenez | Mode de permission après la reprise |91| Session terminée en | Comment vous la reprenez | Mode de permission après la reprise |

92| :- | :- | :- |92| :- | :- | :- |

93| `bypassPermissions` | Terminal | Le mode de permission qu'une nouvelle session démarrerait. Pour [contourner les permissions](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) à nouveau, activez-le au lancement avec l'un de ses drapeaux de lancement ou `permissions.defaultMode: "bypassPermissions"` dans les [paramètres utilisateur, `--settings` ou gérés](/docs/fr/settings-reference#permissions-defaultmode) |93| `bypassPermissions` | Terminal | Le mode de permission qu'une nouvelle session démarrerait. Pour [contourner les permissions](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) à nouveau, activez-le au lancement avec l'un de ses drapeaux de lancement ou `permissions.defaultMode: "bypassPermissions"` dans les [paramètres utilisateur, `--settings` ou gérés](/docs/fr/settings-reference#permissions-defaultmode) |

94| `plan` | Terminal | Le mode de permission qu'une nouvelle session démarrerait |94| `plan` | Terminal | Mode plan. Avec `--fork-session`, le mode de permission dans lequel une nouvelle session démarrerait |

95| `auto` | Terminal | `auto`, uniquement lorsque votre compte répond toujours aux [exigences du mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) |95| `auto` | Terminal | `auto`, uniquement lorsque votre compte répond toujours aux [exigences du mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) |

96| Manuel | Terminal | Manuel lorsqu'une nouvelle session démarrerait en mode auto à partir de la [valeur par défaut intégrée](/docs/fr/permission-modes#which-mode-a-session-starts-in). Lorsqu'un `defaultMode` d'un fichier de paramètres [prend effet](/docs/fr/permission-modes#which-mode-a-session-starts-in), Claude Code démarre la session reprise dans ce mode à la place |96| Manuel | Terminal | Manuel lorsqu'une nouvelle session démarrerait en mode auto à partir de la [valeur par défaut intégrée](/docs/fr/permission-modes#which-mode-a-session-starts-in). Lorsqu'un `defaultMode` d'un fichier de paramètres [prend effet](/docs/fr/permission-modes#which-mode-a-session-starts-in), Claude Code démarre la session reprise dans ce mode à la place |

97| `plan` | Non-interactif, selon les [conditions ci-dessous](#resume-in-plan-mode-with-p) | Mode plan |97| `plan` | Non-interactif, selon les [conditions ci-dessous](#resume-in-plan-mode-with-p) | Mode plan |

sub-agents.md +2 −2

Details

310 310 

311| Champ | Obligatoire | Description |311| Champ | Obligatoire | Description |

312| :- | :- | :- |312| :- | :- | :- |

313| `name` | Oui | Identifiant unique, tel que `code-reviewer` ou `reviewer-v2`. Les [hooks](/docs/fr/hooks#subagentstart) reçoivent cette valeur comme `agent_type`. Le nom du fichier n'a pas besoin de correspondre. Les noms ne peuvent pas contenir `:`, qui est réservé aux [identifiants limités au plugin](/docs/fr/plugins/overview) tels que `my-plugin:reviewer`. Claude Code ne charge pas un fichier dont le nom en contient un et enregistre une erreur dans le journal de débogage. Avant la v2.1.218, de tels noms étaient acceptés |313| `name` | Oui | Identifiant unique d'au plus 256 caractères, tel que `code-reviewer` ou `reviewer-v2`. Les [hooks](/docs/fr/hooks#subagentstart) reçoivent cette valeur comme `agent_type`. Le nom du fichier n'a pas besoin de correspondre. Les noms ne peuvent pas contenir `:`, qui est réservé aux [identifiants limités au plugin](/docs/fr/plugins/overview) tels que `my-plugin:reviewer` |

314| `description` | Oui | Quand Claude doit déléguer à ce sous-agent |314| `description` | Oui | Quand Claude doit déléguer à ce sous-agent |

315| `tools` | Non | [Outils](#available-tools) que le sous-agent peut utiliser, sous forme de chaîne séparée par des virgules telle que `Read, Grep, Bash` ou une liste YAML. Hérite de tous les outils disponibles pour les sous-agents s'il est omis. Si aucune entrée de la liste ne se résout en un outil, le sous-agent échoue généralement au [lancement](/docs/fr/errors#agent-would-be-spawned-with-zero-tools) avec une erreur nommant les entrées. Pour précharger les Skills dans le contexte, utilisez le champ `skills` plutôt que de lister `Skill` ici |315| `tools` | Non | [Outils](#available-tools) que le sous-agent peut utiliser, sous forme de chaîne séparée par des virgules telle que `Read, Grep, Bash` ou une liste YAML. Hérite de tous les outils disponibles pour les sous-agents s'il est omis. Si aucune entrée de la liste ne se résout en un outil, le sous-agent échoue généralement au [lancement](/docs/fr/errors#agent-would-be-spawned-with-zero-tools) avec une erreur nommant les entrées. Pour précharger les Skills dans le contexte, utilisez le champ `skills` plutôt que de lister `Skill` ici |

316| `disallowedTools` | Non | Outils à refuser, supprimés de la liste héritée ou spécifiée. Même format que `tools`. Une entrée avec un spécificateur, tel que `Bash(git push *)`, supprime toujours l'[outil entier](#available-tools) |316| `disallowedTools` | Non | Outils à refuser, supprimés de la liste héritée ou spécifiée. Même format que `tools`. Une entrée avec un spécificateur, tel que `Bash(git push *)`, supprime toujours l'[outil entier](#available-tools) |


348 348 

349* **Pas de `name`** : Claude Code traite le fichier comme de la documentation conservée à côté de vos agents.349* **Pas de `name`** : Claude Code traite le fichier comme de la documentation conservée à côté de vos agents.

350* **Un `---` d'ouverture qui n'est pas la première ligne du fichier** : Claude Code lit le fichier comme n'ayant pas de frontmatter et le traite comme de la documentation.350* **Un `---` d'ouverture qui n'est pas la première ligne du fichier** : Claude Code lit le fichier comme n'ayant pas de frontmatter et le traite comme de la documentation.

351* **Un `name` qui commence par `-` ou contient `:`** : Claude Code ignore le fichier et écrit une erreur dans le journal de débogage. Consultez la ligne `name` dans le tableau ci-dessus.351* **Un `name` qui commence par `-`, contient `:` ou dépasse 256 caractères** : Claude Code ignore le fichier et écrit une erreur dans le journal de débogage.

352* **Un `name` mais pas de `description`** : Claude Code ignore le fichier et écrit la raison dans le journal de débogage.352* **Un `name` mais pas de `description`** : Claude Code ignore le fichier et écrit la raison dans le journal de débogage.

353* **YAML qui ne s'analyse pas** : Claude Code ne lit aucun champ du fichier, l'ignore et écrit l'erreur d'analyse dans le journal de débogage.353* **YAML qui ne s'analyse pas** : Claude Code ne lit aucun champ du fichier, l'ignore et écrit l'erreur d'analyse dans le journal de débogage.

354 354 

vs-code.md +1 −1

Details

606| `environmentVariables` | `[]` | Définissez les variables d'environnement pour le processus Claude. Utilisez plutôt les paramètres Claude Code pour la configuration partagée. Une entrée [`CLAUDE_CONFIG_DIR`](/docs/fr/env-vars) ne s'applique que si sa valeur est un chemin absolu ; l'extension ne développe pas `~` et ignore une valeur relative. |606| `environmentVariables` | `[]` | Définissez les variables d'environnement pour le processus Claude. Utilisez plutôt les paramètres Claude Code pour la configuration partagée. Une entrée [`CLAUDE_CONFIG_DIR`](/docs/fr/env-vars) ne s'applique que si sa valeur est un chemin absolu ; l'extension ne développe pas `~` et ignore une valeur relative. |

607| `disableLoginPrompt` | `false` | Ignorez les invites d'authentification (pour les configurations de fournisseur tiers) |607| `disableLoginPrompt` | `false` | Ignorez les invites d'authentification (pour les configurations de fournisseur tiers) |

608| `allowDangerouslySkipPermissions` | `false` | Ajoute Bypass permissions au sélecteur de mode. Utilisez-le uniquement dans les sandboxes sans accès à Internet. |608| `allowDangerouslySkipPermissions` | `false` | Ajoute Bypass permissions au sélecteur de mode. Utilisez-le uniquement dans les sandboxes sans accès à Internet. |

609| `claudeProcessWrapper` | - | Exécutable utilisé pour lancer le processus Claude. Le chemin binaire fourni est transmis en tant qu'argument lorsqu'il est présent. Définissez-le sur un binaire `claude` installé séparément si la version de l'extension n'en inclut pas un pour votre plateforme. Dans une configuration encapsulée, les conversations commencent en mode Manual sauf si vous définissez `initialPermissionMode` ou avez choisi Manual, Edit automatically ou Auto dans une conversation antérieure, car l'extension ignore les paramètres et les étapes par défaut intégrées là ; voir [Switch permission modes](/docs/fr/permission-modes#switch-permission-modes). Une erreur « Unsupported platform » à l'activation signifie qu'aucun binaire n'est fourni pour votre plateforme ; voir [which platforms have prebuilt binaries](/docs/fr/troubleshoot-install#native-binary-not-found-after-npm-install). |609| `claudeProcessWrapper` | - | Exécutable utilisé pour lancer le processus Claude. Le chemin binaire fourni est transmis en tant qu'argument lorsqu'il est présent. Définissez-le sur un binaire `claude` installé séparément si la version de l'extension n'en inclut pas un pour votre plateforme. |

610 610 

611<h2 id="use-a-screen-reader">611<h2 id="use-a-screen-reader">

612 Utiliser un lecteur d'écran612 Utiliser un lecteur d'écran

worktrees.md +3 −1

Details

6 6 

7> Isolez les sessions Claude Code parallèles dans des git worktrees séparés pour que les modifications ne se heurtent pas. Couvre le flag `--worktree`, l'isolation des subagents, `.worktreeinclude`, le nettoyage et les hooks VCS non-git.7> Isolez les sessions Claude Code parallèles dans des git worktrees séparés pour que les modifications ne se heurtent pas. Couvre le flag `--worktree`, l'isolation des subagents, `.worktreeinclude`, le nettoyage et les hooks VCS non-git.

8 8 

9Un [git worktree](https://git-scm.com/docs/git-worktree) est un répertoire de travail séparé avec ses propres fichiers et branche, partageant le même historique de dépôt et la même télécommande que votre extraction principale. Exécuter chaque session Claude Code dans son propre worktree signifie que les modifications dans une session ne touchent jamais les fichiers d'une autre, vous pouvez donc avoir Claude construisant une fonctionnalité dans un terminal tout en corrigeant un bug dans un second.9Un [git worktree](https://git-scm.com/docs/git-worktree) est un répertoire de travail séparé avec ses propres fichiers et branche, partageant le même historique de dépôt et le même dépôt distant que votre extraction principale. Exécuter chaque session Claude Code dans son propre worktree lui donne une copie séparée des fichiers à modifier, de sorte qu'une session peut développer une fonctionnalité pendant qu'une seconde corrige un bug.

10 10 

11<Note>11<Note>

12 Les worktrees nécessitent un dépôt git ; pour les autres systèmes de contrôle de version, [configurez des hooks pour remplacer la logique git](#non-git-version-control). Dans l'[application de bureau](/docs/fr/desktop#work-in-parallel-with-sessions), sélectionnez l'option **worktree** quand vous démarrez une session pour lui donner son propre worktree.12 Les worktrees nécessitent un dépôt git ; pour les autres systèmes de contrôle de version, [configurez des hooks pour remplacer la logique git](#non-git-version-control). Dans l'[application de bureau](/docs/fr/desktop#work-in-parallel-with-sessions), sélectionnez l'option **worktree** quand vous démarrez une session pour lui donner son propre worktree.


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

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

106 106 

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

108 

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

108 110 

109Claude voit chaque refus comme une erreur d'outil qui nomme le worktree et dit comment procéder. Pour une commande refusée, consultez [ce que le message de refus signifie et comment le résoudre](/docs/fr/errors#command-blocked-by-the-worktree-isolation-checks).111Claude voit chaque refus comme une erreur d'outil qui nomme le worktree et dit comment procéder. Pour une commande refusée, consultez [ce que le message de refus signifie et comment le résoudre](/docs/fr/errors#command-blocked-by-the-worktree-isolation-checks).